Merge "fifo: improve blocking and hysteresis"
diff --git a/audio/include/system/audio-base.h b/audio/include/system/audio-base.h
index a291788..2967ae9 100644
--- a/audio/include/system/audio-base.h
+++ b/audio/include/system/audio-base.h
@@ -30,9 +30,9 @@
AUDIO_STREAM_ACCESSIBILITY = 10,
AUDIO_STREAM_REROUTING = 11,
AUDIO_STREAM_PATCH = 12,
- AUDIO_STREAM_PUBLIC_CNT = 10, // (AUDIO_STREAM_TTS + 1)
- AUDIO_STREAM_FOR_POLICY_CNT = 12, // AUDIO_STREAM_PATCH
- AUDIO_STREAM_CNT = 13, // (AUDIO_STREAM_PATCH + 1)
+ AUDIO_STREAM_PUBLIC_CNT = 10, // (TTS + 1)
+ AUDIO_STREAM_FOR_POLICY_CNT = 12, // PATCH
+ AUDIO_STREAM_CNT = 13, // (PATCH + 1)
} audio_stream_type_t;
typedef enum {
@@ -47,7 +47,7 @@
AUDIO_SOURCE_REMOTE_SUBMIX = 8,
AUDIO_SOURCE_UNPROCESSED = 9,
AUDIO_SOURCE_CNT = 10,
- AUDIO_SOURCE_MAX = 9, // (AUDIO_SOURCE_CNT - 1)
+ AUDIO_SOURCE_MAX = 9, // (CNT - 1)
AUDIO_SOURCE_FM_TUNER = 1998,
AUDIO_SOURCE_HOTWORD = 1999,
} audio_source_t;
@@ -98,22 +98,22 @@
AUDIO_FORMAT_AAC_SUB_HE_V2 = 256u, // 0x100
AUDIO_FORMAT_AAC_SUB_ELD = 512u, // 0x200
AUDIO_FORMAT_VORBIS_SUB_NONE = 0u, // 0x0
- AUDIO_FORMAT_PCM_16_BIT = 1u, // (AUDIO_FORMAT_PCM | AUDIO_FORMAT_PCM_SUB_16_BIT)
- AUDIO_FORMAT_PCM_8_BIT = 2u, // (AUDIO_FORMAT_PCM | AUDIO_FORMAT_PCM_SUB_8_BIT)
- AUDIO_FORMAT_PCM_32_BIT = 3u, // (AUDIO_FORMAT_PCM | AUDIO_FORMAT_PCM_SUB_32_BIT)
- AUDIO_FORMAT_PCM_8_24_BIT = 4u, // (AUDIO_FORMAT_PCM | AUDIO_FORMAT_PCM_SUB_8_24_BIT)
- AUDIO_FORMAT_PCM_FLOAT = 5u, // (AUDIO_FORMAT_PCM | AUDIO_FORMAT_PCM_SUB_FLOAT)
- AUDIO_FORMAT_PCM_24_BIT_PACKED = 6u, // (AUDIO_FORMAT_PCM | AUDIO_FORMAT_PCM_SUB_24_BIT_PACKED)
- AUDIO_FORMAT_AAC_MAIN = 67108865u, // (AUDIO_FORMAT_AAC | AUDIO_FORMAT_AAC_SUB_MAIN)
- AUDIO_FORMAT_AAC_LC = 67108866u, // (AUDIO_FORMAT_AAC | AUDIO_FORMAT_AAC_SUB_LC)
- AUDIO_FORMAT_AAC_SSR = 67108868u, // (AUDIO_FORMAT_AAC | AUDIO_FORMAT_AAC_SUB_SSR)
- AUDIO_FORMAT_AAC_LTP = 67108872u, // (AUDIO_FORMAT_AAC | AUDIO_FORMAT_AAC_SUB_LTP)
- AUDIO_FORMAT_AAC_HE_V1 = 67108880u, // (AUDIO_FORMAT_AAC | AUDIO_FORMAT_AAC_SUB_HE_V1)
- AUDIO_FORMAT_AAC_SCALABLE = 67108896u, // (AUDIO_FORMAT_AAC | AUDIO_FORMAT_AAC_SUB_SCALABLE)
- AUDIO_FORMAT_AAC_ERLC = 67108928u, // (AUDIO_FORMAT_AAC | AUDIO_FORMAT_AAC_SUB_ERLC)
- AUDIO_FORMAT_AAC_LD = 67108992u, // (AUDIO_FORMAT_AAC | AUDIO_FORMAT_AAC_SUB_LD)
- AUDIO_FORMAT_AAC_HE_V2 = 67109120u, // (AUDIO_FORMAT_AAC | AUDIO_FORMAT_AAC_SUB_HE_V2)
- AUDIO_FORMAT_AAC_ELD = 67109376u, // (AUDIO_FORMAT_AAC | AUDIO_FORMAT_AAC_SUB_ELD)
+ 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)
+ AUDIO_FORMAT_PCM_8_24_BIT = 4u, // (PCM | PCM_SUB_8_24_BIT)
+ AUDIO_FORMAT_PCM_FLOAT = 5u, // (PCM | PCM_SUB_FLOAT)
+ AUDIO_FORMAT_PCM_24_BIT_PACKED = 6u, // (PCM | PCM_SUB_24_BIT_PACKED)
+ AUDIO_FORMAT_AAC_MAIN = 67108865u, // (AAC | AAC_SUB_MAIN)
+ AUDIO_FORMAT_AAC_LC = 67108866u, // (AAC | AAC_SUB_LC)
+ AUDIO_FORMAT_AAC_SSR = 67108868u, // (AAC | AAC_SUB_SSR)
+ AUDIO_FORMAT_AAC_LTP = 67108872u, // (AAC | AAC_SUB_LTP)
+ AUDIO_FORMAT_AAC_HE_V1 = 67108880u, // (AAC | AAC_SUB_HE_V1)
+ AUDIO_FORMAT_AAC_SCALABLE = 67108896u, // (AAC | AAC_SUB_SCALABLE)
+ AUDIO_FORMAT_AAC_ERLC = 67108928u, // (AAC | AAC_SUB_ERLC)
+ 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_t;
enum {
@@ -144,16 +144,16 @@
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_OUT_MONO = 1u, // AUDIO_CHANNEL_OUT_FRONT_LEFT
- AUDIO_CHANNEL_OUT_STEREO = 3u, // (AUDIO_CHANNEL_OUT_FRONT_LEFT | AUDIO_CHANNEL_OUT_FRONT_RIGHT)
- AUDIO_CHANNEL_OUT_QUAD = 51u, // (((AUDIO_CHANNEL_OUT_FRONT_LEFT | AUDIO_CHANNEL_OUT_FRONT_RIGHT) | AUDIO_CHANNEL_OUT_BACK_LEFT) | AUDIO_CHANNEL_OUT_BACK_RIGHT)
- AUDIO_CHANNEL_OUT_QUAD_BACK = 51u, // AUDIO_CHANNEL_OUT_QUAD
- AUDIO_CHANNEL_OUT_QUAD_SIDE = 1539u, // (((AUDIO_CHANNEL_OUT_FRONT_LEFT | AUDIO_CHANNEL_OUT_FRONT_RIGHT) | AUDIO_CHANNEL_OUT_SIDE_LEFT) | AUDIO_CHANNEL_OUT_SIDE_RIGHT)
- AUDIO_CHANNEL_OUT_5POINT1 = 63u, // (((((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_5POINT1_BACK = 63u, // AUDIO_CHANNEL_OUT_5POINT1
- AUDIO_CHANNEL_OUT_5POINT1_SIDE = 1551u, // (((((AUDIO_CHANNEL_OUT_FRONT_LEFT | AUDIO_CHANNEL_OUT_FRONT_RIGHT) | AUDIO_CHANNEL_OUT_FRONT_CENTER) | AUDIO_CHANNEL_OUT_LOW_FREQUENCY) | AUDIO_CHANNEL_OUT_SIDE_LEFT) | AUDIO_CHANNEL_OUT_SIDE_RIGHT)
- AUDIO_CHANNEL_OUT_7POINT1 = 1599u, // (((((((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_SIDE_LEFT) | AUDIO_CHANNEL_OUT_SIDE_RIGHT)
- AUDIO_CHANNEL_OUT_ALL = 262143u, // (((((((((((((((((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_MONO = 1u, // OUT_FRONT_LEFT
+ AUDIO_CHANNEL_OUT_STEREO = 3u, // (OUT_FRONT_LEFT | OUT_FRONT_RIGHT)
+ 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)
+ AUDIO_CHANNEL_OUT_5POINT1 = 63u, // (((((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_FRONT_CENTER) | OUT_LOW_FREQUENCY) | OUT_BACK_LEFT) | OUT_BACK_RIGHT)
+ AUDIO_CHANNEL_OUT_5POINT1_BACK = 63u, // OUT_5POINT1
+ 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_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
@@ -168,22 +168,25 @@
AUDIO_CHANNEL_IN_Z_AXIS = 8192u, // 0x2000
AUDIO_CHANNEL_IN_VOICE_UPLINK = 16384u, // 0x4000
AUDIO_CHANNEL_IN_VOICE_DNLINK = 32768u, // 0x8000
- AUDIO_CHANNEL_IN_MONO = 16u, // AUDIO_CHANNEL_IN_FRONT
- AUDIO_CHANNEL_IN_STEREO = 12u, // (AUDIO_CHANNEL_IN_LEFT | AUDIO_CHANNEL_IN_RIGHT)
- AUDIO_CHANNEL_IN_FRONT_BACK = 48u, // (AUDIO_CHANNEL_IN_FRONT | AUDIO_CHANNEL_IN_BACK)
- AUDIO_CHANNEL_IN_ALL = 65532u, // (((((((((((((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_INTERLEAVE_LEFT = 0u, // 0
- AUDIO_INTERLEAVE_RIGHT = 1u, // 1
+ 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_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_INDEX_HDR = 2147483648u, // (AUDIO_CHANNEL_REPRESENTATION_INDEX << AUDIO_CHANNEL_COUNT_MAX)
- AUDIO_CHANNEL_INDEX_MASK_1 = 2147483649u, // (AUDIO_CHANNEL_INDEX_HDR | ((1 << 1) - 1))
- AUDIO_CHANNEL_INDEX_MASK_2 = 2147483651u, // (AUDIO_CHANNEL_INDEX_HDR | ((1 << 2) - 1))
- AUDIO_CHANNEL_INDEX_MASK_3 = 2147483655u, // (AUDIO_CHANNEL_INDEX_HDR | ((1 << 3) - 1))
- AUDIO_CHANNEL_INDEX_MASK_4 = 2147483663u, // (AUDIO_CHANNEL_INDEX_HDR | ((1 << 4) - 1))
- AUDIO_CHANNEL_INDEX_MASK_5 = 2147483679u, // (AUDIO_CHANNEL_INDEX_HDR | ((1 << 5) - 1))
- AUDIO_CHANNEL_INDEX_MASK_6 = 2147483711u, // (AUDIO_CHANNEL_INDEX_HDR | ((1 << 6) - 1))
- AUDIO_CHANNEL_INDEX_MASK_7 = 2147483775u, // (AUDIO_CHANNEL_INDEX_HDR | ((1 << 7) - 1))
- AUDIO_CHANNEL_INDEX_MASK_8 = 2147483903u, // (AUDIO_CHANNEL_INDEX_HDR | ((1 << 8) - 1))
+ 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))
+ AUDIO_CHANNEL_INDEX_MASK_3 = 2147483655u, // (INDEX_HDR | ((1 << 3) - 1))
+ AUDIO_CHANNEL_INDEX_MASK_4 = 2147483663u, // (INDEX_HDR | ((1 << 4) - 1))
+ AUDIO_CHANNEL_INDEX_MASK_5 = 2147483679u, // (INDEX_HDR | ((1 << 5) - 1))
+ AUDIO_CHANNEL_INDEX_MASK_6 = 2147483711u, // (INDEX_HDR | ((1 << 6) - 1))
+ AUDIO_CHANNEL_INDEX_MASK_7 = 2147483775u, // (INDEX_HDR | ((1 << 7) - 1))
+ AUDIO_CHANNEL_INDEX_MASK_8 = 2147483903u, // (INDEX_HDR | ((1 << 8) - 1))
+};
+
+enum {
+ AUDIO_INTERLEAVE_LEFT = 0,
+ AUDIO_INTERLEAVE_RIGHT = 1,
};
typedef enum {
@@ -194,7 +197,7 @@
AUDIO_MODE_IN_CALL = 2,
AUDIO_MODE_IN_COMMUNICATION = 3,
AUDIO_MODE_CNT = 4,
- AUDIO_MODE_MAX = 3, // (AUDIO_MODE_CNT - 1)
+ AUDIO_MODE_MAX = 3, // (CNT - 1)
} audio_mode_t;
enum {
@@ -212,7 +215,7 @@
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_OUT_HDMI = 1024u, // AUDIO_DEVICE_OUT_AUX_DIGITAL
+ 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
@@ -227,38 +230,38 @@
AUDIO_DEVICE_OUT_SPEAKER_SAFE = 4194304u, // 0x400000
AUDIO_DEVICE_OUT_IP = 8388608u, // 0x800000
AUDIO_DEVICE_OUT_BUS = 16777216u, // 0x1000000
- AUDIO_DEVICE_OUT_DEFAULT = 1073741824u, // AUDIO_DEVICE_BIT_DEFAULT
- AUDIO_DEVICE_OUT_ALL = 1107296255u, // (((((((((((((((((((((((((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_DEFAULT)
- AUDIO_DEVICE_OUT_ALL_A2DP = 896u, // ((AUDIO_DEVICE_OUT_BLUETOOTH_A2DP | AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES) | AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER)
- AUDIO_DEVICE_OUT_ALL_SCO = 112u, // ((AUDIO_DEVICE_OUT_BLUETOOTH_SCO | AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET) | AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT)
- AUDIO_DEVICE_OUT_ALL_USB = 24576u, // (AUDIO_DEVICE_OUT_USB_ACCESSORY | AUDIO_DEVICE_OUT_USB_DEVICE)
- AUDIO_DEVICE_IN_COMMUNICATION = 2147483649u, // (AUDIO_DEVICE_BIT_IN | 0x1)
- AUDIO_DEVICE_IN_AMBIENT = 2147483650u, // (AUDIO_DEVICE_BIT_IN | 0x2)
- AUDIO_DEVICE_IN_BUILTIN_MIC = 2147483652u, // (AUDIO_DEVICE_BIT_IN | 0x4)
- AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET = 2147483656u, // (AUDIO_DEVICE_BIT_IN | 0x8)
- AUDIO_DEVICE_IN_WIRED_HEADSET = 2147483664u, // (AUDIO_DEVICE_BIT_IN | 0x10)
- AUDIO_DEVICE_IN_AUX_DIGITAL = 2147483680u, // (AUDIO_DEVICE_BIT_IN | 0x20)
- AUDIO_DEVICE_IN_HDMI = 2147483680u, // AUDIO_DEVICE_IN_AUX_DIGITAL
- AUDIO_DEVICE_IN_VOICE_CALL = 2147483712u, // (AUDIO_DEVICE_BIT_IN | 0x40)
- AUDIO_DEVICE_IN_TELEPHONY_RX = 2147483712u, // AUDIO_DEVICE_IN_VOICE_CALL
- AUDIO_DEVICE_IN_BACK_MIC = 2147483776u, // (AUDIO_DEVICE_BIT_IN | 0x80)
- AUDIO_DEVICE_IN_REMOTE_SUBMIX = 2147483904u, // (AUDIO_DEVICE_BIT_IN | 0x100)
- AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET = 2147484160u, // (AUDIO_DEVICE_BIT_IN | 0x200)
- AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET = 2147484672u, // (AUDIO_DEVICE_BIT_IN | 0x400)
- AUDIO_DEVICE_IN_USB_ACCESSORY = 2147485696u, // (AUDIO_DEVICE_BIT_IN | 0x800)
- AUDIO_DEVICE_IN_USB_DEVICE = 2147487744u, // (AUDIO_DEVICE_BIT_IN | 0x1000)
- AUDIO_DEVICE_IN_FM_TUNER = 2147491840u, // (AUDIO_DEVICE_BIT_IN | 0x2000)
- AUDIO_DEVICE_IN_TV_TUNER = 2147500032u, // (AUDIO_DEVICE_BIT_IN | 0x4000)
- AUDIO_DEVICE_IN_LINE = 2147516416u, // (AUDIO_DEVICE_BIT_IN | 0x8000)
- AUDIO_DEVICE_IN_SPDIF = 2147549184u, // (AUDIO_DEVICE_BIT_IN | 0x10000)
- AUDIO_DEVICE_IN_BLUETOOTH_A2DP = 2147614720u, // (AUDIO_DEVICE_BIT_IN | 0x20000)
- AUDIO_DEVICE_IN_LOOPBACK = 2147745792u, // (AUDIO_DEVICE_BIT_IN | 0x40000)
- AUDIO_DEVICE_IN_IP = 2148007936u, // (AUDIO_DEVICE_BIT_IN | 0x80000)
- AUDIO_DEVICE_IN_BUS = 2148532224u, // (AUDIO_DEVICE_BIT_IN | 0x100000)
- AUDIO_DEVICE_IN_DEFAULT = 3221225472u, // (AUDIO_DEVICE_BIT_IN | AUDIO_DEVICE_BIT_DEFAULT)
- AUDIO_DEVICE_IN_ALL = 3223322623u, // (((((((((((((((((((((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_DEFAULT)
- AUDIO_DEVICE_IN_ALL_SCO = 2147483656u, // AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET
- AUDIO_DEVICE_IN_ALL_USB = 2147489792u, // (AUDIO_DEVICE_IN_USB_ACCESSORY | AUDIO_DEVICE_IN_USB_DEVICE)
+ AUDIO_DEVICE_OUT_DEFAULT = 1073741824u, // BIT_DEFAULT
+ AUDIO_DEVICE_OUT_ALL = 1107296255u, // (((((((((((((((((((((((((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_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 = 24576u, // (OUT_USB_ACCESSORY | OUT_USB_DEVICE)
+ 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)
+ AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET = 2147483656u, // (BIT_IN | 0x8)
+ AUDIO_DEVICE_IN_WIRED_HEADSET = 2147483664u, // (BIT_IN | 0x10)
+ AUDIO_DEVICE_IN_AUX_DIGITAL = 2147483680u, // (BIT_IN | 0x20)
+ AUDIO_DEVICE_IN_HDMI = 2147483680u, // IN_AUX_DIGITAL
+ AUDIO_DEVICE_IN_VOICE_CALL = 2147483712u, // (BIT_IN | 0x40)
+ AUDIO_DEVICE_IN_TELEPHONY_RX = 2147483712u, // IN_VOICE_CALL
+ AUDIO_DEVICE_IN_BACK_MIC = 2147483776u, // (BIT_IN | 0x80)
+ AUDIO_DEVICE_IN_REMOTE_SUBMIX = 2147483904u, // (BIT_IN | 0x100)
+ AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET = 2147484160u, // (BIT_IN | 0x200)
+ AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET = 2147484672u, // (BIT_IN | 0x400)
+ AUDIO_DEVICE_IN_USB_ACCESSORY = 2147485696u, // (BIT_IN | 0x800)
+ AUDIO_DEVICE_IN_USB_DEVICE = 2147487744u, // (BIT_IN | 0x1000)
+ AUDIO_DEVICE_IN_FM_TUNER = 2147491840u, // (BIT_IN | 0x2000)
+ AUDIO_DEVICE_IN_TV_TUNER = 2147500032u, // (BIT_IN | 0x4000)
+ AUDIO_DEVICE_IN_LINE = 2147516416u, // (BIT_IN | 0x8000)
+ AUDIO_DEVICE_IN_SPDIF = 2147549184u, // (BIT_IN | 0x10000)
+ AUDIO_DEVICE_IN_BLUETOOTH_A2DP = 2147614720u, // (BIT_IN | 0x20000)
+ AUDIO_DEVICE_IN_LOOPBACK = 2147745792u, // (BIT_IN | 0x40000)
+ AUDIO_DEVICE_IN_IP = 2148007936u, // (BIT_IN | 0x80000)
+ AUDIO_DEVICE_IN_BUS = 2148532224u, // (BIT_IN | 0x100000)
+ AUDIO_DEVICE_IN_DEFAULT = 3221225472u, // (BIT_IN | BIT_DEFAULT)
+ AUDIO_DEVICE_IN_ALL = 3223322623u, // (((((((((((((((((((((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_DEFAULT)
+ AUDIO_DEVICE_IN_ALL_SCO = 2147483656u, // IN_BLUETOOTH_SCO_HEADSET
+ AUDIO_DEVICE_IN_ALL_USB = 2147489792u, // (IN_USB_ACCESSORY | IN_USB_DEVICE)
};
typedef enum {
@@ -308,7 +311,7 @@
AUDIO_PORT_CONFIG_CHANNEL_MASK = 2u, // 0x2
AUDIO_PORT_CONFIG_FORMAT = 4u, // 0x4
AUDIO_PORT_CONFIG_GAIN = 8u, // 0x8
- AUDIO_PORT_CONFIG_ALL = 15u, // (((AUDIO_PORT_CONFIG_SAMPLE_RATE | AUDIO_PORT_CONFIG_CHANNEL_MASK) | AUDIO_PORT_CONFIG_FORMAT) | AUDIO_PORT_CONFIG_GAIN)
+ AUDIO_PORT_CONFIG_ALL = 15u, // (((SAMPLE_RATE | CHANNEL_MASK) | FORMAT) | GAIN)
};
typedef enum {
diff --git a/audio/include/system/audio.h b/audio/include/system/audio.h
index ad556d7..72a7e13 100644
--- a/audio/include/system/audio.h
+++ b/audio/include/system/audio.h
@@ -916,6 +916,17 @@
}
}
+// Unique effect ID (can be generated from the following site:
+// http://www.itu.int/ITU-T/asn1/uuid.html)
+// This struct is used for effects identification and in soundtrigger.
+typedef struct audio_uuid_s {
+ uint32_t timeLow;
+ uint16_t timeMid;
+ uint16_t timeHiAndVersion;
+ uint16_t clockSeq;
+ uint8_t node[6];
+} audio_uuid_t;
+
__END_DECLS
#endif // ANDROID_AUDIO_CORE_H
diff --git a/audio/include/system/audio_effect-base.h b/audio/include/system/audio_effect-base.h
new file mode 100644
index 0000000..3495eed
--- /dev/null
+++ b/audio/include/system/audio_effect-base.h
@@ -0,0 +1,98 @@
+// This file is autogenerated by hidl-gen. Do not edit manually.
+
+#ifndef HIDL_GENERATED_android_hardware_audio_effect_V2_0_EXPORTED_CONSTANTS_H_
+#define HIDL_GENERATED_android_hardware_audio_effect_V2_0_EXPORTED_CONSTANTS_H_
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+enum {
+ EFFECT_FLAG_TYPE_SHIFT = 0,
+ EFFECT_FLAG_TYPE_SIZE = 3,
+ EFFECT_FLAG_TYPE_MASK = 7, // (((1 << TYPE_SIZE) - 1) << TYPE_SHIFT)
+ EFFECT_FLAG_TYPE_INSERT = 0, // (0 << TYPE_SHIFT)
+ EFFECT_FLAG_TYPE_AUXILIARY = 1, // (1 << TYPE_SHIFT)
+ EFFECT_FLAG_TYPE_REPLACE = 2, // (2 << TYPE_SHIFT)
+ EFFECT_FLAG_TYPE_PRE_PROC = 3, // (3 << TYPE_SHIFT)
+ EFFECT_FLAG_TYPE_POST_PROC = 4, // (4 << TYPE_SHIFT)
+ EFFECT_FLAG_INSERT_SHIFT = 3, // (TYPE_SHIFT + TYPE_SIZE)
+ EFFECT_FLAG_INSERT_SIZE = 3,
+ EFFECT_FLAG_INSERT_MASK = 56, // (((1 << INSERT_SIZE) - 1) << INSERT_SHIFT)
+ EFFECT_FLAG_INSERT_ANY = 0, // (0 << INSERT_SHIFT)
+ EFFECT_FLAG_INSERT_FIRST = 8, // (1 << INSERT_SHIFT)
+ EFFECT_FLAG_INSERT_LAST = 16, // (2 << INSERT_SHIFT)
+ EFFECT_FLAG_INSERT_EXCLUSIVE = 24, // (3 << INSERT_SHIFT)
+ EFFECT_FLAG_VOLUME_SHIFT = 6, // (INSERT_SHIFT + INSERT_SIZE)
+ EFFECT_FLAG_VOLUME_SIZE = 3,
+ EFFECT_FLAG_VOLUME_MASK = 448, // (((1 << VOLUME_SIZE) - 1) << VOLUME_SHIFT)
+ EFFECT_FLAG_VOLUME_CTRL = 64, // (1 << VOLUME_SHIFT)
+ EFFECT_FLAG_VOLUME_IND = 128, // (2 << VOLUME_SHIFT)
+ EFFECT_FLAG_VOLUME_NONE = 0, // (0 << VOLUME_SHIFT)
+ EFFECT_FLAG_DEVICE_SHIFT = 9, // (VOLUME_SHIFT + VOLUME_SIZE)
+ EFFECT_FLAG_DEVICE_SIZE = 3,
+ EFFECT_FLAG_DEVICE_MASK = 3584, // (((1 << DEVICE_SIZE) - 1) << DEVICE_SHIFT)
+ EFFECT_FLAG_DEVICE_IND = 512, // (1 << DEVICE_SHIFT)
+ EFFECT_FLAG_DEVICE_NONE = 0, // (0 << DEVICE_SHIFT)
+ EFFECT_FLAG_INPUT_SHIFT = 12, // (DEVICE_SHIFT + DEVICE_SIZE)
+ EFFECT_FLAG_INPUT_SIZE = 2,
+ EFFECT_FLAG_INPUT_MASK = 12288, // (((1 << INPUT_SIZE) - 1) << INPUT_SHIFT)
+ EFFECT_FLAG_INPUT_DIRECT = 4096, // (1 << INPUT_SHIFT)
+ EFFECT_FLAG_INPUT_PROVIDER = 8192, // (2 << INPUT_SHIFT)
+ EFFECT_FLAG_INPUT_BOTH = 12288, // (3 << INPUT_SHIFT)
+ EFFECT_FLAG_OUTPUT_SHIFT = 14, // (INPUT_SHIFT + INPUT_SIZE)
+ EFFECT_FLAG_OUTPUT_SIZE = 2,
+ EFFECT_FLAG_OUTPUT_MASK = 49152, // (((1 << OUTPUT_SIZE) - 1) << OUTPUT_SHIFT)
+ EFFECT_FLAG_OUTPUT_DIRECT = 16384, // (1 << OUTPUT_SHIFT)
+ EFFECT_FLAG_OUTPUT_PROVIDER = 32768, // (2 << OUTPUT_SHIFT)
+ EFFECT_FLAG_OUTPUT_BOTH = 49152, // (3 << OUTPUT_SHIFT)
+ EFFECT_FLAG_HW_ACC_SHIFT = 16, // (OUTPUT_SHIFT + OUTPUT_SIZE)
+ EFFECT_FLAG_HW_ACC_SIZE = 2,
+ EFFECT_FLAG_HW_ACC_MASK = 196608, // (((1 << HW_ACC_SIZE) - 1) << HW_ACC_SHIFT)
+ EFFECT_FLAG_HW_ACC_SIMPLE = 65536, // (1 << HW_ACC_SHIFT)
+ EFFECT_FLAG_HW_ACC_TUNNEL = 131072, // (2 << HW_ACC_SHIFT)
+ EFFECT_FLAG_AUDIO_MODE_SHIFT = 18, // (HW_ACC_SHIFT + HW_ACC_SIZE)
+ EFFECT_FLAG_AUDIO_MODE_SIZE = 2,
+ EFFECT_FLAG_AUDIO_MODE_MASK = 786432, // (((1 << AUDIO_MODE_SIZE) - 1) << AUDIO_MODE_SHIFT)
+ EFFECT_FLAG_AUDIO_MODE_IND = 262144, // (1 << AUDIO_MODE_SHIFT)
+ EFFECT_FLAG_AUDIO_MODE_NONE = 0, // (0 << AUDIO_MODE_SHIFT)
+ EFFECT_FLAG_AUDIO_SOURCE_SHIFT = 20, // (AUDIO_MODE_SHIFT + AUDIO_MODE_SIZE)
+ EFFECT_FLAG_AUDIO_SOURCE_SIZE = 2,
+ EFFECT_FLAG_AUDIO_SOURCE_MASK = 3145728, // (((1 << AUDIO_SOURCE_SIZE) - 1) << AUDIO_SOURCE_SHIFT)
+ EFFECT_FLAG_AUDIO_SOURCE_IND = 1048576, // (1 << AUDIO_SOURCE_SHIFT)
+ EFFECT_FLAG_AUDIO_SOURCE_NONE = 0, // (0 << AUDIO_SOURCE_SHIFT)
+ EFFECT_FLAG_OFFLOAD_SHIFT = 22, // (AUDIO_SOURCE_SHIFT + AUDIO_SOURCE_SIZE)
+ EFFECT_FLAG_OFFLOAD_SIZE = 1,
+ EFFECT_FLAG_OFFLOAD_MASK = 4194304, // (((1 << OFFLOAD_SIZE) - 1) << OFFLOAD_SHIFT)
+ EFFECT_FLAG_OFFLOAD_SUPPORTED = 4194304, // (1 << OFFLOAD_SHIFT)
+ EFFECT_FLAG_NO_PROCESS_SHIFT = 23, // (OFFLOAD_SHIFT + OFFLOAD_SIZE)
+ EFFECT_FLAG_NO_PROCESS_SIZE = 1,
+ EFFECT_FLAG_NO_PROCESS_MASK = 8388608, // (((1 << NO_PROCESS_SIZE) - 1) << NO_PROCESS_SHIFT)
+ EFFECT_FLAG_NO_PROCESS = 8388608, // (1 << NO_PROCESS_SHIFT)
+};
+
+typedef enum {
+ EFFECT_BUFFER_ACCESS_WRITE = 0,
+ EFFECT_BUFFER_ACCESS_READ = 1,
+ EFFECT_BUFFER_ACCESS_ACCUMULATE = 2,
+} 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)
+};
+
+typedef enum {
+ EFFECT_FEATURE_AUX_CHANNELS = 0,
+ EFFECT_FEATURE_CNT = 1,
+} effect_feature_e;
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif // HIDL_GENERATED_android_hardware_audio_effect_V2_0_EXPORTED_CONSTANTS_H_
diff --git a/audio/include/system/audio_effect.h b/audio/include/system/audio_effect.h
new file mode 100644
index 0000000..f4e982a
--- /dev/null
+++ b/audio/include/system/audio_effect.h
@@ -0,0 +1,526 @@
+/*
+ * Copyright (C) 2016 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_EFFECT_CORE_H
+#define ANDROID_AUDIO_EFFECT_CORE_H
+
+#include "audio.h"
+#include "audio_effect-base.h"
+
+__BEGIN_DECLS
+
+/////////////////////////////////////////////////
+// Common Definitions
+/////////////////////////////////////////////////
+
+//
+//--- Effect descriptor structure effect_descriptor_t
+//
+
+// This format is used for both "type" and "uuid" fields of the effect descriptor structure.
+// - When used for effect type and the engine is implementing and effect corresponding to a standard
+// OpenSL ES interface, this ID must be the one defined in OpenSLES_IID.h for that interface.
+// - When used as uuid, it should be a unique UUID for this particular implementation.
+typedef audio_uuid_t effect_uuid_t;
+
+// Maximum length of character strings in structures defines by this API.
+#define EFFECT_STRING_LEN_MAX 64
+
+// NULL UUID definition (matches SL_IID_NULL_)
+#define EFFECT_UUID_INITIALIZER { 0xec7178ec, 0xe5e1, 0x4432, 0xa3f4, \
+ { 0x46, 0x57, 0xe6, 0x79, 0x52, 0x10 } }
+static const effect_uuid_t EFFECT_UUID_NULL_ = EFFECT_UUID_INITIALIZER;
+static const effect_uuid_t * const EFFECT_UUID_NULL = &EFFECT_UUID_NULL_;
+static const char * const EFFECT_UUID_NULL_STR = "ec7178ec-e5e1-4432-a3f4-4657e6795210";
+
+// The effect descriptor contains necessary information to facilitate the enumeration of the effect
+// engines present in a library.
+typedef struct effect_descriptor_s {
+ effect_uuid_t type; // UUID of to the OpenSL ES interface implemented by this effect
+ effect_uuid_t uuid; // UUID for this particular implementation
+ uint32_t apiVersion; // Version of the effect control API implemented
+ uint32_t flags; // effect engine capabilities/requirements flags (see below)
+ uint16_t cpuLoad; // CPU load indication (see below)
+ uint16_t memoryUsage; // Data Memory usage (see below)
+ char name[EFFECT_STRING_LEN_MAX]; // human readable effect name
+ char implementor[EFFECT_STRING_LEN_MAX]; // human readable effect implementor name
+} effect_descriptor_t;
+
+/////////////////////////////////////////////////
+// Effect control interface
+/////////////////////////////////////////////////
+
+//
+//--- Standardized command codes for command() function
+//
+enum effect_command_e {
+ EFFECT_CMD_INIT, // initialize effect engine
+ EFFECT_CMD_SET_CONFIG, // configure effect engine (see effect_config_t)
+ EFFECT_CMD_RESET, // reset effect engine
+ EFFECT_CMD_ENABLE, // enable effect process
+ EFFECT_CMD_DISABLE, // disable effect process
+ EFFECT_CMD_SET_PARAM, // set parameter immediately (see effect_param_t)
+ EFFECT_CMD_SET_PARAM_DEFERRED, // set parameter deferred
+ EFFECT_CMD_SET_PARAM_COMMIT, // commit previous set parameter deferred
+ EFFECT_CMD_GET_PARAM, // get parameter
+ EFFECT_CMD_SET_DEVICE, // set audio device (see audio.h, audio_devices_t)
+ EFFECT_CMD_SET_VOLUME, // set volume
+ EFFECT_CMD_SET_AUDIO_MODE, // set the audio mode (normal, ring, ...)
+ EFFECT_CMD_SET_CONFIG_REVERSE, // configure effect engine reverse stream(see effect_config_t)
+ EFFECT_CMD_SET_INPUT_DEVICE, // set capture device (see audio.h, audio_devices_t)
+ EFFECT_CMD_GET_CONFIG, // read effect engine configuration
+ EFFECT_CMD_GET_CONFIG_REVERSE, // read configure effect engine reverse stream configuration
+ EFFECT_CMD_GET_FEATURE_SUPPORTED_CONFIGS,// get all supported configurations for a feature.
+ EFFECT_CMD_GET_FEATURE_CONFIG, // get current feature configuration
+ EFFECT_CMD_SET_FEATURE_CONFIG, // set current feature configuration
+ EFFECT_CMD_SET_AUDIO_SOURCE, // set the audio source (see audio.h, audio_source_t)
+ EFFECT_CMD_OFFLOAD, // set if effect thread is an offload one,
+ // send the ioHandle of the effect thread
+ EFFECT_CMD_FIRST_PROPRIETARY = 0x10000 // first proprietary command code
+};
+
+//==================================================================================================
+// command: EFFECT_CMD_INIT
+//--------------------------------------------------------------------------------------------------
+// description:
+// Initialize effect engine: All configurations return to default
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: 0
+// data: N/A
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(int)
+// data: status
+//==================================================================================================
+// command: EFFECT_CMD_SET_CONFIG
+//--------------------------------------------------------------------------------------------------
+// description:
+// Apply new audio parameters configurations for input and output buffers
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(effect_config_t)
+// data: effect_config_t
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(int)
+// data: status
+//==================================================================================================
+// command: EFFECT_CMD_RESET
+//--------------------------------------------------------------------------------------------------
+// description:
+// Reset the effect engine. Keep configuration but resets state and buffer content
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: 0
+// data: N/A
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: 0
+// data: N/A
+//==================================================================================================
+// command: EFFECT_CMD_ENABLE
+//--------------------------------------------------------------------------------------------------
+// description:
+// Enable the process. Called by the framework before the first call to process()
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: 0
+// data: N/A
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(int)
+// data: status
+//==================================================================================================
+// command: EFFECT_CMD_DISABLE
+//--------------------------------------------------------------------------------------------------
+// description:
+// Disable the process. Called by the framework after the last call to process()
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: 0
+// data: N/A
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(int)
+// data: status
+//==================================================================================================
+// command: EFFECT_CMD_SET_PARAM
+//--------------------------------------------------------------------------------------------------
+// description:
+// Set a parameter and apply it immediately
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(effect_param_t) + size of param and value
+// data: effect_param_t + param + value. See effect_param_t definition below for value offset
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(int)
+// data: status
+//==================================================================================================
+// command: EFFECT_CMD_SET_PARAM_DEFERRED
+//--------------------------------------------------------------------------------------------------
+// description:
+// Set a parameter but apply it only when receiving EFFECT_CMD_SET_PARAM_COMMIT command
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(effect_param_t) + size of param and value
+// data: effect_param_t + param + value. See effect_param_t definition below for value offset
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: 0
+// data: N/A
+//==================================================================================================
+// command: EFFECT_CMD_SET_PARAM_COMMIT
+//--------------------------------------------------------------------------------------------------
+// description:
+// Apply all previously received EFFECT_CMD_SET_PARAM_DEFERRED commands
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: 0
+// data: N/A
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(int)
+// data: status
+//==================================================================================================
+// command: EFFECT_CMD_GET_PARAM
+//--------------------------------------------------------------------------------------------------
+// description:
+// Get a parameter value
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(effect_param_t) + size of param
+// data: effect_param_t + param
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(effect_param_t) + size of param and value
+// data: effect_param_t + param + value. See effect_param_t definition below for value offset
+//==================================================================================================
+// command: EFFECT_CMD_SET_DEVICE
+//--------------------------------------------------------------------------------------------------
+// description:
+// Set the rendering device the audio output path is connected to. See audio.h, audio_devices_t
+// for device values.
+// The effect implementation must set EFFECT_FLAG_DEVICE_IND flag in its descriptor to receive this
+// command when the device changes
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(uint32_t)
+// data: uint32_t
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: 0
+// data: N/A
+//==================================================================================================
+// command: EFFECT_CMD_SET_VOLUME
+//--------------------------------------------------------------------------------------------------
+// description:
+// Set and get volume. Used by audio framework to delegate volume control to effect engine.
+// The effect implementation must set EFFECT_FLAG_VOLUME_IND or EFFECT_FLAG_VOLUME_CTRL flag in
+// its descriptor to receive this command before every call to process() function
+// If EFFECT_FLAG_VOLUME_CTRL flag is set in the effect descriptor, the effect engine must return
+// the volume that should be applied before the effect is processed. The overall volume (the volume
+// actually applied by the effect engine multiplied by the returned value) should match the value
+// indicated in the command.
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: n * sizeof(uint32_t)
+// data: volume for each channel defined in effect_config_t for output buffer expressed in
+// 8.24 fixed point format
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: n * sizeof(uint32_t) / 0
+// data: - if EFFECT_FLAG_VOLUME_CTRL is set in effect descriptor:
+// volume for each channel defined in effect_config_t for output buffer expressed in
+// 8.24 fixed point format
+// - if EFFECT_FLAG_VOLUME_CTRL is not set in effect descriptor:
+// N/A
+// It is legal to receive a null pointer as pReplyData in which case the effect framework has
+// delegated volume control to another effect
+//==================================================================================================
+// command: EFFECT_CMD_SET_AUDIO_MODE
+//--------------------------------------------------------------------------------------------------
+// description:
+// Set the audio mode. The effect implementation must set EFFECT_FLAG_AUDIO_MODE_IND flag in its
+// descriptor to receive this command when the audio mode changes.
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(uint32_t)
+// data: audio_mode_t
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: 0
+// data: N/A
+//==================================================================================================
+// command: EFFECT_CMD_SET_CONFIG_REVERSE
+//--------------------------------------------------------------------------------------------------
+// description:
+// Apply new audio parameters configurations for input and output buffers of reverse stream.
+// An example of reverse stream is the echo reference supplied to an Acoustic Echo Canceler.
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(effect_config_t)
+// data: effect_config_t
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(int)
+// data: status
+//==================================================================================================
+// command: EFFECT_CMD_SET_INPUT_DEVICE
+//--------------------------------------------------------------------------------------------------
+// description:
+// Set the capture device the audio input path is connected to. See audio.h, audio_devices_t
+// for device values.
+// The effect implementation must set EFFECT_FLAG_DEVICE_IND flag in its descriptor to receive this
+// command when the device changes
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(uint32_t)
+// data: uint32_t
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: 0
+// data: N/A
+//==================================================================================================
+// command: EFFECT_CMD_GET_CONFIG
+//--------------------------------------------------------------------------------------------------
+// description:
+// Read audio parameters configurations for input and output buffers
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: 0
+// data: N/A
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(effect_config_t)
+// data: effect_config_t
+//==================================================================================================
+// command: EFFECT_CMD_GET_CONFIG_REVERSE
+//--------------------------------------------------------------------------------------------------
+// description:
+// Read audio parameters configurations for input and output buffers of reverse stream
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: 0
+// data: N/A
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(effect_config_t)
+// data: effect_config_t
+//==================================================================================================
+// command: EFFECT_CMD_GET_FEATURE_SUPPORTED_CONFIGS
+//--------------------------------------------------------------------------------------------------
+// description:
+// Queries for supported configurations for a particular feature (e.g. get the supported
+// combinations of main and auxiliary channels for a noise suppressor).
+// The command parameter is the feature identifier (See effect_feature_e for a list of defined
+// features) followed by the maximum number of configuration descriptor to return.
+// The reply is composed of:
+// - status (uint32_t):
+// - 0 if feature is supported
+// - -ENOSYS if the feature is not supported,
+// - -ENOMEM if the feature is supported but the total number of supported configurations
+// exceeds the maximum number indicated by the caller.
+// - total number of supported configurations (uint32_t)
+// - an array of configuration descriptors.
+// The actual number of descriptors returned must not exceed the maximum number indicated by
+// the caller.
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: 2 x sizeof(uint32_t)
+// data: effect_feature_e + maximum number of configurations to return
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: 2 x sizeof(uint32_t) + n x sizeof (<config descriptor>)
+// data: status + total number of configurations supported + array of n config descriptors
+//==================================================================================================
+// command: EFFECT_CMD_GET_FEATURE_CONFIG
+//--------------------------------------------------------------------------------------------------
+// description:
+// Retrieves current configuration for a given feature.
+// The reply status is:
+// - 0 if feature is supported
+// - -ENOSYS if the feature is not supported,
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(uint32_t)
+// data: effect_feature_e
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(uint32_t) + sizeof (<config descriptor>)
+// data: status + config descriptor
+//==================================================================================================
+// command: EFFECT_CMD_SET_FEATURE_CONFIG
+//--------------------------------------------------------------------------------------------------
+// description:
+// Sets current configuration for a given feature.
+// The reply status is:
+// - 0 if feature is supported
+// - -ENOSYS if the feature is not supported,
+// - -EINVAL if the configuration is invalid
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(uint32_t) + sizeof (<config descriptor>)
+// data: effect_feature_e + config descriptor
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(uint32_t)
+// data: status
+//==================================================================================================
+// command: EFFECT_CMD_SET_AUDIO_SOURCE
+//--------------------------------------------------------------------------------------------------
+// description:
+// Set the audio source the capture path is configured for (Camcorder, voice recognition...).
+// See audio.h, audio_source_t for values.
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(uint32_t)
+// data: uint32_t
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: 0
+// data: N/A
+//==================================================================================================
+// command: EFFECT_CMD_OFFLOAD
+//--------------------------------------------------------------------------------------------------
+// description:
+// 1.indicate if the playback thread the effect is attached to is offloaded or not
+// 2.update the io handle of the playback thread the effect is attached to
+//--------------------------------------------------------------------------------------------------
+// command format:
+// size: sizeof(effect_offload_param_t)
+// data: effect_offload_param_t
+//--------------------------------------------------------------------------------------------------
+// reply format:
+// size: sizeof(uint32_t)
+// data: uint32_t
+//--------------------------------------------------------------------------------------------------
+// command: EFFECT_CMD_FIRST_PROPRIETARY
+//--------------------------------------------------------------------------------------------------
+// description:
+// All proprietary effect commands must use command codes above this value. The size and format of
+// command and response fields is free in this case
+//==================================================================================================
+
+// Audio buffer descriptor used by process(), bufferProvider() functions and buffer_config_t
+// structure. Multi-channel audio is always interleaved. The channel order is from LSB to MSB with
+// regard to the channel mask definition in audio.h, audio_channel_mask_t e.g :
+// Stereo: left, right
+// 5 point 1: front left, front right, front center, low frequency, back left, back right
+// The buffer size is expressed in frame count, a frame being composed of samples for all
+// channels at a given time. Frame size for unspecified format (AUDIO_FORMAT_OTHER) is 8 bit by
+// definition
+typedef struct audio_buffer_s {
+ size_t frameCount; // number of frames in buffer
+ union {
+ void* raw; // raw pointer to start of buffer
+ int32_t* s32; // pointer to signed 32 bit data at start of buffer
+ int16_t* s16; // pointer to signed 16 bit data at start of buffer
+ uint8_t* u8; // pointer to unsigned 8 bit data at start of buffer
+ };
+} audio_buffer_t;
+
+// The buffer_provider_s structure contains functions that can be used
+// by the effect engine process() function to query and release input
+// or output audio buffer.
+// The getBuffer() function is called to retrieve a buffer where data
+// should read from or written to by process() function.
+// The releaseBuffer() function MUST be called when the buffer retrieved
+// with getBuffer() is not needed anymore.
+// The process function should use the buffer provider mechanism to retrieve
+// input or output buffer if the inBuffer or outBuffer passed as argument is NULL
+// and the buffer configuration (buffer_config_t) given by the EFFECT_CMD_SET_CONFIG
+// command did not specify an audio buffer.
+
+typedef int32_t (* buffer_function_t)(void *cookie, audio_buffer_t *buffer);
+
+typedef struct buffer_provider_s {
+ buffer_function_t getBuffer; // retrieve next buffer
+ buffer_function_t releaseBuffer; // release used buffer
+ void *cookie; // for use by client of buffer provider functions
+} buffer_provider_t;
+
+// The buffer_config_s structure specifies the input or output audio format
+// to be used by the effect engine.
+typedef struct buffer_config_s {
+ audio_buffer_t buffer; // buffer for use by process() function if not passed explicitly
+ uint32_t samplingRate; // sampling rate
+ uint32_t channels; // channel mask (see audio_channel_mask_t in audio.h)
+ buffer_provider_t bufferProvider; // buffer provider
+ uint8_t format; // Audio format (see audio_format_t in audio.h)
+ uint8_t accessMode; // read/write or accumulate in buffer (effect_buffer_access_e)
+ uint16_t mask; // indicates which of the above fields is valid
+} buffer_config_t;
+
+// EFFECT_FEATURE_AUX_CHANNELS feature configuration descriptor. Describe a combination
+// of main and auxiliary channels supported
+typedef struct channel_config_s {
+ audio_channel_mask_t main_channels; // channel mask for main channels
+ audio_channel_mask_t aux_channels; // channel mask for auxiliary channels
+} channel_config_t;
+
+
+// effect_config_s structure is used to configure audio parameters and buffers for effect engine
+// input and output.
+typedef struct effect_config_s {
+ buffer_config_t inputCfg;
+ buffer_config_t outputCfg;
+} effect_config_t;
+
+
+// effect_param_s structure describes the format of the pCmdData argument of EFFECT_CMD_SET_PARAM
+// command and pCmdData and pReplyData of EFFECT_CMD_GET_PARAM command.
+// psize and vsize represent the actual size of parameter and value.
+//
+// NOTE: the start of value field inside the data field is always on a 32 bit boundary:
+//
+// +-----------+
+// | status | sizeof(int)
+// +-----------+
+// | psize | sizeof(int)
+// +-----------+
+// | vsize | sizeof(int)
+// +-----------+
+// | | | |
+// ~ parameter ~ > psize |
+// | | | > ((psize - 1)/sizeof(int) + 1) * sizeof(int)
+// +-----------+ |
+// | padding | |
+// +-----------+
+// | | |
+// ~ value ~ > vsize
+// | | |
+// +-----------+
+
+typedef struct effect_param_s {
+ int32_t status; // Transaction status (unused for command, used for reply)
+ uint32_t psize; // Parameter size
+ uint32_t vsize; // Value size
+ char data[]; // Start of Parameter + Value data
+} effect_param_t;
+
+// structure used by EFFECT_CMD_OFFLOAD command
+typedef struct effect_offload_param_s {
+ bool isOffload; // true if the playback thread the effect is attached to is offloaded
+ int ioHandle; // io handle of the playback thread the effect is attached to
+} effect_offload_param_t;
+
+
+__END_DECLS
+
+#endif // ANDROID_AUDIO_EFFECT_CORE_H
diff --git a/audio/include/system/sound_trigger.h b/audio/include/system/sound_trigger.h
index 8f80080..c5156d9 100644
--- a/audio/include/system/sound_trigger.h
+++ b/audio/include/system/sound_trigger.h
@@ -50,13 +50,7 @@
SOUND_MODEL_TYPE_GENERIC = 1 /* use for all models other than keyphrase */
} sound_trigger_sound_model_type_t;
-typedef struct sound_trigger_uuid_s {
- unsigned int timeLow;
- unsigned short timeMid;
- unsigned short timeHiAndVersion;
- unsigned short clockSeq;
- unsigned char node[6];
-} sound_trigger_uuid_t;
+typedef audio_uuid_t sound_trigger_uuid_t;
/*
* sound trigger implementation descriptor read by the framework via get_properties().
diff --git a/audio_route/audio_route.c b/audio_route/audio_route.c
index 90b114d..bd5c112 100644
--- a/audio_route/audio_route.c
+++ b/audio_route/audio_route.c
@@ -420,13 +420,24 @@
static int mixer_enum_string_to_value(struct mixer_ctl *ctl, const char *string)
{
unsigned int i;
+ unsigned int num_values = mixer_ctl_get_num_enums(ctl);
+
+ if (string == NULL) {
+ ALOGE("NULL enum value string passed to mixer_enum_string_to_value() for ctl %s",
+ mixer_ctl_get_name(ctl));
+ return 0;
+ }
/* Search the enum strings for a particular one */
- for (i = 0; i < mixer_ctl_get_num_enums(ctl); i++) {
+ for (i = 0; i < num_values; i++) {
if (strcmp(mixer_ctl_get_enum_string(ctl, i), string) == 0)
break;
}
-
+ if (i == num_values) {
+ ALOGE("unknown enum value string %s for ctl %s",
+ string, mixer_ctl_get_name(ctl));
+ return 0;
+ }
return i;
}
diff --git a/audio_utils/include/audio_utils/spdif/SPDIFEncoder.h b/audio_utils/include/audio_utils/spdif/SPDIFEncoder.h
index b356149..96421ac 100644
--- a/audio_utils/include/audio_utils/spdif/SPDIFEncoder.h
+++ b/audio_utils/include/audio_utils/spdif/SPDIFEncoder.h
@@ -18,7 +18,7 @@
#define ANDROID_AUDIO_SPDIF_ENCODER_H
#include <stdint.h>
-#include <hardware/audio.h>
+#include <system/audio.h>
#include <audio_utils/spdif/FrameScanner.h>
namespace android {
diff --git a/audio_utils/spdif/AC3FrameScanner.h b/audio_utils/spdif/AC3FrameScanner.h
index 9f3ea57..a73a860 100644
--- a/audio_utils/spdif/AC3FrameScanner.h
+++ b/audio_utils/spdif/AC3FrameScanner.h
@@ -18,7 +18,7 @@
#define ANDROID_AUDIO_AC3_FRAME_SCANNER_H
#include <stdint.h>
-#include <hardware/audio.h>
+#include <system/audio.h>
#include <audio_utils/spdif/FrameScanner.h>
namespace android {