From f971c08b6a404bd59d9ad0b3b22d287b4413131d Mon Sep 17 00:00:00 2001 From: Kevin Rocard Date: Fri, 23 Feb 2018 10:01:56 -0800 Subject: [PATCH] Audio V4: Update audio.h to V4.0 Exported the audio/common/4.0/types.h to audio-base.h. As all system only values are removed in 4.0 but the headers are still shared between vendor and system, add those values back protected by the macro AUDIO_NO_SYSTEM_DECLARATIONS. This macro is defined for vendor libraries. audio.h used to have *_CNT and *_MAX values in its enum mostly for enum iteration. This was not compatible with Treble as it denied any enum inheritance. *_CNT and *_MAX are now implemented with constants that can be updated and are not part of the HIDL API. Bug: 38184704 Test: compile Change-Id: I5f99ccc9ce262b3addb15cd5034a885c9ab4cedf Merged-In: I5f99ccc9ce262b3addb15cd5034a885c9ab4cedf Cherry-picked from master Signed-off-by: Kevin Rocard --- audio/Android.bp | 3 + audio/include/system/audio-base-utils.h | 177 ++++++++++++++ audio/include/system/audio-base.h | 408 +++++++++++++++++-------------- audio/include/system/audio.h | 35 +-- audio/include/system/audio_effect-base.h | 25 +- audio/include/system/audio_effect.h | 6 + 6 files changed, 438 insertions(+), 216 deletions(-) create mode 100644 audio/include/system/audio-base-utils.h diff --git a/audio/Android.bp b/audio/Android.bp index 1e9e5697..68043da8 100644 --- a/audio/Android.bp +++ b/audio/Android.bp @@ -15,5 +15,8 @@ cc_library_headers { windows: { enabled: true, }, + vendor: { + cflags: ["AUDIO_NO_SYSTEM_DECLARATIONS"], + }, } } diff --git a/audio/include/system/audio-base-utils.h b/audio/include/system/audio-base-utils.h new file mode 100644 index 00000000..bd3e7633 --- /dev/null +++ b/audio/include/system/audio-base-utils.h @@ -0,0 +1,177 @@ +/* + * Copyright (C) 2018 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. + */ + +#ifndef ANDROID_AUDIO_BASE_UTILS_H +#define ANDROID_AUDIO_BASE_UTILS_H + +#include "audio-base.h" + +/** Define helper values to iterate over enum, extend them or checking value validity. + * Those values are compatible with the O corresponding enum values. + * They are not macro like similar values in audio.h to avoid conflicting + * with the libhardware_legacy audio.h. + */ +enum { + /** Number of audio stream available to vendors. */ + AUDIO_STREAM_PUBLIC_CNT = AUDIO_STREAM_ACCESSIBILITY + 1, + +#ifndef AUDIO_NO_SYSTEM_DECLARATIONS + /** Total number of stream handled by the policy*/ + AUDIO_STREAM_FOR_POLICY_CNT= AUDIO_STREAM_REROUTING + 1, +#endif + + /** Total number of stream. */ + AUDIO_STREAM_CNT = AUDIO_STREAM_PATCH + 1, + + AUDIO_SOURCE_MAX = AUDIO_SOURCE_UNPROCESSED, + AUDIO_SOURCE_CNT = AUDIO_SOURCE_MAX + 1, + + AUDIO_MODE_MAX = AUDIO_MODE_IN_COMMUNICATION, + AUDIO_MODE_CNT = AUDIO_MODE_MAX + 1, + + /** For retrocompatibility AUDIO_MODE_* and AUDIO_STREAM_* must be signed. */ + AUDIO_DETAIL_NEGATIVE_VALUE = -1, +}; + +enum { + AUDIO_CHANNEL_OUT_ALL = AUDIO_CHANNEL_OUT_FRONT_LEFT | + AUDIO_CHANNEL_OUT_FRONT_RIGHT | + AUDIO_CHANNEL_OUT_FRONT_CENTER | + AUDIO_CHANNEL_OUT_LOW_FREQUENCY | + AUDIO_CHANNEL_OUT_BACK_LEFT | + AUDIO_CHANNEL_OUT_BACK_RIGHT | + AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER | + AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER | + AUDIO_CHANNEL_OUT_BACK_CENTER | + AUDIO_CHANNEL_OUT_SIDE_LEFT | + AUDIO_CHANNEL_OUT_SIDE_RIGHT | + AUDIO_CHANNEL_OUT_TOP_CENTER | + AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT | + AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER | + AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT | + AUDIO_CHANNEL_OUT_TOP_BACK_LEFT | + AUDIO_CHANNEL_OUT_TOP_BACK_CENTER | + AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT | + AUDIO_CHANNEL_OUT_TOP_CENTER_LEFT | + AUDIO_CHANNEL_OUT_TOP_CENTER_RIGHT, + + AUDIO_CHANNEL_IN_ALL = AUDIO_CHANNEL_IN_LEFT | + AUDIO_CHANNEL_IN_RIGHT | + AUDIO_CHANNEL_IN_FRONT | + AUDIO_CHANNEL_IN_BACK| + AUDIO_CHANNEL_IN_LEFT_PROCESSED | + AUDIO_CHANNEL_IN_RIGHT_PROCESSED | + AUDIO_CHANNEL_IN_FRONT_PROCESSED | + AUDIO_CHANNEL_IN_BACK_PROCESSED| + AUDIO_CHANNEL_IN_PRESSURE | + AUDIO_CHANNEL_IN_X_AXIS | + AUDIO_CHANNEL_IN_Y_AXIS | + AUDIO_CHANNEL_IN_Z_AXIS | + AUDIO_CHANNEL_IN_VOICE_UPLINK | + AUDIO_CHANNEL_IN_VOICE_DNLINK | + AUDIO_CHANNEL_IN_BACK_LEFT | + AUDIO_CHANNEL_IN_BACK_RIGHT | + AUDIO_CHANNEL_IN_CENTER | + AUDIO_CHANNEL_IN_LOW_FREQUENCY | + AUDIO_CHANNEL_IN_TOP_LEFT | + AUDIO_CHANNEL_IN_TOP_RIGHT, + + AUDIO_DEVICE_OUT_ALL = AUDIO_DEVICE_OUT_EARPIECE | + AUDIO_DEVICE_OUT_SPEAKER | + AUDIO_DEVICE_OUT_WIRED_HEADSET | + AUDIO_DEVICE_OUT_WIRED_HEADPHONE | + AUDIO_DEVICE_OUT_BLUETOOTH_SCO | + AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET | + AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT | + AUDIO_DEVICE_OUT_BLUETOOTH_A2DP | + AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES | + AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER | + AUDIO_DEVICE_OUT_HDMI | + AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET | + AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET | + AUDIO_DEVICE_OUT_USB_ACCESSORY | + AUDIO_DEVICE_OUT_USB_DEVICE | + AUDIO_DEVICE_OUT_REMOTE_SUBMIX | + AUDIO_DEVICE_OUT_TELEPHONY_TX | + AUDIO_DEVICE_OUT_LINE | + AUDIO_DEVICE_OUT_HDMI_ARC | + AUDIO_DEVICE_OUT_SPDIF | + AUDIO_DEVICE_OUT_FM | + AUDIO_DEVICE_OUT_AUX_LINE | + AUDIO_DEVICE_OUT_SPEAKER_SAFE | + AUDIO_DEVICE_OUT_IP | + AUDIO_DEVICE_OUT_BUS | + AUDIO_DEVICE_OUT_PROXY | + AUDIO_DEVICE_OUT_USB_HEADSET | + AUDIO_DEVICE_OUT_HEARING_AID | + AUDIO_DEVICE_OUT_ECHO_CANCELLER | + AUDIO_DEVICE_OUT_DEFAULT, + + AUDIO_DEVICE_OUT_ALL_A2DP = AUDIO_DEVICE_OUT_BLUETOOTH_A2DP | + AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES | + AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER, + + AUDIO_DEVICE_OUT_ALL_SCO = AUDIO_DEVICE_OUT_BLUETOOTH_SCO | + AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET | + AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT, + + AUDIO_DEVICE_OUT_ALL_USB = AUDIO_DEVICE_OUT_USB_ACCESSORY | + AUDIO_DEVICE_OUT_USB_DEVICE | + AUDIO_DEVICE_OUT_USB_HEADSET, + + AUDIO_DEVICE_IN_ALL = AUDIO_DEVICE_IN_COMMUNICATION | + AUDIO_DEVICE_IN_AMBIENT | + AUDIO_DEVICE_IN_BUILTIN_MIC | + AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET | + AUDIO_DEVICE_IN_WIRED_HEADSET | + AUDIO_DEVICE_IN_HDMI | + AUDIO_DEVICE_IN_TELEPHONY_RX | + AUDIO_DEVICE_IN_BACK_MIC | + AUDIO_DEVICE_IN_REMOTE_SUBMIX | + AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET | + AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET | + AUDIO_DEVICE_IN_USB_ACCESSORY | + AUDIO_DEVICE_IN_USB_DEVICE | + AUDIO_DEVICE_IN_FM_TUNER | + AUDIO_DEVICE_IN_TV_TUNER | + AUDIO_DEVICE_IN_LINE | + AUDIO_DEVICE_IN_SPDIF | + AUDIO_DEVICE_IN_BLUETOOTH_A2DP | + AUDIO_DEVICE_IN_LOOPBACK | + AUDIO_DEVICE_IN_IP | + AUDIO_DEVICE_IN_BUS | + AUDIO_DEVICE_IN_PROXY | + AUDIO_DEVICE_IN_USB_HEADSET | + AUDIO_DEVICE_IN_BLUETOOTH_BLE | + AUDIO_DEVICE_IN_DEFAULT, + + AUDIO_DEVICE_IN_ALL_SCO = AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET, + + AUDIO_DEVICE_IN_ALL_USB = AUDIO_DEVICE_IN_USB_ACCESSORY | + AUDIO_DEVICE_IN_USB_DEVICE | + AUDIO_DEVICE_IN_USB_HEADSET, + + AUDIO_USAGE_MAX = AUDIO_USAGE_ASSISTANT, + AUDIO_USAGE_CNT = AUDIO_USAGE_ASSISTANT + 1, + + AUDIO_PORT_CONFIG_ALL = AUDIO_PORT_CONFIG_SAMPLE_RATE | + AUDIO_PORT_CONFIG_CHANNEL_MASK | + AUDIO_PORT_CONFIG_FORMAT | + AUDIO_PORT_CONFIG_GAIN, +}; // enum + + +#endif // ANDROID_AUDIO_BASE_UTILS_H diff --git a/audio/include/system/audio-base.h b/audio/include/system/audio-base.h index 441226d1..9152084e 100644 --- a/audio/include/system/audio-base.h +++ b/audio/include/system/audio-base.h @@ -1,9 +1,10 @@ -// This file is autogenerated by hidl-gen. Do not edit manually. -// Source: android.hardware.audio.common@2.0 +// This file is autogenerated by hidl-gen +// then manualy edited for retrocompatiblity +// Source: android.hardware.audio.common@4.0 // Root: android.hardware:hardware/interfaces -#ifndef HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_COMMON_V2_0_EXPORTED_CONSTANTS_H_ -#define HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_COMMON_V2_0_EXPORTED_CONSTANTS_H_ +#ifndef HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_COMMON_V4_0_EXPORTED_CONSTANTS_H_ +#define HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_COMMON_V4_0_EXPORTED_CONSTANTS_H_ #ifdef __cplusplus extern "C" { @@ -30,11 +31,12 @@ typedef enum { AUDIO_STREAM_DTMF = 8, AUDIO_STREAM_TTS = 9, AUDIO_STREAM_ACCESSIBILITY = 10, +#ifndef AUDIO_NO_SYSTEM_DECLARATIONS + /** For dynamic policy output mixes. Only used by the audio policy */ AUDIO_STREAM_REROUTING = 11, + /** For audio flinger tracks volume. Only used by the audioflinger */ AUDIO_STREAM_PATCH = 12, - AUDIO_STREAM_PUBLIC_CNT = 11, // (ACCESSIBILITY + 1) - AUDIO_STREAM_FOR_POLICY_CNT = 12, // PATCH - AUDIO_STREAM_CNT = 13, // (PATCH + 1) +#endif // AUDIO_NO_SYSTEM_DECLARATIONS } audio_stream_type_t; typedef enum { @@ -48,10 +50,15 @@ typedef enum { AUDIO_SOURCE_VOICE_COMMUNICATION = 7, AUDIO_SOURCE_REMOTE_SUBMIX = 8, AUDIO_SOURCE_UNPROCESSED = 9, - AUDIO_SOURCE_CNT = 10, - AUDIO_SOURCE_MAX = 9, // (CNT - 1) AUDIO_SOURCE_FM_TUNER = 1998, +#ifndef AUDIO_NO_SYSTEM_DECLARATIONS + /** + * A low-priority, preemptible audio source for for background software + * hotword detection. Same tuning as VOICE_RECOGNITION. + * Used only internally by the framework. + */ AUDIO_SOURCE_HOTWORD = 1999, +#endif // AUDIO_NO_SYSTEM_DECLARATIONS } audio_source_t; typedef enum { @@ -62,64 +69,70 @@ typedef enum { } audio_session_t; typedef enum { - AUDIO_FORMAT_INVALID = 4294967295u, // 0xFFFFFFFFUL - AUDIO_FORMAT_DEFAULT = 0u, // 0 - AUDIO_FORMAT_PCM = 0u, // 0x00000000UL - AUDIO_FORMAT_MP3 = 16777216u, // 0x01000000UL - AUDIO_FORMAT_AMR_NB = 33554432u, // 0x02000000UL - AUDIO_FORMAT_AMR_WB = 50331648u, // 0x03000000UL - AUDIO_FORMAT_AAC = 67108864u, // 0x04000000UL - AUDIO_FORMAT_HE_AAC_V1 = 83886080u, // 0x05000000UL - AUDIO_FORMAT_HE_AAC_V2 = 100663296u, // 0x06000000UL - AUDIO_FORMAT_VORBIS = 117440512u, // 0x07000000UL - AUDIO_FORMAT_OPUS = 134217728u, // 0x08000000UL - AUDIO_FORMAT_AC3 = 150994944u, // 0x09000000UL - AUDIO_FORMAT_E_AC3 = 167772160u, // 0x0A000000UL - AUDIO_FORMAT_DTS = 184549376u, // 0x0B000000UL - AUDIO_FORMAT_DTS_HD = 201326592u, // 0x0C000000UL - AUDIO_FORMAT_IEC61937 = 218103808u, // 0x0D000000UL - AUDIO_FORMAT_DOLBY_TRUEHD = 234881024u, // 0x0E000000UL - AUDIO_FORMAT_EVRC = 268435456u, // 0x10000000UL - AUDIO_FORMAT_EVRCB = 285212672u, // 0x11000000UL - AUDIO_FORMAT_EVRCWB = 301989888u, // 0x12000000UL - AUDIO_FORMAT_EVRCNW = 318767104u, // 0x13000000UL - AUDIO_FORMAT_AAC_ADIF = 335544320u, // 0x14000000UL - AUDIO_FORMAT_WMA = 352321536u, // 0x15000000UL - AUDIO_FORMAT_WMA_PRO = 369098752u, // 0x16000000UL - AUDIO_FORMAT_AMR_WB_PLUS = 385875968u, // 0x17000000UL - AUDIO_FORMAT_MP2 = 402653184u, // 0x18000000UL - AUDIO_FORMAT_QCELP = 419430400u, // 0x19000000UL - AUDIO_FORMAT_DSD = 436207616u, // 0x1A000000UL - AUDIO_FORMAT_FLAC = 452984832u, // 0x1B000000UL - AUDIO_FORMAT_ALAC = 469762048u, // 0x1C000000UL - AUDIO_FORMAT_APE = 486539264u, // 0x1D000000UL - AUDIO_FORMAT_AAC_ADTS = 503316480u, // 0x1E000000UL - AUDIO_FORMAT_SBC = 520093696u, // 0x1F000000UL - AUDIO_FORMAT_APTX = 536870912u, // 0x20000000UL - AUDIO_FORMAT_APTX_HD = 553648128u, // 0x21000000UL - AUDIO_FORMAT_AC4 = 570425344u, // 0x22000000UL - AUDIO_FORMAT_LDAC = 587202560u, // 0x23000000UL - AUDIO_FORMAT_MAIN_MASK = 4278190080u, // 0xFF000000UL - AUDIO_FORMAT_SUB_MASK = 16777215u, // 0x00FFFFFFUL - AUDIO_FORMAT_PCM_SUB_16_BIT = 1u, // 0x1 - AUDIO_FORMAT_PCM_SUB_8_BIT = 2u, // 0x2 - AUDIO_FORMAT_PCM_SUB_32_BIT = 3u, // 0x3 - AUDIO_FORMAT_PCM_SUB_8_24_BIT = 4u, // 0x4 - AUDIO_FORMAT_PCM_SUB_FLOAT = 5u, // 0x5 - AUDIO_FORMAT_PCM_SUB_24_BIT_PACKED = 6u, // 0x6 - AUDIO_FORMAT_MP3_SUB_NONE = 0u, // 0x0 - AUDIO_FORMAT_AMR_SUB_NONE = 0u, // 0x0 - AUDIO_FORMAT_AAC_SUB_MAIN = 1u, // 0x1 - AUDIO_FORMAT_AAC_SUB_LC = 2u, // 0x2 - AUDIO_FORMAT_AAC_SUB_SSR = 4u, // 0x4 - AUDIO_FORMAT_AAC_SUB_LTP = 8u, // 0x8 - AUDIO_FORMAT_AAC_SUB_HE_V1 = 16u, // 0x10 - AUDIO_FORMAT_AAC_SUB_SCALABLE = 32u, // 0x20 - AUDIO_FORMAT_AAC_SUB_ERLC = 64u, // 0x40 - AUDIO_FORMAT_AAC_SUB_LD = 128u, // 0x80 - AUDIO_FORMAT_AAC_SUB_HE_V2 = 256u, // 0x100 - AUDIO_FORMAT_AAC_SUB_ELD = 512u, // 0x200 - AUDIO_FORMAT_VORBIS_SUB_NONE = 0u, // 0x0 + AUDIO_FORMAT_INVALID = 4294967295u, + AUDIO_FORMAT_DEFAULT = 0u, + AUDIO_FORMAT_PCM = 0u, + AUDIO_FORMAT_MP3 = 16777216u, + AUDIO_FORMAT_AMR_NB = 33554432u, + AUDIO_FORMAT_AMR_WB = 50331648u, + AUDIO_FORMAT_AAC = 67108864u, + AUDIO_FORMAT_HE_AAC_V1 = 83886080u, + AUDIO_FORMAT_HE_AAC_V2 = 100663296u, + AUDIO_FORMAT_VORBIS = 117440512u, + AUDIO_FORMAT_OPUS = 134217728u, + AUDIO_FORMAT_AC3 = 150994944u, + AUDIO_FORMAT_E_AC3 = 167772160u, + AUDIO_FORMAT_DTS = 184549376u, + AUDIO_FORMAT_DTS_HD = 201326592u, + AUDIO_FORMAT_IEC61937 = 218103808u, + AUDIO_FORMAT_DOLBY_TRUEHD = 234881024u, + AUDIO_FORMAT_EVRC = 268435456u, + AUDIO_FORMAT_EVRCB = 285212672u, + AUDIO_FORMAT_EVRCWB = 301989888u, + AUDIO_FORMAT_EVRCNW = 318767104u, + AUDIO_FORMAT_AAC_ADIF = 335544320u, + AUDIO_FORMAT_WMA = 352321536u, + AUDIO_FORMAT_WMA_PRO = 369098752u, + AUDIO_FORMAT_AMR_WB_PLUS = 385875968u, + AUDIO_FORMAT_MP2 = 402653184u, + AUDIO_FORMAT_QCELP = 419430400u, + AUDIO_FORMAT_DSD = 436207616u, + AUDIO_FORMAT_FLAC = 452984832u, + AUDIO_FORMAT_ALAC = 469762048u, + AUDIO_FORMAT_APE = 486539264u, + AUDIO_FORMAT_AAC_ADTS = 503316480u, + AUDIO_FORMAT_SBC = 520093696u, + AUDIO_FORMAT_APTX = 536870912u, + AUDIO_FORMAT_APTX_HD = 553648128u, + AUDIO_FORMAT_AC4 = 570425344u, + AUDIO_FORMAT_LDAC = 587202560u, + AUDIO_FORMAT_MAT = 603979776u, + AUDIO_FORMAT_MAIN_MASK = 4278190080u, + AUDIO_FORMAT_SUB_MASK = 16777215u, + AUDIO_FORMAT_PCM_SUB_16_BIT = 1u, + AUDIO_FORMAT_PCM_SUB_8_BIT = 2u, + AUDIO_FORMAT_PCM_SUB_32_BIT = 3u, + AUDIO_FORMAT_PCM_SUB_8_24_BIT = 4u, + AUDIO_FORMAT_PCM_SUB_FLOAT = 5u, + AUDIO_FORMAT_PCM_SUB_24_BIT_PACKED = 6u, + AUDIO_FORMAT_MP3_SUB_NONE = 0u, + AUDIO_FORMAT_AMR_SUB_NONE = 0u, + AUDIO_FORMAT_AAC_SUB_MAIN = 1u, + AUDIO_FORMAT_AAC_SUB_LC = 2u, + AUDIO_FORMAT_AAC_SUB_SSR = 4u, + AUDIO_FORMAT_AAC_SUB_LTP = 8u, + AUDIO_FORMAT_AAC_SUB_HE_V1 = 16u, + AUDIO_FORMAT_AAC_SUB_SCALABLE = 32u, + AUDIO_FORMAT_AAC_SUB_ERLC = 64u, + AUDIO_FORMAT_AAC_SUB_LD = 128u, + AUDIO_FORMAT_AAC_SUB_HE_V2 = 256u, + AUDIO_FORMAT_AAC_SUB_ELD = 512u, + AUDIO_FORMAT_AAC_SUB_XHE = 768u, + AUDIO_FORMAT_VORBIS_SUB_NONE = 0u, + AUDIO_FORMAT_E_AC3_SUB_JOC = 1u, + AUDIO_FORMAT_MAT_SUB_1_0 = 1u, + AUDIO_FORMAT_MAT_SUB_2_0 = 2u, + AUDIO_FORMAT_MAT_SUB_2_1 = 3u, AUDIO_FORMAT_PCM_16_BIT = 1u, // (PCM | PCM_SUB_16_BIT) AUDIO_FORMAT_PCM_8_BIT = 2u, // (PCM | PCM_SUB_8_BIT) AUDIO_FORMAT_PCM_32_BIT = 3u, // (PCM | PCM_SUB_32_BIT) @@ -136,6 +149,7 @@ typedef enum { AUDIO_FORMAT_AAC_LD = 67108992u, // (AAC | AAC_SUB_LD) AUDIO_FORMAT_AAC_HE_V2 = 67109120u, // (AAC | AAC_SUB_HE_V2) AUDIO_FORMAT_AAC_ELD = 67109376u, // (AAC | AAC_SUB_ELD) + AUDIO_FORMAT_AAC_XHE = 67109632u, // (AAC | AAC_SUB_XHE) AUDIO_FORMAT_AAC_ADTS_MAIN = 503316481u, // (AAC_ADTS | AAC_SUB_MAIN) AUDIO_FORMAT_AAC_ADTS_LC = 503316482u, // (AAC_ADTS | AAC_SUB_LC) AUDIO_FORMAT_AAC_ADTS_SSR = 503316484u, // (AAC_ADTS | AAC_SUB_SSR) @@ -146,6 +160,11 @@ typedef enum { AUDIO_FORMAT_AAC_ADTS_LD = 503316608u, // (AAC_ADTS | AAC_SUB_LD) AUDIO_FORMAT_AAC_ADTS_HE_V2 = 503316736u, // (AAC_ADTS | AAC_SUB_HE_V2) AUDIO_FORMAT_AAC_ADTS_ELD = 503316992u, // (AAC_ADTS | AAC_SUB_ELD) + AUDIO_FORMAT_AAC_ADTS_XHE = 503317248u, // (AAC_ADTS | AAC_SUB_XHE) + AUDIO_FORMAT_E_AC3_JOC = 167772161u, // (E_AC3 | E_AC3_SUB_JOC) + AUDIO_FORMAT_MAT_1_0 = 603979777u, // (MAT | MAT_SUB_1_0) + AUDIO_FORMAT_MAT_2_0 = 603979778u, // (MAT | MAT_SUB_2_0) + AUDIO_FORMAT_MAT_2_1 = 603979779u, // (MAT | MAT_SUB_2_1) } audio_format_t; enum { @@ -154,31 +173,37 @@ enum { }; enum { - AUDIO_CHANNEL_REPRESENTATION_POSITION = 0u, // 0 - AUDIO_CHANNEL_REPRESENTATION_INDEX = 2u, // 2 - AUDIO_CHANNEL_NONE = 0u, // 0x0 - AUDIO_CHANNEL_INVALID = 3221225472u, // 0xC0000000 - AUDIO_CHANNEL_OUT_FRONT_LEFT = 1u, // 0x1 - AUDIO_CHANNEL_OUT_FRONT_RIGHT = 2u, // 0x2 - AUDIO_CHANNEL_OUT_FRONT_CENTER = 4u, // 0x4 - AUDIO_CHANNEL_OUT_LOW_FREQUENCY = 8u, // 0x8 - AUDIO_CHANNEL_OUT_BACK_LEFT = 16u, // 0x10 - AUDIO_CHANNEL_OUT_BACK_RIGHT = 32u, // 0x20 - AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 64u, // 0x40 - AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 128u, // 0x80 - AUDIO_CHANNEL_OUT_BACK_CENTER = 256u, // 0x100 - AUDIO_CHANNEL_OUT_SIDE_LEFT = 512u, // 0x200 - AUDIO_CHANNEL_OUT_SIDE_RIGHT = 1024u, // 0x400 - AUDIO_CHANNEL_OUT_TOP_CENTER = 2048u, // 0x800 - AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT = 4096u, // 0x1000 - AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER = 8192u, // 0x2000 - AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT = 16384u, // 0x4000 - AUDIO_CHANNEL_OUT_TOP_BACK_LEFT = 32768u, // 0x8000 - AUDIO_CHANNEL_OUT_TOP_BACK_CENTER = 65536u, // 0x10000 - AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT = 131072u, // 0x20000 + AUDIO_CHANNEL_REPRESENTATION_POSITION = 0u, + AUDIO_CHANNEL_REPRESENTATION_INDEX = 2u, + AUDIO_CHANNEL_NONE = 0u, + AUDIO_CHANNEL_INVALID = 3221225472u, + AUDIO_CHANNEL_OUT_FRONT_LEFT = 1u, + AUDIO_CHANNEL_OUT_FRONT_RIGHT = 2u, + AUDIO_CHANNEL_OUT_FRONT_CENTER = 4u, + AUDIO_CHANNEL_OUT_LOW_FREQUENCY = 8u, + AUDIO_CHANNEL_OUT_BACK_LEFT = 16u, + AUDIO_CHANNEL_OUT_BACK_RIGHT = 32u, + AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 64u, + AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 128u, + AUDIO_CHANNEL_OUT_BACK_CENTER = 256u, + AUDIO_CHANNEL_OUT_SIDE_LEFT = 512u, + AUDIO_CHANNEL_OUT_SIDE_RIGHT = 1024u, + AUDIO_CHANNEL_OUT_TOP_CENTER = 2048u, + AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT = 4096u, + AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER = 8192u, + AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT = 16384u, + AUDIO_CHANNEL_OUT_TOP_BACK_LEFT = 32768u, + AUDIO_CHANNEL_OUT_TOP_BACK_CENTER = 65536u, + AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT = 131072u, + AUDIO_CHANNEL_OUT_TOP_CENTER_LEFT = 262144u, + AUDIO_CHANNEL_OUT_TOP_CENTER_RIGHT = 524288u, AUDIO_CHANNEL_OUT_MONO = 1u, // OUT_FRONT_LEFT AUDIO_CHANNEL_OUT_STEREO = 3u, // (OUT_FRONT_LEFT | OUT_FRONT_RIGHT) AUDIO_CHANNEL_OUT_2POINT1 = 11u, // ((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_LOW_FREQUENCY) + AUDIO_CHANNEL_OUT_2POINT0POINT2 = 786435u, // (((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_TOP_CENTER_LEFT) | OUT_TOP_CENTER_RIGHT) + AUDIO_CHANNEL_OUT_2POINT1POINT2 = 786443u, // ((((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_TOP_CENTER_LEFT) | OUT_TOP_CENTER_RIGHT) | OUT_LOW_FREQUENCY) + AUDIO_CHANNEL_OUT_3POINT0POINT2 = 786439u, // ((((OUT_FRONT_LEFT | OUT_FRONT_CENTER) | OUT_FRONT_RIGHT) | OUT_TOP_CENTER_LEFT) | OUT_TOP_CENTER_RIGHT) + AUDIO_CHANNEL_OUT_3POINT1POINT2 = 786447u, // (((((OUT_FRONT_LEFT | OUT_FRONT_CENTER) | OUT_FRONT_RIGHT) | OUT_TOP_CENTER_LEFT) | OUT_TOP_CENTER_RIGHT) | OUT_LOW_FREQUENCY) AUDIO_CHANNEL_OUT_QUAD = 51u, // (((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_BACK_LEFT) | OUT_BACK_RIGHT) AUDIO_CHANNEL_OUT_QUAD_BACK = 51u, // OUT_QUAD AUDIO_CHANNEL_OUT_QUAD_SIDE = 1539u, // (((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_SIDE_LEFT) | OUT_SIDE_RIGHT) @@ -189,30 +214,35 @@ enum { AUDIO_CHANNEL_OUT_5POINT1_SIDE = 1551u, // (((((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_FRONT_CENTER) | OUT_LOW_FREQUENCY) | OUT_SIDE_LEFT) | OUT_SIDE_RIGHT) AUDIO_CHANNEL_OUT_6POINT1 = 319u, // ((((((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_FRONT_CENTER) | OUT_LOW_FREQUENCY) | OUT_BACK_LEFT) | OUT_BACK_RIGHT) | OUT_BACK_CENTER) AUDIO_CHANNEL_OUT_7POINT1 = 1599u, // (((((((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_FRONT_CENTER) | OUT_LOW_FREQUENCY) | OUT_BACK_LEFT) | OUT_BACK_RIGHT) | OUT_SIDE_LEFT) | OUT_SIDE_RIGHT) - AUDIO_CHANNEL_OUT_ALL = 262143u, // (((((((((((((((((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_FRONT_CENTER) | OUT_LOW_FREQUENCY) | OUT_BACK_LEFT) | OUT_BACK_RIGHT) | OUT_FRONT_LEFT_OF_CENTER) | OUT_FRONT_RIGHT_OF_CENTER) | OUT_BACK_CENTER) | OUT_SIDE_LEFT) | OUT_SIDE_RIGHT) | OUT_TOP_CENTER) | OUT_TOP_FRONT_LEFT) | OUT_TOP_FRONT_CENTER) | OUT_TOP_FRONT_RIGHT) | OUT_TOP_BACK_LEFT) | OUT_TOP_BACK_CENTER) | OUT_TOP_BACK_RIGHT) - AUDIO_CHANNEL_IN_LEFT = 4u, // 0x4 - AUDIO_CHANNEL_IN_RIGHT = 8u, // 0x8 - AUDIO_CHANNEL_IN_FRONT = 16u, // 0x10 - AUDIO_CHANNEL_IN_BACK = 32u, // 0x20 - AUDIO_CHANNEL_IN_LEFT_PROCESSED = 64u, // 0x40 - AUDIO_CHANNEL_IN_RIGHT_PROCESSED = 128u, // 0x80 - AUDIO_CHANNEL_IN_FRONT_PROCESSED = 256u, // 0x100 - AUDIO_CHANNEL_IN_BACK_PROCESSED = 512u, // 0x200 - AUDIO_CHANNEL_IN_PRESSURE = 1024u, // 0x400 - AUDIO_CHANNEL_IN_X_AXIS = 2048u, // 0x800 - AUDIO_CHANNEL_IN_Y_AXIS = 4096u, // 0x1000 - AUDIO_CHANNEL_IN_Z_AXIS = 8192u, // 0x2000 - AUDIO_CHANNEL_IN_VOICE_UPLINK = 16384u, // 0x4000 - AUDIO_CHANNEL_IN_VOICE_DNLINK = 32768u, // 0x8000 + AUDIO_CHANNEL_IN_LEFT = 4u, + AUDIO_CHANNEL_IN_RIGHT = 8u, + AUDIO_CHANNEL_IN_FRONT = 16u, + AUDIO_CHANNEL_IN_BACK = 32u, + AUDIO_CHANNEL_IN_LEFT_PROCESSED = 64u, + AUDIO_CHANNEL_IN_RIGHT_PROCESSED = 128u, + AUDIO_CHANNEL_IN_FRONT_PROCESSED = 256u, + AUDIO_CHANNEL_IN_BACK_PROCESSED = 512u, + AUDIO_CHANNEL_IN_PRESSURE = 1024u, + AUDIO_CHANNEL_IN_X_AXIS = 2048u, + AUDIO_CHANNEL_IN_Y_AXIS = 4096u, + AUDIO_CHANNEL_IN_Z_AXIS = 8192u, + AUDIO_CHANNEL_IN_BACK_LEFT = 65536u, + AUDIO_CHANNEL_IN_BACK_RIGHT = 131072u, + AUDIO_CHANNEL_IN_CENTER = 262144u, + AUDIO_CHANNEL_IN_LOW_FREQUENCY = 1048576u, + AUDIO_CHANNEL_IN_TOP_LEFT = 2097152u, + AUDIO_CHANNEL_IN_TOP_RIGHT = 4194304u, + AUDIO_CHANNEL_IN_VOICE_UPLINK = 16384u, + AUDIO_CHANNEL_IN_VOICE_DNLINK = 32768u, AUDIO_CHANNEL_IN_MONO = 16u, // IN_FRONT AUDIO_CHANNEL_IN_STEREO = 12u, // (IN_LEFT | IN_RIGHT) AUDIO_CHANNEL_IN_FRONT_BACK = 48u, // (IN_FRONT | IN_BACK) AUDIO_CHANNEL_IN_6 = 252u, // (((((IN_LEFT | IN_RIGHT) | IN_FRONT) | IN_BACK) | IN_LEFT_PROCESSED) | IN_RIGHT_PROCESSED) + AUDIO_CHANNEL_IN_5POINT1 = 1507340u, // (((((IN_LEFT | IN_CENTER) | IN_RIGHT) | IN_BACK_LEFT) | IN_BACK_RIGHT) | IN_LOW_FREQUENCY) AUDIO_CHANNEL_IN_VOICE_UPLINK_MONO = 16400u, // (IN_VOICE_UPLINK | IN_MONO) AUDIO_CHANNEL_IN_VOICE_DNLINK_MONO = 32784u, // (IN_VOICE_DNLINK | IN_MONO) AUDIO_CHANNEL_IN_VOICE_CALL_MONO = 49168u, // (IN_VOICE_UPLINK_MONO | IN_VOICE_DNLINK_MONO) - AUDIO_CHANNEL_IN_ALL = 65532u, // (((((((((((((IN_LEFT | IN_RIGHT) | IN_FRONT) | IN_BACK) | IN_LEFT_PROCESSED) | IN_RIGHT_PROCESSED) | IN_FRONT_PROCESSED) | IN_BACK_PROCESSED) | IN_PRESSURE) | IN_X_AXIS) | IN_Y_AXIS) | IN_Z_AXIS) | IN_VOICE_UPLINK) | IN_VOICE_DNLINK) - AUDIO_CHANNEL_COUNT_MAX = 30u, // 30 + AUDIO_CHANNEL_COUNT_MAX = 30u, AUDIO_CHANNEL_INDEX_HDR = 2147483648u, // (REPRESENTATION_INDEX << COUNT_MAX) AUDIO_CHANNEL_INDEX_MASK_1 = 2147483649u, // (INDEX_HDR | ((1 << 1) - 1)) AUDIO_CHANNEL_INDEX_MASK_2 = 2147483651u, // (INDEX_HDR | ((1 << 2) - 1)) @@ -224,59 +254,52 @@ enum { AUDIO_CHANNEL_INDEX_MASK_8 = 2147483903u, // (INDEX_HDR | ((1 << 8) - 1)) }; -enum { - AUDIO_INTERLEAVE_LEFT = 0, - AUDIO_INTERLEAVE_RIGHT = 1, -}; - typedef enum { +#ifndef AUDIO_NO_SYSTEM_DECLARATIONS AUDIO_MODE_INVALID = -2, // (-2) AUDIO_MODE_CURRENT = -1, // (-1) +#endif // AUDIO_NO_SYSTEM_DECLARATIONS AUDIO_MODE_NORMAL = 0, AUDIO_MODE_RINGTONE = 1, AUDIO_MODE_IN_CALL = 2, AUDIO_MODE_IN_COMMUNICATION = 3, - AUDIO_MODE_CNT = 4, - AUDIO_MODE_MAX = 3, // (CNT - 1) } audio_mode_t; enum { - AUDIO_DEVICE_NONE = 0u, // 0x0 - AUDIO_DEVICE_BIT_IN = 2147483648u, // 0x80000000 - AUDIO_DEVICE_BIT_DEFAULT = 1073741824u, // 0x40000000 - AUDIO_DEVICE_OUT_EARPIECE = 1u, // 0x1 - AUDIO_DEVICE_OUT_SPEAKER = 2u, // 0x2 - AUDIO_DEVICE_OUT_WIRED_HEADSET = 4u, // 0x4 - AUDIO_DEVICE_OUT_WIRED_HEADPHONE = 8u, // 0x8 - AUDIO_DEVICE_OUT_BLUETOOTH_SCO = 16u, // 0x10 - AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET = 32u, // 0x20 - AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT = 64u, // 0x40 - AUDIO_DEVICE_OUT_BLUETOOTH_A2DP = 128u, // 0x80 - AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES = 256u, // 0x100 - AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER = 512u, // 0x200 - AUDIO_DEVICE_OUT_AUX_DIGITAL = 1024u, // 0x400 + AUDIO_DEVICE_NONE = 0u, + AUDIO_DEVICE_BIT_IN = 2147483648u, + AUDIO_DEVICE_BIT_DEFAULT = 1073741824u, + AUDIO_DEVICE_OUT_EARPIECE = 1u, + AUDIO_DEVICE_OUT_SPEAKER = 2u, + AUDIO_DEVICE_OUT_WIRED_HEADSET = 4u, + AUDIO_DEVICE_OUT_WIRED_HEADPHONE = 8u, + AUDIO_DEVICE_OUT_BLUETOOTH_SCO = 16u, + AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET = 32u, + AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT = 64u, + AUDIO_DEVICE_OUT_BLUETOOTH_A2DP = 128u, + AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES = 256u, + AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER = 512u, + AUDIO_DEVICE_OUT_AUX_DIGITAL = 1024u, AUDIO_DEVICE_OUT_HDMI = 1024u, // OUT_AUX_DIGITAL - AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET = 2048u, // 0x800 - AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET = 4096u, // 0x1000 - AUDIO_DEVICE_OUT_USB_ACCESSORY = 8192u, // 0x2000 - AUDIO_DEVICE_OUT_USB_DEVICE = 16384u, // 0x4000 - AUDIO_DEVICE_OUT_REMOTE_SUBMIX = 32768u, // 0x8000 - AUDIO_DEVICE_OUT_TELEPHONY_TX = 65536u, // 0x10000 - AUDIO_DEVICE_OUT_LINE = 131072u, // 0x20000 - AUDIO_DEVICE_OUT_HDMI_ARC = 262144u, // 0x40000 - AUDIO_DEVICE_OUT_SPDIF = 524288u, // 0x80000 - AUDIO_DEVICE_OUT_FM = 1048576u, // 0x100000 - AUDIO_DEVICE_OUT_AUX_LINE = 2097152u, // 0x200000 - AUDIO_DEVICE_OUT_SPEAKER_SAFE = 4194304u, // 0x400000 - AUDIO_DEVICE_OUT_IP = 8388608u, // 0x800000 - AUDIO_DEVICE_OUT_BUS = 16777216u, // 0x1000000 - AUDIO_DEVICE_OUT_PROXY = 33554432u, // 0x2000000 - AUDIO_DEVICE_OUT_USB_HEADSET = 67108864u, // 0x4000000 + AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET = 2048u, + AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET = 4096u, + AUDIO_DEVICE_OUT_USB_ACCESSORY = 8192u, + AUDIO_DEVICE_OUT_USB_DEVICE = 16384u, + AUDIO_DEVICE_OUT_REMOTE_SUBMIX = 32768u, + AUDIO_DEVICE_OUT_TELEPHONY_TX = 65536u, + AUDIO_DEVICE_OUT_LINE = 131072u, + AUDIO_DEVICE_OUT_HDMI_ARC = 262144u, + AUDIO_DEVICE_OUT_SPDIF = 524288u, + AUDIO_DEVICE_OUT_FM = 1048576u, + AUDIO_DEVICE_OUT_AUX_LINE = 2097152u, + AUDIO_DEVICE_OUT_SPEAKER_SAFE = 4194304u, + AUDIO_DEVICE_OUT_IP = 8388608u, + AUDIO_DEVICE_OUT_BUS = 16777216u, + AUDIO_DEVICE_OUT_PROXY = 33554432u, + AUDIO_DEVICE_OUT_USB_HEADSET = 67108864u, + AUDIO_DEVICE_OUT_HEARING_AID = 134217728u, + AUDIO_DEVICE_OUT_ECHO_CANCELLER = 268435456u, AUDIO_DEVICE_OUT_DEFAULT = 1073741824u, // BIT_DEFAULT - AUDIO_DEVICE_OUT_ALL = 1207959551u, // (((((((((((((((((((((((((((OUT_EARPIECE | OUT_SPEAKER) | OUT_WIRED_HEADSET) | OUT_WIRED_HEADPHONE) | OUT_BLUETOOTH_SCO) | OUT_BLUETOOTH_SCO_HEADSET) | OUT_BLUETOOTH_SCO_CARKIT) | OUT_BLUETOOTH_A2DP) | OUT_BLUETOOTH_A2DP_HEADPHONES) | OUT_BLUETOOTH_A2DP_SPEAKER) | OUT_HDMI) | OUT_ANLG_DOCK_HEADSET) | OUT_DGTL_DOCK_HEADSET) | OUT_USB_ACCESSORY) | OUT_USB_DEVICE) | OUT_REMOTE_SUBMIX) | OUT_TELEPHONY_TX) | OUT_LINE) | OUT_HDMI_ARC) | OUT_SPDIF) | OUT_FM) | OUT_AUX_LINE) | OUT_SPEAKER_SAFE) | OUT_IP) | OUT_BUS) | OUT_PROXY) | OUT_USB_HEADSET) | OUT_DEFAULT) - AUDIO_DEVICE_OUT_ALL_A2DP = 896u, // ((OUT_BLUETOOTH_A2DP | OUT_BLUETOOTH_A2DP_HEADPHONES) | OUT_BLUETOOTH_A2DP_SPEAKER) - AUDIO_DEVICE_OUT_ALL_SCO = 112u, // ((OUT_BLUETOOTH_SCO | OUT_BLUETOOTH_SCO_HEADSET) | OUT_BLUETOOTH_SCO_CARKIT) - AUDIO_DEVICE_OUT_ALL_USB = 67133440u, // ((OUT_USB_ACCESSORY | OUT_USB_DEVICE) | OUT_USB_HEADSET) AUDIO_DEVICE_IN_COMMUNICATION = 2147483649u, // (BIT_IN | 0x1) AUDIO_DEVICE_IN_AMBIENT = 2147483650u, // (BIT_IN | 0x2) AUDIO_DEVICE_IN_BUILTIN_MIC = 2147483652u, // (BIT_IN | 0x4) @@ -302,38 +325,38 @@ enum { AUDIO_DEVICE_IN_BUS = 2148532224u, // (BIT_IN | 0x100000) AUDIO_DEVICE_IN_PROXY = 2164260864u, // (BIT_IN | 0x1000000) AUDIO_DEVICE_IN_USB_HEADSET = 2181038080u, // (BIT_IN | 0x2000000) + AUDIO_DEVICE_IN_BLUETOOTH_BLE = 2214592512u, // (BIT_IN | 0x4000000) AUDIO_DEVICE_IN_DEFAULT = 3221225472u, // (BIT_IN | BIT_DEFAULT) - AUDIO_DEVICE_IN_ALL = 3273654271u, // (((((((((((((((((((((((IN_COMMUNICATION | IN_AMBIENT) | IN_BUILTIN_MIC) | IN_BLUETOOTH_SCO_HEADSET) | IN_WIRED_HEADSET) | IN_HDMI) | IN_TELEPHONY_RX) | IN_BACK_MIC) | IN_REMOTE_SUBMIX) | IN_ANLG_DOCK_HEADSET) | IN_DGTL_DOCK_HEADSET) | IN_USB_ACCESSORY) | IN_USB_DEVICE) | IN_FM_TUNER) | IN_TV_TUNER) | IN_LINE) | IN_SPDIF) | IN_BLUETOOTH_A2DP) | IN_LOOPBACK) | IN_IP) | IN_BUS) | IN_PROXY) | IN_USB_HEADSET) | IN_DEFAULT) - AUDIO_DEVICE_IN_ALL_SCO = 2147483656u, // IN_BLUETOOTH_SCO_HEADSET - AUDIO_DEVICE_IN_ALL_USB = 2181044224u, // ((IN_USB_ACCESSORY | IN_USB_DEVICE) | IN_USB_HEADSET) }; typedef enum { - AUDIO_OUTPUT_FLAG_NONE = 0, // 0x0 - AUDIO_OUTPUT_FLAG_DIRECT = 1, // 0x1 - AUDIO_OUTPUT_FLAG_PRIMARY = 2, // 0x2 - AUDIO_OUTPUT_FLAG_FAST = 4, // 0x4 - AUDIO_OUTPUT_FLAG_DEEP_BUFFER = 8, // 0x8 - AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD = 16, // 0x10 - AUDIO_OUTPUT_FLAG_NON_BLOCKING = 32, // 0x20 - AUDIO_OUTPUT_FLAG_HW_AV_SYNC = 64, // 0x40 - AUDIO_OUTPUT_FLAG_TTS = 128, // 0x80 - AUDIO_OUTPUT_FLAG_RAW = 256, // 0x100 - AUDIO_OUTPUT_FLAG_SYNC = 512, // 0x200 - AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO = 1024, // 0x400 - AUDIO_OUTPUT_FLAG_DIRECT_PCM = 8192, // 0x2000 - AUDIO_OUTPUT_FLAG_MMAP_NOIRQ = 16384, // 0x4000 - AUDIO_OUTPUT_FLAG_VOIP_RX = 32768, // 0x8000 + AUDIO_OUTPUT_FLAG_NONE = 0, + AUDIO_OUTPUT_FLAG_DIRECT = 1, + AUDIO_OUTPUT_FLAG_PRIMARY = 2, + AUDIO_OUTPUT_FLAG_FAST = 4, + AUDIO_OUTPUT_FLAG_DEEP_BUFFER = 8, + AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD = 16, + AUDIO_OUTPUT_FLAG_NON_BLOCKING = 32, + AUDIO_OUTPUT_FLAG_HW_AV_SYNC = 64, + AUDIO_OUTPUT_FLAG_TTS = 128, + AUDIO_OUTPUT_FLAG_RAW = 256, + AUDIO_OUTPUT_FLAG_SYNC = 512, + AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO = 1024, + AUDIO_OUTPUT_FLAG_DIRECT_PCM = 8192, + AUDIO_OUTPUT_FLAG_MMAP_NOIRQ = 16384, + AUDIO_OUTPUT_FLAG_VOIP_RX = 32768, + AUDIO_OUTPUT_FLAG_INCALL_MUSIC = 65536, } audio_output_flags_t; typedef enum { - AUDIO_INPUT_FLAG_NONE = 0, // 0x0 - AUDIO_INPUT_FLAG_FAST = 1, // 0x1 - AUDIO_INPUT_FLAG_HW_HOTWORD = 2, // 0x2 - AUDIO_INPUT_FLAG_RAW = 4, // 0x4 - AUDIO_INPUT_FLAG_SYNC = 8, // 0x8 - AUDIO_INPUT_FLAG_MMAP_NOIRQ = 16, // 0x10 - AUDIO_INPUT_FLAG_VOIP_TX = 32, // 0x20 + AUDIO_INPUT_FLAG_NONE = 0, + AUDIO_INPUT_FLAG_FAST = 1, + AUDIO_INPUT_FLAG_HW_HOTWORD = 2, + AUDIO_INPUT_FLAG_RAW = 4, + AUDIO_INPUT_FLAG_SYNC = 8, + AUDIO_INPUT_FLAG_MMAP_NOIRQ = 16, + AUDIO_INPUT_FLAG_VOIP_TX = 32, + AUDIO_INPUT_FLAG_HW_AV_SYNC = 64, } audio_input_flags_t; typedef enum { @@ -344,54 +367,61 @@ typedef enum { AUDIO_USAGE_ALARM = 4, AUDIO_USAGE_NOTIFICATION = 5, AUDIO_USAGE_NOTIFICATION_TELEPHONY_RINGTONE = 6, +#ifndef AUDIO_NO_SYSTEM_DECLARATIONS AUDIO_USAGE_NOTIFICATION_COMMUNICATION_REQUEST = 7, AUDIO_USAGE_NOTIFICATION_COMMUNICATION_INSTANT = 8, AUDIO_USAGE_NOTIFICATION_COMMUNICATION_DELAYED = 9, AUDIO_USAGE_NOTIFICATION_EVENT = 10, +#endif // AUDIO_NO_SYSTEM_DECLARATIONS AUDIO_USAGE_ASSISTANCE_ACCESSIBILITY = 11, AUDIO_USAGE_ASSISTANCE_NAVIGATION_GUIDANCE = 12, AUDIO_USAGE_ASSISTANCE_SONIFICATION = 13, AUDIO_USAGE_GAME = 14, AUDIO_USAGE_VIRTUAL_SOURCE = 15, AUDIO_USAGE_ASSISTANT = 16, - AUDIO_USAGE_CNT = 17, - AUDIO_USAGE_MAX = 16, // (CNT - 1) } audio_usage_t; +typedef enum { + AUDIO_CONTENT_TYPE_UNKNOWN = 0u, + AUDIO_CONTENT_TYPE_SPEECH = 1u, + AUDIO_CONTENT_TYPE_MUSIC = 2u, + AUDIO_CONTENT_TYPE_MOVIE = 3u, + AUDIO_CONTENT_TYPE_SONIFICATION = 4u, +} audio_content_type_t; + enum { - AUDIO_GAIN_MODE_JOINT = 1u, // 0x1 - AUDIO_GAIN_MODE_CHANNELS = 2u, // 0x2 - AUDIO_GAIN_MODE_RAMP = 4u, // 0x4 + AUDIO_GAIN_MODE_JOINT = 1u, + AUDIO_GAIN_MODE_CHANNELS = 2u, + AUDIO_GAIN_MODE_RAMP = 4u, }; typedef enum { AUDIO_PORT_ROLE_NONE = 0, - AUDIO_PORT_ROLE_SOURCE = 1, - AUDIO_PORT_ROLE_SINK = 2, + AUDIO_PORT_ROLE_SOURCE = 1, // (::android::hardware::audio::common::V4_0::AudioPortRole.NONE implicitly + 1) + AUDIO_PORT_ROLE_SINK = 2, // (::android::hardware::audio::common::V4_0::AudioPortRole.SOURCE implicitly + 1) } audio_port_role_t; typedef enum { AUDIO_PORT_TYPE_NONE = 0, - AUDIO_PORT_TYPE_DEVICE = 1, - AUDIO_PORT_TYPE_MIX = 2, - AUDIO_PORT_TYPE_SESSION = 3, + AUDIO_PORT_TYPE_DEVICE = 1, // (::android::hardware::audio::common::V4_0::AudioPortType.NONE implicitly + 1) + AUDIO_PORT_TYPE_MIX = 2, // (::android::hardware::audio::common::V4_0::AudioPortType.DEVICE implicitly + 1) + AUDIO_PORT_TYPE_SESSION = 3, // (::android::hardware::audio::common::V4_0::AudioPortType.MIX implicitly + 1) } audio_port_type_t; enum { - AUDIO_PORT_CONFIG_SAMPLE_RATE = 1u, // 0x1 - AUDIO_PORT_CONFIG_CHANNEL_MASK = 2u, // 0x2 - AUDIO_PORT_CONFIG_FORMAT = 4u, // 0x4 - AUDIO_PORT_CONFIG_GAIN = 8u, // 0x8 - AUDIO_PORT_CONFIG_ALL = 15u, // (((SAMPLE_RATE | CHANNEL_MASK) | FORMAT) | GAIN) + AUDIO_PORT_CONFIG_SAMPLE_RATE = 1u, + AUDIO_PORT_CONFIG_CHANNEL_MASK = 2u, + AUDIO_PORT_CONFIG_FORMAT = 4u, + AUDIO_PORT_CONFIG_GAIN = 8u, }; typedef enum { AUDIO_LATENCY_LOW = 0, - AUDIO_LATENCY_NORMAL = 1, + AUDIO_LATENCY_NORMAL = 1, // (::android::hardware::audio::common::V4_0::AudioMixLatencyClass.LOW implicitly + 1) } audio_mix_latency_class_t; #ifdef __cplusplus } #endif -#endif // HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_COMMON_V2_0_EXPORTED_CONSTANTS_H_ +#endif // HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_COMMON_V4_0_EXPORTED_CONSTANTS_H_ diff --git a/audio/include/system/audio.h b/audio/include/system/audio.h index 5b8b8114..67d35ef2 100644 --- a/audio/include/system/audio.h +++ b/audio/include/system/audio.h @@ -27,6 +27,7 @@ #include #include "audio-base.h" +#include "audio-base-utils.h" __BEGIN_DECLS @@ -43,20 +44,6 @@ __BEGIN_DECLS /* AudioFlinger and AudioPolicy services use I/O handles to identify audio sources and sinks */ typedef int audio_io_handle_t; -/* Do not change these values without updating their counterparts - * in frameworks/base/media/java/android/media/AudioAttributes.java - */ -typedef enum { - AUDIO_CONTENT_TYPE_UNKNOWN = 0, - AUDIO_CONTENT_TYPE_SPEECH = 1, - AUDIO_CONTENT_TYPE_MUSIC = 2, - AUDIO_CONTENT_TYPE_MOVIE = 3, - AUDIO_CONTENT_TYPE_SONIFICATION = 4, - - AUDIO_CONTENT_TYPE_CNT, - AUDIO_CONTENT_TYPE_MAX = AUDIO_CONTENT_TYPE_CNT - 1, -} audio_content_type_t; - typedef uint32_t audio_flags_mask_t; /* Do not change these values without updating their counterparts @@ -198,6 +185,21 @@ static inline audio_channel_mask_t audio_channel_mask_from_representation_and_bi return (audio_channel_mask_t) ((representation << AUDIO_CHANNEL_COUNT_MAX) | bits); } +/** + * Expresses the convention when stereo audio samples are stored interleaved + * in an array. This should improve readability by allowing code to use + * symbolic indices instead of hard-coded [0] and [1]. + * + * For multi-channel beyond stereo, the platform convention is that channels + * are interleaved in order from least significant channel mask bit to most + * significant channel mask bit, with unused bits skipped. Any exceptions + * to this convention will be noted at the appropriate API. + */ +enum { + AUDIO_INTERLEAVE_LEFT = 0, + AUDIO_INTERLEAVE_RIGHT = 1, +}; + /* This enum is deprecated */ typedef enum { AUDIO_IN_ACOUSTICS_NONE = 0, @@ -531,6 +533,10 @@ struct audio_mmap_position { is called */ }; +/****************************** + * Helper functions + *****************************/ + static inline bool audio_is_output_device(audio_devices_t device) { if (((device & AUDIO_DEVICE_BIT_IN) == 0) && @@ -1159,4 +1165,5 @@ __END_DECLS // declared in types.hal for audio HAL V4.0 and auto imported to audio-base.h #define AUDIO_OUTPUT_FLAG_INCALL_MUSIC 0x10000 + #endif // ANDROID_AUDIO_CORE_H diff --git a/audio/include/system/audio_effect-base.h b/audio/include/system/audio_effect-base.h index 572b7889..7a6a5935 100644 --- a/audio/include/system/audio_effect-base.h +++ b/audio/include/system/audio_effect-base.h @@ -1,9 +1,9 @@ // This file is autogenerated by hidl-gen. Do not edit manually. -// Source: android.hardware.audio.effect@2.0 +// Source: android.hardware.audio.effect@4.0 // Root: android.hardware:hardware/interfaces -#ifndef HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EXPORTED_CONSTANTS_H_ -#define HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EXPORTED_CONSTANTS_H_ +#ifndef HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_EFFECT_V4_0_EXPORTED_CONSTANTS_H_ +#define HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_EFFECT_V4_0_EXPORTED_CONSTANTS_H_ #ifdef __cplusplus extern "C" { @@ -75,26 +75,25 @@ enum { typedef enum { EFFECT_BUFFER_ACCESS_WRITE = 0, - EFFECT_BUFFER_ACCESS_READ = 1, - EFFECT_BUFFER_ACCESS_ACCUMULATE = 2, + EFFECT_BUFFER_ACCESS_READ = 1, // (::android::hardware::audio::effect::V4_0::EffectBufferAccess.ACCESS_WRITE implicitly + 1) + EFFECT_BUFFER_ACCESS_ACCUMULATE = 2, // (::android::hardware::audio::effect::V4_0::EffectBufferAccess.ACCESS_READ implicitly + 1) } effect_buffer_access_e; enum { - EFFECT_CONFIG_BUFFER = 1, // 0x0001 - EFFECT_CONFIG_SMP_RATE = 2, // 0x0002 - EFFECT_CONFIG_CHANNELS = 4, // 0x0004 - EFFECT_CONFIG_FORMAT = 8, // 0x0008 - EFFECT_CONFIG_ACC_MODE = 16, // 0x0010 - EFFECT_CONFIG_ALL = 31, // ((((BUFFER | SMP_RATE) | CHANNELS) | FORMAT) | ACC_MODE) + EFFECT_CONFIG_BUFFER = 1, + EFFECT_CONFIG_SMP_RATE = 2, + EFFECT_CONFIG_CHANNELS = 4, + EFFECT_CONFIG_FORMAT = 8, + EFFECT_CONFIG_ACC_MODE = 16, }; typedef enum { EFFECT_FEATURE_AUX_CHANNELS = 0, - EFFECT_FEATURE_CNT = 1, + EFFECT_FEATURE_CNT = 1, // (::android::hardware::audio::effect::V4_0::EffectFeature.AUX_CHANNELS implicitly + 1) } effect_feature_e; #ifdef __cplusplus } #endif -#endif // HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_EFFECT_V2_0_EXPORTED_CONSTANTS_H_ +#endif // HIDL_GENERATED_ANDROID_HARDWARE_AUDIO_EFFECT_V4_0_EXPORTED_CONSTANTS_H_ diff --git a/audio/include/system/audio_effect.h b/audio/include/system/audio_effect.h index a559c7cb..4cdc773f 100644 --- a/audio/include/system/audio_effect.h +++ b/audio/include/system/audio_effect.h @@ -60,6 +60,12 @@ typedef struct effect_descriptor_s { char implementor[EFFECT_STRING_LEN_MAX]; // human readable effect implementor name } effect_descriptor_t; +#define EFFECT_CONFIG_ALL (EFFECT_CONFIG_BUFFER | \ + EFFECT_CONFIG_SMP_RATE | \ + EFFECT_CONFIG_CHANNELS | \ + EFFECT_CONFIG_FORMAT | \ + EFFECT_CONFIG_ACC_MODE) + ///////////////////////////////////////////////// // Effect control interface ///////////////////////////////////////////////// -- 2.11.0