Porting LE Audio unciast on F10.
1. Default enable LE Audio unicast on android U. 2. Enable LE Audio offload flag 3. Add the offload capability file for unicast 4. Enable LE Audio switcher flag(for developer option) 5. Enable BQR event mask for LE Audio choppy event Bug: 273167787 Test: LE Audio unicast related services are all enabled by default Test: Media & Phone call can stream via LE Audio SW/HW path Change-Id: I3a09fff2191b18ed90c782ab2c8e76a032950cb4
This commit is contained in:
parent
b43e38a419
commit
1c95aad4ee
2 changed files with 107 additions and 0 deletions
73
bluetooth/le_audio_codec_capabilities.xml
Normal file
73
bluetooth/le_audio_codec_capabilities.xml
Normal file
|
@ -0,0 +1,73 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!---
|
||||||
|
This is an example to configure LE Audio hardware offload supported capability settings
|
||||||
|
codecConfigurationList:
|
||||||
|
Supported codec capability along with its parameter setting
|
||||||
|
|
||||||
|
strategyConfigurationList:
|
||||||
|
ASE Configuration strategies
|
||||||
|
|
||||||
|
configurationList:
|
||||||
|
For each configuration, there are two attributes
|
||||||
|
- codecConfiguration
|
||||||
|
- strategyConfiguration
|
||||||
|
|
||||||
|
scenarioList:
|
||||||
|
There would be only one `scenarios` group
|
||||||
|
For each scenario, the are two attributes
|
||||||
|
- encode
|
||||||
|
- decode
|
||||||
|
If a scenario is unidirectional, mark another direction as `invalid`
|
||||||
|
The configuration should be chosen from `configurationList`
|
||||||
|
-->
|
||||||
|
<leAudioOffloadSetting>
|
||||||
|
<scenarioList>
|
||||||
|
<!-- encode only -->
|
||||||
|
<scenario encode="OneChanMono_16_1" decode="invalid"/>
|
||||||
|
<scenario encode="TwoChanStereo_16_1" decode="invalid"/>
|
||||||
|
<scenario encode="OneChanStereo_16_1" decode="invalid"/>
|
||||||
|
<scenario encode="OneChanMono_16_2" decode="invalid"/>
|
||||||
|
<scenario encode="TwoChanStereo_16_2" decode="invalid"/>
|
||||||
|
<scenario encode="OneChanStereo_16_2" decode="invalid"/>
|
||||||
|
<scenario encode="OneChanMono_24_2" decode="invalid"/>
|
||||||
|
<scenario encode="TwoChanStereo_24_2" decode="invalid"/>
|
||||||
|
<scenario encode="OneChanStereo_24_2" decode="invalid"/>
|
||||||
|
<scenario encode="OneChanMono_48_4" decode="invalid"/>
|
||||||
|
<scenario encode="TwoChanStereo_48_4" decode="invalid"/>
|
||||||
|
<scenario encode="OneChanStereo_48_4" decode="invalid"/>
|
||||||
|
<!-- encode and decode -->
|
||||||
|
<scenario encode="OneChanStereo_16_1" decode="OneChanStereo_16_1"/>
|
||||||
|
<scenario encode="OneChanStereo_16_1" decode="OneChanMono_16_1"/>
|
||||||
|
<scenario encode="TwoChanStereo_16_1" decode="OneChanMono_16_1"/>
|
||||||
|
<scenario encode="OneChanMono_16_1" decode="OneChanMono_16_1"/>
|
||||||
|
<scenario encode="OneChanStereo_16_2" decode="OneChanStereo_16_2"/>
|
||||||
|
<scenario encode="OneChanStereo_16_2" decode="OneChanMono_16_2"/>
|
||||||
|
<scenario encode="TwoChanStereo_16_2" decode="OneChanMono_16_2"/>
|
||||||
|
<scenario encode="OneChanMono_16_2" decode="OneChanMono_16_2"/>
|
||||||
|
</scenarioList>
|
||||||
|
<configurationList>
|
||||||
|
<configuration name="OneChanMono_16_1" codecConfiguration="LC3_16k_1" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
|
||||||
|
<configuration name="TwoChanStereo_16_1" codecConfiguration="LC3_16k_1" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
|
||||||
|
<configuration name="OneChanStereo_16_1" codecConfiguration="LC3_16k_1" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
|
||||||
|
<configuration name="OneChanMono_16_2" codecConfiguration="LC3_16k_2" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
|
||||||
|
<configuration name="TwoChanStereo_16_2" codecConfiguration="LC3_16k_2" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
|
||||||
|
<configuration name="OneChanStereo_16_2" codecConfiguration="LC3_16k_2" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
|
||||||
|
<configuration name="OneChanMono_24_2" codecConfiguration="LC3_24k_2" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
|
||||||
|
<configuration name="TwoChanStereo_24_2" codecConfiguration="LC3_24k_2" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
|
||||||
|
<configuration name="OneChanStereo_24_2" codecConfiguration="LC3_24k_2" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
|
||||||
|
<configuration name="OneChanMono_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="MONO_ONE_CIS_PER_DEVICE"/>
|
||||||
|
<configuration name="TwoChanStereo_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="STEREO_TWO_CISES_PER_DEVICE"/>
|
||||||
|
<configuration name="OneChanStereo_48_4" codecConfiguration="LC3_48k_4" strategyConfiguration="STEREO_ONE_CIS_PER_DEVICE"/>
|
||||||
|
</configurationList>
|
||||||
|
<codecConfigurationList>
|
||||||
|
<codecConfiguration name="LC3_16k_1" codec="LC3" samplingFrequency="16000" frameDurationUs="7500" octetsPerCodecFrame="30"/>
|
||||||
|
<codecConfiguration name="LC3_16k_2" codec="LC3" samplingFrequency="16000" frameDurationUs="10000" octetsPerCodecFrame="40"/>
|
||||||
|
<codecConfiguration name="LC3_24k_2" codec="LC3" samplingFrequency="24000" frameDurationUs="10000" octetsPerCodecFrame="60"/>
|
||||||
|
<codecConfiguration name="LC3_48k_4" codec="LC3" samplingFrequency="48000" frameDurationUs="10000" octetsPerCodecFrame="120"/>
|
||||||
|
</codecConfigurationList>
|
||||||
|
<strategyConfigurationList>
|
||||||
|
<strategyConfiguration name="STEREO_ONE_CIS_PER_DEVICE" audioLocation="STEREO" connectedDevice="2" channelCount="1"/>
|
||||||
|
<strategyConfiguration name="STEREO_TWO_CISES_PER_DEVICE" audioLocation="STEREO" connectedDevice="1" channelCount="2"/>
|
||||||
|
<strategyConfiguration name="MONO_ONE_CIS_PER_DEVICE" audioLocation="MONO" connectedDevice="1" channelCount="1"/>
|
||||||
|
</strategyConfigurationList>
|
||||||
|
</leAudioOffloadSetting>
|
|
@ -318,3 +318,37 @@ ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
|
||||||
device/google/gs201/init.hardware.wlc.rc.userdebug:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.wlc.rc
|
device/google/gs201/init.hardware.wlc.rc.userdebug:$(TARGET_COPY_OUT_VENDOR)/etc/init/init.wlc.rc
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
# Bluetooth LE Audio
|
||||||
|
PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
|
ro.bluetooth.leaudio_offload.supported=true \
|
||||||
|
persist.bluetooth.leaudio_offload.disabled=false \
|
||||||
|
ro.bluetooth.leaudio_switcher.supported=true \
|
||||||
|
bluetooth.profile.bap.unicast.client.enabled=true \
|
||||||
|
bluetooth.profile.csip.set_coordinator.enabled=true \
|
||||||
|
bluetooth.profile.hap.client.enabled=true \
|
||||||
|
bluetooth.profile.mcp.server.enabled=true \
|
||||||
|
bluetooth.profile.ccp.server.enabled=true \
|
||||||
|
bluetooth.profile.vcp.controller.enabled=true \
|
||||||
|
|
||||||
|
# Override BQR mask to enable LE Audio Choppy report
|
||||||
|
ifneq (,$(filter userdebug eng, $(TARGET_BUILD_VARIANT)))
|
||||||
|
PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
|
persist.bluetooth.bqr.event_mask=262238
|
||||||
|
else
|
||||||
|
PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
|
persist.bluetooth.bqr.event_mask=94
|
||||||
|
endif
|
||||||
|
|
||||||
|
# Bluetooth LE Audio CIS handover to SCO
|
||||||
|
# Set the property only if the controller doesn't support CIS and SCO
|
||||||
|
# simultaneously. More details in b/242908683.
|
||||||
|
PRODUCT_PRODUCT_PROPERTIES += \
|
||||||
|
persist.bluetooth.leaudio.notify.idle.during.call=true
|
||||||
|
|
||||||
|
# LE Audio Offload Capabilities Setting
|
||||||
|
PRODUCT_COPY_FILES += \
|
||||||
|
device/google/felix/bluetooth/le_audio_codec_capabilities.xml:$(TARGET_COPY_OUT_VENDOR)/etc/le_audio_codec_capabilities.xml
|
||||||
|
|
||||||
|
# Bluetooth EWP test tool
|
||||||
|
PRODUCT_PACKAGES_DEBUG += \
|
||||||
|
ewp_tool
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue