Jump to content

USB DAC limited to 48kHz/16bit despite being capable of 384kHz/32bit


Lien028

Recommended Posts

Hello everyone.

I've purchased Poweramp awhile back and have used it with no issues on my Galaxy S9 along with my Tempotec Sonata HD Pro DAC capable of 384kHz/32bit output. On the S9 it would default to 192khz/24bit output with the Audiotrack output selected in the audio settings.

I've purchased a new phone (Xiaomi Poco X3) running MIUI 12.0.2 Android Q. Upon installing Poweramp (v3, b884), the output of the USB DAC is limited to 48kHz/16bit on both OpenSL and Audiotrack. I could alter the sampling rate by enabling Hi-res output, but that introduces a lot of latency. On the S9 with Audiotrack output selected, the sampling rate was 192kHz with low latency of around 80ms compared to the Xiaomi hi-res output having 200ms with 96kHz selected.

My questions are:
1) What could be causing this issue? My guess is the stock player interferes with Poweramp's direct access to USB audio.
2) Is there a difference in altering the sampling rate on Hi-res output vs allowing the native sampling rate of the device (192kHz/24bit) to be utilized when Audiotrack output is used?

Thanks and hope you could help me out. Attached are screenshots of the issue in question.

https://i.imgur.com/ctVfnEn.jpg

 

Link to comment
Share on other sites

