Loading bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ static const AptxCapabilities kDefaultOffloadAptxHdCapability = { .bitsPerSample = {24}, }; static const Lc3Capabilities kDefaultOffloadLc3Capability = { static const Lc3Capabilities kDefaultA2dpOffloadLc3Capability = { .samplingFrequencyHz = {44100, 48000}, .frameDurationUs = {7500, 10000}, .channelMode = {ChannelMode::MONO, ChannelMode::STEREO}, Loading Loading @@ -285,11 +285,11 @@ bool BluetoothAudioCodecs::IsOffloadLc3ConfigurationValid( const Lc3Configuration lc3_data = codec_specific.get<CodecConfiguration::CodecSpecific::lc3Config>(); if (ContainedInVector(kDefaultOffloadLc3Capability.samplingFrequencyHz, if (ContainedInVector(kDefaultA2dpOffloadLc3Capability.samplingFrequencyHz, lc3_data.samplingFrequencyHz) && ContainedInVector(kDefaultOffloadLc3Capability.frameDurationUs, ContainedInVector(kDefaultA2dpOffloadLc3Capability.frameDurationUs, lc3_data.frameDurationUs) && ContainedInVector(kDefaultOffloadLc3Capability.channelMode, ContainedInVector(kDefaultA2dpOffloadLc3Capability.channelMode, lc3_data.channelMode)) { return true; } Loading Loading @@ -352,7 +352,7 @@ BluetoothAudioCodecs::GetA2dpOffloadCodecCapabilities( case CodecType::LC3: codec_capability.capabilities .set<CodecCapabilities::Capabilities::lc3Capabilities>( kDefaultOffloadLc3Capability); kDefaultA2dpOffloadLc3Capability); break; case CodecType::UNKNOWN: case CodecType::VENDOR: Loading bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.h +1 −7 Original line number Diff line number Diff line Loading @@ -45,11 +45,7 @@ class BluetoothAudioCodecs { const SessionType& session_type, const CodecConfiguration& codec_config); static bool IsOffloadLeAudioConfigurationValid( const SessionType& session_type, const Lc3Configuration& codec_config); static bool IsOffloadLeAudioConfigurationValid( const SessionType& session_type, const LeAudioConfiguration& codec_config); const SessionType& session_type, const LeAudioConfiguration&); static std::vector<LeAudioCodecCapabilitiesSetting> GetLeAudioOffloadCodecCapabilities(const SessionType& session_type); Loading Loading @@ -77,8 +73,6 @@ class BluetoothAudioCodecs { const CodecConfiguration::CodecSpecific& codec_specific); static bool IsOffloadLc3ConfigurationValid( const CodecConfiguration::CodecSpecific& codec_specific); static bool IsOffloadLeAudioConfigurationValid( const SessionType& session_type, const LeAudioCodecConfiguration&); }; } // namespace audio Loading bluetooth/audio/utils/aidl_session/BluetoothAudioSession.cpp +8 −34 Original line number Diff line number Diff line Loading @@ -35,22 +35,8 @@ static constexpr int kFmqReceiveTimeoutMs = static constexpr int kWritePollMs = 1; // polled non-blocking interval static constexpr int kReadPollMs = 1; // polled non-blocking interval const CodecConfiguration BluetoothAudioSession::kInvalidCodecConfiguration = {}; const LeAudioConfiguration kInvalidLeAudioConfiguration = {}; AudioConfiguration BluetoothAudioSession::invalidSoftwareAudioConfiguration = {}; AudioConfiguration BluetoothAudioSession::invalidOffloadAudioConfiguration = {}; AudioConfiguration BluetoothAudioSession::invalidLeOffloadAudioConfig = {}; BluetoothAudioSession::BluetoothAudioSession(const SessionType& session_type) : session_type_(session_type), stack_iface_(nullptr), data_mq_(nullptr) { invalidSoftwareAudioConfiguration.set<AudioConfiguration::pcmConfig>( kInvalidPcmConfiguration); invalidOffloadAudioConfiguration.set<AudioConfiguration::a2dpConfig>( kInvalidCodecConfiguration); invalidLeOffloadAudioConfig.set<AudioConfiguration::leAudioConfig>( kInvalidLeAudioConfiguration); } : session_type_(session_type), stack_iface_(nullptr), data_mq_(nullptr) {} /*** * Loading @@ -72,13 +58,7 @@ void BluetoothAudioSession::OnSessionStarted( } else if (!UpdateDataPath(mq_desc)) { LOG(ERROR) << __func__ << " - SessionType=" << toString(session_type_) << " MqDescriptor Invalid"; if (session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH) { audio_config_ = std::make_unique<AudioConfiguration>( invalidOffloadAudioConfiguration); } else { audio_config_ = std::make_unique<AudioConfiguration>( invalidSoftwareAudioConfiguration); } audio_config_ = nullptr; } else { stack_iface_ = stack_iface; LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_) Loading @@ -91,13 +71,7 @@ void BluetoothAudioSession::OnSessionEnded() { std::lock_guard<std::recursive_mutex> guard(mutex_); bool toggled = IsSessionReady(); LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_); if (session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH) { audio_config_ = std::make_unique<AudioConfiguration>(invalidOffloadAudioConfiguration); } else { audio_config_ = std::make_unique<AudioConfiguration>(invalidSoftwareAudioConfiguration); } audio_config_ = nullptr; stack_iface_ = nullptr; UpdateDataPath(nullptr); if (toggled) { Loading @@ -111,17 +85,17 @@ void BluetoothAudioSession::OnSessionEnded() { * ***/ const AudioConfiguration& BluetoothAudioSession::GetAudioConfig() { const AudioConfiguration BluetoothAudioSession::GetAudioConfig() { std::lock_guard<std::recursive_mutex> guard(mutex_); if (!IsSessionReady()) { switch (session_type_) { case SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH: return invalidOffloadAudioConfiguration; return AudioConfiguration(CodecConfiguration{}); case SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH: case SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH: return invalidLeOffloadAudioConfig; return AudioConfiguration(LeAudioConfiguration{}); default: return invalidSoftwareAudioConfiguration; return AudioConfiguration(PcmConfiguration{}); } } return *audio_config_; Loading Loading @@ -164,7 +138,7 @@ bool BluetoothAudioSession::IsSessionReady() { session_type_ == SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH || (data_mq_ != nullptr && data_mq_->isValid())); return stack_iface_ != nullptr && is_mq_valid; return stack_iface_ != nullptr && is_mq_valid && audio_config_ != nullptr; } /*** Loading bluetooth/audio/utils/aidl_session/BluetoothAudioSession.h +1 −9 Original line number Diff line number Diff line Loading @@ -144,7 +144,7 @@ class BluetoothAudioSession { * The control function is for the bluetooth_audio module to get the current * AudioConfiguration ***/ const AudioConfiguration& GetAudioConfig(); const AudioConfiguration GetAudioConfig(); /*** * The report function is used to report that the Bluetooth stack has notified Loading Loading @@ -173,14 +173,6 @@ class BluetoothAudioSession { // Return if IBluetoothAudioProviderFactory implementation existed static bool IsAidlAvailable(); static constexpr PcmConfiguration kInvalidPcmConfiguration = {}; // can't be constexpr because of non-literal type static const CodecConfiguration kInvalidCodecConfiguration; static AudioConfiguration invalidSoftwareAudioConfiguration; static AudioConfiguration invalidOffloadAudioConfiguration; static AudioConfiguration invalidLeOffloadAudioConfig; private: // using recursive_mutex to allow hwbinder to re-enter again. std::recursive_mutex mutex_; Loading bluetooth/audio/utils/aidl_session/BluetoothAudioSessionControl.h +9 −5 Original line number Diff line number Diff line Loading @@ -79,11 +79,15 @@ class BluetoothAudioSessionControl { BluetoothAudioSessionInstance::GetSessionInstance(session_type); if (session_ptr != nullptr) { return session_ptr->GetAudioConfig(); } else if (session_type == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH) { return BluetoothAudioSession::invalidOffloadAudioConfiguration; } else { return BluetoothAudioSession::invalidSoftwareAudioConfiguration; } switch (session_type) { case SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH: return AudioConfiguration(CodecConfiguration{}); case SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH: case SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH: return AudioConfiguration(LeAudioConfiguration{}); default: return AudioConfiguration(PcmConfiguration{}); } } Loading Loading
bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -78,7 +78,7 @@ static const AptxCapabilities kDefaultOffloadAptxHdCapability = { .bitsPerSample = {24}, }; static const Lc3Capabilities kDefaultOffloadLc3Capability = { static const Lc3Capabilities kDefaultA2dpOffloadLc3Capability = { .samplingFrequencyHz = {44100, 48000}, .frameDurationUs = {7500, 10000}, .channelMode = {ChannelMode::MONO, ChannelMode::STEREO}, Loading Loading @@ -285,11 +285,11 @@ bool BluetoothAudioCodecs::IsOffloadLc3ConfigurationValid( const Lc3Configuration lc3_data = codec_specific.get<CodecConfiguration::CodecSpecific::lc3Config>(); if (ContainedInVector(kDefaultOffloadLc3Capability.samplingFrequencyHz, if (ContainedInVector(kDefaultA2dpOffloadLc3Capability.samplingFrequencyHz, lc3_data.samplingFrequencyHz) && ContainedInVector(kDefaultOffloadLc3Capability.frameDurationUs, ContainedInVector(kDefaultA2dpOffloadLc3Capability.frameDurationUs, lc3_data.frameDurationUs) && ContainedInVector(kDefaultOffloadLc3Capability.channelMode, ContainedInVector(kDefaultA2dpOffloadLc3Capability.channelMode, lc3_data.channelMode)) { return true; } Loading Loading @@ -352,7 +352,7 @@ BluetoothAudioCodecs::GetA2dpOffloadCodecCapabilities( case CodecType::LC3: codec_capability.capabilities .set<CodecCapabilities::Capabilities::lc3Capabilities>( kDefaultOffloadLc3Capability); kDefaultA2dpOffloadLc3Capability); break; case CodecType::UNKNOWN: case CodecType::VENDOR: Loading
bluetooth/audio/utils/aidl_session/BluetoothAudioCodecs.h +1 −7 Original line number Diff line number Diff line Loading @@ -45,11 +45,7 @@ class BluetoothAudioCodecs { const SessionType& session_type, const CodecConfiguration& codec_config); static bool IsOffloadLeAudioConfigurationValid( const SessionType& session_type, const Lc3Configuration& codec_config); static bool IsOffloadLeAudioConfigurationValid( const SessionType& session_type, const LeAudioConfiguration& codec_config); const SessionType& session_type, const LeAudioConfiguration&); static std::vector<LeAudioCodecCapabilitiesSetting> GetLeAudioOffloadCodecCapabilities(const SessionType& session_type); Loading Loading @@ -77,8 +73,6 @@ class BluetoothAudioCodecs { const CodecConfiguration::CodecSpecific& codec_specific); static bool IsOffloadLc3ConfigurationValid( const CodecConfiguration::CodecSpecific& codec_specific); static bool IsOffloadLeAudioConfigurationValid( const SessionType& session_type, const LeAudioCodecConfiguration&); }; } // namespace audio Loading
bluetooth/audio/utils/aidl_session/BluetoothAudioSession.cpp +8 −34 Original line number Diff line number Diff line Loading @@ -35,22 +35,8 @@ static constexpr int kFmqReceiveTimeoutMs = static constexpr int kWritePollMs = 1; // polled non-blocking interval static constexpr int kReadPollMs = 1; // polled non-blocking interval const CodecConfiguration BluetoothAudioSession::kInvalidCodecConfiguration = {}; const LeAudioConfiguration kInvalidLeAudioConfiguration = {}; AudioConfiguration BluetoothAudioSession::invalidSoftwareAudioConfiguration = {}; AudioConfiguration BluetoothAudioSession::invalidOffloadAudioConfiguration = {}; AudioConfiguration BluetoothAudioSession::invalidLeOffloadAudioConfig = {}; BluetoothAudioSession::BluetoothAudioSession(const SessionType& session_type) : session_type_(session_type), stack_iface_(nullptr), data_mq_(nullptr) { invalidSoftwareAudioConfiguration.set<AudioConfiguration::pcmConfig>( kInvalidPcmConfiguration); invalidOffloadAudioConfiguration.set<AudioConfiguration::a2dpConfig>( kInvalidCodecConfiguration); invalidLeOffloadAudioConfig.set<AudioConfiguration::leAudioConfig>( kInvalidLeAudioConfiguration); } : session_type_(session_type), stack_iface_(nullptr), data_mq_(nullptr) {} /*** * Loading @@ -72,13 +58,7 @@ void BluetoothAudioSession::OnSessionStarted( } else if (!UpdateDataPath(mq_desc)) { LOG(ERROR) << __func__ << " - SessionType=" << toString(session_type_) << " MqDescriptor Invalid"; if (session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH) { audio_config_ = std::make_unique<AudioConfiguration>( invalidOffloadAudioConfiguration); } else { audio_config_ = std::make_unique<AudioConfiguration>( invalidSoftwareAudioConfiguration); } audio_config_ = nullptr; } else { stack_iface_ = stack_iface; LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_) Loading @@ -91,13 +71,7 @@ void BluetoothAudioSession::OnSessionEnded() { std::lock_guard<std::recursive_mutex> guard(mutex_); bool toggled = IsSessionReady(); LOG(INFO) << __func__ << " - SessionType=" << toString(session_type_); if (session_type_ == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH) { audio_config_ = std::make_unique<AudioConfiguration>(invalidOffloadAudioConfiguration); } else { audio_config_ = std::make_unique<AudioConfiguration>(invalidSoftwareAudioConfiguration); } audio_config_ = nullptr; stack_iface_ = nullptr; UpdateDataPath(nullptr); if (toggled) { Loading @@ -111,17 +85,17 @@ void BluetoothAudioSession::OnSessionEnded() { * ***/ const AudioConfiguration& BluetoothAudioSession::GetAudioConfig() { const AudioConfiguration BluetoothAudioSession::GetAudioConfig() { std::lock_guard<std::recursive_mutex> guard(mutex_); if (!IsSessionReady()) { switch (session_type_) { case SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH: return invalidOffloadAudioConfiguration; return AudioConfiguration(CodecConfiguration{}); case SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH: case SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH: return invalidLeOffloadAudioConfig; return AudioConfiguration(LeAudioConfiguration{}); default: return invalidSoftwareAudioConfiguration; return AudioConfiguration(PcmConfiguration{}); } } return *audio_config_; Loading Loading @@ -164,7 +138,7 @@ bool BluetoothAudioSession::IsSessionReady() { session_type_ == SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH || (data_mq_ != nullptr && data_mq_->isValid())); return stack_iface_ != nullptr && is_mq_valid; return stack_iface_ != nullptr && is_mq_valid && audio_config_ != nullptr; } /*** Loading
bluetooth/audio/utils/aidl_session/BluetoothAudioSession.h +1 −9 Original line number Diff line number Diff line Loading @@ -144,7 +144,7 @@ class BluetoothAudioSession { * The control function is for the bluetooth_audio module to get the current * AudioConfiguration ***/ const AudioConfiguration& GetAudioConfig(); const AudioConfiguration GetAudioConfig(); /*** * The report function is used to report that the Bluetooth stack has notified Loading Loading @@ -173,14 +173,6 @@ class BluetoothAudioSession { // Return if IBluetoothAudioProviderFactory implementation existed static bool IsAidlAvailable(); static constexpr PcmConfiguration kInvalidPcmConfiguration = {}; // can't be constexpr because of non-literal type static const CodecConfiguration kInvalidCodecConfiguration; static AudioConfiguration invalidSoftwareAudioConfiguration; static AudioConfiguration invalidOffloadAudioConfiguration; static AudioConfiguration invalidLeOffloadAudioConfig; private: // using recursive_mutex to allow hwbinder to re-enter again. std::recursive_mutex mutex_; Loading
bluetooth/audio/utils/aidl_session/BluetoothAudioSessionControl.h +9 −5 Original line number Diff line number Diff line Loading @@ -79,11 +79,15 @@ class BluetoothAudioSessionControl { BluetoothAudioSessionInstance::GetSessionInstance(session_type); if (session_ptr != nullptr) { return session_ptr->GetAudioConfig(); } else if (session_type == SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH) { return BluetoothAudioSession::invalidOffloadAudioConfiguration; } else { return BluetoothAudioSession::invalidSoftwareAudioConfiguration; } switch (session_type) { case SessionType::A2DP_HARDWARE_OFFLOAD_ENCODING_DATAPATH: return AudioConfiguration(CodecConfiguration{}); case SessionType::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH: case SessionType::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH: return AudioConfiguration(LeAudioConfiguration{}); default: return AudioConfiguration(PcmConfiguration{}); } } Loading