Merge "Add const value for manually set surround formats." into pi-dev
diff --git a/audio/include/system/audio-base.h b/audio/include/system/audio-base.h
index 6d8e08b..3d0638d 100644
--- a/audio/include/system/audio-base.h
+++ b/audio/include/system/audio-base.h
@@ -69,102 +69,112 @@
} audio_session_t;
typedef enum {
- 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)
- 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_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)
- AUDIO_FORMAT_AAC_ADTS_LTP = 503316488u, // (AAC_ADTS | AAC_SUB_LTP)
- AUDIO_FORMAT_AAC_ADTS_HE_V1 = 503316496u, // (AAC_ADTS | AAC_SUB_HE_V1)
- AUDIO_FORMAT_AAC_ADTS_SCALABLE = 503316512u, // (AAC_ADTS | AAC_SUB_SCALABLE)
- AUDIO_FORMAT_AAC_ADTS_ERLC = 503316544u, // (AAC_ADTS | AAC_SUB_ERLC)
- 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_INVALID = 0xFFFFFFFFu,
+ AUDIO_FORMAT_DEFAULT = 0,
+ AUDIO_FORMAT_PCM = 0x00000000u,
+ AUDIO_FORMAT_MP3 = 0x01000000u,
+ AUDIO_FORMAT_AMR_NB = 0x02000000u,
+ AUDIO_FORMAT_AMR_WB = 0x03000000u,
+ AUDIO_FORMAT_AAC = 0x04000000u,
+ AUDIO_FORMAT_HE_AAC_V1 = 0x05000000u,
+ AUDIO_FORMAT_HE_AAC_V2 = 0x06000000u,
+ AUDIO_FORMAT_VORBIS = 0x07000000u,
+ AUDIO_FORMAT_OPUS = 0x08000000u,
+ AUDIO_FORMAT_AC3 = 0x09000000u,
+ AUDIO_FORMAT_E_AC3 = 0x0A000000u,
+ AUDIO_FORMAT_DTS = 0x0B000000u,
+ AUDIO_FORMAT_DTS_HD = 0x0C000000u,
+ AUDIO_FORMAT_IEC61937 = 0x0D000000u,
+ AUDIO_FORMAT_DOLBY_TRUEHD = 0x0E000000u,
+ AUDIO_FORMAT_EVRC = 0x10000000u,
+ AUDIO_FORMAT_EVRCB = 0x11000000u,
+ AUDIO_FORMAT_EVRCWB = 0x12000000u,
+ AUDIO_FORMAT_EVRCNW = 0x13000000u,
+ AUDIO_FORMAT_AAC_ADIF = 0x14000000u,
+ AUDIO_FORMAT_WMA = 0x15000000u,
+ AUDIO_FORMAT_WMA_PRO = 0x16000000u,
+ AUDIO_FORMAT_AMR_WB_PLUS = 0x17000000u,
+ AUDIO_FORMAT_MP2 = 0x18000000u,
+ AUDIO_FORMAT_QCELP = 0x19000000u,
+ AUDIO_FORMAT_DSD = 0x1A000000u,
+ AUDIO_FORMAT_FLAC = 0x1B000000u,
+ AUDIO_FORMAT_ALAC = 0x1C000000u,
+ AUDIO_FORMAT_APE = 0x1D000000u,
+ AUDIO_FORMAT_AAC_ADTS = 0x1E000000u,
+ AUDIO_FORMAT_SBC = 0x1F000000u,
+ AUDIO_FORMAT_APTX = 0x20000000u,
+ AUDIO_FORMAT_APTX_HD = 0x21000000u,
+ AUDIO_FORMAT_AC4 = 0x22000000u,
+ AUDIO_FORMAT_LDAC = 0x23000000u,
+ AUDIO_FORMAT_MAT = 0x24000000u,
+ AUDIO_FORMAT_MAIN_MASK = 0xFF000000u,
+ AUDIO_FORMAT_SUB_MASK = 0x00FFFFFFu,
+
+ /* Subformats */
+ AUDIO_FORMAT_PCM_SUB_16_BIT = 0x1u,
+ AUDIO_FORMAT_PCM_SUB_8_BIT = 0x2u,
+ AUDIO_FORMAT_PCM_SUB_32_BIT = 0x3u,
+ AUDIO_FORMAT_PCM_SUB_8_24_BIT = 0x4u,
+ AUDIO_FORMAT_PCM_SUB_FLOAT = 0x5u,
+ AUDIO_FORMAT_PCM_SUB_24_BIT_PACKED = 0x6u,
+
+ AUDIO_FORMAT_MP3_SUB_NONE = 0x0u,
+
+ AUDIO_FORMAT_AMR_SUB_NONE = 0x0u,
+
+ AUDIO_FORMAT_AAC_SUB_MAIN = 0x1u,
+ AUDIO_FORMAT_AAC_SUB_LC = 0x2u,
+ AUDIO_FORMAT_AAC_SUB_SSR = 0x4u,
+ AUDIO_FORMAT_AAC_SUB_LTP = 0x8u,
+ AUDIO_FORMAT_AAC_SUB_HE_V1 = 0x10u,
+ AUDIO_FORMAT_AAC_SUB_SCALABLE = 0x20u,
+ AUDIO_FORMAT_AAC_SUB_ERLC = 0x40u,
+ AUDIO_FORMAT_AAC_SUB_LD = 0x80u,
+ AUDIO_FORMAT_AAC_SUB_HE_V2 = 0x100u,
+ AUDIO_FORMAT_AAC_SUB_ELD = 0x200u,
+ AUDIO_FORMAT_AAC_SUB_XHE = 0x300u,
+
+ AUDIO_FORMAT_VORBIS_SUB_NONE = 0x0u,
+
+ AUDIO_FORMAT_E_AC3_SUB_JOC = 0x1u,
+
+ AUDIO_FORMAT_MAT_SUB_1_0 = 0x1u,
+ AUDIO_FORMAT_MAT_SUB_2_0 = 0x2u,
+ AUDIO_FORMAT_MAT_SUB_2_1 = 0x3u,
+
+ /* Aliases */
+ AUDIO_FORMAT_PCM_16_BIT = 0x1u, // (PCM | PCM_SUB_16_BIT)
+ AUDIO_FORMAT_PCM_8_BIT = 0x2u, // (PCM | PCM_SUB_8_BIT)
+ AUDIO_FORMAT_PCM_32_BIT = 0x3u, // (PCM | PCM_SUB_32_BIT)
+ AUDIO_FORMAT_PCM_8_24_BIT = 0x4u, // (PCM | PCM_SUB_8_24_BIT)
+ AUDIO_FORMAT_PCM_FLOAT = 0x5u, // (PCM | PCM_SUB_FLOAT)
+ AUDIO_FORMAT_PCM_24_BIT_PACKED = 0x6u, // (PCM | PCM_SUB_24_BIT_PACKED)
+ AUDIO_FORMAT_AAC_MAIN = 0x4000001u, // (AAC | AAC_SUB_MAIN)
+ AUDIO_FORMAT_AAC_LC = 0x4000002u, // (AAC | AAC_SUB_LC)
+ AUDIO_FORMAT_AAC_SSR = 0x4000004u, // (AAC | AAC_SUB_SSR)
+ AUDIO_FORMAT_AAC_LTP = 0x4000008u, // (AAC | AAC_SUB_LTP)
+ AUDIO_FORMAT_AAC_HE_V1 = 0x4000010u, // (AAC | AAC_SUB_HE_V1)
+ AUDIO_FORMAT_AAC_SCALABLE = 0x4000020u, // (AAC | AAC_SUB_SCALABLE)
+ AUDIO_FORMAT_AAC_ERLC = 0x4000040u, // (AAC | AAC_SUB_ERLC)
+ AUDIO_FORMAT_AAC_LD = 0x4000080u, // (AAC | AAC_SUB_LD)
+ AUDIO_FORMAT_AAC_HE_V2 = 0x4000100u, // (AAC | AAC_SUB_HE_V2)
+ AUDIO_FORMAT_AAC_ELD = 0x4000200u, // (AAC | AAC_SUB_ELD)
+ AUDIO_FORMAT_AAC_XHE = 0x4000300u, // (AAC | AAC_SUB_XHE)
+ AUDIO_FORMAT_AAC_ADTS_MAIN = 0x1e000001u, // (AAC_ADTS | AAC_SUB_MAIN)
+ AUDIO_FORMAT_AAC_ADTS_LC = 0x1e000002u, // (AAC_ADTS | AAC_SUB_LC)
+ AUDIO_FORMAT_AAC_ADTS_SSR = 0x1e000004u, // (AAC_ADTS | AAC_SUB_SSR)
+ AUDIO_FORMAT_AAC_ADTS_LTP = 0x1e000008u, // (AAC_ADTS | AAC_SUB_LTP)
+ AUDIO_FORMAT_AAC_ADTS_HE_V1 = 0x1e000010u, // (AAC_ADTS | AAC_SUB_HE_V1)
+ AUDIO_FORMAT_AAC_ADTS_SCALABLE = 0x1e000020u, // (AAC_ADTS | AAC_SUB_SCALABLE)
+ AUDIO_FORMAT_AAC_ADTS_ERLC = 0x1e000040u, // (AAC_ADTS | AAC_SUB_ERLC)
+ AUDIO_FORMAT_AAC_ADTS_LD = 0x1e000080u, // (AAC_ADTS | AAC_SUB_LD)
+ AUDIO_FORMAT_AAC_ADTS_HE_V2 = 0x1e000100u, // (AAC_ADTS | AAC_SUB_HE_V2)
+ AUDIO_FORMAT_AAC_ADTS_ELD = 0x1e000200u, // (AAC_ADTS | AAC_SUB_ELD)
+ AUDIO_FORMAT_AAC_ADTS_XHE = 0x1e000300u, // (AAC_ADTS | AAC_SUB_XHE)
+ AUDIO_FORMAT_E_AC3_JOC = 0xA000001u, // (E_AC3 | E_AC3_SUB_JOC)
+ AUDIO_FORMAT_MAT_1_0 = 0x24000001u, // (MAT | MAT_SUB_1_0)
+ AUDIO_FORMAT_MAT_2_0 = 0x24000002u, // (MAT | MAT_SUB_2_0)
+ AUDIO_FORMAT_MAT_2_1 = 0x24000003u, // (MAT | MAT_SUB_2_1)
} audio_format_t;
enum {
@@ -173,93 +183,96 @@
};
enum {
- 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_SIDE_LEFT = 262144u,
- AUDIO_CHANNEL_OUT_TOP_SIDE_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_SIDE_LEFT) | OUT_TOP_SIDE_RIGHT)
- AUDIO_CHANNEL_OUT_2POINT1POINT2 = 786443u, // ((((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_TOP_SIDE_LEFT) | OUT_TOP_SIDE_RIGHT) | OUT_LOW_FREQUENCY)
- AUDIO_CHANNEL_OUT_3POINT0POINT2 = 786439u, // ((((OUT_FRONT_LEFT | OUT_FRONT_CENTER) | OUT_FRONT_RIGHT) | OUT_TOP_SIDE_LEFT) | OUT_TOP_SIDE_RIGHT)
- AUDIO_CHANNEL_OUT_3POINT1POINT2 = 786447u, // (((((OUT_FRONT_LEFT | OUT_FRONT_CENTER) | OUT_FRONT_RIGHT) | OUT_TOP_SIDE_LEFT) | OUT_TOP_SIDE_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)
- AUDIO_CHANNEL_OUT_SURROUND = 263u, // (((OUT_FRONT_LEFT | OUT_FRONT_RIGHT) | OUT_FRONT_CENTER) | OUT_BACK_CENTER)
- AUDIO_CHANNEL_OUT_PENTA = 55u, // (OUT_QUAD | OUT_FRONT_CENTER)
- 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_5POINT1POINT2 = 786495u, // ((OUT_5POINT1 | OUT_TOP_SIDE_LEFT) | OUT_TOP_SIDE_RIGHT)
- AUDIO_CHANNEL_OUT_5POINT1POINT4 = 184383u, // ((((OUT_5POINT1 | OUT_TOP_FRONT_LEFT) | OUT_TOP_FRONT_RIGHT) | OUT_TOP_BACK_LEFT) | OUT_TOP_BACK_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_7POINT1POINT2 = 788031u, // ((OUT_7POINT1 | OUT_TOP_SIDE_LEFT) | OUT_TOP_SIDE_RIGHT)
- AUDIO_CHANNEL_OUT_7POINT1POINT4 = 185919u, // ((((OUT_7POINT1 | OUT_TOP_FRONT_LEFT) | OUT_TOP_FRONT_RIGHT) | OUT_TOP_BACK_LEFT) | OUT_TOP_BACK_RIGHT)
- 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_2POINT0POINT2 = 6291468u, // (((IN_LEFT | IN_RIGHT) | IN_TOP_LEFT) | IN_TOP_RIGHT)
- AUDIO_CHANNEL_IN_2POINT1POINT2 = 7340044u, // ((((IN_LEFT | IN_RIGHT) | IN_TOP_LEFT) | IN_TOP_RIGHT) | IN_LOW_FREQUENCY)
- AUDIO_CHANNEL_IN_3POINT0POINT2 = 6553612u, // ((((IN_LEFT | IN_CENTER) | IN_RIGHT) | IN_TOP_LEFT) | IN_TOP_RIGHT)
- AUDIO_CHANNEL_IN_3POINT1POINT2 = 7602188u, // (((((IN_LEFT | IN_CENTER) | IN_RIGHT) | IN_TOP_LEFT) | IN_TOP_RIGHT) | IN_LOW_FREQUENCY)
- 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_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))
- 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))
+ AUDIO_CHANNEL_REPRESENTATION_POSITION = 0x0u,
+ AUDIO_CHANNEL_REPRESENTATION_INDEX = 0x2u,
+ AUDIO_CHANNEL_NONE = 0x0u,
+ AUDIO_CHANNEL_INVALID = 0xC0000000u,
+
+ AUDIO_CHANNEL_OUT_FRONT_LEFT = 0x1u,
+ AUDIO_CHANNEL_OUT_FRONT_RIGHT = 0x2u,
+ AUDIO_CHANNEL_OUT_FRONT_CENTER = 0x4u,
+ AUDIO_CHANNEL_OUT_LOW_FREQUENCY = 0x8u,
+ AUDIO_CHANNEL_OUT_BACK_LEFT = 0x10u,
+ AUDIO_CHANNEL_OUT_BACK_RIGHT = 0x20u,
+ AUDIO_CHANNEL_OUT_FRONT_LEFT_OF_CENTER = 0x40u,
+ AUDIO_CHANNEL_OUT_FRONT_RIGHT_OF_CENTER = 0x80u,
+ AUDIO_CHANNEL_OUT_BACK_CENTER = 0x100u,
+ AUDIO_CHANNEL_OUT_SIDE_LEFT = 0x200u,
+ AUDIO_CHANNEL_OUT_SIDE_RIGHT = 0x400u,
+ AUDIO_CHANNEL_OUT_TOP_CENTER = 0x800u,
+ AUDIO_CHANNEL_OUT_TOP_FRONT_LEFT = 0x1000u,
+ AUDIO_CHANNEL_OUT_TOP_FRONT_CENTER = 0x2000u,
+ AUDIO_CHANNEL_OUT_TOP_FRONT_RIGHT = 0x4000u,
+ AUDIO_CHANNEL_OUT_TOP_BACK_LEFT = 0x8000u,
+ AUDIO_CHANNEL_OUT_TOP_BACK_CENTER = 0x10000u,
+ AUDIO_CHANNEL_OUT_TOP_BACK_RIGHT = 0x20000u,
+ AUDIO_CHANNEL_OUT_TOP_SIDE_LEFT = 0x40000u,
+ AUDIO_CHANNEL_OUT_TOP_SIDE_RIGHT = 0x80000u,
+ AUDIO_CHANNEL_OUT_MONO = 0x1u, // OUT_FRONT_LEFT
+ AUDIO_CHANNEL_OUT_STEREO = 0x3u, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT
+ AUDIO_CHANNEL_OUT_2POINT1 = 0xBu, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_LOW_FREQUENCY
+ AUDIO_CHANNEL_OUT_2POINT0POINT2 = 0xC0003u, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_TOP_SIDE_LEFT | OUT_TOP_SIDE_RIGHT
+ AUDIO_CHANNEL_OUT_2POINT1POINT2 = 0xC000Bu, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_TOP_SIDE_LEFT | OUT_TOP_SIDE_RIGHT | OUT_LOW_FREQUENCY
+ AUDIO_CHANNEL_OUT_3POINT0POINT2 = 0xC0007u, // OUT_FRONT_LEFT | OUT_FRONT_CENTER | OUT_FRONT_RIGHT | OUT_TOP_SIDE_LEFT | OUT_TOP_SIDE_RIGHT
+ AUDIO_CHANNEL_OUT_3POINT1POINT2 = 0xC000Fu, // OUT_FRONT_LEFT | OUT_FRONT_CENTER | OUT_FRONT_RIGHT | OUT_TOP_SIDE_LEFT | OUT_TOP_SIDE_RIGHT | OUT_LOW_FREQUENCY
+ AUDIO_CHANNEL_OUT_QUAD = 0x33u, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_BACK_LEFT | OUT_BACK_RIGHT
+ AUDIO_CHANNEL_OUT_QUAD_BACK = 0x33u, // OUT_QUAD
+ AUDIO_CHANNEL_OUT_QUAD_SIDE = 0x603u, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_SIDE_LEFT | OUT_SIDE_RIGHT
+ AUDIO_CHANNEL_OUT_SURROUND = 0x107u, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_FRONT_CENTER | OUT_BACK_CENTER
+ AUDIO_CHANNEL_OUT_PENTA = 0x37u, // OUT_QUAD | OUT_FRONT_CENTER
+ AUDIO_CHANNEL_OUT_5POINT1 = 0x3Fu, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_FRONT_CENTER | OUT_LOW_FREQUENCY | OUT_BACK_LEFT | OUT_BACK_RIGHT
+ AUDIO_CHANNEL_OUT_5POINT1_BACK = 0x3Fu, // OUT_5POINT1
+ AUDIO_CHANNEL_OUT_5POINT1_SIDE = 0x60Fu, // OUT_FRONT_LEFT | OUT_FRONT_RIGHT | OUT_FRONT_CENTER | OUT_LOW_FREQUENCY | OUT_SIDE_LEFT | OUT_SIDE_RIGHT
+ AUDIO_CHANNEL_OUT_5POINT1POINT2 = 0xC003Fu, // OUT_5POINT1 | OUT_TOP_SIDE_LEFT | OUT_TOP_SIDE_RIGHT
+ AUDIO_CHANNEL_OUT_5POINT1POINT4 = 0x2D03Fu, // OUT_5POINT1 | OUT_TOP_FRONT_LEFT | OUT_TOP_FRONT_RIGHT | OUT_TOP_BACK_LEFT | OUT_TOP_BACK_RIGHT
+ AUDIO_CHANNEL_OUT_6POINT1 = 0x13Fu, // 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 = 0x63Fu, // 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_7POINT1POINT2 = 0xC063Fu, // OUT_7POINT1 | OUT_TOP_SIDE_LEFT | OUT_TOP_SIDE_RIGHT
+ AUDIO_CHANNEL_OUT_7POINT1POINT4 = 0x2D63Fu, // OUT_7POINT1 | OUT_TOP_FRONT_LEFT | OUT_TOP_FRONT_RIGHT | OUT_TOP_BACK_LEFT | OUT_TOP_BACK_RIGHT
+
+ AUDIO_CHANNEL_IN_LEFT = 0x4u,
+ AUDIO_CHANNEL_IN_RIGHT = 0x8u,
+ AUDIO_CHANNEL_IN_FRONT = 0x10u,
+ AUDIO_CHANNEL_IN_BACK = 0x20u,
+ AUDIO_CHANNEL_IN_LEFT_PROCESSED = 0x40u,
+ AUDIO_CHANNEL_IN_RIGHT_PROCESSED = 0x80u,
+ AUDIO_CHANNEL_IN_FRONT_PROCESSED = 0x100u,
+ AUDIO_CHANNEL_IN_BACK_PROCESSED = 0x200u,
+ AUDIO_CHANNEL_IN_PRESSURE = 0x400u,
+ AUDIO_CHANNEL_IN_X_AXIS = 0x800u,
+ AUDIO_CHANNEL_IN_Y_AXIS = 0x1000u,
+ AUDIO_CHANNEL_IN_Z_AXIS = 0x2000u,
+ AUDIO_CHANNEL_IN_BACK_LEFT = 0x10000u,
+ AUDIO_CHANNEL_IN_BACK_RIGHT = 0x20000u,
+ AUDIO_CHANNEL_IN_CENTER = 0x40000u,
+ AUDIO_CHANNEL_IN_LOW_FREQUENCY = 0x100000u,
+ AUDIO_CHANNEL_IN_TOP_LEFT = 0x200000u,
+ AUDIO_CHANNEL_IN_TOP_RIGHT = 0x400000u,
+ AUDIO_CHANNEL_IN_VOICE_UPLINK = 0x4000u,
+ AUDIO_CHANNEL_IN_VOICE_DNLINK = 0x8000u,
+ AUDIO_CHANNEL_IN_MONO = 0x10u, // IN_FRONT
+ AUDIO_CHANNEL_IN_STEREO = 0xCu, // IN_LEFT | IN_RIGHT
+ AUDIO_CHANNEL_IN_FRONT_BACK = 0x30u, // IN_FRONT | IN_BACK
+ AUDIO_CHANNEL_IN_6 = 0xFCu, // IN_LEFT | IN_RIGHT | IN_FRONT | IN_BACK | IN_LEFT_PROCESSED | IN_RIGHT_PROCESSED
+ AUDIO_CHANNEL_IN_2POINT0POINT2 = 0x60000Cu, // IN_LEFT | IN_RIGHT | IN_TOP_LEFT | IN_TOP_RIGHT
+ AUDIO_CHANNEL_IN_2POINT1POINT2 = 0x70000Cu, // IN_LEFT | IN_RIGHT | IN_TOP_LEFT | IN_TOP_RIGHT | IN_LOW_FREQUENCY
+ AUDIO_CHANNEL_IN_3POINT0POINT2 = 0x64000Cu, // IN_LEFT | IN_CENTER | IN_RIGHT | IN_TOP_LEFT | IN_TOP_RIGHT
+ AUDIO_CHANNEL_IN_3POINT1POINT2 = 0x74000Cu, // IN_LEFT | IN_CENTER | IN_RIGHT | IN_TOP_LEFT | IN_TOP_RIGHT | IN_LOW_FREQUENCY
+ AUDIO_CHANNEL_IN_5POINT1 = 0x17000Cu, // IN_LEFT | IN_CENTER | IN_RIGHT | IN_BACK_LEFT | IN_BACK_RIGHT | IN_LOW_FREQUENCY
+ AUDIO_CHANNEL_IN_VOICE_UPLINK_MONO = 0x4010u, // IN_VOICE_UPLINK | IN_MONO
+ AUDIO_CHANNEL_IN_VOICE_DNLINK_MONO = 0x8010u, // IN_VOICE_DNLINK | IN_MONO
+ AUDIO_CHANNEL_IN_VOICE_CALL_MONO = 0xC010u, // IN_VOICE_UPLINK_MONO | IN_VOICE_DNLINK_MONO
+
+ AUDIO_CHANNEL_COUNT_MAX = 30u,
+ AUDIO_CHANNEL_INDEX_HDR = 0x80000000u, // REPRESENTATION_INDEX << COUNT_MAX
+ AUDIO_CHANNEL_INDEX_MASK_1 = 0x80000001u, // INDEX_HDR | (1 << 1) - 1
+ AUDIO_CHANNEL_INDEX_MASK_2 = 0x80000003u, // INDEX_HDR | (1 << 2) - 1
+ AUDIO_CHANNEL_INDEX_MASK_3 = 0x80000007u, // INDEX_HDR | (1 << 3) - 1
+ AUDIO_CHANNEL_INDEX_MASK_4 = 0x8000000Fu, // INDEX_HDR | (1 << 4) - 1
+ AUDIO_CHANNEL_INDEX_MASK_5 = 0x8000001Fu, // INDEX_HDR | (1 << 5) - 1
+ AUDIO_CHANNEL_INDEX_MASK_6 = 0x8000003Fu, // INDEX_HDR | (1 << 6) - 1
+ AUDIO_CHANNEL_INDEX_MASK_7 = 0x8000007Fu, // INDEX_HDR | (1 << 7) - 1
+ AUDIO_CHANNEL_INDEX_MASK_8 = 0x800000FFu, // INDEX_HDR | (1 << 8) - 1
};
typedef enum {
@@ -274,97 +287,99 @@
} audio_mode_t;
enum {
- 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,
- 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_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_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_NONE = 0x0u,
+ AUDIO_DEVICE_BIT_IN = 0x80000000u,
+ AUDIO_DEVICE_BIT_DEFAULT = 0x40000000u,
+
+ AUDIO_DEVICE_OUT_EARPIECE = 0x1u,
+ AUDIO_DEVICE_OUT_SPEAKER = 0x2u,
+ AUDIO_DEVICE_OUT_WIRED_HEADSET = 0x4u,
+ AUDIO_DEVICE_OUT_WIRED_HEADPHONE = 0x8u,
+ AUDIO_DEVICE_OUT_BLUETOOTH_SCO = 0x10u,
+ AUDIO_DEVICE_OUT_BLUETOOTH_SCO_HEADSET = 0x20u,
+ AUDIO_DEVICE_OUT_BLUETOOTH_SCO_CARKIT = 0x40u,
+ AUDIO_DEVICE_OUT_BLUETOOTH_A2DP = 0x80u,
+ AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_HEADPHONES = 0x100u,
+ AUDIO_DEVICE_OUT_BLUETOOTH_A2DP_SPEAKER = 0x200u,
+ AUDIO_DEVICE_OUT_AUX_DIGITAL = 0x400u,
+ AUDIO_DEVICE_OUT_HDMI = 0x400u, // OUT_AUX_DIGITAL
+ AUDIO_DEVICE_OUT_ANLG_DOCK_HEADSET = 0x800u,
+ AUDIO_DEVICE_OUT_DGTL_DOCK_HEADSET = 0x1000u,
+ AUDIO_DEVICE_OUT_USB_ACCESSORY = 0x2000u,
+ AUDIO_DEVICE_OUT_USB_DEVICE = 0x4000u,
+ AUDIO_DEVICE_OUT_REMOTE_SUBMIX = 0x8000u,
+ AUDIO_DEVICE_OUT_TELEPHONY_TX = 0x10000u,
+ AUDIO_DEVICE_OUT_LINE = 0x20000u,
+ AUDIO_DEVICE_OUT_HDMI_ARC = 0x40000u,
+ AUDIO_DEVICE_OUT_SPDIF = 0x80000u,
+ AUDIO_DEVICE_OUT_FM = 0x100000u,
+ AUDIO_DEVICE_OUT_AUX_LINE = 0x200000u,
+ AUDIO_DEVICE_OUT_SPEAKER_SAFE = 0x400000u,
+ AUDIO_DEVICE_OUT_IP = 0x800000u,
+ AUDIO_DEVICE_OUT_BUS = 0x1000000u,
+ AUDIO_DEVICE_OUT_PROXY = 0x2000000u,
+ AUDIO_DEVICE_OUT_USB_HEADSET = 0x4000000u,
+ AUDIO_DEVICE_OUT_HEARING_AID = 0x8000000u,
+ AUDIO_DEVICE_OUT_ECHO_CANCELLER = 0x10000000u,
+ AUDIO_DEVICE_OUT_DEFAULT = 0x40000000u, // BIT_DEFAULT
+
+ AUDIO_DEVICE_IN_COMMUNICATION = 0x80000001u, // BIT_IN | 0x1
+ AUDIO_DEVICE_IN_AMBIENT = 0x80000002u, // BIT_IN | 0x2
+ AUDIO_DEVICE_IN_BUILTIN_MIC = 0x80000004u, // BIT_IN | 0x4
+ AUDIO_DEVICE_IN_BLUETOOTH_SCO_HEADSET = 0x80000008u, // BIT_IN | 0x8
+ AUDIO_DEVICE_IN_WIRED_HEADSET = 0x80000010u, // BIT_IN | 0x10
+ AUDIO_DEVICE_IN_AUX_DIGITAL = 0x80000020u, // BIT_IN | 0x20
+ AUDIO_DEVICE_IN_HDMI = 0x80000020u, // IN_AUX_DIGITAL
+ AUDIO_DEVICE_IN_VOICE_CALL = 0x80000040u, // BIT_IN | 0x40
+ AUDIO_DEVICE_IN_TELEPHONY_RX = 0x80000040u, // IN_VOICE_CALL
+ AUDIO_DEVICE_IN_BACK_MIC = 0x80000080u, // BIT_IN | 0x80
+ AUDIO_DEVICE_IN_REMOTE_SUBMIX = 0x80000100u, // BIT_IN | 0x100
+ AUDIO_DEVICE_IN_ANLG_DOCK_HEADSET = 0x80000200u, // BIT_IN | 0x200
+ AUDIO_DEVICE_IN_DGTL_DOCK_HEADSET = 0x80000400u, // BIT_IN | 0x400
+ AUDIO_DEVICE_IN_USB_ACCESSORY = 0x80000800u, // BIT_IN | 0x800
+ AUDIO_DEVICE_IN_USB_DEVICE = 0x80001000u, // BIT_IN | 0x1000
+ AUDIO_DEVICE_IN_FM_TUNER = 0x80002000u, // BIT_IN | 0x2000
+ AUDIO_DEVICE_IN_TV_TUNER = 0x80004000u, // BIT_IN | 0x4000
+ AUDIO_DEVICE_IN_LINE = 0x80008000u, // BIT_IN | 0x8000
+ AUDIO_DEVICE_IN_SPDIF = 0x80010000u, // BIT_IN | 0x10000
+ AUDIO_DEVICE_IN_BLUETOOTH_A2DP = 0x80020000u, // BIT_IN | 0x20000
+ AUDIO_DEVICE_IN_LOOPBACK = 0x80040000u, // BIT_IN | 0x40000
+ AUDIO_DEVICE_IN_IP = 0x80080000u, // BIT_IN | 0x80000
+ AUDIO_DEVICE_IN_BUS = 0x80100000u, // BIT_IN | 0x100000
+ AUDIO_DEVICE_IN_PROXY = 0x81000000u, // BIT_IN | 0x1000000
+ AUDIO_DEVICE_IN_USB_HEADSET = 0x82000000u, // BIT_IN | 0x2000000
+ AUDIO_DEVICE_IN_BLUETOOTH_BLE = 0x84000000u, // BIT_IN | 0x4000000
+ AUDIO_DEVICE_IN_DEFAULT = 0xC0000000u, // BIT_IN | BIT_DEFAULT
};
typedef enum {
- 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_FLAG_NONE = 0x0,
+ AUDIO_OUTPUT_FLAG_DIRECT = 0x1,
+ AUDIO_OUTPUT_FLAG_PRIMARY = 0x2,
+ AUDIO_OUTPUT_FLAG_FAST = 0x4,
+ AUDIO_OUTPUT_FLAG_DEEP_BUFFER = 0x8,
+ AUDIO_OUTPUT_FLAG_COMPRESS_OFFLOAD = 0x10,
+ AUDIO_OUTPUT_FLAG_NON_BLOCKING = 0x20,
+ AUDIO_OUTPUT_FLAG_HW_AV_SYNC = 0x40,
+ AUDIO_OUTPUT_FLAG_TTS = 0x80,
+ AUDIO_OUTPUT_FLAG_RAW = 0x100,
+ AUDIO_OUTPUT_FLAG_SYNC = 0x200,
+ AUDIO_OUTPUT_FLAG_IEC958_NONAUDIO = 0x400,
+ AUDIO_OUTPUT_FLAG_DIRECT_PCM = 0x2000,
+ AUDIO_OUTPUT_FLAG_MMAP_NOIRQ = 0x4000,
+ AUDIO_OUTPUT_FLAG_VOIP_RX = 0x8000,
+ AUDIO_OUTPUT_FLAG_INCALL_MUSIC = 0x10000,
} audio_output_flags_t;
typedef enum {
- 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_FLAG_NONE = 0x0,
+ AUDIO_INPUT_FLAG_FAST = 0x1,
+ AUDIO_INPUT_FLAG_HW_HOTWORD = 0x2,
+ AUDIO_INPUT_FLAG_RAW = 0x4,
+ AUDIO_INPUT_FLAG_SYNC = 0x8,
+ AUDIO_INPUT_FLAG_MMAP_NOIRQ = 0x10,
+ AUDIO_INPUT_FLAG_VOIP_TX = 0x20,
+ AUDIO_INPUT_FLAG_HW_AV_SYNC = 0x40,
} audio_input_flags_t;
typedef enum {
@@ -398,9 +413,9 @@
} audio_content_type_t;
enum {
- AUDIO_GAIN_MODE_JOINT = 1u,
- AUDIO_GAIN_MODE_CHANNELS = 2u,
- AUDIO_GAIN_MODE_RAMP = 4u,
+ AUDIO_GAIN_MODE_JOINT = 0x1u,
+ AUDIO_GAIN_MODE_CHANNELS = 0x2u,
+ AUDIO_GAIN_MODE_RAMP = 0x4u,
};
typedef enum {
@@ -417,10 +432,10 @@
} audio_port_type_t;
enum {
- AUDIO_PORT_CONFIG_SAMPLE_RATE = 1u,
- AUDIO_PORT_CONFIG_CHANNEL_MASK = 2u,
- AUDIO_PORT_CONFIG_FORMAT = 4u,
- AUDIO_PORT_CONFIG_GAIN = 8u,
+ AUDIO_PORT_CONFIG_SAMPLE_RATE = 0x1u,
+ AUDIO_PORT_CONFIG_CHANNEL_MASK = 0x2u,
+ AUDIO_PORT_CONFIG_FORMAT = 0x4u,
+ AUDIO_PORT_CONFIG_GAIN = 0x8u,
};
typedef enum {
diff --git a/audio/include/system/audio.h b/audio/include/system/audio.h
index 724df6e..8e15410 100644
--- a/audio/include/system/audio.h
+++ b/audio/include/system/audio.h
@@ -1070,23 +1070,13 @@
AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED = 0,
AUDIO_MICROPHONE_CHANNEL_MAPPING_DIRECT = 1,
AUDIO_MICROPHONE_CHANNEL_MAPPING_PROCESSED = 2,
+ AUDIO_MICROPHONE_CHANNEL_MAPPING_CNT = 3,
} audio_microphone_channel_mapping_t;
-typedef enum {
- AUDIO_MICROPHONE_CHARACTERISTIC_NONE = 0u, // 0x0
- AUDIO_MICROPHONE_CHARACTERISTIC_SENSITIVITY = 1u, // 0x1
- AUDIO_MICROPHONE_CHARACTERISTIC_MAX_SPL = 2u, // 0x2
- AUDIO_MICROPHONE_CHARACTERISTIC_MIN_SPL = 4u, // 0x4
- AUDIO_MICROPHONE_CHARACTERISTIC_ORIENTATION = 8u, // 0x8
- AUDIO_MICROPHONE_CHARACTERISTIC_GEOMETRIC_LOCATION = 16u, // 0x10
- AUDIO_MICROPHONE_CHARACTERISTIC_ALL = 31u, /* ((((SENSITIVITY | MAX_SPL) | MIN_SPL)
- | ORIENTATION) | GEOMETRIC_LOCATION) */
-} audio_microphone_characteristic_fields_t;
-
/* the maximum length for the microphone id */
#define AUDIO_MICROPHONE_ID_MAX_LEN 32
/* max number of frequency responses in a frequency response table */
-#define AUDIO_MICROPHONE_MAX_FREQUENCY_RESPONSES 32
+#define AUDIO_MICROPHONE_MAX_FREQUENCY_RESPONSES 256
/* max number of microphone */
#define AUDIO_MICROPHONE_MAX_COUNT 32
/* the value of unknown spl */
@@ -1117,7 +1107,6 @@
float frequency_responses[2][AUDIO_MICROPHONE_MAX_FREQUENCY_RESPONSES];
struct audio_microphone_coordinate geometric_location;
struct audio_microphone_coordinate orientation;
- audio_microphone_characteristic_fields_t valid_mask;
};
__END_DECLS
diff --git a/audio_utils/format.c b/audio_utils/format.c
index 1803e3c..50872fc 100644
--- a/audio_utils/format.c
+++ b/audio_utils/format.c
@@ -34,7 +34,10 @@
case AUDIO_FORMAT_PCM_24_BIT_PACKED:
case AUDIO_FORMAT_PCM_32_BIT:
case AUDIO_FORMAT_PCM_8_24_BIT:
- memcpy(dst, src, count * audio_bytes_per_sample(dst_format));
+ if (dst != src) {
+ // TODO: should assert if memory regions overlap.
+ memcpy(dst, src, count * audio_bytes_per_sample(dst_format));
+ }
return;
default:
break;
diff --git a/audio_utils/include/audio_utils/format.h b/audio_utils/include/audio_utils/format.h
index dfcfecd..842bbf0 100644
--- a/audio_utils/include/audio_utils/format.h
+++ b/audio_utils/include/audio_utils/format.h
@@ -54,8 +54,8 @@
* 2) Both dst_format and src_format are identical and of the list given
* in (1). This is a straight copy.
*
- * The destination and source buffers must be completely separate if the destination
- * format size is larger than the source format size. These routines call functions
+ * The destination and source buffers must be completely separate
+ * or point to the same starting buffer address. These routines call functions
* in primitives.h, so descriptions of detailed behavior can be reviewed there.
*
* Logs a fatal error if dst or src format is not allowed by the conversion rules above.
diff --git a/audio_utils/primitives.c b/audio_utils/primitives.c
index d88d701..594f1c5 100644
--- a/audio_utils/primitives.c
+++ b/audio_utils/primitives.c
@@ -138,14 +138,15 @@
src += count;
for (; count > 0; --count) {
dst -= 3;
+ const int16_t sample = *--src;
#if HAVE_BIG_ENDIAN
- dst[0] = *--src >> 8;
- dst[1] = *src;
+ dst[0] = sample >> 8;
+ dst[1] = sample;
dst[2] = 0;
#else
dst[0] = 0;
- dst[1] = *--src;
- dst[2] = *src >> 8;
+ dst[1] = sample;
+ dst[2] = sample >> 8;
#endif
}
}
diff --git a/audio_utils/tests/Android.bp b/audio_utils/tests/Android.bp
index 8952046..e0403aa 100644
--- a/audio_utils/tests/Android.bp
+++ b/audio_utils/tests/Android.bp
@@ -225,3 +225,25 @@
"-Werror",
],
}
+
+cc_test {
+ name: "format_tests",
+ host_supported: true,
+
+ shared_libs: [
+ "liblog",
+ ],
+ srcs: ["format_tests.cpp"],
+ cflags: [
+ "-Werror",
+ "-Wall",
+ ],
+ target: {
+ android: {
+ shared_libs: ["libaudioutils"],
+ },
+ host: {
+ static_libs: ["libaudioutils"],
+ },
+ }
+}
diff --git a/audio_utils/tests/build_and_run_all_unit_tests.sh b/audio_utils/tests/build_and_run_all_unit_tests.sh
index 2cfff84..78de692 100755
--- a/audio_utils/tests/build_and_run_all_unit_tests.sh
+++ b/audio_utils/tests/build_and_run_all_unit_tests.sh
@@ -35,6 +35,10 @@
adb push $OUT/data/nativetest/string_tests/string_tests /system/bin
adb shell /system/bin/string_tests
+echo "format tests"
+adb push $OUT/data/nativetest/format_tests/format_tests /system/bin
+adb shell /system/bin/format_tests
+
echo "benchmarking primitives"
adb push $OUT/system/bin/primitives_benchmark /system/bin
adb shell /system/bin/primitives_benchmark
diff --git a/audio_utils/tests/format_tests.cpp b/audio_utils/tests/format_tests.cpp
new file mode 100644
index 0000000..0526b30
--- /dev/null
+++ b/audio_utils/tests/format_tests.cpp
@@ -0,0 +1,127 @@
+/*
+ * Copyright 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.
+ */
+
+//#define LOG_NDEBUG 0
+#define LOG_TAG "audio_utils_format_tests"
+#include <log/log.h>
+
+#include <audio_utils/format.h>
+#include <gtest/gtest.h>
+
+/** returns true if the format is a common source or destination format.
+ memcpy_by_audio_format() allows interchange between any PCM format and the
+ "common" PCM 16 bit and PCM float formats. */
+static bool is_common_format(audio_format_t format) {
+ return format == AUDIO_FORMAT_PCM_16_BIT || format == AUDIO_FORMAT_PCM_FLOAT;
+}
+
+// Initialize PCM 16 bit ramp for basic data sanity check (generated from PCM 8 bit data).
+// TODO: consider creating fillPseudoRandomValue().
+template<size_t size>
+static void fillRamp(int16_t(&buffer)[size])
+{
+ // Create PCM 16 bit data based on PCM 8 bit format because PCM 8 bit is convertible
+ // to all other audio formats without loss; hence, round trip conversion preserves equality.
+ uint8_t bytes[size];
+ for (size_t i = 0; i < size; ++i) {
+ bytes[i] = i;
+ }
+ // convert to PCM 16 bit
+ memcpy_by_audio_format(
+ buffer, AUDIO_FORMAT_PCM_16_BIT,
+ bytes, AUDIO_FORMAT_PCM_8_BIT, size);
+
+ uint8_t check[size];
+ memcpy_by_audio_format(
+ check, AUDIO_FORMAT_PCM_8_BIT,
+ buffer, AUDIO_FORMAT_PCM_16_BIT, size);
+ EXPECT_EQ(0, memcmp(check, bytes, size));
+}
+
+class FormatTest : public testing::TestWithParam<std::tuple<audio_format_t, audio_format_t>>
+{
+};
+
+TEST_P(FormatTest, memcpy_by_audio_format)
+{
+ // fetch parameters
+ const auto param = GetParam();
+ const audio_format_t src_encoding = std::get<0>(param);
+ const audio_format_t dst_encoding = std::get<1>(param);
+
+ // either source or destination (or both) need to be a common format
+ if (!is_common_format(src_encoding) && !is_common_format(dst_encoding)) {
+ printf("skip conversion src:%#x dst:%#x\n", src_encoding, dst_encoding);
+ return;
+ }
+
+ constexpr size_t SAMPLES = UINT8_MAX;
+ constexpr audio_format_t orig_encoding = AUDIO_FORMAT_PCM_16_BIT;
+ int16_t orig_data[SAMPLES];
+
+ fillRamp(orig_data);
+
+ // data buffer for in-place conversion (uint32_t is maximum sample size of 4 bytes)
+ uint32_t data[SAMPLES];
+ // check buffer is used to compare out-of-place vs in-place conversion.
+ uint32_t check[SAMPLES];
+
+ printf("trying conversion src:%#x dst:%#x\n", src_encoding, dst_encoding);
+ fflush(stdout);
+ // Copy original data to data buffer at src_encoding.
+ memcpy_by_audio_format(
+ data, src_encoding,
+ orig_data, orig_encoding, SAMPLES);
+
+ // Convert from src encoding to dst encoding.
+ memcpy_by_audio_format(
+ check, dst_encoding,
+ data, src_encoding, SAMPLES);
+
+ // Check in-place is same as out-of-place conversion.
+ memcpy_by_audio_format(
+ data, dst_encoding,
+ data, src_encoding, SAMPLES);
+ EXPECT_EQ(0, memcmp(check, data, SAMPLES * audio_bytes_per_sample(dst_encoding)));
+
+ // Go back to the original data encoding for comparison.
+ memcpy_by_audio_format(
+ data, orig_encoding,
+ data, dst_encoding, SAMPLES);
+
+ // Raw byte compare at the original encoding must succeed - our conversions
+ // must be lossless for PCM 8 bit representation which orig_data was constructed from.
+ EXPECT_EQ(0,
+ memcmp(data, orig_data, SAMPLES * audio_bytes_per_sample(orig_encoding)));
+}
+
+INSTANTIATE_TEST_CASE_P(FormatVariations, FormatTest, ::testing::Combine(
+ ::testing::Values(
+ AUDIO_FORMAT_PCM_8_BIT,
+ AUDIO_FORMAT_PCM_16_BIT,
+ AUDIO_FORMAT_PCM_FLOAT,
+ AUDIO_FORMAT_PCM_24_BIT_PACKED,
+ AUDIO_FORMAT_PCM_32_BIT,
+ AUDIO_FORMAT_PCM_8_24_BIT
+ ),
+ ::testing::Values(
+ AUDIO_FORMAT_PCM_8_BIT,
+ AUDIO_FORMAT_PCM_16_BIT,
+ AUDIO_FORMAT_PCM_FLOAT,
+ AUDIO_FORMAT_PCM_24_BIT_PACKED,
+ AUDIO_FORMAT_PCM_32_BIT,
+ AUDIO_FORMAT_PCM_8_24_BIT
+ )));
diff --git a/camera/src/camera_metadata.c b/camera/src/camera_metadata.c
index e99abc4..f33da8d 100644
--- a/camera/src/camera_metadata.c
+++ b/camera/src/camera_metadata.c
@@ -234,7 +234,7 @@
return NULL;
}
- void *buffer = malloc(src_size);
+ void *buffer = calloc(1, src_size);
memcpy(buffer, src, src_size);
camera_metadata_t *metadata = (camera_metadata_t*) buffer;
@@ -251,7 +251,7 @@
size_t memory_needed = calculate_camera_metadata_size(entry_capacity,
data_capacity);
- void *buffer = malloc(memory_needed);
+ void *buffer = calloc(1, memory_needed);
camera_metadata_t *metadata = place_camera_metadata(
buffer, memory_needed, entry_capacity, data_capacity);
if (!metadata) {