Loading media/libaudioclient/AidlConversion.cpp +105 −0 Original line number Diff line number Diff line Loading @@ -1918,6 +1918,9 @@ aidl2legacy_AudioProfile_audio_profile(const media::AudioProfile& aidl) { convertRange(aidl.channelMasks.begin(), aidl.channelMasks.end(), legacy.channel_masks, aidl2legacy_int32_t_audio_channel_mask_t)); legacy.num_channel_masks = aidl.channelMasks.size(); legacy.encapsulation_type = VALUE_OR_RETURN( aidl2legacy_AudioEncapsulationType_audio_encapsulation_type_t(aidl.encapsulationType)); return legacy; } Loading @@ -1941,6 +1944,10 @@ legacy2aidl_audio_profile_AudioProfile(const audio_profile& legacy) { convertRange(legacy.channel_masks, legacy.channel_masks + legacy.num_channel_masks, std::back_inserter(aidl.channelMasks), legacy2aidl_audio_channel_mask_t_int32_t)); aidl.encapsulationType = VALUE_OR_RETURN( legacy2aidl_audio_encapsulation_type_t_AudioEncapsulationType( legacy.encapsulation_type)); return aidl; } Loading Loading @@ -1989,6 +1996,15 @@ aidl2legacy_AudioPort_audio_port_v7(const media::AudioPort& aidl) { aidl2legacy_AudioProfile_audio_profile)); legacy.num_audio_profiles = aidl.profiles.size(); if (aidl.extraAudioDescriptors.size() > std::size(legacy.extra_audio_descriptors)) { return unexpected(BAD_VALUE); } RETURN_IF_ERROR( convertRange(aidl.extraAudioDescriptors.begin(), aidl.extraAudioDescriptors.end(), legacy.extra_audio_descriptors, aidl2legacy_ExtraAudioDescriptor_audio_extra_audio_descriptor)); legacy.num_extra_audio_descriptors = aidl.extraAudioDescriptors.size(); if (aidl.gains.size() > std::size(legacy.gains)) { return unexpected(BAD_VALUE); } Loading Loading @@ -2018,6 +2034,15 @@ legacy2aidl_audio_port_v7_AudioPort(const audio_port_v7& legacy) { std::back_inserter(aidl.profiles), legacy2aidl_audio_profile_AudioProfile)); if (legacy.num_extra_audio_descriptors > std::size(legacy.extra_audio_descriptors)) { return unexpected(BAD_VALUE); } RETURN_IF_ERROR( convertRange(legacy.extra_audio_descriptors, legacy.extra_audio_descriptors + legacy.num_extra_audio_descriptors, std::back_inserter(aidl.extraAudioDescriptors), legacy2aidl_audio_extra_audio_descriptor_ExtraAudioDescriptor)); if (legacy.num_gains > std::size(legacy.gains)) { return unexpected(BAD_VALUE); } Loading Loading @@ -2218,4 +2243,84 @@ legacy2aidl_audio_playback_rate_t_AudioPlaybackRate(const audio_playback_rate_t& return aidl; } ConversionResult<audio_standard_t> aidl2legacy_AudioStandard_audio_standard_t(media::AudioStandard aidl) { switch (aidl) { case media::AudioStandard::NONE: return AUDIO_STANDARD_NONE; case media::AudioStandard::EDID: return AUDIO_STANDARD_EDID; } return unexpected(BAD_VALUE); } ConversionResult<media::AudioStandard> legacy2aidl_audio_standard_t_AudioStandard(audio_standard_t legacy) { switch (legacy) { case AUDIO_STANDARD_NONE: return media::AudioStandard::NONE; case AUDIO_STANDARD_EDID: return media::AudioStandard::EDID; } return unexpected(BAD_VALUE); } ConversionResult<audio_extra_audio_descriptor> aidl2legacy_ExtraAudioDescriptor_audio_extra_audio_descriptor( const media::ExtraAudioDescriptor& aidl) { audio_extra_audio_descriptor legacy; legacy.standard = VALUE_OR_RETURN(aidl2legacy_AudioStandard_audio_standard_t(aidl.standard)); if (aidl.audioDescriptor.size() > EXTRA_AUDIO_DESCRIPTOR_SIZE) { return unexpected(BAD_VALUE); } legacy.descriptor_length = aidl.audioDescriptor.size(); std::copy(aidl.audioDescriptor.begin(), aidl.audioDescriptor.end(), std::begin(legacy.descriptor)); legacy.encapsulation_type = VALUE_OR_RETURN(aidl2legacy_AudioEncapsulationType_audio_encapsulation_type_t( aidl.encapsulationType)); return legacy; } ConversionResult<media::ExtraAudioDescriptor> legacy2aidl_audio_extra_audio_descriptor_ExtraAudioDescriptor( const audio_extra_audio_descriptor& legacy) { media::ExtraAudioDescriptor aidl; aidl.standard = VALUE_OR_RETURN(legacy2aidl_audio_standard_t_AudioStandard(legacy.standard)); if (legacy.descriptor_length > EXTRA_AUDIO_DESCRIPTOR_SIZE) { return unexpected(BAD_VALUE); } aidl.audioDescriptor.resize(legacy.descriptor_length); std::copy(legacy.descriptor, legacy.descriptor + legacy.descriptor_length, aidl.audioDescriptor.begin()); aidl.encapsulationType = VALUE_OR_RETURN(legacy2aidl_audio_encapsulation_type_t_AudioEncapsulationType( legacy.encapsulation_type)); return aidl; } ConversionResult<audio_encapsulation_type_t> aidl2legacy_AudioEncapsulationType_audio_encapsulation_type_t( const media::AudioEncapsulationType& aidl) { switch (aidl) { case media::AudioEncapsulationType::NONE: return AUDIO_ENCAPSULATION_TYPE_NONE; case media::AudioEncapsulationType::IEC61937: return AUDIO_ENCAPSULATION_TYPE_IEC61937; } return unexpected(BAD_VALUE); } ConversionResult<media::AudioEncapsulationType> legacy2aidl_audio_encapsulation_type_t_AudioEncapsulationType( const audio_encapsulation_type_t & legacy) { switch (legacy) { case AUDIO_ENCAPSULATION_TYPE_NONE: return media::AudioEncapsulationType::NONE; case AUDIO_ENCAPSULATION_TYPE_IEC61937: return media::AudioEncapsulationType::IEC61937; } return unexpected(BAD_VALUE); } } // namespace android media/libaudioclient/Android.bp +3 −0 Original line number Diff line number Diff line Loading @@ -311,6 +311,7 @@ aidl_interface { "aidl/android/media/AudioDualMonoMode.aidl", "aidl/android/media/AudioEncapsulationMode.aidl", "aidl/android/media/AudioEncapsulationMetadataType.aidl", "aidl/android/media/AudioEncapsulationType.aidl", "aidl/android/media/AudioFlag.aidl", "aidl/android/media/AudioGain.aidl", "aidl/android/media/AudioGainConfig.aidl", Loading Loading @@ -341,12 +342,14 @@ aidl_interface { "aidl/android/media/AudioPortType.aidl", "aidl/android/media/AudioProfile.aidl", "aidl/android/media/AudioSourceType.aidl", "aidl/android/media/AudioStandard.aidl", "aidl/android/media/AudioStreamType.aidl", "aidl/android/media/AudioTimestampInternal.aidl", "aidl/android/media/AudioUniqueIdUse.aidl", "aidl/android/media/AudioUsage.aidl", "aidl/android/media/AudioUuid.aidl", "aidl/android/media/EffectDescriptor.aidl", "aidl/android/media/ExtraAudioDescriptor.aidl", ], imports: [ "audio_common-aidl", Loading media/libaudioclient/aidl/android/media/AudioEncapsulationType.aidl 0 → 100644 +29 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.media; /** * Audio encapsulation type is used to describe if the audio data should be sent with a particular * encapsulation type or not. * * {@hide} */ @Backing(type="int") enum AudioEncapsulationType { NONE = 0, IEC61937 = 1, } No newline at end of file media/libaudioclient/aidl/android/media/AudioPort.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.media.AudioPortExt; import android.media.AudioPortRole; import android.media.AudioPortType; import android.media.AudioProfile; import android.media.ExtraAudioDescriptor; /** * {@hide} Loading @@ -36,6 +37,11 @@ parcelable AudioPort { @utf8InCpp String name; /** AudioProfiles supported by this port (format, Rates, Channels). */ AudioProfile[] profiles; /** * ExtraAudioDescriptors supported by this port. The format is not unrecognized to the * platform. The audio capability is described by a hardware descriptor. */ ExtraAudioDescriptor[] extraAudioDescriptors; /** Gain controllers. */ AudioGain[] gains; /** Current audio port configuration. */ Loading media/libaudioclient/aidl/android/media/AudioProfile.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.media; import android.media.AudioEncapsulationType; import android.media.audio.common.AudioFormat; /** Loading @@ -31,4 +32,5 @@ parcelable AudioProfile { boolean isDynamicFormat; boolean isDynamicChannels; boolean isDynamicRate; AudioEncapsulationType encapsulationType; } Loading
media/libaudioclient/AidlConversion.cpp +105 −0 Original line number Diff line number Diff line Loading @@ -1918,6 +1918,9 @@ aidl2legacy_AudioProfile_audio_profile(const media::AudioProfile& aidl) { convertRange(aidl.channelMasks.begin(), aidl.channelMasks.end(), legacy.channel_masks, aidl2legacy_int32_t_audio_channel_mask_t)); legacy.num_channel_masks = aidl.channelMasks.size(); legacy.encapsulation_type = VALUE_OR_RETURN( aidl2legacy_AudioEncapsulationType_audio_encapsulation_type_t(aidl.encapsulationType)); return legacy; } Loading @@ -1941,6 +1944,10 @@ legacy2aidl_audio_profile_AudioProfile(const audio_profile& legacy) { convertRange(legacy.channel_masks, legacy.channel_masks + legacy.num_channel_masks, std::back_inserter(aidl.channelMasks), legacy2aidl_audio_channel_mask_t_int32_t)); aidl.encapsulationType = VALUE_OR_RETURN( legacy2aidl_audio_encapsulation_type_t_AudioEncapsulationType( legacy.encapsulation_type)); return aidl; } Loading Loading @@ -1989,6 +1996,15 @@ aidl2legacy_AudioPort_audio_port_v7(const media::AudioPort& aidl) { aidl2legacy_AudioProfile_audio_profile)); legacy.num_audio_profiles = aidl.profiles.size(); if (aidl.extraAudioDescriptors.size() > std::size(legacy.extra_audio_descriptors)) { return unexpected(BAD_VALUE); } RETURN_IF_ERROR( convertRange(aidl.extraAudioDescriptors.begin(), aidl.extraAudioDescriptors.end(), legacy.extra_audio_descriptors, aidl2legacy_ExtraAudioDescriptor_audio_extra_audio_descriptor)); legacy.num_extra_audio_descriptors = aidl.extraAudioDescriptors.size(); if (aidl.gains.size() > std::size(legacy.gains)) { return unexpected(BAD_VALUE); } Loading Loading @@ -2018,6 +2034,15 @@ legacy2aidl_audio_port_v7_AudioPort(const audio_port_v7& legacy) { std::back_inserter(aidl.profiles), legacy2aidl_audio_profile_AudioProfile)); if (legacy.num_extra_audio_descriptors > std::size(legacy.extra_audio_descriptors)) { return unexpected(BAD_VALUE); } RETURN_IF_ERROR( convertRange(legacy.extra_audio_descriptors, legacy.extra_audio_descriptors + legacy.num_extra_audio_descriptors, std::back_inserter(aidl.extraAudioDescriptors), legacy2aidl_audio_extra_audio_descriptor_ExtraAudioDescriptor)); if (legacy.num_gains > std::size(legacy.gains)) { return unexpected(BAD_VALUE); } Loading Loading @@ -2218,4 +2243,84 @@ legacy2aidl_audio_playback_rate_t_AudioPlaybackRate(const audio_playback_rate_t& return aidl; } ConversionResult<audio_standard_t> aidl2legacy_AudioStandard_audio_standard_t(media::AudioStandard aidl) { switch (aidl) { case media::AudioStandard::NONE: return AUDIO_STANDARD_NONE; case media::AudioStandard::EDID: return AUDIO_STANDARD_EDID; } return unexpected(BAD_VALUE); } ConversionResult<media::AudioStandard> legacy2aidl_audio_standard_t_AudioStandard(audio_standard_t legacy) { switch (legacy) { case AUDIO_STANDARD_NONE: return media::AudioStandard::NONE; case AUDIO_STANDARD_EDID: return media::AudioStandard::EDID; } return unexpected(BAD_VALUE); } ConversionResult<audio_extra_audio_descriptor> aidl2legacy_ExtraAudioDescriptor_audio_extra_audio_descriptor( const media::ExtraAudioDescriptor& aidl) { audio_extra_audio_descriptor legacy; legacy.standard = VALUE_OR_RETURN(aidl2legacy_AudioStandard_audio_standard_t(aidl.standard)); if (aidl.audioDescriptor.size() > EXTRA_AUDIO_DESCRIPTOR_SIZE) { return unexpected(BAD_VALUE); } legacy.descriptor_length = aidl.audioDescriptor.size(); std::copy(aidl.audioDescriptor.begin(), aidl.audioDescriptor.end(), std::begin(legacy.descriptor)); legacy.encapsulation_type = VALUE_OR_RETURN(aidl2legacy_AudioEncapsulationType_audio_encapsulation_type_t( aidl.encapsulationType)); return legacy; } ConversionResult<media::ExtraAudioDescriptor> legacy2aidl_audio_extra_audio_descriptor_ExtraAudioDescriptor( const audio_extra_audio_descriptor& legacy) { media::ExtraAudioDescriptor aidl; aidl.standard = VALUE_OR_RETURN(legacy2aidl_audio_standard_t_AudioStandard(legacy.standard)); if (legacy.descriptor_length > EXTRA_AUDIO_DESCRIPTOR_SIZE) { return unexpected(BAD_VALUE); } aidl.audioDescriptor.resize(legacy.descriptor_length); std::copy(legacy.descriptor, legacy.descriptor + legacy.descriptor_length, aidl.audioDescriptor.begin()); aidl.encapsulationType = VALUE_OR_RETURN(legacy2aidl_audio_encapsulation_type_t_AudioEncapsulationType( legacy.encapsulation_type)); return aidl; } ConversionResult<audio_encapsulation_type_t> aidl2legacy_AudioEncapsulationType_audio_encapsulation_type_t( const media::AudioEncapsulationType& aidl) { switch (aidl) { case media::AudioEncapsulationType::NONE: return AUDIO_ENCAPSULATION_TYPE_NONE; case media::AudioEncapsulationType::IEC61937: return AUDIO_ENCAPSULATION_TYPE_IEC61937; } return unexpected(BAD_VALUE); } ConversionResult<media::AudioEncapsulationType> legacy2aidl_audio_encapsulation_type_t_AudioEncapsulationType( const audio_encapsulation_type_t & legacy) { switch (legacy) { case AUDIO_ENCAPSULATION_TYPE_NONE: return media::AudioEncapsulationType::NONE; case AUDIO_ENCAPSULATION_TYPE_IEC61937: return media::AudioEncapsulationType::IEC61937; } return unexpected(BAD_VALUE); } } // namespace android
media/libaudioclient/Android.bp +3 −0 Original line number Diff line number Diff line Loading @@ -311,6 +311,7 @@ aidl_interface { "aidl/android/media/AudioDualMonoMode.aidl", "aidl/android/media/AudioEncapsulationMode.aidl", "aidl/android/media/AudioEncapsulationMetadataType.aidl", "aidl/android/media/AudioEncapsulationType.aidl", "aidl/android/media/AudioFlag.aidl", "aidl/android/media/AudioGain.aidl", "aidl/android/media/AudioGainConfig.aidl", Loading Loading @@ -341,12 +342,14 @@ aidl_interface { "aidl/android/media/AudioPortType.aidl", "aidl/android/media/AudioProfile.aidl", "aidl/android/media/AudioSourceType.aidl", "aidl/android/media/AudioStandard.aidl", "aidl/android/media/AudioStreamType.aidl", "aidl/android/media/AudioTimestampInternal.aidl", "aidl/android/media/AudioUniqueIdUse.aidl", "aidl/android/media/AudioUsage.aidl", "aidl/android/media/AudioUuid.aidl", "aidl/android/media/EffectDescriptor.aidl", "aidl/android/media/ExtraAudioDescriptor.aidl", ], imports: [ "audio_common-aidl", Loading
media/libaudioclient/aidl/android/media/AudioEncapsulationType.aidl 0 → 100644 +29 −0 Original line number Diff line number Diff line /* * Copyright (C) 2021 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package android.media; /** * Audio encapsulation type is used to describe if the audio data should be sent with a particular * encapsulation type or not. * * {@hide} */ @Backing(type="int") enum AudioEncapsulationType { NONE = 0, IEC61937 = 1, } No newline at end of file
media/libaudioclient/aidl/android/media/AudioPort.aidl +6 −0 Original line number Diff line number Diff line Loading @@ -22,6 +22,7 @@ import android.media.AudioPortExt; import android.media.AudioPortRole; import android.media.AudioPortType; import android.media.AudioProfile; import android.media.ExtraAudioDescriptor; /** * {@hide} Loading @@ -36,6 +37,11 @@ parcelable AudioPort { @utf8InCpp String name; /** AudioProfiles supported by this port (format, Rates, Channels). */ AudioProfile[] profiles; /** * ExtraAudioDescriptors supported by this port. The format is not unrecognized to the * platform. The audio capability is described by a hardware descriptor. */ ExtraAudioDescriptor[] extraAudioDescriptors; /** Gain controllers. */ AudioGain[] gains; /** Current audio port configuration. */ Loading
media/libaudioclient/aidl/android/media/AudioProfile.aidl +2 −0 Original line number Diff line number Diff line Loading @@ -16,6 +16,7 @@ package android.media; import android.media.AudioEncapsulationType; import android.media.audio.common.AudioFormat; /** Loading @@ -31,4 +32,5 @@ parcelable AudioProfile { boolean isDynamicFormat; boolean isDynamicChannels; boolean isDynamicRate; AudioEncapsulationType encapsulationType; }