If I recall correctly, Android downsamples every Hi-res audio file to 48kHz and reduces the bit depth to 16bits when using default audio output such as OpenSL ES and possibly AudioTrack (don't ask me about AAudio, Idk how Android uses it). This can be overridden on Poweramp for USB-DAC by enabling Float 32 format. Did you enable it?

3fy3.png

Link to comment
Share on other sites

59 minutes ago, AinzOoalGown said:

If I recall correctly, Android downsamples every Hi-res audio file to 48kHz and reduces the bit depth to 16bits when using default audio output such as OpenSL ES and possibly AudioTrack (don't ask me about AAudio, Idk how Android uses it). This can be overridden on Poweramp for USB-DAC by enabling Float 32 format. Did you enable it?

3fy3.png

Thank you for replying! Yes I did enable the Float32 Sample Format, but the output sample rate remains to be the same. On my previous device, the Samsung S9, the sampling rate is 192kHz regardless if the Float32 is enabled or disabled.

  

16 minutes ago, andrewilley said:

Why are you concerned about the Latency figure? You might be able to reduce it by reducing the buffer size, but not sure why you feel the need to for simple playback of recordings?

Andre

Thank you for replying! I was wondering what was the difference between Audiotrack Output and Hi-res output. Anecdotally, having lower latency reduces the chances of stutters occurring when playing music. My previous device was rooted and had a third party DSP (JamesDSP), hence I disabled all EQ on Poweramp.

Link to comment
Share on other sites

There are several threads on the subject of outputs, e.g. https://forum.powerampapp.com/topic/15924-difference-between-output-plugins/ .

Broadly, though AudioTrack is the built-in Android audio processing system that also supports manufacturer-installed add-on and audio tweaks (which you may or may not want- and if you don't want them, why complicate the audio chain?). OpenSL ES (Open Sound Library for Embedded Systems) is a royalty-free, cross-platform, hardware-accelerated, audio API. Generally it should provide a cleaner audio path. Probably. High-res is Poweramp's own output system which often bypasses manufacture-added processing, but availability may differ between various manufacturers/devices and ROM versions (or not be available at all in some cases).

Latency is merely an indication of how long the audio processing path takes to complete, from when the signal is first generated to when you actually hear the sound. The more time-consuming stuff that happens in between (EQ, reverb, high-res processing, etc) the longer the Latency figure becomes. This is very important when designing live audio environments (you don't want a studio engineer hearing the singer's voice in his headphones two seconds after the note is sung) but I can't see that it's much of an issue when playing back recordings - as long as it remains consistent across all channels. Stuttering would more likely occur when processing or reading data suddenly takes too long, so the available buffered audio catches up with itself. Increasing the audio buffer size will help if you experience that sort of issue (which may also increase the Latency figure).

I'm sure Max can provide a more detailed explanation, but that's broadly my understanding of the options.

Andre

Link to comment
Share on other sites

4 hours ago, andrewilley said:

There are several threads on the subject of outputs, e.g. https://forum.powerampapp.com/topic/15924-difference-between-output-plugins/ .

Broadly, though AudioTrack is the built-in Android audio processing system that also supports manufacturer-installed add-on and audio tweaks (which you may or may not want- and if you don't want them, why complicate the audio chain?). OpenSL ES (Open Sound Library for Embedded Systems) is a royalty-free, cross-platform, hardware-accelerated, audio API. Generally it should provide a cleaner audio path. Probably. High-res is Poweramp's own output system which often bypasses manufacture-added processing, but availability may differ between various manufacturers/devices and ROM versions (or not be available at all in some cases).

Latency is merely an indication of how long the audio processing path takes to complete, from when the signal is first generated to when you actually hear the sound. The more time-consuming stuff that happens in between (EQ, reverb, high-res processing, etc) the longer the Latency figure becomes. This is very important when designing live audio environments (you don't want a studio engineer hearing the singer's voice in his headphones two seconds after the note is sung) but I can't see that it's much of an issue when playing back recordings - as long as it remains consistent across all channels. Stuttering would more likely occur when processing or reading data suddenly takes too long, so the available buffered audio catches up with itself. Increasing the audio buffer size will help if you experience that sort of issue (which may also increase the Latency figure).

I'm sure Max can provide a more detailed explanation, but that's broadly my understanding of the options.

Andre

Thank you for taking the time and effort to answer my query Andre, much appreciated. I do hope Max can shed some light on the topic. 

Link to comment
Share on other sites

Low latency output is usually fixed on 48kHz/16 bit on Android. It's not really needed for music, but is good for music creation apps, recorders, etc. (as music is often 44.1kHz or hi-res, or 24 bit width, etc. and we want to consume as less battery as possible).

As for Hi-Res output, it bypasses a lot of things in Android, Android mixer and resampling. There is still some mixing and some processing happening on SOC level.

Link to comment
Share on other sites

2 hours ago, maxmp said:

Low latency output is usually fixed on 48kHz/16 bit on Android. It's not really needed for music, but is good for music creation apps, recorders, etc. (as music is often 44.1kHz or hi-res, or 24 bit width, etc. and we want to consume as less battery as possible).

As for Hi-Res output, it bypasses a lot of things in Android, Android mixer and resampling. There is still some mixing and some processing happening on SOC level.

Thank you for replying Max, my only issue is that with Audiotrack on my Galaxy S9 it defaults to 192kHz/24 bit on the USB dac with Float32 enabled. On the Xiaomi device running MIUI, it's at 48kHz regardless if the bit depth is 16/24 bit. Could this be an issue with the OS of the newer device? Thank you very much!

Problem2.jpg

Link to comment
Share on other sites

55 minutes ago, Lien028 said:

Thank you for replying Max, my only issue is that with Audiotrack on my Galaxy S9 it defaults to 192kHz/24 bit on the USB dac with Float32 enabled. On the Xiaomi device running MIUI, it's at 48kHz regardless if the bit depth is 16/24 bit. Could this be an issue with the OS of the newer device? Thank you very much!

Problem2.jpg

Well I think the latency and output format depends a lot on the device itself (built-in processors, DSP). My guess here is Xiaomi device is not capable of processing hi-res audio normally or it is the software's default. As max said, Hi-res output bypasses a lot of things. That is how it can produce hi-res output.

Link to comment
Share on other sites

17 hours ago, AinzOoalGown said:

Could you post audio output detection log from both of your device? as there might be something in audio policy.conf that can shed some light on this. I think you can get it from Poweramp settings > Audio > Advanced > Audio output detection log

Hello! Thank you for replying! Here are the logs as requested. @andrewilley @AinzOoalGown @maxmp . I'm hoping these could shed some light on the topic.

problem3.jpg

Link to comment
Share on other sites

27 minutes ago, Lien028 said:

 I'm hoping these could shed some light on the topic.

They simply show that you are using two different devices, for which each device's built-in default sound processing (AudioTrack) will very likely exhibit different options and results, and may or may not support some high-res features.

I go back to what I said before, if you want high-res audio, you will most likely be better off using that option in PA if you can. That's why it's there.

Andre

Link to comment
Share on other sites

@andrewilley What interests me Andre, is the FLAG_NEEDS_DEEP_BUFFER on the Xiaomi output log. Deep Buffer is a feature which could be disabled by rooting the device. But then again, thank you for your advice, until I find an alternative I guess I would be sticking to hi-res output for now.

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.

×
×
  • Create New...