From 04a84760b2fa3c170c58c1214348f9a2667503c7 Mon Sep 17 00:00:00 2001 From: Josh Wu Date: Tue, 4 Jan 2022 00:37:58 -0800 Subject: [PATCH] Add necessary parcelables of metadata This change partial upstream necessary a.m.audio.common.types for aosp/1936041. Bug: 203490261 Test: m android.hardware.audio.common Change-Id: Ice160b3eb642245daaa47394b156fd1ebafab82b Merged-In: I3331d7e3d76db50f5b3c4db57891a20e4f935ad8 --- media/Android.bp | 38 +++++- .../media/audio/common/AudioContentType.aidl | 53 +++++++++ .../media/audio/common/AudioSource.aidl | 90 +++++++++++++++ .../media/audio/common/AudioUsage.aidl | 109 +++++++++++++++++- .../media/audio/common/AudioContentType.aidl | 43 +++++++ .../media/audio/common/AudioSource.aidl | 53 +++++++++ .../media/audio/common/AudioUsage.aidl | 61 ++++++++++ 7 files changed, 442 insertions(+), 5 deletions(-) create mode 100644 media/aidl/android/media/audio/common/AudioContentType.aidl create mode 100644 media/aidl/android/media/audio/common/AudioSource.aidl create mode 100644 media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioContentType.aidl create mode 100644 media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioSource.aidl create mode 100644 media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioUsage.aidl diff --git a/media/Android.bp b/media/Android.bp index a66236e6f4ea3..1b7bef53dba46 100644 --- a/media/Android.bp +++ b/media/Android.bp @@ -20,7 +20,9 @@ aidl_interface { "aidl/android/media/audio/common/AudioFormat.aidl", "aidl/android/media/audio/common/AudioOffloadInfo.aidl", "aidl/android/media/audio/common/AudioStreamType.aidl", - "aidl/android/media/audio/common/AudioUsage.aidl", + ], + imports: [ + "android.media.audio.common.types", ], } @@ -67,3 +69,37 @@ aidl_interface { "media_permission-aidl", ], } + +aidl_interface { + name: "android.media.audio.common.types", + vendor_available: true, + host_supported: true, + double_loadable: true, + flags: [ + "-Werror", + "-Weverything", + ], + local_include_dir: "aidl", + srcs: [ + "aidl/android/media/audio/common/AudioContentType.aidl", + "aidl/android/media/audio/common/AudioSource.aidl", + "aidl/android/media/audio/common/AudioUsage.aidl", + ], + stability: "vintf", + backend: { + cpp: { + min_sdk_version: "29", + apex_available: [ + "//apex_available:platform", + "com.android.media", + ], + }, + java: { + }, + ndk: { + vndk: { + enabled: true, + }, + }, + }, +} diff --git a/media/aidl/android/media/audio/common/AudioContentType.aidl b/media/aidl/android/media/audio/common/AudioContentType.aidl new file mode 100644 index 0000000000000..50ac181adcb2b --- /dev/null +++ b/media/aidl/android/media/audio/common/AudioContentType.aidl @@ -0,0 +1,53 @@ +/* + * 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.audio.common; + +/** + * Content type specifies "what" is playing. The content type expresses the + * general category of the content: speech, music, movie audio, etc. + * This enum corresponds to AudioAttributes.CONTENT_TYPE_* constants in the SDK. + * + * {@hide} + */ +@Backing(type="int") +@VintfStability +enum AudioContentType { + /** + * Content type value to use when the content type is unknown, or other than + * the ones defined. + */ + UNKNOWN = 0, + /** + * Content type value to use when the content type is speech. + */ + SPEECH = 1, + /** + * Content type value to use when the content type is music. + */ + MUSIC = 2, + /** + * Content type value to use when the content type is a soundtrack, + * typically accompanying a movie or TV program. + */ + MOVIE = 3, + /** + * Content type value to use when the content type is a sound used to + * accompany a user action, such as a beep or sound effect expressing a key + * click, or event, such as the type of a sound for a bonus being received + * in a game. These sounds are mostly synthesized or short Foley sounds. + */ + SONIFICATION = 4, +} diff --git a/media/aidl/android/media/audio/common/AudioSource.aidl b/media/aidl/android/media/audio/common/AudioSource.aidl new file mode 100644 index 0000000000000..527ee39b3267f --- /dev/null +++ b/media/aidl/android/media/audio/common/AudioSource.aidl @@ -0,0 +1,90 @@ +/* + * 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.audio.common; + +/** + * Defines the audio source. An audio source defines both a default physical + * source of audio signal, and a recording configuration. This enum corresponds + * to MediaRecorder.AudioSource.* constants in the SDK. + * + * {@hide} + */ +@Backing(type="int") +@VintfStability +enum AudioSource { + /** + * Used as default value in parcelables to indicate that a value was not + * set. Should never be considered a valid setting, except for backward + * compatibility scenarios. + */ + SYS_RESERVED_INVALID = -1, + /** Default audio source. */ + DEFAULT = 0, + /** Microphone audio source. */ + MIC = 1, + /** Voice call uplink (Tx) audio source. */ + VOICE_UPLINK = 2, + /** Voice call downlink (Rx) audio source. */ + VOICE_DOWNLINK = 3, + /** Voice call uplink + downlink (duplex) audio source. */ + VOICE_CALL = 4, + /** + * Microphone audio source tuned for video recording, with the same + * orientation as the camera if available. + */ + CAMCORDER = 5, + /** Microphone audio source tuned for voice recognition. */ + VOICE_RECOGNITION = 6, + /** + * Microphone audio source tuned for voice communications such as VoIP. It + * will for instance take advantage of echo cancellation or automatic gain + * control if available. + */ + VOICE_COMMUNICATION = 7, + /** + * Audio source for a submix of audio streams to be presented remotely. An + * application can use this audio source to capture a mix of audio streams + * that should be transmitted to a remote receiver such as a Wifi display. + * While recording is active, these audio streams are redirected to the + * remote submix instead of being played on the device speaker or headset. + */ + REMOTE_SUBMIX = 8, + /** + * Microphone audio source tuned for unprocessed (raw) sound if available, + * behaves like DEFAULT otherwise. + */ + UNPROCESSED = 9, + /** + * Source for capturing audio meant to be processed in real time and played + * back for live performance (e.g karaoke). The capture path will minimize + * latency and coupling with playback path. + */ + VOICE_PERFORMANCE = 10, + /** + * Source for an echo canceller to capture the reference signal to be + * canceled. The echo reference signal will be captured as close as + * possible to the DAC in order to include all post processing applied to + * the playback path. + */ + ECHO_REFERENCE = 1997, + /** Audio source for capturing broadcast FM tuner output. */ + FM_TUNER = 1998, + /** + * A low-priority, preemptible audio source for for background software + * hotword detection. Same tuning as VOICE_RECOGNITION. + */ + HOTWORD = 1999, +} diff --git a/media/aidl/android/media/audio/common/AudioUsage.aidl b/media/aidl/android/media/audio/common/AudioUsage.aidl index ef348165b22c1..bb0cc1e917570 100644 --- a/media/aidl/android/media/audio/common/AudioUsage.aidl +++ b/media/aidl/android/media/audio/common/AudioUsage.aidl @@ -14,27 +14,128 @@ * limitations under the License. */ - // This file has been semi-automatically generated using hidl2aidl from its counterpart in - // hardware/interfaces/audio/common/5.0/types.hal - package android.media.audio.common; /** * {@hide} */ +@VintfStability @Backing(type="int") enum AudioUsage { + /** + * Used as default value in parcelables to indicate that a value was not + * set. Should never be considered a valid setting, except for backward + * compatibility scenarios. + */ + INVALID = -1, + /** + * Usage value to use when the usage is unknown. + */ UNKNOWN = 0, + /** + * Usage value to use when the usage is media, such as music, or movie + * soundtracks. + */ MEDIA = 1, + /** + * Usage value to use when the usage is voice communications, such as + * telephony or VoIP. + */ VOICE_COMMUNICATION = 2, + /** + * Usage value to use when the usage is in-call signalling, such as with + * a "busy" beep, or DTMF tones. + */ VOICE_COMMUNICATION_SIGNALLING = 3, + /** + * Usage value to use when the usage is an alarm (e.g. wake-up alarm). + */ ALARM = 4, + /** + * Usage value to use when the usage is notification. See other notification + * usages for more specialized uses. + */ NOTIFICATION = 5, + /** + * Usage value to use when the usage is telephony ringtone. + */ NOTIFICATION_TELEPHONY_RINGTONE = 6, + /** + * Usage value to use when the usage is a request to enter/end a + * communication, such as a VoIP communication or video-conference. + * + * Value reserved for system use only. HALs must never return this value to + * the system or accept it from the system. + */ + SYS_RESERVED_NOTIFICATION_COMMUNICATION_REQUEST = 7, + /** + * Usage value to use when the usage is notification for an "instant" + * communication such as a chat, or SMS. + * + * Value reserved for system use only. HALs must never return this value to + * the system or accept it from the system. + */ + SYS_RESERVED_NOTIFICATION_COMMUNICATION_INSTANT = 8, + /** + * Usage value to use when the usage is notification for a + * non-immediate type of communication such as e-mail. + * + * Value reserved for system use only. HALs must never return this value to + * the system or accept it from the system. + */ + SYS_RESERVED_NOTIFICATION_COMMUNICATION_DELAYED = 9, + /** + * Usage value to use when the usage is to attract the user's attention, + * such as a reminder or low battery warning. + */ + NOTIFICATION_EVENT = 10, + /** + * Usage value to use when the usage is for accessibility, such as with + * a screen reader. + */ ASSISTANCE_ACCESSIBILITY = 11, + /** + * Usage value to use when the usage is driving or navigation directions. + */ ASSISTANCE_NAVIGATION_GUIDANCE = 12, + /** + * Usage value to use when the usage is sonification, such as with user + * interface sounds. + */ ASSISTANCE_SONIFICATION = 13, + /** + * Usage value to use when the usage is for game audio. + */ GAME = 14, + /** + * Usage value to use when feeding audio to the platform and replacing + * "traditional" audio source, such as audio capture devices. + */ VIRTUAL_SOURCE = 15, + /** + * Usage value to use for audio responses to user queries, audio + * instructions or help utterances. + */ ASSISTANT = 16, -} + /** + * Usage value to use for assistant voice interaction with remote caller on + * Cell and VoIP calls. + */ + CALL_ASSISTANT = 17, + /** + * Usage value to use when the usage is an emergency. + */ + EMERGENCY = 1000, + /** + * Usage value to use when the usage is a safety sound. + */ + SAFETY = 1001, + /** + * Usage value to use when the usage is a vehicle status. + */ + VEHICLE_STATUS = 1002, + /** + * Usage value to use when the usage is an announcement. + */ + ANNOUNCEMENT = 1003, +} \ No newline at end of file diff --git a/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioContentType.aidl b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioContentType.aidl new file mode 100644 index 0000000000000..3798b8253766e --- /dev/null +++ b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioContentType.aidl @@ -0,0 +1,43 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// 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 -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") @VintfStability +enum AudioContentType { + UNKNOWN = 0, + SPEECH = 1, + MUSIC = 2, + MOVIE = 3, + SONIFICATION = 4, +} diff --git a/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioSource.aidl b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioSource.aidl new file mode 100644 index 0000000000000..d1dfe416d692e --- /dev/null +++ b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioSource.aidl @@ -0,0 +1,53 @@ +/* + * 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. + */ +/////////////////////////////////////////////////////////////////////////////// +// 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 -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") @VintfStability +enum AudioSource { + SYS_RESERVED_INVALID = -1, + DEFAULT = 0, + MIC = 1, + VOICE_UPLINK = 2, + VOICE_DOWNLINK = 3, + VOICE_CALL = 4, + CAMCORDER = 5, + VOICE_RECOGNITION = 6, + VOICE_COMMUNICATION = 7, + REMOTE_SUBMIX = 8, + UNPROCESSED = 9, + VOICE_PERFORMANCE = 10, + ECHO_REFERENCE = 1997, + FM_TUNER = 1998, + HOTWORD = 1999, +} diff --git a/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioUsage.aidl b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioUsage.aidl new file mode 100644 index 0000000000000..4c7245543cfdc --- /dev/null +++ b/media/aidl_api/android.media.audio.common.types/current/android/media/audio/common/AudioUsage.aidl @@ -0,0 +1,61 @@ +/* + * Copyright (C) 2019 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 -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") @VintfStability +enum AudioUsage { + INVALID = -1, + UNKNOWN = 0, + MEDIA = 1, + VOICE_COMMUNICATION = 2, + VOICE_COMMUNICATION_SIGNALLING = 3, + ALARM = 4, + NOTIFICATION = 5, + NOTIFICATION_TELEPHONY_RINGTONE = 6, + SYS_RESERVED_NOTIFICATION_COMMUNICATION_REQUEST = 7, + SYS_RESERVED_NOTIFICATION_COMMUNICATION_INSTANT = 8, + SYS_RESERVED_NOTIFICATION_COMMUNICATION_DELAYED = 9, + NOTIFICATION_EVENT = 10, + ASSISTANCE_ACCESSIBILITY = 11, + ASSISTANCE_NAVIGATION_GUIDANCE = 12, + ASSISTANCE_SONIFICATION = 13, + GAME = 14, + VIRTUAL_SOURCE = 15, + ASSISTANT = 16, + CALL_ASSISTANT = 17, + EMERGENCY = 1000, + SAFETY = 1001, + VEHICLE_STATUS = 1002, + ANNOUNCEMENT = 1003, +}