1/*--------------------------------------------------------------------------
2Copyright (c) 2009, 2011, The Linux Foundation. All rights reserved.
3
4Redistribution and use in source and binary forms, with or without
5modification, are permitted provided that the following conditions are met:
6    * Redistributions of source code must retain the above copyright
7      notice, this list of conditions and the following disclaimer.
8    * Redistributions in binary form must reproduce the above copyright
9      notice, this list of conditions and the following disclaimer in the
10      documentation and/or other materials provided with the distribution.
11    * Neither the name of The Linux Foundation nor
12      the names of its contributors may be used to endorse or promote
13      products derived from this software without specific prior written
14      permission.
15
16THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
17AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19NON-INFRINGEMENT ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
23OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
24WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
25OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
26ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27--------------------------------------------------------------------------*/
28/*============================================================================
29                            O p e n M A X   w r a p p e r s
30                             O p e n  M A X   C o r e
31
32*//** @file QOMX_AudioExtensions.h
33  This module contains the extensions for Audio
34
35*//*========================================================================*/
36
37#ifndef __H_QOMX_AUDIOEXTENSIONS_H__
38#define __H_QOMX_AUDIOEXTENSIONS_H__
39
40/*========================================================================
41
42                     INCLUDE FILES FOR MODULE
43
44========================================================================== */
45#include <OMX_Audio.h>
46
47/*========================================================================
48
49                      DEFINITIONS AND DECLARATIONS
50
51========================================================================== */
52
53#if defined( __cplusplus )
54extern "C"
55{
56#endif /* end of macro __cplusplus */
57
58/* Audio extension strings */
59#define OMX_QCOM_INDEX_PARAM_AMRWBPLUS       "OMX.Qualcomm.index.audio.amrwbplus"
60#define OMX_QCOM_INDEX_PARAM_WMA10PRO        "OMX.Qualcomm.index.audio.wma10pro"
61#define OMX_QCOM_INDEX_PARAM_SESSIONID       "OMX.Qualcomm.index.audio.sessionId"
62#define OMX_QCOM_INDEX_PARAM_VOICERECORDTYPE "OMX.Qualcomm.index.audio.VoiceRecord"
63#define OMX_QCOM_INDEX_PARAM_AC3TYPE	     "OMX.Qualcomm.index.audio.ac3"
64#define OMX_QCOM_INDEX_PARAM_AC3PP	     "OMX.Qualcomm.index.audio.postproc.ac3"
65#define OMX_QCOM_INDEX_PARAM_DAK_BUNDLE      "OMX.Qualcomm.index.audio.dakbundle"
66#define OMX_QCOM_INDEX_PARAM_DAK_M2S         "OMX.Qualcomm.index.audio.dak_m2s"
67#define OMX_QCOM_INDEX_PARAM_DAK_SSE         "OMX.Qualcomm.index.audio.dak_sse"
68#define OMX_QCOM_INDEX_PARAM_DAK_SLC         "OMX.Qualcomm.index.audio.dak_slc"
69#define OMX_QCOM_INDEX_PARAM_DAK_VOL         "OMX.Qualcomm.index.audio.dak_vol"
70#define OMX_QCOM_INDEX_PARAM_DAK_NB          "OMX.Qualcomm.index.audio.dak_nb"
71#define OMX_QCOM_INDEX_PARAM_DAK_GEQ         "OMX.Qualcomm.index.audio.dak_geq"
72#define OMX_QCOM_INDEX_PARAM_DAK_MSR         "OMX.Qualcomm.index.audio.dak_msr"
73#define OMX_QCOM_INDEX_PARAM_DAK_HFE         "OMX.Qualcomm.index.audio.dak_hfe"
74#define OMX_QCOM_INDEX_PARAM_DAK_FADE        "OMX.Qualcomm.index.audio.dak_fade"
75#define OMX_QCOM_INDEX_PARAM_DAK_SEQ         "OMX.Qualcomm.index.audio.dak_seq"
76#define OMX_QCOM_INDEX_CONFIG_DUALMONO       "OMX.Qualcomm.index.audio.dualmono"
77
78typedef enum QOMX_AUDIO_AMRBANDMODETYPE {
79    QOMX_AUDIO_AMRBandModeWB9              = 0x7F000001,/**< AMRWB Mode 9 = SID*/
80    QOMX_AUDIO_AMRBandModeWB10             = 0x7F000002,/**< AMRWB Mode 10 = 13600 bps */
81    QOMX_AUDIO_AMRBandModeWB11             = 0x7F000003,/**< AMRWB Mode 11 = 18000 bps */
82    QOMX_AUDIO_AMRBandModeWB12             = 0x7F000004,/**< AMRWB Mode 12 = 24000 bps */
83    QOMX_AUDIO_AMRBandModeWB13             = 0x7F000005,/**< AMRWB Mode 13 = 24000 bps */
84    QOMX_AUDIO_AMRBandModeWB14             = 0x7F000006,/**< AMRWB Mode 14 = FRAME_ERASE*/
85    QOMX_AUDIO_AMRBandModeWB15             = 0x7F000007,/**< AMRWB Mode 15 = NO_DATA */
86}QOMX_AUDIO_AMRBANDMODETYPE;
87
88typedef enum QOMX_AUDIO_CODINGTYPE {
89   QOMX_AUDIO_CodingVendorStartUnused = 0x7F000000, /**< Reserved region for introducing Vendor Extensions */
90   QOMX_AUDIO_CodingEVRCB  = 0x7F000001,
91   QOMX_AUDIO_CodingEVRCWB = 0x7F000002,
92   QOMX_AUDIO_CodingFLAC   = 0x7F000003,
93   QOMX_AUDIO_CodingMax = 0x7FFFFFFF
94}QOMX_AUDIO_CODINGTYPE;
95
96
97/**
98 * AMR WB PLUS type
99 *
100 *  STRUCT MEMBERS:
101 *  nSize           : Size of the structure in bytes
102 *  nVersion        : OMX specification version information
103 *  nPortIndex      : Port that this structure applies to
104 *  nChannels       : Number of channels
105 *  nBitRate        : Bit rate read only field
106 *  nSampleRate     : Sampling frequency for the clip(16/24/32/48KHz)
107 *  eAMRBandMode    : AMR Band Mode enumeration
108 *  eAMRDTXMode     : AMR DTX Mode enumeration
109 *  eAMRFrameFormat : AMR frame format enumeration
110 */
111
112typedef struct QOMX_AUDIO_PARAM_AMRWBPLUSTYPE {
113    OMX_U32 nSize;
114    OMX_VERSIONTYPE nVersion;
115    OMX_U32 nPortIndex;
116    OMX_U32 nChannels;
117    OMX_U32 nBitRate;
118    OMX_U32 nSampleRate;
119    OMX_AUDIO_AMRBANDMODETYPE   eAMRBandMode;
120    OMX_AUDIO_AMRDTXMODETYPE     eAMRDTXMode;
121    OMX_AUDIO_AMRFRAMEFORMATTYPE eAMRFrameFormat;
122} QOMX_AUDIO_PARAM_AMRWBPLUSTYPE;
123
124typedef enum QOMX_AUDIO_WMAFORMATTYPE {
125    QOMX_AUDIO_WMAFormat10Pro = 0x7F000001, /**< Windows Media Audio format 10*/
126} QOMX_AUDIO_WMAFORMATTYPE;
127
128/**
129 * WMA 10 PRO type
130 *
131 *  STRUCT MEMBERS:
132 *  nSize              : Size of the structure in bytes
133 *  nVersion           : OMX specification version information
134 *  nPortIndex         : Port that this structure applies to
135 *  nChannels          : Number of channels
136 *  nBitRate           : Bit rate read only field
137 *  eFormat            : Version of WMA stream / data
138 *  eProfile           : Profile of WMA stream / data
139 *  nSamplingRate      : Sampling rate of the source data
140 *  nBlockAlign        : block alignment, or block size, in bytes of the audio codec
141 *  nEncodeOptions     : WMA Type-specific data
142 *  nSuperBlockAlign   : WMA Type-specific data
143 *  validBitsPerSample : encoded stream (24-bit or 16-bit)
144 *  formatTag          : codec ID(0x162 or 0x166)
145 *  advancedEncodeOpt  : bit packed words indicating the features supported for LBR bitstream
146 *  advancedEncodeOpt2 : bit packed words indicating the features supported for LBR bitstream
147 */
148typedef struct QOMX_AUDIO_PARAM_WMA10PROTYPE {
149    OMX_U32 nSize;
150    OMX_VERSIONTYPE nVersion;
151    OMX_U32 nPortIndex;
152    OMX_U16 nChannels;
153    OMX_U32 nBitRate;
154    QOMX_AUDIO_WMAFORMATTYPE eFormat;
155    OMX_AUDIO_WMAPROFILETYPE eProfile;
156    OMX_U32 nSamplingRate;
157    OMX_U16 nBlockAlign;
158    OMX_U16 nEncodeOptions;
159    OMX_U32 nSuperBlockAlign;
160    OMX_U32 validBitsPerSample;
161    OMX_U32 formatTag;
162    OMX_U32 advancedEncodeOpt;
163    OMX_U32 advancedEncodeOpt2;
164    OMX_U16 nVirtualPktSize;
165} QOMX_AUDIO_PARAM_WMA10PROTYPE;
166
167
168typedef enum OMX_AUDIO_AC3FORMATTYPE {
169   omx_audio_ac3       = 0x7f000001, /**< ac-3 */
170   omx_audio_eac3      = 0x7f000002  /**< eac-3 */
171} OMX_AUDIO_AC3FORMATTYPE;
172
173typedef enum OMX_AUDIO_AC3_CHANNEL_CONFIG
174{
175   OMX_AUDIO_AC3_CHANNEL_CONFIG_RSVD = 0,
176   OMX_AUDIO_AC3_CHANNEL_CONFIG_1_0,
177   OMX_AUDIO_AC3_CHANNEL_CONFIG_2_0,
178   OMX_AUDIO_AC3_CHANNEL_CONFIG_3_0,
179   OMX_AUDIO_AC3_CHANNEL_CONFIG_2_1,
180   OMX_AUDIO_AC3_CHANNEL_CONFIG_3_1,
181   OMX_AUDIO_AC3_CHANNEL_CONFIG_2_2,
182   OMX_AUDIO_AC3_CHANNEL_CONFIG_3_2,
183   OMX_AUDIO_AC3_CHANNEL_CONFIG_3_0_1,
184   OMX_AUDIO_AC3_CHANNEL_CONFIG_2_2_1,
185   OMX_AUDIO_AC3_CHANNEL_CONFIG_3_2_1,
186   OMX_AUDIO_AC3_CHANNEL_CONFIG_3_0_2,
187   OMX_AUDIO_AC3_CHANNEL_CONFIG_2_2_2,
188   OMX_AUDIO_AC3_CHANNEL_CONFIG_3_2_2,
189   OMX_AUDIO_AC3_CHANNEL_CONFIG_DEFAULT = 0xFFFF
190} OMX_AUDIO_AC3_CHANNEL_CONFIG;
191
192/**
193 * AC-3 type
194 *
195 *  STRUCT MEMBERS:
196 *  nSize               : Size of the structure in bytes
197 *  nVersion            : OMX specification version information
198 *  nPortIndex          : Port that this structure applies to
199 *  nChannels           : Number of channels
200 *  nBitRate            : Bitrate
201 *  nSamplingRate       : Sampling rate, 32K, 44.1K, 48K only supported
202 *  eFormat             : AC-3 or EAC-3
203 *  eChannelConfig      : Channel configuration
204 *  nProgramID          : Indication of ProgramID, 0-7
205 *  bCompressionOn      : Flag to enable Compression
206 *  bLfeOn              : Flag for LFE on/off
207 *  bDelaySurroundChannels : Flag to put delay on surround channels
208 *
209 */
210typedef struct QOMX_AUDIO_PARAM_AC3TYPE {
211   OMX_U32 nSize;
212   OMX_VERSIONTYPE nVersion;
213   OMX_U32 nPortIndex;
214   OMX_U16 nChannels;
215   OMX_U32 nBitRate;
216   OMX_U32 nSamplingRate;
217   OMX_AUDIO_AC3FORMATTYPE eFormat;
218   OMX_AUDIO_AC3_CHANNEL_CONFIG eChannelConfig;
219   OMX_U8 nProgramID;
220   OMX_BOOL bCompressionOn;
221   OMX_BOOL bLfeOn;
222   OMX_BOOL bDelaySurroundChannels;
223} QOMX_AUDIO_PARAM_AC3TYPE;
224
225typedef enum OMX_AUDIO_AC3_CHANNEL_ROUTING
226{
227   OMX_AUDIO_AC3_CHANNEL_LEFT,
228   OMX_AUDIO_AC3_CHANNEL_CENTER,
229   OMX_AUDIO_AC3_CHANNEL_RIGHT,
230   OMX_AUDIO_AC3_CHANNEL_LEFT_SURROUND,
231   OMX_AUDIO_AC3_CHANNEL_RIGHT_SURROUND,
232   OMX_AUDIO_AC3_CHANNEL_SURROUND,
233   OMX_AUDIO_AC3_CHANNEL_EXTENSION_1,
234   OMX_AUDIO_AC3_CHANNEL_EXTENSION_2,
235   OMX_AUDIO_AC3_CHANNEL_DEFAULT = 0xFFFF
236} OMX_AUDIO_AC3_CHANNEL_ROUTING;
237
238typedef enum OMX_AUDIO_AC3_COMPRESSION_MODE
239{
240   OMX_AUDIO_AC3_COMPRESSION_MODE_ANALOG_DIALNORM,
241   OMX_AUDIO_AC3_COMPRESSION_MODE_DIGITAL_DIALNORM,
242   OMX_AUDIO_AC3_COMPRESSION_MODE_LINE_OUT,
243   OMX_AUDIO_AC3_COMPRESSION_MODE_RF_REMOD
244} OMX_AUDIO_AC3_COMPRESSION_MODE;
245
246typedef enum OMX_AUDIO_AC3_STEREO_MODE
247{
248   OMX_AUDIO_AC3_STEREO_MODE_AUTO_DETECT,
249   OMX_AUDIO_AC3_STEREO_MODE_LT_RT,
250   OMX_AUDIO_AC3_STEREO_MODE_LO_RO,
251   OMX_AUDIO_AC3_STEREO_MODE_DEFAULT = 0xFFFF
252} OMX_AUDIO_AC3_STEREO_MODE;
253
254typedef enum OMX_AUDIO_AC3_DUAL_MONO_MODE
255{
256   OMX_AUDIO_AC3_DUAL_MONO_MODE_STEREO,
257   OMX_AUDIO_AC3_DUAL_MONO_MODE_LEFT_MONO,
258   OMX_AUDIO_AC3_DUAL_MONO_MODE_RIGHT_MONO,
259   OMX_AUDIO_AC3_DUAL_MONO_MODE_MIXED_MONO,
260   OMX_AUDIO_AC3_DUAL_MONO_MODE_DEFAULT = 0xFFFF
261} OMX_AUDIO_AC3_DUAL_MONO_MODE;
262
263typedef enum OMX_AUDIO_AC3_KARAOKE_MODE
264{
265   OMX_AUDIO_AC3_KARAOKE_MODE_NO_VOCAL,
266   OMX_AUDIO_AC3_KARAOKE_MODE_LEFT_VOCAL,
267   OMX_AUDIO_AC3_KARAOKE_MODE_RIGHT_VOCAL,
268   OMX_AUDIO_AC3_KARAOKE_MODE_BOTH_VOCAL,
269   OMX_AUDIO_AC3_KARAOKE_MODE_DEFAULT = 0xFFFF
270} OMX_AUDIO_AC3_KARAOKE_MODE;
271
272
273typedef struct QOMX_AUDIO_PARAM_AC3PP
274{
275   OMX_U32 nSize;
276   OMX_VERSIONTYPE nVersion;
277   OMX_U32 nPortIndex;
278   OMX_AUDIO_AC3_CHANNEL_ROUTING eChannelRouting[8];
279   OMX_AUDIO_AC3_COMPRESSION_MODE eCompressionMode;
280   OMX_AUDIO_AC3_STEREO_MODE eStereoMode;
281   OMX_AUDIO_AC3_DUAL_MONO_MODE eDualMonoMode;
282   OMX_U32 usPcmScale;
283   OMX_U32 usDynamicScaleBoost;
284   OMX_U32 usDynamicScaleCut;
285   OMX_AUDIO_AC3_KARAOKE_MODE eKaraokeMode;
286} QOMX_AUDIO_PARAM_AC3PP;
287
288
289/**
290 * Stream info data
291 *
292 *  STRUCT MEMBERS:
293 *  sessionId :  session Id for alsa to route data
294 */
295typedef struct QOMX_AUDIO_STREAM_INFO_DATA {
296    OMX_U8  sessionId;
297} QOMX_AUDIO_STREAM_INFO_DATA;
298
299
300/**
301 * Record Path
302 *
303 * STRUCT MEMBERS:
304 * recPath : Record Path for encoding
305 */
306typedef enum{
307
308QOMX_AUDIO_VOICE_TX,
309QOMX_AUDIO_VOICE_RX,
310QOMX_AUDIO_VOICE_MIXED,
311
312} QOMX_AUDIO_VOICERECORDMODETYPE;
313typedef struct QOMX_AUDIO_CONFIG_VOICERECORDTYPE {
314
315OMX_U32                            nSize;
316OMX_VERSIONTYPE                    nVersion;
317QOMX_AUDIO_VOICERECORDMODETYPE     eVoiceRecordMode;
318}  QOMX_AUDIO_CONFIG_VOICERECORDTYPE;
319
320/* Enum for mapping dual-mono contents to left and right channels */
321typedef enum OMX_AUDIO_DUAL_MONO_CHANNEL_CONFIG {
322 OMX_AUDIO_DUAL_MONO_MODE_FL_FR,/* 1st SCE to left & right */
323 OMX_AUDIO_DUAL_MONO_MODE_SL_SR,/* 2nd SCE to left & right */
324 OMX_AUDIO_DUAL_MONO_MODE_SL_FR,/* 2nd SCE to left, 1st SCE to right */
325 OMX_AUDIO_DUAL_MONO_MODE_FL_SR,/* 1st SCE to left, 2nd SCE to right default */
326 OMX_AUDIO_DUAL_MONO_MODE_DEFAULT = OMX_AUDIO_DUAL_MONO_MODE_FL_SR,
327 OMX_AUDIO_DUAL_MONO_MODE_INVALID = -1
328} OMX_AUDIO_DUAL_MONO_CHANNEL_CONFIG;
329
330/************************************/
331/* DAK */
332/*************************************/
333
334/** this is the list of custom vendor index */
335typedef enum OMX_INDEX_DAK_TYPE {
336	OMX_IndexConfigDAK_BUNDLE = OMX_IndexVendorStartUnused /*0x7F000000*/,	/**< reference: OMX_DAK_CONFIG_BUNDLETYPE */
337	OMX_IndexConfigDAK_M2S,	/**< reference: OMX_DAK_CONFIG_M2STYPE */
338	OMX_IndexConfigDAK_SSE,	/**< reference: OMX_DAK_CONFIG_SSETYPE */
339	OMX_IndexConfigDAK_SLC,	/**< reference: OMX_DAK_CONFIG_SLCTYPE */
340	OMX_IndexConfigDAK_VOL,	/**< reference: OMX_DAK_CONFIG_VOLTYPE */
341	OMX_IndexConfigDAK_NB,	/**< reference: OMX_DAK_CONFIG_NBTYPE */
342	OMX_IndexConfigDAK_GEQ,	/**< reference: OMX_DAK_CONFIG_GEQTYPE */
343	OMX_IndexConfigDAK_MSR, /**< reference: OMX_DAK_CONFIG_MSRTYPE */
344	OMX_IndexConfigDAK_HFE,	/**< reference: OMX_DAK_CONFIG_HFETYPE */
345	OMX_IndexConfigDAK_FADE,/**< reference: OMX_DAK_CONFIG_FADETYPE */
346	OMX_IndexConfigDAK_SEQ,	/**< reference: OMX_DAK_CONFIG_SEQTYPE */
347
348} OMX_INDEX_DAK_TYPE;
349
350
351/** Dolby Audio Kernel TDAS bundle */
352typedef struct OMX_DAK_CONFIG_BUNDLETYPE {
353    	OMX_U32 nSize;              	/**< size of the structure in bytes */
354	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
355	OMX_U32 nDAK_Version;		/**< Dolby Audio Kernel version information */
356	OMX_U32 nDAK_Revision;		/**< Dolby Audio Kernel revision information */
357	OMX_U8 nLfeMixLevel;		/**< level at which the LFE channel is mixed into the output audio */
358	OMX_U8 nSampleRateIndex;	/**< Output sample rate */
359	OMX_U8 nInChans;		/**< Channel format of input audio */
360	OMX_U8 nInMatrix;		/**< L/R mixing specification for stereo audio input */
361	OMX_U8 nBypass;			/**< Audio Processing bypass */
362	OMX_U8 nRateMultipier;		/**< Sample-rate multiplier (output with respect to input) */
363	OMX_U8 nInChanFormat;		/**< Input/Output channel format */
364	OMX_U8 nMsrMaxProfile;		/**< Maximum number of virtual rendering channels in Mobile Surround */
365	OMX_BOOL bPortablemodeEnable;	/**< Enable or disable Pulse Portable Mode */
366	OMX_S16 nPotablemodeGain;	/**< Send the Portable Mode gain value from the Pulse decoder */
367	OMX_U8 nORL;			/**< Device specific target signal level (output reference level) */
368	OMX_BOOL bPulsedownmixEnable;	/**< Enable the Pulse Downmix compensation */
369	OMX_S8 nPulsedownmixAtten;	/**< Attenuation value that Pulse is currently applying */
370	OMX_U8 nOutChans;		/**< Channel format of output audio */
371
372} OMX_DAK_CONFIG_BUNDLETYPE;
373
374/** Dolby Audio Kernel Mono-to-Stereo Creator */
375typedef struct OMX_DAK_CONFIG_M2STYPE {
376	OMX_U32 nSize;			/**< size of the structure in bytes */
377	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
378	OMX_BOOL bEnable;		/**< Mono-to-Stereo Creator enable */
379	OMX_BOOL bDetector;		/**< Stereo detector status */
380} OMX_DAK_CONFIG_M2STYPE;
381
382/** Dolby Audio Kernel Sound Space Expander */
383typedef struct OMX_DAK_CONFIG_SSETYPE {
384	OMX_U32 nSize;			/**< size of the structure in bytes */
385	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
386	OMX_BOOL bEnable;		/**< Sound Space Expander enable */
387	OMX_U8 nWidth;			/**< Width of expansion effect */
388	OMX_U8 nSpkMode;		/**< Speaker Mode */
389} OMX_DAK_CONFIG_SSETYPE;
390
391/** Dolby Audio Kernel Sound Level Controller */
392typedef struct OMX_DAK_CONFIG_SLCTYPE {
393	OMX_U32 nSize;			/**< size of the structure in bytes */
394	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
395	OMX_BOOL bEnable;		/**< Sound Level Controller enable */
396	OMX_U8 nLevel;			/**< Source audio RMS level */
397	OMX_U8 nDepth;			/**< Depth of effect */
398} OMX_DAK_CONFIG_SLCTYPE;
399
400/** Dolby Audio Kernel Volume */
401typedef struct OMX_DAK_CONFIG_VOLTYPE {
402	OMX_U32 nSize;			/**< size of the structure in bytes */
403	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
404	OMX_BOOL bEnable;		/**< Volume enable */
405	OMX_U8 nGainType;		/**< Linear/Logarithmic audio scaling */
406	OMX_U8 nInternalGain;		/**< Audio volume scale */
407	OMX_U8 nExternalGain;		/**< Audio volume scale applied by external volume control */
408	OMX_S8 nBalance;		/**< L/R panning for output audio */
409	OMX_BOOL bMute;			/**< Audio Mute */
410} OMX_DAK_CONFIG_VOLTYPE;
411
412/** Dolby Audio Kernel Natural Bass */
413typedef struct OMX_DAK_CONFIG_NBTYPE {
414	OMX_U32 nSize;			/**< size of the structure in bytes */
415	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
416	OMX_BOOL bEnable;		/**< Natural Bass enable */
417	OMX_U8 nCutoff;			/**< Speakers/headphones lower cutoff frequency */
418	OMX_U8 nBoost;			/**< Strength of effect */
419	OMX_U8 nLevel;			/**< Maximum output level capability of speakers/headphones */
420} OMX_DAK_CONFIG_NBTYPE;
421
422/** Dolby Audio Kernel Graphic EQ */
423typedef struct OMX_DAK_CONFIG_GEQTYPE {
424	OMX_U32 nSize;			/**< size of the structure in bytes */
425	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
426	OMX_BOOL bEnable;		/**< Graphic EQ enable */
427	OMX_U8 nNbands;			/**< Number of frequency bands */
428	OMX_S8 nPreamp;			/**< Global attenuation to apply prior to band level adjustment */
429	OMX_U8 nMaxboost;		/**< Maximum absolute boost with respect to the source audio */
430	OMX_S8 nBand1;			/**< Boost/cut for 1st frequency band */
431	OMX_S8 nBand2;			/**< Boost/cut for 2nd frequency band */
432	OMX_S8 nBand3;			/**< Boost/cut for 3rd frequency band */
433	OMX_S8 nBand4;			/**< Boost/cut for 4th frequency band */
434	OMX_S8 nBand5;			/**< Boost/cut for 5th frequency band */
435	OMX_S8 nBand6;			/**< Boost/cut for 6th frequency band */
436	OMX_S8 nBand7;			/**< Boost/cut for 7th frequency band */
437} OMX_DAK_CONFIG_GEQTYPE;
438
439/** Dolby Audio Kernel, Mobile Surround and Surround Upmixer */
440typedef struct OMX_DAK_CONFIG_MSRTYPE {
441	OMX_U32 nSize;			/**< size of the structure in bytes */
442	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
443	OMX_BOOL bMsrEnable;		/**< Mobile Surround enable */
444	OMX_U8 nMsrRoom;		/**< Room Size control */
445	OMX_U8 nMsrBright;		/**< Brightness control */
446	OMX_BOOL bMupEnable;		/**< Mobile Surround Upmixer enable */
447} OMX_DAK_CONFIG_MSRTYPE;
448
449/** Dolby Audio Kernel High Frequency Enhancer */
450typedef struct OMX_DAK_CONFIG_HFETYPE {
451	OMX_U32 nSize;			/**< size of the structure in bytes */
452	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
453	OMX_BOOL bEnable;		/**< High Frequency Enhancer enable */
454	OMX_U8 nDepth;			/**< Strength of effect */
455} OMX_DAK_CONFIG_HFETYPE;
456
457/** Dolby Audio Kernel Fade */
458typedef struct OMX_DAK_CONFIG_FADETYPE {
459	OMX_U32 nSize;			/**< size of the structure in bytes */
460	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
461	OMX_BOOL bEnable;		/**< Fade enable */
462	OMX_U8 nTarget;			/**< Target fade level */
463	OMX_U16 nTime;			/**< Fade time interval */
464} OMX_DAK_CONFIG_FADETYPE;
465
466/** Dolby Audio Kernel Speaker EQ */
467typedef struct OMX_DAK_CONFIG_SEQTYPE {
468	OMX_U32 nSize;			/**< size of the structure in bytes */
469	OMX_VERSIONTYPE nVersion;	/**< OMX specification version information */
470	OMX_BOOL bEnable;		/**< Speaker EQ enable */
471	OMX_S8 nLeftGainDB;		/**< Additional gain for Left channel */
472	OMX_S8 nRightGainDB;		/**< Additional gain for Right channel */
473	OMX_U8 nCoef48000Size;		/**< Length of the block of coefficients for 48KHz Sampling Rate case */
474	OMX_PTR pCoef48000;		/**< Pointer to the block of coefficients for the 48KHz case */
475	OMX_U8 nCoef44100Size;		/**< Length of the block of coefficients for 44.1KHz Sampling Rate case */
476	OMX_PTR pCoef44100;		/**< Pointer to the block of coefficients for the 44.1KHz case */
477	OMX_U8 nCoef32000Size;		/**< Length of the block of coefficients for 32KHz Sampling Rate case */
478	OMX_PTR pCoef32000;		/**< Pointer to the block of coefficients for the 32KHz case */
479	OMX_U8 nCoef24000Size;		/**< Length of the block of coefficients for 24KHz Sampling Rate case */
480	OMX_PTR pCoef24000;		/**< Pointer to the block of coefficients for the 24KHz case */
481
482} OMX_DAK_CONFIG_SEQTYPE;
483
484
485typedef enum OMX_AUDIO_CHANNELTYPE_EXTENSION {
486    OMX_AUDIO_ChannelTS = OMX_AUDIO_ChannelVendorStartUnused,    /**< Top Surround */
487    OMX_AUDIO_ChannelCVH    /**< Central Vertical Height */
488} OMX_AUDIO_CHANNELTYPE_EXTENSION;
489
490/**
491 * DUAL-MONO type
492 *
493 *  STRUCT MEMBERS:
494 *  nSize               : Size of the structure in bytes
495 *  nVersion            : OMX specification version information
496 *  nPortIndex          : Port that this structure applies to
497 *  eChannelConfig      : Enum for channel config
498 *
499 */
500typedef struct QOMX_AUDIO_CONFIG_DUALMONOTYPE {
501   OMX_U32 nSize;
502   OMX_VERSIONTYPE nVersion;
503   OMX_U32 nPortIndex;
504   OMX_AUDIO_DUAL_MONO_CHANNEL_CONFIG eChannelConfig;
505} QOMX_AUDIO_CONFIG_DUALMONOTYPE;
506
507#if defined( __cplusplus )
508}
509#endif /* end of macro __cplusplus */
510
511#endif /* end of macro __H_QOMX_AUDIOEXTENSIONS_H__ */
512