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