Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4d042138 authored by Sunny Kapdi's avatar Sunny Kapdi Committed by Pavlin Radoslavov
Browse files

A2DP Offload: Fix the default LDAC bitrate

Use LDAC ABR as default option in A2DP Offload mode.

Bug: 77879487
Test: Manual
Change-Id: Iec76691f8a83cd47aa7bf38efc6554139a59bb89
parent 33084351
Loading
Loading
Loading
Loading
+23 −21
Original line number Original line Diff line number Diff line
@@ -203,29 +203,31 @@ bool A2dpCodecConfig::getCodecSpecificConfig(tBT_A2DP_OFFLOAD* p_a2dp_offload) {
      p_a2dp_offload->codec_info[4] = (codec_id & 0x000000FF);
      p_a2dp_offload->codec_info[4] = (codec_id & 0x000000FF);
      p_a2dp_offload->codec_info[5] = (codec_id & 0x0000FF00) >> 8;
      p_a2dp_offload->codec_info[5] = (codec_id & 0x0000FF00) >> 8;
      if (vendor_id == A2DP_LDAC_VENDOR_ID && codec_id == A2DP_LDAC_CODEC_ID) {
      if (vendor_id == A2DP_LDAC_VENDOR_ID && codec_id == A2DP_LDAC_CODEC_ID) {
        switch (codec_config_.codec_specific_1) {
        if (codec_config_.codec_specific_1 == 0) {  // default is 0, ABR
          case 1000:
          p_a2dp_offload->codec_info[6] =
          p_a2dp_offload->codec_info[6] =
              A2DP_LDAC_QUALITY_ABR_OFFLOAD;  // ABR in offload
              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;
              break;
          case 1001:
            case 1:
              p_a2dp_offload->codec_info[6] =
              p_a2dp_offload->codec_info[6] =
                  A2DP_LDAC_QUALITY_MID;  // Mid birate
                  A2DP_LDAC_QUALITY_MID;  // Mid birate
              break;
              break;
          case 1002:
            case 2:
              p_a2dp_offload->codec_info[6] =
              p_a2dp_offload->codec_info[6] =
                  A2DP_LDAC_QUALITY_LOW;  // Low birate
                  A2DP_LDAC_QUALITY_LOW;  // Low birate
              break;
              break;
          case 1003:
            case 3:  // fall through
            p_a2dp_offload->codec_info[6] =
                A2DP_LDAC_QUALITY_HIGH;  // High bitrate
            break;
            default:
            default:
              p_a2dp_offload->codec_info[6] =
              p_a2dp_offload->codec_info[6] =
                A2DP_LDAC_QUALITY_MID;  // Mid bitrate
                  A2DP_LDAC_QUALITY_ABR_OFFLOAD;  // ABR in offload
              break;
              break;
          }
          }
        }
        }
      }
      break;
      break;
    default:
    default:
      break;
      break;
+10 −10
Original line number Original line Diff line number Diff line
@@ -306,28 +306,28 @@ int A2DP_VendorGetBitRateLdac(const uint8_t* p_codec_info) {
  A2dpCodecConfig* current_codec = bta_av_get_a2dp_current_codec();
  A2dpCodecConfig* current_codec = bta_av_get_a2dp_current_codec();
  btav_a2dp_codec_config_t codec_config_ = current_codec->getCodecConfig();
  btav_a2dp_codec_config_t codec_config_ = current_codec->getCodecConfig();
  int samplerate = A2DP_GetTrackSampleRate(p_codec_info);
  int samplerate = A2DP_GetTrackSampleRate(p_codec_info);
  switch (codec_config_.codec_specific_1) {
  switch (codec_config_.codec_specific_1 % 10) {
    case 1001:
    case 0:
      if (samplerate == 44100 || samplerate == 88200)
        return 909000;
      else
        return 990000;
    case 1:
      if (samplerate == 44100 || samplerate == 88200)
      if (samplerate == 44100 || samplerate == 88200)
        return 606000;
        return 606000;
      else
      else
        return 660000;
        return 660000;
    case 1002:
    case 2:
      if (samplerate == 44100 || samplerate == 88200)
      if (samplerate == 44100 || samplerate == 88200)
        return 303000;
        return 303000;
      else
      else
        return 330000;
        return 330000;
    case 1003:
    case 3:
    default:
      if (samplerate == 44100 || samplerate == 88200)
      if (samplerate == 44100 || samplerate == 88200)
        return 909000;
        return 909000;
      else
      else
        return 990000;
        return 990000;
    case 1000:
    default:
      if (samplerate == 44100 || samplerate == 88200)
        return 606000;
      else
        return 660000;
  }
  }
  return 0;
  return 0;
}
}