Merge "Add audio Spatializer and support OPUS codec" into udc-qpr-dev

This commit is contained in:
Tom Huang 2023-07-10 09:24:13 +00:00 committed by Android (Google) Code Review
commit 9b1613385c
7 changed files with 49 additions and 14 deletions

View file

@ -10,6 +10,7 @@
<library name="proxy" path="libeffectproxy.so"/>
<library name="offload_effect" path="liboffloadeffect.so"/>
<library name="haptic_generator" path="libhapticgenerator.so"/>
<library name="spatializer" path="libspatialaudio.so"/>
</libraries>
<effects>
<effectProxy name="bassboost" library="proxy" uuid="2f0871a2-c93c-4824-9664-42eb2909f2ef">
@ -54,6 +55,7 @@
<effect name="aec" library="offload_effect" uuid="28c28780-ec8b-48b6-8590-8c84557d797d"/>
<effect name="ns" library="offload_effect" uuid="62ff2836-d050-43c3-9c2d-94a73dad2c64"/>
<effect name="haptic_generator" library="haptic_generator" uuid="97c4acd1-8b82-4f2f-832e-c2fe5d7a9931"/>
<effect name="spatializer" library="spatializer" uuid="cc4677de-ff72-11eb-9a03-0242ac130003"/>
</effects>
<postprocess>
</postprocess>

View file

@ -187,6 +187,8 @@
<usecase id="UC_DEEP_BUFFER_PLAYBACK" dev1="5" dyn_path="true" dsp_vol="false" mmap="false" period="20" period_num="4"/>
<!-- dev1: voice-call downlink dev2: voice-clal uplink -->
<usecase id="UC_VOICE_CALL" dev1="4" dev2="11"/>
<!-- for output with flag AUDIO_OUTPUT_SPATIALIZER -->
<usecase id="UC_IMMERSIVE_PLAYBACK" dev1="30" dyn_path="true" dsp_vol="false" mmap="false" period="10" period_num="3"/>
<!-- for output with AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD, 4 * 128KB buffer -->
<usecase id="UC_COMPRESSED_OFFLOAD_PLAYBACK" dev1="6" dyn_path="true" dsp_vol="true" mmap="false" period="131072" period_num="4" pre_proc_id="14"/>
<!-- dev1: audio dev2: haptic -->
@ -223,6 +225,10 @@
<be_cfg be_id="OUT_A2DP_BE_CFG" latency="180000"/>
</usecase>
<usecase id="UC_IMMERSIVE_PLAYBACK" type="playback">
<be_cfg be_id="OUT_A2DP_BE_CFG" latency="100000"/>
</usecase>
<usecase id="UC_AUDIO_RECORD" type="capture">
<be_cfg be_id="IN_CAMCORDER_LANDSCAPE_BE_CFG" latency="160000"/>
<be_cfg be_id="IN_CAMCORDER_INVERT_LANDSCAPE_BE_CFG" latency="160000"/>

View file

@ -58,6 +58,10 @@
<profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="immersive_out" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER">
<profile name="" format="AUDIO_FORMAT_PCM_32_BIT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="incall playback" role="source"
flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
@ -162,17 +166,17 @@
<devicePort tagName="BT SCO Headset Mic" type="AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET" role="source">
</devicePort>
<devicePort tagName="BT A2DP Out" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP" role="sink"
encodedFormats="AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Headphones" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES" role="sink"
encodedFormats="AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
<devicePort tagName="BT A2DP Speaker" type="AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER" role="sink"
encodedFormats="AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
encodedFormats="AUDIO_FORMAT_OPUS AUDIO_FORMAT_AAC AUDIO_FORMAT_SBC">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
samplingRates="44100 48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</devicePort>
@ -193,17 +197,17 @@
<route type="mix" sink="Speaker Safe"
sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,ultrasound output"/>
<route type="mix" sink="BT A2DP Out"
sources="primary output,deep buffer,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
sources="primary output,deep buffer,compressed_offload,voip_rx,raw,mmap_no_irq_out,immersive_out"/>
<route type="mix" sink="BT A2DP Headphones"
sources="primary output,deep buffer,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
sources="primary output,deep buffer,compressed_offload,voip_rx,raw,mmap_no_irq_out,immersive_out"/>
<route type="mix" sink="BT A2DP Speaker"
sources="primary output,deep buffer,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
sources="primary output,deep buffer,compressed_offload,voip_rx,raw,mmap_no_irq_out,immersive_out"/>
<route type="mix" sink="USB Device Out"
sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback"/>
sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
<route type="mix" sink="USB Dock"
sources="primary output,deep buffer,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback"/>
<route type="mix" sink="USB Headset Out"
sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback"/>
sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
<route type="mix" sink="BT SCO"
sources="primary output,deep buffer,compressed_offload,voip_rx,raw,mmap_no_irq_out"/>
<route type="mix" sink="BT SCO Headset"

