wyup Posted October 7, 2021 Share Posted October 7, 2021 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. Quote Link to comment Share on other sites More sharing options...
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.