[TIP] Hi-Res Audio for Android devices
[TIP] Hi-Res Audio for Android devices
Since 1.97.0 version Neutron supports Hi-Res Audio output to the mobile devices which support it and have dedicated on-board DAC (ESS, XMOS, Qualcomm, ...) for Hi-Res Audio. The Hi-Res Audio must be supported by firmware of course. Minimum Android OS version is 4.4.
To make sure you have guaranteed Hi-Res Audio output (if device supports it) there are number of prerequisites in Neutron's settings -> Audio Hardware:
1) Generic Driver = ON
2) Generic Driver -> Hi-Res Codec = ON
3) Generic Driver -> Hi-Res Speaker = ON
4) DSP Effect (Device) = OFF
5) Low Latency = OFF
6) 32-bit Output (IEEE 754) = OFF
The easiest approach is just to reset all settings of Audio Hardware section to default (middle Undo button in the bottom of dialog).
Offloading Hi-Res Audio via Device Hardware Codec
Since 1.97.2 offloading via internal hw codec is switched off by default due to many buggy firmwares/devices (HTC 10, ...) but it can be switched on by Generic Driver -> Hi-Fi Codec.
Custom Format [tweaking]
Since 1.97.2 you can try to force system output format if Neutron could not recognize any hi-res audio output and provides basic format and you absolutely sure that device is capable of hi-res output you could try making custom format. For that you have Generic Driver -> Custom Format option which must be activated and if you tap on panel you can setup the following: sample format, frequencies, system flags. Never try setting it if you are not sure what you are doing, it is only for EXPERT use! Once custom format is configured start playback, access Audio Hardware dialog and tap on info panel with Channels, Frequency, ... to see real output format which is used by device, if it is not the format you set then your custom format does not work.
How to check Hi-Res Audio is available
If you wish to to know whether your device has Hi-Res Audio support just access Audio Hardware -> Frequency section. Hi-Res Audio capable devices will have multiple frequencies listed, Bits field will show 24 or 8.24 or 32 in [out: X] placeholder. Additionally you can tap on a panel with Channels, Bits in Audio Hardware and see the current audio output format. If all audio devices indicate 'closed' during playback then it is a sign of Hi-Res Audio as well.
Hi-Res Audio output to the Speaker
By default Hi-Res Audio is disabled for the built-in speaker due to some buggy firmwares, but if you wish to try to enable it tap on Generic Driver and switch on Hi-Res Speaker option. It will sound the same but will save CPU/battery if you have hi-res music files due to absence of re-sampling if Follow Source Frequency option is switched on.
OpenSL ES
OpenSL ES driver is considered obsolete since 1.97.0 due to its low capabilities and format limitation. To have its old behavior in case your device does not support Hi-Res Audio but firmware is buggy and device has not satisfactory audio output if audio is going via Android's deep-buffer internal mixer then just enable Low Latency option and you will get the same quality back. For Hi-Res Audio devices it is of course not needed and will limit to a single output frequency!
Device Effects compatibility with Hi-Res Audio
If DSP Effect (Device) is enabled it can break Hi-Res Audio output because some device effects do not support it and firmware will fallback to a standard format. To be sure that you have Hi-Res Audio output and you still want to have DSP Effect (Device) switched on - check the real audio device output format as described above.
There are no known devices which support Hi-Res Audio output with 32-bit floating point format and thus make sure 32-bit Output (IEEE 754) is switched off, or if you feel that firmware still allows Hi-Res Audio with this format then double check the real audio device output format as described above.
Low Latency compatibility with Hi-Res Audio
Low Latency always limits device to a single output frequency, so it must be switched off if you want Hi-Res Audio.
To make sure you have guaranteed Hi-Res Audio output (if device supports it) there are number of prerequisites in Neutron's settings -> Audio Hardware:
1) Generic Driver = ON
2) Generic Driver -> Hi-Res Codec = ON
3) Generic Driver -> Hi-Res Speaker = ON
4) DSP Effect (Device) = OFF
5) Low Latency = OFF
6) 32-bit Output (IEEE 754) = OFF
The easiest approach is just to reset all settings of Audio Hardware section to default (middle Undo button in the bottom of dialog).
Offloading Hi-Res Audio via Device Hardware Codec
Since 1.97.2 offloading via internal hw codec is switched off by default due to many buggy firmwares/devices (HTC 10, ...) but it can be switched on by Generic Driver -> Hi-Fi Codec.
Custom Format [tweaking]
Since 1.97.2 you can try to force system output format if Neutron could not recognize any hi-res audio output and provides basic format and you absolutely sure that device is capable of hi-res output you could try making custom format. For that you have Generic Driver -> Custom Format option which must be activated and if you tap on panel you can setup the following: sample format, frequencies, system flags. Never try setting it if you are not sure what you are doing, it is only for EXPERT use! Once custom format is configured start playback, access Audio Hardware dialog and tap on info panel with Channels, Frequency, ... to see real output format which is used by device, if it is not the format you set then your custom format does not work.
How to check Hi-Res Audio is available
If you wish to to know whether your device has Hi-Res Audio support just access Audio Hardware -> Frequency section. Hi-Res Audio capable devices will have multiple frequencies listed, Bits field will show 24 or 8.24 or 32 in [out: X] placeholder. Additionally you can tap on a panel with Channels, Bits in Audio Hardware and see the current audio output format. If all audio devices indicate 'closed' during playback then it is a sign of Hi-Res Audio as well.
Hi-Res Audio output to the Speaker
By default Hi-Res Audio is disabled for the built-in speaker due to some buggy firmwares, but if you wish to try to enable it tap on Generic Driver and switch on Hi-Res Speaker option. It will sound the same but will save CPU/battery if you have hi-res music files due to absence of re-sampling if Follow Source Frequency option is switched on.
OpenSL ES
OpenSL ES driver is considered obsolete since 1.97.0 due to its low capabilities and format limitation. To have its old behavior in case your device does not support Hi-Res Audio but firmware is buggy and device has not satisfactory audio output if audio is going via Android's deep-buffer internal mixer then just enable Low Latency option and you will get the same quality back. For Hi-Res Audio devices it is of course not needed and will limit to a single output frequency!
Device Effects compatibility with Hi-Res Audio
If DSP Effect (Device) is enabled it can break Hi-Res Audio output because some device effects do not support it and firmware will fallback to a standard format. To be sure that you have Hi-Res Audio output and you still want to have DSP Effect (Device) switched on - check the real audio device output format as described above.
There are no known devices which support Hi-Res Audio output with 32-bit floating point format and thus make sure 32-bit Output (IEEE 754) is switched off, or if you feel that firmware still allows Hi-Res Audio with this format then double check the real audio device output format as described above.
Low Latency compatibility with Hi-Res Audio
Low Latency always limits device to a single output frequency, so it must be switched off if you want Hi-Res Audio.
Re: [TIP] Hi-Res Audio for Android devices
Does this work for bluetooth as well? I have a LG V20 & a pair of Audio Technica ATH-DSR9BT headphones that support Apt-X HD. Under bits it shows 64 (out 16) but it's always shown that before this latest update.
-
- Posts: 2
- Joined: Tue Jun 14, 2016 10:04 pm
Re: [TIP] Hi-Res Audio for Android devices
Fiio X5-III
With recommended settings it looks like Neutron resamples Hires and 16/44100 files. What I see in Audio Hardware whatever content is playing.
DRV: AudioTrack (SYS)
Frequency: 48000
Bits: 64(out: 16)
Latency: 341 (min: 185)
Tap on a panel with Channels, Bits in Audio Hardware has no any effect.
With recommended settings it looks like Neutron resamples Hires and 16/44100 files. What I see in Audio Hardware whatever content is playing.
DRV: AudioTrack (SYS)
Frequency: 48000
Bits: 64(out: 16)
Latency: 341 (min: 185)
Tap on a panel with Channels, Bits in Audio Hardware has no any effect.
Re: [TIP] Hi-Res Audio for Android devices
> Fiio X5-III
There is bug in 1.97.0, it will be fixed in a next update!
> maddog510
Will be checked! Thank you for mentioning it.
There is bug in 1.97.0, it will be fixed in a next update!
> maddog510
Will be checked! Thank you for mentioning it.
Re: [TIP] Hi-Res Audio for Android devices
Hi all
This settings:
1) Generic Driver = ON
2) DSP Effect (Device) = OFF
3) Low Latency = OFF
4) 32-bit Output (IEEE 754) = OFF
won't work with the HTC 10 So, no high res for htc 10 users?
Any help?
Steve
This settings:
1) Generic Driver = ON
2) DSP Effect (Device) = OFF
3) Low Latency = OFF
4) 32-bit Output (IEEE 754) = OFF
won't work with the HTC 10 So, no high res for htc 10 users?
Any help?
Steve
Re: [TIP] Hi-Res Audio for Android devices
> stefur
Would you please try getting and send me these files: audio_policy.conf, audio_policy_configuration.xml, audio_output_policy.conf (whatever you have) from folders /system/etc or /system/vendor/etc (you can browse to them by ES File Explorer). And also /system/build.prop.
It would help a lot in debugging and understanding why there is no hi-res!
Would you please try getting and send me these files: audio_policy.conf, audio_policy_configuration.xml, audio_output_policy.conf (whatever you have) from folders /system/etc or /system/vendor/etc (you can browse to them by ES File Explorer). And also /system/build.prop.
It would help a lot in debugging and understanding why there is no hi-res!
Re: [TIP] Hi-Res Audio for Android devices
Hello,
Those settings don't enable hi res audio on Pioneer XDP-100r (ESS ES9018K2M). Still having only 48kHz as sample rate option.
With another player app, we need to modify build.prop and create a dummy file to enable hi-res output.
For reference, here is the audio_policy.conf file
[spoiler][/spoiler]
Edit : did a Force stop, the extra sample rates appear but it's still resampled to 48000.
Thanks!
Those settings don't enable hi res audio on Pioneer XDP-100r (ESS ES9018K2M). Still having only 48kHz as sample rate option.
With another player app, we need to modify build.prop and create a dummy file to enable hi-res output.
For reference, here is the audio_policy.conf file
[spoiler]
Code: Select all
# Global configuration section: lists input and output devices always present on the device
# as well as the output device selected by default.
# Devices are designated by a string that corresponds to the enum in audio.h
global_configuration {
attached_output_devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_TELEPHONY_TX
default_output_device AUDIO_DEVICE_OUT_SPEAKER
attached_input_devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_REMOTE_SUBMIX|AUDIO_DEVICE_IN_VOICE_CALL|AUDIO_DEVICE_IN_FM_RX|AUDIO_DEVICE_IN_FM_RX_A2DP|AUDIO_DEVICE_IN_TELEPHONY_RX
}
# audio hardware module section: contains descriptors for all audio hw modules present on the
# device. Each hw module node is named after the corresponding hw module library base name.
# For instance, "primary" corresponds to audio.primary.<device>.so.
# The "primary" module is mandatory and must include at least one output with
# AUDIO_OUTPUT_FLAG_PRIMARY flag.
# Each module descriptor contains one or more output profile descriptors and zero or more
# input profile descriptors. Each profile lists all the parameters supported by a given output
# or input stream category.
# The "channel_masks", "formats", "devices" and "flags" are specified using strings corresponding
# to enums in audio.h and audio_policy.h. They are concatenated by use of "|" without space or "\n".
audio_hw_modules {
primary {
outputs {
primary {
sampling_rates 44100|48000
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL|AUDIO_DEVICE_OUT_PROXY|AUDIO_DEVICE_OUT_FM|AUDIO_DEVICE_OUT_FM_TX
flags AUDIO_OUTPUT_FLAG_PRIMARY
}
low_latency {
sampling_rates 44100|48000
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL|AUDIO_DEVICE_OUT_PROXY|AUDIO_DEVICE_OUT_FM|AUDIO_DEVICE_OUT_FM_TX
flags AUDIO_OUTPUT_FLAG_FAST
}
multichannel {
sampling_rates 44100|48000
channel_masks dynamic
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_AUX_DIGITAL|AUDIO_DEVICE_OUT_PROXY
flags AUDIO_OUTPUT_FLAG_DIRECT
}
compress_offload {
sampling_rates 8000|11025|16000|22050|32000|44100|48000|96000|192000
channel_masks AUDIO_CHANNEL_OUT_MONO|AUDIO_CHANNEL_OUT_STEREO|AUDIO_CHANNEL_OUT_2POINT1|AUDIO_CHANNEL_OUT_QUAD|AUDIO_CHANNEL_OUT_PENTA|AUDIO_CHANNEL_OUT_5POINT1|AUDIO_CHANNEL_OUT_6POINT1|AUDIO_CHANNEL_OUT_7POINT1
formats AUDIO_FORMAT_PCM_24_BIT_OFFLOAD
devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO|AUDIO_DEVICE_OUT_AUX_DIGITAL|AUDIO_DEVICE_OUT_PROXY|AUDIO_DEVICE_OUT_FM_TX
flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD|AUDIO_OUTPUT_FLAG_NON_BLOCKING
}
incall_music {
sampling_rates 8000|16000|48000
channel_masks AUDIO_CHANNEL_OUT_MONO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO
flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_INCALL_MUSIC
}
voice_tx {
sampling_rates 8000|16000|48000
channel_masks AUDIO_CHANNEL_OUT_STEREO|AUDIO_CHANNEL_OUT_MONO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_TELEPHONY_TX
}
voip_rx {
sampling_rates 8000|16000
channel_masks AUDIO_CHANNEL_OUT_MONO
formats AUDIO_FORMAT_PCM_16_BIT|AUDIO_FORMAT_AMR_NB|AUDIO_FORMAT_AMR_WB|AUDIO_FORMAT_QCELP|AUDIO_FORMAT_EVRC|AUDIO_FORMAT_EVRCB|AUDIO_FORMAT_EVRCWB|AUDIO_FORMAT_EVRCNW
devices AUDIO_DEVICE_OUT_SPEAKER|AUDIO_DEVICE_OUT_EARPIECE|AUDIO_DEVICE_OUT_WIRED_HEADSET|AUDIO_DEVICE_OUT_WIRED_HEADPHONE|AUDIO_DEVICE_OUT_ALL_SCO
flags AUDIO_OUTPUT_FLAG_DIRECT|AUDIO_OUTPUT_FLAG_VOIP_RX
}
}
inputs {
primary {
sampling_rates 8000|11025|12000|16000|22050|24000|32000|44100|48000
channel_masks AUDIO_CHANNEL_IN_5POINT1|AUDIO_CHANNEL_IN_MONO|AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_FRONT_BACK
formats AUDIO_FORMAT_PCM_16_BIT|AUDIO_FORMAT_AMR_NB|AUDIO_FORMAT_AMR_WB|AUDIO_FORMAT_QCELP|AUDIO_FORMAT_EVRC|AUDIO_FORMAT_EVRCB|AUDIO_FORMAT_EVRCWB|AUDIO_FORMAT_EVRCNW
devices AUDIO_DEVICE_IN_BUILTIN_MIC|AUDIO_DEVICE_IN_WIRED_HEADSET|AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET|AUDIO_DEVICE_IN_BACK_MIC|AUDIO_DEVICE_IN_FM_RX|AUDIO_DEVICE_IN_FM_RX_A2DP|AUDIO_DEVICE_IN_VOICE_CALL
}
voice_rx {
sampling_rates 8000|16000|48000
channel_masks AUDIO_CHANNEL_IN_STEREO|AUDIO_CHANNEL_IN_MONO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_TELEPHONY_RX
}
}
}
a2dp {
outputs {
a2dp {
sampling_rates 44100
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_ALL_A2DP
}
}
}
usb {
outputs {
usb_accessory {
sampling_rates 44100
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_USB_ACCESSORY
}
usb_device {
sampling_rates dynamic
channel_masks dynamic
formats dynamic
devices AUDIO_DEVICE_OUT_USB_DEVICE
}
}
inputs {
usb_device {
sampling_rates dynamic
channel_masks AUDIO_CHANNEL_IN_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_USB_DEVICE
}
}
}
r_submix {
outputs {
submix {
sampling_rates 48000
channel_masks AUDIO_CHANNEL_OUT_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_OUT_REMOTE_SUBMIX
}
}
inputs {
submix {
sampling_rates 48000
channel_masks AUDIO_CHANNEL_IN_STEREO
formats AUDIO_FORMAT_PCM_16_BIT
devices AUDIO_DEVICE_IN_REMOTE_SUBMIX
}
}
}
}
Edit : did a Force stop, the extra sample rates appear but it's still resampled to 48000.
Thanks!
Re: [TIP] Hi-Res Audio for Android devices
Thanks for the update, seems to be working flawlessly on my LG V20.
One question, will there be an option to increase volume limit, ratio similar to when a USB dac is connected?
Is a very useful feature,
One question, will there be an option to increase volume limit, ratio similar to when a USB dac is connected?
Is a very useful feature,
Re: [TIP] Hi-Res Audio for Android devices
> One question, will there be an option to increase volume limit, ratio similar to when a USB dac is connected?
It is in to-do for a future updates.
It is in to-do for a future updates.
-
- Posts: 8
- Joined: Fri Dec 23, 2016 9:48 am
Re: [TIP] Hi-Res Audio for Android devices
Hello Dimitry,
first I want to thank for this player.
I use an Axon 7 and the Neutron Player harmoniously harmonizes with the installed AKM DAC.
Can you please tell me what influence the setting of the hardware and software latency on the music reproduction has.
first I want to thank for this player.
I use an Axon 7 and the Neutron Player harmoniously harmonizes with the installed AKM DAC.
Can you please tell me what influence the setting of the hardware and software latency on the music reproduction has.
Who is online
Users browsing this forum: No registered users and 8 guests