1c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/*
2c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Copyright (c) 2008 The Khronos Group Inc.
3c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
4c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Permission is hereby granted, free of charge, to any person obtaining
5c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * a copy of this software and associated documentation files (the
6c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * "Software"), to deal in the Software without restriction, including
7c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * without limitation the rights to use, copy, modify, merge, publish,
8c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * distribute, sublicense, and/or sell copies of the Software, and to
9c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * permit persons to whom the Software is furnished to do so, subject
10c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * to the following conditions:
11c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * The above copyright notice and this permission notice shall be included
12c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * in all copies or substantial portions of the Software.
13c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
14c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
18c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
19c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
20c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
21c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *
22c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
23c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
24c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @file OMX_Audio.h - OpenMax IL version 1.1.2
25c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  The structures needed by Audio components to exchange
26c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  parameters and configuration data with the componenmilts.
27c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
28c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
29c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifndef OMX_Audio_h
30c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_Audio_h
31c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
32c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus
33c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevextern "C" {
34c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif /* __cplusplus */
35c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
36c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
37c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* Each OMX header must include all required header files to allow the
38c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  header to compile without errors.  The includes below are required
39c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  for this header file to compile successfully
40c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
41c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
42c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#include <OMX_Core.h>
43c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
44c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @defgroup midi MIDI
45c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup audio
46c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
47c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
48c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @defgroup effects Audio effects
49c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup audio
50c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
51c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
52c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @defgroup audio OpenMAX IL Audio Domain
53c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Structures for OpenMAX IL Audio domain
54c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @{
55c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
56c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
57c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Enumeration used to define the possible audio codings.
58c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  If "OMX_AUDIO_CodingUnused" is selected, the coding selection must
59c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  be done in a vendor specific way.  Since this is for an audio
60c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  processing element this enum is relevant.  However, for another
61c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  type of component other enums would be in this area.
62c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
63c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_CODINGTYPE {
64c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingUnused = 0,  /**< Placeholder value when coding is N/A  */
65c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingAutoDetect,  /**< auto detection of audio format */
66c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingPCM,         /**< Any variant of PCM coding */
67c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingADPCM,       /**< Any variant of ADPCM encoded data */
68c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingAMR,         /**< Any variant of AMR encoded data */
69c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingGSMFR,       /**< Any variant of GSM fullrate (i.e. GSM610) */
70c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingGSMEFR,      /**< Any variant of GSM Enhanced Fullrate encoded data*/
71c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingGSMHR,       /**< Any variant of GSM Halfrate encoded data */
72c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingPDCFR,       /**< Any variant of PDC Fullrate encoded data */
73c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingPDCEFR,      /**< Any variant of PDC Enhanced Fullrate encoded data */
74c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingPDCHR,       /**< Any variant of PDC Halfrate encoded data */
75c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingTDMAFR,      /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */
76c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingTDMAEFR,     /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */
77c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingQCELP8,      /**< Any variant of QCELP 8kbps encoded data */
78c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingQCELP13,     /**< Any variant of QCELP 13kbps encoded data */
79c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingEVRC,        /**< Any variant of EVRC encoded data */
80c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingSMV,         /**< Any variant of SMV encoded data */
81c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingG711,        /**< Any variant of G.711 encoded data */
82c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingG723,        /**< Any variant of G.723 dot 1 encoded data */
83c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingG726,        /**< Any variant of G.726 encoded data */
84c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingG729,        /**< Any variant of G.729 encoded data */
85c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingAAC,         /**< Any variant of AAC encoded data */
86c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingMP3,         /**< Any variant of MP3 encoded data */
87c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingSBC,         /**< Any variant of SBC encoded data */
88c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingVORBIS,      /**< Any variant of VORBIS encoded data */
89c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingWMA,         /**< Any variant of WMA encoded data */
90c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingRA,          /**< Any variant of RA encoded data */
91c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingMIDI,        /**< Any variant of MIDI encoded data */
92c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
93c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
94c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CodingMax = 0x7FFFFFFF
95c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CODINGTYPE;
96c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
97c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
98c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** The PortDefinition structure is used to define all of the parameters
99c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  necessary for the compliant component to setup an input or an output audio
100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  path.  If additional information is needed to define the parameters of the
101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  port (such as frequency), additional structures must be sent such as the
102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  OMX_AUDIO_PARAM_PCMMODETYPE structure to supply the extra parameters for the port.
103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PORTDEFINITIONTYPE {
105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_STRING cMIMEType;            /**< MIME type of data for the port */
106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_NATIVE_DEVICETYPE pNativeRender; /** < platform specific reference
107c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                               for an output device,
108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                               otherwise this field is 0 */
109c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bFlagErrorConcealment;  /**< Turns on error concealment if it is
110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                          supported by the OMX component */
111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CODINGTYPE eEncoding;  /**< Type of data expected for this
112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                          port (e.g. PCM, AMR, MP3, etc) */
113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PORTDEFINITIONTYPE;
114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
116c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**  Port format parameter.  This structure is used to enumerate
117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  *  the various data input/output format supported by the port.
118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  */
119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_PORTFORMATTYPE {
120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                  /**< size of the structure in bytes */
121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;       /**< OMX specification version information */
122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;             /**< Indicates which port to set */
123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nIndex;                 /**< Indicates the enumeration index for the format from 0x0 to N-1 */
124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this port (e.g. PCM, AMR, MP3, etc) */
125c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_PORTFORMATTYPE;
126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PCM mode type  */
129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_PCMMODETYPE {
130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_PCMModeLinear = 0,  /**< Linear PCM encoded data */
131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_PCMModeALaw,        /**< A law PCM encoded data (G.711) */
132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_PCMModeMULaw,       /**< Mu law PCM encoded data (G.711)  */
133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_PCMModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_PCMModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_PCMModeMax = 0x7FFFFFFF
136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PCMMODETYPE;
137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_CHANNELTYPE {
140c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelNone = 0x0,    /**< Unused or empty */
141c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelLF   = 0x1,    /**< Left front */
142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelRF   = 0x2,    /**< Right front */
143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelCF   = 0x3,    /**< Center front */
144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelLS   = 0x4,    /**< Left surround */
145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelRS   = 0x5,    /**< Right surround */
146c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelLFE  = 0x6,    /**< Low frequency effects */
147c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelCS   = 0x7,    /**< Back surround */
148c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelLR   = 0x8,    /**< Left rear. */
149c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelRR   = 0x9,    /**< Right rear. */
150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelMax  = 0x7FFFFFFF
153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CHANNELTYPE;
154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_MAXCHANNELS 16  /**< maximum number distinct audio channels that a buffer may contain */
156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_MIN_PCMPAYLOAD_MSEC 5 /**< Minimum audio buffer payload size for uncompressed (PCM) audio */
157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PCM format description */
159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_PCMMODETYPE {
160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                    /**< Size of this structure, in Bytes */
161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;         /**< OMX specification version information */
162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;               /**< port that this structure applies to */
163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;                /**< Number of channels (e.g. 2 for stereo) */
164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_NUMERICALDATATYPE eNumData;   /**< indicates PCM data as signed or unsigned */
165c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_ENDIANTYPE eEndian;           /**< indicates PCM data as little or big endian */
166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bInterleaved;            /**< True for normal interleaved data; false for
167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                           non-interleaved data (e.g. block data) */
168c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitPerSample;            /**< Bit per sample */
169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSamplingRate;            /**< Sampling rate of the source data.  Use 0 for
170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                           variable or unknown sampling rate. */
171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_PCMMODETYPE ePCMMode;   /**< PCM mode enumeration */
172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CHANNELTYPE eChannelMapping[OMX_AUDIO_MAXCHANNELS]; /**< Slot i contains channel defined by eChannelMap[i] */
173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_PCMMODETYPE;
175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
176c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio channel mode.  This is used by both AAC and MP3, although the names are more appropriate
178c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * for the MP3.  For example, JointStereo for MP3 is CouplingChannels for AAC.
179c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_CHANNELMODETYPE {
181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelModeStereo = 0,  /**< 2 channels, the bitrate allocation between those
182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                          two channels changes accordingly to each channel information */
183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelModeJointStereo, /**< mode that takes advantage of what is common between
184c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                           2 channels for higher compression gain */
185c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelModeDual,        /**< 2 mono-channels, each channel is encoded with half
186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                           the bitrate of the overall bitrate */
187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelModeMono,        /**< Mono channel mode */
188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ChannelModeMax = 0x7FFFFFFF
191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CHANNELMODETYPE;
192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_MP3STREAMFORMATTYPE {
195c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MP3StreamFormatMP1Layer3 = 0, /**< MP3 Audio MPEG 1 Layer 3 Stream format */
196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MP3StreamFormatMP2Layer3,     /**< MP3 Audio MPEG 2 Layer 3 Stream format */
197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MP3StreamFormatMP2_5Layer3,   /**< MP3 Audio MPEG2.5 Layer 3 Stream format */
198c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MP3StreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
199c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MP3StreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MP3StreamFormatMax = 0x7FFFFFFF
201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_MP3STREAMFORMATTYPE;
202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MP3 params */
204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_MP3TYPE {
205c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                 /**< size of the structure in bytes */
206c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;      /**< OMX specification version information */
207c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;            /**< port that this structure applies to */
208c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;             /**< Number of channels */
209c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitRate;              /**< Bit rate of the input data.  Use 0 for variable
210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        rate or unknown bit rates */
211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSampleRate;           /**< Sampling rate of the source data.  Use 0 for
212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        variable or unknown sampling rate. */
213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nAudioBandWidth;       /**< Audio band width (in Hz) to which an encoder should
214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        limit the audio signal. Use 0 to let encoder decide */
215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CHANNELMODETYPE eChannelMode;   /**< Channel mode enumeration */
216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MP3STREAMFORMATTYPE eFormat;  /**< MP3 stream format */
217c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_MP3TYPE;
218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_AACSTREAMFORMATTYPE {
221c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACStreamFormatMP2ADTS = 0, /**< AAC Audio Data Transport Stream 2 format */
222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACStreamFormatMP4ADTS,     /**< AAC Audio Data Transport Stream 4 format */
223c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACStreamFormatMP4LOAS,     /**< AAC Low Overhead Audio Stream format */
224c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACStreamFormatMP4LATM,     /**< AAC Low overhead Audio Transport Multiplex */
225c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACStreamFormatADIF,        /**< AAC Audio Data Interchange Format */
226c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACStreamFormatMP4FF,       /**< AAC inside MPEG-4/ISO File Format */
227c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACStreamFormatRAW,         /**< AAC Raw Format */
228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACStreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
229c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACStreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACStreamFormatMax = 0x7FFFFFFF
231c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_AACSTREAMFORMATTYPE;
232c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
234c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AAC mode type.  Note that the term profile is used with the MPEG-2
235c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * standard and the term object type and profile is used with MPEG-4 */
236c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_AACPROFILETYPE{
237c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectNull = 0,      /**< Null, not used */
238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectMain = 1,      /**< AAC Main object */
239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectLC,            /**< AAC Low Complexity object (AAC profile) */
240c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectSSR,           /**< AAC Scalable Sample Rate object */
241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectLTP,           /**< AAC Long Term Prediction object */
242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectHE,            /**< AAC High Efficiency (object type SBR, HE-AAC profile) */
243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectScalable,      /**< AAC Scalable object */
244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectERLC = 17,     /**< ER AAC Low Complexity object (Error Resilient AAC-LC) */
245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectLD = 23,       /**< AAC Low Delay object (Error Resilient) */
246c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectHE_PS = 29,    /**< AAC High Efficiency with Parametric Stereo coding (HE-AAC v2, object type PS) */
247c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
248c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_AACObjectMax = 0x7FFFFFFF
250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_AACPROFILETYPE;
251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AAC tool usage (for nAACtools in OMX_AUDIO_PARAM_AACPROFILETYPE).
254c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Required for encoder configuration and optional as decoder info output.
255c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * For MP3, OMX_AUDIO_CHANNELMODETYPE is sufficient. */
256c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolNone 0x00000000 /**< no AAC tools allowed (encoder config) or active (decoder info output) */
257c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolMS   0x00000001 /**< MS: Mid/side joint coding tool allowed or active */
258c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolIS   0x00000002 /**< IS: Intensity stereo tool allowed or active */
259c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolTNS  0x00000004 /**< TNS: Temporal Noise Shaping tool allowed or active */
260c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolPNS  0x00000008 /**< PNS: MPEG-4 Perceptual Noise substitution tool allowed or active */
261c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolLTP  0x00000010 /**< LTP: MPEG-4 Long Term Prediction tool allowed or active */
262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACToolAll  0x7FFFFFFF /**< all AAC tools allowed or active (*/
263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MPEG-4 AAC error resilience (ER) tool usage (for nAACERtools in OMX_AUDIO_PARAM_AACPROFILETYPE).
265c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * Required for ER encoder configuration and optional as decoder info output */
266c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACERNone  0x00000000  /**< no AAC ER tools allowed/used */
267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACERVCB11 0x00000001  /**< VCB11: Virtual Code Books for AAC section data */
268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACERRVLC  0x00000002  /**< RVLC: Reversible Variable Length Coding */
269c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACERHCR   0x00000004  /**< HCR: Huffman Codeword Reordering */
270c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#define OMX_AUDIO_AACERAll   0x7FFFFFFF  /**< all AAC ER tools allowed/used */
271c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
272c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
273c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AAC params */
274c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_AACPROFILETYPE {
275c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                 /**< Size of this structure, in Bytes */
276c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;      /**< OMX specification version information */
277c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;            /**< Port that this structure applies to */
278c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;             /**< Number of channels */
279c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSampleRate;           /**< Sampling rate of the source data.  Use 0 for
280c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        variable or unknown sampling rate. */
281c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitRate;              /**< Bit rate of the input data.  Use 0 for variable
282c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        rate or unknown bit rates */
283c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nAudioBandWidth;       /**< Audio band width (in Hz) to which an encoder should
284c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        limit the audio signal. Use 0 to let encoder decide */
285c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nFrameLength;          /**< Frame length (in audio samples per channel) of the codec.
286c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        Can be 1024 or 960 (AAC-LC), 2048 (HE-AAC), 480 or 512 (AAC-LD).
287c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        Use 0 to let encoder decide */
288c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nAACtools;             /**< AAC tool usage */
289c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nAACERtools;           /**< MPEG-4 AAC error resilience tool usage */
290c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACPROFILETYPE eAACProfile;   /**< AAC profile enumeration */
291c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AACSTREAMFORMATTYPE eAACStreamFormat; /**< AAC stream format enumeration */
292c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CHANNELMODETYPE eChannelMode;   /**< Channel mode enumeration */
293c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_AACPROFILETYPE;
294c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
295c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
296c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** VORBIS params */
297c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_VORBISTYPE {
298c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;            /**< size of the structure in bytes */
299c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
300c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;       /**< port that this structure applies to */
301c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;        /**< Number of channels */
302c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitRate;         /**< Bit rate of the encoded data data.  Use 0 for variable
303c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   rate or unknown bit rates. Encoding is set to the
304c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   bitrate closest to specified  value (in bps) */
305c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMinBitRate;      /**< Sets minimum bitrate (in bps). */
306c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMaxBitRate;      /**< Sets maximum bitrate (in bps). */
307c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
308c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSampleRate;      /**< Sampling rate of the source data.  Use 0 for
309c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   variable or unknown sampling rate. */
310c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nAudioBandWidth;  /**< Audio band width (in Hz) to which an encoder should
311c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   limit the audio signal. Use 0 to let encoder decide */
312c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_S32 nQuality;		  /**< Sets encoding quality to n, between -1 (low) and 10 (high).
313c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   In the default mode of operation, teh quality level is 3.
314c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   Normal quality range is 0 - 10. */
315c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bManaged;		  /**< Set  bitrate  management  mode. This turns off the
316c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   normal VBR encoding, but allows hard or soft bitrate
317c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   constraints to be enforced by the encoder. This mode can
318c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   be slower, and may also be lower quality. It is
319c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   primarily useful for streaming. */
320c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDownmix;		  /**< Downmix input from stereo to mono (has no effect on
321c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   non-stereo streams). Useful for lower-bitrate encoding. */
322c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_VORBISTYPE;
323c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
324c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
325c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** WMA Version */
326c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_WMAFORMATTYPE {
327c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAFormatUnused = 0, /**< format unused or unknown */
328c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAFormat7,          /**< Windows Media Audio format 7 */
329c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAFormat8,          /**< Windows Media Audio format 8 */
330c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAFormat9,          /**< Windows Media Audio format 9 */
331c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
332c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
333c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAFormatMax = 0x7FFFFFFF
334c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_WMAFORMATTYPE;
335c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
336c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
337c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** WMA Profile */
338c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_WMAPROFILETYPE {
339c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAProfileUnused = 0,  /**< profile unused or unknown */
340c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAProfileL1,          /**< Windows Media audio version 9 profile L1 */
341c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAProfileL2,          /**< Windows Media audio version 9 profile L2 */
342c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAProfileL3,          /**< Windows Media audio version 9 profile L3 */
343c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
344c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
345c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_WMAProfileMax = 0x7FFFFFFF
346c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_WMAPROFILETYPE;
347c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
348c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
349c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** WMA params */
350c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_WMATYPE {
351c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;            /**< size of the structure in bytes */
352c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
353c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;       /**< port that this structure applies to */
354c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nChannels;        /**< Number of channels */
355c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitRate;         /**< Bit rate of the input data.  Use 0 for variable
356c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   rate or unknown bit rates */
357c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_WMAFORMATTYPE eFormat; /**< Version of WMA stream / data */
358c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev	OMX_AUDIO_WMAPROFILETYPE eProfile;  /**< Profile of WMA stream / data */
359c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSamplingRate;    /**< Sampling rate of the source data */
360c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nBlockAlign;      /**< is the block alignment, or block size, in bytes of the audio codec */
361c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nEncodeOptions;   /**< WMA Type-specific data */
362c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSuperBlockAlign; /**< WMA Type-specific data */
363c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_WMATYPE;
364c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
365c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/**
366c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * RealAudio format
367c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
368c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_RAFORMATTYPE {
369c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RAFormatUnused = 0, /**< Format unused or unknown */
370c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RA8,                /**< RealAudio 8 codec */
371c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RA9,                /**< RealAudio 9 codec */
372c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RA10_AAC,           /**< MPEG-4 AAC codec for bitrates of more than 128kbps */
373c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RA10_CODEC,         /**< RealAudio codec for bitrates less than 128 kbps */
374c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RA10_LOSSLESS,      /**< RealAudio Lossless */
375c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RA10_MULTICHANNEL,  /**< RealAudio Multichannel */
376c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RA10_VOICE,         /**< RealAudio Voice for bitrates below 15 kbps */
377c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
378c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
379c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VIDEO_RAFormatMax = 0x7FFFFFFF
380c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_RAFORMATTYPE;
381c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
382c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** RA (Real Audio) params */
383c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_RATYPE {
384c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< Size of this structure, in Bytes */
385c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
386c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;         /**< Port that this structure applies to */
387c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;          /**< Number of channels */
388c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSamplingRate;      /**< is the sampling rate of the source data */
389c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitsPerFrame;      /**< is the value for bits per frame  */
390c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSamplePerFrame;    /**< is the value for samples per frame */
391c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nCouplingQuantBits; /**< is the number of coupling quantization bits in the stream */
392c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nCouplingStartRegion;   /**< is the coupling start region in the stream  */
393c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nNumRegions;        /**< is the number of regions value */
394c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_RAFORMATTYPE eFormat; /**< is the RealAudio audio format */
395c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_RATYPE;
396c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
397c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
398c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** SBC Allocation Method Type */
399c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_SBCALLOCMETHODTYPE {
400c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_SBCAllocMethodLoudness, /**< Loudness allocation method */
401c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_SBCAllocMethodSNR,      /**< SNR allocation method */
402c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_SBCAllocMethodKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
403c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_SBCAllocMethodVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
404c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_SBCAllocMethodMax = 0x7FFFFFFF
405c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_SBCALLOCMETHODTYPE;
406c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
407c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
408c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** SBC params */
409c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_SBCTYPE {
410c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;             /**< size of the structure in bytes */
411c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
412c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;        /**< port that this structure applies to */
413c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;         /**< Number of channels */
414c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitRate;          /**< Bit rate of the input data.  Use 0 for variable
415c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    rate or unknown bit rates */
416c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSampleRate;       /**< Sampling rate of the source data.  Use 0 for
417c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    variable or unknown sampling rate. */
418c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBlocks;           /**< Number of blocks */
419c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSubbands;         /**< Number of subbands */
420c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitPool;          /**< Bitpool value */
421c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnableBitrate;   /**< Use bitrate value instead of bitpool */
422c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
423c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_SBCALLOCMETHODTYPE eSBCAllocType;   /**< SBC Allocation method type */
424c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_SBCTYPE;
425c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
426c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
427c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** ADPCM stream format parameters */
428c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_ADPCMTYPE {
429c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< size of the structure in bytes */
430c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
431c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;         /**< port that this structure applies to */
432c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;          /**< Number of channels in the data stream (not
433c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     necessarily the same as the number of channels
434c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     to be rendered. */
435c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitsPerSample;     /**< Number of bits in each sample */
436c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSampleRate;        /**< Sampling rate of the source data.  Use 0 for
437c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    variable or unknown sampling rate. */
438c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_ADPCMTYPE;
439c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
440c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
441c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** G723 rate */
442c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_G723RATE {
443c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G723ModeUnused = 0,  /**< AMRNB Mode unused / unknown */
444c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G723ModeLow,         /**< 5300 bps */
445c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G723ModeHigh,        /**< 6300 bps */
446c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G723ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
447c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G723ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
448c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G723ModeMax = 0x7FFFFFFF
449c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_G723RATE;
450c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
451c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
452c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** G723 - Sample rate must be 8 KHz */
453c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_G723TYPE {
454c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
455c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
456c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
457c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
458c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       necessarily the same as the number of channels
459c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to be rendered. */
460c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
461c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G723RATE eBitRate;  /**< todo: Should this be moved to a config? */
462c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
463c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bPostFilter;         /**< Enable Post Filter */
464c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_G723TYPE;
465c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
466c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
467c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** ITU G726 (ADPCM) rate */
468c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_G726MODE {
469c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G726ModeUnused = 0,  /**< G726 Mode unused / unknown */
470c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G726Mode16,          /**< 16 kbps */
471c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G726Mode24,          /**< 24 kbps */
472c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G726Mode32,          /**< 32 kbps, most common rate, also G721 */
473c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G726Mode40,          /**< 40 kbps */
474c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G726ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
475c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G726ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
476c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G726ModeMax = 0x7FFFFFFF
477c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_G726MODE;
478c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
479c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
480c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** G.726 stream format parameters - must be at 8KHz */
481c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_G726TYPE {
482c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< size of the structure in bytes */
483c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
484c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;         /**< port that this structure applies to */
485c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;          /**< Number of channels in the data stream (not
486c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     necessarily the same as the number of channels
487c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     to be rendered. */
488c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev     OMX_AUDIO_G726MODE eG726Mode;
489c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_G726TYPE;
490c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
491c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
492c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** G729 coder type */
493c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_G729TYPE {
494c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G729 = 0,           /**< ITU G.729  encoded data */
495c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G729A,              /**< ITU G.729 annex A  encoded data */
496c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G729B,              /**< ITU G.729 with annex B encoded data */
497c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G729AB,             /**< ITU G.729 annexes A and B encoded data */
498c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G729KhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
499c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G729VendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
500c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G729Max = 0x7FFFFFFF
501c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_G729TYPE;
502c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
503c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
504c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** G729 stream format parameters - fixed 6KHz sample rate */
505c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_G729TYPE {
506c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;            /**< size of the structure in bytes */
507c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
508c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;       /**< port that this structure applies to */
509c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;        /**< Number of channels in the data stream (not
510c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   necessarily the same as the number of channels
511c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   to be rendered. */
512c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDTX;            /**< Enable Discontinuous Transmisssion */
513c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_G729TYPE eBitType;
514c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_G729TYPE;
515c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
516c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
517c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AMR Frame format */
518c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_AMRFRAMEFORMATTYPE {
519c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRFrameFormatConformance = 0,  /**< Frame Format is AMR Conformance
520c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                   (Standard) Format */
521c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRFrameFormatIF1,              /**< Frame Format is AMR Interface
522c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                   Format 1 */
523c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRFrameFormatIF2,              /**< Frame Format is AMR Interface
524c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                   Format 2*/
525c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRFrameFormatFSF,              /**< Frame Format is AMR File Storage
526c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                   Format */
527c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRFrameFormatRTPPayload,       /**< Frame Format is AMR Real-Time
528c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                   Transport Protocol Payload Format */
529c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRFrameFormatITU,              /**< Frame Format is ITU Format (added at Motorola request) */
530c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRFrameFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
531c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRFrameFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
532c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRFrameFormatMax = 0x7FFFFFFF
533c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_AMRFRAMEFORMATTYPE;
534c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
535c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
536c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AMR band mode */
537c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_AMRBANDMODETYPE {
538c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeUnused = 0,          /**< AMRNB Mode unused / unknown */
539c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeNB0,                 /**< AMRNB Mode 0 =  4750 bps */
540c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeNB1,                 /**< AMRNB Mode 1 =  5150 bps */
541c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeNB2,                 /**< AMRNB Mode 2 =  5900 bps */
542c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeNB3,                 /**< AMRNB Mode 3 =  6700 bps */
543c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeNB4,                 /**< AMRNB Mode 4 =  7400 bps */
544c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeNB5,                 /**< AMRNB Mode 5 =  7950 bps */
545c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeNB6,                 /**< AMRNB Mode 6 = 10200 bps */
546c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeNB7,                 /**< AMRNB Mode 7 = 12200 bps */
547c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeWB0,                 /**< AMRWB Mode 0 =  6600 bps */
548c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeWB1,                 /**< AMRWB Mode 1 =  8850 bps */
549c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeWB2,                 /**< AMRWB Mode 2 = 12650 bps */
550c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeWB3,                 /**< AMRWB Mode 3 = 14250 bps */
551c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeWB4,                 /**< AMRWB Mode 4 = 15850 bps */
552c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeWB5,                 /**< AMRWB Mode 5 = 18250 bps */
553c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeWB6,                 /**< AMRWB Mode 6 = 19850 bps */
554c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeWB7,                 /**< AMRWB Mode 7 = 23050 bps */
555c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeWB8,                 /**< AMRWB Mode 8 = 23850 bps */
556c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
557c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
558c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBandModeMax = 0x7FFFFFFF
559c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_AMRBANDMODETYPE;
560c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
561c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
562c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AMR Discontinuous Transmission mode */
563c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_AMRDTXMODETYPE {
564c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRDTXModeOff = 0,        /**< AMR Discontinuous Transmission Mode is disabled */
565c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRDTXModeOnVAD1,         /**< AMR Discontinuous Transmission Mode using
566c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                             Voice Activity Detector 1 (VAD1) is enabled */
567c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRDTXModeOnVAD2,         /**< AMR Discontinuous Transmission Mode using
568c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                             Voice Activity Detector 2 (VAD2) is enabled */
569c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRDTXModeOnAuto,         /**< The codec will automatically select between
570c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                             Off, VAD1 or VAD2 modes */
571c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
572c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRDTXasEFR,             /**< DTX as EFR instead of AMR standard (3GPP 26.101, frame type =8,9,10) */
573c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
574c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRDTXModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
575c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRDTXModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
576c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRDTXModeMax = 0x7FFFFFFF
577c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_AMRDTXMODETYPE;
578c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
579c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
580c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** AMR params */
581c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_AMRTYPE {
582c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                          /**< size of the structure in bytes */
583c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;               /**< OMX specification version information */
584c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;                     /**< port that this structure applies to */
585c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;                      /**< Number of channels */
586c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitRate;                       /**< Bit rate read only field */
587c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRBANDMODETYPE eAMRBandMode; /**< AMR Band Mode enumeration */
588c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRDTXMODETYPE  eAMRDTXMode;  /**< AMR DTX Mode enumeration */
589c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_AMRFRAMEFORMATTYPE eAMRFrameFormat; /**< AMR frame format enumeration */
590c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_AMRTYPE;
591c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
592c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
593c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** GSM_FR (ETSI 06.10, 3GPP 46.010) stream format parameters */
594c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_GSMFRTYPE {
595c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;            /**< size of the structure in bytes */
596c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
597c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;       /**< port that this structure applies to */
598c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDTX;            /**< Enable Discontinuous Transmisssion */
599c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;   /**< Enable High Pass Filter */
600c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_GSMFRTYPE;
601c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
602c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
603c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** GSM-HR (ETSI 06.20, 3GPP 46.020) stream format parameters */
604c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_GSMHRTYPE {
605c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;            /**< size of the structure in bytes */
606c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
607c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;       /**< port that this structure applies to */
608c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDTX;            /**< Enable Discontinuous Transmisssion */
609c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;   /**< Enable High Pass Filter */
610c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_GSMHRTYPE;
611c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
612c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
613c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** GSM-EFR (ETSI 06.60, 3GPP 46.060) stream format parameters */
614c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_GSMEFRTYPE {
615c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;            /**< size of the structure in bytes */
616c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
617c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;       /**< port that this structure applies to */
618c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDTX;            /**< Enable Discontinuous Transmisssion */
619c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;   /**< Enable High Pass Filter */
620c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_GSMEFRTYPE;
621c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
622c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
623c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** TDMA FR (TIA/EIA-136-420, VSELP 7.95kbps coder) stream format parameters */
624c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_TDMAFRTYPE {
625c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
626c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
627c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
628c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
629c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       necessarily the same as the number of channels
630c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to be rendered. */
631c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
632c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
633c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_TDMAFRTYPE;
634c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
635c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
636c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** TDMA EFR (TIA/EIA-136-410, ACELP 7.4kbps coder) stream format parameters */
637c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_TDMAEFRTYPE {
638c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
639c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
640c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
641c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
642c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       necessarily the same as the number of channels
643c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to be rendered. */
644c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
645c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
646c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_TDMAEFRTYPE;
647c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
648c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
649c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PDC FR ( RCR-27, VSELP 6.7kbps coder) stream format parameters */
650c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_PDCFRTYPE {
651c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
652c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
653c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
654c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
655c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       necessarily the same as the number of channels
656c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to be rendered. */
657c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
658c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
659c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_PDCFRTYPE;
660c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
661c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
662c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PDC EFR ( RCR-27, ACELP 6.7kbps coder) stream format parameters */
663c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_PDCEFRTYPE {
664c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
665c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
666c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
667c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
668c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       necessarily the same as the number of channels
669c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to be rendered. */
670c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
671c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
672c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_PDCEFRTYPE;
673c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
674c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** PDC HR ( RCR-27, PSI-CELP 3.45kbps coder) stream format parameters */
675c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_PDCHRTYPE {
676c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
677c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
678c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
679c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
680c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       necessarily the same as the number of channels
681c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to be rendered. */
682c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
683c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
684c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_PDCHRTYPE;
685c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
686c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
687c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** CDMA Rate types */
688c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_CDMARATETYPE {
689c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARateBlank = 0,          /**< CDMA encoded frame is blank */
690c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARateFull,               /**< CDMA encoded frame in full rate */
691c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARateHalf,               /**< CDMA encoded frame in half rate */
692c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARateQuarter,            /**< CDMA encoded frame in quarter rate */
693c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARateEighth,             /**< CDMA encoded frame in eighth rate (DTX)*/
694c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARateErasure,            /**< CDMA erasure frame */
695c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
696c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
697c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARateMax = 0x7FFFFFFF
698c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CDMARATETYPE;
699c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
700c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
701c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** QCELP8 (TIA/EIA-96, up to 8kbps coder) stream format parameters */
702c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_QCELP8TYPE {
703c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
704c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
705c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
706c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
707c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       necessarily the same as the number of channels
708c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to be rendered. */
709c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nBitRate;             /**< Bit rate of the input data.  Use 0 for variable
710c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       rate or unknown bit rates */
711c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
712c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMinBitRate;          /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
713c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMaxBitRate;          /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
714c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_QCELP8TYPE;
715c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
716c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
717c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** QCELP13 ( CDMA, EIA/TIA-733, 13.3kbps coder) stream format parameters */
718c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_QCELP13TYPE {
719c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
720c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
721c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
722c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
723c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       necessarily the same as the number of channels
724c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to be rendered. */
725c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
726c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMinBitRate;          /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
727c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMaxBitRate;          /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
728c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_QCELP13TYPE;
729c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
730c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
731c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** EVRC ( CDMA, EIA/TIA-127, RCELP up to 8.55kbps coder) stream format parameters */
732c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_EVRCTYPE {
733c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
734c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
735c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
736c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
737c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       necessarily the same as the number of channels
738c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to be rendered. */
739c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARATETYPE eCDMARate; /**< actual Frame rate */
740c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bRATE_REDUCon;       /**< RATE_REDUCtion is requested for this frame */
741c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMinBitRate;          /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
742c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMaxBitRate;          /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
743c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;       /**< Enable encoder's High Pass Filter */
744c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bNoiseSuppressor;    /**< Enable encoder's noise suppressor pre-processing */
745c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bPostFilter;         /**< Enable decoder's post Filter */
746c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_EVRCTYPE;
747c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
748c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
749c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** SMV ( up to 8.55kbps coder) stream format parameters */
750c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_SMVTYPE {
751c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
752c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
753c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
754c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
755c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       necessarily the same as the number of channels
756c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to be rendered. */
757c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
758c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bRATE_REDUCon;           /**< RATE_REDUCtion is requested for this frame */
759c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMinBitRate;          /**< minmal rate for the encoder = 1,2,3,4, default = 1 ??*/
760c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMaxBitRate;          /**< maximal rate for the encoder = 1,2,3,4, default = 4 ??*/
761c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bHiPassFilter;       /**< Enable encoder's High Pass Filter ??*/
762c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bNoiseSuppressor;    /**< Enable encoder's noise suppressor pre-processing */
763c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bPostFilter;         /**< Enable decoder's post Filter ??*/
764c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_SMVTYPE;
765c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
766c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
767c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MIDI Format
768c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
769c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
770c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_MIDIFORMATTYPE
771c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev{
772c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatUnknown = 0, /**< MIDI Format unknown or don't care */
773c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatSMF0,        /**< Standard MIDI File Type 0 */
774c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatSMF1,        /**< Standard MIDI File Type 1 */
775c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatSMF2,        /**< Standard MIDI File Type 2 */
776c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatSPMIDI,      /**< SP-MIDI */
777c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatXMF0,        /**< eXtensible Music Format type 0 */
778c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatXMF1,        /**< eXtensible Music Format type 1 */
779c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatMobileXMF,   /**< Mobile XMF (eXtensible Music Format type 2) */
780c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
781c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
782c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFormatMax = 0x7FFFFFFF
783c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_MIDIFORMATTYPE;
784c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
785c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
786c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MIDI params
787c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
788c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
789c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_MIDITYPE {
790c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                 /**< size of the structure in bytes */
791c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;      /**< OMX specification version information */
792c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;            /**< port that this structure applies to */
793c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nFileSize;             /**< size of the MIDI file in bytes, where the entire
794c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        MIDI file passed in, otherwise if 0x0, the MIDI data
795c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        is merged and streamed (instead of passed as an
796c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        entire MIDI file) */
797c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sMaxPolyphony;        /**< Specifies the maximum simultaneous polyphonic
798c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        voices. A value of zero indicates that the default
799c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        polyphony of the device is used  */
800c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bLoadDefaultSound;    /**< Whether to load default sound
801c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                        bank at initialization */
802c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIFORMATTYPE eMidiFormat; /**< Version of the MIDI file */
803c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_MIDITYPE;
804c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
805c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
806c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Type of the MIDI sound bank
807c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
808c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
809c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_MIDISOUNDBANKTYPE {
810c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDISoundBankUnused = 0,           /**< unused/unknown soundbank type */
811c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDISoundBankDLS1,                 /**< DLS version 1 */
812c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDISoundBankDLS2,                 /**< DLS version 2 */
813c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDISoundBankMobileDLSBase,        /**< Mobile DLS, using the base functionality */
814c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDISoundBankMobileDLSPlusOptions, /**< Mobile DLS, using the specification-defined optional feature set */
815c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDISoundBankKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
816c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDISoundBankVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
817c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDISoundBankMax = 0x7FFFFFFF
818c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_MIDISOUNDBANKTYPE;
819c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
820c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
821c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Bank Layout describes how bank MSB & LSB are used in the DLS instrument definitions sound bank
822c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
823c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
824c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE {
825c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_MIDISoundBankLayoutUnused = 0,   /**< unused/unknown soundbank type */
826c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_MIDISoundBankLayoutGM,           /**< GS layout (based on bank MSB 0x00) */
827c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_MIDISoundBankLayoutGM2,          /**< General MIDI 2 layout (using MSB 0x78/0x79, LSB 0x00) */
828c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_MIDISoundBankLayoutUser,         /**< Does not conform to any bank numbering standards */
829c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_MIDISoundBankLayoutKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
830c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_MIDISoundBankLayoutVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
831c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_MIDISoundBankLayoutMax = 0x7FFFFFFF
832c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE;
833c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
834c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
835c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MIDI params to load/unload user soundbank
836c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
837c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
838c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE {
839c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;            /**< size of the structure in bytes */
840c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
841c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;       /**< port that this structure applies to */
842c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nDLSIndex;        /**< DLS file index to be loaded */
843c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nDLSSize;         /**< Size in bytes */
844c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_PTR pDLSData;         /**< Pointer to DLS file data */
845c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDISOUNDBANKTYPE eMidiSoundBank;   /**< Midi sound bank type enumeration */
846c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE eMidiSoundBankLayout; /**< Midi sound bank layout enumeration */
847c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE;
848c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
849c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
850c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Structure for Live MIDI events and MIP messages.
851c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * (MIP = Maximum Instantaneous Polyphony; part of the SP-MIDI standard.)
852c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
853c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
854c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE {
855c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;            /**< size of the structure in bytes */
856c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
857c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;       /**< Port that this structure applies to */
858c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMidiEventSize;   /**< Size of immediate MIDI events or MIP message in bytes  */
859c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8 nMidiEvents[1];    /**< MIDI event array to be rendered immediately, or an
860c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   array for the MIP message buffer, where the size is
861c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   indicated by nMidiEventSize */
862c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE;
863c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
864c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
865c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MIDI sound bank/ program pair in a given channel
866c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
867c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
868c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE {
869c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< size of the structure in bytes */
870c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
871c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;         /**< Port that this structure applies to */
872c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannel;           /**< Valid channel values range from 1 to 16 */
873c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nIDProgram;         /**< Valid program ID range is 1 to 128 */
874c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nIDSoundBank;       /**< Sound bank ID */
875c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nUserSoundBankIndex;/**< User soundbank index, easier to access soundbanks
876c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     by index if multiple banks are present */
877c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE;
878c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
879c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
880c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MIDI control
881c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
882c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
883c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MIDICONTROLTYPE {
884c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
885c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
886c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
887c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BS32 sPitchTransposition; /**< Pitch transposition in semitones, stored as Q22.10
888c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       format based on JAVA MMAPI (JSR-135) requirement */
889c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sPlayBackRate;       /**< Relative playback rate, stored as Q14.17 fixed-point
890c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       number based on JSR-135 requirement */
891c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sTempo ;             /**< Tempo in beats per minute (BPM), stored as Q22.10
892c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       fixed-point number based on JSR-135 requirement */
893c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMaxPolyphony;        /**< Specifies the maximum simultaneous polyphonic
894c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       voices. A value of zero indicates that the default
895c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       polyphony of the device is used  */
896c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nNumRepeat;           /**< Number of times to repeat playback */
897c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nStopTime;            /**< Time in milliseconds to indicate when playback
898c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       will stop automatically.  Set to zero if not used */
899c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nChannelMuteMask;     /**< 16 bit mask for channel mute status */
900c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nChannelSoloMask;     /**< 16 bit mask for channel solo status */
901c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nTrack0031MuteMask;   /**< 32 bit mask for track mute status. Note: This is for tracks 0-31 */
902c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nTrack3263MuteMask;   /**< 32 bit mask for track mute status. Note: This is for tracks 32-63 */
903c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nTrack0031SoloMask;   /**< 32 bit mask for track solo status. Note: This is for tracks 0-31 */
904c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nTrack3263SoloMask;   /**< 32 bit mask for track solo status. Note: This is for tracks 32-63 */
905c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
906c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MIDICONTROLTYPE;
907c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
908c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
909c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MIDI Playback States
910c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
911c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
912c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_MIDIPLAYBACKSTATETYPE {
913c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_MIDIPlayBackStateUnknown = 0,      /**< Unknown state or state does not map to
914c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  													other defined states */
915c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_MIDIPlayBackStateClosedEngaged,    /**< No MIDI resource is currently open.
916c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    The MIDI engine is currently processing
917c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    MIDI events. */
918c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_MIDIPlayBackStateParsing,          /**< A MIDI resource is open and is being
919c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    primed. The MIDI engine is currently
920c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    processing MIDI events. */
921c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_MIDIPlayBackStateOpenEngaged,      /**< A MIDI resource is open and primed but
922c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    not playing. The MIDI engine is currently
923c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    processing MIDI events. The transition to
924c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    this state is only possible from the
925c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    OMX_AUDIO_MIDIPlayBackStatePlaying state,
926c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    when the 'playback head' reaches the end
927c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    of media data or the playback stops due
928c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    to stop time set.*/
929c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_MIDIPlayBackStatePlaying,          /**< A MIDI resource is open and currently
930c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    playing. The MIDI engine is currently
931c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    processing MIDI events.*/
932c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_MIDIPlayBackStatePlayingPartially, /**< Best-effort playback due to SP-MIDI/DLS
933c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    resource constraints */
934c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_MIDIPlayBackStatePlayingSilently,  /**< Due to system resource constraints and
935c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    SP-MIDI content constraints, there is
936c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    no audible MIDI content during playback
937c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    currently. The situation may change if
938c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                                    resources are freed later.*/
939c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_MIDIPlayBackStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
940c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_MIDIPlayBackStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
941c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev  OMX_AUDIO_MIDIPlayBackStateMax = 0x7FFFFFFF
942c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_MIDIPLAYBACKSTATETYPE;
943c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
944c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
945c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MIDI status
946c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
947c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
948c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MIDISTATUSTYPE {
949c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< size of the structure in bytes */
950c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
951c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;         /**< port that this structure applies to */
952c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U16 nNumTracks;         /**< Number of MIDI tracks in the file, read only field.
953c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     NOTE: May not return a meaningful value until the entire
954c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     file is parsed and buffered.  */
955c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nDuration;          /**< The length of the currently open MIDI resource
956c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     in milliseconds. NOTE: May not return a meaningful value
957c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     until the entire file is parsed and buffered.  */
958c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPosition;          /**< Current Position of the MIDI resource being played
959c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     in milliseconds */
960c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bVibra;            /**< Does Vibra track exist? NOTE: May not return a meaningful
961c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     value until the entire file is parsed and buffered. */
962c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nNumMetaEvents;     /**< Total number of MIDI Meta Events in the currently
963c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     open MIDI resource. NOTE: May not return a meaningful value
964c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     until the entire file is parsed and buffered.  */
965c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nNumActiveVoices;   /**< Number of active voices in the currently playing
966c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     MIDI resource. NOTE: May not return a meaningful value until
967c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     the entire file is parsed and buffered. */
968c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_MIDIPLAYBACKSTATETYPE eMIDIPlayBackState;  /**< MIDI playback state enumeration, read only field */
969c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MIDISTATUSTYPE;
970c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
971c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
972c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MIDI Meta Event structure one per Meta Event.
973c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  MIDI Meta Events are like audio metadata, except that they are interspersed
974c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  with the MIDI content throughout the file and are not localized in the header.
975c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  As such, it is necessary to retrieve information about these Meta Events from
976c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  the engine, as it encounters these Meta Events within the MIDI content.
977c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  For example, SMF files can have up to 14 types of MIDI Meta Events (copyright,
978c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  author, default tempo, etc.) scattered throughout the file.
979c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  @ingroup midi
980c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
981c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE{
982c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;            /**< size of the structure in bytes */
983c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
984c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;       /**< port that this structure applies to */
985c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nIndex;           /**< Index of Meta Event */
986c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8 nMetaEventType;    /**< Meta Event Type, 7bits (i.e. 0 - 127) */
987c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMetaEventSize;   /**< size of the Meta Event in bytes */
988c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nTrack;           /**< track number for the meta event */
989c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPosition;        /**< Position of the meta-event in milliseconds */
990c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE;
991c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
992c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
993c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** MIDI Meta Event Data structure - one per Meta Event.
994c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup midi
995c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
996c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE{
997c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;            /**< size of the structure in bytes */
998c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
999c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;       /**< port that this structure applies to */
1000c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nIndex;           /**< Index of Meta Event */
1001c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nMetaEventSize;   /**< size of the Meta Event in bytes */
1002c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U8 nData[1];          /**< array of one or more bytes of meta data
1003c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                   as indicated by the nMetaEventSize field */
1004c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG__MIDIMETAEVENTDATATYPE;
1005c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1006c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1007c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio Volume adjustment for a port */
1008c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_VOLUMETYPE {
1009c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< size of the structure in bytes */
1010c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
1011c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;         /**< Port index indicating which port to
1012c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     set.  Select the input port to set
1013c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     just that port's volume.  Select the
1014c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     output port to adjust the master
1015c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     volume. */
1016c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bLinear;           /**< Is the volume to be set in linear (0.100)
1017c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     or logarithmic scale (mB) */
1018c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BS32 sVolume;           /**< Volume linear setting in the 0..100 range, OR
1019c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     Volume logarithmic setting for this port.  The values
1020c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     for volume are in mB (millibels = 1/100 dB) relative
1021c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     to a gain of 1 (e.g. the output is the same as the
1022c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     input level).  Values are in mB from nMax
1023c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     (maximum volume) to nMin mB (typically negative).
1024c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     Since the volume is "voltage"
1025c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     and not a "power", it takes a setting of
1026c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     -600 mB to decrease the volume by 1/2.  If
1027c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     a component cannot accurately set the
1028c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     volume to the requested value, it must
1029c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     set the volume to the closest value BELOW
1030c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     the requested value.  When getting the
1031c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     volume setting, the current actual volume
1032c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     must be returned. */
1033c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_VOLUMETYPE;
1034c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1035c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1036c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio Volume adjustment for a channel */
1037c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE {
1038c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< size of the structure in bytes */
1039c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
1040c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;         /**< Port index indicating which port to
1041c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     set.  Select the input port to set
1042c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     just that port's volume.  Select the
1043c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     output port to adjust the master
1044c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     volume. */
1045c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannel;           /**< channel to select from 0 to N-1,
1046c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     using OMX_ALL to apply volume settings
1047c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     to all channels */
1048c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bLinear;           /**< Is the volume to be set in linear (0.100) or
1049c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     logarithmic scale (mB) */
1050c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BS32 sVolume;           /**< Volume linear setting in the 0..100 range, OR
1051c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     Volume logarithmic setting for this port.
1052c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     The values for volume are in mB
1053c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     (millibels = 1/100 dB) relative to a gain
1054c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     of 1 (e.g. the output is the same as the
1055c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     input level).  Values are in mB from nMax
1056c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     (maximum volume) to nMin mB (typically negative).
1057c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     Since the volume is "voltage"
1058c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     and not a "power", it takes a setting of
1059c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     -600 mB to decrease the volume by 1/2.  If
1060c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     a component cannot accurately set the
1061c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     volume to the requested value, it must
1062c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     set the volume to the closest value BELOW
1063c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     the requested value.  When getting the
1064c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     volume setting, the current actual volume
1065c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     must be returned. */
1066c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bIsMIDI;           /**< TRUE if nChannel refers to a MIDI channel,
1067c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     FALSE otherwise */
1068c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE;
1069c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1070c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1071c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio balance setting */
1072c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_BALANCETYPE {
1073c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< size of the structure in bytes */
1074c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
1075c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;         /**< Port index indicating which port to
1076c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     set.  Select the input port to set
1077c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     just that port's balance.  Select the
1078c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     output port to adjust the master
1079c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     balance. */
1080c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_S32 nBalance;           /**< balance setting for this port
1081c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     (-100 to 100, where -100 indicates
1082c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     all left, and no right */
1083c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_BALANCETYPE;
1084c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1085c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1086c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio Port mute */
1087c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_MUTETYPE {
1088c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< size of the structure in bytes */
1089c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
1090c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;         /**< Port index indicating which port to
1091c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     set.  Select the input port to set
1092c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     just that port's mute.  Select the
1093c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     output port to adjust the master
1094c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     mute. */
1095c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bMute;             /**< Mute setting for this port */
1096c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_MUTETYPE;
1097c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1098c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1099c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Audio Channel mute */
1100c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_CHANNELMUTETYPE {
1101c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;              /**< size of the structure in bytes */
1102c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
1103c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;         /**< port that this structure applies to */
1104c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nChannel;           /**< channel to select from 0 to N-1,
1105c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     using OMX_ALL to apply mute settings
1106c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     to all channels */
1107c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bMute;             /**< Mute setting for this channel */
1108c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bIsMIDI;           /**< TRUE if nChannel refers to a MIDI channel,
1109c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     FALSE otherwise */
1110c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_CHANNELMUTETYPE;
1111c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1112c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1113c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1114c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Enable / Disable for loudness control, which boosts bass and to a
1115c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  smaller extent high end frequencies to compensate for hearing
1116c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  ability at the extreme ends of the audio spectrum
1117c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1118c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_LOUDNESSTYPE {
1119c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;             /**< size of the structure in bytes */
1120c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
1121c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;        /**< port that this structure applies to */
1122c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bLoudness;        /**< Enable/disable for loudness */
1123c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_LOUDNESSTYPE;
1124c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1125c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1126c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Enable / Disable for bass, which controls low frequencies
1127c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1128c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_BASSTYPE {
1129c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;             /**< size of the structure in bytes */
1130c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
1131c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;        /**< port that this structure applies to */
1132c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnable;          /**< Enable/disable for bass control */
1133c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_S32 nBass;             /**< bass setting for the port, as a
1134c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    continuous value from -100 to 100
1135c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    (0 means no change in bass level)*/
1136c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_BASSTYPE;
1137c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1138c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1139c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Enable / Disable for treble, which controls high frequencies tones
1140c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1141c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_TREBLETYPE {
1142c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;             /**< size of the structure in bytes */
1143c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
1144c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;        /**< port that this structure applies to */
1145c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnable;          /**< Enable/disable for treble control */
1146c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_S32  nTreble;          /**< treble setting for the port, as a
1147c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    continuous value from -100 to 100
1148c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    (0 means no change in treble level) */
1149c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_TREBLETYPE;
1150c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1151c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1152c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** An equalizer is typically used for two reasons: to compensate for an
1153c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  sub-optimal frequency response of a system to make it sound more natural
1154c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  or to create intentionally some unnatural coloring to the sound to create
1155c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  an effect.
1156c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  @ingroup effects
1157c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1158c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_EQUALIZERTYPE {
1159c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;             /**< size of the structure in bytes */
1160c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
1161c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;        /**< port that this structure applies to */
1162c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnable;          /**< Enable/disable for equalizer */
1163c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sBandIndex;       /**< Band number to be set.  Upper Limit is
1164c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    N-1, where N is the number of bands, lower limit is 0 */
1165c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sCenterFreq;      /**< Center frequecies in Hz.  This is a
1166c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    read only element and is used to determine
1167c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    the lower, center and upper frequency of
1168c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    this band.  */
1169c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BS32 sBandLevel;       /**< band level in millibels */
1170c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_EQUALIZERTYPE;
1171c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1172c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1173c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Stereo widening mode type
1174c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects
1175c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1176c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_STEREOWIDENINGTYPE {
1177c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_StereoWideningHeadphones,    /**< Stereo widening for loudspeakers */
1178c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_StereoWideningLoudspeakers,  /**< Stereo widening for closely spaced loudspeakers */
1179c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_StereoWideningKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1180c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_StereoWideningVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1181c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_StereoWideningMax = 0x7FFFFFFF
1182c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_STEREOWIDENINGTYPE;
1183c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1184c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1185c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Control for stereo widening, which is a special 2-channel
1186c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  case of the audio virtualizer effect. For example, for 5.1-channel
1187c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  output, it translates to virtual surround sound.
1188c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects
1189c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1190c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE {
1191c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;             /**< size of the structure in bytes */
1192c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
1193c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;        /**< port that this structure applies to */
1194c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnable;          /**< Enable/disable for stereo widening control */
1195c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_STEREOWIDENINGTYPE eWideningType; /**< Stereo widening algorithm type */
1196c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32  nStereoWidening;  /**< stereo widening setting for the port,
1197c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    as a continuous value from 0 to 100  */
1198c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE;
1199c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1200c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1201c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** The chorus effect (or ``choralizer'') is any signal processor which makes
1202c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  one sound source (such as a voice) sound like many such sources singing
1203c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  (or playing) in unison. Since performance in unison is never exact, chorus
1204c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  effects simulate this by making independently modified copies of the input
1205c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  signal. Modifications may include (1) delay, (2) frequency shift, and
1206c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  (3) amplitude modulation.
1207c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects
1208c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1209c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_CHORUSTYPE {
1210c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;             /**< size of the structure in bytes */
1211c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
1212c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;        /**< port that this structure applies to */
1213c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnable;          /**< Enable/disable for chorus */
1214c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sDelay;           /**< average delay in milliseconds */
1215c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sModulationRate;  /**< rate of modulation in millihertz */
1216c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nModulationDepth;  /**< depth of modulation as a percentage of
1217c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                    delay (i.e. 0 to 100) */
1218c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 nFeedback;        /**< Feedback from chorus output to input in percentage */
1219c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_CHORUSTYPE;
1220c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1221c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1222c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Reverberation is part of the reflected sound that follows the early
1223c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  reflections. In a typical room, this consists of a dense succession of
1224c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  echoes whose energy decays exponentially. The reverberation effect structure
1225c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  as defined here includes both (early) reflections as well as (late) reverberations.
1226c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects
1227c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1228c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_REVERBERATIONTYPE {
1229c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;                /**< size of the structure in bytes */
1230c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
1231c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;           /**< port that this structure applies to */
1232c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bEnable;             /**< Enable/disable for reverberation control */
1233c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BS32 sRoomLevel;          /**< Intensity level for the whole room effect
1234c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       (i.e. both early reflections and late
1235c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       reverberation) in millibels */
1236c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BS32 sRoomHighFreqLevel;  /**< Attenuation at high frequencies
1237c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       relative to the intensity at low
1238c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       frequencies in millibels */
1239c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BS32 sReflectionsLevel;   /**< Intensity level of early reflections
1240c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       (relative to room value), in millibels */
1241c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sReflectionsDelay;   /**< Delay time of the first reflection relative
1242c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to the direct path, in milliseconds */
1243c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BS32 sReverbLevel;        /**< Intensity level of late reverberation
1244c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       relative to room level, in millibels */
1245c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sReverbDelay;        /**< Time delay from the first early reflection
1246c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to the beginning of the late reverberation
1247c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       section, in milliseconds */
1248c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sDecayTime;          /**< Late reverberation decay time at low
1249c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       frequencies, in milliseconds */
1250c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 nDecayHighFreqRatio; /**< Ratio of high frequency decay time relative
1251c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       to low frequency decay time in percent  */
1252c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nDensity;             /**< Modal density in the late reverberation decay,
1253c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       in percent (i.e. 0 - 100) */
1254c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nDiffusion;           /**< Echo density in the late reverberation decay,
1255c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       in percent (i.e. 0 - 100) */
1256c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BU32 sReferenceHighFreq;  /**< Reference high frequency in Hertz. This is
1257c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       the frequency used as the reference for all
1258c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                       the high-frequency settings above */
1259c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1260c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_REVERBERATIONTYPE;
1261c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1262c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1263c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Possible settings for the Echo Cancelation structure to use
1264c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects
1265c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1266c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef enum OMX_AUDIO_ECHOCANTYPE {
1267c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_EchoCanOff = 0,    /**< Echo Cancellation is disabled */
1268c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_EchoCanNormal,     /**< Echo Cancellation normal operation -
1269c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     echo from plastics and face */
1270c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_EchoCanHFree,      /**< Echo Cancellation optimized for
1271c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     Hands Free operation */
1272c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_EchoCanCarKit,    /**< Echo Cancellation optimized for
1273c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev                                     Car Kit (longer echo) */
1274c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_EchoCanKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
1275c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_EchoCanVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
1276c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev   OMX_AUDIO_EchoCanMax = 0x7FFFFFFF
1277c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_ECHOCANTYPE;
1278c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1279c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1280c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Enable / Disable for echo cancelation, which removes undesired echo's
1281c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev *  from the audio
1282c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects
1283c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1284c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE {
1285c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;             /**< size of the structure in bytes */
1286c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
1287c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;        /**< port that this structure applies to */
1288c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_AUDIO_ECHOCANTYPE eEchoCancelation; /**< Echo cancelation settings */
1289c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE;
1290c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1291c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1292c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** Enable / Disable for noise reduction, which undesired noise from
1293c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * the audio
1294c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev * @ingroup effects
1295c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev */
1296c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchevtypedef struct OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE {
1297c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nSize;             /**< size of the structure in bytes */
1298c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
1299c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_U32 nPortIndex;        /**< port that this structure applies to */
1300c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev    OMX_BOOL bNoiseReduction;  /**< Enable/disable for noise reduction */
1301c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev} OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE;
1302c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1303c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/** @} */
1304c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1305c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#ifdef __cplusplus
1306c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev}
1307c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif /* __cplusplus */
1308c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1309c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev#endif
1310c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev/* File EOF */
1311c322989ae6ff6769490828de1b5eda12b749cce9Iliyan Malchev
1312