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

Commit bb9f1e54 authored by Jakub Tyszkowski's avatar Jakub Tyszkowski
Browse files

LeAudio: Minor broadcast configuration cleanup

 - removed the unused bitrate
 - adjusted the parameter naming to match the BT specification

Bug: 295972694
Test: atest --host bluetooth_le_audio_test bluetooth_le_audio_client_test bluetooth_test_broadcaster bluetooth_test_broadcaster_state_machine bluetooth_le_audio_codec_manager_test
Change-Id: I6d9f869d32bc6ebf970759f3e71e54227e25851c
parent 698866f3
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -482,7 +482,7 @@ class LeAudioBroadcasterImpl : public LeAudioBroadcaster, public BigCallbacks {
           .sample_rate = offload_config->sampling_rate,
           .bits_per_sample = offload_config->bits_per_sample,
           .data_interval_us = offload_config->frame_duration},
          offload_config->codec_bitrate, offload_config->octets_per_frame);
          offload_config->octets_per_frame);
      BroadcastQosConfig qos_config(offload_config->retransmission_number,
                                    offload_config->max_transport_latency);

@@ -1031,7 +1031,8 @@ class LeAudioBroadcasterImpl : public LeAudioBroadcaster, public BigCallbacks {
      for (uint8_t chan = 0; chan < num_channels; ++chan) {
        auto initial_channel_offset = chan * bytes_per_sample;
        sw_enc_[chan]->Encode(data.data() + initial_channel_offset,
                              num_channels, codec_wrapper_.GetFrameLen());
                              num_channels,
                              codec_wrapper_.GetOctetsPerCodecFrame());
      }

      /* Currently there is no way to broadcast multiple distinct streams.
+2 −2
Original line number Diff line number Diff line
@@ -579,7 +579,7 @@ TEST_F(BroadcasterTest, UpdateMetadataFromAudioTrackMetadata) {
       .sample_rate = LeAudioCodecConfiguration::kSampleRate16000,
       .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
       .data_interval_us = LeAudioCodecConfiguration::kInterval10000Us},
      32000, 40);
      40);
  auto announcement = prepareAnnouncement(codec_config, meta);

  ON_CALL(*sm, GetBroadcastAnnouncement())
@@ -627,7 +627,7 @@ TEST_F(BroadcasterTest, GetMetadata) {
       .sample_rate = LeAudioCodecConfiguration::kSampleRate16000,
       .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
       .data_interval_us = LeAudioCodecConfiguration::kInterval10000Us},
      32000, 40);
      40);
  auto announcement = prepareAnnouncement(codec_config, meta);

  bool is_public_metadata_valid;
+1 −16
Original line number Diff line number Diff line
@@ -238,8 +238,6 @@ static const BroadcastCodecWrapper lc3_mono_16_2 = BroadcastCodecWrapper(
     .sample_rate = LeAudioCodecConfiguration::kSampleRate16000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval10000Us},
    // Bitrate
    32000,
    // Frame len.
    40);

@@ -250,8 +248,6 @@ static const BroadcastCodecWrapper lc3_stereo_16_2 = BroadcastCodecWrapper(
     .sample_rate = LeAudioCodecConfiguration::kSampleRate16000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval10000Us},
    // Bitrate
    32000,
    // Frame len.
    40);

@@ -262,8 +258,6 @@ static const BroadcastCodecWrapper lc3_stereo_24_2 = BroadcastCodecWrapper(
     .sample_rate = LeAudioCodecConfiguration::kSampleRate24000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval10000Us},
    // Bitrate
    48000,
    // Frame len.
    60);

@@ -274,8 +268,6 @@ static const BroadcastCodecWrapper lc3_stereo_48_1 = BroadcastCodecWrapper(
     .sample_rate = LeAudioCodecConfiguration::kSampleRate48000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval7500Us},
    // Bitrate
    80000,
    // Frame len.
    75);

@@ -286,8 +278,6 @@ static const BroadcastCodecWrapper lc3_stereo_48_2 = BroadcastCodecWrapper(
     .sample_rate = LeAudioCodecConfiguration::kSampleRate48000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval10000Us},
    // Bitrate
    80000,
    // Frame len.
    100);

@@ -298,8 +288,6 @@ static const BroadcastCodecWrapper lc3_stereo_48_3 = BroadcastCodecWrapper(
     .sample_rate = LeAudioCodecConfiguration::kSampleRate48000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval7500Us},
    // Bitrate
    96000,
    // Frame len.
    90);

@@ -310,8 +298,6 @@ static const BroadcastCodecWrapper lc3_stereo_48_4 = BroadcastCodecWrapper(
     .sample_rate = LeAudioCodecConfiguration::kSampleRate48000,
     .bits_per_sample = LeAudioCodecConfiguration::kBitsPerSample16,
     .data_interval_us = LeAudioCodecConfiguration::kInterval10000Us},
    // Bitrate
    96000,
    // Frame len.
    120);

@@ -376,7 +362,7 @@ types::LeAudioLtvMap BroadcastCodecWrapper::GetSubgroupCodecSpecData() const {

  if (codec_id.coding_format == kLeAudioCodecIdLc3.coding_format) {
    codec_spec_ltvs[codec_spec_conf::kLeAudioLtvTypeOctetsPerCodecFrame] =
        UINT16_TO_VEC_UINT8(codec_frame_len);
        UINT16_TO_VEC_UINT8(octets_per_codec_frame);
  }

  if (source_codec_config.num_channels == 1) {
@@ -400,7 +386,6 @@ std::ostream& operator<<(
     << ", SampleRate=" << +config.GetSampleRate()
     << ", BitsPerSample=" << +config.GetBitsPerSample()
     << ", DataIntervalUs=" << +config.GetDataIntervalUs() << "}";
  os << ", Bitrate=" << +config.GetBitrate();
  os << "]";
  return os;
}
+6 −11
Original line number Diff line number Diff line
@@ -54,12 +54,11 @@ void PreparePeriodicData(
struct BroadcastCodecWrapper {
  BroadcastCodecWrapper(types::LeAudioCodecId codec_id,
                        LeAudioCodecConfiguration source_codec_config,
                        uint32_t codec_bitrate, uint32_t codec_frame_len,
                        uint32_t octets_per_codec_frame,
                        uint8_t blocks_per_sdu = 1)
      : codec_id(codec_id),
        source_codec_config(source_codec_config),
        codec_bitrate(codec_bitrate),
        codec_frame_len(codec_frame_len),
        octets_per_codec_frame(octets_per_codec_frame),
        blocks_per_sdu(blocks_per_sdu) {
    if (codec_id.coding_format != types::kLeAudioCodingFormatLC3)
      LOG(ERROR) << "Unsupported coding format!";
@@ -72,8 +71,7 @@ struct BroadcastCodecWrapper {
  BroadcastCodecWrapper& operator=(const BroadcastCodecWrapper& other) {
    codec_id = other.codec_id;
    source_codec_config = other.source_codec_config;
    codec_bitrate = other.codec_bitrate;
    codec_frame_len = other.codec_frame_len;
    octets_per_codec_frame = other.octets_per_codec_frame;
    blocks_per_sdu = other.blocks_per_sdu;
    return *this;
  };
@@ -83,7 +81,7 @@ struct BroadcastCodecWrapper {

  uint16_t GetMaxSduSizePerChannel() const {
    if (codec_id.coding_format == types::kLeAudioCodingFormatLC3) {
      return GetFrameLen() * blocks_per_sdu;
      return GetOctetsPerCodecFrame() * blocks_per_sdu;
    }

    LOG(ERROR) << "Invalid codec ID: "
@@ -105,9 +103,7 @@ struct BroadcastCodecWrapper {

  uint8_t GetNumChannels() const { return source_codec_config.num_channels; }

  uint32_t GetBitrate() const { return codec_bitrate; }

  uint32_t GetFrameLen() const { return codec_frame_len; }
  uint32_t GetOctetsPerCodecFrame() const { return octets_per_codec_frame; }

  uint8_t GetBitsPerSample() const {
    return source_codec_config.bits_per_sample;
@@ -127,8 +123,7 @@ struct BroadcastCodecWrapper {
 private:
  types::LeAudioCodecId codec_id;
  LeAudioCodecConfiguration source_codec_config;
  uint32_t codec_bitrate;
  uint32_t codec_frame_len;
  uint32_t octets_per_codec_frame;
  uint8_t blocks_per_sdu;
};

+1 −7
Original line number Diff line number Diff line
@@ -198,11 +198,6 @@ struct codec_manager_impl {
      broadcast_config.frame_duration = core_config.GetFrameDurationUs();
      broadcast_config.octets_per_frame = *(core_config.octets_per_codec_frame);
      broadcast_config.blocks_per_sdu = 1;
      // Per LC3 spec, bitrate = (8000 * nbytes) / (frame duration in
      // milliseconds)
      broadcast_config.codec_bitrate =
          (8000 * broadcast_config.octets_per_frame) /
          (broadcast_config.frame_duration / 1000);

      int sample_rate = broadcast_config.sampling_rate;
      int frame_duration = broadcast_config.frame_duration;
@@ -235,14 +230,13 @@ struct codec_manager_impl {

    LOG_INFO(
        "stream_map.size(): %zu, sampling_rate: %d, frame_duration(us): %d, "
        "octets_per_frame: %d, blocks_per_sdu %d, codec_bitrate: %d, "
        "octets_per_frame: %d, blocks_per_sdu %d, "
        "retransmission_number: %d, max_transport_latency: %d",
        supported_broadcast_config[0].stream_map.size(),
        supported_broadcast_config[0].sampling_rate,
        supported_broadcast_config[0].frame_duration,
        supported_broadcast_config[0].octets_per_frame,
        (int)supported_broadcast_config[0].blocks_per_sdu,
        (int)supported_broadcast_config[0].codec_bitrate,
        (int)supported_broadcast_config[0].retransmission_number,
        supported_broadcast_config[0].max_transport_latency);

Loading