Loading system/bta/le_audio/broadcaster/broadcaster.cc +3 −2 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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. Loading system/bta/le_audio/broadcaster/broadcaster_test.cc +2 −2 Original line number Diff line number Diff line Loading @@ -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()) Loading Loading @@ -645,7 +645,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; Loading system/bta/le_audio/broadcaster/broadcaster_types.cc +1 −16 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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) { Loading @@ -400,7 +386,6 @@ std::ostream& operator<<( << ", SampleRate=" << +config.GetSampleRate() << ", BitsPerSample=" << +config.GetBitsPerSample() << ", DataIntervalUs=" << +config.GetDataIntervalUs() << "}"; os << ", Bitrate=" << +config.GetBitrate(); os << "]"; return os; } Loading system/bta/le_audio/broadcaster/broadcaster_types.h +6 −11 Original line number Diff line number Diff line Loading @@ -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!"; Loading @@ -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; }; Loading @@ -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: " Loading @@ -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; Loading @@ -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; }; Loading system/bta/le_audio/codec_manager.cc +1 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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 Loading
system/bta/le_audio/broadcaster/broadcaster.cc +3 −2 Original line number Diff line number Diff line Loading @@ -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); Loading Loading @@ -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. Loading
system/bta/le_audio/broadcaster/broadcaster_test.cc +2 −2 Original line number Diff line number Diff line Loading @@ -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()) Loading Loading @@ -645,7 +645,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; Loading
system/bta/le_audio/broadcaster/broadcaster_types.cc +1 −16 Original line number Diff line number Diff line Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading @@ -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); Loading Loading @@ -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) { Loading @@ -400,7 +386,6 @@ std::ostream& operator<<( << ", SampleRate=" << +config.GetSampleRate() << ", BitsPerSample=" << +config.GetBitsPerSample() << ", DataIntervalUs=" << +config.GetDataIntervalUs() << "}"; os << ", Bitrate=" << +config.GetBitrate(); os << "]"; return os; } Loading
system/bta/le_audio/broadcaster/broadcaster_types.h +6 −11 Original line number Diff line number Diff line Loading @@ -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!"; Loading @@ -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; }; Loading @@ -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: " Loading @@ -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; Loading @@ -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; }; Loading
system/bta/le_audio/codec_manager.cc +1 −7 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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