Snap for 4807121 from 5d0261eae8f299f0fe09608a679e84e3d7b7341e to pi-release
Change-Id: Ia6b3c9f26e6bcf73caf334a8243ce655c3c66581
diff --git a/hal/audio_extn/a2dp.c b/hal/audio_extn/a2dp.c
index bb44172..d1671a8 100644
--- a/hal/audio_extn/a2dp.c
+++ b/hal/audio_extn/a2dp.c
@@ -92,6 +92,7 @@
#define ENCODER_LATENCY_APTX_HD 20
#define ENCODER_LATENCY_LDAC 40
#define ENCODER_LATENCY_SBC 10
+#define ENCODER_LATENCY_PCM 50
// Default A2DP sink latency offset
#define DEFAULT_SINK_LATENCY_AAC 180
@@ -99,6 +100,7 @@
#define DEFAULT_SINK_LATENCY_APTX_HD 180
#define DEFAULT_SINK_LATENCY_LDAC 180
#define DEFAULT_SINK_LATENCY_SBC 140
+#define DEFAULT_SINK_LATENCY_PCM 140
// Slimbus Tx sample rate for ABR feedback channel
#define ABR_TX_SAMPLE_RATE "KHZ_8"
@@ -125,6 +127,7 @@
ENC_CODEC_TYPE_APTX = AUDIO_FORMAT_APTX, // 0x20000000UL
ENC_CODEC_TYPE_APTX_HD = AUDIO_FORMAT_APTX_HD, // 0x21000000UL
ENC_CODEC_TYPE_LDAC = AUDIO_FORMAT_LDAC, // 0x23000000UL
+ ENC_CODEC_TYPE_PCM = AUDIO_FORMAT_PCM_16_BIT, // 0x1u
} enc_codec_t;
typedef int (*audio_stream_open_t)(void);
@@ -770,7 +773,10 @@
(sampling_rate_rx == 48000 || sampling_rate_rx == 44100 )) {
sampling_rate_rx *= 2;
}
-
+ // No need to configure backend for PCM format.
+ if (a2dp.bt_encoder_format == ENC_CODEC_TYPE_PCM) {
+ return 0;
+ }
// Set Rx backend sample rate
switch (sampling_rate_rx) {
case 44100:
@@ -1340,6 +1346,11 @@
(configure_ldac_enc_format((audio_ldac_encoder_config *)codec_info) &&
configure_a2dp_decoder_format(ENC_CODEC_TYPE_LDAC));
break;
+ case ENC_CODEC_TYPE_PCM:
+ ALOGD("Received PCM format for BT device");
+ a2dp.bt_encoder_format = ENC_CODEC_TYPE_PCM;
+ is_configured = true;
+ break;
default:
ALOGD("%s: Received unsupported encoder format", __func__);
is_configured = false;
@@ -1698,6 +1709,10 @@
latency = (avsync_runtime_prop > 0) ? ldac_offset : ENCODER_LATENCY_LDAC;
latency += DEFAULT_SINK_LATENCY_LDAC;
break;
+ case ENC_CODEC_TYPE_PCM:
+ latency = ENCODER_LATENCY_PCM;
+ latency += DEFAULT_SINK_LATENCY_PCM;
+ break;
default:
latency = DEFAULT_ENCODER_LATENCY;
break;
diff --git a/hal/audio_hw.c b/hal/audio_hw.c
index b104319..977ba10 100644
--- a/hal/audio_hw.c
+++ b/hal/audio_hw.c
@@ -249,7 +249,7 @@
.period_count = AFE_PROXY_RECORD_PERIOD_COUNT,
.format = PCM_FORMAT_S16_LE,
.start_threshold = AFE_PROXY_RECORD_PERIOD_SIZE,
- .stop_threshold = INT_MAX,
+ .stop_threshold = AFE_PROXY_RECORD_PERIOD_SIZE * AFE_PROXY_RECORD_PERIOD_COUNT,
.avail_min = AFE_PROXY_RECORD_PERIOD_SIZE,
};