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

Commit 7dd90dcf authored by Pavlin Radoslavov's avatar Pavlin Radoslavov Committed by android-build-merger
Browse files

Merge "Use the effective peer MTU when preparing the codec configuration"

am: e7ff4e6b

Change-Id: Id2a86ff485aa61c60bd61ea55c296164983fe159
parents 67ad5b5c e7ff4e6b
Loading
Loading
Loading
Loading
+18 −8
Original line number Diff line number Diff line
@@ -114,13 +114,10 @@ static void btif_a2dp_get_codec_configuration(
    CodecConfiguration* p_codec_info) {
  LOG_INFO(LOG_TAG, "%s", __func__);
  tBT_A2DP_OFFLOAD a2dp_offload;
  tA2DP_ENCODER_INIT_PEER_PARAMS peer_param;
  A2dpCodecConfig* CodecConfig = bta_av_get_a2dp_current_codec();
  CodecConfig->getCodecSpecificConfig(&a2dp_offload);
  A2dpCodecConfig* a2dpCodecConfig = bta_av_get_a2dp_current_codec();
  a2dpCodecConfig->getCodecSpecificConfig(&a2dp_offload);
  btav_a2dp_codec_config_t codec_config;
  codec_config = CodecConfig->getCodecConfig();
  RawAddress peer_addr = btif_av_source_active_peer();
  bta_av_co_get_peer_params(peer_addr, &peer_param);
  codec_config = a2dpCodecConfig->getCodecConfig();
  switch (codec_config.codec_type) {
    case BTAV_A2DP_CODEC_INDEX_SOURCE_SBC:
      p_codec_info->codecType =
@@ -161,7 +158,20 @@ static void btif_a2dp_get_codec_configuration(
      APPL_TRACE_ERROR("%s: Unknown Codec type :%d ", __func__,
                       codec_config.codec_type);
  }

  // Obtain the MTU
  RawAddress peer_addr = btif_av_source_active_peer();
  tA2DP_ENCODER_INIT_PEER_PARAMS peer_param;
  bta_av_co_get_peer_params(peer_addr, &peer_param);
  int effectiveMtu = a2dpCodecConfig->getEffectiveMtu();
  if (effectiveMtu > 0 && effectiveMtu < peer_param.peer_mtu) {
    p_codec_info->peerMtu = effectiveMtu;
  } else {
    p_codec_info->peerMtu = peer_param.peer_mtu;
  }
  LOG_INFO(LOG_TAG, "%s: peer MTU: %d effective MTU: %d result MTU: %d",
           __func__, peer_param.peer_mtu, effectiveMtu, p_codec_info->peerMtu);

  p_codec_info->sampleRate =
      (::android::hardware::bluetooth::a2dp::V1_0::SampleRate)
          codec_config.sample_rate;
@@ -171,7 +181,7 @@ static void btif_a2dp_get_codec_configuration(
  p_codec_info->channelMode =
      (::android::hardware::bluetooth::a2dp::V1_0::ChannelMode)
          codec_config.channel_mode;
  p_codec_info->encodedAudioBitrate = CodecConfig->getTrackBitRate();
  p_codec_info->encodedAudioBitrate = a2dpCodecConfig->getTrackBitRate();
}

static void btif_a2dp_audio_interface_init() {
+5 −0
Original line number Diff line number Diff line
@@ -1420,6 +1420,11 @@ period_ms_t A2dpCodecConfigAacSink::encoderIntervalMs() const {
  return 0;
}

int A2dpCodecConfigAacSink::getEffectiveMtu() const {
  // TODO: This method applies only to Source codecs
  return 0;
}

bool A2dpCodecConfigAacSink::useRtpHeaderMarkerBit() const {
  // TODO: This method applies only to Source codecs
  return false;
+4 −0
Original line number Diff line number Diff line
@@ -698,6 +698,10 @@ period_ms_t A2dpCodecConfigAacSource::encoderIntervalMs() const {
  return a2dp_aac_get_encoder_interval_ms();
}

int A2dpCodecConfigAacSource::getEffectiveMtu() const {
  return a2dp_aac_encoder_cb.TxAaMtuSize;
}

void A2dpCodecConfigAacSource::debug_codec_dump(int fd) {
  a2dp_aac_encoder_stats_t* stats = &a2dp_aac_encoder_cb.stats;

+2 −1
Original line number Diff line number Diff line
@@ -145,7 +145,7 @@ A2dpCodecConfig* A2dpCodecConfig::createCodec(
  return codec_config;
}

int A2dpCodecConfig::getTrackBitRate() {
int A2dpCodecConfig::getTrackBitRate() const {
  uint8_t p_codec_info[AVDT_CODEC_SIZE];
  memcpy(p_codec_info, ota_codec_config_, sizeof(ota_codec_config_));
  tA2DP_CODEC_TYPE codec_type = A2DP_GetCodecType(p_codec_info);
@@ -499,6 +499,7 @@ void A2dpCodecConfig::debug_codec_dump(int fd) {
  dprintf(fd, "\nA2DP %s State:\n", name().c_str());
  dprintf(fd, "  Priority: %d\n", codecPriority());
  dprintf(fd, "  Encoder interval (ms): %" PRIu64 "\n", encoderIntervalMs());
  dprintf(fd, "  Effective MTU: %d\n", getEffectiveMtu());

  result = codecConfig2Str(getCodecConfig());
  dprintf(fd, "  Config: %s\n", result.c_str());
+5 −0
Original line number Diff line number Diff line
@@ -1559,3 +1559,8 @@ period_ms_t A2dpCodecConfigSbcSink::encoderIntervalMs() const {
  // TODO: This method applies only to Source codecs
  return 0;
}

int A2dpCodecConfigSbcSink::getEffectiveMtu() const {
  // TODO: This method applies only to Source codecs
  return 0;
}
Loading