View file

@ -58,6 +58,10 @@
<profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="immersive_out" role="source" flags="AUDIO_OUTPUT_FLAG_SPATIALIZER">
<profile name="" format="AUDIO_FORMAT_PCM_FLOAT"
samplingRates="48000" channelMasks="AUDIO_CHANNEL_OUT_STEREO"/>
</mixPort>
<mixPort name="incall playback" role="source"
flags="AUDIO_OUTPUT_FLAG_INCALL_MUSIC">
<profile name="" format="AUDIO_FORMAT_PCM_16_BIT"
@ -178,9 +182,9 @@
<route type="mix" sink="Speaker Safe"
sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,ultrasound output"/>
<route type="mix" sink="USB Device Out"
sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback"/>
sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
<route type="mix" sink="USB Headset Out"
sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback"/>
sources="primary output,deep buffer,raw,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback,immersive_out"/>
<route type="mix" sink="USB Dock"
sources="primary output,deep buffer,compressed_offload,mmap_no_irq_out,voip_rx,hifi_playback"/>
<route type="mix" sink="BT SCO"

View file

@ -155,6 +155,7 @@
<ctl name="TDM_0_RX Mixer VOIP" value="0"/>
<ctl name="TDM_0_RX Mixer RAW" value="0"/>
<ctl name="TDM_0_RX Mixer US" value="0"/>
<ctl name="TDM_0_RX Mixer IMSV" value="0"/>
<ctl name="TDM_1_RX Mixer EP1" value="0"/>
<ctl name="TDM_1_RX Mixer EP2" value="0"/>
@ -177,6 +178,7 @@
<ctl name="USB_RX Mixer VOIP" value="0"/>
<ctl name="USB_RX Mixer HIFI" value="0"/>
<ctl name="USB_RX Mixer RAW" value="0"/>
<ctl name="USB_RX Mixer IMSV" value="0"/>
<ctl name="BT_RX Mixer EP1" value="0"/>
<ctl name="BT_RX Mixer EP2" value="0"/>
@ -188,6 +190,7 @@
<ctl name="BT_RX Mixer NoHost1" value="0"/>
<ctl name="BT_RX Mixer VOIP" value="0"/>
<ctl name="BT_RX Mixer RAW" value="0"/>
<ctl name="BT_RX Mixer IMSV" value="0"/>
<ctl name="INCALL_RX Mixer EP1" value="0"/>
<ctl name="INCALL_RX Mixer EP2" value="0"/>
@ -516,15 +519,15 @@
</path>
<path name="immersive-playbackP">
<ctl name="TDM_0_RX Mixer EP4" value="1"/>
<ctl name="TDM_0_RX Mixer IMSV" value="1"/>
</path>
<path name="immersive-playbackP bt">
<ctl name="BT_RX Mixer EP4" value="1"/>
<ctl name="BT_RX Mixer IMSV" value="1"/>
</path>
<path name="immersive-playbackP usb-headphone">
<ctl name="USB_RX Mixer EP4" value="1"/>
<ctl name="USB_RX Mixer IMSV" value="1"/>
</path>
<path name="voip-playbackP">

View file

@ -55,7 +55,7 @@ PRODUCT_PROPERTY_OVERRIDES += \
PRODUCT_PROPERTY_OVERRIDES += \
ro.bluetooth.a2dp_offload.supported=true \
persist.bluetooth.a2dp_offload.disabled=false \
persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac
persist.bluetooth.a2dp_offload.cap=sbc-aac-aptx-aptxhd-ldac-opus
PRODUCT_PRODUCT_PROPERTIES += \
persist.bluetooth.firmware.selection="BTFW.hcd"

View file

@ -104,6 +104,22 @@ PRODUCT_SOONG_NAMESPACES += device/google/tangorpro/powerstats
# Bluetooth HAL and Pixel extension
include device/google/tangorpro/bluetooth/syna_default.mk
# Spatial Audio
PRODUCT_PACKAGES += \
libspatialaudio
# optimize spatializer effect
PRODUCT_PROPERTY_OVERRIDES += \
audio.spatializer.effect.util_clamp_min=300
# declare use of spatial audio
PRODUCT_PROPERTY_OVERRIDES += \
ro.audio.spatializer_enabled=true
# Bluetooth OPUS codec
PRODUCT_PRODUCT_PROPERTIES += \
persist.bluetooth.opus.enabled=true
# Keymaster HAL
#LOCAL_KEYMASTER_PRODUCT_PACKAGE ?= android.hardware.keymaster@4.1-service