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

Commit e7ff4e6b authored by Treehugger Robot's avatar Treehugger Robot Committed by Gerrit Code Review
Browse files

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

parents a623c80d 3740ee39
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