A2DP Offload: Fix the default LDAC bitrate
Use LDAC ABR as default option in A2DP Offload mode.
Bug: 77879487
Test: Manual
Change-Id: Iec76691f8a83cd47aa7bf38efc6554139a59bb89
diff --git a/system/stack/a2dp/a2dp_codec_config.cc b/system/stack/a2dp/a2dp_codec_config.cc
index 7ca5a5c..21813cd 100644
--- a/system/stack/a2dp/a2dp_codec_config.cc
+++ b/system/stack/a2dp/a2dp_codec_config.cc
@@ -203,27 +203,29 @@
p_a2dp_offload->codec_info[4] = (codec_id & 0x000000FF);
p_a2dp_offload->codec_info[5] = (codec_id & 0x0000FF00) >> 8;
if (vendor_id == A2DP_LDAC_VENDOR_ID && codec_id == A2DP_LDAC_CODEC_ID) {
- switch (codec_config_.codec_specific_1) {
- case 1000:
- p_a2dp_offload->codec_info[6] =
- A2DP_LDAC_QUALITY_ABR_OFFLOAD; // ABR in offload
- break;
- case 1001:
- p_a2dp_offload->codec_info[6] =
- A2DP_LDAC_QUALITY_MID; // Mid birate
- break;
- case 1002:
- p_a2dp_offload->codec_info[6] =
- A2DP_LDAC_QUALITY_LOW; // Low birate
- break;
- case 1003:
- p_a2dp_offload->codec_info[6] =
- A2DP_LDAC_QUALITY_HIGH; // High bitrate
- break;
- default:
- p_a2dp_offload->codec_info[6] =
- A2DP_LDAC_QUALITY_MID; // Mid bitrate
- break;
+ if (codec_config_.codec_specific_1 == 0) { // default is 0, ABR
+ p_a2dp_offload->codec_info[6] =
+ A2DP_LDAC_QUALITY_ABR_OFFLOAD; // ABR in offload
+ } else {
+ switch (codec_config_.codec_specific_1 % 10) {
+ case 0:
+ p_a2dp_offload->codec_info[6] =
+ A2DP_LDAC_QUALITY_HIGH; // High bitrate
+ break;
+ case 1:
+ p_a2dp_offload->codec_info[6] =
+ A2DP_LDAC_QUALITY_MID; // Mid birate
+ break;
+ case 2:
+ p_a2dp_offload->codec_info[6] =
+ A2DP_LDAC_QUALITY_LOW; // Low birate
+ break;
+ case 3: // fall through
+ default:
+ p_a2dp_offload->codec_info[6] =
+ A2DP_LDAC_QUALITY_ABR_OFFLOAD; // ABR in offload
+ break;
+ }
}
}
break;
diff --git a/system/stack/a2dp/a2dp_vendor_ldac.cc b/system/stack/a2dp/a2dp_vendor_ldac.cc
index d3aeb3b..5eb0c7d 100644
--- a/system/stack/a2dp/a2dp_vendor_ldac.cc
+++ b/system/stack/a2dp/a2dp_vendor_ldac.cc
@@ -306,28 +306,28 @@
A2dpCodecConfig* current_codec = bta_av_get_a2dp_current_codec();
btav_a2dp_codec_config_t codec_config_ = current_codec->getCodecConfig();
int samplerate = A2DP_GetTrackSampleRate(p_codec_info);
- switch (codec_config_.codec_specific_1) {
- case 1001:
- if (samplerate == 44100 || samplerate == 88200)
- return 606000;
- else
- return 660000;
- case 1002:
- if (samplerate == 44100 || samplerate == 88200)
- return 303000;
- else
- return 330000;
- case 1003:
+ switch (codec_config_.codec_specific_1 % 10) {
+ case 0:
if (samplerate == 44100 || samplerate == 88200)
return 909000;
else
return 990000;
- case 1000:
- default:
+ case 1:
if (samplerate == 44100 || samplerate == 88200)
return 606000;
else
return 660000;
+ case 2:
+ if (samplerate == 44100 || samplerate == 88200)
+ return 303000;
+ else
+ return 330000;
+ case 3:
+ default:
+ if (samplerate == 44100 || samplerate == 88200)
+ return 909000;
+ else
+ return 990000;
}
return 0;
}