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