Jump to content

Forced 48 khz Android resample and DEEP_BUFFER enforced flag on Hi-Res output log


wyup
 Share

Recommended Posts

 
Poweramp build number: 15:33:10.023 build-911-arm64-play
Device: Xiaomi Xiaomi MI 8 dipper sdm845 "qcom" dipper RQ3A.210905.001 [arm64-v8a, armeabi-v7a, armeabi]
Android 11, PixelExperience custom rom
 
Steps to reproduce: When I set up Hi-Res output active for Wired-Headphones, selecting 44.1 KHz sampling frequency, No DVD, No Gain, No Eq, No Attenuation, and I play a 44.1 mp3 file, Audio Info shows Without Resample,
DSP shows Float64/32 bit, 44.1 khz, but Output shows Hi-Res Output Direct HD 10 24 bit 48 khz.
On Wired-Headphones settings, Hi-Res On, Sampling Freq, Selected: 44.1 Using: 48 khz.
"The sampling frequency is being defined by the device"
Bit Depth: 24 bit.
 
This is consistent with a dumpsys media.audio_flinger which indicates MIXER OUT and DEEP_BUFFER at 48 Khz instead of DIRECT or DIRECT_PCM at 44.1 Khz.
 
Output > Advanced > Detected Audio Output Log shows:
 
sdm845 is_snapdragon
reading=/vendor/etc/audio_output_policy.conf
has direct_pcm_24, sampling_rates=44100|48000|88200|96000|176400|192000|352800|384000
AUDIO_OUTPUT_FLAG_DIRECT direct_pcm_24
has direct_pcm_24 formats=AUDIO_FORMAT_PCM_24_BIT_PACKED|AUDIO_FORMAT_PCM_8_24_BIT|AUDIO_FORMAT_PCM_32_BIT
FLAG_VARIANT_DIRECT_HD via direct_pcm_24
forcing FLAG_DLFCN FLAG_NEEDS_DEEP_BUFFER FLAG_NEEDS_EXTRA_SLEEPS
=> FLAG_VARIANT_DIRECT_HD_10_STREAM
USB can handle Hi-Res - sdk=30
OK flags=0xe74616600008000
FLAG_VARIANT_DIRECT_HD_10_STREAM
FLAG_SUPPORTS_PCM_8_24
FLAG_SUPPORTS_PCM_24
FLAG_SUPPORTS_PCM_32
FLAG_SUPPORTS_UNITY_GAIN_STREAM
FLAG_SUPPORTS_USB
FLAG_NEEDS_EXTRA_SLEEPS
FLAG_SUPPORTS_LDAC
FLAG_DLFCN
FLAG_NEEDS_DEEP_BUFFER
FLAG_ALLOW_DVC_EFFECT
FLAG_BT_DVC_EFFECT
PA_OUTPUT_CAP_NEEDS_VOL_UI
INTERNAL_OUTPUT_FLAG_SR_384K
INTERNAL_OUTPUT_FLAG_SR_352K
INTERNAL_OUTPUT_FLAG_SR_192K
INTERNAL_OUTPUT_FLAG_SR_176K
INTERNAL_OUTPUT_FLAG_SR_96K
INTERNAL_OUTPUT_FLAG_SR_88K
INTERNAL_OUTPUT_FLAG_SR_48K
INTERNAL_OUTPUT_FLAG_SR_44K
I have several questions:
 
1) Why is it required reading=/vendor/etc/audio_output_policy.conf when .conf files are deprecated since Android 7 and not /vendor/etc/audio_policy_configuration.xml instead?
If I delete /vendor/etc/audio_output_policy.conf the log complains about this file and Settings loses Hi-Res output option.
 
2) Why is it enforcing deep_buffer: forcing FLAG_DLFCN FLAG_NEEDS_DEEP_BUFFER ?
 
Even if I set:
 
audio.deep_buffer.media=false
media.stagefright.audio.deep=false
vendor.audio.feature.deepbuffer_as_primary.enable=false
 
in my build.prop, audioflinger dumpsys reports MIXER out and DEEP_BUFFER resample at 48 KHz, as configured in both audio_output_policy.conf and audio_policy_configuration.xml.
However, it should choose DIRECT_PCM flag by Hi-Res output device. (Or even COMPRESSED_OFFLOAD that supports 44.1 unsampled out by the DSP).
 
Is there any way to set or force DIRECT_PCM flag?
If I delete DEEP_BUFFER in audio_output_policy.conf or in audio_policy_configuration.xml it will chose PRIMARY flag and output to Android MIXER anyway, resampling at 48 Khz.
 
P.D. I must say that on previous MIUI stock rom on Android 10 direct_pcm worked right since my phone has a Qualcomm Aqstic double 44.1/48 DSP chip.
 
 

Screenshot_20211007-122613.png

Screenshot_20211007-123504.png

Screenshot_20211007-174420.png

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...