120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/*
220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * Copyright (c) 2008 The Khronos Group Inc.
320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *
420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * Permission is hereby granted, free of charge, to any person obtaining
520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * a copy of this software and associated documentation files (the
620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * "Software"), to deal in the Software without restriction, including
720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * without limitation the rights to use, copy, modify, merge, publish,
820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * distribute, sublicense, and/or sell copies of the Software, and to
920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * permit persons to whom the Software is furnished to do so, subject
1020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * to the following conditions:
1120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * The above copyright notice and this permission notice shall be included
1220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * in all copies or substantial portions of the Software.
1320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *
1420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
1520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
1620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
1720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
1820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
1920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
2020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
2120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *
2220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
2320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
2420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** @file OMX_Audio.h - OpenMax IL version 1.1.2
2520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  The structures needed by Audio components to exchange
2620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  parameters and configuration data with the componenmilts.
2720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
2820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
2920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifndef OMX_Audio_h
3020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_Audio_h
3120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifdef __cplusplus
3320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changextern "C" {
3420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif /* __cplusplus */
3520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
3720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/* Each OMX header must include all required header files to allow the
3820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  header to compile without errors.  The includes below are required
3920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  for this header file to compile successfully
4020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
4120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
4220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#include <OMX_Core.h>
4320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
4420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** @defgroup midi MIDI
4520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup audio
4620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
4720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
4820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** @defgroup effects Audio effects
4920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup audio
5020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
5120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
5220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** @defgroup audio OpenMAX IL Audio Domain
5320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * Structures for OpenMAX IL Audio domain
5420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @{
5520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
5620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
5720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Enumeration used to define the possible audio codings.
5820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  If "OMX_AUDIO_CodingUnused" is selected, the coding selection must
5920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  be done in a vendor specific way.  Since this is for an audio
6020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  processing element this enum is relevant.  However, for another
6120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  type of component other enums would be in this area.
6220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
6320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_CODINGTYPE {
6420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingUnused = 0,  /**< Placeholder value when coding is N/A  */
6520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingAutoDetect,  /**< auto detection of audio format */
6620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingPCM,         /**< Any variant of PCM coding */
6720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingADPCM,       /**< Any variant of ADPCM encoded data */
6820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingAMR,         /**< Any variant of AMR encoded data */
6920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingGSMFR,       /**< Any variant of GSM fullrate (i.e. GSM610) */
7020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingGSMEFR,      /**< Any variant of GSM Enhanced Fullrate encoded data*/
7120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingGSMHR,       /**< Any variant of GSM Halfrate encoded data */
7220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingPDCFR,       /**< Any variant of PDC Fullrate encoded data */
7320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingPDCEFR,      /**< Any variant of PDC Enhanced Fullrate encoded data */
7420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingPDCHR,       /**< Any variant of PDC Halfrate encoded data */
7520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingTDMAFR,      /**< Any variant of TDMA Fullrate encoded data (TIA/EIA-136-420) */
7620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingTDMAEFR,     /**< Any variant of TDMA Enhanced Fullrate encoded data (TIA/EIA-136-410) */
7720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingQCELP8,      /**< Any variant of QCELP 8kbps encoded data */
7820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingQCELP13,     /**< Any variant of QCELP 13kbps encoded data */
7920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingEVRC,        /**< Any variant of EVRC encoded data */
8020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingSMV,         /**< Any variant of SMV encoded data */
8120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingG711,        /**< Any variant of G.711 encoded data */
8220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingG723,        /**< Any variant of G.723 dot 1 encoded data */
8320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingG726,        /**< Any variant of G.726 encoded data */
8420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingG729,        /**< Any variant of G.729 encoded data */
8520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingAAC,         /**< Any variant of AAC encoded data */
8620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingMP3,         /**< Any variant of MP3 encoded data */
8720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingSBC,         /**< Any variant of SBC encoded data */
8820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingVORBIS,      /**< Any variant of VORBIS encoded data */
8920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingWMA,         /**< Any variant of WMA encoded data */
9020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingRA,          /**< Any variant of RA encoded data */
9120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingMIDI,        /**< Any variant of MIDI encoded data */
9220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
9320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
9420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CodingMax = 0x7FFFFFFF
9520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CODINGTYPE;
9620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
9720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
9820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** The PortDefinition structure is used to define all of the parameters
9920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  necessary for the compliant component to setup an input or an output audio
10020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  path.  If additional information is needed to define the parameters of the
10120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  port (such as frequency), additional structures must be sent such as the
10220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  OMX_AUDIO_PARAM_PCMMODETYPE structure to supply the extra parameters for the port.
10320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
10420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PORTDEFINITIONTYPE {
10520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_STRING cMIMEType;            /**< MIME type of data for the port */
10620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_NATIVE_DEVICETYPE pNativeRender; /** < platform specific reference
10720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                               for an output device,
10820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                               otherwise this field is 0 */
10920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bFlagErrorConcealment;  /**< Turns on error concealment if it is
11020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                          supported by the OMX component */
11120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CODINGTYPE eEncoding;  /**< Type of data expected for this
11220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                          port (e.g. PCM, AMR, MP3, etc) */
11320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PORTDEFINITIONTYPE;
11420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
11520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
11620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/**  Port format parameter.  This structure is used to enumerate
11720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  *  the various data input/output format supported by the port.
11820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  */
11920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_PORTFORMATTYPE {
12020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                  /**< size of the structure in bytes */
12120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;       /**< OMX specification version information */
12220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;             /**< Indicates which port to set */
12320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nIndex;                 /**< Indicates the enumeration index for the format from 0x0 to N-1 */
12420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CODINGTYPE eEncoding; /**< Type of data expected for this port (e.g. PCM, AMR, MP3, etc) */
12520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_PORTFORMATTYPE;
12620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
12720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
12820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** PCM mode type  */
12920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_PCMMODETYPE {
13020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_PCMModeLinear = 0,  /**< Linear PCM encoded data */
13120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_PCMModeALaw,        /**< A law PCM encoded data (G.711) */
13220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_PCMModeMULaw,       /**< Mu law PCM encoded data (G.711)  */
13320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_PCMModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
13420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_PCMModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
13520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_PCMModeMax = 0x7FFFFFFF
13620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PCMMODETYPE;
13720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
13820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
13920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_CHANNELTYPE {
14020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelNone = 0x0,    /**< Unused or empty */
14120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelLF   = 0x1,    /**< Left front */
14220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelRF   = 0x2,    /**< Right front */
14320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelCF   = 0x3,    /**< Center front */
14420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelLS   = 0x4,    /**< Left surround */
14520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelRS   = 0x5,    /**< Right surround */
14620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelLFE  = 0x6,    /**< Low frequency effects */
14720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelCS   = 0x7,    /**< Back surround */
14820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelLR   = 0x8,    /**< Left rear. */
14920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelRR   = 0x9,    /**< Right rear. */
15020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
15120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
15220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelMax  = 0x7FFFFFFF
15320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CHANNELTYPE;
15420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
15520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_MAXCHANNELS 16  /**< maximum number distinct audio channels that a buffer may contain */
15620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_MIN_PCMPAYLOAD_MSEC 5 /**< Minimum audio buffer payload size for uncompressed (PCM) audio */
15720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
15820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** PCM format description */
15920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_PCMMODETYPE {
16020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                    /**< Size of this structure, in Bytes */
16120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;         /**< OMX specification version information */
16220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;               /**< port that this structure applies to */
16320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;                /**< Number of channels (e.g. 2 for stereo) */
16420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_NUMERICALDATATYPE eNumData;   /**< indicates PCM data as signed or unsigned */
16520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_ENDIANTYPE eEndian;           /**< indicates PCM data as little or big endian */
16620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bInterleaved;            /**< True for normal interleaved data; false for
16720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                           non-interleaved data (e.g. block data) */
16820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitPerSample;            /**< Bit per sample */
16920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSamplingRate;            /**< Sampling rate of the source data.  Use 0 for
17020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                           variable or unknown sampling rate. */
17120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_PCMMODETYPE ePCMMode;   /**< PCM mode enumeration */
17220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CHANNELTYPE eChannelMapping[OMX_AUDIO_MAXCHANNELS]; /**< Slot i contains channel defined by eChannelMap[i] */
17320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
17420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_PCMMODETYPE;
17520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
17620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
17720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Audio channel mode.  This is used by both AAC and MP3, although the names are more appropriate
17820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * for the MP3.  For example, JointStereo for MP3 is CouplingChannels for AAC.
17920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
18020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_CHANNELMODETYPE {
18120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelModeStereo = 0,  /**< 2 channels, the bitrate allocation between those
18220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                          two channels changes accordingly to each channel information */
18320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelModeJointStereo, /**< mode that takes advantage of what is common between
18420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                           2 channels for higher compression gain */
18520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelModeDual,        /**< 2 mono-channels, each channel is encoded with half
18620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                           the bitrate of the overall bitrate */
18720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelModeMono,        /**< Mono channel mode */
18820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
18920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
19020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ChannelModeMax = 0x7FFFFFFF
19120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CHANNELMODETYPE;
19220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
19320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
19420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_MP3STREAMFORMATTYPE {
19520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MP3StreamFormatMP1Layer3 = 0, /**< MP3 Audio MPEG 1 Layer 3 Stream format */
19620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MP3StreamFormatMP2Layer3,     /**< MP3 Audio MPEG 2 Layer 3 Stream format */
19720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MP3StreamFormatMP2_5Layer3,   /**< MP3 Audio MPEG2.5 Layer 3 Stream format */
19820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MP3StreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
19920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MP3StreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
20020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MP3StreamFormatMax = 0x7FFFFFFF
20120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_MP3STREAMFORMATTYPE;
20220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
20320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MP3 params */
20420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_MP3TYPE {
20520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                 /**< size of the structure in bytes */
20620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;      /**< OMX specification version information */
20720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;            /**< port that this structure applies to */
20820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;             /**< Number of channels */
20920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitRate;              /**< Bit rate of the input data.  Use 0 for variable
21020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        rate or unknown bit rates */
21120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSampleRate;           /**< Sampling rate of the source data.  Use 0 for
21220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        variable or unknown sampling rate. */
21320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nAudioBandWidth;       /**< Audio band width (in Hz) to which an encoder should
21420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        limit the audio signal. Use 0 to let encoder decide */
21520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CHANNELMODETYPE eChannelMode;   /**< Channel mode enumeration */
21620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MP3STREAMFORMATTYPE eFormat;  /**< MP3 stream format */
21720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_MP3TYPE;
21820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
21920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
22020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_AACSTREAMFORMATTYPE {
22120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACStreamFormatMP2ADTS = 0, /**< AAC Audio Data Transport Stream 2 format */
22220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACStreamFormatMP4ADTS,     /**< AAC Audio Data Transport Stream 4 format */
22320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACStreamFormatMP4LOAS,     /**< AAC Low Overhead Audio Stream format */
22420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACStreamFormatMP4LATM,     /**< AAC Low overhead Audio Transport Multiplex */
22520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACStreamFormatADIF,        /**< AAC Audio Data Interchange Format */
22620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACStreamFormatMP4FF,       /**< AAC inside MPEG-4/ISO File Format */
22720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACStreamFormatRAW,         /**< AAC Raw Format */
22820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACStreamFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
22920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACStreamFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
23020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACStreamFormatMax = 0x7FFFFFFF
23120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_AACSTREAMFORMATTYPE;
23220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
23320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
23420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** AAC mode type.  Note that the term profile is used with the MPEG-2
23520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * standard and the term object type and profile is used with MPEG-4 */
23620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_AACPROFILETYPE{
23720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectNull = 0,      /**< Null, not used */
23820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectMain = 1,      /**< AAC Main object */
23920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectLC,            /**< AAC Low Complexity object (AAC profile) */
24020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectSSR,           /**< AAC Scalable Sample Rate object */
24120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectLTP,           /**< AAC Long Term Prediction object */
24220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectHE,            /**< AAC High Efficiency (object type SBR, HE-AAC profile) */
24320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectScalable,      /**< AAC Scalable object */
24420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectERLC = 17,     /**< ER AAC Low Complexity object (Error Resilient AAC-LC) */
24520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectLD = 23,       /**< AAC Low Delay object (Error Resilient) */
24620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectHE_PS = 29,    /**< AAC High Efficiency with Parametric Stereo coding (HE-AAC v2, object type PS) */
24720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
24820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
24920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_AACObjectMax = 0x7FFFFFFF
25020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_AACPROFILETYPE;
25120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
25220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
25320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** AAC tool usage (for nAACtools in OMX_AUDIO_PARAM_AACPROFILETYPE).
25420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * Required for encoder configuration and optional as decoder info output.
25520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * For MP3, OMX_AUDIO_CHANNELMODETYPE is sufficient. */
25620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACToolNone 0x00000000 /**< no AAC tools allowed (encoder config) or active (decoder info output) */
25720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACToolMS   0x00000001 /**< MS: Mid/side joint coding tool allowed or active */
25820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACToolIS   0x00000002 /**< IS: Intensity stereo tool allowed or active */
25920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACToolTNS  0x00000004 /**< TNS: Temporal Noise Shaping tool allowed or active */
26020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACToolPNS  0x00000008 /**< PNS: MPEG-4 Perceptual Noise substitution tool allowed or active */
26120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACToolLTP  0x00000010 /**< LTP: MPEG-4 Long Term Prediction tool allowed or active */
26220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACToolAll  0x7FFFFFFF /**< all AAC tools allowed or active (*/
26320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
26420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MPEG-4 AAC error resilience (ER) tool usage (for nAACERtools in OMX_AUDIO_PARAM_AACPROFILETYPE).
26520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * Required for ER encoder configuration and optional as decoder info output */
26620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACERNone  0x00000000  /**< no AAC ER tools allowed/used */
26720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACERVCB11 0x00000001  /**< VCB11: Virtual Code Books for AAC section data */
26820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACERRVLC  0x00000002  /**< RVLC: Reversible Variable Length Coding */
26920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACERHCR   0x00000004  /**< HCR: Huffman Codeword Reordering */
27020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#define OMX_AUDIO_AACERAll   0x7FFFFFFF  /**< all AAC ER tools allowed/used */
27120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
27220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
27320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** AAC params */
27420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_AACPROFILETYPE {
27520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                 /**< Size of this structure, in Bytes */
27620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;      /**< OMX specification version information */
27720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;            /**< Port that this structure applies to */
27820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;             /**< Number of channels */
27920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSampleRate;           /**< Sampling rate of the source data.  Use 0 for
28020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        variable or unknown sampling rate. */
28120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitRate;              /**< Bit rate of the input data.  Use 0 for variable
28220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        rate or unknown bit rates */
28320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nAudioBandWidth;       /**< Audio band width (in Hz) to which an encoder should
28420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        limit the audio signal. Use 0 to let encoder decide */
28520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nFrameLength;          /**< Frame length (in audio samples per channel) of the codec.
28620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        Can be 1024 or 960 (AAC-LC), 2048 (HE-AAC), 480 or 512 (AAC-LD).
28720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        Use 0 to let encoder decide */
28820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nAACtools;             /**< AAC tool usage */
28920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nAACERtools;           /**< MPEG-4 AAC error resilience tool usage */
29020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACPROFILETYPE eAACProfile;   /**< AAC profile enumeration */
29120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AACSTREAMFORMATTYPE eAACStreamFormat; /**< AAC stream format enumeration */
29220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CHANNELMODETYPE eChannelMode;   /**< Channel mode enumeration */
29320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_AACPROFILETYPE;
29420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
29520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
29620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** VORBIS params */
29720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_VORBISTYPE {
29820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;            /**< size of the structure in bytes */
29920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
30020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;       /**< port that this structure applies to */
30120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;        /**< Number of channels */
30220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitRate;         /**< Bit rate of the encoded data data.  Use 0 for variable
30320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   rate or unknown bit rates. Encoding is set to the
30420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   bitrate closest to specified  value (in bps) */
30520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMinBitRate;      /**< Sets minimum bitrate (in bps). */
30620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMaxBitRate;      /**< Sets maximum bitrate (in bps). */
30720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
30820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSampleRate;      /**< Sampling rate of the source data.  Use 0 for
30920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   variable or unknown sampling rate. */
31020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nAudioBandWidth;  /**< Audio band width (in Hz) to which an encoder should
31120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   limit the audio signal. Use 0 to let encoder decide */
31220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_S32 nQuality;		  /**< Sets encoding quality to n, between -1 (low) and 10 (high).
31320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   In the default mode of operation, teh quality level is 3.
31420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   Normal quality range is 0 - 10. */
31520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bManaged;		  /**< Set  bitrate  management  mode. This turns off the
31620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   normal VBR encoding, but allows hard or soft bitrate
31720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   constraints to be enforced by the encoder. This mode can
31820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   be slower, and may also be lower quality. It is
31920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   primarily useful for streaming. */
32020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDownmix;		  /**< Downmix input from stereo to mono (has no effect on
32120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   non-stereo streams). Useful for lower-bitrate encoding. */
32220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_VORBISTYPE;
32320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
32420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
32520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** WMA Version */
32620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_WMAFORMATTYPE {
32720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAFormatUnused = 0, /**< format unused or unknown */
32820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAFormat7,          /**< Windows Media Audio format 7 */
32920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAFormat8,          /**< Windows Media Audio format 8 */
33020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAFormat9,          /**< Windows Media Audio format 9 */
33120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
33220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
33320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAFormatMax = 0x7FFFFFFF
33420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_WMAFORMATTYPE;
33520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
33620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
33720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** WMA Profile */
33820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_WMAPROFILETYPE {
33920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAProfileUnused = 0,  /**< profile unused or unknown */
34020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAProfileL1,          /**< Windows Media audio version 9 profile L1 */
34120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAProfileL2,          /**< Windows Media audio version 9 profile L2 */
34220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAProfileL3,          /**< Windows Media audio version 9 profile L3 */
34320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAProfileKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
34420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAProfileVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
34520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_WMAProfileMax = 0x7FFFFFFF
34620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_WMAPROFILETYPE;
34720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
34820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
34920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** WMA params */
35020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_WMATYPE {
35120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;            /**< size of the structure in bytes */
35220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
35320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;       /**< port that this structure applies to */
35420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U16 nChannels;        /**< Number of channels */
35520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitRate;         /**< Bit rate of the input data.  Use 0 for variable
35620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   rate or unknown bit rates */
35720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_WMAFORMATTYPE eFormat; /**< Version of WMA stream / data */
35820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang	OMX_AUDIO_WMAPROFILETYPE eProfile;  /**< Profile of WMA stream / data */
35920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSamplingRate;    /**< Sampling rate of the source data */
36020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U16 nBlockAlign;      /**< is the block alignment, or block size, in bytes of the audio codec */
36120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U16 nEncodeOptions;   /**< WMA Type-specific data */
36220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSuperBlockAlign; /**< WMA Type-specific data */
36320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_WMATYPE;
36420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
36520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/**
36620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * RealAudio format
36720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
36820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_RAFORMATTYPE {
36920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RAFormatUnused = 0, /**< Format unused or unknown */
37020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RA8,                /**< RealAudio 8 codec */
37120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RA9,                /**< RealAudio 9 codec */
37220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RA10_AAC,           /**< MPEG-4 AAC codec for bitrates of more than 128kbps */
37320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RA10_CODEC,         /**< RealAudio codec for bitrates less than 128 kbps */
37420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RA10_LOSSLESS,      /**< RealAudio Lossless */
37520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RA10_MULTICHANNEL,  /**< RealAudio Multichannel */
37620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RA10_VOICE,         /**< RealAudio Voice for bitrates below 15 kbps */
37720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RAFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
37820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RAFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
37920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VIDEO_RAFormatMax = 0x7FFFFFFF
38020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_RAFORMATTYPE;
38120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
38220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** RA (Real Audio) params */
38320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_RATYPE {
38420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;              /**< Size of this structure, in Bytes */
38520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
38620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;         /**< Port that this structure applies to */
38720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;          /**< Number of channels */
38820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSamplingRate;      /**< is the sampling rate of the source data */
38920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitsPerFrame;      /**< is the value for bits per frame  */
39020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSamplePerFrame;    /**< is the value for samples per frame */
39120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nCouplingQuantBits; /**< is the number of coupling quantization bits in the stream */
39220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nCouplingStartRegion;   /**< is the coupling start region in the stream  */
39320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nNumRegions;        /**< is the number of regions value */
39420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_RAFORMATTYPE eFormat; /**< is the RealAudio audio format */
39520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_RATYPE;
39620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
39720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
39820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** SBC Allocation Method Type */
39920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_SBCALLOCMETHODTYPE {
40020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_SBCAllocMethodLoudness, /**< Loudness allocation method */
40120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_SBCAllocMethodSNR,      /**< SNR allocation method */
40220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_SBCAllocMethodKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
40320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_SBCAllocMethodVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
40420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_SBCAllocMethodMax = 0x7FFFFFFF
40520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_SBCALLOCMETHODTYPE;
40620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
40720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
40820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** SBC params */
40920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_SBCTYPE {
41020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;             /**< size of the structure in bytes */
41120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
41220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;        /**< port that this structure applies to */
41320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;         /**< Number of channels */
41420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitRate;          /**< Bit rate of the input data.  Use 0 for variable
41520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    rate or unknown bit rates */
41620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSampleRate;       /**< Sampling rate of the source data.  Use 0 for
41720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    variable or unknown sampling rate. */
41820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBlocks;           /**< Number of blocks */
41920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSubbands;         /**< Number of subbands */
42020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitPool;          /**< Bitpool value */
42120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bEnableBitrate;   /**< Use bitrate value instead of bitpool */
42220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CHANNELMODETYPE eChannelMode; /**< Channel mode enumeration */
42320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_SBCALLOCMETHODTYPE eSBCAllocType;   /**< SBC Allocation method type */
42420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_SBCTYPE;
42520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
42620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
42720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** ADPCM stream format parameters */
42820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_ADPCMTYPE {
42920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;              /**< size of the structure in bytes */
43020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
43120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;         /**< port that this structure applies to */
43220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;          /**< Number of channels in the data stream (not
43320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     necessarily the same as the number of channels
43420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     to be rendered. */
43520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitsPerSample;     /**< Number of bits in each sample */
43620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSampleRate;        /**< Sampling rate of the source data.  Use 0 for
43720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    variable or unknown sampling rate. */
43820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_ADPCMTYPE;
43920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
44020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
44120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** G723 rate */
44220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_G723RATE {
44320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G723ModeUnused = 0,  /**< AMRNB Mode unused / unknown */
44420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G723ModeLow,         /**< 5300 bps */
44520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G723ModeHigh,        /**< 6300 bps */
44620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G723ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
44720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G723ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
44820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G723ModeMax = 0x7FFFFFFF
44920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_G723RATE;
45020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
45120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
45220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** G723 - Sample rate must be 8 KHz */
45320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_G723TYPE {
45420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
45520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
45620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
45720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
45820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       necessarily the same as the number of channels
45920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to be rendered. */
46020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
46120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G723RATE eBitRate;  /**< todo: Should this be moved to a config? */
46220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
46320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bPostFilter;         /**< Enable Post Filter */
46420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_G723TYPE;
46520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
46620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
46720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** ITU G726 (ADPCM) rate */
46820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_G726MODE {
46920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G726ModeUnused = 0,  /**< G726 Mode unused / unknown */
47020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G726Mode16,          /**< 16 kbps */
47120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G726Mode24,          /**< 24 kbps */
47220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G726Mode32,          /**< 32 kbps, most common rate, also G721 */
47320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G726Mode40,          /**< 40 kbps */
47420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G726ModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
47520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G726ModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
47620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G726ModeMax = 0x7FFFFFFF
47720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_G726MODE;
47820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
47920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
48020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** G.726 stream format parameters - must be at 8KHz */
48120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_G726TYPE {
48220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;              /**< size of the structure in bytes */
48320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
48420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;         /**< port that this structure applies to */
48520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;          /**< Number of channels in the data stream (not
48620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     necessarily the same as the number of channels
48720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     to be rendered. */
48820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang     OMX_AUDIO_G726MODE eG726Mode;
48920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_G726TYPE;
49020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
49120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
49220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** G729 coder type */
49320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_G729TYPE {
49420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G729 = 0,           /**< ITU G.729  encoded data */
49520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G729A,              /**< ITU G.729 annex A  encoded data */
49620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G729B,              /**< ITU G.729 with annex B encoded data */
49720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G729AB,             /**< ITU G.729 annexes A and B encoded data */
49820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G729KhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
49920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G729VendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
50020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G729Max = 0x7FFFFFFF
50120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_G729TYPE;
50220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
50320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
50420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** G729 stream format parameters - fixed 6KHz sample rate */
50520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_G729TYPE {
50620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;            /**< size of the structure in bytes */
50720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
50820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;       /**< port that this structure applies to */
50920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;        /**< Number of channels in the data stream (not
51020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   necessarily the same as the number of channels
51120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   to be rendered. */
51220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDTX;            /**< Enable Discontinuous Transmisssion */
51320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_G729TYPE eBitType;
51420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_G729TYPE;
51520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
51620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
51720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** AMR Frame format */
51820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_AMRFRAMEFORMATTYPE {
51920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRFrameFormatConformance = 0,  /**< Frame Format is AMR Conformance
52020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                   (Standard) Format */
52120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRFrameFormatIF1,              /**< Frame Format is AMR Interface
52220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                   Format 1 */
52320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRFrameFormatIF2,              /**< Frame Format is AMR Interface
52420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                   Format 2*/
52520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRFrameFormatFSF,              /**< Frame Format is AMR File Storage
52620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                   Format */
52720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRFrameFormatRTPPayload,       /**< Frame Format is AMR Real-Time
52820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                   Transport Protocol Payload Format */
52920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRFrameFormatITU,              /**< Frame Format is ITU Format (added at Motorola request) */
53020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRFrameFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
53120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRFrameFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
53220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRFrameFormatMax = 0x7FFFFFFF
53320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_AMRFRAMEFORMATTYPE;
53420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
53520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
53620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** AMR band mode */
53720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_AMRBANDMODETYPE {
53820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeUnused = 0,          /**< AMRNB Mode unused / unknown */
53920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeNB0,                 /**< AMRNB Mode 0 =  4750 bps */
54020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeNB1,                 /**< AMRNB Mode 1 =  5150 bps */
54120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeNB2,                 /**< AMRNB Mode 2 =  5900 bps */
54220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeNB3,                 /**< AMRNB Mode 3 =  6700 bps */
54320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeNB4,                 /**< AMRNB Mode 4 =  7400 bps */
54420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeNB5,                 /**< AMRNB Mode 5 =  7950 bps */
54520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeNB6,                 /**< AMRNB Mode 6 = 10200 bps */
54620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeNB7,                 /**< AMRNB Mode 7 = 12200 bps */
54720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeWB0,                 /**< AMRWB Mode 0 =  6600 bps */
54820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeWB1,                 /**< AMRWB Mode 1 =  8850 bps */
54920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeWB2,                 /**< AMRWB Mode 2 = 12650 bps */
55020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeWB3,                 /**< AMRWB Mode 3 = 14250 bps */
55120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeWB4,                 /**< AMRWB Mode 4 = 15850 bps */
55220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeWB5,                 /**< AMRWB Mode 5 = 18250 bps */
55320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeWB6,                 /**< AMRWB Mode 6 = 19850 bps */
55420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeWB7,                 /**< AMRWB Mode 7 = 23050 bps */
55520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeWB8,                 /**< AMRWB Mode 8 = 23850 bps */
55620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
55720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
55820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBandModeMax = 0x7FFFFFFF
55920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_AMRBANDMODETYPE;
56020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
56120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
56220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** AMR Discontinuous Transmission mode */
56320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_AMRDTXMODETYPE {
56420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRDTXModeOff = 0,        /**< AMR Discontinuous Transmission Mode is disabled */
56520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRDTXModeOnVAD1,         /**< AMR Discontinuous Transmission Mode using
56620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                             Voice Activity Detector 1 (VAD1) is enabled */
56720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRDTXModeOnVAD2,         /**< AMR Discontinuous Transmission Mode using
56820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                             Voice Activity Detector 2 (VAD2) is enabled */
56920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRDTXModeOnAuto,         /**< The codec will automatically select between
57020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                             Off, VAD1 or VAD2 modes */
57120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
57220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRDTXasEFR,             /**< DTX as EFR instead of AMR standard (3GPP 26.101, frame type =8,9,10) */
57320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
57420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRDTXModeKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
57520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRDTXModeVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
57620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRDTXModeMax = 0x7FFFFFFF
57720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_AMRDTXMODETYPE;
57820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
57920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
58020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** AMR params */
58120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_AMRTYPE {
58220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                          /**< size of the structure in bytes */
58320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;               /**< OMX specification version information */
58420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;                     /**< port that this structure applies to */
58520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;                      /**< Number of channels */
58620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitRate;                       /**< Bit rate read only field */
58720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRBANDMODETYPE eAMRBandMode; /**< AMR Band Mode enumeration */
58820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRDTXMODETYPE  eAMRDTXMode;  /**< AMR DTX Mode enumeration */
58920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_AMRFRAMEFORMATTYPE eAMRFrameFormat; /**< AMR frame format enumeration */
59020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_AMRTYPE;
59120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
59220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
59320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** GSM_FR (ETSI 06.10, 3GPP 46.010) stream format parameters */
59420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_GSMFRTYPE {
59520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;            /**< size of the structure in bytes */
59620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
59720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;       /**< port that this structure applies to */
59820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDTX;            /**< Enable Discontinuous Transmisssion */
59920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;   /**< Enable High Pass Filter */
60020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_GSMFRTYPE;
60120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
60220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
60320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** GSM-HR (ETSI 06.20, 3GPP 46.020) stream format parameters */
60420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_GSMHRTYPE {
60520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;            /**< size of the structure in bytes */
60620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
60720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;       /**< port that this structure applies to */
60820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDTX;            /**< Enable Discontinuous Transmisssion */
60920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;   /**< Enable High Pass Filter */
61020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_GSMHRTYPE;
61120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
61220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
61320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** GSM-EFR (ETSI 06.60, 3GPP 46.060) stream format parameters */
61420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_GSMEFRTYPE {
61520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;            /**< size of the structure in bytes */
61620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
61720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;       /**< port that this structure applies to */
61820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDTX;            /**< Enable Discontinuous Transmisssion */
61920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;   /**< Enable High Pass Filter */
62020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_GSMEFRTYPE;
62120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
62220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
62320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** TDMA FR (TIA/EIA-136-420, VSELP 7.95kbps coder) stream format parameters */
62420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_TDMAFRTYPE {
62520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
62620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
62720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
62820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
62920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       necessarily the same as the number of channels
63020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to be rendered. */
63120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
63220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
63320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_TDMAFRTYPE;
63420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
63520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
63620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** TDMA EFR (TIA/EIA-136-410, ACELP 7.4kbps coder) stream format parameters */
63720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_TDMAEFRTYPE {
63820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
63920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
64020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
64120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
64220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       necessarily the same as the number of channels
64320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to be rendered. */
64420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
64520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
64620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_TDMAEFRTYPE;
64720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
64820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
64920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** PDC FR ( RCR-27, VSELP 6.7kbps coder) stream format parameters */
65020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_PDCFRTYPE {
65120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
65220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
65320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
65420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
65520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       necessarily the same as the number of channels
65620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to be rendered. */
65720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
65820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
65920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_PDCFRTYPE;
66020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
66120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
66220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** PDC EFR ( RCR-27, ACELP 6.7kbps coder) stream format parameters */
66320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_PDCEFRTYPE {
66420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
66520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
66620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
66720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
66820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       necessarily the same as the number of channels
66920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to be rendered. */
67020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
67120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
67220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_PDCEFRTYPE;
67320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
67420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** PDC HR ( RCR-27, PSI-CELP 3.45kbps coder) stream format parameters */
67520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_PDCHRTYPE {
67620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
67720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
67820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
67920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
68020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       necessarily the same as the number of channels
68120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to be rendered. */
68220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bDTX;                /**< Enable Discontinuous Transmisssion */
68320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;       /**< Enable High Pass Filter */
68420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_PDCHRTYPE;
68520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
68620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
68720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** CDMA Rate types */
68820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_CDMARATETYPE {
68920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARateBlank = 0,          /**< CDMA encoded frame is blank */
69020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARateFull,               /**< CDMA encoded frame in full rate */
69120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARateHalf,               /**< CDMA encoded frame in half rate */
69220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARateQuarter,            /**< CDMA encoded frame in quarter rate */
69320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARateEighth,             /**< CDMA encoded frame in eighth rate (DTX)*/
69420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARateErasure,            /**< CDMA erasure frame */
69520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
69620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
69720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARateMax = 0x7FFFFFFF
69820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CDMARATETYPE;
69920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
70020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
70120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** QCELP8 (TIA/EIA-96, up to 8kbps coder) stream format parameters */
70220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_QCELP8TYPE {
70320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
70420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
70520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
70620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
70720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       necessarily the same as the number of channels
70820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to be rendered. */
70920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nBitRate;             /**< Bit rate of the input data.  Use 0 for variable
71020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       rate or unknown bit rates */
71120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
71220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMinBitRate;          /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
71320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMaxBitRate;          /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
71420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_QCELP8TYPE;
71520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
71620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
71720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** QCELP13 ( CDMA, EIA/TIA-733, 13.3kbps coder) stream format parameters */
71820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_QCELP13TYPE {
71920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
72020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
72120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
72220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
72320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       necessarily the same as the number of channels
72420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to be rendered. */
72520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
72620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMinBitRate;          /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
72720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMaxBitRate;          /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
72820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_QCELP13TYPE;
72920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
73020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
73120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** EVRC ( CDMA, EIA/TIA-127, RCELP up to 8.55kbps coder) stream format parameters */
73220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_EVRCTYPE {
73320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
73420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
73520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
73620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
73720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       necessarily the same as the number of channels
73820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to be rendered. */
73920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARATETYPE eCDMARate; /**< actual Frame rate */
74020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bRATE_REDUCon;       /**< RATE_REDUCtion is requested for this frame */
74120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMinBitRate;          /**< minmal rate for the encoder = 1,2,3,4, default = 1 */
74220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMaxBitRate;          /**< maximal rate for the encoder = 1,2,3,4, default = 4 */
74320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;       /**< Enable encoder's High Pass Filter */
74420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bNoiseSuppressor;    /**< Enable encoder's noise suppressor pre-processing */
74520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bPostFilter;         /**< Enable decoder's post Filter */
74620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_EVRCTYPE;
74720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
74820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
74920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** SMV ( up to 8.55kbps coder) stream format parameters */
75020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_SMVTYPE {
75120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
75220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
75320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
75420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannels;            /**< Number of channels in the data stream (not
75520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       necessarily the same as the number of channels
75620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to be rendered. */
75720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_CDMARATETYPE eCDMARate; /**< Frame rate */
75820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bRATE_REDUCon;           /**< RATE_REDUCtion is requested for this frame */
75920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMinBitRate;          /**< minmal rate for the encoder = 1,2,3,4, default = 1 ??*/
76020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMaxBitRate;          /**< maximal rate for the encoder = 1,2,3,4, default = 4 ??*/
76120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bHiPassFilter;       /**< Enable encoder's High Pass Filter ??*/
76220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bNoiseSuppressor;    /**< Enable encoder's noise suppressor pre-processing */
76320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bPostFilter;         /**< Enable decoder's post Filter ??*/
76420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_SMVTYPE;
76520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
76620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
76720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MIDI Format
76820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
76920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
77020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_MIDIFORMATTYPE
77120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang{
77220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatUnknown = 0, /**< MIDI Format unknown or don't care */
77320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatSMF0,        /**< Standard MIDI File Type 0 */
77420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatSMF1,        /**< Standard MIDI File Type 1 */
77520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatSMF2,        /**< Standard MIDI File Type 2 */
77620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatSPMIDI,      /**< SP-MIDI */
77720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatXMF0,        /**< eXtensible Music Format type 0 */
77820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatXMF1,        /**< eXtensible Music Format type 1 */
77920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatMobileXMF,   /**< Mobile XMF (eXtensible Music Format type 2) */
78020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
78120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
78220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFormatMax = 0x7FFFFFFF
78320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_MIDIFORMATTYPE;
78420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
78520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
78620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MIDI params
78720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
78820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
78920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_MIDITYPE {
79020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                 /**< size of the structure in bytes */
79120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;      /**< OMX specification version information */
79220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;            /**< port that this structure applies to */
79320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nFileSize;             /**< size of the MIDI file in bytes, where the entire
79420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        MIDI file passed in, otherwise if 0x0, the MIDI data
79520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        is merged and streamed (instead of passed as an
79620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        entire MIDI file) */
79720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sMaxPolyphony;        /**< Specifies the maximum simultaneous polyphonic
79820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        voices. A value of zero indicates that the default
79920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        polyphony of the device is used  */
80020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bLoadDefaultSound;    /**< Whether to load default sound
80120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                        bank at initialization */
80220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIFORMATTYPE eMidiFormat; /**< Version of the MIDI file */
80320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_MIDITYPE;
80420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
80520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
80620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Type of the MIDI sound bank
80720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
80820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
80920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_MIDISOUNDBANKTYPE {
81020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDISoundBankUnused = 0,           /**< unused/unknown soundbank type */
81120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDISoundBankDLS1,                 /**< DLS version 1 */
81220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDISoundBankDLS2,                 /**< DLS version 2 */
81320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDISoundBankMobileDLSBase,        /**< Mobile DLS, using the base functionality */
81420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDISoundBankMobileDLSPlusOptions, /**< Mobile DLS, using the specification-defined optional feature set */
81520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDISoundBankKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
81620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDISoundBankVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
81720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDISoundBankMax = 0x7FFFFFFF
81820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_MIDISOUNDBANKTYPE;
81920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
82020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
82120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Bank Layout describes how bank MSB & LSB are used in the DLS instrument definitions sound bank
82220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
82320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
82420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE {
82520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_MIDISoundBankLayoutUnused = 0,   /**< unused/unknown soundbank type */
82620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_MIDISoundBankLayoutGM,           /**< GS layout (based on bank MSB 0x00) */
82720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_MIDISoundBankLayoutGM2,          /**< General MIDI 2 layout (using MSB 0x78/0x79, LSB 0x00) */
82820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_MIDISoundBankLayoutUser,         /**< Does not conform to any bank numbering standards */
82920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_MIDISoundBankLayoutKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
83020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_MIDISoundBankLayoutVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
83120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_MIDISoundBankLayoutMax = 0x7FFFFFFF
83220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE;
83320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
83420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
83520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MIDI params to load/unload user soundbank
83620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
83720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
83820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE {
83920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;            /**< size of the structure in bytes */
84020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
84120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;       /**< port that this structure applies to */
84220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nDLSIndex;        /**< DLS file index to be loaded */
84320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nDLSSize;         /**< Size in bytes */
84420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_PTR pDLSData;         /**< Pointer to DLS file data */
84520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDISOUNDBANKTYPE eMidiSoundBank;   /**< Midi sound bank type enumeration */
84620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDISOUNDBANKLAYOUTTYPE eMidiSoundBankLayout; /**< Midi sound bank layout enumeration */
84720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_PARAM_MIDILOADUSERSOUNDTYPE;
84820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
84920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
85020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Structure for Live MIDI events and MIP messages.
85120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * (MIP = Maximum Instantaneous Polyphony; part of the SP-MIDI standard.)
85220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
85320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
85420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE {
85520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;            /**< size of the structure in bytes */
85620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
85720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;       /**< Port that this structure applies to */
85820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMidiEventSize;   /**< Size of immediate MIDI events or MIP message in bytes  */
85920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U8 nMidiEvents[1];    /**< MIDI event array to be rendered immediately, or an
86020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   array for the MIP message buffer, where the size is
86120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   indicated by nMidiEventSize */
86220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_MIDIIMMEDIATEEVENTTYPE;
86320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
86420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
86520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MIDI sound bank/ program pair in a given channel
86620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
86720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
86820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE {
86920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;              /**< size of the structure in bytes */
87020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
87120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;         /**< Port that this structure applies to */
87220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannel;           /**< Valid channel values range from 1 to 16 */
87320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U16 nIDProgram;         /**< Valid program ID range is 1 to 128 */
87420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U16 nIDSoundBank;       /**< Sound bank ID */
87520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nUserSoundBankIndex;/**< User soundbank index, easier to access soundbanks
87620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     by index if multiple banks are present */
87720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_MIDISOUNDBANKPROGRAMTYPE;
87820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
87920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
88020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MIDI control
88120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
88220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
88320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_MIDICONTROLTYPE {
88420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
88520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
88620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
88720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BS32 sPitchTransposition; /**< Pitch transposition in semitones, stored as Q22.10
88820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       format based on JAVA MMAPI (JSR-135) requirement */
88920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sPlayBackRate;       /**< Relative playback rate, stored as Q14.17 fixed-point
89020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       number based on JSR-135 requirement */
89120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sTempo ;             /**< Tempo in beats per minute (BPM), stored as Q22.10
89220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       fixed-point number based on JSR-135 requirement */
89320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMaxPolyphony;        /**< Specifies the maximum simultaneous polyphonic
89420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       voices. A value of zero indicates that the default
89520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       polyphony of the device is used  */
89620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nNumRepeat;           /**< Number of times to repeat playback */
89720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nStopTime;            /**< Time in milliseconds to indicate when playback
89820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       will stop automatically.  Set to zero if not used */
89920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U16 nChannelMuteMask;     /**< 16 bit mask for channel mute status */
90020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U16 nChannelSoloMask;     /**< 16 bit mask for channel solo status */
90120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nTrack0031MuteMask;   /**< 32 bit mask for track mute status. Note: This is for tracks 0-31 */
90220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nTrack3263MuteMask;   /**< 32 bit mask for track mute status. Note: This is for tracks 32-63 */
90320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nTrack0031SoloMask;   /**< 32 bit mask for track solo status. Note: This is for tracks 0-31 */
90420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nTrack3263SoloMask;   /**< 32 bit mask for track solo status. Note: This is for tracks 32-63 */
90520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
90620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_MIDICONTROLTYPE;
90720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
90820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
90920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MIDI Playback States
91020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
91120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
91220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_MIDIPLAYBACKSTATETYPE {
91320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_MIDIPlayBackStateUnknown = 0,      /**< Unknown state or state does not map to
91420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  													other defined states */
91520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_MIDIPlayBackStateClosedEngaged,    /**< No MIDI resource is currently open.
91620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    The MIDI engine is currently processing
91720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    MIDI events. */
91820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_MIDIPlayBackStateParsing,          /**< A MIDI resource is open and is being
91920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    primed. The MIDI engine is currently
92020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    processing MIDI events. */
92120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_MIDIPlayBackStateOpenEngaged,      /**< A MIDI resource is open and primed but
92220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    not playing. The MIDI engine is currently
92320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    processing MIDI events. The transition to
92420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    this state is only possible from the
92520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    OMX_AUDIO_MIDIPlayBackStatePlaying state,
92620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    when the 'playback head' reaches the end
92720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    of media data or the playback stops due
92820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    to stop time set.*/
92920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_MIDIPlayBackStatePlaying,          /**< A MIDI resource is open and currently
93020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    playing. The MIDI engine is currently
93120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    processing MIDI events.*/
93220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_MIDIPlayBackStatePlayingPartially, /**< Best-effort playback due to SP-MIDI/DLS
93320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    resource constraints */
93420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_MIDIPlayBackStatePlayingSilently,  /**< Due to system resource constraints and
93520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    SP-MIDI content constraints, there is
93620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    no audible MIDI content during playback
93720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    currently. The situation may change if
93820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                                    resources are freed later.*/
93920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_MIDIPlayBackStateKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
94020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_MIDIPlayBackStateVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
94120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang  OMX_AUDIO_MIDIPlayBackStateMax = 0x7FFFFFFF
94220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_MIDIPLAYBACKSTATETYPE;
94320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
94420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
94520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MIDI status
94620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
94720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
94820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_MIDISTATUSTYPE {
94920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;              /**< size of the structure in bytes */
95020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
95120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;         /**< port that this structure applies to */
95220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U16 nNumTracks;         /**< Number of MIDI tracks in the file, read only field.
95320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     NOTE: May not return a meaningful value until the entire
95420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     file is parsed and buffered.  */
95520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nDuration;          /**< The length of the currently open MIDI resource
95620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     in milliseconds. NOTE: May not return a meaningful value
95720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     until the entire file is parsed and buffered.  */
95820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPosition;          /**< Current Position of the MIDI resource being played
95920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     in milliseconds */
96020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bVibra;            /**< Does Vibra track exist? NOTE: May not return a meaningful
96120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     value until the entire file is parsed and buffered. */
96220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nNumMetaEvents;     /**< Total number of MIDI Meta Events in the currently
96320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     open MIDI resource. NOTE: May not return a meaningful value
96420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     until the entire file is parsed and buffered.  */
96520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nNumActiveVoices;   /**< Number of active voices in the currently playing
96620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     MIDI resource. NOTE: May not return a meaningful value until
96720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     the entire file is parsed and buffered. */
96820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_MIDIPLAYBACKSTATETYPE eMIDIPlayBackState;  /**< MIDI playback state enumeration, read only field */
96920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_MIDISTATUSTYPE;
97020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
97120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
97220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MIDI Meta Event structure one per Meta Event.
97320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  MIDI Meta Events are like audio metadata, except that they are interspersed
97420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  with the MIDI content throughout the file and are not localized in the header.
97520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  As such, it is necessary to retrieve information about these Meta Events from
97620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  the engine, as it encounters these Meta Events within the MIDI content.
97720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  For example, SMF files can have up to 14 types of MIDI Meta Events (copyright,
97820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  author, default tempo, etc.) scattered throughout the file.
97920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  @ingroup midi
98020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
98120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE{
98220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;            /**< size of the structure in bytes */
98320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
98420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;       /**< port that this structure applies to */
98520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nIndex;           /**< Index of Meta Event */
98620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U8 nMetaEventType;    /**< Meta Event Type, 7bits (i.e. 0 - 127) */
98720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMetaEventSize;   /**< size of the Meta Event in bytes */
98820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nTrack;           /**< track number for the meta event */
98920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPosition;        /**< Position of the meta-event in milliseconds */
99020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_MIDIMETAEVENTTYPE;
99120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
99220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
99320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** MIDI Meta Event Data structure - one per Meta Event.
99420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup midi
99520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
99620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_MIDIMETAEVENTDATATYPE{
99720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;            /**< size of the structure in bytes */
99820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion; /**< OMX specification version information */
99920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;       /**< port that this structure applies to */
100020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nIndex;           /**< Index of Meta Event */
100120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nMetaEventSize;   /**< size of the Meta Event in bytes */
100220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U8 nData[1];          /**< array of one or more bytes of meta data
100320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                   as indicated by the nMetaEventSize field */
100420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG__MIDIMETAEVENTDATATYPE;
100520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
100620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
100720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Audio Volume adjustment for a port */
100820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_VOLUMETYPE {
100920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;              /**< size of the structure in bytes */
101020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
101120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;         /**< Port index indicating which port to
101220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     set.  Select the input port to set
101320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     just that port's volume.  Select the
101420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     output port to adjust the master
101520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     volume. */
101620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bLinear;           /**< Is the volume to be set in linear (0.100)
101720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     or logarithmic scale (mB) */
101820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BS32 sVolume;           /**< Volume linear setting in the 0..100 range, OR
101920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     Volume logarithmic setting for this port.  The values
102020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     for volume are in mB (millibels = 1/100 dB) relative
102120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     to a gain of 1 (e.g. the output is the same as the
102220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     input level).  Values are in mB from nMax
102320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     (maximum volume) to nMin mB (typically negative).
102420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     Since the volume is "voltage"
102520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     and not a "power", it takes a setting of
102620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     -600 mB to decrease the volume by 1/2.  If
102720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     a component cannot accurately set the
102820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     volume to the requested value, it must
102920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     set the volume to the closest value BELOW
103020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     the requested value.  When getting the
103120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     volume setting, the current actual volume
103220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     must be returned. */
103320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_VOLUMETYPE;
103420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
103520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
103620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Audio Volume adjustment for a channel */
103720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE {
103820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;              /**< size of the structure in bytes */
103920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
104020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;         /**< Port index indicating which port to
104120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     set.  Select the input port to set
104220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     just that port's volume.  Select the
104320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     output port to adjust the master
104420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     volume. */
104520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannel;           /**< channel to select from 0 to N-1,
104620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     using OMX_ALL to apply volume settings
104720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     to all channels */
104820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bLinear;           /**< Is the volume to be set in linear (0.100) or
104920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     logarithmic scale (mB) */
105020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BS32 sVolume;           /**< Volume linear setting in the 0..100 range, OR
105120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     Volume logarithmic setting for this port.
105220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     The values for volume are in mB
105320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     (millibels = 1/100 dB) relative to a gain
105420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     of 1 (e.g. the output is the same as the
105520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     input level).  Values are in mB from nMax
105620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     (maximum volume) to nMin mB (typically negative).
105720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     Since the volume is "voltage"
105820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     and not a "power", it takes a setting of
105920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     -600 mB to decrease the volume by 1/2.  If
106020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     a component cannot accurately set the
106120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     volume to the requested value, it must
106220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     set the volume to the closest value BELOW
106320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     the requested value.  When getting the
106420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     volume setting, the current actual volume
106520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     must be returned. */
106620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bIsMIDI;           /**< TRUE if nChannel refers to a MIDI channel,
106720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     FALSE otherwise */
106820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_CHANNELVOLUMETYPE;
106920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
107020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
107120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Audio balance setting */
107220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_BALANCETYPE {
107320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;              /**< size of the structure in bytes */
107420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
107520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;         /**< Port index indicating which port to
107620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     set.  Select the input port to set
107720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     just that port's balance.  Select the
107820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     output port to adjust the master
107920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     balance. */
108020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_S32 nBalance;           /**< balance setting for this port
108120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     (-100 to 100, where -100 indicates
108220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     all left, and no right */
108320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_BALANCETYPE;
108420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
108520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
108620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Audio Port mute */
108720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_MUTETYPE {
108820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;              /**< size of the structure in bytes */
108920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
109020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;         /**< Port index indicating which port to
109120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     set.  Select the input port to set
109220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     just that port's mute.  Select the
109320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     output port to adjust the master
109420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     mute. */
109520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bMute;             /**< Mute setting for this port */
109620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_MUTETYPE;
109720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
109820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
109920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Audio Channel mute */
110020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_CHANNELMUTETYPE {
110120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;              /**< size of the structure in bytes */
110220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;   /**< OMX specification version information */
110320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;         /**< port that this structure applies to */
110420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nChannel;           /**< channel to select from 0 to N-1,
110520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     using OMX_ALL to apply mute settings
110620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     to all channels */
110720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bMute;             /**< Mute setting for this channel */
110820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bIsMIDI;           /**< TRUE if nChannel refers to a MIDI channel,
110920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     FALSE otherwise */
111020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_CHANNELMUTETYPE;
111120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
111220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
111320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
111420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Enable / Disable for loudness control, which boosts bass and to a
111520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  smaller extent high end frequencies to compensate for hearing
111620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  ability at the extreme ends of the audio spectrum
111720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
111820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_LOUDNESSTYPE {
111920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;             /**< size of the structure in bytes */
112020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
112120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;        /**< port that this structure applies to */
112220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bLoudness;        /**< Enable/disable for loudness */
112320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_LOUDNESSTYPE;
112420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
112520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
112620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Enable / Disable for bass, which controls low frequencies
112720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
112820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_BASSTYPE {
112920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;             /**< size of the structure in bytes */
113020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
113120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;        /**< port that this structure applies to */
113220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bEnable;          /**< Enable/disable for bass control */
113320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_S32 nBass;             /**< bass setting for the port, as a
113420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    continuous value from -100 to 100
113520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    (0 means no change in bass level)*/
113620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_BASSTYPE;
113720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
113820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
113920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Enable / Disable for treble, which controls high frequencies tones
114020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
114120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_TREBLETYPE {
114220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;             /**< size of the structure in bytes */
114320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
114420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;        /**< port that this structure applies to */
114520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bEnable;          /**< Enable/disable for treble control */
114620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_S32  nTreble;          /**< treble setting for the port, as a
114720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    continuous value from -100 to 100
114820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    (0 means no change in treble level) */
114920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_TREBLETYPE;
115020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
115120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
115220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** An equalizer is typically used for two reasons: to compensate for an
115320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  sub-optimal frequency response of a system to make it sound more natural
115420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  or to create intentionally some unnatural coloring to the sound to create
115520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  an effect.
115620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  @ingroup effects
115720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
115820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_EQUALIZERTYPE {
115920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;             /**< size of the structure in bytes */
116020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
116120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;        /**< port that this structure applies to */
116220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bEnable;          /**< Enable/disable for equalizer */
116320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sBandIndex;       /**< Band number to be set.  Upper Limit is
116420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    N-1, where N is the number of bands, lower limit is 0 */
116520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sCenterFreq;      /**< Center frequecies in Hz.  This is a
116620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    read only element and is used to determine
116720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    the lower, center and upper frequency of
116820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    this band.  */
116920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BS32 sBandLevel;       /**< band level in millibels */
117020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_EQUALIZERTYPE;
117120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
117220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
117320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Stereo widening mode type
117420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup effects
117520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
117620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_STEREOWIDENINGTYPE {
117720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_StereoWideningHeadphones,    /**< Stereo widening for loudspeakers */
117820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_StereoWideningLoudspeakers,  /**< Stereo widening for closely spaced loudspeakers */
117920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_StereoWideningKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
118020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_StereoWideningVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
118120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_StereoWideningMax = 0x7FFFFFFF
118220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_STEREOWIDENINGTYPE;
118320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
118420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
118520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Control for stereo widening, which is a special 2-channel
118620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  case of the audio virtualizer effect. For example, for 5.1-channel
118720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  output, it translates to virtual surround sound.
118820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup effects
118920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
119020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE {
119120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;             /**< size of the structure in bytes */
119220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
119320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;        /**< port that this structure applies to */
119420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bEnable;          /**< Enable/disable for stereo widening control */
119520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_STEREOWIDENINGTYPE eWideningType; /**< Stereo widening algorithm type */
119620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32  nStereoWidening;  /**< stereo widening setting for the port,
119720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    as a continuous value from 0 to 100  */
119820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_STEREOWIDENINGTYPE;
119920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
120020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
120120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** The chorus effect (or ``choralizer'') is any signal processor which makes
120220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  one sound source (such as a voice) sound like many such sources singing
120320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  (or playing) in unison. Since performance in unison is never exact, chorus
120420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  effects simulate this by making independently modified copies of the input
120520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  signal. Modifications may include (1) delay, (2) frequency shift, and
120620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  (3) amplitude modulation.
120720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup effects
120820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
120920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_CHORUSTYPE {
121020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;             /**< size of the structure in bytes */
121120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
121220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;        /**< port that this structure applies to */
121320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bEnable;          /**< Enable/disable for chorus */
121420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sDelay;           /**< average delay in milliseconds */
121520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sModulationRate;  /**< rate of modulation in millihertz */
121620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nModulationDepth;  /**< depth of modulation as a percentage of
121720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                    delay (i.e. 0 to 100) */
121820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 nFeedback;        /**< Feedback from chorus output to input in percentage */
121920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_CHORUSTYPE;
122020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
122120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
122220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Reverberation is part of the reflected sound that follows the early
122320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  reflections. In a typical room, this consists of a dense succession of
122420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  echoes whose energy decays exponentially. The reverberation effect structure
122520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  as defined here includes both (early) reflections as well as (late) reverberations.
122620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup effects
122720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
122820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_REVERBERATIONTYPE {
122920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;                /**< size of the structure in bytes */
123020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;     /**< OMX specification version information */
123120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;           /**< port that this structure applies to */
123220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bEnable;             /**< Enable/disable for reverberation control */
123320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BS32 sRoomLevel;          /**< Intensity level for the whole room effect
123420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       (i.e. both early reflections and late
123520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       reverberation) in millibels */
123620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BS32 sRoomHighFreqLevel;  /**< Attenuation at high frequencies
123720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       relative to the intensity at low
123820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       frequencies in millibels */
123920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BS32 sReflectionsLevel;   /**< Intensity level of early reflections
124020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       (relative to room value), in millibels */
124120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sReflectionsDelay;   /**< Delay time of the first reflection relative
124220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to the direct path, in milliseconds */
124320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BS32 sReverbLevel;        /**< Intensity level of late reverberation
124420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       relative to room level, in millibels */
124520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sReverbDelay;        /**< Time delay from the first early reflection
124620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to the beginning of the late reverberation
124720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       section, in milliseconds */
124820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sDecayTime;          /**< Late reverberation decay time at low
124920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       frequencies, in milliseconds */
125020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 nDecayHighFreqRatio; /**< Ratio of high frequency decay time relative
125120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       to low frequency decay time in percent  */
125220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nDensity;             /**< Modal density in the late reverberation decay,
125320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       in percent (i.e. 0 - 100) */
125420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nDiffusion;           /**< Echo density in the late reverberation decay,
125520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       in percent (i.e. 0 - 100) */
125620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BU32 sReferenceHighFreq;  /**< Reference high frequency in Hertz. This is
125720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       the frequency used as the reference for all
125820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                       the high-frequency settings above */
125920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
126020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_REVERBERATIONTYPE;
126120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
126220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
126320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Possible settings for the Echo Cancelation structure to use
126420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup effects
126520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
126620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef enum OMX_AUDIO_ECHOCANTYPE {
126720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_EchoCanOff = 0,    /**< Echo Cancellation is disabled */
126820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_EchoCanNormal,     /**< Echo Cancellation normal operation -
126920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     echo from plastics and face */
127020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_EchoCanHFree,      /**< Echo Cancellation optimized for
127120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     Hands Free operation */
127220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_EchoCanCarKit,    /**< Echo Cancellation optimized for
127320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang                                     Car Kit (longer echo) */
127420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_EchoCanKhronosExtensions = 0x6F000000, /**< Reserved region for introducing Khronos Standard Extensions */
127520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_EchoCanVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
127620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang   OMX_AUDIO_EchoCanMax = 0x7FFFFFFF
127720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_ECHOCANTYPE;
127820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
127920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
128020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Enable / Disable for echo cancelation, which removes undesired echo's
128120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang *  from the audio
128220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup effects
128320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
128420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE {
128520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;             /**< size of the structure in bytes */
128620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
128720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;        /**< port that this structure applies to */
128820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_AUDIO_ECHOCANTYPE eEchoCancelation; /**< Echo cancelation settings */
128920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_ECHOCANCELATIONTYPE;
129020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
129120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
129220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** Enable / Disable for noise reduction, which undesired noise from
129320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * the audio
129420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang * @ingroup effects
129520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang */
129620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Changtypedef struct OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE {
129720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nSize;             /**< size of the structure in bytes */
129820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_VERSIONTYPE nVersion;  /**< OMX specification version information */
129920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_U32 nPortIndex;        /**< port that this structure applies to */
130020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang    OMX_BOOL bNoiseReduction;  /**< Enable/disable for noise reduction */
130120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang} OMX_AUDIO_CONFIG_NOISEREDUCTIONTYPE;
130220d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
130320d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/** @} */
130420d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
130520d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#ifdef __cplusplus
130620d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang}
130720d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif /* __cplusplus */
130820d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
130920d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang#endif
131020d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang/* File EOF */
131120d3e6e3118a6e19627296e9247e948d54ec0fb8Jiho Chang
1312