Loading system/bta/le_audio/broadcaster/broadcaster_types.h +6 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,12 @@ struct BroadcastSubgroupCodecConfig { return 0; } /* Note: this should be used for tests only */ const std::vector<BroadcastSubgroupBisCodecConfig>& GetBisCodecConfigs() const { return bis_codec_configs_; } std::optional<types::LeAudioLtvMap> GetBisCodecSpecData( uint8_t bis_idx) const { if (bis_codec_configs_.empty()) return std::nullopt; Loading system/bta/le_audio/codec_manager.cc +5 −3 Original line number Diff line number Diff line Loading @@ -303,10 +303,12 @@ struct codec_manager_impl { core_config.GetChannelCountPerIsoStream()); // Enable the individual channels per BIS in the stream map auto all_channels = adsp_config.codec.channel_count_per_iso_stream; uint8_t channel_alloc_idx = 0; for (auto& [_, channels] : broadcast_config.stream_map) { for (uint8_t i = 0; i < adsp_config.codec.channel_count_per_iso_stream; ++i) { channels |= (0b1 << i); if (all_channels) { channels |= (0b1 << channel_alloc_idx++); --all_channels; } } Loading system/bta/le_audio/codec_manager_test.cc +39 −2 Original line number Diff line number Diff line Loading @@ -490,9 +490,23 @@ TEST_F(CodecManagerTestAdsp, test_capabilities) { } TEST_F(CodecManagerTestAdsp, test_broadcast_config) { static const set_configurations::CodecConfigSetting bc_lc3_48_2 = { .id = kLeAudioCodecIdLc3, .params = types::LeAudioLtvMap({ LTV_ENTRY_SAMPLING_FREQUENCY( codec_spec_conf::kLeAudioSamplingFreq48000Hz), LTV_ENTRY_FRAME_DURATION( codec_spec_conf::kLeAudioCodecFrameDur10000us), LTV_ENTRY_AUDIO_CHANNEL_ALLOCATION( codec_spec_conf::kLeAudioLocationStereo), LTV_ENTRY_OCTETS_PER_CODEC_FRAME(100), }), .channel_count_per_iso_stream = 2, }; std::vector<AudioSetConfiguration> offload_capabilities = { {.name = "Test_Broadcast_Config_No_Dev_lc3_48_2", .confs = {.sink = {set_configurations::AseConfiguration(lc3_48_2)}, .confs = {.sink = {set_configurations::AseConfiguration(bc_lc3_48_2)}, .source = {}}, .topology_info = {{{0, 0}}}}}; set_mock_offload_capabilities(offload_capabilities); Loading @@ -510,14 +524,37 @@ TEST_F(CodecManagerTestAdsp, test_broadcast_config) { ASSERT_EQ(48000u, cfg->GetSamplingFrequencyHzMax()); ASSERT_EQ(10000u, cfg->GetSduIntervalUs()); ASSERT_EQ(100u, cfg->GetMaxSduOctets()); ASSERT_EQ(1lu, cfg->subgroups.size()); ASSERT_EQ(2lu, cfg->subgroups.at(0).GetNumBis()); ASSERT_EQ(2lu, cfg->subgroups.at(0).GetNumChannelsTotal()); ASSERT_EQ(2lu, cfg->subgroups.at(0).GetBisCodecConfigs().at(0).GetNumBis()); ASSERT_EQ(2lu, cfg->subgroups.at(0).GetBisCodecConfigs().at(0).GetNumChannels()); ASSERT_EQ( 1lu, cfg->subgroups.at(0).GetBisCodecConfigs().at(0).GetNumChannelsPerBis()); // Clean up the before testing any other offload capabilities. codec_manager->Stop(); } TEST_F(CodecManagerTestAdsp, test_update_broadcast_offloader) { static const set_configurations::CodecConfigSetting bc_lc3_48_2 = { .id = kLeAudioCodecIdLc3, .params = types::LeAudioLtvMap({ LTV_ENTRY_SAMPLING_FREQUENCY( codec_spec_conf::kLeAudioSamplingFreq48000Hz), LTV_ENTRY_FRAME_DURATION( codec_spec_conf::kLeAudioCodecFrameDur10000us), LTV_ENTRY_AUDIO_CHANNEL_ALLOCATION( codec_spec_conf::kLeAudioLocationStereo), LTV_ENTRY_OCTETS_PER_CODEC_FRAME(100), }), .channel_count_per_iso_stream = 2, }; std::vector<AudioSetConfiguration> offload_capabilities = { {.confs = {.sink = {set_configurations::AseConfiguration(lc3_48_2)}, {.confs = {.sink = {set_configurations::AseConfiguration(bc_lc3_48_2)}, .source = {}}, .topology_info = {{{0, 0}}}}}; set_mock_offload_capabilities(offload_capabilities); Loading Loading
system/bta/le_audio/broadcaster/broadcaster_types.h +6 −0 Original line number Diff line number Diff line Loading @@ -194,6 +194,12 @@ struct BroadcastSubgroupCodecConfig { return 0; } /* Note: this should be used for tests only */ const std::vector<BroadcastSubgroupBisCodecConfig>& GetBisCodecConfigs() const { return bis_codec_configs_; } std::optional<types::LeAudioLtvMap> GetBisCodecSpecData( uint8_t bis_idx) const { if (bis_codec_configs_.empty()) return std::nullopt; Loading
system/bta/le_audio/codec_manager.cc +5 −3 Original line number Diff line number Diff line Loading @@ -303,10 +303,12 @@ struct codec_manager_impl { core_config.GetChannelCountPerIsoStream()); // Enable the individual channels per BIS in the stream map auto all_channels = adsp_config.codec.channel_count_per_iso_stream; uint8_t channel_alloc_idx = 0; for (auto& [_, channels] : broadcast_config.stream_map) { for (uint8_t i = 0; i < adsp_config.codec.channel_count_per_iso_stream; ++i) { channels |= (0b1 << i); if (all_channels) { channels |= (0b1 << channel_alloc_idx++); --all_channels; } } Loading
system/bta/le_audio/codec_manager_test.cc +39 −2 Original line number Diff line number Diff line Loading @@ -490,9 +490,23 @@ TEST_F(CodecManagerTestAdsp, test_capabilities) { } TEST_F(CodecManagerTestAdsp, test_broadcast_config) { static const set_configurations::CodecConfigSetting bc_lc3_48_2 = { .id = kLeAudioCodecIdLc3, .params = types::LeAudioLtvMap({ LTV_ENTRY_SAMPLING_FREQUENCY( codec_spec_conf::kLeAudioSamplingFreq48000Hz), LTV_ENTRY_FRAME_DURATION( codec_spec_conf::kLeAudioCodecFrameDur10000us), LTV_ENTRY_AUDIO_CHANNEL_ALLOCATION( codec_spec_conf::kLeAudioLocationStereo), LTV_ENTRY_OCTETS_PER_CODEC_FRAME(100), }), .channel_count_per_iso_stream = 2, }; std::vector<AudioSetConfiguration> offload_capabilities = { {.name = "Test_Broadcast_Config_No_Dev_lc3_48_2", .confs = {.sink = {set_configurations::AseConfiguration(lc3_48_2)}, .confs = {.sink = {set_configurations::AseConfiguration(bc_lc3_48_2)}, .source = {}}, .topology_info = {{{0, 0}}}}}; set_mock_offload_capabilities(offload_capabilities); Loading @@ -510,14 +524,37 @@ TEST_F(CodecManagerTestAdsp, test_broadcast_config) { ASSERT_EQ(48000u, cfg->GetSamplingFrequencyHzMax()); ASSERT_EQ(10000u, cfg->GetSduIntervalUs()); ASSERT_EQ(100u, cfg->GetMaxSduOctets()); ASSERT_EQ(1lu, cfg->subgroups.size()); ASSERT_EQ(2lu, cfg->subgroups.at(0).GetNumBis()); ASSERT_EQ(2lu, cfg->subgroups.at(0).GetNumChannelsTotal()); ASSERT_EQ(2lu, cfg->subgroups.at(0).GetBisCodecConfigs().at(0).GetNumBis()); ASSERT_EQ(2lu, cfg->subgroups.at(0).GetBisCodecConfigs().at(0).GetNumChannels()); ASSERT_EQ( 1lu, cfg->subgroups.at(0).GetBisCodecConfigs().at(0).GetNumChannelsPerBis()); // Clean up the before testing any other offload capabilities. codec_manager->Stop(); } TEST_F(CodecManagerTestAdsp, test_update_broadcast_offloader) { static const set_configurations::CodecConfigSetting bc_lc3_48_2 = { .id = kLeAudioCodecIdLc3, .params = types::LeAudioLtvMap({ LTV_ENTRY_SAMPLING_FREQUENCY( codec_spec_conf::kLeAudioSamplingFreq48000Hz), LTV_ENTRY_FRAME_DURATION( codec_spec_conf::kLeAudioCodecFrameDur10000us), LTV_ENTRY_AUDIO_CHANNEL_ALLOCATION( codec_spec_conf::kLeAudioLocationStereo), LTV_ENTRY_OCTETS_PER_CODEC_FRAME(100), }), .channel_count_per_iso_stream = 2, }; std::vector<AudioSetConfiguration> offload_capabilities = { {.confs = {.sink = {set_configurations::AseConfiguration(lc3_48_2)}, {.confs = {.sink = {set_configurations::AseConfiguration(bc_lc3_48_2)}, .source = {}}, .topology_info = {{{0, 0}}}}}; set_mock_offload_capabilities(offload_capabilities); Loading