Loading hal/audio_extn/a2dp.c +16 −1 Original line number Original line Diff line number Diff line Loading @@ -92,6 +92,7 @@ #define ENCODER_LATENCY_APTX_HD 20 #define ENCODER_LATENCY_APTX_HD 20 #define ENCODER_LATENCY_LDAC 40 #define ENCODER_LATENCY_LDAC 40 #define ENCODER_LATENCY_SBC 10 #define ENCODER_LATENCY_SBC 10 #define ENCODER_LATENCY_PCM 50 // Default A2DP sink latency offset // Default A2DP sink latency offset #define DEFAULT_SINK_LATENCY_AAC 180 #define DEFAULT_SINK_LATENCY_AAC 180 Loading @@ -99,6 +100,7 @@ #define DEFAULT_SINK_LATENCY_APTX_HD 180 #define DEFAULT_SINK_LATENCY_APTX_HD 180 #define DEFAULT_SINK_LATENCY_LDAC 180 #define DEFAULT_SINK_LATENCY_LDAC 180 #define DEFAULT_SINK_LATENCY_SBC 140 #define DEFAULT_SINK_LATENCY_SBC 140 #define DEFAULT_SINK_LATENCY_PCM 140 // Slimbus Tx sample rate for ABR feedback channel // Slimbus Tx sample rate for ABR feedback channel #define ABR_TX_SAMPLE_RATE "KHZ_8" #define ABR_TX_SAMPLE_RATE "KHZ_8" Loading @@ -125,6 +127,7 @@ typedef enum { ENC_CODEC_TYPE_APTX = AUDIO_FORMAT_APTX, // 0x20000000UL ENC_CODEC_TYPE_APTX = AUDIO_FORMAT_APTX, // 0x20000000UL ENC_CODEC_TYPE_APTX_HD = AUDIO_FORMAT_APTX_HD, // 0x21000000UL ENC_CODEC_TYPE_APTX_HD = AUDIO_FORMAT_APTX_HD, // 0x21000000UL ENC_CODEC_TYPE_LDAC = AUDIO_FORMAT_LDAC, // 0x23000000UL ENC_CODEC_TYPE_LDAC = AUDIO_FORMAT_LDAC, // 0x23000000UL ENC_CODEC_TYPE_PCM = AUDIO_FORMAT_PCM_16_BIT, // 0x1u } enc_codec_t; } enc_codec_t; typedef int (*audio_stream_open_t)(void); typedef int (*audio_stream_open_t)(void); Loading Loading @@ -770,7 +773,10 @@ static int a2dp_set_backend_cfg() (sampling_rate_rx == 48000 || sampling_rate_rx == 44100 )) { (sampling_rate_rx == 48000 || sampling_rate_rx == 44100 )) { sampling_rate_rx *= 2; 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 // Set Rx backend sample rate switch (sampling_rate_rx) { switch (sampling_rate_rx) { case 44100: case 44100: Loading Loading @@ -1340,6 +1346,11 @@ bool configure_a2dp_encoder_format() (configure_ldac_enc_format((audio_ldac_encoder_config *)codec_info) && (configure_ldac_enc_format((audio_ldac_encoder_config *)codec_info) && configure_a2dp_decoder_format(ENC_CODEC_TYPE_LDAC)); configure_a2dp_decoder_format(ENC_CODEC_TYPE_LDAC)); break; 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: default: ALOGD("%s: Received unsupported encoder format", __func__); ALOGD("%s: Received unsupported encoder format", __func__); is_configured = false; is_configured = false; Loading Loading @@ -1698,6 +1709,10 @@ uint32_t audio_extn_a2dp_get_encoder_latency() latency = (avsync_runtime_prop > 0) ? ldac_offset : ENCODER_LATENCY_LDAC; latency = (avsync_runtime_prop > 0) ? ldac_offset : ENCODER_LATENCY_LDAC; latency += DEFAULT_SINK_LATENCY_LDAC; latency += DEFAULT_SINK_LATENCY_LDAC; break; break; case ENC_CODEC_TYPE_PCM: latency = ENCODER_LATENCY_PCM; latency += DEFAULT_SINK_LATENCY_PCM; break; default: default: latency = DEFAULT_ENCODER_LATENCY; latency = DEFAULT_ENCODER_LATENCY; break; break; Loading hal/audio_hw.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -249,7 +249,7 @@ struct pcm_config pcm_config_afe_proxy_record = { .period_count = AFE_PROXY_RECORD_PERIOD_COUNT, .period_count = AFE_PROXY_RECORD_PERIOD_COUNT, .format = PCM_FORMAT_S16_LE, .format = PCM_FORMAT_S16_LE, .start_threshold = AFE_PROXY_RECORD_PERIOD_SIZE, .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, .avail_min = AFE_PROXY_RECORD_PERIOD_SIZE, }; }; Loading Loading
hal/audio_extn/a2dp.c +16 −1 Original line number Original line Diff line number Diff line Loading @@ -92,6 +92,7 @@ #define ENCODER_LATENCY_APTX_HD 20 #define ENCODER_LATENCY_APTX_HD 20 #define ENCODER_LATENCY_LDAC 40 #define ENCODER_LATENCY_LDAC 40 #define ENCODER_LATENCY_SBC 10 #define ENCODER_LATENCY_SBC 10 #define ENCODER_LATENCY_PCM 50 // Default A2DP sink latency offset // Default A2DP sink latency offset #define DEFAULT_SINK_LATENCY_AAC 180 #define DEFAULT_SINK_LATENCY_AAC 180 Loading @@ -99,6 +100,7 @@ #define DEFAULT_SINK_LATENCY_APTX_HD 180 #define DEFAULT_SINK_LATENCY_APTX_HD 180 #define DEFAULT_SINK_LATENCY_LDAC 180 #define DEFAULT_SINK_LATENCY_LDAC 180 #define DEFAULT_SINK_LATENCY_SBC 140 #define DEFAULT_SINK_LATENCY_SBC 140 #define DEFAULT_SINK_LATENCY_PCM 140 // Slimbus Tx sample rate for ABR feedback channel // Slimbus Tx sample rate for ABR feedback channel #define ABR_TX_SAMPLE_RATE "KHZ_8" #define ABR_TX_SAMPLE_RATE "KHZ_8" Loading @@ -125,6 +127,7 @@ typedef enum { ENC_CODEC_TYPE_APTX = AUDIO_FORMAT_APTX, // 0x20000000UL ENC_CODEC_TYPE_APTX = AUDIO_FORMAT_APTX, // 0x20000000UL ENC_CODEC_TYPE_APTX_HD = AUDIO_FORMAT_APTX_HD, // 0x21000000UL ENC_CODEC_TYPE_APTX_HD = AUDIO_FORMAT_APTX_HD, // 0x21000000UL ENC_CODEC_TYPE_LDAC = AUDIO_FORMAT_LDAC, // 0x23000000UL ENC_CODEC_TYPE_LDAC = AUDIO_FORMAT_LDAC, // 0x23000000UL ENC_CODEC_TYPE_PCM = AUDIO_FORMAT_PCM_16_BIT, // 0x1u } enc_codec_t; } enc_codec_t; typedef int (*audio_stream_open_t)(void); typedef int (*audio_stream_open_t)(void); Loading Loading @@ -770,7 +773,10 @@ static int a2dp_set_backend_cfg() (sampling_rate_rx == 48000 || sampling_rate_rx == 44100 )) { (sampling_rate_rx == 48000 || sampling_rate_rx == 44100 )) { sampling_rate_rx *= 2; 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 // Set Rx backend sample rate switch (sampling_rate_rx) { switch (sampling_rate_rx) { case 44100: case 44100: Loading Loading @@ -1340,6 +1346,11 @@ bool configure_a2dp_encoder_format() (configure_ldac_enc_format((audio_ldac_encoder_config *)codec_info) && (configure_ldac_enc_format((audio_ldac_encoder_config *)codec_info) && configure_a2dp_decoder_format(ENC_CODEC_TYPE_LDAC)); configure_a2dp_decoder_format(ENC_CODEC_TYPE_LDAC)); break; 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: default: ALOGD("%s: Received unsupported encoder format", __func__); ALOGD("%s: Received unsupported encoder format", __func__); is_configured = false; is_configured = false; Loading Loading @@ -1698,6 +1709,10 @@ uint32_t audio_extn_a2dp_get_encoder_latency() latency = (avsync_runtime_prop > 0) ? ldac_offset : ENCODER_LATENCY_LDAC; latency = (avsync_runtime_prop > 0) ? ldac_offset : ENCODER_LATENCY_LDAC; latency += DEFAULT_SINK_LATENCY_LDAC; latency += DEFAULT_SINK_LATENCY_LDAC; break; break; case ENC_CODEC_TYPE_PCM: latency = ENCODER_LATENCY_PCM; latency += DEFAULT_SINK_LATENCY_PCM; break; default: default: latency = DEFAULT_ENCODER_LATENCY; latency = DEFAULT_ENCODER_LATENCY; break; break; Loading
hal/audio_hw.c +1 −1 Original line number Original line Diff line number Diff line Loading @@ -249,7 +249,7 @@ struct pcm_config pcm_config_afe_proxy_record = { .period_count = AFE_PROXY_RECORD_PERIOD_COUNT, .period_count = AFE_PROXY_RECORD_PERIOD_COUNT, .format = PCM_FORMAT_S16_LE, .format = PCM_FORMAT_S16_LE, .start_threshold = AFE_PROXY_RECORD_PERIOD_SIZE, .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, .avail_min = AFE_PROXY_RECORD_PERIOD_SIZE, }; }; Loading