From 4d0421388e832c570673c2c8234824e878cec2d6 Mon Sep 17 00:00:00 2001 From: Sunny Kapdi <sunnyk@codeaurora.org> Date: Thu, 22 Mar 2018 23:54:40 -0700 Subject: [PATCH] A2DP Offload: Fix the default LDAC bitrate Use LDAC ABR as default option in A2DP Offload mode. Bug: 77879487 Test: Manual Change-Id: Iec76691f8a83cd47aa7bf38efc6554139a59bb89 --- system/stack/a2dp/a2dp_codec_config.cc | 44 ++++++++++++++------------ system/stack/a2dp/a2dp_vendor_ldac.cc | 20 ++++++------ 2 files changed, 33 insertions(+), 31 deletions(-) diff --git a/system/stack/a2dp/a2dp_codec_config.cc b/system/stack/a2dp/a2dp_codec_config.cc index 7ca5a5c7dff..21813cd479b 100644 --- a/system/stack/a2dp/a2dp_codec_config.cc +++ b/system/stack/a2dp/a2dp_codec_config.cc @@ -203,27 +203,29 @@ bool A2dpCodecConfig::getCodecSpecificConfig(tBT_A2DP_OFFLOAD* p_a2dp_offload) { 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 d3aeb3b9797..5eb0c7d8423 100644 --- a/system/stack/a2dp/a2dp_vendor_ldac.cc +++ b/system/stack/a2dp/a2dp_vendor_ldac.cc @@ -306,28 +306,28 @@ int A2DP_VendorGetBitRateLdac(const uint8_t* p_codec_info) { 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: + switch (codec_config_.codec_specific_1 % 10) { + case 0: + if (samplerate == 44100 || samplerate == 88200) + return 909000; + else + return 990000; + case 1: if (samplerate == 44100 || samplerate == 88200) return 606000; else return 660000; - case 1002: + case 2: if (samplerate == 44100 || samplerate == 88200) return 303000; else return 330000; - case 1003: + case 3: + default: if (samplerate == 44100 || samplerate == 88200) return 909000; else return 990000; - case 1000: - default: - if (samplerate == 44100 || samplerate == 88200) - return 606000; - else - return 660000; } return 0; } -- GitLab