The Samsung Galaxy S10 (Snapdragon) does not output high-resolution au…

The Samsung Galaxy S10 (Snapdragon) does not output high-resolution au…

The Samsung Galaxy S10 (Snapdragon) does not output high-resolution audio through the headphone jack!

Avant de comparer un smartphone pliable, il faut toujours analyse les différents appareils disponibles sur le marché. Lequel, permettra vraiment de lire les actualité chaque jours de manière confortable ?

Most people probably won’t care about this, but this is an issue nonetheless.

You may be aware that the Snapdragon 855 carries certain features along with it. One of these features is the [WCD9341 audio codec](https://www.qualcomm.com/products/wcd9341). Among other things, it allows for relatively high quality audio decoding at a maximum PCM resolution of 384kHz/32bit. Most Snapdragon-based phones with headphone jacks since the SD835 onward are configured to use the direct_pcm output in order to render audio at its native resolution rather than having to resample the audio.

Hell, if you go and look up the specs for the phone on [Samsung’s website](https://www.samsung.com/global/galaxy/galaxy-s10/specs/), you’ll see the following listed:

> ###Ultra high quality audio playback
> UHQ 32-bit & DSD64/128 support
> PCM: Up to 32 bits, DSD: DSD64/128

Unfortunately, in the case of the Samsung Galaxy S10, the audio output is not configured to use this output for the headphone jack! Let’s look at the file audio_policy_configuration.xml which is the file that houses the configuration of the audio inputs and outputs. Let’s look at the « direct_pcm » mixport.

<mixPort name= »direct_pcm » role= »source »
flags= »AUDIO_OUTPUT_FLAG_DIRECT »>
<profile name= » » format= »AUDIO_FORMAT_PCM_16_BIT »
samplingRates= »8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000,176400,192000,352800,384000″
channelMasks= »AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1″/>
<profile name= » » format= »AUDIO_FORMAT_PCM_24_BIT_PACKED »
samplingRates= »8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000,176400,192000,352800,384000″
channelMasks= »AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1″/>
<profile name= » » format= »AUDIO_FORMAT_PCM_8_24_BIT »
samplingRates= »8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000,176400,192000,352800,384000″
channelMasks= »AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1″/>
<profile name= » » format= »AUDIO_FORMAT_PCM_32_BIT »
samplingRates= »8000,11025,12000,16000,22050,24000,32000,44100,48000,64000,88200,96000,176400,192000,352800,384000″
channelMasks= »AUDIO_CHANNEL_OUT_5POINT1,AUDIO_CHANNEL_OUT_6POINT1,AUDIO_CHANNEL_OUT_7POINT1″/>
</mixPort>

Here, we can see the different outputs for the direct_pcm mix! Using a direct_pcm output is capable of sample rates up to 384k and bit resolution up to 32-bit

Unfortunately, when we look the Wired Headphone device declaration, we see that it simply isn’t configured to handle the specifications of the direct_pcm output. It’s also fixed at a sample rate of 48000, so 44100 files will be resampled as well which is not ideal.

<devicePort tagName= »Wired Headphone » role= »sink » type= »AUDIO_DEVICE_OUT_WIRED_HEADPHONE »>
<profile name= » » format= »AUDIO_FORMAT_PCM_16_BIT »
samplingRates= »48000″ channelMasks= »AUDIO_CHANNEL_OUT_STEREO »/>
</devicePort>

Looking more deeply, in the route declaration for the Wired Headphone, we see that direct_pcm isn’t even listed as one of the output types for the audio that goes to the headphone jack!

<route type= »mix » sink= »Wired Headphone »
sources= »primary-out,fast,raw,compressed_offload,mmap_no_irq_out »/>

I’m not sure why the S10 is configured in such a way, but I find it disappointing that the phone is not able to fully utilize the hardware that is present on the device. I hope that Samsung catches wind of this and makes changes to enable direct_pcm to Wired Headphone output in the future. I’ve also posted this on [Samsung’s community forum.](https://us.community.samsung.com/t5/Galaxy-S10/Galaxy-S10-Snapdragon-Unlocked-does-not-output-high-res-audio/m-p/559613#M12677)


Voir sur Reddit by QuadraKev_

7 réflexions au sujet de “The Samsung Galaxy S10 (Snapdragon) does not output high-resolution au…”

  1. > It’s also fixed at a sample rate of 48000, so 44100 files will be resampled as well which is not ideal.

    God stop spreading nonsense based on what one doesn’t understand. The audio APIs and drivers are complex beyond just some XML files.

    I just checked on the Snapdragon S10+ and it outputs 192KHz/24bit. On a 32bit file it converts to 24bit:

    2019-04-11 00:43:26.360 814-8839/? V/APM_AudioPolicyManager: isOffloadSupported: SR=192000, CM=0x3, Format=0x1, StreamType=3, BitRate=4294967295, duration=2730666 us, has_video=0
    2019-04-11 00:43:26.366 814-8839/? V/APM_AudioPolicyManager: isOffloadSupported: SR=192000, CM=0x3, Format=0x1, StreamType=3, BitRate=4294967295, duration=2730666 us, has_video=0
    2019-04-11 00:43:26.368 814-8839/? V/APM_AudioPolicyManager: getOutputForAttr() device 0x4, sampling rate 192000, format 0x1, channel mask 0x3, flags 0x200000
    2019-04-11 00:43:26.369 814-8839/? D/AudioFlinger: Client defaulted notificationFrames to 12800 for frameCount 38400
    2019-04-11 00:43:26.369 814-8839/? I/AudioFlinger: setMixerOutConfig select, mixer out f 5, s 192000, thread out f 4, s 192000
    2019-04-11 00:43:26.369 814-8839/? I/AudioEffectStage: getStageIndex media_output_sub1_float192
    2019-04-11 00:43:26.371 814-8839/? I/AudioFlinger: setMixerOutConfig select, mixer out f 5, s 192000, thread out f 4, s 192000
    2019-04-11 00:43:26.371 814-8839/? I/AudioEffectStage: getStageIndex media_output_sub1_float192
    2019-04-11 00:43:26.371 814-8839/? I/AudioFlinger: addStageIndex new -2910, st 3, format 5, sample 192000, flags 0
    2019-04-11 00:43:26.377 814-8839/? I/AudioEffectStage: getSinkBuffer media_output_sub1_float192
    2019-04-11 00:43:26.382 814-8839/? I/AudioEffectStage: getStageIndex media_output_sub1_float192
    2019-04-11 00:43:26.382 814-8839/? I/AudioEffectStage: getSinkBuffer media_output_sub1_float192
    2019-04-11 00:43:26.384 814-1528/? I/AudioFlinger: change final format 4, sample 192000, size 30720
    2019-04-11 00:43:26.389 814-1528/? I/AudioFlinger: change audio_format 4 , sample 192000
    2019-04-11 00:43:26.389 758-1271/? D/audio_hw_primary: out_set_parameters: enter: usecase(0: deep-buffer-playback) kvpairs: audio_format=4;force_routing=4;wide_res=0
    2019-04-11 00:43:26.389 758-1271/? D/audio_hw_sec: 24bit Format Normal Audio
    2019-04-11 00:43:26.390 758-19446/? D/audio_route: Apply path: hph-lowhifi-mode
    2019-04-11 00:43:26.390 758-19446/? D/audio_hw_primary: enable_snd_device: snd_device(6: headset)
    2019-04-11 00:43:26.390 758-19446/? D/audio_route: Apply path: headset
    2019-04-11 00:43:26.396 758-19446/? I/audio_hw_utils: set_app_type_cfg app_type_cfg->app_type 69940, app_type_cfg->sample_rate 192000, app_type_cfg->bit_width 24
    2019-04-11 00:43:26.396 758-19446/? I/audio_hw_utils: send_app_type_cfg_for_device PLAYBACK app_type 69940, acdb_dev_id 10, sample_rate 192000, snd_device_be_idx 2
    2019-04-11 00:43:26.396 758-19446/? D/ACDB-LOADER: ACDB -> send_audio_cal, acdb_id = 10, path = 0, app id = 0x11134, sample rate = 192000

    It does indeed not support 384KHz and resamples it to 48KHz:

    2019-04-11 00:41:43.078 814-814/? V/APM_AudioPolicyManager: isOffloadSupported: SR=384000, CM=0x3, Format=0x1, StreamType=3, BitRate=4294967295, duration=1365333 us, has_video=0
    2019-04-11 00:41:43.080 814-814/? V/APM_AudioPolicyManager: isOffloadSupported: SR=384000, CM=0x3, Format=0x1, StreamType=3, BitRate=4294967295, duration=1365333 us, has_video=0
    2019-04-11 00:41:43.080 814-814/? V/APM_AudioPolicyManager: getNewOutputDevice() selected device 0
    2019-04-11 00:41:43.084 814-814/? I/AudioFlinger: setMixerOutConfig select, mixer out f 5, s 48000, thread out f 4, s 48000**
    2019-04-11 00:41:43.084 814-814/? E/AudioFlinger: stageIndex is 0, get default sink buf
    2019-04-11 00:41:43.084 814-814/? I/AudioEffectStage: getStageIndex media_output_sub1_float48
    2019-04-11 00:41:43.085 814-814/? I/AudioFlinger: setMixerOutConfig expectKey 202
    2019-04-11 00:41:43.085 814-814/? I/AudioFlinger: setMixerOutConfig select, mixer out f 5, s 48000, thread out f 4, s 48000
    2019-04-11 00:41:43.085 814-814/? I/AudioEffectStage: getStageIndex media_output_sub1_float48
    2019-04-11 00:41:43.085 814-814/? I/AudioFlinger: addStageIndex new -2913, st 3, format 5, sample 48000, flags 0
    2019-04-11 00:41:43.093 814-814/? I/AudioEffectStage: getSinkBuffer media_output_sub1_float48

    TLDR: everything is fine. The Snapdragon S10 has excellent audio. Ignore XML files people don’t understand what they represent.

    It probably plays 384/32 as well but I’ll need to encode it into something else first.

  2. There’s no way the vast majority of human ears can hear anything more detailed, frequency-wise and dynamic-range-wise, than what can be encoded with 44,100 _or_ 48,000 KHz sample rates given that the encodings are at least 16-bit/sample in the standard fashion and not encoded using lossy compression. Even getting a reasonable benefit from those specs, if properly utilized, requires a very quiet listening environment, extremely low distortion output transducers, and great acoustics, either for the room or within _very_ expensive closed-cup headphones.

    Of course, that doesn’t stop people from buying higher spec devices. Or, going the other way, tube amps and vinyl (both of which I find darkly hilarious.) Or things like [this.](http://web.archive.org/web/20050721081251/http://www.referenceaudiomods.com/Merchant2/merchant.mvc?Screen=PROD&Product_Code=NOB_C37_C)

    Which is not to say that there aren’t poor recordings out there that don’t make good use of the dynamic range and sample rates available to them. There are tons of them. Most of them, even. And then there’s the whole « compress it till it bleeds » school of music production (and I want to be clear that I am using the word « production » entirely ironically there. « Destruction » would be more appropriate.)

    EE, recording engineer, music lover _and_ musician here, BTW. 🙂

    > I’m not sure why the S10 is configured in such a way, but I find it disappointing that the phone is not able to fully utilize the hardware that is present on the device. I hope that Samsung catches wind of this and makes changes to enable direct_pcm to Wired Headphone output in the future.

    Yeah, seems pretty silly to build in the capability and not actually implement it correctly. Turns bragging rights into 100% pure « whoops. » Perhaps they’ll address it. Or perhaps there’s a hardware goof in there that prevents it… in which case, yeah, serious _whoops._

  3. Damn Samsung really isn’t giving a rat’s ass. Starting to think those rumours about the Note 10 coming out without a 3.5mm jack might be true. If that’s the case I’ll finally say goodbye to the Galaxy lineup.

Les commentaires sont fermés.