hal: add support for aptx adaptive encoder mode
The change add support for sending APTx Adaptive
encoder mode, High Quality or Low Latency to LPASS.
Update latency for APTx Adaptive format, BT IPC
will return the latency according to current mode
the encoder is working in.
CRs-Fixed: 2272312
Change-Id: Iab4e5b43ac7a0385444aa22c88f01ee72e45055d
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index c5edd42..1af7433 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -444,6 +444,7 @@
uint32_t max_sink_modeB;
uint32_t min_sink_modeC;
uint32_t max_sink_modeC;
+ uint32_t mode;
} __attribute__ ((packed));
struct aptx_ad_enc_cfg_t
@@ -517,6 +518,7 @@
uint8_t TTP_modeB_low;
uint8_t TTP_modeB_high;
uint32_t bits_per_sample;
+ uint16_t encoder_mode;
} audio_aptx_ad_config;
typedef struct {
@@ -1184,6 +1186,7 @@
aptx_dsp_cfg->aptx_ad_cfg.max_sink_modeB = aptx_bt_cfg->ad_cfg->max_sink_modeB;
aptx_dsp_cfg->aptx_ad_cfg.min_sink_modeC = aptx_bt_cfg->ad_cfg->min_sink_modeC;
aptx_dsp_cfg->aptx_ad_cfg.max_sink_modeC = aptx_bt_cfg->ad_cfg->max_sink_modeC;
+ aptx_dsp_cfg->aptx_ad_cfg.mode = aptx_bt_cfg->ad_cfg->encoder_mode;
aptx_dsp_cfg->abr_cfg.imc_info.direction = IMC_RECEIVE;
aptx_dsp_cfg->abr_cfg.imc_info.enable = IMC_ENABLE;
aptx_dsp_cfg->abr_cfg.imc_info.purpose = IMC_PURPOSE_ID_BT_INFO;
@@ -2202,6 +2205,8 @@
latency = (avsync_runtime_prop > 0) ? ldac_offset : ENCODER_LATENCY_LDAC;
latency += (slatency <= 0) ? DEFAULT_SINK_LATENCY_LDAC : slatency;
break;
+ case ENC_CODEC_TYPE_APTX_AD: // for aptx adaptive the latency depends on the mode (HQ/LL) and
+ latency = slatency; // BT IPC will take care of accomodating the mode factor and return latency
default:
latency = 200;
break;