Loading system/audio_hal_interface/aidl/le_audio_software_aidl.cc +35 −0 Original line number Diff line number Diff line Loading @@ -168,6 +168,31 @@ void LeAudioTransport::LeAudioSetSelectedHalPcmConfig(uint32_t sample_rate_hz, pcm_config_.dataIntervalUs = data_interval; } void LeAudioTransport::LeAudioSetBroadcastConfig( const ::le_audio::broadcast_offload_config& offload_config) { broadcast_config_.streamMap.resize(0); for (auto& [handle, location] : offload_config.stream_map) { Lc3Configuration lc3_config{ .pcmBitDepth = static_cast<int8_t>(offload_config.bits_per_sample), .samplingFrequencyHz = static_cast<int32_t>(offload_config.sampling_rate), .frameDurationUs = static_cast<int32_t>(offload_config.frame_duration), .octetsPerFrame = static_cast<int32_t>(offload_config.octets_per_frame), .blocksPerSdu = static_cast<int8_t>(offload_config.blocks_per_sdu), }; broadcast_config_.streamMap.push_back({ .streamHandle = handle, .audioChannelAllocation = static_cast<int32_t>(location), .leAudioCodecConfig = std::move(lc3_config), }); } } const LeAudioBroadcastConfiguration& LeAudioTransport::LeAudioGetBroadcastConfig() { return broadcast_config_; } bool LeAudioTransport::IsPendingStartStream(void) { return is_pending_start_request_; } Loading Loading @@ -259,6 +284,16 @@ void LeAudioSinkTransport::LeAudioSetSelectedHalPcmConfig( channels_count, data_interval); } void LeAudioSinkTransport::LeAudioSetBroadcastConfig( const ::le_audio::broadcast_offload_config& offload_config) { transport_->LeAudioSetBroadcastConfig(offload_config); } const LeAudioBroadcastConfiguration& LeAudioSinkTransport::LeAudioGetBroadcastConfig() { return transport_->LeAudioGetBroadcastConfig(); } bool LeAudioSinkTransport::IsPendingStartStream(void) { return transport_->IsPendingStartStream(); } Loading system/audio_hal_interface/aidl/le_audio_software_aidl.h +11 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,11 @@ class LeAudioTransport { uint8_t channels_count, uint32_t data_interval); void LeAudioSetBroadcastConfig( const ::le_audio::broadcast_offload_config& offload_config); const LeAudioBroadcastConfiguration& LeAudioGetBroadcastConfig(); bool IsPendingStartStream(void); void ClearPendingStartStream(void); Loading @@ -106,6 +111,7 @@ class LeAudioTransport { uint64_t total_bytes_processed_; timespec data_position_; PcmConfiguration pcm_config_; LeAudioBroadcastConfiguration broadcast_config_; bool is_pending_start_request_; }; Loading Loading @@ -143,6 +149,11 @@ class LeAudioSinkTransport uint8_t channels_count, uint32_t data_interval); void LeAudioSetBroadcastConfig( const ::le_audio::broadcast_offload_config& offload_config); const LeAudioBroadcastConfiguration& LeAudioGetBroadcastConfig(); bool IsPendingStartStream(void); void ClearPendingStartStream(void); Loading system/audio_hal_interface/le_audio_software.cc +19 −7 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ using AudioConfiguration_2_1 = ::android::hardware::bluetooth::audio::V2_1::AudioConfiguration; using AudioConfigurationAIDL = ::aidl::android::hardware::bluetooth::audio::AudioConfiguration; using ::aidl::android::hardware::bluetooth::audio::LeAudioCodecConfiguration; using ::le_audio::CodecManager; using ::le_audio::set_configurations::AudioSetConfiguration; Loading Loading @@ -170,9 +171,9 @@ void LeAudioClientInterface::Sink::StartSession() { AudioConfigurationAIDL audio_config; if (is_aidl_offload_encoding_session(is_broadcaster_)) { if (is_broadcaster_) { aidl::le_audio::LeAudioBroadcastConfiguration le_audio_config = {}; audio_config.set<AudioConfigurationAIDL::leAudioBroadcastConfig>( le_audio_config); get_aidl_transport_instance(is_broadcaster_) ->LeAudioGetBroadcastConfig()); } else { aidl::le_audio::LeAudioConfiguration le_audio_config = {}; audio_config.set<AudioConfigurationAIDL::leAudioConfig>( Loading Loading @@ -257,12 +258,8 @@ void LeAudioClientInterface::Sink::UpdateAudioConfigToHal( BluetoothAudioHalTransport::HIDL) { return; } if (!is_aidl_offload_encoding_session(is_broadcaster_)) { return; } if (is_broadcaster_) { LOG(WARNING) << __func__ << ", broadcasting not supported"; if (is_broadcaster_ || !is_aidl_offload_encoding_session(is_broadcaster_)) { return; } Loading @@ -271,6 +268,21 @@ void LeAudioClientInterface::Sink::UpdateAudioConfigToHal( aidl::le_audio::offload_config_to_hal_audio_config(offload_config)); } void LeAudioClientInterface::Sink::UpdateBroadcastAudioConfigToHal( const ::le_audio::broadcast_offload_config& offload_config) { if (HalVersionManager::GetHalTransport() == BluetoothAudioHalTransport::HIDL) { return; } if (!is_broadcaster_ || !is_aidl_offload_encoding_session(is_broadcaster_)) { return; } get_aidl_transport_instance(is_broadcaster_) ->LeAudioSetBroadcastConfig(offload_config); } void LeAudioClientInterface::Sink::SuspendedForReconfiguration() { if (HalVersionManager::GetHalTransport() == BluetoothAudioHalTransport::HIDL) { Loading system/audio_hal_interface/le_audio_software.h +2 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,8 @@ class LeAudioClientInterface { void CancelStreamingRequest() override; void UpdateAudioConfigToHal( const ::le_audio::offload_config& config) override; void UpdateBroadcastAudioConfigToHal( const ::le_audio::broadcast_offload_config& config); void SuspendedForReconfiguration() override; // Read the stream of bytes sinked to us by the upper layers size_t Read(uint8_t* p_buf, uint32_t len); Loading system/audio_hal_interface/le_audio_software_host.cc +6 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #include "audio_hal_interface/hal_version_manager.h" #include "audio_hal_interface/le_audio_software.h" #include "bta/le_audio/codec_manager.h" namespace bluetooth { namespace audio { Loading Loading @@ -44,6 +45,11 @@ LeAudioClientInterface::Sink* LeAudioClientInterface::GetSink( return nullptr; } void LeAudioClientInterface::Sink::UpdateBroadcastAudioConfigToHal( ::le_audio::broadcast_offload_config const& config) { return; } size_t LeAudioClientInterface::Sink::Read(uint8_t* p_buf, uint32_t len) { return 0; } Loading Loading
system/audio_hal_interface/aidl/le_audio_software_aidl.cc +35 −0 Original line number Diff line number Diff line Loading @@ -168,6 +168,31 @@ void LeAudioTransport::LeAudioSetSelectedHalPcmConfig(uint32_t sample_rate_hz, pcm_config_.dataIntervalUs = data_interval; } void LeAudioTransport::LeAudioSetBroadcastConfig( const ::le_audio::broadcast_offload_config& offload_config) { broadcast_config_.streamMap.resize(0); for (auto& [handle, location] : offload_config.stream_map) { Lc3Configuration lc3_config{ .pcmBitDepth = static_cast<int8_t>(offload_config.bits_per_sample), .samplingFrequencyHz = static_cast<int32_t>(offload_config.sampling_rate), .frameDurationUs = static_cast<int32_t>(offload_config.frame_duration), .octetsPerFrame = static_cast<int32_t>(offload_config.octets_per_frame), .blocksPerSdu = static_cast<int8_t>(offload_config.blocks_per_sdu), }; broadcast_config_.streamMap.push_back({ .streamHandle = handle, .audioChannelAllocation = static_cast<int32_t>(location), .leAudioCodecConfig = std::move(lc3_config), }); } } const LeAudioBroadcastConfiguration& LeAudioTransport::LeAudioGetBroadcastConfig() { return broadcast_config_; } bool LeAudioTransport::IsPendingStartStream(void) { return is_pending_start_request_; } Loading Loading @@ -259,6 +284,16 @@ void LeAudioSinkTransport::LeAudioSetSelectedHalPcmConfig( channels_count, data_interval); } void LeAudioSinkTransport::LeAudioSetBroadcastConfig( const ::le_audio::broadcast_offload_config& offload_config) { transport_->LeAudioSetBroadcastConfig(offload_config); } const LeAudioBroadcastConfiguration& LeAudioSinkTransport::LeAudioGetBroadcastConfig() { return transport_->LeAudioGetBroadcastConfig(); } bool LeAudioSinkTransport::IsPendingStartStream(void) { return transport_->IsPendingStartStream(); } Loading
system/audio_hal_interface/aidl/le_audio_software_aidl.h +11 −0 Original line number Diff line number Diff line Loading @@ -96,6 +96,11 @@ class LeAudioTransport { uint8_t channels_count, uint32_t data_interval); void LeAudioSetBroadcastConfig( const ::le_audio::broadcast_offload_config& offload_config); const LeAudioBroadcastConfiguration& LeAudioGetBroadcastConfig(); bool IsPendingStartStream(void); void ClearPendingStartStream(void); Loading @@ -106,6 +111,7 @@ class LeAudioTransport { uint64_t total_bytes_processed_; timespec data_position_; PcmConfiguration pcm_config_; LeAudioBroadcastConfiguration broadcast_config_; bool is_pending_start_request_; }; Loading Loading @@ -143,6 +149,11 @@ class LeAudioSinkTransport uint8_t channels_count, uint32_t data_interval); void LeAudioSetBroadcastConfig( const ::le_audio::broadcast_offload_config& offload_config); const LeAudioBroadcastConfiguration& LeAudioGetBroadcastConfig(); bool IsPendingStartStream(void); void ClearPendingStartStream(void); Loading
system/audio_hal_interface/le_audio_software.cc +19 −7 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ using AudioConfiguration_2_1 = ::android::hardware::bluetooth::audio::V2_1::AudioConfiguration; using AudioConfigurationAIDL = ::aidl::android::hardware::bluetooth::audio::AudioConfiguration; using ::aidl::android::hardware::bluetooth::audio::LeAudioCodecConfiguration; using ::le_audio::CodecManager; using ::le_audio::set_configurations::AudioSetConfiguration; Loading Loading @@ -170,9 +171,9 @@ void LeAudioClientInterface::Sink::StartSession() { AudioConfigurationAIDL audio_config; if (is_aidl_offload_encoding_session(is_broadcaster_)) { if (is_broadcaster_) { aidl::le_audio::LeAudioBroadcastConfiguration le_audio_config = {}; audio_config.set<AudioConfigurationAIDL::leAudioBroadcastConfig>( le_audio_config); get_aidl_transport_instance(is_broadcaster_) ->LeAudioGetBroadcastConfig()); } else { aidl::le_audio::LeAudioConfiguration le_audio_config = {}; audio_config.set<AudioConfigurationAIDL::leAudioConfig>( Loading Loading @@ -257,12 +258,8 @@ void LeAudioClientInterface::Sink::UpdateAudioConfigToHal( BluetoothAudioHalTransport::HIDL) { return; } if (!is_aidl_offload_encoding_session(is_broadcaster_)) { return; } if (is_broadcaster_) { LOG(WARNING) << __func__ << ", broadcasting not supported"; if (is_broadcaster_ || !is_aidl_offload_encoding_session(is_broadcaster_)) { return; } Loading @@ -271,6 +268,21 @@ void LeAudioClientInterface::Sink::UpdateAudioConfigToHal( aidl::le_audio::offload_config_to_hal_audio_config(offload_config)); } void LeAudioClientInterface::Sink::UpdateBroadcastAudioConfigToHal( const ::le_audio::broadcast_offload_config& offload_config) { if (HalVersionManager::GetHalTransport() == BluetoothAudioHalTransport::HIDL) { return; } if (!is_broadcaster_ || !is_aidl_offload_encoding_session(is_broadcaster_)) { return; } get_aidl_transport_instance(is_broadcaster_) ->LeAudioSetBroadcastConfig(offload_config); } void LeAudioClientInterface::Sink::SuspendedForReconfiguration() { if (HalVersionManager::GetHalTransport() == BluetoothAudioHalTransport::HIDL) { Loading
system/audio_hal_interface/le_audio_software.h +2 −0 Original line number Diff line number Diff line Loading @@ -92,6 +92,8 @@ class LeAudioClientInterface { void CancelStreamingRequest() override; void UpdateAudioConfigToHal( const ::le_audio::offload_config& config) override; void UpdateBroadcastAudioConfigToHal( const ::le_audio::broadcast_offload_config& config); void SuspendedForReconfiguration() override; // Read the stream of bytes sinked to us by the upper layers size_t Read(uint8_t* p_buf, uint32_t len); Loading
system/audio_hal_interface/le_audio_software_host.cc +6 −0 Original line number Diff line number Diff line Loading @@ -17,6 +17,7 @@ #include "audio_hal_interface/hal_version_manager.h" #include "audio_hal_interface/le_audio_software.h" #include "bta/le_audio/codec_manager.h" namespace bluetooth { namespace audio { Loading Loading @@ -44,6 +45,11 @@ LeAudioClientInterface::Sink* LeAudioClientInterface::GetSink( return nullptr; } void LeAudioClientInterface::Sink::UpdateBroadcastAudioConfigToHal( ::le_audio::broadcast_offload_config const& config) { return; } size_t LeAudioClientInterface::Sink::Read(uint8_t* p_buf, uint32_t len) { return 0; } Loading