Merge "Revert "Audio CAP: Address ANAPIC comments, Part 3."" into main am: 0121f3f5f2 Original change: https://android-review.googlesource.com/c/platform/system/hardware/interfaces/+/3368982 Change-Id: Ibff7751d71810cf7f40001874e568b0880568c06 Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
diff --git a/media/Android.bp b/media/Android.bp index b89d1b0..5ba8985 100644 --- a/media/Android.bp +++ b/media/Android.bp
@@ -68,6 +68,7 @@ "aidl/android/media/audio/common/AudioOffloadInfo.aidl", "aidl/android/media/audio/common/AudioOutputFlags.aidl", "aidl/android/media/audio/common/AudioPlaybackRate.aidl", + "aidl/android/media/audio/common/AudioPolicyForcedConfig.aidl", "aidl/android/media/audio/common/AudioPolicyForceUse.aidl", "aidl/android/media/audio/common/AudioPort.aidl", "aidl/android/media/audio/common/AudioPortConfig.aidl",
diff --git a/media/aidl/android/media/audio/common/AudioHalCapCriterionV2.aidl b/media/aidl/android/media/audio/common/AudioHalCapCriterionV2.aidl index 2416bca..5e034c8 100644 --- a/media/aidl/android/media/audio/common/AudioHalCapCriterionV2.aidl +++ b/media/aidl/android/media/audio/common/AudioHalCapCriterionV2.aidl
@@ -20,6 +20,7 @@ import android.media.audio.common.AudioDeviceDescription; import android.media.audio.common.AudioMode; import android.media.audio.common.AudioPolicyForceUse; +import android.media.audio.common.AudioPolicyForcedConfig; /** * AudioHalCapCriterion is a wrapper for a CriterionType and its default value. @@ -47,13 +48,12 @@ */ @VintfStability parcelable ForceConfigForUse { + /** Force usage addressed by this criterion. */ + AudioPolicyForceUse forceUse = AudioPolicyForceUse.MEDIA; /** List of supported value by this criterion. */ - AudioPolicyForceUse[] values; - /** - * Default configuration applied if none is provided. This is the default-initialized - * value of 'AudioPolicyForceUse' which is 'forMedia = NONE'. - */ - AudioPolicyForceUse defaultValue; + AudioPolicyForcedConfig[] values; + /** Default configuration applied if none is provided. */ + AudioPolicyForcedConfig defaultValue = AudioPolicyForcedConfig.NONE; /** Logic followed by this criterion, only one value at given time. */ LogicalDisjunction logic = LogicalDisjunction.EXCLUSIVE; }
diff --git a/media/aidl/android/media/audio/common/AudioPolicyForceUse.aidl b/media/aidl/android/media/audio/common/AudioPolicyForceUse.aidl index 4a67851..017fb30 100644 --- a/media/aidl/android/media/audio/common/AudioPolicyForceUse.aidl +++ b/media/aidl/android/media/audio/common/AudioPolicyForceUse.aidl
@@ -16,92 +16,48 @@ package android.media.audio.common; /** - * "Force Use" specifies high-level routing policies which are used - * in order to override the usual routing behavior. + * List of usages to be used the values from 'AudioPolicyForcedConfig' in order + * to force audio routing. * * {@hide} */ +@Backing(type="int") @SuppressWarnings(value={"redundant-name"}) @VintfStability -union AudioPolicyForceUse { - @Backing(type="byte") - @VintfStability - enum CommunicationDeviceCategory { - NONE = 0, - SPEAKER, - BT_SCO, - BT_BLE, - WIRED_ACCESSORY, - } - @Backing(type="byte") - @VintfStability - enum MediaDeviceCategory { - NONE = 0, - SPEAKER, - HEADPHONES, - BT_A2DP, - ANALOG_DOCK, - DIGITAL_DOCK, - WIRED_ACCESSORY, - NO_BT_A2DP, - } - @Backing(type="byte") - @VintfStability - enum DockType { - NONE = 0, - BT_CAR_DOCK, - BT_DESK_DOCK, - ANALOG_DOCK, - DIGITAL_DOCK, - WIRED_ACCESSORY, - } - @Backing(type="byte") - @VintfStability - enum EncodedSurroundConfig { - UNSPECIFIED = 0, - NEVER, - ALWAYS, - MANUAL, - } - - /** - * Configures the audio device used for media playback. - * This is also the default value. - */ - MediaDeviceCategory forMedia = MediaDeviceCategory.NONE; +enum AudioPolicyForceUse { /** * Configures the audio device used for "communication" (telephony, VoIP) use cases. - * Note that 'BT_BLE' and 'WIRED_ACCESSORY' can not be used in this case. */ - CommunicationDeviceCategory forCommunication = CommunicationDeviceCategory.NONE; + COMMUNICATION = 0, + /** + * Configures the audio device used for media playback. + */ + MEDIA = 1, /** * Configures the audio device used for recording. - * Note that 'SPEAKER' and 'BT_BLE' can not be used in this case. */ - CommunicationDeviceCategory forRecord = CommunicationDeviceCategory.NONE; - /** - * Configures whether in muted audio mode ringing should also be sent to a BT device. - * Note that 'SPEAKER' and 'WIRED_ACCESSORY' can not be used in this case. - */ - CommunicationDeviceCategory forVibrateRinging = CommunicationDeviceCategory.NONE; + RECORD = 2, /** * Specifies whether the phone is currently placed into a dock. The value of - * specifies the kind of the dock. This field may also be used that sending - * of audio to the dock is overridden by another device. + * 'AudioPolicyForcedConfig' specifies the kind of the dock. */ - DockType dock = DockType.NONE; + DOCK = 3, /** * Specifies whether enforcing of certain sounds is enabled, for example, * enforcing of the camera shutter sound. */ - boolean systemSounds = false; + SYSTEM = 4, /** * Specifies whether sending of system audio via HDMI is enabled. */ - boolean hdmiSystemAudio = false; + HDMI_SYSTEM_AUDIO = 5, /** * Configures whether support for encoded surround formats is enabled for * applications. */ - EncodedSurroundConfig encodedSurround = EncodedSurroundConfig.UNSPECIFIED; + ENCODED_SURROUND = 6, + /** + * Configures whether in muted audio mode ringing should also be sent to a BT device. + */ + VIBRATE_RINGING = 7, }
diff --git a/media/aidl/android/media/audio/common/AudioPolicyForcedConfig.aidl b/media/aidl/android/media/audio/common/AudioPolicyForcedConfig.aidl new file mode 100644 index 0000000..a9e32bc --- /dev/null +++ b/media/aidl/android/media/audio/common/AudioPolicyForcedConfig.aidl
@@ -0,0 +1,76 @@ +/* + * Copyright (C) 2024 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.common; + +/** + * List of forced configurations aka device categories to be used in addition to the force use + * in order to force the audio routing. This is the "destination" for 'AudioPolicyForceUse'. + * + * {@hide} + */ +@Backing(type="int") +@SuppressWarnings(value={"redundant-name"}) +@VintfStability +enum AudioPolicyForcedConfig { + /** + * The 'NONE' value can be used with all uses from 'AudioPolicyForceUse'. + */ + NONE = 0, + /** + * The following configurations are used with 'AudioPolicyForceUse.COMMUNICATION', + * '.MEDIA', and '.RECORD'. + * + * BT_SCO is also used with 'AudioPolicyForceUse.VIBRATE_RINGING' to specify that + * in addition to vibration the ringing should be played via the BT SCO device. + */ + SPEAKER = 1, + HEADPHONES = 2, + BT_SCO = 3, + BT_A2DP = 4, + WIRED_ACCESSORY = 5, + /** + * The '*_DOCK' values are for 'AudioPolicyForceUse.DOCK'. + */ + BT_CAR_DOCK = 6, + BT_DESK_DOCK = 7, + ANALOG_DOCK = 8, + DIGITAL_DOCK = 9, + /** + * BT A2DP sink is not preferred to the speaker or a wired headset. Used for + * 'AudioPolicyForceUse.MEDIA'. + */ + NO_BT_A2DP = 10, + /** + * Used with 'AudioPolicyForceUse.SYSTEM' to indicate that sound enforcement is enabled. + */ + SYSTEM_ENFORCED = 11, + /** + * Used with 'AudioPolicyForceUse.HDMI_SYSTEM_AUDIO' to indicate that sending + * of system audio to HDMI is enabled. + */ + HDMI_SYSTEM_AUDIO_ENFORCED = 12, + /** + * The '*_ENCODED_SURROUND' values are for 'AudioPolicyForceUse.ENCODED_SURROUND'. + */ + ENCODED_SURROUND_NEVER = 13, + ENCODED_SURROUND_ALWAYS = 14, + ENCODED_SURROUND_MANUAL = 15, + /** + * Used with 'AudioPolicyForceUse.VIBRATE_RINGING' to specify that in addition to + * vibration the ringing should be played via the BT BLE device. + */ + BT_BLE = 16, +}
diff --git a/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioHalCapCriterionV2.aidl b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioHalCapCriterionV2.aidl index b5ceee3..1cb453a 100644 --- a/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioHalCapCriterionV2.aidl +++ b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioHalCapCriterionV2.aidl
@@ -48,8 +48,9 @@ } @VintfStability parcelable ForceConfigForUse { - android.media.audio.common.AudioPolicyForceUse[] values; - android.media.audio.common.AudioPolicyForceUse defaultValue; + android.media.audio.common.AudioPolicyForceUse forceUse = android.media.audio.common.AudioPolicyForceUse.MEDIA; + android.media.audio.common.AudioPolicyForcedConfig[] values; + android.media.audio.common.AudioPolicyForcedConfig defaultValue = android.media.audio.common.AudioPolicyForcedConfig.NONE; android.media.audio.common.AudioHalCapCriterionV2.LogicalDisjunction logic = android.media.audio.common.AudioHalCapCriterionV2.LogicalDisjunction.EXCLUSIVE; } @VintfStability
diff --git a/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioPolicyForceUse.aidl b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioPolicyForceUse.aidl index eb883e9..7e69f85 100644 --- a/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioPolicyForceUse.aidl +++ b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioPolicyForceUse.aidl
@@ -33,49 +33,14 @@ package android.media.audio.common; /* @hide */ -@SuppressWarnings(value={"redundant-name"}) @VintfStability -union AudioPolicyForceUse { - android.media.audio.common.AudioPolicyForceUse.MediaDeviceCategory forMedia = android.media.audio.common.AudioPolicyForceUse.MediaDeviceCategory.NONE; - android.media.audio.common.AudioPolicyForceUse.CommunicationDeviceCategory forCommunication = android.media.audio.common.AudioPolicyForceUse.CommunicationDeviceCategory.NONE; - android.media.audio.common.AudioPolicyForceUse.CommunicationDeviceCategory forRecord = android.media.audio.common.AudioPolicyForceUse.CommunicationDeviceCategory.NONE; - android.media.audio.common.AudioPolicyForceUse.CommunicationDeviceCategory forVibrateRinging = android.media.audio.common.AudioPolicyForceUse.CommunicationDeviceCategory.NONE; - android.media.audio.common.AudioPolicyForceUse.DockType dock = android.media.audio.common.AudioPolicyForceUse.DockType.NONE; - boolean systemSounds = false; - boolean hdmiSystemAudio = false; - android.media.audio.common.AudioPolicyForceUse.EncodedSurroundConfig encodedSurround = android.media.audio.common.AudioPolicyForceUse.EncodedSurroundConfig.UNSPECIFIED; - @Backing(type="byte") @VintfStability - enum CommunicationDeviceCategory { - NONE = 0, - SPEAKER, - BT_SCO, - BT_BLE, - WIRED_ACCESSORY, - } - @Backing(type="byte") @VintfStability - enum MediaDeviceCategory { - NONE = 0, - SPEAKER, - HEADPHONES, - BT_A2DP, - ANALOG_DOCK, - DIGITAL_DOCK, - WIRED_ACCESSORY, - NO_BT_A2DP, - } - @Backing(type="byte") @VintfStability - enum DockType { - NONE = 0, - BT_CAR_DOCK, - BT_DESK_DOCK, - ANALOG_DOCK, - DIGITAL_DOCK, - WIRED_ACCESSORY, - } - @Backing(type="byte") @VintfStability - enum EncodedSurroundConfig { - UNSPECIFIED = 0, - NEVER, - ALWAYS, - MANUAL, - } +@Backing(type="int") @SuppressWarnings(value={"redundant-name"}) @VintfStability +enum AudioPolicyForceUse { + COMMUNICATION = 0, + MEDIA = 1, + RECORD = 2, + DOCK = 3, + SYSTEM = 4, + HDMI_SYSTEM_AUDIO = 5, + ENCODED_SURROUND = 6, + VIBRATE_RINGING = 7, }
diff --git a/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioPolicyForcedConfig.aidl b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioPolicyForcedConfig.aidl new file mode 100644 index 0000000..5135bcd --- /dev/null +++ b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioPolicyForcedConfig.aidl
@@ -0,0 +1,55 @@ +/* + * Copyright (C) 2024 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// THIS FILE IS IMMUTABLE. DO NOT EDIT IN ANY CASE. // +/////////////////////////////////////////////////////////////////////////////// + +// This file is a snapshot of an AIDL file. Do not edit it manually. There are +// two cases: +// 1). this is a frozen version file - do not edit this in any case. +// 2). this is a 'current' file. If you make a backwards compatible change to +// the interface (from the latest frozen version), the build system will +// prompt you to update this file with `m <name>-update-api`. +// +// You must not make a backward incompatible change to any AIDL file built +// with the aidl_interface module type with versions property set. The module +// type is used to build AIDL files in a way that they can be used across +// independently updatable components of the system. If a device is shipped +// with such a backward incompatible change, it has a high risk of breaking +// later when a module using the interface is updated, e.g., Mainline modules. + +package android.media.audio.common; +/* @hide */ +@Backing(type="int") @SuppressWarnings(value={"redundant-name"}) @VintfStability +enum AudioPolicyForcedConfig { + NONE = 0, + SPEAKER = 1, + HEADPHONES = 2, + BT_SCO = 3, + BT_A2DP = 4, + WIRED_ACCESSORY = 5, + BT_CAR_DOCK = 6, + BT_DESK_DOCK = 7, + ANALOG_DOCK = 8, + DIGITAL_DOCK = 9, + NO_BT_A2DP = 10, + SYSTEM_ENFORCED = 11, + HDMI_SYSTEM_AUDIO_ENFORCED = 12, + ENCODED_SURROUND_NEVER = 13, + ENCODED_SURROUND_ALWAYS = 14, + ENCODED_SURROUND_MANUAL = 15, + BT_BLE = 16, +}