Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 2f8ea4b6 authored by Jiabin Huang's avatar Jiabin Huang Committed by Android (Google) Code Review
Browse files

Merge "Add SAD to AudioPort and encapsulation type to AudioProfile." into sc-dev

parents 7ed9dcc9 82e5693d
Loading
Loading
Loading
Loading
+105 −0
Original line number Diff line number Diff line
@@ -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;
}

@@ -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;
}

@@ -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);
    }
@@ -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);
    }
@@ -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
+3 −0
Original line number Diff line number Diff line
@@ -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",
@@ -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",
+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
+6 −0
Original line number Diff line number Diff line
@@ -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}
@@ -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. */
+2 −0
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.media;

import android.media.AudioEncapsulationType;
import android.media.audio.common.AudioFormat;

/**
@@ -31,4 +32,5 @@ parcelable AudioProfile {
    boolean isDynamicFormat;
    boolean isDynamicChannels;
    boolean isDynamicRate;
    AudioEncapsulationType encapsulationType;
}
Loading