[TIP] Hi-Res Audio for Android devices

Support questions for Neutron Player only.
Post Reply
dmitrykos
Site Admin
Posts: 1914
Joined: Mon Apr 25, 2011 6:15 pm

[TIP] Hi-Res Audio for Android devices

Post by dmitrykos » Sun Oct 08, 2017 4:29 pm

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.

maddog510
Posts: 13
Joined: Tue Jun 13, 2017 2:46 am

Re: [TIP] Hi-Res Audio for Android devices

Post by maddog510 » Sun Oct 08, 2017 9:00 pm

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.

Nicholas Ku
Posts: 2
Joined: Tue Jun 14, 2016 10:04 pm

Re: [TIP] Hi-Res Audio for Android devices

Post by Nicholas Ku » Mon Oct 09, 2017 5:49 am

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.

dmitrykos
Site Admin
Posts: 1914
Joined: Mon Apr 25, 2011 6:15 pm

Re: [TIP] Hi-Res Audio for Android devices

Post by dmitrykos » Tue Oct 10, 2017 4:29 pm

> 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.

stefur
Posts: 7
Joined: Wed Jul 26, 2017 8:24 pm

Re: [TIP] Hi-Res Audio for Android devices

Post by stefur » Wed Oct 11, 2017 6:09 am

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 :cry: So, no high res for htc 10 users?

Any help?
Steve

dmitrykos
Site Admin
Posts: 1914
Joined: Mon Apr 25, 2011 6:15 pm

Re: [TIP] Hi-Res Audio for Android devices

Post by dmitrykos » Wed Oct 11, 2017 7:14 pm

> 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!

kurimi
Posts: 5
Joined: Thu Oct 12, 2017 6:59 am

Re: [TIP] Hi-Res Audio for Android devices

Post by kurimi » Thu Oct 12, 2017 7:07 am

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]

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
      }
    }
  }
}
[/spoiler]
Edit : did a Force stop, the extra sample rates appear but it's still resampled to 48000.
Thanks!

clydec38
Posts: 2
Joined: Wed Mar 30, 2016 12:25 pm

Re: [TIP] Hi-Res Audio for Android devices

Post by clydec38 » Thu Oct 12, 2017 9:57 am

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,

dmitrykos
Site Admin
Posts: 1914
Joined: Mon Apr 25, 2011 6:15 pm

Re: [TIP] Hi-Res Audio for Android devices

Post by dmitrykos » Thu Oct 12, 2017 10:30 am

> 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.

SynekPablo
Posts: 8
Joined: Fri Dec 23, 2016 9:48 am

Re: [TIP] Hi-Res Audio for Android devices

Post by SynekPablo » Sat Oct 14, 2017 8:36 pm

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.

Post Reply

Who is online

Users browsing this forum: No registered users and 31 guests