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

Commit afdbb1ce authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge changes from topic "fix-b-198812639-audio-profile"

* changes:
  Split AudioGain* between fwk and android.media.audio.common
  Split AudioProfile between fwk and android.media.audio.common
parents 9fd97bf5 7d0b36bf
Loading
Loading
Loading
Loading
+39 −30
Original line number Diff line number Diff line
@@ -47,8 +47,12 @@ using media::audio::common::AudioEncapsulationMode;
using media::audio::common::AudioEncapsulationType;
using media::audio::common::AudioFormatDescription;
using media::audio::common::AudioFormatType;
using media::audio::common::AudioGain;
using media::audio::common::AudioGainConfig;
using media::audio::common::AudioGainMode;
using media::audio::common::AudioMode;
using media::audio::common::AudioOffloadInfo;
using media::audio::common::AudioProfile;
using media::audio::common::AudioSource;
using media::audio::common::AudioStreamType;
using media::audio::common::AudioUsage;
@@ -1240,57 +1244,59 @@ ConversionResult<AudioFormatDescription> legacy2aidl_audio_format_t_AudioFormatD
    }
}

ConversionResult<audio_gain_mode_t> aidl2legacy_AudioGainMode_audio_gain_mode_t(media::AudioGainMode aidl) {
ConversionResult<audio_gain_mode_t> aidl2legacy_AudioGainMode_audio_gain_mode_t(
        AudioGainMode aidl) {
    switch (aidl) {
        case media::AudioGainMode::JOINT:
        case AudioGainMode::JOINT:
            return AUDIO_GAIN_MODE_JOINT;
        case media::AudioGainMode::CHANNELS:
        case AudioGainMode::CHANNELS:
            return AUDIO_GAIN_MODE_CHANNELS;
        case media::AudioGainMode::RAMP:
        case AudioGainMode::RAMP:
            return AUDIO_GAIN_MODE_RAMP;
    }
    return unexpected(BAD_VALUE);
}

ConversionResult<media::AudioGainMode> legacy2aidl_audio_gain_mode_t_AudioGainMode(audio_gain_mode_t legacy) {
ConversionResult<AudioGainMode> legacy2aidl_audio_gain_mode_t_AudioGainMode(
        audio_gain_mode_t legacy) {
    switch (legacy) {
        case AUDIO_GAIN_MODE_JOINT:
            return media::AudioGainMode::JOINT;
            return AudioGainMode::JOINT;
        case AUDIO_GAIN_MODE_CHANNELS:
            return media::AudioGainMode::CHANNELS;
            return AudioGainMode::CHANNELS;
        case AUDIO_GAIN_MODE_RAMP:
            return media::AudioGainMode::RAMP;
            return AudioGainMode::RAMP;
    }
    return unexpected(BAD_VALUE);
}

ConversionResult<audio_gain_mode_t> aidl2legacy_int32_t_audio_gain_mode_t_mask(int32_t aidl) {
    return convertBitmask<audio_gain_mode_t, int32_t, audio_gain_mode_t, media::AudioGainMode>(
    return convertBitmask<audio_gain_mode_t, int32_t, audio_gain_mode_t, AudioGainMode>(
            aidl, aidl2legacy_AudioGainMode_audio_gain_mode_t,
            // AudioGainMode is index-based.
            indexToEnum_index<media::AudioGainMode>,
            indexToEnum_index<AudioGainMode>,
            // AUDIO_GAIN_MODE_* constants are mask-based.
            enumToMask_bitmask<audio_gain_mode_t, audio_gain_mode_t>);
}

ConversionResult<int32_t> legacy2aidl_audio_gain_mode_t_int32_t_mask(audio_gain_mode_t legacy) {
    return convertBitmask<int32_t, audio_gain_mode_t, media::AudioGainMode, audio_gain_mode_t>(
    return convertBitmask<int32_t, audio_gain_mode_t, AudioGainMode, audio_gain_mode_t>(
            legacy, legacy2aidl_audio_gain_mode_t_AudioGainMode,
            // AUDIO_GAIN_MODE_* constants are mask-based.
            indexToEnum_bitmask<audio_gain_mode_t>,
            // AudioGainMode is index-based.
            enumToMask_index<int32_t, media::AudioGainMode>);
            enumToMask_index<int32_t, AudioGainMode>);
}

ConversionResult<audio_gain_config> aidl2legacy_AudioGainConfig_audio_gain_config(
        const media::AudioGainConfig& aidl, media::AudioPortRole role, media::AudioPortType type) {
        const AudioGainConfig& aidl, media::AudioPortRole role, media::AudioPortType type) {
    audio_gain_config legacy;
    legacy.index = VALUE_OR_RETURN(convertIntegral<int>(aidl.index));
    legacy.mode = VALUE_OR_RETURN(aidl2legacy_int32_t_audio_gain_mode_t_mask(aidl.mode));
    const bool isInput = VALUE_OR_RETURN(direction(role, type)) == Direction::INPUT;
    legacy.channel_mask = VALUE_OR_RETURN(
            aidl2legacy_AudioChannelLayout_audio_channel_mask_t(aidl.channelMask, isInput));
    const bool isJoint = bitmaskIsSet(aidl.mode, media::AudioGainMode::JOINT);
    const bool isJoint = bitmaskIsSet(aidl.mode, AudioGainMode::JOINT);
    size_t numValues = isJoint ? 1
                               : isInput ? audio_channel_count_from_in_mask(legacy.channel_mask)
                                         : audio_channel_count_from_out_mask(legacy.channel_mask);
@@ -1304,9 +1310,9 @@ ConversionResult<audio_gain_config> aidl2legacy_AudioGainConfig_audio_gain_confi
    return legacy;
}

ConversionResult<media::AudioGainConfig> legacy2aidl_audio_gain_config_AudioGainConfig(
ConversionResult<AudioGainConfig> legacy2aidl_audio_gain_config_AudioGainConfig(
        const audio_gain_config& legacy, audio_port_role_t role, audio_port_type_t type) {
    media::AudioGainConfig aidl;
    AudioGainConfig aidl;
    aidl.index = VALUE_OR_RETURN(convertIntegral<int32_t>(legacy.index));
    aidl.mode = VALUE_OR_RETURN(legacy2aidl_audio_gain_mode_t_int32_t_mask(legacy.mode));
    const bool isInput = VALUE_OR_RETURN(direction(role, type)) == Direction::INPUT;
@@ -2743,17 +2749,17 @@ ConversionResult<media::AudioPortExt> legacy2aidl_AudioPortExt(
}

ConversionResult<audio_profile>
aidl2legacy_AudioProfile_audio_profile(const media::AudioProfile& aidl, bool isInput) {
aidl2legacy_AudioProfile_audio_profile(const AudioProfile& aidl, bool isInput) {
    audio_profile legacy;
    legacy.format = VALUE_OR_RETURN(aidl2legacy_AudioFormatDescription_audio_format_t(aidl.format));

    if (aidl.samplingRates.size() > std::size(legacy.sample_rates)) {
    if (aidl.sampleRates.size() > std::size(legacy.sample_rates)) {
        return unexpected(BAD_VALUE);
    }
    RETURN_IF_ERROR(
            convertRange(aidl.samplingRates.begin(), aidl.samplingRates.end(), legacy.sample_rates,
            convertRange(aidl.sampleRates.begin(), aidl.sampleRates.end(), legacy.sample_rates,
                         convertIntegral<int32_t, unsigned int>));
    legacy.num_sample_rates = aidl.samplingRates.size();
    legacy.num_sample_rates = aidl.sampleRates.size();

    if (aidl.channelMasks.size() > std::size(legacy.channel_masks)) {
        return unexpected(BAD_VALUE);
@@ -2770,9 +2776,9 @@ aidl2legacy_AudioProfile_audio_profile(const media::AudioProfile& aidl, bool isI
    return legacy;
}

ConversionResult<media::AudioProfile>
ConversionResult<AudioProfile>
legacy2aidl_audio_profile_AudioProfile(const audio_profile& legacy, bool isInput) {
    media::AudioProfile aidl;
    AudioProfile aidl;
    aidl.format = VALUE_OR_RETURN(legacy2aidl_audio_format_t_AudioFormatDescription(legacy.format));

    if (legacy.num_sample_rates > std::size(legacy.sample_rates)) {
@@ -2780,7 +2786,7 @@ legacy2aidl_audio_profile_AudioProfile(const audio_profile& legacy, bool isInput
    }
    RETURN_IF_ERROR(
            convertRange(legacy.sample_rates, legacy.sample_rates + legacy.num_sample_rates,
                         std::back_inserter(aidl.samplingRates),
                         std::back_inserter(aidl.sampleRates),
                         convertIntegral<unsigned int, int32_t>));

    if (legacy.num_channel_masks > std::size(legacy.channel_masks)) {
@@ -2800,11 +2806,11 @@ legacy2aidl_audio_profile_AudioProfile(const audio_profile& legacy, bool isInput
}

ConversionResult<audio_gain>
aidl2legacy_AudioGain_audio_gain(const media::AudioGain& aidl) {
aidl2legacy_AudioGain_audio_gain(const AudioGain& aidl, bool isInput) {
    audio_gain legacy;
    legacy.mode = VALUE_OR_RETURN(aidl2legacy_int32_t_audio_gain_mode_t_mask(aidl.mode));
    legacy.channel_mask = VALUE_OR_RETURN(aidl2legacy_AudioChannelLayout_audio_channel_mask_t(
                    aidl.channelMask, aidl.isInput));
                    aidl.channelMask, isInput));
    legacy.min_value = VALUE_OR_RETURN(convertIntegral<int>(aidl.minValue));
    legacy.max_value = VALUE_OR_RETURN(convertIntegral<int>(aidl.maxValue));
    legacy.default_value = VALUE_OR_RETURN(convertIntegral<int>(aidl.defaultValue));
@@ -2814,11 +2820,10 @@ aidl2legacy_AudioGain_audio_gain(const media::AudioGain& aidl) {
    return legacy;
}

ConversionResult<media::AudioGain>
ConversionResult<AudioGain>
legacy2aidl_audio_gain_AudioGain(const audio_gain& legacy, bool isInput) {
    media::AudioGain aidl;
    AudioGain aidl;
    aidl.mode = VALUE_OR_RETURN(legacy2aidl_audio_gain_mode_t_int32_t_mask(legacy.mode));
    aidl.isInput = isInput;
    aidl.channelMask = VALUE_OR_RETURN(
            legacy2aidl_audio_channel_mask_t_AudioChannelLayout(legacy.channel_mask, isInput));
    aidl.minValue = VALUE_OR_RETURN(convertIntegral<int32_t>(legacy.min_value));
@@ -2843,7 +2848,7 @@ aidl2legacy_AudioPort_audio_port_v7(const media::AudioPort& aidl) {
    }
    const bool isInput = VALUE_OR_RETURN(direction(aidl.role, aidl.type)) == Direction::INPUT;
    RETURN_IF_ERROR(convertRange(aidl.profiles.begin(), aidl.profiles.end(), legacy.audio_profiles,
                                 [isInput](const media::AudioProfile& p) {
                                 [isInput](const AudioProfile& p) {
                                     return aidl2legacy_AudioProfile_audio_profile(p, isInput);
                                 }));
    legacy.num_audio_profiles = aidl.profiles.size();
@@ -2861,7 +2866,9 @@ aidl2legacy_AudioPort_audio_port_v7(const media::AudioPort& aidl) {
        return unexpected(BAD_VALUE);
    }
    RETURN_IF_ERROR(convertRange(aidl.gains.begin(), aidl.gains.end(), legacy.gains,
                                 aidl2legacy_AudioGain_audio_gain));
                                 [isInput](const AudioGain& g) {
                                     return aidl2legacy_AudioGain_audio_gain(g, isInput);
                                 }));
    legacy.num_gains = aidl.gains.size();

    legacy.active_config = VALUE_OR_RETURN(
@@ -2892,6 +2899,7 @@ legacy2aidl_audio_port_v7_AudioPort(const audio_port_v7& legacy) {
    if (legacy.num_extra_audio_descriptors > std::size(legacy.extra_audio_descriptors)) {
        return unexpected(BAD_VALUE);
    }
    aidl.profilesSys.resize(legacy.num_audio_profiles);
    RETURN_IF_ERROR(
            convertRange(legacy.extra_audio_descriptors,
                    legacy.extra_audio_descriptors + legacy.num_extra_audio_descriptors,
@@ -2907,6 +2915,7 @@ legacy2aidl_audio_port_v7_AudioPort(const audio_port_v7& legacy) {
                         [isInput](const audio_gain& g) {
                             return legacy2aidl_audio_gain_AudioGain(g, isInput);
                         }));
    aidl.gainsSys.resize(legacy.num_gains);

    aidl.activeConfig = VALUE_OR_RETURN(
            legacy2aidl_audio_port_config_AudioPortConfig(legacy.active_config));
+2 −4
Original line number Diff line number Diff line
@@ -314,9 +314,7 @@ aidl_interface {
        "aidl/android/media/AudioClient.aidl",
        "aidl/android/media/AudioDualMonoMode.aidl",
        "aidl/android/media/AudioFlag.aidl",
        "aidl/android/media/AudioGain.aidl",
        "aidl/android/media/AudioGainConfig.aidl",
        "aidl/android/media/AudioGainMode.aidl",
        "aidl/android/media/AudioGainSys.aidl",
        "aidl/android/media/AudioInputFlags.aidl",
        "aidl/android/media/AudioIoConfigEvent.aidl",
        "aidl/android/media/AudioIoDescriptor.aidl",
@@ -339,7 +337,7 @@ aidl_interface {
        "aidl/android/media/AudioPortRole.aidl",
        "aidl/android/media/AudioPortSessionExt.aidl",
        "aidl/android/media/AudioPortType.aidl",
        "aidl/android/media/AudioProfile.aidl",
        "aidl/android/media/AudioProfileSys.aidl",
        "aidl/android/media/AudioStandard.aidl",
        "aidl/android/media/AudioTimestampInternal.aidl",
        "aidl/android/media/AudioUniqueIdUse.aidl",
+0 −45
Original line number Diff line number Diff line
/*
 * Copyright (C) 2020 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;

import android.media.audio.common.AudioChannelLayout;

/**
 * {@hide}
 */
parcelable AudioGainConfig {
    /** Index of the corresponding audio_gain in the audio_port gains[] table. */
    int index;

    /** Mode requested for this command. Bitfield indexed by AudioGainMode. */
    int mode;

    /**
     * Channels which gain value follows. N/A in joint mode.
     */
    AudioChannelLayout channelMask;

    /**
     * Gain values in millibels.
     * For each channel ordered from LSb to MSb in channel mask. The number of values is 1 in joint
     * mode, otherwise equals the number of bits implied by channelMask.
     */
    int[]  values;

    /** Ramp duration in ms. */
    int rampDurationMs;
}
+7 −5
Original line number Diff line number Diff line
@@ -13,14 +13,16 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.media;

/**
 * Provides additional runtime information for AudioGain, used by the framework.
 *
 * {@hide}
 */
@Backing(type="int")
enum AudioGainMode {
    JOINT    = 0,
    CHANNELS = 1,
    RAMP     = 2,
parcelable AudioGainSys {
    int index;
    boolean isInput;
    boolean useForVolume;
}
+8 −2
Original line number Diff line number Diff line
@@ -16,13 +16,15 @@

package android.media;

import android.media.AudioGain;
import android.media.AudioGainSys;
import android.media.AudioPortConfig;
import android.media.AudioPortExt;
import android.media.AudioPortRole;
import android.media.AudioPortType;
import android.media.AudioProfile;
import android.media.AudioProfileSys;
import android.media.ExtraAudioDescriptor;
import android.media.audio.common.AudioGain;
import android.media.audio.common.AudioProfile;

/**
 * {@hide}
@@ -37,6 +39,8 @@ parcelable AudioPort {
    @utf8InCpp String name;
    /** AudioProfiles supported by this port (format, Rates, Channels). */
    AudioProfile[] profiles;
    /** System-only parameters for each AudioProfile. */
    AudioProfileSys[] profilesSys;
    /**
     * ExtraAudioDescriptors supported by this port. The format is not unrecognized to the
     * platform. The audio capability is described by a hardware descriptor.
@@ -44,6 +48,8 @@ parcelable AudioPort {
    ExtraAudioDescriptor[] extraAudioDescriptors;
    /** Gain controllers. */
    AudioGain[] gains;
    /** System-only parameters for each AudioGain. */
    AudioGainSys[] gainsSys;
    /** Current audio port configuration. */
    AudioPortConfig activeConfig;
    AudioPortExt ext;
Loading