Loading bluetooth/audio/2.2/default/BluetoothAudioProvidersFactory.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -233,7 +233,7 @@ Return<void> BluetoothAudioProvidersFactory::getProviderCapabilities_2_2( LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH || sessionType == V2_1::SessionType:: LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH) { std::vector<LeAudioCodecCapabilitiesPair> db_codec_capabilities = std::vector<LeAudioCodecCapabilitiesSetting> db_codec_capabilities = android::bluetooth::audio::GetLeAudioOffloadCodecCapabilities( sessionType); if (db_codec_capabilities.size()) { Loading bluetooth/audio/2.2/types.hal +22 −9 Original line number Diff line number Diff line Loading @@ -83,23 +83,22 @@ safe_union AudioConfiguration { safe_union AudioCapabilities { PcmParameters pcmCapabilities; CodecCapabilities codecCapabilities; LeAudioCodecCapabilitiesPair leAudioCapabilities; LeAudioCodecCapabilitiesSetting leAudioCapabilities; }; /** * Used to specify th le audio capabilities pair of the Hardware offload encode and decode. * Used to specify the le audio capabilities for unicast and broadcast hardware offload. */ struct LeAudioCodecCapabilitiesPair{ LeAudioMode mode; LeAudioCodecCapability encodeCapability; LeAudioCodecCapability decodeCapability; struct LeAudioCodecCapabilitiesSetting{ UnicastCapability unicastEncodeCapability; UnicastCapability unicastDecodeCapability; BroadcastCapability broadcastCapability; }; /** * Used to specify the le audio capabilities of the codecs supported by Hardware offload * for encode or decode. * Used to specify the le audio unicast codec capabilities for hardware offload. */ struct LeAudioCodecCapability { struct UnicastCapability { CodecType codecType; AudioLocation supportedChannel; Loading @@ -112,3 +111,17 @@ struct LeAudioCodecCapability { // Should use safe union when there is more than one codec Lc3Parameters capabilities; }; /** * Used to specify the le audio broadcast codec capabilities for hardware offload. */ struct BroadcastCapability { CodecType codecType; AudioLocation supportedChannel; // Supported channel count for each stream uint8_t channelCountPerStream; // Should use safe union when there is more than one codec vec<Lc3Parameters> capabilities; }; bluetooth/audio/utils/session/BluetoothAudioSupportedCodecsDB_2_2.cpp +32 −28 Original line number Diff line number Diff line Loading @@ -30,16 +30,20 @@ using ::android::hardware::bluetooth::audio::V2_1::Lc3FrameDuration; using ::android::hardware::bluetooth::audio::V2_1::Lc3Parameters; using ::android::hardware::bluetooth::audio::V2_1::SampleRate; using ::android::hardware::bluetooth::audio::V2_2::AudioLocation; using ::android::hardware::bluetooth::audio::V2_2::LeAudioCodecCapabilitiesPair; using ::android::hardware::bluetooth::audio::V2_2::LeAudioCodecCapability; using ::android::hardware::bluetooth::audio::V2_2::LeAudioMode; using ::android::hardware::bluetooth::audio::V2_2::BroadcastCapability; using ::android::hardware::bluetooth::audio::V2_2:: LeAudioCodecCapabilitiesSetting; using ::android::hardware::bluetooth::audio::V2_2::UnicastCapability; using SessionType_2_1 = ::android::hardware::bluetooth::audio::V2_1::SessionType; // Stores the list of offload supported capability std::vector<LeAudioCodecCapabilitiesPair> kDefaultOffloadLeAudioCapabilities; std::vector<LeAudioCodecCapabilitiesSetting> kDefaultOffloadLeAudioCapabilities; static const LeAudioCodecCapability kInvalidLc3Capability = { static const UnicastCapability kInvalidUnicastCapability = { .codecType = CodecType::UNKNOWN}; static const BroadcastCapability kInvalidBroadcastCapability = { .codecType = CodecType::UNKNOWN}; // Default Supported Codecs Loading Loading @@ -94,53 +98,53 @@ bool IsOffloadLeAudioConfigurationValid( return true; } LeAudioCodecCapability composeLc3Capability(AudioLocation audioLocation, UnicastCapability composeUnicastLc3Capability(AudioLocation audioLocation, uint8_t deviceCnt, uint8_t channelCount, Lc3Parameters capability) { return LeAudioCodecCapability{.codecType = CodecType::LC3, return UnicastCapability{.codecType = CodecType::LC3, .supportedChannel = audioLocation, .deviceCount = deviceCnt, .channelCountPerDevice = channelCount, .capabilities = capability}; } std::vector<LeAudioCodecCapabilitiesPair> GetLeAudioOffloadCodecCapabilities( std::vector<LeAudioCodecCapabilitiesSetting> GetLeAudioOffloadCodecCapabilities( const SessionType_2_1& session_type) { if (session_type != SessionType_2_1::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH && session_type != SessionType_2_1::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH) { return std::vector<LeAudioCodecCapabilitiesPair>(0); return std::vector<LeAudioCodecCapabilitiesSetting>(0); } if (kDefaultOffloadLeAudioCapabilities.empty()) { for (auto [audioLocation, deviceCnt, channelCount] : supportedDeviceSetting) { for (auto capability : supportedLc3CapabilityList) { LeAudioCodecCapability lc3Capability = composeLc3Capability( UnicastCapability lc3Capability = composeUnicastLc3Capability( audioLocation, deviceCnt, channelCount, capability); LeAudioCodecCapability lc3MonoCapability = composeLc3Capability(monoAudio, 1, 1, capability); UnicastCapability lc3MonoDecodeCapability = composeUnicastLc3Capability(monoAudio, 1, 1, capability); // Adds the capability for encode only kDefaultOffloadLeAudioCapabilities.push_back( {.mode = LeAudioMode::UNICAST, .encodeCapability = lc3Capability, .decodeCapability = kInvalidLc3Capability}); {.unicastEncodeCapability = lc3Capability, .unicastDecodeCapability = kInvalidUnicastCapability, .broadcastCapability = kInvalidBroadcastCapability}); // Adds the capability for decode only kDefaultOffloadLeAudioCapabilities.push_back( {.mode = LeAudioMode::UNICAST, .encodeCapability = kInvalidLc3Capability, .decodeCapability = lc3Capability}); {.unicastEncodeCapability = kInvalidUnicastCapability, .unicastDecodeCapability = lc3Capability, .broadcastCapability = kInvalidBroadcastCapability}); // Adds the capability for the case that encode and decode exist at the // same time kDefaultOffloadLeAudioCapabilities.push_back( {.mode = LeAudioMode::UNICAST, .encodeCapability = lc3Capability, .decodeCapability = lc3MonoCapability}); {.unicastEncodeCapability = lc3Capability, .unicastDecodeCapability = lc3MonoDecodeCapability, .broadcastCapability = kInvalidBroadcastCapability}); } } } Loading bluetooth/audio/utils/session/BluetoothAudioSupportedCodecsDB_2_2.h +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ bool IsOffloadLeAudioConfigurationValid( const ::android::hardware::bluetooth::audio::V2_2::LeAudioConfiguration& le_audio_codec_config); std::vector<hardware::bluetooth::audio::V2_2::LeAudioCodecCapabilitiesPair> std::vector<hardware::bluetooth::audio::V2_2::LeAudioCodecCapabilitiesSetting> GetLeAudioOffloadCodecCapabilities( const ::android::hardware::bluetooth::audio::V2_1::SessionType& session_type); Loading Loading
bluetooth/audio/2.2/default/BluetoothAudioProvidersFactory.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -233,7 +233,7 @@ Return<void> BluetoothAudioProvidersFactory::getProviderCapabilities_2_2( LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH || sessionType == V2_1::SessionType:: LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH) { std::vector<LeAudioCodecCapabilitiesPair> db_codec_capabilities = std::vector<LeAudioCodecCapabilitiesSetting> db_codec_capabilities = android::bluetooth::audio::GetLeAudioOffloadCodecCapabilities( sessionType); if (db_codec_capabilities.size()) { Loading
bluetooth/audio/2.2/types.hal +22 −9 Original line number Diff line number Diff line Loading @@ -83,23 +83,22 @@ safe_union AudioConfiguration { safe_union AudioCapabilities { PcmParameters pcmCapabilities; CodecCapabilities codecCapabilities; LeAudioCodecCapabilitiesPair leAudioCapabilities; LeAudioCodecCapabilitiesSetting leAudioCapabilities; }; /** * Used to specify th le audio capabilities pair of the Hardware offload encode and decode. * Used to specify the le audio capabilities for unicast and broadcast hardware offload. */ struct LeAudioCodecCapabilitiesPair{ LeAudioMode mode; LeAudioCodecCapability encodeCapability; LeAudioCodecCapability decodeCapability; struct LeAudioCodecCapabilitiesSetting{ UnicastCapability unicastEncodeCapability; UnicastCapability unicastDecodeCapability; BroadcastCapability broadcastCapability; }; /** * Used to specify the le audio capabilities of the codecs supported by Hardware offload * for encode or decode. * Used to specify the le audio unicast codec capabilities for hardware offload. */ struct LeAudioCodecCapability { struct UnicastCapability { CodecType codecType; AudioLocation supportedChannel; Loading @@ -112,3 +111,17 @@ struct LeAudioCodecCapability { // Should use safe union when there is more than one codec Lc3Parameters capabilities; }; /** * Used to specify the le audio broadcast codec capabilities for hardware offload. */ struct BroadcastCapability { CodecType codecType; AudioLocation supportedChannel; // Supported channel count for each stream uint8_t channelCountPerStream; // Should use safe union when there is more than one codec vec<Lc3Parameters> capabilities; };
bluetooth/audio/utils/session/BluetoothAudioSupportedCodecsDB_2_2.cpp +32 −28 Original line number Diff line number Diff line Loading @@ -30,16 +30,20 @@ using ::android::hardware::bluetooth::audio::V2_1::Lc3FrameDuration; using ::android::hardware::bluetooth::audio::V2_1::Lc3Parameters; using ::android::hardware::bluetooth::audio::V2_1::SampleRate; using ::android::hardware::bluetooth::audio::V2_2::AudioLocation; using ::android::hardware::bluetooth::audio::V2_2::LeAudioCodecCapabilitiesPair; using ::android::hardware::bluetooth::audio::V2_2::LeAudioCodecCapability; using ::android::hardware::bluetooth::audio::V2_2::LeAudioMode; using ::android::hardware::bluetooth::audio::V2_2::BroadcastCapability; using ::android::hardware::bluetooth::audio::V2_2:: LeAudioCodecCapabilitiesSetting; using ::android::hardware::bluetooth::audio::V2_2::UnicastCapability; using SessionType_2_1 = ::android::hardware::bluetooth::audio::V2_1::SessionType; // Stores the list of offload supported capability std::vector<LeAudioCodecCapabilitiesPair> kDefaultOffloadLeAudioCapabilities; std::vector<LeAudioCodecCapabilitiesSetting> kDefaultOffloadLeAudioCapabilities; static const LeAudioCodecCapability kInvalidLc3Capability = { static const UnicastCapability kInvalidUnicastCapability = { .codecType = CodecType::UNKNOWN}; static const BroadcastCapability kInvalidBroadcastCapability = { .codecType = CodecType::UNKNOWN}; // Default Supported Codecs Loading Loading @@ -94,53 +98,53 @@ bool IsOffloadLeAudioConfigurationValid( return true; } LeAudioCodecCapability composeLc3Capability(AudioLocation audioLocation, UnicastCapability composeUnicastLc3Capability(AudioLocation audioLocation, uint8_t deviceCnt, uint8_t channelCount, Lc3Parameters capability) { return LeAudioCodecCapability{.codecType = CodecType::LC3, return UnicastCapability{.codecType = CodecType::LC3, .supportedChannel = audioLocation, .deviceCount = deviceCnt, .channelCountPerDevice = channelCount, .capabilities = capability}; } std::vector<LeAudioCodecCapabilitiesPair> GetLeAudioOffloadCodecCapabilities( std::vector<LeAudioCodecCapabilitiesSetting> GetLeAudioOffloadCodecCapabilities( const SessionType_2_1& session_type) { if (session_type != SessionType_2_1::LE_AUDIO_HARDWARE_OFFLOAD_ENCODING_DATAPATH && session_type != SessionType_2_1::LE_AUDIO_HARDWARE_OFFLOAD_DECODING_DATAPATH) { return std::vector<LeAudioCodecCapabilitiesPair>(0); return std::vector<LeAudioCodecCapabilitiesSetting>(0); } if (kDefaultOffloadLeAudioCapabilities.empty()) { for (auto [audioLocation, deviceCnt, channelCount] : supportedDeviceSetting) { for (auto capability : supportedLc3CapabilityList) { LeAudioCodecCapability lc3Capability = composeLc3Capability( UnicastCapability lc3Capability = composeUnicastLc3Capability( audioLocation, deviceCnt, channelCount, capability); LeAudioCodecCapability lc3MonoCapability = composeLc3Capability(monoAudio, 1, 1, capability); UnicastCapability lc3MonoDecodeCapability = composeUnicastLc3Capability(monoAudio, 1, 1, capability); // Adds the capability for encode only kDefaultOffloadLeAudioCapabilities.push_back( {.mode = LeAudioMode::UNICAST, .encodeCapability = lc3Capability, .decodeCapability = kInvalidLc3Capability}); {.unicastEncodeCapability = lc3Capability, .unicastDecodeCapability = kInvalidUnicastCapability, .broadcastCapability = kInvalidBroadcastCapability}); // Adds the capability for decode only kDefaultOffloadLeAudioCapabilities.push_back( {.mode = LeAudioMode::UNICAST, .encodeCapability = kInvalidLc3Capability, .decodeCapability = lc3Capability}); {.unicastEncodeCapability = kInvalidUnicastCapability, .unicastDecodeCapability = lc3Capability, .broadcastCapability = kInvalidBroadcastCapability}); // Adds the capability for the case that encode and decode exist at the // same time kDefaultOffloadLeAudioCapabilities.push_back( {.mode = LeAudioMode::UNICAST, .encodeCapability = lc3Capability, .decodeCapability = lc3MonoCapability}); {.unicastEncodeCapability = lc3Capability, .unicastDecodeCapability = lc3MonoDecodeCapability, .broadcastCapability = kInvalidBroadcastCapability}); } } } Loading
bluetooth/audio/utils/session/BluetoothAudioSupportedCodecsDB_2_2.h +1 −1 Original line number Diff line number Diff line Loading @@ -31,7 +31,7 @@ bool IsOffloadLeAudioConfigurationValid( const ::android::hardware::bluetooth::audio::V2_2::LeAudioConfiguration& le_audio_codec_config); std::vector<hardware::bluetooth::audio::V2_2::LeAudioCodecCapabilitiesPair> std::vector<hardware::bluetooth::audio::V2_2::LeAudioCodecCapabilitiesSetting> GetLeAudioOffloadCodecCapabilities( const ::android::hardware::bluetooth::audio::V2_1::SessionType& session_type); Loading