xref: /utopia/UTPA2-700.0.x/mxlib/include/drvAUDIO_if.h (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //<MStar Software>
2 //******************************************************************************
3 // MStar Software
4 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
5 // All software, firmware and related documentation herein ("MStar Software") are
6 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
7 // law, including, but not limited to, copyright law and international treaties.
8 // Any use, modification, reproduction, retransmission, or republication of all
9 // or part of MStar Software is expressly prohibited, unless prior written
10 // permission has been granted by MStar.
11 //
12 // By accessing, browsing and/or using MStar Software, you acknowledge that you
13 // have read, understood, and agree, to be bound by below terms ("Terms") and to
14 // comply with all applicable laws and regulations:
15 //
16 // 1. MStar shall retain any and all right, ownership and interest to MStar
17 //    Software and any modification/derivatives thereof.
18 //    No right, ownership, or interest to MStar Software and any
19 //    modification/derivatives thereof is transferred to you under Terms.
20 //
21 // 2. You understand that MStar Software might include, incorporate or be
22 //    supplied together with third party`s software and the use of MStar
23 //    Software may require additional licenses from third parties.
24 //    Therefore, you hereby agree it is your sole responsibility to separately
25 //    obtain any and all third party right and license necessary for your use of
26 //    such third party`s software.
27 //
28 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
29 //    MStar`s confidential information and you agree to keep MStar`s
30 //    confidential information in strictest confidence and not disclose to any
31 //    third party.
32 //
33 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
34 //    kind. Any warranties are hereby expressly disclaimed by MStar, including
35 //    without limitation, any warranties of merchantability, non-infringement of
36 //    intellectual property rights, fitness for a particular purpose, error free
37 //    and in conformity with any international standard.  You agree to waive any
38 //    claim against MStar for any loss, damage, cost or expense that you may
39 //    incur related to your use of MStar Software.
40 //    In no event shall MStar be liable for any direct, indirect, incidental or
41 //    consequential damages, including without limitation, lost of profit or
42 //    revenues, lost or damage of data, and unauthorized system use.
43 //    You agree that this Section 4 shall still apply without being affected
44 //    even if MStar Software has been modified by MStar in accordance with your
45 //    request or instruction for your use, except otherwise agreed by both
46 //    parties in writing.
47 //
48 // 5. If requested, MStar may from time to time provide technical supports or
49 //    services in relation with MStar Software to you for your use of
50 //    MStar Software in conjunction with your or your customer`s product
51 //    ("Services").
52 //    You understand and agree that, except otherwise agreed by both parties in
53 //    writing, Services are provided on an "AS IS" basis and the warranty
54 //    disclaimer set forth in Section 4 above shall apply.
55 //
56 // 6. Nothing contained herein shall be construed as by implication, estoppels
57 //    or otherwise:
58 //    (a) conferring any license or right to use MStar name, trademark, service
59 //        mark, symbol or any other identification;
60 //    (b) obligating MStar or any of its affiliates to furnish any person,
61 //        including without limitation, you and your customers, any assistance
62 //        of any kind whatsoever, or any information; or
63 //    (c) conferring any license or right under any intellectual property right.
64 //
65 // 7. These terms shall be governed by and construed in accordance with the laws
66 //    of Taiwan, R.O.C., excluding its conflict of law rules.
67 //    Any and all dispute arising out hereof or related hereto shall be finally
68 //    settled by arbitration referred to the Chinese Arbitration Association,
69 //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
70 //    Rules of the Association by three (3) arbitrators appointed in accordance
71 //    with the said Rules.
72 //    The place of arbitration shall be in Taipei, Taiwan and the language shall
73 //    be English.
74 //    The arbitration award shall be final and binding to both parties.
75 //
76 //******************************************************************************
77 //<MStar Software>
78 ////////////////////////////////////////////////////////////////////////////////
79 //
80 // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
81 // All rights reserved.
82 //
83 // Unless otherwise stipulated in writing, any and all information contained
84 // herein regardless in any format shall remain the sole proprietary of
85 // MStar Semiconductor Inc. and be kept in strict confidence
86 // ("MStar Confidential Information") by the recipient.
87 // Any unauthorized act including without limitation unauthorized disclosure,
88 // copying, use, reproduction, sale, distribution, modification, disassembling,
89 // reverse engineering and compiling of the contents of MStar Confidential
90 // Information is unlawful and strictly prohibited. MStar hereby reserves the
91 // rights to any and all damages, losses, costs and expenses resulting therefrom.
92 //
93 ////////////////////////////////////////////////////////////////////////////////
94 
95 #ifndef _DRV_AUDIO_IF_H_
96 #define _DRV_AUDIO_IF_H_
97 
98 #include "MsTypes.h"
99 #include "UFO.h"
100 
101 #ifdef __cplusplus
102 extern "C"
103 {
104 #endif
105 
106 //-------------------------------------------------------------------------------------------------
107 //  Macro and Define
108 //-------------------------------------------------------------------------------------------------
109 #define AUDIO_STRCMD_LENGTH    64
110 #define AUDIO_STRNAME_LENGTH    64
111 #define AUDIO_COMMON_PCM_IO_NAME_LENGTH    32
112 
113 #define AUDIO_MAJOR_VERSION_MASK    0xFFFF0000
114 #define AUDIO_MINOR_VERSION_MASK    0x0000FFFF
115 
116 #define A_EPERM    1 /* Operation not permitted */
117 #define A_ENOMEM    12 /* Out of memory */
118 #define A_EFAULT    14 /* Bad address */
119 #define A_EBUSY    16 /* Device or resource busy */
120 #define A_ENODEV    19 /* No such device */
121 #define A_EINVAL    22 /* Invalid argument */
122 
123 //CathyRemove #define drvMAD_STOP                     0x0
124 
125 #define AUD_CAP_VERSION                 1
126 
127 #define AUDIO_BIFROST_TEST_SUPPORT_VERSION  2   // 2:  Some first basic module test cases supported. 4: SonicEmotion ABS3D supported.
128 
129 #define En_DVB_advsndType_Compare(A, B) (strcmp(A, B) == 0)
130 #define ADVSND_TYPE_Compare(A, B) (strcmp(A, B) == 0)
131 #define ADVFUNC_Compare(A, B) (strcmp(A, B) == 0)
132 #define ADVSND_PARAM_Compare(A, B) (strcmp(A, B) == 0)
133 
134 #define HDMI_Tx_HD                      1
135 #define HDMI_Tx_DTS_HD                  1
136 
137 //================================================================
138 //  HDMI PC Define
139 //================================================================
140 #define  AU_HDMI_AC3                    0x01
141 #define  AU_HDMI_AC3P                   0x15
142 #define  AU_HDMI_DTS_TYPE1              0x0B
143 #define  AU_HDMI_DTS_TYPE2              0x0C
144 #define  AU_HDMI_DTS_TYPE3              0x0D
145 #define  AU_HDMI_DTS_TYPE4              0x11
146 #define  AU_HDMI_AAC                    0x07
147 
148 //================================================================
149 //  Common PCM I/O Define
150 //================================================================
151 #define AUDIO_HW_DMA_READER1    "HW DMA Reader1"
152 #define AUDIO_HW_DMA_READER2    "HW DMA Reader2"
153 #define AUDIO_SW_DMA_READER1    "SW DMA Reader1"
154 #define AUDIO_R2_DMA_READER1    "R2 DMA Reader1"
155 #define AUDIO_R2_DMA_READER2    "R2 DMA Reader2"
156 #define AUDIO_PCM_CAPTURE1      "PCM Capture1"
157 #define AUDIO_PCM_CAPTURE2      "PCM Capture2"
158 #define AUDIO_HW_DMA_WRITER1    "HW DMA Writer1"
159 
160 #define AUDIO_SW_MIXER1    "SW MIXER1"
161 #define AUDIO_SW_MIXER2    "SW MIXER2"
162 #define AUDIO_SW_MIXER3    "SW MIXER3"
163 #define AUDIO_SW_MIXER4    "SW MIXER4"
164 #define AUDIO_SW_MIXER5    "SW MIXER5"
165 #define AUDIO_SW_MIXER6    "SW MIXER6"
166 #define AUDIO_SW_MIXER7    "SW MIXER7"
167 #define AUDIO_SW_MIXER8    "SW MIXER8"
168 
169 #define AUDIO_PCM_SWMIXER_GROUP_NONE    0x00000000
170 #define AUDIO_PCM_SWMIXER_GROUP_ALL    0xFFFFFFFF
171 #define AUDIO_PCM_SWMIXER_GROUP_1    0x00000001
172 #define AUDIO_PCM_SWMIXER_GROUP_2    0x00000002
173 #define AUDIO_PCM_SWMIXER_GROUP_3    0x00000004
174 #define AUDIO_PCM_SWMIXER_GROUP_4    0x00000008
175 #define AUDIO_PCM_SWMIXER_GROUP_5    0x00000010
176 #define AUDIO_PCM_SWMIXER_GROUP_6    0x00000020
177 #define AUDIO_PCM_SWMIXER_GROUP_7    0x00000040
178 #define AUDIO_PCM_SWMIXER_GROUP_8    0x00000080
179 
180 //================================================================
181 //  Output Device Selection Define
182 //================================================================
183 #define AUDIO_OUTPUT_DEVICE_NONE    0x00000000
184 #define AUDIO_OUTPUT_DEVICE_SPEAKER    0x00000001
185 #define AUDIO_OUTPUT_DEVICE_SPDIF    0x00000002
186 #define AUDIO_OUTPUT_DEVICE_HDMI    0x00000004
187 #define AUDIO_OUTPUT_DEVICE_ALL    0xFFFFFFFF
188 
189 //================================================================
190 //  Define for CodecType in AUDIO_CODEC_CAPABILITY_t
191 //================================================================
192 #define AUDIO_CODEC_MPEG    0x00000001
193 #define AUDIO_CODEC_AC3    0x00000002
194 #define AUDIO_CODEC_AC3P    0x00000003
195 #define AUDIO_CODEC_AAC    0x00000004
196 #define AUDIO_CODEC_DTS    0x00000005
197 #define AUDIO_CODEC_DTS_LBR    0x00000006
198 #define AUDIO_CODEC_DTS_HD    0x00000007
199 #define AUDIO_CODEC_WMA    0x00000008
200 #define AUDIO_CODEC_DRA    0x00000009
201 #define AUDIO_CODEC_COOK    0x0000000A
202 #define AUDIO_CODEC_XPCM    0x0000000B
203 #define AUDIO_CODEC_VORBIS    0x0000000C
204 
205 //================================================================
206 //  Structure
207 //================================================================
208 
209 typedef struct
210 {
211     MS_U32 u32Addr;
212     MS_U32 u32Size;
213     MS_U64 u64Idx;
214 }AU_DVB_ENC_FRAME_INFO, *PAU_DVB_ENC_FRAME_INFO;
215 
216 typedef struct
217 {
218     MS_U32 u32Addr;
219     MS_U32 u32Size;
220     MS_U32 u32Idx;
221 }AUDIO_UPLOAD_INFO, *PAUDIO_UPLOAD_INFO;
222 
223 typedef enum
224 {
225     AUDIO_COEF_PREVER_PEQ, //for compatible with PEQ of previous version
226     AUDIO_COEF_PEQ,
227     AUDIO_COEF_HPF,
228     AUDIO_COEF_BASS,
229     AUDIO_COEF_TREBLE,
230 }AUDIO_COEF_TYPE;
231 
232 typedef enum
233 {
234     AUDIO_SINGLE_PRECISION,
235     AUDIO_DOUBLE_PRECISION,
236 }AUDIO_PRECISION_TYPE;
237 
238 
239 typedef struct
240 {
241     MS_U8   band;                       ///< band
242     MS_U8   sfs;                        ///< fs
243     MS_U8   scale;                      ///< scale
244     MS_U32  a0;                         ///< a0
245     MS_U32  a1;                         ///< a1
246     MS_U32  a2;                         ///< a2
247     MS_U32  b1;                         ///< b1
248     MS_U32  b2;                         ///< b2
249     AUDIO_COEF_TYPE   type;             /// PEQ, HPF or tone
250     MS_BOOL enable;                     /// PEQ band enable
251     AUDIO_PRECISION_TYPE precision;     /// PEQ filter precision
252 } AUDIO_PEQ_COEF, *PAUDIO_PEQ_COEF;
253 
254 typedef enum
255 {
256     AUDIO_SOUNDEFFECT_SPEAKER,
257     AUDIO_SOUNDEFFECT_HEADPHONE,
258 }AUDIO_SOUNDEFFECT_TYPE;
259 
260 typedef struct __attribute__((packed))
261 {
262     MS_U32 u32AudioCapsVersion;
263     MS_U32 u32AudioCapsStructSize;
264     MS_U8 u8MaxDecoderNum;
265     MS_U8 u8MaxDmaReaderNum;
266     MS_BOOL bIsADSupported;
267     MS_BOOL bIsPusiDetectSupported;
268     MS_BOOL bIsMpegSupported;
269     MS_BOOL bIsAc3Supported;
270     MS_BOOL bIsAc3pSupported;
271     MS_BOOL bIsAacSupported;
272     MS_BOOL bIsMp3Supported;
273     MS_BOOL bIsWmaSupported;
274     MS_BOOL bIsRa8LbrSupported;
275     MS_BOOL bIsXpcmSupported;
276     MS_BOOL bIsDtsSupported;
277     MS_BOOL bIsWmaProSupported;
278     MS_BOOL bIsFlacSupported;
279     MS_BOOL bIsVorbisSupported;
280     MS_BOOL bIsDtsLbrSupported;
281     MS_BOOL bIsAmrNbSupported;
282     MS_BOOL bIsAmrWbSupported;
283     MS_BOOL bIsDraSupported;
284 
285     /*
286      * Note!!!
287      *
288      * 1. No matter what kind of modification in this structure, "AUD_CAP_VERSION" must be updated as well!!!
289      *
290      * 2. The element in this structure can only be added, never removed!!!
291      *
292      */
293 } AUDIO_CAPABILITIES;
294 
295 #if defined(UFO_PUBLIC_HEADER_300)
296 typedef struct
297 #else
298 typedef struct __attribute__((packed))
299 #endif
300 {
301     MS_U32 u32StructVersion; /* version number of this data structure */
302     MS_U32 u32StructSize; /* size of this data structure */
303     MS_U8 u8ConnectFlag; /* it is TRUE when opened */
304     MS_U8 u8StartFlag; /* it is TRUE when started and opened */
305     MS_U8 u8Name[AUDIO_COMMON_PCM_IO_NAME_LENGTH]; /* The PCM name requested */
306     MS_U8 u8NonBlockingFlag; /* it is TRUE when request for nonblocking mode */
307     MS_U8 u8MultiChFlag; /* it is TRUE when request for a multi-channel PCM IO */
308     MS_U8 u8MixingFlag; /* it is TRUE when request for a mixing PCM IO */
309     MS_U32 u32MixingGroup; /* PCM mixing group, i.e. AUDIO_PCMMIXER_GROUP_ALL */
310 #if defined(UFO_PUBLIC_HEADER_212) || defined(UFO_PUBLIC_HEADER_500_3)
311     MS_S8 *pBuffer; /* PCM buffer address */
312     MS_S8 *pReadPtr; /* PCM read pointer */
313     MS_S8 *pWritePtr; /* PCM write pointer */
314 #endif
315     MS_U32 u32BufferDuration; /* PCM buffer size in mini-second unit, and up to a maximun size */
316     MS_U32 u32Channel; /* PCM channel number */
317     MS_U32 u32SampleRate; /* PCM sample rate */
318     MS_U32 u32BitWidth; /* PCM sample's bit width of each channel */
319     MS_U32 u32BigEndian; /* PCM endian, TRUE means Big Endian, FALSE means Little Endian */
320     MS_U32 u32Timestamp; /* PCM timestamp */
321     MS_U32 u32Weighting; /* PCM weighting for mixing case, differs from volume it's an extra attenuation  for PCM level, the range is 0~100, and 100 means no any attenuation */
322     MS_U32 u32Volume; /* PCM volume, the range is 0 ~ 1016, and 96 means 0dB */
323     MS_U32 u32BufferLevel; /* PCM bufffer level in byte unit */
324     MS_U8 u8CaptureFlag; /* it is TRUE when request for a PCM Capture IO  */
325 
326     /*
327      * Note!!!
328      *
329      * 1. No matter what kind of modification in this structure, "AUDIO_PCM_INFO_VERSION" must be updated as well!!!
330      *
331      * 2. The element in this structure can only be added, never removed!!!
332      *
333      */
334 } AUDIO_PCM_INFO_t;
335 #if defined(UFO_PUBLIC_HEADER_212) || defined(UFO_PUBLIC_HEADER_500_3)
336 #define AUDIO_PCM_INFO_VERSION    0x00010001
337 #else
338 #define AUDIO_PCM_INFO_VERSION    0x00020001
339 #endif
340 
341 //================================================================
342 //  Enum
343 //================================================================
344 
345 //================================================================
346 //  AuCommon
347 //================================================================
348 typedef enum
349 {
350     AUDIO_PATH_GROUP_1,
351     AUDIO_PATH_GROUP_2,
352     AUDIO_PATH_GROUP_3,
353 }AUDIO_PATH_GROUP_TYPE;
354 
355 
356 ///<Audio source info type
357 typedef enum
358 {
359     E_AUDIO_INFO_DTV_IN,
360     E_AUDIO_INFO_ATV_IN,
361     E_AUDIO_INFO_HDMI_IN,
362     E_AUDIO_INFO_ADC_IN,
363     E_AUDIO_INFO_MM_IN,
364     E_AUDIO_INFO_SPDIF_IN,
365     E_AUDIO_INFO_KTV_IN,
366     E_AUDIO_INFO_GAME_IN,
367     E_AUDIO_INFO_KTV_STB_IN         ///< Iuput source type for STB KTV mode
368 }AUDIO_SOURCE_INFO_TYPE;
369 
370 ///<Enum for Audio data capture source selection
371 typedef enum
372 {
373     E_CAPTURE_CH1,                   ///< Data from DIG1 input port
374     E_CAPTURE_CH2,                   ///< Data from DIG2 input port
375     E_CAPTURE_CH3,                   ///< Data from DIG3 input port
376     E_CAPTURE_CH4,                   ///< Data from DIG4 input port
377     E_CAPTURE_CH5,                   ///< Data from DIG5 input port
378     E_CAPTURE_CH6,                   ///< Data from DIG6 input port
379     E_CAPTURE_CH7,                   ///< Data from DIG7 input port
380     E_CAPTURE_CH8,                   ///< Data from DIG8 input port
381     E_CAPTURE_PCM,                   ///< Pure PCM out =Data CH5
382     E_CAPTURE_PCM_DELAY,             ///< PCM + Delay out
383     E_CAPTURE_PCM_SE,                ///< PCM + Delay +SE out
384     E_CAPTURE_ADC,                   ///< Data from ADC1 input port
385     E_CAPTURE_AUOUT0,                ///< Data for DAC0 output port
386     E_CAPTURE_AUOUT1,                ///< Data for DAC1 output port
387     E_CAPTURE_AUOUT2,                ///< Data for DAC2 output port
388     E_CAPTURE_AUOUT3,                ///< Data for DAC3 output port
389     E_CAPTURE_I2S_OUT,               ///< Data for I2S output port
390     E_CAPTURE_SPDIF_OUT,             ///< Data for SPDIF output port
391     E_CAPTURE_MIXER,                 ///< Data for audio data Mixer
392     E_CAPTURE_ADC2,                  ///< Data from ADC2 input port
393     E_CAPTURE_ADC1_AUIN0_INPUT,      /// ADC1-Line-in[0]
394     E_CAPTURE_ADC1_AUIN1_INPUT,      /// ADC1-Line-in[1]
395     E_CAPTURE_ADC1_AUIN2_INPUT,      /// ADC1-Line-in[2]
396     E_CAPTURE_ADC1_AUIN3_INPUT,      /// ADC1-Line-in[3]
397     E_CAPTURE_ADC1_AUIN4_INPUT,      /// ADC1-Line-in[4]
398     E_CAPTURE_ADC1_AUIN5_INPUT,      /// ADC1-Line-in[5]
399     E_CAPTURE_ADC1_AUMIC_INPUT,      /// ADC1-Micphone-in
400     E_CAPTURE_ADC2_AUIN0_INPUT,      /// ADC2-Line-in[0]
401     E_CAPTURE_ADC2_AUIN1_INPUT,      /// ADC2-Line-in[1]
402     E_CAPTURE_ADC2_AUIN2_INPUT,      /// ADC2-Line-in[2]
403     E_CAPTURE_ADC2_AUIN3_INPUT,      /// ADC2-Line-in[3]
404     E_CAPTURE_ADC2_AUIN4_INPUT,      /// ADC2-Line-in[4]
405     E_CAPTURE_ADC2_AUIN5_INPUT,      /// ADC2-Line-in[5]
406     E_CAPTURE_ADC2_AUMIC_INPUT,      /// ADC2-Micphone-in
407     E_CAPTURE_MAX_NUM,               ///< MAX capture source number
408     E_CAPTURE_NULL                   = 0xFF,  ///< No caupure source
409 }AUDIO_CAPTURE_SOURCE_TYPE;          // Audio capture type selection
410 
411 ///<Enum for Multi-Audio Device
412 typedef enum
413 {
414     E_DEVICE0,    ///< 1st audio device
415     E_DEVICE1,    ///< 2nd audio device
416     E_DEVICE2,    ///< 3rd audio device
417     E_DEVICE3,    ///< 4th audio device
418     E_DEVICE4,    ///< 5th audio device
419     E_DEVICE5,    ///< 6th audio device
420 }AUDIO_DEVICE_TYPE;   // Audio device type
421 
422 ///====== Audio Path Mode TYPE========
423 enum
424 {
425     AUDIO_DSP1_INPUT,                   ///< 0: DSP Decoder1 Input
426     AUDIO_DSP2_INPUT,                   ///< 1: DSP Decoder2 Input
427     AUDIO_ADC_INPUT,                    ///< 2: ADC Input
428     AUDIO_DSP3_INPUT                    = 0x06,     ///< 6: DSP Decoder3 Input
429     AUDIO_DSP4_INPUT                    = 0x08,     ///< 8: DSP Decoder4 Input
430     AUDIO_ADC2_INPUT                    = 0x09,     ///< 9: ADC2 Input
431     AUDIO_DMA_INPUT                     = 0x0E,     ///< E: DMA Input
432 };
433 
434 typedef enum
435 {
436     AUDIO_PATH_0,                       ///< 0: PATH 0
437     AUDIO_PATH_1,                       ///< 1: PATH 1
438     AUDIO_PATH_2,                       ///< 2: PATH 2
439     AUDIO_PATH_3,                       ///< 3: PATH 3
440     AUDIO_PATH_4,
441     AUDIO_PATH_5,
442     AUDIO_PATH_6,
443     AUDIO_PATH_7,                       ///< 7: New add in T3
444     AUDIO_PATH_MAIN                     = 4,
445 
446     AUDIO_T3_PATH_AUOUT0                = 0x30,      ///< T3 volume path : AUOUT0
447     AUDIO_T3_PATH_AUOUT1                = 0x31,      ///< T3 volume path : AUOUT1
448     AUDIO_T3_PATH_AUOUT2                = 0x32,      ///< T3 volume path : AUOUT2
449     AUDIO_T3_PATH_AUOUT3                = 0x33,      ///< T3 volume path : AUOUT3
450     AUDIO_T3_PATH_I2S                   = 0x34,      ///< T3 volume path : I2S
451     AUDIO_T3_PATH_SPDIF                 = 0x35,      ///< T3 volume path : SPDIF
452     AUDIO_T3_PATH_I2S2                  = 0x36,      ///< T3 volume path : SPDIF
453     AUDIO_T3_PATH_HDMI                  = 0x37,      ///< T3 volume path : HDMI
454     AUDIO_T3_PATH_LR                    = 0x38,
455     AUDIO_T3_PATH_PCM_CAPTURE1          = 0x39,      ///< T3 volume path : PCM Capture1
456     AUDIO_T3_PATH_PCM_CAPTURE2          = 0x3A,      ///< T3 volume path : PCM Capture2
457     AUDIO_T3_PATH_DMA_WRITER1           = 0x3B,      ///< T3 volume path : HW DMA Writer1
458 
459     AUDIO_T3_PATH_MIXER_MAIN            = 0x40,      ///< Internal volume path for Mixer 1st port (CH5 in)
460     AUDIO_T3_PATH_MIXER_SECONDARY       = 0x41,      ///< Internal volume path for Mixer 2nd port (CH6 in)
461     AUDIO_T3_PATH_MIXER_DMA_IN          = 0x42,      ///< Internal volume path for Mixer 3rd port (CH8 in)
462     AUDIO_T3_PATH_MIXER_MCH_IN          = 0x43,      ///< Internal volume path forMulti-channel ports (CH1~3 in)
463 
464     AUDIO_PATH_SW_DMA_0                 = 0x50,
465     AUDIO_PATH_SW_DMA_1                 = 0x51,
466     AUDIO_PATH_HW_DMA_0                 = 0x52,
467     AUDIO_PATH_HW_DMA_1                 = 0x53,
468 
469     AUDIO_PATH_NULL                     = 0xFF
470 }AUDIO_PATH_TYPE;
471 
472 typedef enum
473 {
474     INTERNAL_MULTI_1,                   ///< 0: For Multi-channel only
475     INTERNAL_MULTI_2,                   ///< 1  For Multi-channel only
476     INTERNAL_MULTI_3,                   ///< 2: For Multi-channel only
477     INTERNAL_MULTI_4,                   ///< 3: For Multi-channel only
478     INTERNAL_PCM,                       ///< 4: Pure PCM out
479     INTERNAL_PCM_DELAY,                 ///< 5: PCM + Delay out
480     INTERNAL_PCM_SE,                    ///< 6: PCM + Delay +SE out
481     INTERNAL_SCART,                     ///< 7: SCART data
482     INTERNAL_MIXER,                     ///< 8: SCART data
483     INTERNAL_CH6,                       ///< 9: CH6 data
484     INTERNAL_TEST,                      ///< A: Test data
485     INTERNAL_LRDIV2,                    ///< B: I2S (L+R)/2 data
486     INTERNAL_TONE,                      ///< C: 1KHz Tone
487     INTERNAL_CH8,                       ///< D: Data from CH8
488     INTERNAL_ATVENC,                    ///< E: Data from ATV Encoder.
489     INTERNAL_MAX_NUM,                   ///< MAX Internal path number
490     INTERNAL_PATH_NULL                  = 0xFF,
491 }AUDIO_INTERNAL_PATH_TYPE;              // for T3 only
492 
493 //====== Audio input Mode TYPE========
494 typedef enum
495 {
496     AUDIO_SPDIF_INPUT                   = 3,        ///< 3: SPDIF INPUT
497     AUDIO_I2S_INPUT                     = 4,        ///< 4: I2S INPUT
498     AUDIO_HDMI_INPUT                    = 5,        ///< 5: HDMI INPUT
499     AUDIO_SRC_INPUT                     = 7,
500 
501     AUDIO_DSP1_DVB_INPUT                = 0x00,
502     AUDIO_DSP1_DVB1_INPUT               = 0x10,
503     AUDIO_DSP1_SPDIF_INPUT              = 0x20,
504     AUDIO_DSP1_SPDIFx1_INPUT            = 0x30,
505     AUDIO_DSP1_HDMI_INPUT               = 0x40,
506     AUDIO_DSP1_HDMIx1_INPUT             = 0x50,
507     AUDIO_DSP1_CardRD_INPUT             = 0x60,
508     AUDIO_DSP1_SIF_INPUT                = 0x70,
509     AUDIO_DSP1_MM_INPUT                 = 0x80,
510 
511     AUDIO_DSP2_DVB_INPUT                = 0x01,
512     AUDIO_DSP2_DVB1_INPUT               = 0x11,
513     AUDIO_DSP2_SPDIF_INPUT              = 0x21,
514     AUDIO_DSP2_SPDIFx1_INPUT            = 0x31,
515     AUDIO_DSP2_HDMI_INPUT               = 0x41,
516     AUDIO_DSP2_HDMIx1_INPUT             = 0x51,
517     AUDIO_DSP2_CardRD_INPUT             = 0x61,
518     AUDIO_DSP2_SIF_INPUT                = 0x71,
519 
520     AUDIO_DSP3_DVB_INPUT                = 0x06,
521     AUDIO_DSP3_DVB1_INPUT               = 0x16,
522     AUDIO_DSP3_SPDIF_INPUT              = 0x26,
523     AUDIO_DSP3_SPDIFx1_INPUT            = 0x36,
524     AUDIO_DSP3_HDMI_INPUT               = 0x46,
525     AUDIO_DSP3_HDMIx1_INPUT             = 0x56,
526     AUDIO_DSP3_CardRD_INPUT             = 0x66,
527     AUDIO_DSP3_SIF_INPUT                = 0x76,
528 
529     AUDIO_DSP4_DVB_INPUT                = 0x08,
530     AUDIO_DSP4_DMARD_INPUT              = 0x58,     /// New add in T3
531     AUDIO_DSP4_SIF_INPUT                = 0x78,     /// For T3 SIF input
532 
533     AUDIO_AUIN0_INPUT                   = 0x02,     /// Line-in[0]
534     AUDIO_AUIN1_INPUT                   = 0x12,     /// Line-in[1]
535     AUDIO_AUIN2_INPUT                   = 0x22,     /// Line-in[2]
536     AUDIO_AUIN3_INPUT                   = 0x32,     /// Line-in[3]
537     AUDIO_AUIN4_INPUT                   = 0xA2,     /// Line-in[4]
538     AUDIO_AUIN5_INPUT                   = 0xB2,     /// Line-in[5]
539     AUDIO_AUMIC_INPUT                   = 0x72,     /// Micphone-in
540 
541     AUDIO_ADC2_AUIN0_INPUT              = 0x09,     /// Line-in[0]
542     AUDIO_ADC2_AUIN1_INPUT              = 0x19,     /// Line-in[1]
543     AUDIO_ADC2_AUIN2_INPUT              = 0x29,     /// Line-in[2]
544     AUDIO_ADC2_AUIN3_INPUT              = 0x39,     /// Line-in[3]
545     AUDIO_ADC2_AUIN4_INPUT              = 0xA9,     /// Line-in[4]
546     AUDIO_ADC2_AUIN5_INPUT              = 0xB9,     /// Line-in[5]
547     AUDIO_ADC2_AUMIC_INPUT              = 0x79,     /// Micphone-in
548 
549     AUDIO_DMA_READER_INPUT              = 0x0E,       ///<0x0E : DMA Reader INPUT
550 
551     AUDIO_NULL_INPUT                    = 0xFF,
552 } AUDIO_INPUT_TYPE;
553 
554 typedef enum
555 {
556     AUDIO_DEBUG_LEVEL_FATAL,
557     AUDIO_DEBUG_LEVEL_ERROR,
558     AUDIO_DEBUG_LEVEL_WARN,
559     AUDIO_DEBUG_LEVEL_INFO,
560     AUDIO_DEBUG_LEVEL_DEBUG,
561     AUDIO_DEBUG_LEVEL_VERBOSE,
562 }AUDIO_DEBUG_LEVEL;
563 
564 //================================================================
565 //  HDMI ENUM
566 //================================================================
567 
568 //====== HDMI Rx Mode TYPE========
569 typedef enum
570 {
571     HDMI_RX_PCM                         = 0x0,      ///< HDMI RX PCM Mode
572     HDMI_RX_DD                          = 0x1,      ///< HDMI RX Dolby Mode
573     HDMI_RX_DTS                         = 0x2,      ///< HDMI RX DTS Mode
574     HDMI_RX_DDP                         = 0x3,      ///< HDMI RX DDP Mode
575     HDMI_RX_DP                          = 0x4,      ///< HDMI RX DP Mode
576     HDMI_RX_Other                       = 0x5,      ///< HDMI RX Other Mode
577 } AUDIO_HDMI_RX_TYPE;
578 
579 typedef enum
580 {
581     CODEC_NONE                          = 0x0,
582     CODEC_LPCM                          = 0x1,      ///< Support LPCM
583     CODEC_DD                            = 0x2,      ///< Support DD
584     CODEC_MPEG1                         = 0x3,      ///< Support MPEG1
585     CODEC_MP3                           = 0x4,      ///< Support MP3
586     CODEC_MPEG2                         = 0x5,      ///< Support MPEG2
587     CODEC_AAC                           = 0x6,      ///< Support AAC
588     CODEC_DTS                           = 0x7,      ///< Support DTS
589     CODEC_ATRAC                         = 0x8,      ///< Support ATRAC
590     CODEC_ONEBITAUDIO                   = 0x9,      ///< Support One-Bit Audio
591     CODEC_DDP                           = 0xA,      ///< Support DDP
592     CODEC_DTSHD                         = 0xB,      ///< Support DTSHD
593     CODEC_TRUEHD                        = 0xC,      ///< Support MLP/TRUE-HD
594     CODEC_DST                           = 0xD,      ///< Support DST
595     CODEC_WMAPRO                        = 0xE,      ///< Support WMA-Pro
596     CODEC_MAX                           = 0xF,
597 } AUDIO_FORMAT_CODE;
598 
599 //====== HDMI Tx Mode TYPE========
600 typedef enum
601 {
602     HDMI_OUT_PCM,                       ///< HDMI OUTPUT PCM
603     HDMI_OUT_NONPCM,                    ///< HDMI OUTPUT non-PCM
604     HDMI_OUT_8CH_NONPCM,                ///< HDMI OUTPUT non-PCM (8 Channel transmit, mainly in DTS-HD, Dolby True-HD and so on)
605     HDMI_OUT_BYPASS,                    ///< HDMI OUTPUT non-PCM (By-Pass)
606 } HDMI_TX_OUTPUT_TYPE;
607 
608 //====== Audio output Mode TYPE========
609 typedef enum
610 {
611     AUDIO_AUOUT0_OUTPUT,                ///< 0: DAC0 OUTPUT
612     AUDIO_AUOUT1_OUTPUT,                ///< 1: T2=>AA0 OUTPUT    T3=>HP OUTPUT
613     AUDIO_AUOUT2_OUTPUT,                ///< 2: T2=>AA1 OUTPUT    T3=>DAC2 OUTPUT
614     AUDIO_AUOUT3_OUTPUT,                ///< 3: T2=>NULL          T3=>AA OUTPUT
615     AUDIO_SPDIF_OUTPUT,                 ///< 4: SPDIF OUTPUT
616     AUDIO_I2S_OUTPUT,                   ///< 5: I2S OUTPUT
617     AUDIO_HP_OUTPUT,                    ///< 6: OUTPUT with headphone driver
618     AUDIO_I2S2_OUTPUT,                  ///< 7: I2S2 OUTPUT
619     AUDIO_HDMI_ARC_OUTPUT,              ///< 8: HDMI ARC OUTPUT(HDMI_Rx,TV)
620     AUDIO_HDMI_OUTPUT,                  ///< 9: HDMI Tx OUTPUT(HDMI_Tx,STB)
621     AUDIO_I2S3_OUTPUT,                  ///< A: I2S3 OUTPUT
622     AUDIO_I2S4_OUTPUT,                  ///< B: I2S4 OUTPUT
623     AUDIO_NULL_OUTPUT                   = 0xFF,
624 } AUDIO_OUTPUT_TYPE;
625 
626 typedef enum
627 {
628     DIGITAL_SPDIF_OUTPUT,                 ///< 0: SPDIF
629     DIGITAL_HDMI_ARC_OUTPUT,          ///< 1: HDMI ARC
630     DIGITAL_HDMI_OUTPUT,                  ///< 2: HDMI
631     DIGITAL_I2S_OUTPUT,                     ///< 3: I2S
632     DIGITAL_MAX_OUTPUT,
633 } DIGITAL_OUTPUT_TYPE;
634 
635 typedef enum
636 {
637     DIGITAL_OUTPUT_CODEC_NOT_SPECIFIED,     ///< 0: not specified
638     DIGITAL_OUTPUT_CODEC_AC3,               ///< 1: specifies to output AC3
639     DIGITAL_OUTPUT_CODEC_AC3P,              ///< 2: specifies to output AC3P
640     DIGITAL_OUTPUT_CODEC_AAC,               ///< 3: specifies to output AAC
641     DIGITAL_OUTPUT_CODEC_DTS,               ///< 4: specifies to output DTS
642     DIGITAL_OUTPUT_CODEC_MAX,
643 } DIGITAL_OUTPUT_SPECIFIED_CODEC;
644 
645 typedef enum
646 {
647     DECODER_PCM_OUTPUT_TYPE1_DMX, /* Downmix, target channel = 2 */
648     DECODER_PCM_OUTPUT_TYPE2_6CH, /* Multi-Channel(5.1), target channel = 6 */
649     DECODER_PCM_OUTPUT_TYPE3_8CH, /* Multi-Channel(7.1), target channel = 8 */
650     DECODER_PCM_OUTPUT_TYPE4_DMX_8CH, /* Downmix, Multi-Channel(7.1), target channel = 10 */
651     DECODER_PCM_OUTPUT_TYPE5_DMX_8CH_PTR, /* Downmix, Multi-Channel(7.1), nonPcmPtr, target channel = 12 */
652  } DECODER_PCM_OUTPUT_TYPE;
653 
654 //================================================================
655 //  I2S ENUM
656 //================================================================
657 //====== I2S OUTPUT Mode TYPE========
658 typedef enum
659 {
660     AUDIO_I2S_MCLK,                     ///< I2S MCLK
661     AUDIO_I2S_WORD_WIDTH,               ///< I2S Word-width
662     AUDIO_I2S_SOURCE_CH,                ///< I2S Source
663     AUDIO_I2S_FORMAT,                    ///< I2S format
664     AUDIO_I2S_RXMODE,                     ///< I2S RxMode
665     AUDIO_I2S_TXMODE,                     ///< I2S TxMode
666     AUDIO_I2S_RX_JUSTIFIED_MODE,         ///< I2S RX Justified Mode
667     AUDIO_I2S_RX_CLOCK,                  ///< I2S RX Clock
668     AUDIO_I2S_RX_WORD_WIDTH,             ///< I2S RX word width
669 } AUDIO_I2S_MODE_TYPE;
670 
671 
672 typedef enum
673 {
674     I2S_MCLK_64FS                       = 0x04,
675     I2S_MCLK_128FS                      = 0x05,
676     I2S_MCLK_256FS                      = 0x06,     ///< 256 Fs ==>default setting
677     I2S_MCLK_384FS                      = 0x07,
678 
679     I2S_WORD_WIDTH_16BIT                = 0x4,
680     I2S_WORD_WIDTH_24BIT                = 0x5,
681     I2S_WORD_WIDTH_32BIT                = 0x6,      ///< 32-bit ==> default setting
682 
683     I2S_FORMAT_STANDARD                 = 0,
684     I2S_FORMAT_LEFT_JUSTIFIED           = 1,
685 
686     I2S_MASTER_MODE                       = 0,      ///< MASTER_MODE ==> default setting
687     I2S_SLAVE_MODE                       = 1,
688 
689     I2S_SAMPLE_RATE_16K                  = 0x4,
690     I2S_SAMPLE_RATE_32K                  = 0x5,
691     I2S_SAMPLE_RATE_48K                  = 0x6,
692 } AUDIO_I2S_MODE_VALUE;
693 
694 //================================================================
695 //  SPDIF ENUM
696 //================================================================
697 //====== SPDIF OUTPUT PATH========
698 typedef enum
699 {
700     MPEG_ENCODE,
701     DTS_ENCODE_2CH,
702     DTS_ENCODE_MULTI,
703     MP3_ENCODE,
704     DD_DDENCODE,
705     DD_DDCO,
706 }AUDIO_ENCODE_TYPE;
707 
708 //====== DIGITAL OUTPUT Mode TYPE========
709 typedef enum
710 {
711     DIGITAL_OUT_PCM,
712     DIGITAL_OUT_DOLBYDIGITAL,
713     DIGITAL_OUT_DTS,
714     DIGITAL_OUT_AAC_LC,
715     DIGITAL_OUT_NONE,
716 } AUDIO_DIGITAL_OUTPUT_TYPE;
717 
718 //====== SPDIF OUTPUT Mode TYPE========
719 typedef enum
720 {
721     SPDIF_OUT_PCM                       = 0x0,      ///< S/PDIF always output PCM
722     SPDIF_OUT_AUTO                      = 0x2,      ///< S/PDIF OUTPUT PCM or non-PCM automatic
723     SPDIF_OUT_NONPCM                    = 0x2,      ///< S/PDIF OUTPUT non-PCM
724     SPDIF_OUT_BYPASS,                   ///< S/PDIF OUTPUT by-pass from HDMI
725     SPDIF_OUT_TRANSCODE,                ///< S/PDIF OUTPUT always transcode
726     SPDIF_OUT_NONE,                     ///< S/PDIF OUTPUT nothing
727 } AUDIO_SPDIF_OUTPUT_TYPE;
728 
729 //====== SPDIF OUTPUT CS TYPE =========
730 typedef enum
731 {
732     SPDIF_CS_CategoryCode               = 0x0,      ///<
733     SPDIF_CS_CopyRight                  = 0x1,      ///<
734     SPDIF_CS_SourceNumber               = 0x2,      ///<
735     SPDIF_CS_ChannelNumber              = 0x3,      ///<
736     SPDIF_CS_SmpFreq                    = 0x4,      ///<
737     SPDIF_CS_ClockAcc                   = 0x5,      ///<
738     SPDIF_ChannelAB                     = 0x6,      ///<
739     SPDIF_CS_CopyProtect                = 0x7,      ///<
740 } AUDIO_SPDIF_CS_TYPE;
741 
742 //====== SPDIF OUTPUT CS Status =======
743 typedef enum
744 {
745     SPDIF_CS_Category_BroadCast         = 0x00,     ///<
746     SPDIF_CS_Category_General           = 0x01,     ///<
747     SPDIF_CS_Category_BroadCast_JP      = 0x02,     ///<
748     SPDIF_CS_Category_BroadCast_EU      = 0x03,     ///<
749     SPDIF_CS_Category_BroadCast_USA     = 0x04,     ///<
750     SPDIF_CS_Category_Rev4              = 0x05,     ///<
751     SPDIF_CS_Category_Rev5              = 0x06,     ///<
752     SPDIF_CS_Category_Rev6              = 0x07,     ///<
753     SPDIF_CS_CopyRight_CP               = 0x08,     ///<
754     SPDIF_CS_CopyRight_NonCP            = 0x09,     ///<SPDIF_CS_ChannelNumber_Right
755     SPDIF_CS_SourceNumber_2             = 0x0A,     ///<
756     SPDIF_CS_SourceNumber_5             = 0x0B,     ///<
757     SPDIF_CS_SourceNumber_6             = 0x0C,     ///<
758     SPDIF_CS_SourceNumber_Rev1          = 0x0D,     ///<
759     SPDIF_CS_SourceNumber_Rev2          = 0x0E,     ///<
760     SPDIF_CS_SourceNumber_Rev3          = 0x0F,     ///<
761     SPDIF_CS_ChannelNumber_A_Left       = 0x10,     ///<
762     SPDIF_CS_ChannelNumber_B_Right      = 0x11,     ///<
763     SPDIF_CS_ChannelNumber_C            = 0x12,     ///<
764     SPDIF_CS_ChannelNumber_D            = 0x13,     ///<
765     SPDIF_CS_ChannelNumber_E            = 0x14,     ///<
766     SPDIF_CS_ChannelNumber_F            = 0x15,     ///<
767     SPDIF_CS_ChannelNumber_G            = 0x16,     ///<
768     SPDIF_CS_ChannelNumber_H            = 0x17,     ///<
769     SPDIF_CS_ChannelNumber_I            = 0x18,     ///<
770     SPDIF_CS_ChannelNumber_J            = 0x19,     ///<
771     SPDIF_CS_ChannelNumber_K            = 0x1A,     ///<
772     SPDIF_CS_SmpFreq_192                = 0x1B,     ///<
773     SPDIF_CS_SmpFreq_176                = 0x1C,     ///<
774     SPDIF_CS_SmpFreq_128                = 0x1D,     ///<
775     SPDIF_CS_SmpFreq_96                 = 0x1E,     ///<
776     SPDIF_CS_SmpFreq_88                 = 0x1F,     ///<
777     SPDIF_CS_SmpFreq_64                 = 0x20,     ///<
778     SPDIF_CS_SmpFreq_48                 = 0x21,     ///<
779     SPDIF_CS_SmpFreq_44                 = 0x22,     ///<
780     SPDIF_CS_SmpFreq_32                 = 0x23,     ///<
781     SPDIF_CS_SmpFreq_24                 = 0x24,     ///<
782     SPDIF_CS_SmpFreq_22                 = 0x25,     ///<
783     SPDIF_CS_SmpFreq_16                 = 0x26,     ///<
784     SPDIF_CS_SmpFreq_Rev1               = 0x27,     ///<
785     SPDIF_CS_SmpFreq_Rev2               = 0x28,     ///<
786     SPDIF_CS_SmpFreq_Rev3               = 0x29,     ///<
787     SPDIF_CS_SmpFreq_Rev4               = 0x2A,     ///<
788     SPDIF_CS_SmpFreq_Rev5               = 0x2B,     ///<
789     SPDIF_CS_ClockAcc_Lev1              = 0x2C,     ///<
790     SPDIF_CS_ClockAcc_Lev2              = 0x2D,     ///<
791     SPDIF_CS_ClockAcc_Lev3              = 0x2E,     ///<
792     SPDIF_CS_ClockAcc_NotMatch          = 0x2F,     ///<
793     SPDIF_ChannelAB_Invalid_ON          = 0x30,     ///<
794     SPDIF_ChannelAB_Invalid_OFF         = 0x31,     ///<
795     SPDIF_CS_CopyProtect_CopyFree       = 0x32,     ///<
796     SPDIF_CS_CopyProtect_CopyOnce       = 0x33,     ///<
797     SPDIF_CS_CopyProtect_CopyNever      = 0x34,     ///<
798 } AUDIO_SPDIF_CS_TYPE_STATUS;
799 
800 //====== SPDIF OUTPUT CS Mode TYPE========
801 typedef enum
802 {
803     SPDIF_CHANNEL_STATUS_FS,            ///< Set sampling rate in CS3
804     SPDIF_CHANNEL_STATUS_CATEGORY,      ///< Set Category code in CS1
805     SPDIF_CHANNEL_STATUS_PCM_FORMAT,    ///< Set PCM/NonPCM mode in CS0
806     SPDIF_CHANNEL_STATUS_SOURCE_NUMBER,    ///< Set source number in CS2
807     SPDIF_CHANNEL_STATUS_CHANNEL_NUMBER,    ///< Set Channel number in CS2
808 } SPDIF_CS_MODE_TYPE;
809 
810 typedef enum
811 {
812     SPDIF_CS_FS_32K                     = 0xC0,
813     SPDIF_CS_FS_44K                     = 0x00,
814     SPDIF_CS_FS_48K                     = 0x40,     ///< ==>default setting
815     SPDIF_CS_CATEGORY_NONE              = 0x00,
816     SPDIF_CS_CATEGORY_DVB               = 0x30,     ///Broadcast reception of digital audio with europe
817     SPDIF_CS_CATEGORY_ATSC              = 0x26,     ///Broadcast reception of digital audio with america
818     SPDIF_CS_CATEGORY_ISDB              = 0x20,     ///Broadcast reception of digital audio with japen
819     SPDIF_CS_FORMAT_PCM                 = 0x00,
820     SPDIF_CS_FORMAT_NONPCM              = 0x40,
821 }SPDIF_CS_MODE_VALUE;
822 
823 //================================================================
824 //  SIF ENUM
825 //================================================================
826 //======SIF Standard========
827 typedef enum
828 {
829     AU_SYS_NOT_READY,                   // 0
830     AU_SYS_M_BTSC,                      // 1
831     AU_SYS_M_EIAJ,                      // 2
832     AU_SYS_M_A2,                        // 3
833 
834     AU_SYS_BG_A2,                       // 4
835     AU_SYS_DK1_A2,                      // 5
836     AU_SYS_DK2_A2,                      // 6
837     AU_SYS_DK3_A2,                      // 7
838 
839     AU_SYS_BG_NICAM,                    // 8
840     AU_SYS_DK_NICAM,                    // 9
841     AU_SYS_I_NICAM,                     // 10
842     AU_SYS_L_NICAM,                     // 11
843     AU_SYS_FM_RADIO,                    // 12
844     AU_SYS_HI_DEV                       = 0x10,
845     AU_SYS_BUSY                         = 0x80,
846     STD_SEL_AUTO                        = 0xE0
847 }AUDIO_SIF_SET_STANDARD;
848 
849 //======SIF System Type========
850 typedef enum
851 {
852     A2_M_STANDARD                       = 0x00,
853     A2_BG_STANDARD,
854     A2_DK_STANDARD,
855     A2_I_STANDARD,
856     AM_STANDARD,
857     NICAM_BG_STANDARD,
858     NICAM_I_STANDARD,
859     HIDEV_M_STANDARD,
860     HIDEV_BG_STANDARD,
861     HIDEV_DK_STANDARD,
862     HIDEV_I_STANDARD,
863     BTSC_STANDARD,
864     FM_RADIO_STANDARD,
865     WRITE_THRESHOLD                     = 0x10
866 }AUDIO_SIF_SYSTEM_TYPE;
867 
868 
869 //======SIF Threshold Type========
870 typedef enum
871 {
872     CARRIER1_ON_AMP                     = 0x00,
873     CARRIER1_OFF_AMP,
874     CARRIER1_ON_NSR,
875     CARRIER1_OFF_NSR,
876     CARRIER2_ON_AMP,
877     CARRIER2_OFF_AMP,
878     CARRIER2_ON_NSR,
879     CARRIER2_OFF_NSR,
880     A2_PILOT_ON_AMP,
881     A2_PILOT_OFF_AMP,
882 
883     NICAM_ON_SIGERR                     = 0x0,
884     NICAM_OFF_SIGERR                    = 0x1,
885 
886     BTSC_MONO_ON_NSR_RATIO              = 0x0,
887     BTSC_MONO_OFF_NSR_RATIO             = 0x1,
888     BTSC_PILOT_AMPLITUDE_ON             = 0x2,
889     BTSC_PILOT_AMPLITUDE_OFF            = 0x3,
890     BTSC_SAP_ON_NSR_RATIO               = 0x4,
891     BTSC_SAP_OFF_NSR_RATIO              = 0x5,
892     BTSC_STEREO_ON_RATIO                = 0x6,
893     BTSC_STEREO_OFF_NSR_RATIO           = 0x7,
894     BTSC_SAP_AMPLITUDE_ON               = 0x8,
895     BTSC_SAP_AMPLITUDE_OFF              = 0x9,
896     BTSC_HIDEV_ON_NSR_RATIO             = 0xA,
897     BTSC_HIDEV_OFF_NSR_RATIO            = 0xB
898 }AUDIO_SIF_THRESHOLD_TYPE;
899 
900 //======SIF Gain Type========
901 typedef enum
902 {
903     PRESCALE_STEP_ONE_DB                = 0x04,
904     SET_PRESCALE_A2_FM                  = 0x00,
905     SET_PRESCALE_NICAM                  = 0x01,
906     SET_PRESCALE_AM                     = 0x02,
907     SET_PRESCALE_HIDEV                  = 0x03,
908     SET_PRESCALE_FM_M                   = 0x04,
909     SET_PRESCALE_HIDEV_M                = 0x05,
910 
911     SET_PRESCALE_BTSC                   = 0x00,
912     SET_PRESCALE_BTSC_MONO              = 0x01,
913     SET_PRESCALE_BTSC_STEREO            = 0x02,
914     SET_PRESCALE_BTSC_SAP               = 0x03,
915 
916     SET_PRESCALE_FM_RADIO               = 0x00,
917     SET_PRESCALE_FM_RADIO_MONO          = 0x01,
918     SET_PRESCALE_FM_RADIO_STEREO        = 0x02
919 
920 }AUDIO_SIF_GAIN_TYPE;
921 
922 enum
923 {
924     AU_STATUS_MUTE                      = 0x00,
925     AU_STATUS_MONO                      = 0x01,    // Primary Mono
926     AU_STATUS_STEREO                    = 0x02,    // Primary Stereo
927     AU_STATUS_SAP                       = 0x04,    // Second Audio Program
928     AU_STATUS_NICAM                     = 0x08,    // Second Audio Program
929     AU_STATUS_NICAM_MONO                = 0x10
930 };
931 
932 //  enum for sif command
933 typedef enum
934 {
935     // need to compatible with En_AUD_SIF_CmdType at apiAUDIO.h
936     AU_SIF_CMD_SET_STOP                 = 0x00,
937     AU_SIF_CMD_SET_PLAY                 = 0x01,
938     AU_SIF_CMD_ENABLE_HIDEV             = 0x02,
939     AU_SIF_CMD_SET_HIDEV_FILTER_BW_LEVEL= 0x03,
940     AU_SIF_CMD_RESET_FC_TRACKING        = 0x04,
941     AU_SIF_CMD_ENABLE_FC_TRACKING       = 0x05,
942     AU_SIF_CMD_SET_ADC_FROM_VIF_PATH    = 0x06,
943     AU_SIF_CMD_ENABLE_AUTO_MUTE         = 0x07,
944     AU_SIF_CMD_ENABLE_BEEPER_FUNCTION   = 0x08,
945     AU_SIF_CMD_SET_BEEPER_TONE          = 0x09,
946     AU_SIF_CMD_ENABLE_AGC               = 0x0A,
947     AU_SIF_CMD_RESET_AGC                = 0x0B,
948     AU_SIF_CMD_STANDARD_RESET           = 0x0C,
949     AU_SIF_CMD_DETECT_MAIN_STD_ONLY     = 0x0D,
950     AU_SIF_CMD_ENABLE_AUTO_SOUNDMODE    = 0x0E,
951     AU_SIF_CMD_SET_FM_RADIO_DeEmp       = 0x0F,
952     AU_SIF_CMD_SET_FM_RADIO_FC_TRACK    = 0x10,
953     AU_SIF_CMD_FM_RADIO_RESET           = 0x11,
954     AU_SIF_CMD_FMTX_SET_PREEMP          = 0x12,
955     AU_SIF_CMD_SET_ENC_CMD              = 0x13,
956     AU_SIF_CMD_SET_ENC_Input_attenuation                 = 0x14,
957     AU_SIF_CMD_SET_ENC_Output_scaling                = 0x15,
958     AU_SIF_CMD_SET_BTSC_Enc_M_Gain                 =0x16,
959     AU_SIF_CMD_SET_BTSC_Enc_D_Gain                 = 0x17,
960     AU_SIF_CMD_SET_BTSC_Enc_SAP_Gain                 = 0x18,
961 
962     // internal used at sif driver.
963     AU_SIF_CMD_SET_STD                  = 0x40,
964     AU_SIF_CMD_SET_SUB_CARRIER_STD      = 0x41,
965     AU_SIF_CMD_SET_CARRIER_DEBOUNCE     = 0x42,
966     AU_SIF_CMD_ENABLE_SIF_SYNTHESIZER   = 0x43,
967     AU_SIF_CMD_ENABLE_CHANNEL           = 0x44,
968     AU_SIF_CMD_SET_SIFFIFO_MODE         = 0x45,
969     AU_SIF_CMD_DK123_MONITOR            = 0x46,
970 
971     // internal used at sif driver.
972     AU_SIF_CMD_GET_HIDEV_ENABLE         = 0x80,
973     AU_SIF_CMD_GET_HIDEV_FILTER_BW_LEVEL= 0x81,
974     AU_SIF_CMD_GET_ADC_FROM_VIF_PATH    = 0x82,
975     AU_SIF_CMD_GET_FM_A2_MODE_STATUS    = 0x83,
976     AU_SIF_CMD_GET_BTSC_MODE_STATUS     = 0x84,
977     AU_SIF_CMD_GET_NICAM_MODE_STATUS    = 0x85,
978     AU_SIF_CMD_GET_STANDARD_STATUS      = 0x86,
979     AU_SIF_CMD_GET_STANDARD_CMD         = 0x87,
980     AU_SIF_CMD_GET_NSR_CMD              = 0x88,
981     AU_SIF_CMD_GET_AMP_CMD              = 0x89,
982     AU_SIF_CMD_GET_FM_RADIO_MODE_STATUS = 0x8A,
983     AU_SIF_CMD_GET_FM_RADIO_DC_AMP      = 0x8B,
984     AU_SIF_CMD_GET_FM_RADIO_NSR         = 0x8C,
985     AU_SIF_CMD_GET_VIF_PATCH_ENABLE     = 0x90,
986     AU_SIF_CMD_SET_SIF_SHIFT_CLK        = 0x91,
987     AU_SIF_CMD_SET_FM_CH2_FILTER_BW_LEVEL= 0x92,
988 
989     AU_SIF_CMD2_ADC_VIA_VIF_PIN = 0x01
990 } AU_SIF_CMD;
991 
992 #if defined(UFO_PUBLIC_HEADER_212)
993 //====== DSP code Type========
994 typedef enum
995 {
996     AU_DVB_STANDARD_INVALID             = 0xFF,
997     AU_DVB_STANDARD_DEC_DSP             = 0x00,    // define for dsp load code
998     AU_DVB_STANDARD_DEC_DSP_EXT         = 0x10,    // define for dsp load code
999     AU_DVB_NONE                         = 0x00,     //0x00
1000     AU_DVB_DEC_NONE,                    //0x01
1001     AU_DVB_ENC_NONE,                    //0x02
1002     AU_DVB_STANDARD_MPEG,               //0x03
1003     AU_DVB_STANDARD_AC3,                //0x04
1004     AU_DVB_STANDARD_AC3P,               //0x05
1005     AU_DVB_STANDARD_AAC,                //0x06
1006     AU_DVB_STANDARD_MP3,                //0x07
1007     AU_DVB_STANDARD_WMA,                //0x08
1008     AU_DVB_STANDARD_RESERVE3,           //0x09
1009     AU_DVB_STANDARD_RA8LBR,             //0x0A
1010     AU_DVB_STANDARD_XPCM,               //0x0B
1011     AU_DVB_STANDARD_TONE,               //0x0C
1012     AU_DVB_STANDARD_DTS,                //0x0D
1013     AU_DVB_STANDARD_MS10_DDT,           //0x0E
1014     AU_DVB_STANDARD_MS10_DDC,           //0x0F
1015     AU_DVB_STANDARD_WMA_PRO,            //0x10
1016     AU_DVB_STANDARD_FLAC,               //0x11
1017     AU_DVB_STANDARD_VORBIS,             //0x12
1018     AU_DVB_STANDARD_DTSLBR,             //0x13
1019     AU_DVB_STANDARD_AMR_NB,             //0x14
1020     AU_DVB_STANDARD_AMR_WB,             //0x15
1021     AU_DVB_STANDARD_DRA,                //0x16
1022     AU_DVB_STANDARD_MPEG_AD,            //0x17
1023     AU_DVB_STANDARD_DolbyTrueHD_Bypass, //0x18
1024     AU_DVB_STANDARD_DTSHD_ADO, //0x19
1025     AU_DVB_STANDARD_MAX,
1026 
1027     AU_DVB_STANDARD_ENC                 = 0x20,    // define for dsp load code
1028     AU_DVB_STANDARD_MPEG_EN             = 0x20,
1029 
1030     AU_DVB2_STANDARD_SE_DSP             = 0x30,    // define for dsp load code
1031     //AU_DVB2_STANDARD_SE_DSP_EXT         = 0x40,    // need to refine ADV judgement first.
1032     AU_DVB2_NONE                        = 0x30,
1033     AU_DVB2_STANDARD_MPEG_AD ,
1034     AU_DVB2_STANDARD_AC3_AD,
1035     AU_DVB2_STANDARD_AC3P_AD,
1036     AU_DVB2_STANDARD_AAC_AD,
1037     AU_DVB2_STANDARD_DDE,
1038     AU_DVB2_STANDARD_GAAC_AD,
1039     AU_DVB2_STANDARD_MP3,
1040     AU_DVB2_STANDARD_MPEG_EN,
1041     AU_DVB2_STANDARD_XPCM,
1042     AU_DVB2_STANDARD_KTV,
1043     AU_DVB2_STANDARD_KTV2,
1044     AU_DVB2_STANDARD_DTS,
1045     AU_DVB2_STANDARD_TONEGEN,
1046     AU_DVB2_STANDARD_DolbyTrueHD_Bypass,
1047     AU_DVB2_STANDARD_DTSHD_ADO,
1048     AU_DVB2_STANDARD_MAX,
1049 
1050     AU_DVB2_ADVSND                      = 0x40,    // define for dsp load code
1051     AU_DVB2_ADVSND_PL2                  = 0x40,
1052     AU_DVB2_ADVSND_BBE,
1053     AU_DVB2_ADVSND_SRS,
1054     AU_DVB2_ADVSND_VDS,
1055     AU_DVB2_ADVSND_VSPK,
1056     AU_DVB2_ADVSND_SUPV,
1057     AU_DVB2_ADVSND_TSHD,
1058     AU_DVB2_ADVSND_DTS_ULTRA_TV,
1059     AU_DVB2_ADVSND_TSHDVIQ,
1060     AU_DVB2_ADVSND_AUDSY,
1061     AU_DVB2_ADVSND_DBX,
1062     AU_DVB2_ADVSND_THEATERSOUND,
1063     AU_DVB2_ADVSND_PURESND,
1064     AU_DVB2_ADVSND_STUDIOSOUND_3D,
1065     AU_DVB2_ADVSND_MAX,
1066 
1067     AU_DEC_SYSTEM                       = 0x50,
1068     AU_SE_SYSTEM                        = 0x60,
1069 
1070     AU_KTV_ENC                          = 0x70,
1071     AU_KTV_FUNC                         = 0x80,
1072     AU_KTV_SYSTEM                       = 0x90,
1073 
1074     AU_SND_EFFECT                       = 0xa0,
1075 
1076     AU_STANDARD_SIF_TYPE                = 0xb0,
1077     AU_SIF_NONE                         = 0xb0,
1078     AU_SIF_BTSC ,
1079     AU_SIF_EIAJ,
1080     AU_SIF_PALSUM,
1081     AU_SIF_FM_RADIO,
1082 
1083     AU_ATVENC_NONE                      = 0xc0,
1084     AU_ATVENC_FMTx,
1085     AU_ATVENC_BTSC,
1086 
1087     AU_DVB2_ENCODE_NONE                 = 0xd0,    // define for snd_dsp encode code for because 0x30 has no free enum
1088     AU_DVB2_ENCODE_DTSE        = 0xd1,
1089     AU_DVB2_ENCODE_MS10_DDE    = 0xd2,
1090     AU_DVB2_ENCODE_DDE    = 0xd3,
1091     AU_DVB2_ENCODE_MAX,
1092 
1093     AU_DEC_ES_BYPASS,
1094 
1095 }AUDIO_DSP_CODE_TYPE;
1096 #endif
1097 
1098 typedef enum
1099 {
1100     AU_SIF_PAL_MONO,
1101     AU_SIF_PAL_HIDEV,
1102     AU_SIF_PAL_A2,
1103     AU_SIF_PAL_NICAM
1104 }AUDIO_SIF_PAL_TYPE;
1105 
1106 typedef enum
1107 {
1108     AU_MODE_MONO,                       ///< MONO
1109     AU_MODE_STEREO,                     ///< STEREO
1110     AU_MODE_SAP,                        ///< SAP
1111     AU_MODE_LANG_A,                     ///< LANG_A
1112     AU_MODE_LANG_B,                     ///< LANG_B
1113     AU_MODE_LANG_AB,                    ///< LANG_AB
1114     AU_MODE_FORCE_NICAM,                ///< FORCE_NICAM
1115     AU_MODE_NICAM_MONO,
1116     AU_MODE_AUTO                        = 0x80      ///< auto switch to mono & mute
1117 } AUDIO_SIF_SOUND_MODE;
1118 
1119 
1120 //================================================================
1121 //  DVB/MAD ENUM
1122 //================================================================
1123 //====== DSP Running Counter Type========
1124 typedef enum
1125 {
1126     DSP_DEC_MAIN_COUNTER,               /// Main counter for 1st DSP
1127     DSP_DEC_TIMER_COUNTER,              /// Timer counter for 1st DSP
1128     DSP_SE_MAIN_COUNTER,                /// Main counter for 2nd DSP
1129     DSP_SE_TIMER_COUNTER,               /// Timer counter for 2nd DSP
1130     DSP_SE_ISR_COUNTER,                 /// ISR counter for 2nd DSP
1131     DEC_R2_MAIN_COUNTER,                /// Main counter for DEC R2
1132     DEC_R2_TIMER_COUNTER,               /// Timer counter for DEC R2
1133     SND_R2_MAIN_COUNTER,                /// Main counter for SND R2
1134     SND_R2_TIMER_COUNTER                /// Timer counter for SND R2
1135 } AUDIO_DSP_COUNTER_TYPE;
1136 
1137 ///< Audio decoder system (1st & 2nd) type
1138 typedef enum
1139 {
1140     MSAPI_AUD_DVB_INVALID               = 0xFF,     ///< 0xFF: System=Invalid
1141 
1142     //DTV / MM Audio main decoder
1143     MSAPI_AUD_DVB_NONE                  = 0x00,     ///< 0x00: System=None
1144     MSAPI_AUD_DVB_MPEG,                 ///< 0x01: System=MPEG
1145     MSAPI_AUD_DVB_AC3,                  ///< 0x02: System=AC3
1146     MSAPI_AUD_DVB_AC3P,                 ///< 0x03: System=AC3+
1147     MSAPI_AUD_DVB_AAC,                  ///< 0x04: System=AAC
1148     MSAPI_AUD_DVB_MP3,                  ///< 0x05: System=MP3
1149     MSAPI_AUD_DVB_WMA,                  ///< 0x06: System=WMA
1150     MSAPI_AUD_DVB_CDLPCM,               ///< 0x07: System=LPCM
1151     MSAPI_AUD_DVB_RA8LBR,               ///< 0x08: System=RA8 LBR
1152     MSAPI_AUD_DVB_XPCM,                 ///< 0x09: System=XPCM
1153     MSAPI_AUD_DVB_TONE,                 ///< 0x0A: System=TONE
1154     MSAPI_AUD_DVB_DTS,                  ///< 0x0B: System=DTS
1155     MSAPI_AUD_DVB_MS10_DDT,             ///< 0x0C: System=MS10 DDT
1156     MSAPI_AUD_DVB_MS10_DDC,             ///< 0x0D: System=MS10 DDC
1157     MSAPI_AUD_DVB_WMA_PRO,              ///< 0x0E: System=WMA PRO
1158     MSAPI_AUD_DVB_FLAC,                 ///< 0x0F: System=FLAC
1159     MSAPI_AUD_DVB_VORBIS,               // 0x10
1160     MSAPI_AUD_DVB_DTSLBR,               // 0x11
1161     MSAPI_AUD_DVB_AMR_NB,               // 0x12
1162     MSAPI_AUD_DVB_AMR_WB,               // 0x13
1163     MSAPI_AUD_DVB_DRA,                  // 0x14
1164     MSAPI_AUD_DVB_DolbyTrueHDBypass,    ///< 0x15: Dolby TruHD bypass
1165     MSAPI_AUD_DVB_DTSHDADO,             //0x16:
1166     MSAPI_AUD_DVB_DTSXLL,               // 0x17
1167     MSAPI_AUD_DVB_ES_Bypass,            //0x18:   System=ES Bypass
1168     MSAPI_AUD_DVB_MAX,
1169 
1170     //DTV Audio decoder 2 (for AD)
1171     MSAPI_AUD_DVB2_NONE                 = 0x30,     ///< 0x30: System=None
1172     MSAPI_AUD_DVB2_MPEG,                ///< 0x31: System=MPEG AD
1173     MSAPI_AUD_DVB2_AC3,                 ///< 0x32: System=AC3 AD
1174     MSAPI_AUD_DVB2_MP3,                 ///< 0x33: System=2nd MP3
1175     MSAPI_AUD_DVB2_AAC,                 ///< 0x34: System=AAC AD
1176     MSAPI_AUD_DVB2_GAAC,                ///< 0x35: System=GAAC AD
1177     MSAPI_AUD_DVB2_AC3P,                ///< 0x36: System=AC3P AD
1178     MSAPI_AUD_DVB2_DDE,                 ///< 0x37: System=AC3 Encoder
1179     MSAPI_AUD_DVB2_DTSE,                ///< 0x38: System=DTS Encoder
1180     MSAPI_AUD_DVB2_XPCM,
1181     MSAPI_AUD_DVB2_KTV,
1182     MSAPI_AUD_DVB2_KTV2,
1183     MSAPI_AUD_DVB2_DTS,
1184     MSAPI_AUD_DVB2_TONEGEN,
1185     MSAPI_AUD_DVB2_DolbyTrueHDBypass,    ///< 0x15: Dolby TruHD bypass
1186     MSAPI_AUD_DVB2_DTSHDADO,             //0x16:
1187     MSAPI_AUD_DVB2_MAX,
1188 
1189     //ATV SIF
1190     MSAPI_AUD_ATV_NONE                  = 0xB0,     ///< 0xB0: System=None
1191     MSAPI_AUD_ATV_BTSC,                 ///< 0xB1: System=BTSC
1192     MSAPI_AUD_ATV_EIAJ,
1193     MSAPI_AUD_ATV_PAL,                  ///< 0xB3: System=PALSUM
1194     MSAPI_AUD_ATV_FM_RADIO,             ///< 0xB4: System=FM_RADIO
1195     MSAPI_AUD_ATV_MAX,
1196 
1197     //ATV ENC
1198     MSAPI_AUD_ATVENC_NONE               = 0xC0,     ///< 0xC0: System=None
1199     MSAPI_AUD_ATVENC_FMTX,              ///< 0xC1: System=FM_Tx
1200     MSAPI_AUD_ATVENC_BTSC,              ///< 0xC2: System=BTSC_Enc
1201     MSAPI_AUD_ATVENC_MAX
1202 } En_DVB_decSystemType;
1203 
1204 typedef enum
1205 {
1206     Audio_DEC_SYS                       = 0x00000000,
1207     Audio_DEC_PCM                       = 0x00000001,
1208     Audio_DEC_XPCM                      = 0x00000002,
1209     Audio_DEC_MPEG                      = 0x00000004,
1210     Audio_DEC_MP3                       = 0x00000008,
1211     Audio_DEC_AC3                       = 0x00000010,
1212     Audio_DEC_AC3P                      = 0x00000020,
1213     Audio_DEC_AAC_LC                    = 0x00000040,
1214     Audio_DEC_HEAAC_V1                  = 0x00000080,
1215     Audio_DEC_HEAAC_V2                  = 0x00000100,
1216     Audio_DEC_DOLBYPULSE                = 0x00000200,
1217     Audio_DEC_WMA                       = 0x00000400,
1218     Audio_DEC_WMAPRO                    = 0x00000800,
1219     Audio_DEC_RA8                       = 0x00001000,
1220     Audio_DEC_DTS                       = 0x00002000,
1221     Audio_DEC_FLAC                      = 0x00004000,
1222     Audio_DEC_VORBIS                    = 0x00008000,
1223     Audio_DEC_KTV                       = 0x00010000,
1224     Audio_DEC_KTV2                      = 0x00020000,
1225     Audio_DEC_AMR_NB                    = 0x00040000,
1226     Audio_DEC_AMR_WB                    = 0x00080000,
1227     Audio_DEC_DRA                       = 0x00100000,
1228     Audio_DEC_DTSLBR                    = 0x00200000,
1229     Audio_DEC_Dolby_TrueHD_Bypass_R2    = 0x00400000,
1230     Audio_DEC_DTS_HD_ADO_R2             = 0x00800000,
1231     Audio_DEC_DTSXLL                    = 0x01000000,
1232     Audio_DEC_NULL                      = 0xFFFFFFFF
1233 
1234 } MMA_AudioType;
1235 
1236 //====== MMA ========
1237 typedef enum
1238 {
1239     MMA_STOP,
1240     MMA_PLAY,
1241     MMA_PLAY_FILETSP,
1242     MMA_RESYNC,
1243     MMA_PLAY_FILE,
1244     MMA_BROWSE,
1245     MMA_PAUSE,
1246     MMA_PLAY_FRAME,
1247     MMA_PLAY_FRAME_GS,
1248     MMA_PLAY_AD,
1249     MMA_STOP_AD,
1250     MMA_AVSYNC,
1251     MMA_FREERUN,
1252 } MMA_AUDIO_CONTROL;
1253 
1254 typedef enum
1255 {
1256   /*********  New Interface ********/
1257     Audio_Comm_infoType_MMA_init = 0x60,
1258     Audio_Comm_infoType_MMA_finish,
1259     Audio_Comm_infoType_STC_Select,
1260     Audio_Comm_infoType_HDMI_ChannelStatus_1st_64bits,
1261     Audio_Comm_infoType_HDMI_ChannelStatus_2nd_64bits,
1262     Audio_Comm_infoType_HDMI_ChannelStatus_3rd_64bits,
1263     Audio_Comm_infoType_HDMI_UserData_1st_64bits,
1264     Audio_Comm_infoType_HDMI_UserData_2nd_64bits,
1265     Audio_Comm_infoType_HDMI_UserData_3rd_64bits,
1266     Audio_Comm_infoType_HDMI_HWbypassmode,
1267     Audio_Comm_infoType_setHdmiDelay,
1268     Audio_Comm_infoType_Is_Audio_Sync,
1269     Audio_comm_infoType_Get_Main_Input_Source_Info,
1270     Audio_comm_infoType_Get_Sub_Input_Source_Info,
1271     Audio_comm_infoType_Set_Input_Path,
1272 
1273     /*******************************************************************/
1274     /* If you want add new cmd below,                                  */
1275     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order" */
1276     /*******************************************************************/
1277     Audio_Comm_infoType_ADEC1_capability = 0x70,
1278     Audio_Comm_infoType_ADEC1_setAudioDecoder,
1279     Audio_Comm_infoType_ADEC1_currAudDecStatus,
1280     Audio_Comm_infoType_ADEC1_AudioSyncStatus,   // 1 : AV-Sync  0: Free-run
1281     Audio_Comm_infoType_ADEC1_sampleRate,
1282     Audio_Comm_infoType_ADEC1_bitRate,
1283     Audio_Comm_infoType_ADEC1_acmod,
1284     Audio_Comm_infoType_ADEC1_soundmod,
1285     Audio_Comm_infoType_ADEC1_reqDataSize,
1286     Audio_Comm_infoType_ADEC1_okFrmCnt,
1287     Audio_Comm_infoType_ADEC1_errFrmCnt,
1288     Audio_Comm_infoType_ADEC1_1ms_timeStamp,
1289     Audio_Comm_infoType_ADEC1_33bit_PTS,
1290     Audio_Comm_infoType_ADEC1_33bit_STCPTS_DIFF,
1291     Audio_Comm_infoType_ADEC1_esBuf_reqFlag,       //new
1292     Audio_Comm_infoType_ADEC1_esBuf_reqAddr,
1293     Audio_Comm_infoType_ADEC1_esBuf_reqSize,
1294     Audio_Comm_infoType_ADEC1_esBuf_informDataRdy, //new
1295     Audio_Comm_infoType_ADEC1_esBuf_currLevel,
1296     Audio_Comm_infoType_ADEC1_pcmBuf_currLevel,
1297     Audio_Comm_infoType_ADEC1_playControl,
1298     Audio_Comm_infoType_ADEC1_FF2X,
1299     Audio_Comm_infoType_ADEC1_mute,
1300     Audio_Comm_infoType_syncSTC_in_mmTs,
1301     Audio_Comm_infoType_ADEC1_play_wo_output,
1302     Audio_Comm_infoType_ADEC1_audio_unsupported,
1303     Audio_Comm_infoType_ADEC1_UNI_PCMOutCnt,       // UNI_DEC1_PCM1 -> MIPS out size
1304     Audio_Comm_infoType_ADEC1_UNI_pcm_wptr,        // DEC1 -> UNI_DEC1_PCM1 wptr
1305     Audio_Comm_infoType_ADEC1_UNI_pcm_decSize,     // DEC1 -> UNI_DEC1_PCM1 w_size
1306     Audio_Comm_infoType_ADEC1_UNI_PCMInput_Addr,   // MISP -> UNI_DEC1_PCM3 wptr
1307     Audio_Comm_infoType_ADEC1_UNI_OutPCMLevel,     // UNI_DEC1_PCM3 level count
1308     Audio_Comm_infoType_ADEC1_avSyncOffset,
1309     Audio_Comm_infoType_ADEC1_Set_play_smpRate = 0x1000,
1310     Audio_Comm_infoType_ADEC1_Get_PTS_latency,
1311     Audio_Comm_infoType_ADEC1_Get_PCM_bufferEmpty,
1312 
1313     /********************************************************************/
1314     /* Please Add ADEC 1 cmd above                                      */
1315     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order"  */
1316     /********************************************************************/
1317     Audio_Comm_infoType_ADEC1_setDecParam = 0x8F,
1318     Audio_Comm_infoType_ADEC1_getDecInfo1 = 0x90,
1319     Audio_Comm_infoType_ADEC1_getDecInfo2,
1320     Audio_Comm_infoType_ADEC1_getDecInfo3,
1321     Audio_Comm_infoType_ADEC1_getDecInfo4,
1322     Audio_Comm_infoType_ADEC1_getDecInfo5,
1323     Audio_Comm_infoType_ADEC1_getDecInfo6,
1324     Audio_Comm_infoType_ADEC1_getDecInfo7,
1325     Audio_Comm_infoType_ADEC1_getDecInfo8,
1326     Audio_Comm_infoType_ADEC1_getDecChannelInfo,
1327     Audio_Comm_infoType_ADEC1_getlatest_PTS,
1328     Audio_Comm_infoType_ADEC1_avsync_delay,
1329     Audio_Comm_infoType_ADEC1_avsync_delay_upperlimit,
1330 
1331     /********************************************************************/
1332     /* If you want add new cmd below,                                   */
1333     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order"  */
1334     /********************************************************************/
1335     Audio_Comm_infoType_ADEC2_capability = 0xA0,
1336     Audio_Comm_infoType_ADEC2_setAudioDecoder,
1337     Audio_Comm_infoType_ADEC2_currAudDecStatus,
1338     Audio_Comm_infoType_ADEC2_AudioSyncStatus,   // 1 : AV-Sync  0: Free-run
1339     Audio_Comm_infoType_ADEC2_sampleRate,
1340     Audio_Comm_infoType_ADEC2_bitRate,
1341     Audio_Comm_infoType_ADEC2_acmod,
1342     Audio_Comm_infoType_ADEC2_soundmod,
1343     Audio_Comm_infoType_ADEC2_reqDataSize,
1344     Audio_Comm_infoType_ADEC2_okFrmCnt,
1345     Audio_Comm_infoType_ADEC2_errFrmCnt,
1346     Audio_Comm_infoType_ADEC2_1ms_timeStamp,
1347     Audio_Comm_infoType_ADEC2_33bit_PTS,
1348     Audio_Comm_infoType_ADEC2_33bit_STCPTS_DIFF,
1349     Audio_Comm_infoType_ADEC2_esBuf_reqFlag,
1350     Audio_Comm_infoType_ADEC2_esBuf_reqAddr,
1351     Audio_Comm_infoType_ADEC2_esBuf_reqSize,
1352     Audio_Comm_infoType_ADEC2_esBuf_informDataRdy,
1353     Audio_Comm_infoType_ADEC2_esBuf_currLevel,
1354     Audio_Comm_infoType_ADEC2_pcmBuf_currLevel,
1355     Audio_Comm_infoType_ADEC2_playControl,
1356     Audio_Comm_infoType_ADEC2_FF2X,
1357     Audio_Comm_infoType_ADEC2_mute,
1358     Audio_Comm_infoType_ADEC2_syncSTC_in_mmTs,
1359     Audio_Comm_infoType_ADEC2_play_wo_output,
1360     Audio_Comm_infoType_ADEC2_audio_unsupported,
1361     Audio_Comm_infoType_ADEC2_UNI_PCMOutCnt,       // UNI_DEC2_PCM1 -> MIPS out size
1362     Audio_Comm_infoType_ADEC2_UNI_pcm_wptr,        // DEC2 -> UNI_DEC2_PCM1 wptr
1363     Audio_Comm_infoType_ADEC2_UNI_pcm_decSize,     // DEC2 -> UNI_DEC2_PCM1 w_size
1364     Audio_Comm_infoType_ADEC2_UNI_PCMInput_Addr,   // MISP -> UNI_DEC2_PCM3 wptr
1365     Audio_Comm_infoType_ADEC2_UNI_OutPCMLevel,     // UNI_DEC2_PCM3 level count
1366     Audio_Comm_infoType_ADEC2_avSyncOffset,
1367 
1368     /********************************************************************/
1369     /* Please Add ADEC 2 cmd above                                      */
1370     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order"  */
1371     /********************************************************************/
1372     Audio_Comm_infoType_ADEC2_setDecParam = 0xBF,
1373     Audio_Comm_infoType_ADEC2_getDecInfo1 = 0xC0,
1374     Audio_Comm_infoType_ADEC2_getDecInfo2,
1375     Audio_Comm_infoType_ADEC2_getDecInfo3,
1376     Audio_Comm_infoType_ADEC2_getDecInfo4,
1377     Audio_Comm_infoType_ADEC2_getDecInfo5,
1378     Audio_Comm_infoType_ADEC2_getDecInfo6,
1379     Audio_Comm_infoType_ADEC2_getDecInfo7,
1380     Audio_Comm_infoType_ADEC2_getDecInfo8,
1381     Audio_Comm_infoType_ADEC2_getDecChannelInfo,
1382 
1383     /**********************************************************************/
1384     /* If you want add new cmd below,                                     */
1385     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order"    */
1386     /**********************************************************************/
1387     Audio_Comm_infoType_ADEC3_capability = 0xD0,
1388     Audio_Comm_infoType_ADEC3_setAudioDecoder,
1389     Audio_Comm_infoType_ADEC3_currAudDecStatus,
1390     Audio_Comm_infoType_ADEC3_AudioSyncStatus,   // 1 : AV-Sync  0: Free-run
1391     Audio_Comm_infoType_ADEC3_sampleRate,
1392     Audio_Comm_infoType_ADEC3_bitRate,
1393     Audio_Comm_infoType_ADEC3_acmod,
1394     Audio_Comm_infoType_ADEC3_soundmod,
1395     Audio_Comm_infoType_ADEC3_reqDataSize,
1396     Audio_Comm_infoType_ADEC3_okFrmCnt,
1397     Audio_Comm_infoType_ADEC3_errFrmCnt,
1398     Audio_Comm_infoType_ADEC3_1ms_timeStamp,
1399     Audio_Comm_infoType_ADEC3_33bit_PTS,
1400     Audio_Comm_infoType_ADEC3_33bit_STCPTS_DIFF,
1401     Audio_Comm_infoType_ADEC3_esBuf_reqFlag,
1402     Audio_Comm_infoType_ADEC3_esBuf_reqAddr,
1403     Audio_Comm_infoType_ADEC3_esBuf_reqSize,
1404     Audio_Comm_infoType_ADEC3_esBuf_informDataRdy,
1405     Audio_Comm_infoType_ADEC3_esBuf_currLevel,
1406     Audio_Comm_infoType_ADEC3_pcmBuf_currLevel,
1407     Audio_Comm_infoType_ADEC3_playControl,
1408     Audio_Comm_infoType_ADEC3_FF2X,
1409     Audio_Comm_infoType_ADEC3_mute,
1410     Audio_Comm_infoType_ADEC3_syncSTC_in_mmTs,
1411     Audio_Comm_infoType_ADEC3_play_wo_output,
1412     Audio_Comm_infoType_ADEC3_audio_unsupported,
1413     Audio_Comm_infoType_ADEC3_UNI_PCMOutCnt,       // UNI_DEC3_PCM1 -> MIPS out size
1414     Audio_Comm_infoType_ADEC3_UNI_pcm_wptr,        // DEC3 -> UNI_DEC3_PCM1 wptr
1415     Audio_Comm_infoType_ADEC3_UNI_pcm_decSize,     // DEC3 -> UNI_DEC3_PCM1 w_size
1416     Audio_Comm_infoType_ADEC3_UNI_PCMInput_Addr,   // MISP -> UNI_DEC3_PCM3 wptr
1417     Audio_Comm_infoType_ADEC3_UNI_OutPCMLevel,     // UNI_DEC3_PCM3 level count
1418     Audio_Comm_infoType_ADEC3_avSyncOffset,
1419 
1420     /**********************************************************************/
1421     /* Please Add ADEC 3 cmd above                                        */
1422     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order"    */
1423     /**********************************************************************/
1424     Audio_Comm_infoType_ADEC3_setDecParam = 0xEF,
1425     Audio_Comm_infoType_ADEC3_getDecInfo1 = 0xF0,
1426     Audio_Comm_infoType_ADEC3_getDecInfo2,
1427     Audio_Comm_infoType_ADEC3_getDecInfo3,
1428     Audio_Comm_infoType_ADEC3_getDecInfo4,
1429     Audio_Comm_infoType_ADEC3_getDecInfo5,
1430     Audio_Comm_infoType_ADEC3_getDecInfo6,
1431     Audio_Comm_infoType_ADEC3_getDecInfo7,
1432     Audio_Comm_infoType_ADEC3_getDecInfo8,
1433     Audio_Comm_infoType_ADEC3_getDecChannelInfo,
1434     Audio_Comm_infoType_ADEC3_getlatest_PTS,
1435     Audio_Comm_infoType_ADEC3_avsync_delay,
1436     Audio_Comm_infoType_ADEC3_avsync_delay_upperlimit,
1437 
1438     /****************************************************/
1439     /*  General audio cmd  */
1440     /****************************************************/
1441     Audio_Comm_infoType_DecStatus = 0x00,
1442     Audio_Comm_infoType_SampleRate,
1443     Audio_Comm_infoType_SoundMode,
1444     Audio_Comm_infoType_DecOutMode,
1445     Audio_Comm_infoType_ChannelMode,
1446     Audio_Comm_infoType_MMFileSize,
1447     Audio_Comm_infoType_33Bit_PTS,
1448     Audio_Comm_infoType_33Bit_STCPTS_DIFF,
1449     Audio_Comm_infoType_1ms_PTS,
1450     Audio_Comm_infoType_DEC1_BufferSize,
1451     Audio_Comm_infoType_DEC1_BufferAddr,
1452     Audio_Comm_infoType_DEC1_MMTag,
1453     Audio_Comm_infoType_DEC1_MMResidualPCM,
1454     Audio_Comm_infoType_DEC1_ESBufferSize,
1455     Audio_Comm_infoType_DEC1_PCMBufferSize,
1456     Audio_Comm_infoType_DEC2_BufferSize,
1457     Audio_Comm_infoType_DEC2_BufferAddr = 0x10,
1458     Audio_Comm_infoType_DEC2_MMTag,
1459     Audio_Comm_infoType_DEC2_MMResidualPCM,
1460     Audio_Comm_infoType_DecodeErrorCnt,
1461     Audio_Comm_infoType_MM_FFx2,
1462     Audio_Comm_infoType_setBypassSPDIF_PAPB_chk,
1463     Audio_Comm_infoType_CompressBin_LoadCode,
1464     Audio_Comm_infoType_CompressBin_DDRAddress,
1465     Audio_Comm_infoType_DMAReader_BufferLevel,
1466     Audio_Comm_infoType_DMAReader_Command,
1467     Audio_Comm_infoType_SetSCMS,
1468     Audio_Comm_infoType_GetSCMS,
1469     Audio_Comm_infoType_ADC_InputGain,
1470     Audio_Comm_infoType_KTV_SetType,
1471     Audio_Comm_infoType_getSignal_Energy,
1472     Audio_Comm_infoType_getNR_Status,
1473     Audio_Comm_infoType_setNR_Threshold = 0x20,
1474     Audio_Comm_infoType_setSPDIF_FS,
1475     Audio_Comm_infoType_getSPDIF_FS,
1476     Audio_Comm_infoType_setSpdifDelay,
1477     Audio_Comm_infoType_ReadByte,
1478     Audio_Comm_infoType_WriteByte,
1479     Audio_Comm_infoType_hdmiTx_outType,
1480     Audio_Comm_infoType_hdmiTx_outFreq,
1481     Audio_Comm_infoType_PTS_info,
1482     Audio_Comm_infoType_RTSP_Mem,
1483     Audio_Comm_infoType_setSpdif_BufferProcess,
1484     Audio_Comm_infoType_DEC1_setBufferProcess,
1485     Audio_Comm_infoType_setES_REQ_SZ,
1486     Audio_Comm_infoType_AD_OutputStyle,
1487     Audio_Comm_infoType_getHDMI_CopyRight_C_Bit,
1488     Audio_Comm_infoType_getHDMI_CopyRight_L_Bit,
1489     Audio_Comm_infoType_Set_UNI_NEED_DECODE_FRMCNT = 0x30,
1490     Audio_Comm_infoType_Set_UNI_ES_Wptr,
1491     Audio_Comm_infoType_Get_UNI_ES_MEMCNT,
1492     Audio_Comm_infoType_Set_MENU_WT_PTR,
1493     Audio_Comm_infoType_Get_MENU_WT_PTR,
1494     Audio_Comm_infoType_Get_MENU_KEY_CNT,
1495     Audio_Comm_infoType_Get_CurSynthRate,
1496     Audio_Comm_infoType_ADC1_InputGain,
1497     Audio_Comm_infoType_mainpath_mute_status,
1498     Audio_Comm_infoType_spdif_mute_status,
1499     Audio_Comm_infoType_hdmiTX_mute_status,
1500     Audio_Comm_infoType_SRC_Compensation,
1501     Audio_Comm_infoType_Dump_Dsp_Info,
1502     Audio_Comm_infoType_Set_Video_STCPTS_DIFF,
1503     Audio_Comm_infoType_Get_UNI_ES_Base,
1504     Audio_Comm_infoType_Get_UNI_ES_Size,
1505     Audio_Comm_infoType_Get_UNI_PCM_Base = 0x40,
1506     Audio_Comm_infoType_Get_UNI_PCM_Size,
1507     Audio_Comm_infoType_Get_AccumEsCnt,
1508     Audio_Comm_infoType_DSP_PLL_Setting,
1509     Audio_Comm_infoType_Set_CallBackFunc,
1510     Audio_Comm_infoType_Set_ALSA_Mode,  /* For OMX Dual Mono Setting */
1511     Audio_Comm_infoType_HDMI_Unstable_Protect,
1512     Audio_Comm_infoType_HDMI_Unstable_Threshold,
1513     Audio_Comm_infoType_Set_TEE_Capibility,
1514     Audio_Comm_infoType_Parser_Spec,  /* Support ISO 11172-1 for MM */
1515     Audio_Comm_infoType_Get_MultiPlayer_Capability,
1516     Audio_Comm_infoType_Get_Parser_Architecture,
1517     Audio_Comm_infoType_Set_CfgCtrlRegs_Lock,
1518     Audio_Comm_infoType_DMAReader_BufferSize,
1519     Audio_Comm_infoType_PUSI_disable_Info,  /*For STB only PES file in tsp.(need disable PUSI)*/
1520     Audio_Comm_infoType_Set_Parser,
1521     Audio_Comm_infoType_Parser_Info = 0x50,
1522     Audio_Comm_infoType_Get_Dolby_TrueHD_Bypass_Capability,
1523     Audio_Comm_infoType_Set_DFS_PowerSave,   /*DFS setting for saving power*/
1524     Audio_Comm_infoType_Is_Decoder_In_R2,  /*For IC with R2 Decoder*/
1525     Audio_comm_infoType_Get_audio_crash_status,
1526     Audio_Comm_infoType_mainAudio_setBufferProcess,
1527     Audio_comm_infoType_Get_Main_Input_Type,
1528     Audio_comm_infoType_Get_Sub_Input_Type,
1529     Audio_Comm_infoType_Multi_Channel,
1530     Audio_Comm_infoType_Vorbis_header_size = 0x5F,
1531 
1532     Audio_Comm_infoType_ES_PassThrough_DelaySmp = 0x2000,
1533     Audio_Comm_infoType_ES_PassThrough_PcmSmpRate,
1534     Audio_Comm_infoType_ES_PassThrough_HdmiSmpRate,
1535 
1536     Audio_Comm_infoType_HDMITx_Status,
1537 
1538     Audio_Comm_infoType_set_PAL_M_Type = 0x4000,
1539     Audio_Comm_infoType_set_PAL_N_Type,
1540     Audio_Comm_infoType_set_BTSC_M_Type,
1541 
1542     /*******************************************************/
1543     /*  Please Add common audio cmd above                  */
1544     /*******************************************************/
1545 
1546     Audio_Comm_infoType_Get_SE_Input_Main_BufferBase = 0x8000,
1547     Audio_Comm_infoType_Get_SE_Input_Main_BufferSize,
1548     Audio_Comm_infoType_Get_SE_Output_Main_BufferBase,
1549     Audio_Comm_infoType_Get_SE_Output_Main_BufferSize,
1550     Audio_Comm_infoType_Get_SE_PROCESS_FRAME_SMP_UNIT,
1551     Audio_Comm_infoType_Get_SE_PROCESS_FETCH_CHANNELS,
1552     Audio_Comm_infoType_Get_SE_PROCESS_STORE_CHANNELS,
1553     Audio_Comm_infoType_Get_SE_PROCESS_FETCH_FRAME_BYTE_SIZE,
1554     Audio_Comm_infoType_Get_SE_PROCESS_STORE_FRAME_BYTE_SIZE,
1555     Audio_Comm_infoType_Set_SE_Input_Main_Buffer_Feed = 0x8100,
1556     Audio_Comm_infoType_Set_SE_Output_Main_Buffer_Consume,
1557     Audio_Comm_infoType_Set_SE_Test_Init,
1558     Audio_Comm_infoType_Set_SE_Test_End,
1559     Audio_Comm_infoType_Set_SE_TONE_Test_Begin,
1560     Audio_Comm_infoType_Set_SE_PEQ_Test_Begin,
1561     Audio_Comm_infoType_Set_SE_GEQ_Test_Begin,
1562     Audio_Comm_infoType_Set_SE_AVC_Test_Begin,
1563     Audio_Comm_infoType_Set_SE_SRS_THEATER_SOUND_Begin,
1564     Audio_Comm_infoType_Set_SE_SONICEMOTION_ABS3D_Begin,
1565     Audio_Comm_infoType_Set_SE_BONGIOVI_DPS_Begin,
1566     Audio_Comm_infoType_Set_Debug_LOG_Level,
1567     Audio_Comm_infoType_Get_Dra_ChannelMode,
1568     Audio_Comm_infoType_Get_Max_DelayTime,
1569     Audio_Comm_infoType_Get_Min_DelayTime,
1570     Audio_Comm_infoType_Set_SE_DTS_STUDIOSOUND_3D_Begin,
1571 
1572     Audio_Comm_infoType_AUDIO_Get_ADEC0_R2CodeType,
1573     Audio_Comm_infoType_AUDIO_Get_ADEC1_R2CodeType,
1574     Audio_Comm_infoType_AUDIO_GetDsp2CodeType,
1575     Audio_Comm_infoType_LFE_Channel_Info,
1576     Audio_Comm_infoType_DAC_Clock_OnOff,
1577     Audio_Comm_infoType_MMTS_KEEP_33bit_PTS_FLAG,
1578     Audio_Comm_infoType_AUDIO_CHUNK_PTS,
1579     Audio_Comm_infoType_Get_AD_Cabability,
1580 
1581 } Audio_COMM_infoType;
1582 
1583 //================================================================
1584 //  Common PCM I/O ENUM
1585 //================================================================
1586 typedef enum
1587 {
1588     AUDIO_PCM_CMD_ALL, /* GET */
1589     AUDIO_PCM_CMD_NONBLOCKING, /* SET/GET */
1590     AUDIO_PCM_CMD_MULTICH, /* GET */
1591     AUDIO_PCM_CMD_MIXING, /* GET */
1592     AUDIO_PCM_CMD_MIXINGGROUP, /* SET/GET */
1593     AUDIO_PCM_CMD_BUFFER, /* GET only */
1594     AUDIO_PCM_CMD_BUFFERDURATION, /* SET/GET */
1595     AUDIO_PCM_CMD_READPTR, /* GET only */
1596     AUDIO_PCM_CMD_WRITEPTR, /* GET only */
1597     AUDIO_PCM_CMD_CHANNEL, /* SET/GET */
1598     AUDIO_PCM_CMD_SAMPLERATE, /* SET/GET */
1599     AUDIO_PCM_CMD_BITWIDTH, /* SET/GET */
1600     AUDIO_PCM_CMD_BIGENDIAN, /* SET/GET */
1601     AUDIO_PCM_CMD_TIMESTAMP, /* SET/GET */
1602     AUDIO_PCM_CMD_WEIGHTING, /* SET/GET */
1603     AUDIO_PCM_CMD_VOLUME, /* SET/GET */
1604     AUDIO_PCM_CMD_BUFFERLEVEL, /* GET only */
1605     AUDIO_PCM_CMD_MUTE, /* SET/GET */
1606     AUDIO_PCM_CMD_BUFFERSIZE, /* GET only */
1607 } AUDIO_PCM_COMMAND;
1608 
1609 // MPEG
1610 typedef enum
1611 {   //info Type name                    //Attibtue       //Parameter
1612     Audio_MPEG_infoType_DecStatus,      //R              //0:unlock  1:lock
1613     Audio_MPEG_infoType_SampleRate,     //R              //
1614     Audio_MPEG_infoType_BitRate,        //R              //
1615     Audio_MPEG_infoType_FrameNum,       //R              //
1616     Audio_MPEG_infoType_SoundMode,      //W              //0: LR / 1:LL / 2:RR
1617     Audio_MPEG_infoType_stereoMode,     //R              //0: Stereo / 1: / 2:RR
1618     Audio_MPEG_infoType_Layer,          //R              //1 / 2 / 3
1619     Audio_MPEG_infoType_Header,         //R              //
1620     Audio_MPEG_infoType_FFSpeed,        //W              //
1621     Audio_MPEG_infoType_MMFileSize,     //W              //enum FILE_SIZE
1622     Audio_MPEG_infoType_Emphasis,       //R              //
1623     Audio_MPEG_DTV_AVSYNC_OFFSET,       //W, unit= 33bits offset
1624     Audio_MPEG_infoType_PCMBufLev,      //RW
1625     Audio_MPEG_infoType_BufferDelay,    //RW
1626     Audio_MPEG_DTV_AVSYNC_DISABLE_SETTING,
1627     Audio_MPEG_MuteFrm_PcmHighLevel_Threshold_NumTimeOut,
1628     Audio_MPEG_MuteFrm_PcmHighLevel_MuteNum,
1629     Audio_MPEG_infoType_PcmHighLevel_Pcmdata
1630 } Audio_MPEG_infoType;
1631 
1632 typedef enum
1633 {
1634     AUD_MPEG_SOUNDMODE_LL,
1635     AUD_MPEG_SOUNDMODE_RR,
1636     AUD_MPEG_SOUNDMODE_LR,
1637     AUD_MPEG_SOUNDMODE_MIX_LR
1638 }AUD_MPEG_SOUNDMODE;
1639 
1640 typedef enum
1641 {
1642     MPEG_SOUND_MODE_STEREO =0,
1643     MPEG_SOUND_MODE_JOINT_STEREO,
1644     MPEG_SOUND_MODE_DUAL_CHAN,
1645     MPEG_SOUND_MODE_MONO
1646 }MPEG_SOUND_MODE;
1647 
1648 /// MP3 Layer
1649 typedef enum
1650 {
1651     Audio_MP3_LAYER_RESERVED            = 0x0,
1652     Audio_MP3_LAYER_3                   = 0x1,
1653     Audio_MP3_LAYER_2                   = 0x2,
1654     Audio_MP3_LAYER_1                   = 0x3,
1655     Audio_MP3_LAYER_NOT_DETERMINE_YET   = 0xFF,
1656 } Audio_MP3_LAYER;
1657 
1658 // Dolby AC3
1659 typedef enum
1660 {   //info Type name                    //Attribute      //Parameter
1661     Audio_AC3_infoType_DecStatus,       //R              //0:unlock  1:lock
1662     Audio_AC3_infoType_SampleRate,      //R              //
1663     Audio_AC3_infoType_BitRate,         //R              //
1664     Audio_AC3_infoType_Dialnorm,        //R              //
1665     Audio_AC3_infoType_Acmod,           //R              //
1666     Audio_AC3_infoType_DrcMode,         //RW             //
1667     Audio_AC3_infoType_DownmixMode,     //RW             //
1668     Audio_AC3_infoType_MMFileSize,      //Not supported  //
1669     Audio_AC3_infoType_PCMBufLevel,     //R              //
1670     Audio_AC3_infoType_BufferDelay,     //RW             //
1671     Audio_AC3_infoType_SyncwordFound_Count,
1672     Audio_AC3_infoType_AD_Mixer_Balance,
1673 } Audio_AC3_infoType;
1674 
1675 // Dolby AC3P
1676 typedef enum
1677 {   //info Type name                     //Attribute     //Parameter
1678     Audio_AC3P_infoType_DecStatus,       //R             //
1679     Audio_AC3P_infoType_SampleRate,      //R             //
1680     Audio_AC3P_infoType_BitRate,         //R             //
1681     Audio_AC3P_infoType_Dialnorm,        //R             //
1682     Audio_AC3P_infoType_Acmod,           //R             //
1683     Audio_AC3P_infoType_DrcMode,         //RW            //
1684     Audio_AC3P_infoType_DownmixMode,     //RW            //
1685     Audio_AC3P_infoType_MMFileSize,      //W             //
1686     Audio_AC3P_infoType_syncSTC_in_mmTs, //W             //
1687     Audio_AC3P_infoType_hdmiTxBypass_enable,
1688     Audio_AC3P_infoType_AC3Type,
1689     Audio_AC3P_infoType_FrameSize,
1690     Audio_AC3P_infoType_BSMode,
1691     Audio_AC3P_infoType_BYTESWAP,
1692     Audio_AC3P_infoType_enableDolbyBulletin11,//W       // True or False          //default is enabled
1693     Audio_AC3P_DTV_AVSYNC_OFFSET,        //W, unit= 33bits offset
1694     Audio_AC3P_infoType_hdmiAC3inSE,
1695     Audio_AC3P_DTV_AVSYNC_DISABLE_SETTING,
1696     Audio_AC3P_infoType_hdmi_in_support_DDP,
1697     Audio_AC3P_infoType_Drc_HighCutScale,
1698     Audio_AC3P_infoType_Drc_LowBootScale,
1699     Audio_AC3P_infoType_LoudnessMatching,
1700     Audio_AC3P_infoType_ATMOS_support,
1701     Audio_AC3P_infoType_Mixer_Balance,
1702     Audio_AC3P_infoType_DDP_AD_Substream,
1703     Audio_AC3P_infoType_AD_Mixer_Balance,
1704     Audio_AC3P_infoType_DDPEnc_Mode,
1705     Audio_AC3P_infoType_DDP_71_Stream,
1706 } Audio_AC3P_infoType;
1707 
1708  typedef enum
1709  {
1710     Audio_DDPEnc_DDP,
1711     Audio_DDPEnc_DD,
1712 } Audio_DDPEnc_Mode;
1713 
1714 typedef enum
1715 {
1716     AUD_Dolby_SOUNDMODE_LR              = 0x0,
1717     AUD_Dolby_SOUNDMODE_LL              = 0x1,
1718     AUD_Dolby_SOUNDMODE_RR              = 0x2,
1719 }AUD_Dolby_SOUNDMODE;
1720 
1721 typedef enum
1722 {
1723     DOLBY_MONO,
1724     DOLBY_STEREO,
1725     DOLBY_MULTI_CHAN
1726 }DOLBY_AC_MODE;
1727 
1728 typedef enum
1729 {
1730     DOLBY_DOWNMIX_MODE_LTRT,
1731     DOLBY_DOWNMIX_MODE_LORO,
1732     DOLBY_DOWNMIX_MODE_AUTO
1733 }DOLBY_DOWNMIX_MODE;
1734 
1735 typedef enum
1736 {
1737     LINE_MODE,
1738     RF_MODE,
1739 }DOLBY_DRC_MODE;
1740 
1741 typedef enum
1742 {
1743     DVB_MODE,
1744     ATSC_MODE,
1745     OTHER_MODE
1746 }DOLBY_LOUDNESS_MODE;
1747 
1748 typedef enum
1749 {
1750     BALANCE_EQUAL = 0,
1751     BALANCE_MAIN_0 = 1,
1752     BALANCE_MAIN_25 = 2,
1753     BALANCE_MAIN_75 = 3,
1754     BALANCE_MAIN_100 = 4,
1755 }DOLBY_MIXER_BALANCE_MODE;
1756 
1757 typedef enum
1758 {
1759     AC3_ENABLE,
1760     AC3_DISABLE
1761 }AC3_DIS_EN;
1762 
1763 
1764 // DTS
1765 typedef enum
1766 {   //info Type name                     //Attribute    //Parameter
1767     Audio_DTS_infoType_DecStatus,        //R            //
1768     Audio_DTS_infoType_KernelVersion,    //R            //
1769     Audio_DTS_infoType_SampleRate,       //R            //
1770     Audio_DTS_infoType_BitRate,          //R            //
1771     Audio_DTS_infoType_CD_MODE,          //R            //
1772     Audio_DTS_infoType_Amode,            //R            //
1773     Audio_DTS_infoType_DMIX_LFE_EN,      //RW           //
1774     Audio_DTS_infoType_DrcMode,          //RW           //
1775     Audio_DTS_infoType_DownmixMode,      //RW           //
1776     Audio_DTS_infoType_Dialnorm_EN,      //RW           //
1777     Audio_DTS_infoType_ESDataServiceMode,//RW           //
1778     Audio_DTS_infoType_MMFileSize,       //W            //
1779     Audio_DTS_infoType_syncSTC_in_mmTs,  //W            //
1780     Audio_DTS_infoType_ESData_ByteSwap,  //W            //
1781     Audio_DTS_infoType_CertMode,         //W            //
1782     Audio_DTS_infoType_HDMI_DSP_SEL,
1783     Audio_DTS_infoType_DTSHD_HDMITxBypass_Enable,  //W            //
1784 } Audio_DTS_infoType;
1785 
1786 typedef enum
1787 {   //ctrl Type name                     //Attribute
1788     Audio_DTS_Ctrl_DMIX_LFE_OFF         = 0x0,
1789     Audio_DTS_Ctrl_DMIX_LFE_ON          = 0x1,
1790     Audio_DTS_Ctrl_Drc_OFF              = 0x0,
1791     Audio_DTS_Ctrl_Drc_50               = 0x1,
1792     Audio_DTS_Ctrl_Drc_100              = 0x2,
1793     Audio_DTS_Ctrl_Downmix_LoRo         = 0x0,
1794     Audio_DTS_Ctrl_Downmix_LtRt         = 0x1,
1795     Audio_DTS_Ctrl_Dialnorm_OFF         = 0x0,
1796     Audio_DTS_Ctrl_Dialnorm_ON          = 0x1,
1797     Audio_DTS_Ctrl_POLLINGMode          = 0x0,
1798     Audio_DTS_Ctrl_INTRPTMode           = 0x1,
1799     Audio_DTS_Ctrl_ByteSwap_OFF         = 0x0,
1800     Audio_DTS_Ctrl_ByteSwap_ON          = 0x1,
1801     Audio_DTS_Ctrl_CertMode_OFF         = 0x0,
1802     Audio_DTS_Ctrl_CertMode_ON          = 0x1,
1803     Audio_DTS_Ctrl_DTSHDBypass_OFF      = 0x0,
1804     Audio_DTS_Ctrl_DTSHDBypass_ON       = 0x1,
1805 } Audio_DTS_CtrlType;
1806 
1807 
1808 typedef enum
1809 {
1810     Audio_WMA_infoType_DecStatus,
1811     Audio_WMA_infoType_SampleRate,
1812     Audio_WMA_infoType_BitRate,
1813     Audio_WMA_infoType_Asf_Param,
1814     Audio_WMA_infoType_FFSpeed,
1815     Audio_WMA_infoType_MMFileSize
1816 } Audio_WMA_infoType;
1817 
1818 typedef enum
1819 {   //info Type name                    //Attibtue      //Parameter
1820     Audio_AAC_error_count,              //R             //
1821     Audio_AAC_infoType_DrcMode,         //RW            //
1822     Audio_AAC_infoType_DownmixMode,     //RW            //
1823     Audio_AAC_dec_unsupported,          //R             //
1824     Audio_AAC_ts_file_end_ntfi,         //R
1825     Audio_AAC_infoType_MMFileSize,      //W
1826     Audio_AAC_DTV_AVSYNC_OFFSET,        //W, unit= 33bits offset
1827     Audio_AAC_DTV_AVSYNC_DISABLE_SETTING,
1828     Audio_AAC_mm_single_frame_mode,
1829     Audio_AAC_type,                      //0: AAC-LC, 1: HEAAC_V1, 2: HEAAC_V2
1830     Audio_AAC_AD_Mixer_Balance,
1831     Audio_AAC_infoType_Bypass_Enable,
1832 } Audio_AAC_infoType;
1833 
1834 typedef enum
1835 {   //info Type name                    //Attibtue      //Parameter
1836     Audio_RA8LBR_NumCodes,              //w
1837     Audio_RA8LBR_Samples,               //w
1838     Audio_RA8LBR_SampleRate,            //w
1839 
1840     Audio_RA8LBR_Channels1,             //w
1841     Audio_RA8LBR_Regions1,              //w
1842     Audio_RA8LBR_cplStart1,             //w
1843     Audio_RA8LBR_cplQbits1,             //w
1844     Audio_RA8LBR_FrameSize1,            //w
1845 
1846     Audio_RA8LBR_Channels2,             //w
1847     Audio_RA8LBR_Regions2,              //w
1848     Audio_RA8LBR_cplStart2,             //w
1849     Audio_RA8LBR_cplQbits2,             //w
1850     Audio_RA8LBR_FrameSize2,            //w
1851 
1852     Audio_RA8LBR_Channels3,             //w
1853     Audio_RA8LBR_Regions3,              //w
1854     Audio_RA8LBR_cplStart3,             //w
1855     Audio_RA8LBR_cplQbits3,             //w
1856     Audio_RA8LBR_FrameSize3,            //w
1857 
1858     Audio_RA8LBR_Channels4,             //w
1859     Audio_RA8LBR_Regions4,              //w
1860     Audio_RA8LBR_cplStart4,             //w
1861     Audio_RA8LBR_cplQbits4,             //w
1862     Audio_RA8LBR_FrameSize4,            //w
1863 
1864     Audio_RA8LBR_Channels5,             //w
1865     Audio_RA8LBR_Regions5,              //w
1866     Audio_RA8LBR_cplStart5,             //w
1867     Audio_RA8LBR_cplQbits5,             //w
1868     Audio_RA8LBR_FrameSize5,            //w
1869 
1870     Audio_RA8LBR_infoType_DecStatus,    //R
1871 } Audio_RA8LBR_infoType;
1872 
1873 typedef enum
1874 {
1875     DRA_Mono,
1876     DRA_Stereo,
1877     DRA_2_1,
1878     DRA_3_0,
1879     DRA_3_1,
1880     DRA_4_0,
1881     DRA_4_1,
1882     DRA_5_0,
1883     DRA_5_1,
1884     DRA_6_0,
1885     DRA_6_1,
1886     DRA_7_0,
1887     DRA_7_1,
1888     DRA_CH_MODE_NONE,
1889 } DRA_CH_MODE;
1890 
1891 typedef enum
1892 {
1893     LPCM                                = 1,
1894     MS_ADPCM                            = 2,
1895     G711_A_LAW                          = 6,
1896     G711_u_LAW                          = 7,
1897     DVD_LPCM                            = 8,
1898     PRIVATE1_LPCM                       = 9,
1899     IMA_ADPCM                           = 17,
1900     IMA_ADPCM_APPLE                     = 18, // apple IMA4
1901 }XPCM_TYPE;
1902 
1903 typedef enum
1904 {
1905     SAMPLE_RATE_48000,
1906     SAMPLE_RATE_44100,
1907     SAMPLE_RATE_32000,
1908     SAMPLE_RATE_24000,
1909     SAMPLE_RATE_22050,
1910     SAMPLE_RATE_16000,
1911     SAMPLE_RATE_12000,
1912     SAMPLE_RATE_11025,
1913     SAMPLE_RATE_8000,
1914     SAMPLE_RATE_4000,
1915     SAMPLE_RATE_96000,
1916 }SAMPLE_RATE;
1917 
1918 // AD & Mixer
1919 typedef enum
1920 {
1921     MAIN_MIX_AD,
1922     AD_MIX_MAIN,
1923 }AD_MIX_MODE;
1924 
1925 typedef enum
1926 {
1927     MIX_OFF,
1928     MIX_ON,
1929 }MIX_ONOFF;
1930 
1931 typedef enum
1932 {
1933     AUDIO_DOLBY_TYPE_DD,
1934     AUDIO_DOLBY_TYPE_DDP,
1935     AUDIO_DOLBY_TYPE_ATMOS,
1936 } AUDIO_DOLBY_TYPE;
1937 
1938 typedef enum
1939 {
1940     AUDIO_AC3_TYPE_DD,
1941     AUDIO_AC3_TYPE_DDP,
1942     AUDIO_AC3_TYPE_ATMOS,
1943 } AUDIO_AC3_TYPE;
1944 
1945 typedef enum
1946 {
1947     AUDIO_AAC_TYPE_GENERIC_AAC,
1948     AUDIO_AAC_TYPE_GENERIC_HEAACv1,
1949     AUDIO_AAC_TYPE_GENERIC_HEAACv2,
1950     AUDIO_AAC_TYPE_DOLBY_AAC,
1951     AUDIO_AAC_TYPE_DOLBY_HEAACv1,
1952     AUDIO_AAC_TYPE_DOLBY_HEAACv2,
1953 } AUDIO_AAC_TYPE;
1954 
1955 typedef enum
1956 {
1957     AUDIO_DTS_TYPE_CORE,
1958     AUDIO_DTS_TYPE_LBR,
1959     AUDIO_DTS_TYPE_HD,
1960 } AUDIO_DTS_TYPE;
1961 
1962 typedef enum
1963 {
1964     FILE_SIZE_1KB,
1965     FILE_SIZE_2KB,
1966     FILE_SIZE_4KB,
1967     FILE_SIZE_8KB,
1968     FILE_SIZE_16KB,
1969     FILE_SIZE_32KB,
1970     FILE_SIZE_64KB,
1971     FILE_SIZE_256,
1972     FILE_SIZE_512,
1973     FILE_SIZE_64,
1974     FILE_SIZE_128
1975 }FILE_SIZE;
1976 
1977 
1978 typedef enum
1979 {
1980     AU_DVB_MODE_STEREO,                 ///< 0:STEREO
1981     AU_DVB_MODE_LL,                     ///< 1: LL
1982     AU_DVB_MODE_RR,                     ///< 2: RR
1983     AU_DVB_MODE_MIXED_LR                ///< 3:(L+R)/2
1984 }AU_DVB_MODE;
1985 
1986 //  enum for dvb decoder command
1987 typedef enum
1988 {
1989     AU_DVB_DECCMD_STOP                  = 0,
1990     AU_DVB_DECCMD_PLAY                  = 1,
1991     AU_DVB_DECCMD_PLAYFILETSP           = 2,
1992     AU_DVB_DECCMD_RESYNC                = 3,
1993     AU_DVB_DECCMD_PLAYFILE              = 4,
1994     AU_DVB_DECCMD_STARTBROWSE           = 5,
1995     AU_DVB_DECCMD_PAUSE                 = 6,
1996     AU_DVB_DECCMD_PLAYFRAME             = 8,            // Uniplayer, Mstreamer for TSP input
1997     AU_DVB_DECCMD_PLAYFRAME_STAGE       = 9,            // Stagecraft
1998     AU_DVB_DECCMD_PLAYFRAME_GS          = 10,           // Uniplayer, Gstreamer for ES copy
1999     AU_DVB_DECCMD_PLAYFILE2_PTS         = 11,
2000     AU_DVB_DECCMD_PLAY_AD               = 12,
2001     AU_DVB_DECCMD_STOP_AD               = 13,
2002     AU_DVB_DECCMD_SKIP                  = 15,
2003     AU_DVB_DECCMD_AVSYNC                = 0x10,
2004     AU_DVB_DECCMD_FREERUN               = 0x20,
2005 } AU_DVB_DECCMD;
2006 
2007 typedef enum
2008 {
2009     AU_DVB_ENCCMD_STOP,   // 0
2010     AU_DVB_ENCCMD_START   // 1
2011 } AU_DVB_ENCCMD;
2012 
2013 typedef enum
2014 {
2015     AU_DVB_ENCBR_192K,                  // 0
2016     AU_DVB_ENCBR_384K,                  // 1
2017     AU_DVB_ENCBR_128K,                  // 2
2018     AU_DVB_ENCBR_64K                    // 3
2019 } AU_DVB_ENCBR;
2020 
2021 typedef enum
2022 {
2023     WMA_PARAMTYPE_VERSION,
2024     WMA_PARAMTYPE_CHANNELS,
2025     WMA_PARAMTYPE_SAMPLERATE,
2026     WMA_PARAMTYPE_BYTERATE,
2027     WMA_PARAMTYPE_BLOCKALIGN,
2028     WMA_PARAMTYPE_ENCOPT,
2029     WMA_PARAMTYPE_PARSINGBYAPP,
2030     WMA_PARAMTYPE_BITS_PER_SAMPLE,
2031     WMA_PARAMTYPE_CHANNELMASK,
2032     WMA_PARAMTYPE_DRC_PARAM_EXIST,
2033     WMA_PARAMTYPE_DRC_RMS_AMP_REF,
2034     WMA_PARAMTYPE_DRC_RMS_AMP_TARGET,
2035     WMA_PARAMTYPE_DRC_PEAK_AMP_REF,
2036     WMA_PARAMTYPE_DRC_PEAK_AMP_TARGET,
2037     WMA_PARAMTYPE_MAX_PACKET_SIZE,
2038     WMA_PARAMTYPE_ADVANCEDENCODEOPT,
2039     WMA_PARAMTYPE_ADVANCEDENCODEOPT2,
2040 }WMA_ASF_PARMTYPE;
2041 
2042 enum
2043 {
2044     DSP_INIT_FINISH_ACK,
2045     DSP_READY_FOR_RELOAD_ACK,
2046     DSP_RELOAD_FINISH_ACK,
2047     MCU_START_TO_RUN_CMD,
2048     MCU_START_RELOAD_CMD,
2049     MCU_RELOAD_FINISH_CMD
2050 };
2051 
2052 typedef struct
2053 {
2054     MS_U8 u8StrCmd[64];
2055     void *pData;
2056 } AUDIO_COMMON_CMD_t;
2057 
2058 //--------------------------Start of SetAudioOutputDeviceSelection Command------------------------
2059 
2060 typedef struct __attribute__((packed))
2061 {
2062     MS_U32 u32StructVersion;    //AUDIO_OUTPUT_DEVICE_SELECTION_VERSION
2063     MS_U32 u32StructSize;    //sizeof(AUDIO_OUTPUT_DEVICE_SELECTION_t)
2064     MS_U32 u32OutputDeviceSelection;    //AUDIO OUTPUT DEVICE SELECTION
2065 } AUDIO_OUTPUT_DEVICE_SELECTION_t;
2066 #define AUDIO_OUTPUT_DEVICE_SELECTION_VERSION    0x00010001    //[31:16]major version; [15:0]minor version
2067 
2068 //--------------------------End of SetAudioOutputDeviceSelection Command-------------------------
2069 
2070 //--------------------------Start of SpecifyDigitalOutputCodec Command------------------------
2071 
2072 typedef struct __attribute__((packed))
2073 {
2074     MS_U32 u32StructVersion;    //AUDIO_SPECIFIED_DIGITAL_OUTPUT_VERSION
2075     MS_U32 u32StructSize;   //sizeof(AUDIO_SPECIFIED_DIGITAL_OUTPUT_t)
2076     MS_U32 u32SpdifOutputCodec;    //SPECIFIED CODEC OF SPDIF
2077     MS_U32 u32HdmiArcOutputCodec;    //SPECIFIED CODEC OF HDMI ARC
2078     MS_U32 u32HdmiTxOutputCodec;    //SPECIFIED CODEC OF HDMI TX
2079 } AUDIO_SPECIFIED_DIGITAL_OUTPUT_t;
2080 #define AUDIO_SPECIFIED_DIGITAL_OUTPUT_VERSION    0x00010001    //[31:16]major version; [15:0]minor version
2081 
2082 //--------------------------End of SpecifyDigitalOutputCodec Command-------------------------
2083 
2084 //--------------------------Start of DapControl Command------------------------
2085 
2086 typedef struct __attribute__((packed))
2087 {
2088     MS_U32 u32StructVersion;    //AUDIO_DAP_CONTROL_VERSION
2089     MS_U32 u32StructSize;   //sizeof(AUDIO_DAP_CONTROL_t)
2090     MS_U32 u32McuCtrlEnable;    //DAP control by MCU enable
2091     MS_U32 u32MultiChannelEnable;    //multi-channel input enable
2092 } AUDIO_DAP_CONTROL_t;
2093 #define AUDIO_DAP_CONTROL_VERSION    0x00010001    //[31:16]major version; [15:0]minor version
2094 
2095 //--------------------------End of DapControl Command-------------------------
2096 
2097 //--------------------------Start of GetDecoderInfo Command------------------------
2098 
2099 typedef struct __attribute__((packed))
2100 {
2101     MS_U32 u32StructVersion;    //AUDIO_DECODER_INFO_VERSION
2102     MS_U32 u32StructSize;    //sizeof(AUDIO_DECODER_INFO_t)
2103     MS_U8 u8DecId;    //decoder id
2104     MS_BOOL bForceMchOutput;    //to use force multi-channel output mode or not
2105     MS_U32 u32PcmOutputType;    //the pcm output type
2106 } AUDIO_DECODER_INFO_t;
2107 #define AUDIO_DECODER_INFO_VERSION    0x00010001    //[31:16]major version; [15:0]minor version
2108 
2109 //--------------------------End of GetDecoderInfo Command-------------------------
2110 
2111 typedef struct
2112 {
2113     MS_U32 u32StructVersion;     //AUDIO_CODEC_CAPABILITY_VERSION
2114     MS_U32 u32StructSize;       //sizeof(AUDIO_CODEC_CAPABILITY_t)
2115     MS_U32 CodecType;       //use the Define for CodecType in AUDIO_CODEC_CAPABILITY_t
2116     MS_U32 SupportChannel;
2117 } AUDIO_CODEC_CAPABILITY_t;
2118 #define AUDIO_CODEC_CAPABILITY_VERSION    0x00010001    //[31:16]major version; [15:0]minor version
2119 
2120 //================================================================
2121 //  MAD2
2122 //================================================================
2123 enum
2124 {
2125     DSP_DEC,                            //0
2126     DSP_SE,                             //1
2127     DSP_ADV,                              //2
2128     DSP_MAD                             //3
2129 };
2130 
2131 // DTV decoder sample rate definition
2132 typedef enum
2133 {
2134     AUDIO_FS_NONE,
2135     AUDIO_FS_8KHZ,
2136     AUDIO_FS_11KHZ,
2137     AUDIO_FS_12KHZ,
2138     AUDIO_FS_16KHZ,
2139     AUDIO_FS_22KHZ,
2140     AUDIO_FS_24KHZ,
2141     AUDIO_FS_32KHZ,
2142     AUDIO_FS_44KHZ,
2143     AUDIO_FS_48KHZ,
2144     AUDIO_FS_64KHZ,
2145     AUDIO_FS_88KHZ,
2146     AUDIO_FS_96KHZ,
2147     AUDIO_FS_176KHZ,
2148     AUDIO_FS_192KHZ,
2149     AUDIO_FS_UNSUPPORT                  = 0xFF,
2150 } AUDIO_FS_TYPE;
2151 
2152 typedef struct
2153 {
2154     AUDIO_HDMI_RX_TYPE      audio_type;
2155     AUDIO_FS_TYPE           sampleRate;
2156 } ST_HDMI_AUDIO_STATUS;
2157 // DTV decoder sound mode type definition
2158 typedef enum
2159 {
2160     AUD_CH_MODE_DUAL_MONO                       = 0x0,              //MPEG/Dolby
2161     AUD_CH_MODE_MONO                            = 0x1,              //MPEG/Dolby
2162     AUD_CH_MODE_STEREO                          = 0x2,              //MPEG/Dolby
2163     AUD_CH_MODE_3_0_MODE                        = 0x3,              //     Dolby
2164     AUD_CH_MODE_2_1_MODE                        = 0x4,              //     Dolby
2165     AUD_CH_MODE_3_1_MODE                        = 0x5,              //     Dolby
2166     AUD_CH_MODE_2_2_MODE                        = 0x6,              //     Dolby
2167     AUD_CH_MODE_3_2_MODE                        = 0x7,              //     Dolby
2168     AUD_CH_MODE_JOINT_STEREO                    = 0x8,              //MPEG/
2169     AUD_CH_MODE_3_3_MODE                        = 0x9,              //DRA
2170     AUD_CH_MODE_3_2_2_MODE                      = 0xA,              //Dolby/DRA
2171     AUD_CH_MODE_3_2_3_MODE                      = 0xB,              //DRA
2172     AUD_CH_MODE_NONE,
2173 } AUD_CH_MODE_TYPE;
2174 
2175 //================================================================
2176 //  KTV
2177 //================================================================
2178 typedef enum
2179 {
2180     AUD_KTV_MODEL1,
2181     AUD_KTV_MODEL2,
2182     AUD_KTV_MODEL3,
2183     AUD_KTV_MODEL4,
2184 }AUDIO_KTV_MODEL;
2185 
2186 typedef enum
2187 {   /*  Model               AUD_KTV_MODEL1    AUD_KTV_MODEL2    AUD_KTV_MODEL3  *
2188      *  Chip                T3-iSing99        U3-Multak                         *
2189      *--------------------------------------------------------------------------*/
2190     AUD_KTV_infoType1,                  // ScoringCommand
2191     AUD_KTV_infoType2,                  // EchoLevel
2192     AUD_KTV_infoType3,                  // EchoDeep
2193     AUD_KTV_infoType4,                  // MICGain
2194     AUD_KTV_infoType5,                  // (TBD)
2195     AUD_KTV_infoType6,                  // (TBD)
2196     AUD_KTV_infoType7,                  // (TBD)
2197     AUD_KTV_infoType8,                  // (TBD)
2198     AUD_KTV_infoType9,                  // (TBD)
2199     AUD_KTV_infoType10,                 // (TBD)
2200     AUD_KTV_infoType11,                 // (TBD)
2201     AUD_KTV_infoType12,                 // (TBD)
2202     AUD_KTV_infoType13,                 // (TBD)
2203     AUD_KTV_infoType14,                 // (TBD)
2204     AUD_KTV_infoType15,                 // (TBD)
2205     AUD_KTV_infoType16,                 // (TBD)
2206 }AUDIO_KTV_INFOTYPE;
2207 
2208 typedef enum
2209 {   /*  Model             AUD_KTV_MODEL1    AUD_KTV_MODEL2    AUD_KTV_MODEL3    *
2210      *  Chip              T3-iSing99        U3-Multak                           *
2211      *--------------------------------------------------------------------------*/
2212     AUD_KTV_ParamType1,                 // AvMICVol
2213     AUD_KTV_ParamType2,                 // PitchCnt
2214     AUD_KTV_ParamType3,                 // Pitch
2215     AUD_KTV_ParamType4,                 // Energy
2216     AUD_KTV_ParamType5,                 // (TBD)
2217     AUD_KTV_ParamType6,                 // (TBD)
2218     AUD_KTV_ParamType7,
2219     AUD_KTV_ParamType8,
2220     AUD_KTV_ParamType9,
2221     AUD_KTV_ParamType10,
2222     AUD_KTV_ParamType11,
2223     AUD_KTV_ParamType12,
2224     AUD_KTV_ParamType13,
2225     AUD_KTV_ParamType14,
2226     AUD_KTV_ParamType15,
2227     AUD_KTV_ParamType16,
2228 }AUDIO_KTV_PARAMTYPE;
2229 
2230 typedef enum
2231 {
2232     PCM_VOL,
2233     MIC_VOL,
2234     MP3_VOL,
2235     GAME1_VOL,
2236     GAME2_VOL,
2237     ECHO1_VOL,
2238     ECHO2_VOL,
2239 }AUDIO_MIX_VOL_TYPE;
2240 
2241 #define code
2242 ///< Threshold table structure
2243 typedef struct
2244 {
2245     MS_U8  HiByteValue;                 ///< Threshold high-byte
2246     MS_U8  LowByteValue;                ///< Threshold low-byte
2247 } THR_TBL_TYPE;
2248 
2249 //================================================================
2250 //  Sound Enum
2251 //================================================================
2252 // ADC Input Gain Type Definition
2253 typedef enum
2254 {
2255     AUD_ADC_GAIN_0dB = 0,               //  0dB
2256     AUD_ADC_GAIN_NEG_3dB,               // -3dB
2257     AUD_ADC_GAIN_NEG_6dB,               // -6dB
2258     AUD_ADC_GAIN_3dB,                   //  3dB
2259     AUD_ADC_GAIN_6dB,                   //  6dB
2260     AUD_ADC_GAIN_9dB,                   //  9dB
2261     AUD_ADC_GAIN_12dB,                  // 12dB
2262     AUD_ADC_GAIN_15dB,                  // 15dB
2263 } AUD_ADC_GAIN_TYPE;
2264 
2265 typedef struct
2266 {
2267     MS_U8  param1;                      ///< param1
2268     MS_U8  param2;                      ///< param2
2269     MS_U8  param3;                      ///< param1
2270     MS_U8  param4;                      ///< param2
2271 } Sound_SET_Param;
2272 
2273 typedef struct
2274 {
2275     MS_U8  AvcThreshold;                ///< AvcThreshold
2276     MS_U8  AvcMode;                     ///< AvcMode
2277     MS_U8  AvcAT;                       ///< AvcAT
2278     MS_U8  AvcRT;                       ///< AvcRT
2279 } Sound_AVC_param;
2280 
2281 typedef struct
2282 {
2283     MS_U8  SurroundXA;                  ///< SurroundXA
2284     MS_U8  SurroundXB;                  ///< SurroundXB
2285     MS_U8  SurroundXK;                  ///< SurroundXK
2286     MS_U8  SurroundLPFGain;             ///< SurroundLPFGain
2287 } Sound_SURR_param;
2288 
2289 typedef enum
2290 {
2291     Sound_SET_Type_SetPreScale,
2292     Sound_SET_Type_SetMute,
2293     Sound_SET_Type_SetBalance,
2294     Sound_SET_Type_EnableEQ,
2295     Sound_SET_Type_EnablePEQ,
2296     Sound_SET_Type_EnableTone,
2297     Sound_SET_Type_EnableAutoVolume,
2298     Sound_SET_Type_EnableSurround,
2299     Sound_SET_Type_SetBass,
2300     Sound_SET_Type_EnableBalance,
2301     Sound_SET_Type_AbsoluteBass,
2302     Sound_SET_Type_SetTreble,
2303     Sound_SET_Type_SetEq,
2304     Sound_SET_Type_SetEq_7band,
2305     Sound_SET_Type_SetAvc,
2306     Sound_SET_Type_SetAudioDelay,
2307     Sound_SET_Type_SetSurround,
2308     Sound_SET_Type_ConvertVolumeUnit,
2309     Sound_SET_Type_SetDCOffet,
2310     Sound_SET_Type_EnableSineTone,
2311 } Sound_SET_Type;
2312 
2313 typedef enum
2314 {
2315     Sound_SET_PARAM_PreScale,
2316     Sound_SET_PARAM_Balance,
2317     Sound_SET_PARAM_EQ,
2318     Sound_SET_PARAM_Surround_XA,
2319     Sound_SET_PARAM_Surround_XB,
2320     Sound_SET_PARAM_Surround_XK,
2321     Sound_SET_PARAM_Surround_LPFGAIN,
2322     Sound_SET_PARAM_Treble,
2323     Sound_SET_PARAM_Bass,
2324     Sound_SET_PARAM_AbsoluteBass,
2325     Sound_SET_PARAM_Avc_Mode,
2326     Sound_SET_PARAM_NR_Threshold,
2327     Sound_SET_PARAM_Avc_Threshold,
2328     Sound_SET_PARAM_Avc_AT,
2329     Sound_SET_PARAM_Avc_RT,
2330     Sound_SET_PARAM_AudioDelay,
2331     Sound_SET_PARAM_DCOffet,
2332     Sound_SET_PARAM_PEQ_48K_A0,
2333     Sound_SET_PARAM_PEQ_48K_A1,
2334     Sound_SET_PARAM_PEQ_48K_A2,
2335     Sound_SET_PARAM_PEQ_48K_B1,
2336     Sound_SET_PARAM_PEQ_48K_B2,
2337     Sound_SET_PARAM_PEQ_32K_A0,
2338     Sound_SET_PARAM_PEQ_32K_A1,
2339     Sound_SET_PARAM_PEQ_32K_A2,
2340     Sound_SET_PARAM_PEQ_32K_B1,
2341     Sound_SET_PARAM_PEQ_32K_B2,
2342     Sound_SET_PARAM_PEQ_SCALE,
2343     Sound_SET_PARAM_AbsoluteEQ,
2344     Sound_SET_PARAM_Drc_Threshold,
2345     Sound_SET_PARAM_DMAReader,
2346     Sound_SET_PARAM_AVC_S_Offset,
2347     Sound_SET_PARAM_Tone_Test_Fs,
2348     Sound_SET_PARAM_Tone_Test_Gain,
2349     Sound_SET_PARAM_AbsoluteBalance,
2350     Sound_SET_PARAM_AbsoluteTreble,
2351     Sound_SET_PARAM_Ease_Type_A,
2352     Sound_SET_PARAM_Ease_Duration_A,
2353     Sound_SET_PARAM_Ease_Gain_A,
2354     Sound_SET_PARAM_Ease_Target_Channel_A,
2355     Sound_SET_PARAM_Ease_Type_B,
2356     Sound_SET_PARAM_Ease_Duration_B,
2357     Sound_SET_PARAM_Ease_Gain_B,
2358     Sound_SET_PARAM_Ease_Target_Channel_B,
2359     Sound_SET_PARAM_Drc_Entry,
2360     Sound_SET_PARAM_Mixer_AD_Volume,
2361     Sound_SET_PARAM_Mixer_Main_Volume,
2362     Sound_SET_PARAM_LG_EQ,
2363     Sound_SET_PARAM_LG_Balance_L,
2364     Sound_SET_PARAM_LG_Balance_R,
2365     Sound_SET_PARAM_VolFadingStep,
2366     Sound_SET_PARAM_VolFadingCtrl,
2367     Sound_SET_PARAM_BalanceMask,
2368     Sound_SET_PARAM_PhaseShiftMask,
2369     Sound_SET_PARAM_InternalDelay_Ch1,
2370     Sound_SET_PARAM_InternalDelay_Ch2,
2371     Sound_SET_PARAM_InternalDelay_Ch3,
2372     Sound_SET_PARAM_InternalDelay_Ch4,
2373     Sound_SET_PARAM_InternalDelay_Ch5,
2374     Sound_SET_PARAM_InternalDelay_Ch6,
2375     Sound_SET_PARAM_InternalDelay_Ch7,
2376     Sound_SET_PARAM_InternalDelay_Ch8,
2377     Sound_SET_PARAM_KTVEcho_XA,
2378     Sound_SET_PARAM_KTVEcho_XB,
2379     Sound_SET_PARAM_KTVEcho_ReverbStep,
2380     Sound_SET_PARAM_Avc_R_Begin,
2381     Sound_SET_PARAM_Avc_R_End,
2382     Sound_SET_PARAM_Avc_R_Slope,
2383     Sound_SET_PARAM_Sinetone_StartFreq,
2384     Sound_SET_PARAM_Sinetone_EndFreq,
2385     Sound_SET_PARAM_Sinetone_Duration,
2386     Sound_SET_PARAM_Sinetone_Mode,
2387     Sound_SET_PARAM_Sinetone_Ctrl,
2388 } Sound_SET_PARAM_Type;
2389 
2390 typedef enum
2391 {
2392     Sound_GET_PARAM_PreScale,
2393     Sound_GET_PARAM_Balance_L,
2394     Sound_GET_PARAM_Balance_R,
2395     Sound_GET_PARAM_EQ,
2396     Sound_GET_PARAM_Surround_XA,
2397     Sound_GET_PARAM_Surround_XB,
2398     Sound_GET_PARAM_Surround_XK,
2399     Sound_GET_PARAM_Surround_LPFGAIN,
2400     Sound_GET_PARAM_Treble,
2401     Sound_GET_PARAM_Bass,
2402     Sound_GET_PARAM_Avc_Mode,
2403     Sound_GET_PARAM_Avc_Threshold,
2404     Sound_GET_PARAM_Avc_AT,
2405     Sound_GET_PARAM_Avc_RT,
2406     Sound_GET_PARAM_AudioDelay,
2407     Sound_GET_PARAM_DCOffet,
2408     Sound_GET_PARAM_NR_Threshold,
2409     Sound_GET_PARAM_NR_Status,
2410     Sound_GET_PARAM_getSignal_Energy,
2411     Sound_GET_PARAM_EQ_Status,
2412     Sound_GET_PARAM_PEQ_Status,
2413     Sound_GET_PARAM_Tone_Status,
2414     Sound_GET_PARAM_AutoVolume_Status,
2415     Sound_GET_PARAM_Surround_Status,
2416     Sound_GET_PARAM_HPF_Status,
2417     Sound_GET_PARAM_Drc_Threshold,
2418     Sound_GET_PARAM_DMAReader_Buffer_Addr,
2419     Sound_GET_PARAM_ToneTest_LEVEL,
2420     Sound_GET_PARAM_FPC_Lpeak,
2421     Sound_GET_PARAM_FPC_Rpeak,
2422     Sound_GET_PARAM_Ease_Type_A,
2423     Sound_GET_PARAM_Ease_Duration_A,
2424     Sound_GET_PARAM_Ease_Gain_A,
2425     Sound_GET_PARAM_Ease_Type_B,
2426     Sound_GET_PARAM_Ease_Duration_B,
2427     Sound_GET_PARAM_Ease_Gain_B,
2428     Sound_GET_PARAM_InternalDelay_Ch1,
2429     Sound_GET_PARAM_InternalDelay_Ch2,
2430     Sound_GET_PARAM_InternalDelay_Ch3,
2431     Sound_GET_PARAM_InternalDelay_Ch4,
2432     Sound_GET_PARAM_InternalDelay_Ch5,
2433     Sound_GET_PARAM_InternalDelay_Ch6,
2434     Sound_GET_PARAM_InternalDelay_Ch7,
2435     Sound_GET_PARAM_InternalDelay_Ch8,
2436     Sound_GET_PARAM_KTVEcho_XA,
2437     Sound_GET_PARAM_KTVEcho_XB,
2438     Sound_GET_PARAM_KTVEcho_ReverbStep,
2439     Sound_GET_PARAM_Avc_R_Begin,
2440     Sound_GET_PARAM_Avc_R_End,
2441     Sound_GET_PARAM_Avc_R_Slope,
2442     Sound_GET_PARAM_Sinetone_StartFreq,
2443     Sound_GET_PARAM_Sinetone_EndFreq,
2444     Sound_GET_PARAM_Sinetone_Duration,
2445     Sound_GET_PARAM_Sinetone_Mode,
2446     Sound_GET_PARAM_Sinetone_Ctrl,
2447 } Sound_GET_PARAM_Type;
2448 
2449 typedef enum
2450 {
2451 //  Sound_ENABL_Type_PreScale,
2452     Sound_ENABL_Type_EQ,
2453     Sound_ENABL_Type_PEQ,
2454     Sound_ENABL_Type_Tone,               //treble/bass
2455     Sound_ENABL_Type_AutoVolume,
2456     Sound_ENABL_Type_Surround,
2457     Sound_ENABL_Type_Balance,
2458     Sound_ENABL_Type_DRC,
2459     Sound_ENABL_Type_KTVEcho,
2460     Sound_ENABL_Type_Hpf,
2461     Sound_ENABL_Type_FPC,
2462     Sound_ENABL_Type_DcRemove,
2463     Sound_ENABL_Type_EaseVol,
2464     Sound_ENABL_Type_HeadPhoneSoundEffect,
2465     Sound_ENABL_Type_DRC2,
2466     Sound_ENABL_Type_SineTone,
2467 } Sound_ENABLE_Type;
2468 
2469 typedef enum
2470 {
2471     AdvSound_SET_Type_VDS_Enable,
2472     AdvSound_SET_Type_VSPK_Enable,
2473     AdvSound_SET_Type_VSPK_SetWMod,
2474     AdvSound_SET_Type_VSPK_SetSMod,
2475     AdvSound_SET_Type_SRS_Enable,
2476     AdvSound_SET_Type_SRS_DC,
2477     AdvSound_SET_Type_SRS_TruBass,
2478     AdvSound_SET_Type_SRS_SetTsxtPara,
2479     AdvSound_SET_Type_TSHD_Enable,
2480     AdvSound_SET_Type_TSHD_TruBass,
2481     AdvSound_SET_Type_TSHD_Definition,
2482     AdvSound_SET_Type_TSHD_Clarity,
2483     AdvSound_SET_Type_TSHD_TruSurr,
2484     AdvSound_SET_Type_TSHD_Limiter,
2485     AdvSound_SET_Type_TSHD_SRS3D,
2486     AdvSound_SET_Type_SRS_SetTshdPara,
2487     AdvSound_SET_Type_TruVolume_Enable,
2488     AdvSound_SET_Type_BBE_SetBbeMode,
2489     AdvSound_SET_CV2_Enable,
2490     AdvSound_SET_CV2_SetPara,
2491     AdvSound_SET_CV_SetPara,
2492     AdvSound_SET_AV_SetPara,
2493     AdvSound_SET_SetEQPara,
2494     AdvSound_SET_CV_SetLevel,
2495     AdvSound_SET_ADSY_SetPara,
2496 } AdvSound_SET_Type;
2497 
2498 typedef enum
2499 {
2500     ADVSOUND_EN_TYPE,
2501     ADVSOUND_INFO_DV258_ENABLE,
2502     ADVSOUND_INFO_DV258_LCL_ENABLE,
2503     ADVSOUND_INFO_DV258_LCL_LEVELER_ENABLE,
2504     ADVSOUND_INFO_DV258_LCL_MODELER_ENABLE,
2505     ADVSOUND_INFO_DV258_LCL_MODELER_HALF_MODE,
2506     ADVSOUND_INFO_DV258_LCL_AMOUNT,
2507     ADVSOUND_INFO_DV258_LCL_AVM,
2508     ADVSOUND_INFO_DV258_LCL_DVM,
2509     ADVSOUND_INFO_DV258_LCL_IRL,
2510     ADVSOUND_INFO_DV258_LCL_ORL,
2511     ADVSOUND_INFO_DV258_LCL_PREGAIN,
2512     ADVSOUND_INFO_DV258_LCL_GAIN,
2513     ADVSOUND_INFO_DV258_LIMITER_ENABLE,
2514     ADVSOUND_INFO_DV258_LIMITER_PEAK,
2515     ADVSOUND_INFO_DV258_LIMITER_BOOST,
2516     ADVSOUND_INFO_DV258_LIMITER_RMS,
2517 } AdvSound_GET_Type;
2518 
2519 
2520 //================================================================
2521 //  Advance Sound Enum
2522 //================================================================
2523 
2524 //SRS APOLLO
2525 typedef enum
2526 {
2527     AU_SRS_APOLLO_EN,
2528     AU_SRS_TSHD_EN,
2529     AU_SRS_TRUBASS_FRONT_EN,
2530     AU_SRS_DEFINITION_FRONT_EN,
2531     AU_SRS_DIALOG_CLARITY_EN,
2532     AU_SRS_SURROUND_LEVEL_CTRL,
2533     AU_SRS_TSHD_INPUT_GAIN,
2534     AU_SRS_DEFINITION_FRONT_CTRL,
2535     AU_SRS_DIALOG_CLARITY_CTRL,
2536     AU_SRS_TRUBASS_FRONT_CTRL,
2537     AU_SRS_LOW_END_FRONT_SPEAKER_FREQ,
2538     AU_SRS_HL_EN,
2539     AU_SRS_HL_LIMIT_LEVEL,
2540     AU_SRS_HL_BOOST_GAIN,
2541     AU_SRS_APOLLO_HEADROOM_GAIN,
2542     AU_SRS_AEQ_PEQ_EN,
2543     AU_SRS_AEQ_HPF_EN,
2544     AU_SRS_AEQ_GEQ_EN,
2545     AU_SRS_VIQ_EN,
2546     AU_SRS_VIQ_MODE,
2547     AU_SRS_VIQ_VOL_REF_LEVEL,
2548     AU_SRS_VIQ_MAX_GAIN,
2549     AU_SRS_VIQ_NOISE_MNGR_THLD,
2550     AU_SRS_VIQ_CALIBRATE,
2551     AU_SRS_VIQ_NOISE_MNGR_EN,
2552     AU_SRS_AEQ_HPF_FC,
2553     AU_SRS_VIQ_INPUT_GAIN,
2554     AU_SRS_VIQ_OUTPUT_GAIN,
2555 
2556 
2557     AU_SRS_FTB_LVL_INDPDT_ENABLE,
2558     AU_SRS_FTB_COMPRESSOR_CONTROL,
2559     AU_SRS_FTB_MODE,
2560     AU_SRS_FTB_SPEAKER_AUDIO,
2561     AU_SRS_FTB_SPEAKER_ANALYSIS,
2562     AU_SRS_TVOLHD_EN,
2563     AU_SRS_TVOLHD_OUTPUT_GAIN,
2564     AU_SRS_TVOLHD_INPUT_GAIN,
2565     AU_SRS_TVOLHD_BYPASS_GAIN,
2566     AU_SRS_TVOLHD_MODE,
2567     AU_SRS_TVOLHD_MAX_GAIN,
2568     AU_SRS_TVOLHD_NORMALIZER_EN,
2569     AU_SRS_TVOLHD_NORMTHRESH,
2570     AU_SRS_TVOLHD_SMOOTH_EN,
2571     AU_SRS_TVOLHD_LKFS,
2572     AU_SRS_AEQ_PEQ_INPUT_GAIN,
2573 } AU_SRS_APOLLO_TYPE;
2574 
2575 
2576 ////////////////////////////////////////////////////////
2577 /** Total Sonics modes for DBXTV_SetMode() */
2578 typedef enum _DBXTV_TotSonMode
2579 {
2580     E_TOTSON_ON        = 0,
2581     E_TOTSON_OFF,
2582 } EN_DBXTV_TotSonMode;
2583 
2584 /** Total Volume modes for DBXTV_SetMode() */
2585 typedef enum _DBXTV_TotVolMode
2586 {
2587     E_TOTVOL_NORMAL     = 0,
2588     E_TOTVOL_NIGHT,
2589     E_TOTVOL_OFF,
2590 } EN_DBXTV_TotVolMode;
2591 
2592 /** Total Surround modes for DBXTV_SetMode() */
2593 typedef enum _DBXTV_TotSurMode
2594 {
2595     E_TOTSUR_ON     = 0,
2596     E_TOTSUR_OFF,
2597 } EN_DBXTV_TotSurMode;
2598 
2599 /** Total Surround modes for HAL_DBXTV_SetOnOff() */
2600 typedef enum _DBXTV_TurnOnOff
2601 {
2602     E_DBXTV_TurnOff     = 0,
2603     E_DBXTV_TurnOn,
2604 } EN_DBXTV_TurnOnOff;
2605 
2606 ////////////////////////////////////////////////////////
2607 
2608 
2609 typedef enum
2610 {
2611     AU_SRS_THEATER_EN,
2612     AU_SRS_THEATER_HPF_EN,
2613     AU_SRS_THEATER_VIQ_EN,
2614     AU_SRS_THEATER_CS_EN,
2615     AU_SRS_THEATER_TRUDIALOG_EN,
2616     AU_SRS_THEATER_INPUT_GAIN,
2617     AU_SRS_THEATER_OUTPUT_GAIN,
2618     AU_SRS_THEATER_BYPASS_GAIN,
2619     AU_SRS_THEATER_HEADROOM_GAIN,
2620     AU_SRS_THEATER_INPUT_MODE,
2621     AU_SRS_THEATER_VIQ_INPUT_GAIN,
2622     AU_SRS_THEATER_VIQ_OUTPUT_GAIN,
2623     AU_SRS_THEATER_VIQ_BYPASS_GAIN,
2624     AU_SRS_THEATER_VIQ_VOLUME_MODE,
2625     AU_SRS_THEATER_VOLHD_MAXGAIN_CONTROL,
2626     AU_SRS_THEATER_VOLHD_NORMALIZER_EN,
2627     AU_SRS_THEATER_VOLHD_NORMTHRESH,
2628     AU_SRS_THEATER_VOLHD_SMOOTH_EN,
2629     AU_SRS_THEATER_VOLHD_LKFS,
2630     AU_SRS_THEATER_CS_INPUT_GAIN,
2631     AU_SRS_THEATER_CS_PROCESSING_MODE,
2632     AU_SRS_THEATER_CS_LR_OUTPUT_GAIN,
2633     AU_SRS_THEATER_CS_LSRS_OUTPUT_GAIN,
2634     AU_SRS_THEATER_CS_CENTER_OUTPUT_GAIN,
2635     AU_SRS_THEATER_TRUDIALOG_INPUT_GAIN,
2636     AU_SRS_THEATER_TRUDIALOG_OUTPUT_GAIN,
2637     AU_SRS_THEATER_TRUDIALOG_BYPASS_GAIN,
2638     AU_SRS_THEATER_TRUDIALOG_PROCESS_GAIN,
2639     AU_SRS_THEATER_TRUDIALOG_CLARITY_GAIN,
2640     AU_SRS_THEATER_HPF_ORDER,
2641     AU_SRS_THEATER_HPF_COEFS,
2642     AU_SRS_THEATER_TSHD_EN,
2643     AU_SRS_THEATER_TSHD_SURR_EN,
2644     AU_SRS_THEATER_TSHD_TRUBASS_FRONT_EN,
2645     AU_SRS_THEATER_TSHD_DEFINITION_FRONT_EN,
2646     AU_SRS_THEATER_TSHD_DIALOG_CLARITY_EN,
2647     AU_SRS_THEATER_TSHD_TRUBASS_LEVEL_INDEPENDENT_EN,
2648     AU_SRS_THEATER_HPF_END_EN,
2649     AU_SRS_THEATER_HL_EN,
2650     AU_SRS_THEATER_TSHD_SURROUND_LEVEL_CTRL,
2651     AU_SRS_THEATER_TSHD_INPUT_GAIN,
2652     AU_SRS_THEATER_TSHD_OUTPUT_GAIN,
2653     AU_SRS_THEATER_TSHD_DEFINITION_FRONT_CTRL,
2654     AU_SRS_THEATER_TSHD_DIALOG_CLARITY_CTRL,
2655     AU_SRS_THEATER_TSHD_TRUBASS_FRONT_CTRL,
2656     AU_SRS_THEATER_TSHD_TRUBASS_SPEAKER_SIZE,
2657     AU_SRS_THEATER_TSHD_TRUBASS_COMPRESSOR_CTRL,
2658     AU_SRS_THEATER_TSHD_TRUBASS_PROCESS_MODE,
2659     AU_SRS_THEATER_TSHD_TRUBASS_SPEAKER_AUDIO,
2660     AU_SRS_THEATER_TSHD_TRUBASS_SPEAKER_ANALYSIS,
2661     AU_SRS_THEATER_HL_LIMIT_LEVEL_CTRL,
2662     AU_SRS_THEATER_HL_BOOST_GAIN,
2663     AU_SRS_THEATER_HPF_CUTOFF,
2664     AU_SRS_THEATER_HPF_END_CUTOFF,
2665     AU_SRS_THEATER_CC3D_EN,//param54
2666     AU_SRS_THEATER_CC3D_DEPTH_PROCESS_EN,//param55
2667     AU_SRS_THEATER_CC3D_3D_SURR_BOOST_EN,//param56
2668     AU_SRS_THEATER_CC3D_FADE_EN,//param57
2669     AU_SRS_THEATER_CC3D_TSHD_MIX_EN,//param58
2670     AU_SRS_THEATER_CC3D_TBHDX_EN,//param59
2671     AU_SRS_THEATER_CC3D_INPUT_GAIN,//param60
2672     AU_SRS_THEATER_CC3D_OUTPUT_GAIN,//param61
2673     AU_SRS_THEATER_CC3D_BYPASS_GAIN,//param62
2674     AU_SRS_THEATER_CC3D_APERTURE,//param63
2675     AU_SRS_THEATER_CC3D_GAINLIMIT,//param64
2676     AU_SRS_THEATER_CC3D_FF_DEPTH,//param65
2677     AU_SRS_THEATER_CC3D_NF_DEPTH,//param66
2678 
2679     AU_SRS_THEATER_CC3D_TSHD_SURR_MODE,//param67
2680     AU_SRS_THEATER_CC3D_TSHD_MIX_FADE_CTRL,//param68
2681 
2682     AU_SRS_THEATER_CC3D_TBHDX_INPUT_GAIN,//param69
2683     AU_SRS_THEATER_CC3D_TBHDX_BASSLEVEL,//param70
2684     AU_SRS_THEATER_CC3D_TBHDX_SPEAKERSIZE,//param71
2685     AU_SRS_THEATER_CC3D_TBHDX_MODE,//param72
2686     AU_SRS_THEATER_CC3D_TBHDX_DYNAMICS,//param73
2687     AU_SRS_THEATER_CC3D_TBHDX_HP_ORDER,//param74
2688     AU_SRS_THEATER_CC3D_TBHDX_CUSTOM_FILTER,
2689     AU_SRS_THEATER_CC3D_GEQ_EN,//param75
2690     AU_SRS_THEATER_CC3D_GEQ_INPUT_GAIN,
2691     AU_SRS_THEATER_CC3D_GEQ_BAND0_GAIN,
2692     AU_SRS_THEATER_CC3D_GEQ_BAND1_GAIN,
2693     AU_SRS_THEATER_CC3D_GEQ_BAND2_GAIN,
2694     AU_SRS_THEATER_CC3D_GEQ_BAND3_GAIN,
2695     AU_SRS_THEATER_CC3D_GEQ_BAND4_GAIN,
2696     AU_SRS_THEATER_CC3D_PROCESS_PATH,
2697     AU_SRS_THEATER_TSHD_BYPASS_GAIN,
2698 
2699     AU_SRS_R2_MAX=100,
2700 
2701     AU_SRS_PURESOUND_HL_EN,//param101
2702     AU_SRS_PURESOUND_HL_INPUT_GAIN,//param102
2703     AU_SRS_PURESOUND_HL_OUTPUT_GAIN,//param103
2704     AU_SRS_PURESOUND_HL_BYPASS_GAIN,//param104
2705     AU_SRS_PURESOUND_HL_LIMITERBOOST,//param105
2706     AU_SRS_PURESOUND_HL_HARDLIMIT,//param106
2707     AU_SRS_PURESOUND_HL_DELAYLEN,//param107
2708 
2709     AU_SRS_PURESOUND_AEQ_EN,//param108
2710     AU_SRS_PURESOUND_AEQ_INPUT_GAIN,//param109
2711     AU_SRS_PURESOUND_AEQ_OUTPUT_GAIN,//param110
2712     AU_SRS_PURESOUND_AEQ_BYPASS_GAIN,//param111
2713     AU_SRS_PURESOUND_FILTER_CONFIG,//param112
2714 
2715     AU_SRS_PURESOUND_HPF_EN,//param113
2716     AU_SRS_PURESOUND_HPF_FREQUENCY,//param114
2717     AU_SRS_PURESOUND_TBHD_EN,
2718     AU_SRS_PURESOUND_TBHD_TRUBASS_LEVEL,
2719     AU_SRS_PURESOUND_TBHD_SPEAKER_SIZE,
2720     AU_SRS_PURESOUND_TBHD_LEVEL_INDEPENDENT_EN,
2721     AU_SRS_PURESOUND_TBHD_COMPRESSOR_LEVEL,
2722     AU_SRS_PURESOUND_TBHD_MODE,
2723     AU_SRS_PURESOUND_TBHD_SPEAKER_AUDIO,
2724     AU_SRS_PURESOUND_TBHD_SPEAKER_ANALYSIS,
2725 
2726     AU_SRS_PURESOUND_INPUT_GAIN,
2727     AU_SRS_PURESOUND_OUTPUT_GAIN,
2728 
2729 } AU_SRS_THEATERSOUND_TYPE;
2730 
2731 #if defined(UFO_PUBLIC_HEADER_500) || defined(UFO_PUBLIC_HEADER_700)
2732 
2733 typedef char* ADVSND_TYPE;
2734 #define DOLBY_PL2VDS                                   ((ADVSND_TYPE)"DOLBY_PL2VDS")
2735 #define DOLBY_PL2VDPK                                  ((ADVSND_TYPE)"DOLBY_PL2VDPK")
2736 #define BBE                                            ((ADVSND_TYPE)"BBE")
2737 #define SRS_TSXT                                       ((ADVSND_TYPE)"SRS_TSXT")
2738 #define SRS_TSHD                                       ((ADVSND_TYPE)"SRS_TSHD")
2739 #define SRS_THEATERSOUND                               ((ADVSND_TYPE)"SRS_THEATERSOUND")
2740 #define DTS_ULTRATV                                    ((ADVSND_TYPE)"DTS_ULTRATV")
2741 #define AUDYSSEY                                       ((ADVSND_TYPE)"AUDYSSEY")
2742 #define SUPER_VOICE                                    ((ADVSND_TYPE)"SUPER_VOICE")
2743 #define DBX                                            ((ADVSND_TYPE)"DBX")
2744 #define SRS_PURESND                                    ((ADVSND_TYPE)"SRS_PURESND")
2745 #define DTS_STUDIOSOUND_3D                             ((ADVSND_TYPE)"DTS_STUDIOSOUND_3D")
2746 #define BONGIOVI_DPS                                   ((ADVSND_TYPE)"BONGIOVI_DPS")
2747 #define SONICMOTION_ABS3D                              ((ADVSND_TYPE)"SONICMOTION_ABS3D")
2748 #define DOLBY_DAP                                      ((ADVSND_TYPE)"DOLBY_DAP")
2749 #define ADV_NONE                                       ((ADVSND_TYPE)"ADV_NONE")
2750 
2751 typedef char* ADVFUNC;
2752 //SRS_TSXT
2753 #define SRS_TSXT_TRUBASS                               ((ADVFUNC)"TSXT_TRUBASS")
2754 #define SRS_TSXT_DC                                    ((ADVFUNC)"TSXT_DC")
2755 //SRS_TSHD
2756 #define SRS_TSHD_TRUBASS                               ((ADVFUNC)"TSHD_TRUBASS")
2757 #define SRS_TSHD_DC                                    ((ADVFUNC)"TSHD_DC")
2758 #define SRS_TSHD_DEFINITION                            ((ADVFUNC)"TSHD_DEFINITION")
2759 #define SRS_TSHD_SRS3D                                 ((ADVFUNC)"TSHD_SRS3D")
2760 //SRS_THEATERSOUND
2761 #define SRS_THEATERSOUND_TSHD                          ((ADVFUNC)"THSND_TSHD")
2762 #define SRS_THEATERSOUND_TRUBASS                       ((ADVFUNC)"THSND_TRUBASS")
2763 #define SRS_THEATERSOUND_DC                            ((ADVFUNC)"THSND_DC")
2764 #define SRS_THEATERSOUND_DEFINITION                    ((ADVFUNC)"THSND_DEFINITION")
2765 #define SRS_THEATERSOUND_TRUVOLUME                     ((ADVFUNC)"THSND_TRUVOLUME")
2766 #define SRS_THEATERSOUND_HARDLIMITER                   ((ADVFUNC)"THSND_HARDLIMITER")
2767 #define SRS_THEATERSOUND_HPF                           ((ADVFUNC)"THSND_HPF")
2768 #define SRS_THEATERSOUND_TRUEQ                         ((ADVFUNC)"THSND_TRUEQ")
2769 #define SRS_THEATERSOUND_TRUVOLUME_NOISE_MNGR          ((ADVFUNC)"THSND_TRUVOLUME_NOISE_MNGR")
2770 //DTS_ULTRATV
2771 #define DTS_ULTRATV_EVO                                ((ADVFUNC)"ULTRATV_EVO")
2772 #define DTS_ULTRATV_SYM                                ((ADVFUNC)"ULTRATV_SYM")
2773 //AUDYSSEY
2774 #define AUDYSSEY_DYNAMICVOL                            ((ADVFUNC)"AUDYSSEY_DYNAMICVOL")
2775 #define AUDYSSEY_DYNAMICEQ                             ((ADVFUNC)"AUDYSSEY_DYNAMICEQ")
2776 #define AUDYSSEY_EQ                                    ((ADVFUNC)"AUDYSSEY_EQ")
2777 #define AUDYSSEY_ABX                                   ((ADVFUNC)"AUDYSSEY_ABX")
2778 //SRS_TSHD
2779 #define SRS_THEATERSOUND_TSHD_SURR                     ((ADVFUNC)"THSND_TSHD_SURR")
2780 #define SRS_THEATERSOUND_TSHD_LEVEL_INDPT              ((ADVFUNC)"THSND_TSHD_LEVEL_INDPT")
2781 #define SRS_THEATERSOUND_CS                            ((ADVFUNC)"THSND_CS")
2782 #define SRS_THEATERSOUND_TRUDIALOG                     ((ADVFUNC)"THSND_TRUDIALOG")
2783 #define SRS_THEATERSOUND_TRUVOLUME_NORMALIZER          ((ADVFUNC)"THSND_TRUVOLUME_NORMALIZER")
2784 #define SRS_THEATERSOUND_TRUVOLUME_SMOOTH              ((ADVFUNC)"THSND_TRUVOLUME_SMOOTH")
2785 #define SRS_THEATERSOUND_HPF_END                       ((ADVFUNC)"THSND_HPF_END")
2786 #define SRS_THEATERSOUND_TOTAL                         ((ADVFUNC)"THSND_TOTAL")
2787 // SRS_PURESOUND
2788 #define SRS_PURESOUND_HL                               ((ADVFUNC)"PURESND_HL")
2789 #define SRS_PURESOUND_AEQ                              ((ADVFUNC)"PURESND_AEQ")
2790 #define SRS_PURESOUND_HPF                              ((ADVFUNC)"PURESND_HPF")
2791 #define SRS_PURESOUND_TBHD                             ((ADVFUNC)"PURESND_TBHD")
2792 #define SRS_THEATERSOUND_CC3D_EN                       ((ADVFUNC)"THSND_CC3D_EN")
2793 #define SRS_THEATERSOUND_CC3D_DEPTH_PROCESS_EN         ((ADVFUNC)"THSND_CC3D_DEPTH_PROCESS_EN")
2794 #define SRS_THEATERSOUND_CC3D_3D_SURR_BOOST_EN         ((ADVFUNC)"THSND_CC3D_3D_SURR_BOOST_EN")
2795 #define SRS_THEATERSOUND_CC3D_FADE_EN                  ((ADVFUNC)"THSND_CC3D_FADE_EN")
2796 #define SRS_THEATERSOUND_CC3D_TSHD_MIX_EN              ((ADVFUNC)"THSND_CC3D_TSHD_MIX_EN")
2797 #define SRS_THEATERSOUND_CC3D_TBHDX_EN                 ((ADVFUNC)"THSND_CC3D_TBHDX_EN")
2798 #define SRS_THEATERSOUND_GEQ_EN                        ((ADVFUNC)"THSND_GEQ_EN")
2799 #define SRS_THEATERSOUND_3D_EN                         ((ADVFUNC)"THSND_3D_EN")
2800 // BONGIOVI DPS
2801 #define BONGIOVI_DPS_SURR_EN                           ((ADVFUNC)"DPS_SURR_EN")
2802 // SONICEMOTION_ABS3D
2803 #define SONICEMOTION_ABS3D_EN                          ((ADVFUNC)"ABS3D_EN")
2804 // DOLBY DAP
2805 #define DOLBY_DAP_EN                                   ((ADVFUNC)"DAP_EN")
2806 
2807 typedef char* ADVSND_PARAM;
2808 //BBE
2809 #define BBE_MODE_SET                                  ((ADVSND_PARAM)"BBE_MODE_SET")
2810 // DOLBY
2811 #define DOLBY_PL2VDPK_SMOD                            ((ADVSND_PARAM)"PL2VDPK_SMOD")
2812 #define DOLBY_PL2VDPK_WMOD                            ((ADVSND_PARAM)"PL2VDPK_WMOD")
2813 //SRS TSXT
2814 #define SRS_TSXT_SET_INPUT_GAIN                       ((ADVSND_PARAM)"TSXT_SET_INPUT_GAIN")
2815 #define SRS_TSXT_SET_DC_GAIN                          ((ADVSND_PARAM)"TSXT_SET_DC_GAIN")
2816 #define SRS_TSXT_SET_TRUBASS_GAIN                     ((ADVSND_PARAM)"TSXT_SET_TRUBASS_GAIN")
2817 #define SRS_TSXT_SET_SPEAKERSIZE                      ((ADVSND_PARAM)"TSXT_SET_SPEAKERSIZE")
2818 #define SRS_TSXT_SET_INPUT_MODE                       ((ADVSND_PARAM)"TSXT_SET_INPUT_MODE")
2819 #define SRS_TSXT_SET_OUTPUT_GAIN                      ((ADVSND_PARAM)"TSXT_SET_OUTPUT_GAIN")
2820 
2821 //SRS TSHD in SE-DSP
2822 #define SRS_TSHD_SET_INPUT_MODE                       ((ADVSND_PARAM)"TSHD_SET_INPUT_MODE")
2823 #define SRS_TSHD_SET_OUTPUT_MODE                      ((ADVSND_PARAM)"TSHD_SET_OUTPUT_MODE")
2824 #define SRS_TSHD_SET_SPEAKERSIZE                      ((ADVSND_PARAM)"TSHD_SET_SPEAKERSIZE")
2825 #define SRS_TSHD_SET_TRUBASS_CONTROL                  ((ADVSND_PARAM)"TSHD_SET_TRUBASS_CONTROL")
2826 #define SRS_TSHD_SET_DEFINITION_CONTROL               ((ADVSND_PARAM)"TSHD_SET_DEFINITION_CONTROL")
2827 #define SRS_TSHD_SET_DC_CONTROL                       ((ADVSND_PARAM)"TSHD_SET_DC_CONTROL")
2828 #define SRS_TSHD_SET_SURROUND_LEVEL                   ((ADVSND_PARAM)"TSHD_SET_SURROUND_LEVEL")
2829 #define SRS_TSHD_SET_INPUT_GAIN                       ((ADVSND_PARAM)"TSHD_SET_INPUT_GAIN")
2830 #define SRS_TSHD_SET_WOWSPACE_CONTROL                 ((ADVSND_PARAM)"TSHD_SET_WOWSPACE_CONTROL")
2831 #define SRS_TSHD_SET_WOWCENTER_CONTROL                ((ADVSND_PARAM)"TSHD_SET_WOWCENTER_CONTROL")
2832 #define SRS_TSHD_SET_WOWHDSRS3DMODE                   ((ADVSND_PARAM)"TSHD_SET_WOWHDSRS3DMODE")
2833 #define SRS_TSHD_SET_LIMITERCONTROL                   ((ADVSND_PARAM)"TSHD_SET_LIMITERCONTROL")
2834 #define SRS_TSHD_SET_OUTPUT_GAIN                      ((ADVSND_PARAM)"TSHD_SET_OUTPUT_GAIN")
2835 // SRS_THEATERSOUND
2836 #define SRS_THEATERSOUND_INPUT_GAIN                   ((ADVSND_PARAM)"THSND_INPUT_GAIN")
2837 #define SRS_THEATERSOUND_DEFINITION_CONTROL           ((ADVSND_PARAM)"THSND_DEFINITION_CONTROL")
2838 #define SRS_THEATERSOUND_DC_CONTROL                   ((ADVSND_PARAM)"THSND_DC_CONTROL")
2839 #define SRS_THEATERSOUND_TRUBASS_CONTROL              ((ADVSND_PARAM)"THSND_TRUBASS_CONTROL")
2840 #define SRS_THEATERSOUND_SPEAKERSIZE                  ((ADVSND_PARAM)"THSND_SPEAKERSIZE")
2841 #define SRS_THEATERSOUND_HARDLIMITER_LEVEL            ((ADVSND_PARAM)"THSND_HARDLIMITER_LEVEL")
2842 #define SRS_THEATERSOUND_HARDLIMITER_BOOST_GAIN       ((ADVSND_PARAM)"THSND_HARDLIMITER_BOOST_GAIN")
2843 #define SRS_THEATERSOUND_HEADROOM_GAIN                ((ADVSND_PARAM)"THSND_HEADROOM_GAIN")
2844 #define SRS_THEATERSOUND_TRUVOLUME_MODE               ((ADVSND_PARAM)"THSND_TRUVOLUME_MODE")
2845 
2846 #define SRS_THEATERSOUND_TRUVOLUME_REF_LEVEL          ((ADVSND_PARAM)"THSND_TRUVOLUME_REF_LEVEL")
2847 #define SRS_THEATERSOUND_TRUVOLUME_MAX_GAIN           ((ADVSND_PARAM)"THSND_TRUVOLUME_MAX_GAIN")
2848 #define SRS_THEATERSOUND_TRUVOLUME_NOISE_MNGR_THLD    ((ADVSND_PARAM)"THSND_TRUVOLUME_NOISE_MNGR_THLD")
2849 #define SRS_THEATERSOUND_TRUVOLUME_CALIBRATE          ((ADVSND_PARAM)"THSND_TRUVOLUME_CALIBRATE")
2850 #define SRS_THEATERSOUND_TRUVOLUME_INPUT_GAIN         ((ADVSND_PARAM)"THSND_TRUVOLUME_INPUT_GAIN")
2851 #define SRS_THEATERSOUND_TRUVOLUME_OUTPUT_GAIN        ((ADVSND_PARAM)"THSND_TRUVOLUME_OUTPUT_GAIN")
2852 #define SRS_THEATERSOUND_HPF_FC                       ((ADVSND_PARAM)"THSND_HPF_FC")
2853 #define SRS_THEATERSOUND_TSHD_INPUT_GAIN              ((ADVSND_PARAM)"THSND_TSHD_INPUT_GAIN")
2854 #define SRS_THEATERSOUND_TSHD_OUTPUT_GAIN             ((ADVSND_PARAM)"THSND_TSHD_OUTPUT_GAIN")
2855 #define SRS_THEATERSOUND_SURR_LEVEL_CONTROL           ((ADVSND_PARAM)"THSND_SURR_LEVEL_CONTROL")
2856 #define SRS_THEATERSOUND_TRUBASS_COMPRESSOR_CONTROL   ((ADVSND_PARAM)"THSND_TRUBASS_COMPRESSOR_CONTROL")
2857 #define SRS_THEATERSOUND_TRUBASS_PROCESS_MODE         ((ADVSND_PARAM)"THSND_TRUBASS_PROCESS_MODE")
2858 #define SRS_THEATERSOUND_TRUBASS_SPEAKER_AUDIO        ((ADVSND_PARAM)"THSND_TRUBASS_SPEAKER_AUDIO")
2859 #define SRS_THEATERSOUND_TRUBASS_SPEAKER_ANALYSIS     ((ADVSND_PARAM)"THSND_TRUBASS_SPEAKER_ANALYSIS")
2860 #define SRS_THEATERSOUND_OUTPUT_GAIN                  ((ADVSND_PARAM)"THSND_OUTPUT_GAIN")
2861 #define SRS_THEATERSOUND_BYPASS_GAIN                  ((ADVSND_PARAM)"THSND_BYPASS_GAIN")
2862 #define SRS_THEATERSOUND_INPUT_MODE                   ((ADVSND_PARAM)"THSND_INPUT_MODE")
2863 #define SRS_THEATERSOUND_TRUVOLUME_BYPASS_GAIN        ((ADVSND_PARAM)"THSND_TRUVOLUME_BYPASS_GAIN")
2864 #define SRS_THEATERSOUND_CS_INPUT_GAIN                ((ADVSND_PARAM)"THSND_CS_INPUT_GAIN")
2865 
2866 // DTS_ULTRATV
2867 #define DTS_ULTRATV_EVO_MONOINPUT                     ((ADVSND_PARAM)"ULTRATV_EVO_MONOINPUT")
2868 #define DTS_ULTRATV_EVO_WIDENINGON                    ((ADVSND_PARAM)"ULTRATV_EVO_WIDENINGON")
2869 #define DTS_ULTRATV_EVO_ADD3DBON                      ((ADVSND_PARAM)"ULTRATV_EVO_ADD3DBON")
2870 #define DTS_ULTRATV_EVO_PCELEVEL                      ((ADVSND_PARAM)"ULTRATV_EVO_PCELEVEL")
2871 #define DTS_ULTRATV_EVO_VLFELEVEL                     ((ADVSND_PARAM)"ULTRATV_EVO_VLFELEVEL")
2872 #define DTS_ULTRATV_SYM_DEFAULT                       ((ADVSND_PARAM)"ULTRATV_SYM_DEFAULT")
2873 #define DTS_ULTRATV_SYM_MODE                          ((ADVSND_PARAM)"ULTRATV_SYM_MODE")
2874 #define DTS_ULTRATV_SYM_LEVEL                         ((ADVSND_PARAM)"ULTRATV_SYM_LEVEL")
2875 #define DTS_ULTRATV_SYM_RESET                         ((ADVSND_PARAM)"ULTRATV_SYM_RESET")
2876 // AUDYSSEY
2877 #define AUDYSSEY_DYNAMICVOL_COMPRESS_MODE             ((ADVSND_PARAM)"AUDYSSEY_DYNAMICVOL_COMPRESS_MODE")
2878 #define AUDYSSEY_DYNAMICVOL_GC                        ((ADVSND_PARAM)"AUDYSSEY_DYNAMICVOL_GC")
2879 #define AUDYSSEY_DYNAMICVOL_VOLSETTING                ((ADVSND_PARAM)"AUDYSSEY_DYNAMICVOL_VOLSETTING")
2880 #define AUDYSSEY_DYNAMICEQ_EQOFFSET                   ((ADVSND_PARAM)"AUDYSSEY_DYNAMICEQ_EQOFFSET")
2881 #define AUDYSSEY_ABX_GWET                             ((ADVSND_PARAM)"AUDYSSEY_ABX_GWET")
2882 #define AUDYSSEY_ABX_GDRY                             ((ADVSND_PARAM)"AUDYSSEY_ABX_GDRY")
2883 #define AUDYSSEY_ABX_FILSET                           ((ADVSND_PARAM)"AUDYSSEY_ABX_FILSET")
2884 // DBX
2885 #define DBX_MODE_SET                                  ((ADVSND_PARAM)"DBX_MODE_SET")
2886 #define DBX_LOAD_PM                                   ((ADVSND_PARAM)"DBX_LOAD_PM")
2887 #define DBX_LOAD_DM                                   ((ADVSND_PARAM)"DBX_LOAD_DM")
2888 #define DBX_COPY_TotSonDM                             ((ADVSND_PARAM)"DBX_COPY_TotSonDM")
2889 #define DBX_COPY_TotSonPM                             ((ADVSND_PARAM)"DBX_COPY_TotSonPM")
2890 #define DBX_COPY_TotVolDM                             ((ADVSND_PARAM)"DBX_COPY_TotVolDM")
2891 #define DBX_COPY_TotVolPM                             ((ADVSND_PARAM)"DBX_COPY_TotVolPM")
2892 #define DBX_COPY_TotSurDM                             ((ADVSND_PARAM)"DBX_COPY_TotSurDM")
2893 #define DBX_COPY_TotSurPM                             ((ADVSND_PARAM)"DBX_COPY_TotSurPM")
2894 
2895 #define SRS_THEATERSOUND_CS_PROCESS_MODE              ((ADVSND_PARAM)"THSND_CS_PROCESS_MODE")
2896 #define SRS_THEATERSOUND_CS_LR_OUTPUT_GAIN            ((ADVSND_PARAM)"THSND_CS_LR_OUTPUT_GAIN")
2897 #define SRS_THEATERSOUND_CS_LsRs_OUTPUT_GAIN          ((ADVSND_PARAM)"THSND_CS_LsRs_OUTPUT_GAIN")
2898 #define SRS_THEATERSOUND_CS_Center_OUTPUT_GAIN        ((ADVSND_PARAM)"THSND_CS_Center_OUTPUT_GAIN")
2899 #define SRS_THEATERSOUND_TRUDIALOG_INPUT_GAIN         ((ADVSND_PARAM)"THSND_TRUDIALOG_INPUT_GAIN")
2900 #define SRS_THEATERSOUND_TRUDIALOG_OUTPUT_GAIN        ((ADVSND_PARAM)"THSND_TRUDIALOG_OUTPUT_GAIN")
2901 #define SRS_THEATERSOUND_TRUDIALOG_BYPASS_GAIN        ((ADVSND_PARAM)"THSND_TRUDIALOG_BYPASS_GAIN")
2902 #define SRS_THEATERSOUND_TRUDIALOG_PROCESS_GAIN       ((ADVSND_PARAM)"THSND_TRUDIALOG_PROCESS_GAIN")
2903 #define SRS_THEATERSOUND_TRUDIALOG_CLARITY_GAIN       ((ADVSND_PARAM)"THSND_TRUDIALOG_CLARITY_GAIN")
2904 #define SRS_THEATERSOUND_TRUVOLUME_NORMALIZE_THRESH   ((ADVSND_PARAM)"THSND_TRUVOLUME_NORMALIZE_THRESH")
2905 #define SRS_THEATERSOUND_HPF_CUTOFF                   ((ADVSND_PARAM)"THSND_HPF_CUTOFF")
2906 #define SRS_THEATERSOUND_HPF_END_CUTOFF               ((ADVSND_PARAM)"THSND_HPF_END_CUTOFF")
2907 // SRS PURESOUND
2908 #define SRS_PURESOUND_HL_INPUT_GAIN                   ((ADVSND_PARAM)"PURESND_HL_INPUT_GAIN")
2909 #define SRS_PURESOUND_HL_OUTPUT_GAIN                  ((ADVSND_PARAM)"PURESND_HL_OUTPUT_GAIN")
2910 #define SRS_PURESOUND_HL_BYPASS_GAIN                  ((ADVSND_PARAM)"PURESND_HL_BYPASS_GAIN")
2911 #define SRS_PURESOUND_HL_LIMITERBOOST                 ((ADVSND_PARAM)"PURESND_HL_LIMITERBOOST")
2912 #define SRS_PURESOUND_HL_HARDLIMIT                    ((ADVSND_PARAM)"PURESND_HL_HARDLIMIT")
2913 #define SRS_PURESOUND_HL_DELAYLEN                     ((ADVSND_PARAM)"PURESND_HL_DELAYLEN")
2914 #define SRS_PURESOUND_AEQ_INPUT_GAIN                  ((ADVSND_PARAM)"PURESND_AEQ_INPUT_GAIN")
2915 #define SRS_PURESOUND_AEQ_OUTPUT_GAIN                 ((ADVSND_PARAM)"PURESND_AEQ_OUTPUT_GAIN")
2916 #define SRS_PURESOUND_AEQ_BYPASS_GAIN                 ((ADVSND_PARAM)"PURESND_AEQ_BYPASS_GAIN")
2917 #define SRS_PURESOUND_FILTER_CONFIG                   ((ADVSND_PARAM)"PURESND_FILTER_CONFIG")
2918 #define SRS_PURESOUND_HPF_FREQUENCY                   ((ADVSND_PARAM)"PURESND_HPF_FREQUENCY")
2919 #define SRS_PURESOUND_TBHD_TRUBASS_LEVEL              ((ADVSND_PARAM)"PURESND_TBHD_TRUBASS_LEVEL")
2920 #define SRS_PURESOUND_TBHD_SPEAKER_SIZE               ((ADVSND_PARAM)"PURESND_TBHD_SPEAKER_SIZE")
2921 #define SRS_PURESOUND_TBHD_LEVEL_INDEPENDENT_EN       ((ADVSND_PARAM)"PURESND_TBHD_LEVEL_INDEPENDENT_EN")
2922 #define SRS_PURESOUND_TBHD_COMPRESSOR_LEVEL           ((ADVSND_PARAM)"PURESND_TBHD_COMPRESSOR_LEVEL")
2923 #define SRS_PURESOUND_TBHD_MODE                       ((ADVSND_PARAM)"PURESND_TBHD_MODE")
2924 #define SRS_PURESOUND_TBHD_SPEAKER_AUDIO              ((ADVSND_PARAM)"PURESND_TBHD_SPEAKER_AUDIO")
2925 #define SRS_PURESOUND_TBHD_SPEAKER_ANALYSIS           ((ADVSND_PARAM)"PURESND_TBHD_SPEAKER_ANALYSIS")
2926 #define SRS_PURESOUND_INPUT_GAIN                      ((ADVSND_PARAM)"PURESND_INPUT_GAIN")
2927 #define SRS_PURESOUND_OUTPUT_GAIN                     ((ADVSND_PARAM)"PURESND_OUTPUT_GAIN")
2928 //SRS_THEATERSOUND_3D
2929 #define SRS_THEATERSOUND_CC3D_INPUT_GAIN              ((ADVSND_PARAM)"THSND_CC3D_INPUT_GAIN")
2930 #define SRS_THEATERSOUND_CC3D_OUTPUT_GAIN             ((ADVSND_PARAM)"THSND_CC3D_OUTPUT_GAIN")
2931 #define SRS_THEATERSOUND_CC3D_BYPASS_GAIN             ((ADVSND_PARAM)"THSND_CC3D_BYPASS_GAIN")
2932 #define SRS_THEATERSOUND_CC3D_APERTURE                ((ADVSND_PARAM)"THSND_CC3D_APERTURE")
2933 #define SRS_THEATERSOUND_CC3D_GAINLIMIT               ((ADVSND_PARAM)"THSND_CC3D_GAINLIMIT")
2934 #define SRS_THEATERSOUND_CC3D_FF_DEPTH                ((ADVSND_PARAM)"THSND_CC3D_FF_DEPTH")
2935 #define SRS_THEATERSOUND_CC3D_NF_DEPTH                ((ADVSND_PARAM)"THSND_CC3D_NF_DEPTH")
2936 #define SRS_THEATERSOUND_CC3D_TSHD_SURR_MODE          ((ADVSND_PARAM)"THSND_CC3D_TSHD_SURR_MODE")
2937 #define SRS_THEATERSOUND_CC3D_TSHD_MIX_FADE_CTRL      ((ADVSND_PARAM)"THSND_CC3D_TSHD_MIX_FADE_CTRL")
2938 
2939 #define SRS_THEATERSOUND_CC3D_TBHDX_INPUT_GAIN        ((ADVSND_PARAM)"THSND_CC3D_TBHDX_INPUT_GAIN")
2940 #define SRS_THEATERSOUND_CC3D_TBHDX_BASSLEVEL         ((ADVSND_PARAM)"THSND_CC3D_TBHDX_BASSLEVEL")
2941 #define SRS_THEATERSOUND_CC3D_TBHDX_SPEAKERSIZE       ((ADVSND_PARAM)"THSND_CC3D_TBHDX_SPEAKERSIZE")
2942 #define SRS_THEATERSOUND_CC3D_TBHDX_MODE              ((ADVSND_PARAM)"THSND_CC3D_TBHDX_MODE")
2943 #define SRS_THEATERSOUND_CC3D_TBHDX_DYNAMICS          ((ADVSND_PARAM)"THSND_CC3D_TBHDX_DYNAMICS")
2944 #define SRS_THEATERSOUND_CC3D_TBHDX_HP_ORDER          ((ADVSND_PARAM)"THSND_CC3D_TBHDX_HP_ORDER")
2945 #define SRS_THEATERSOUND_CC3D_TBHDX_CUSTOM_FILTER     ((ADVSND_PARAM)"THSND_CC3D_TBHDX_CUSTOM_FILTER")
2946 #define SRS_THEATERSOUND_GEQ_INPUT_GAIN               ((ADVSND_PARAM)"THSND_GEQ_INPUT_GAIN")
2947 #define SRS_THEATERSOUND_GEQ_BAND0_GAIN               ((ADVSND_PARAM)"THSND_GEQ_BAND0_GAIN")
2948 #define SRS_THEATERSOUND_GEQ_BAND1_GAIN               ((ADVSND_PARAM)"THSND_GEQ_BAND1_GAIN")
2949 #define SRS_THEATERSOUND_GEQ_BAND2_GAIN               ((ADVSND_PARAM)"THSND_GEQ_BAND2_GAIN")
2950 #define SRS_THEATERSOUND_GEQ_BAND3_GAIN               ((ADVSND_PARAM)"THSND_GEQ_BAND3_GAIN")
2951 #define SRS_THEATERSOUND_GEQ_BAND4_GAIN               ((ADVSND_PARAM)"THSND_GEQ_BAND4_GAIN")
2952 #define SRS_THEATERSOUND_CC3D_PROCESS_PATH            ((ADVSND_PARAM)"THSND_CC3D_PROCESS_PATH")
2953 #define SRS_THEATERSOUND_TSHD_BYPASS_GAIN             ((ADVSND_PARAM)"THSND_TSHD_BYPASS_GAIN")
2954 // BONGIOVI_DPS
2955 #define BONGIOVI_DPS_SET_PARAMS                       ((ADVSND_PARAM)"DPS_SET_PARAMS")
2956 #define BONGIOVI_DPS_SET_GLOBAL_INPUT_GAIN            ((ADVSND_PARAM)"DPS_SET_GLOBAL_INPUT_GAIN")
2957 #define BONGIOVI_DPS_SET_GLOBAL_OUTPUT_GAIN           ((ADVSND_PARAM)"DPS_SET_GLOBAL_OUTPUT_GAIN")
2958 #define BONGIOVI_DPS_SET_STEREO_WIDENER_MGAIN         ((ADVSND_PARAM)"DPS_SET_STEREO_WIDENER_MGAIN")
2959 #define BONGIOVI_DPS_SET_STEREO_WIDENER_SGAIN         ((ADVSND_PARAM)"DPS_SET_STEREO_WIDENER_SGAIN")
2960 // SONICEMOTION ABS3D
2961 #define SONICEMOTION_ABS3D_SET_PARAMS                 ((ADVSND_PARAM)"ABS3D_SET_PARAMS")
2962 // DOLBY DAP
2963 #define DOLBY_DAP_SET_PARAMS                          ((ADVSND_PARAM)"DAP_SET_PARAMS")
2964 
2965 #define DBXTV_SET_MODE                                ((ADVSND_PARAM)"DBXTV_SET_MODE")
2966 
2967 // THESE ARE DUMMY DEFINITIONS WHICH ARE DEFINED TO PREVENT SN COMPILE ERROR AND THESE WOULD BE DELETED IN THE FUTURE.
2968 #define ADVSND_PARAM_DUMMY   "ADVSND_PARAM_DUMMY"
2969 #define SRS_TSXT_RESERVE1                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2970 #define SRS_TSXT_RESERVE2                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2971 #define SRS_TSXT_RESERVE3                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2972 #define SRS_TSHD_RESERVE1                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2973 #define SRS_TSHD_RESERVE2                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2974 #define SRS_TSHD_RESERVE3                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2975 #define DTS_ULTRATV_RESERVE1                          ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2976 #define DTS_ULTRATV_RESERVE2                          ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2977 #define DTS_ULTRATV_RESERVE3                          ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2978 #define DTS_ULTRATV_RESERVE4                          ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2979 #define DTS_ULTRATV_RESERVE5                          ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2980 #define DTS_ULTRATV_RESERVE6                          ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2981 #define DTS_ULTRATV_RESERVE7                          ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2982 #define DTS_ULTRATV_RESERVE8                          ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2983 #define DTS_ULTRATV_RESERVE9                          ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2984 #define AUDYSSEY_RESERVE1                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2985 #define AUDYSSEY_RESERVE2                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2986 #define AUDYSSEY_RESERVE3                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2987 #define AUDYSSEY_RESERVE4                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2988 #define AUDYSSEY_RESERVE5                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2989 #define AUDYSSEY_RESERVE6                             ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2990 #define OTHERS_RESERVE9                               ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2991 #define OTHERS_RESERVE10                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2992 #define OTHERS_RESERVE11                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2993 #define OTHERS_RESERVE12                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2994 #define OTHERS_RESERVE13                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2995 #define OTHERS_RESERVE14                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2996 #define OTHERS_RESERVE15                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2997 #define OTHERS_RESERVE16                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2998 #define OTHERS_RESERVE17                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
2999 #define OTHERS_RESERVE18                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3000 #define OTHERS_RESERVE19                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3001 #define OTHERS_RESERVE20                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3002 #define OTHERS_RESERVE21                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3003 #define OTHERS_RESERVE22                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3004 #define OTHERS_RESERVE23                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3005 #define OTHERS_RESERVE24                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3006 #define OTHERS_RESERVE25                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3007 #define OTHERS_RESERVE26                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3008 #define OTHERS_RESERVE27                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3009 #define OTHERS_RESERVE28                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3010 #define OTHERS_RESERVE29                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3011 #define OTHERS_RESERVE30                              ((ADVSND_PARAM)ADVSND_PARAM_DUMMY)
3012 
3013 #else
3014 
3015 typedef enum
3016 {
3017     DOLBY_PL2VDS,
3018     DOLBY_PL2VDPK,
3019     BBE,
3020     SRS_TSXT,
3021     SRS_TSHD,
3022     SRS_THEATERSOUND,
3023     DTS_ULTRATV,
3024     AUDYSSEY,
3025     SUPER_VOICE,
3026     DBX,
3027     SRS_PURESND,
3028     DTS_STUDIOSOUND_3D,
3029     BONGIOVI_DPS,
3030     CV3,
3031     SONICMOTION_ABS3D,
3032     DOLBY_DAP,
3033     ADV_NONE,
3034 } ADVSND_TYPE;
3035 
3036 typedef enum
3037 {
3038     //SRS_TSXT
3039     SRS_TSXT_TRUBASS,
3040     SRS_TSXT_DC,
3041 
3042     //SRS_TSHD
3043     SRS_TSHD_TRUBASS,
3044     SRS_TSHD_DC,
3045     SRS_TSHD_DEFINITION,
3046     SRS_TSHD_SRS3D,
3047 
3048     //SRS_THEATERSOUND
3049     SRS_THEATERSOUND_TSHD,
3050     SRS_THEATERSOUND_TRUBASS,
3051     SRS_THEATERSOUND_DC,
3052     SRS_THEATERSOUND_DEFINITION,
3053     SRS_THEATERSOUND_TRUVOLUME,
3054     SRS_THEATERSOUND_HARDLIMITER,
3055     SRS_THEATERSOUND_HPF,
3056     SRS_THEATERSOUND_TRUEQ,
3057     SRS_THEATERSOUND_TRUVOLUME_NOISE_MNGR,
3058 
3059     //DTS_ULTRATV
3060     DTS_ULTRATV_EVO,
3061     DTS_ULTRATV_SYM,
3062 
3063     //AUDYSSEY
3064     AUDYSSEY_DYNAMICVOL,
3065     AUDYSSEY_DYNAMICEQ,
3066     AUDYSSEY_EQ,
3067     AUDYSSEY_ABX,
3068 
3069     SRS_THEATERSOUND_TSHD_SURR,
3070     SRS_THEATERSOUND_TSHD_LEVEL_INDPT,
3071     SRS_THEATERSOUND_CS,
3072     SRS_THEATERSOUND_TRUDIALOG,
3073     SRS_THEATERSOUND_TRUVOLUME_NORMALIZER,
3074     SRS_THEATERSOUND_TRUVOLUME_SMOOTH,
3075     SRS_THEATERSOUND_HPF_END,
3076     SRS_THEATERSOUND_TOTAL,
3077 
3078     SRS_PURESOUND_HL,
3079     SRS_PURESOUND_AEQ,
3080     SRS_PURESOUND_HPF,
3081     SRS_PURESOUND_TBHD,
3082     SRS_THEATERSOUND_CC3D_EN,
3083     SRS_THEATERSOUND_CC3D_DEPTH_PROCESS_EN,
3084     SRS_THEATERSOUND_CC3D_3D_SURR_BOOST_EN,
3085     SRS_THEATERSOUND_CC3D_FADE_EN,
3086     SRS_THEATERSOUND_CC3D_TSHD_MIX_EN,
3087     SRS_THEATERSOUND_CC3D_TBHDX_EN,
3088     SRS_THEATERSOUND_GEQ_EN,
3089     SRS_THEATERSOUND_3D_EN,
3090 
3091     // BONGIOVI DPS
3092     BONGIOVI_DPS_SURR_EN,
3093 
3094     // SONICEMOTOIN_ABS3D
3095     SONICEMOTION_ABS3D_EN,
3096 
3097     // DOLBY_DAP
3098     DOLBY_DAP_EN,
3099 } ADVFUNC;
3100 
3101 typedef enum
3102 {
3103     //BBE
3104     BBE_MODE_SET,
3105 
3106     //DOLBY
3107     DOLBY_PL2VDPK_SMOD,
3108     DOLBY_PL2VDPK_WMOD,
3109 
3110     //SRS TSXT
3111     SRS_TSXT_SET_INPUT_GAIN,
3112     SRS_TSXT_SET_DC_GAIN,
3113     SRS_TSXT_SET_TRUBASS_GAIN,
3114     SRS_TSXT_SET_SPEAKERSIZE,
3115     SRS_TSXT_SET_INPUT_MODE,
3116     SRS_TSXT_SET_OUTPUT_GAIN,
3117     SRS_TSXT_RESERVE1,
3118     SRS_TSXT_RESERVE2,
3119     SRS_TSXT_RESERVE3,
3120 
3121     //SRS TSHD in SE-DSP
3122     SRS_TSHD_SET_INPUT_MODE,
3123     SRS_TSHD_SET_OUTPUT_MODE,
3124     SRS_TSHD_SET_SPEAKERSIZE,
3125     SRS_TSHD_SET_TRUBASS_CONTROL,
3126     SRS_TSHD_SET_DEFINITION_CONTROL,
3127     SRS_TSHD_SET_DC_CONTROL,
3128     SRS_TSHD_SET_SURROUND_LEVEL,
3129     SRS_TSHD_SET_INPUT_GAIN,
3130     SRS_TSHD_SET_WOWSPACE_CONTROL,
3131     SRS_TSHD_SET_WOWCENTER_CONTROL,
3132     SRS_TSHD_SET_WOWHDSRS3DMODE,
3133     SRS_TSHD_SET_LIMITERCONTROL,
3134     SRS_TSHD_SET_OUTPUT_GAIN,
3135     SRS_TSHD_RESERVE1,
3136     SRS_TSHD_RESERVE2,
3137     SRS_TSHD_RESERVE3,
3138 
3139     //SRS_THEATERSOUND
3140     SRS_THEATERSOUND_INPUT_GAIN,
3141     SRS_THEATERSOUND_DEFINITION_CONTROL,
3142     SRS_THEATERSOUND_DC_CONTROL,
3143     SRS_THEATERSOUND_TRUBASS_CONTROL,
3144     SRS_THEATERSOUND_SPEAKERSIZE,
3145     SRS_THEATERSOUND_HARDLIMITER_LEVEL,
3146     SRS_THEATERSOUND_HARDLIMITER_BOOST_GAIN,
3147     SRS_THEATERSOUND_HEADROOM_GAIN,
3148     SRS_THEATERSOUND_TRUVOLUME_MODE,
3149     SRS_THEATERSOUND_TRUVOLUME_REF_LEVEL,
3150     SRS_THEATERSOUND_TRUVOLUME_MAX_GAIN,
3151     SRS_THEATERSOUND_TRUVOLUME_NOISE_MNGR_THLD,
3152     SRS_THEATERSOUND_TRUVOLUME_CALIBRATE,
3153     SRS_THEATERSOUND_TRUVOLUME_INPUT_GAIN,
3154     SRS_THEATERSOUND_TRUVOLUME_OUTPUT_GAIN,
3155     SRS_THEATERSOUND_HPF_FC,
3156     SRS_THEATERSOUND_TSHD_INPUT_GAIN,
3157     SRS_THEATERSOUND_TSHD_OUTPUT_GAIN,
3158     SRS_THEATERSOUND_SURR_LEVEL_CONTROL,
3159     SRS_THEATERSOUND_TRUBASS_COMPRESSOR_CONTROL,
3160     SRS_THEATERSOUND_TRUBASS_PROCESS_MODE,
3161     SRS_THEATERSOUND_TRUBASS_SPEAKER_AUDIO,
3162     SRS_THEATERSOUND_TRUBASS_SPEAKER_ANALYSIS,
3163     SRS_THEATERSOUND_OUTPUT_GAIN,
3164     SRS_THEATERSOUND_BYPASS_GAIN,
3165     SRS_THEATERSOUND_INPUT_MODE,
3166     SRS_THEATERSOUND_TRUVOLUME_BYPASS_GAIN,
3167     SRS_THEATERSOUND_CS_INPUT_GAIN,
3168 
3169     //DTS_ULTRATV
3170     DTS_ULTRATV_EVO_MONOINPUT,
3171     DTS_ULTRATV_EVO_WIDENINGON,
3172     DTS_ULTRATV_EVO_ADD3DBON,
3173     DTS_ULTRATV_EVO_PCELEVEL,
3174     DTS_ULTRATV_EVO_VLFELEVEL,
3175     DTS_ULTRATV_RESERVE1,
3176     DTS_ULTRATV_RESERVE2,
3177     DTS_ULTRATV_RESERVE3,
3178     DTS_ULTRATV_RESERVE4,
3179     DTS_ULTRATV_RESERVE5,
3180     DTS_ULTRATV_RESERVE6,
3181 
3182     DTS_ULTRATV_SYM_DEFAULT,
3183     DTS_ULTRATV_SYM_MODE,
3184     DTS_ULTRATV_SYM_LEVEL,
3185     DTS_ULTRATV_SYM_RESET,
3186     DTS_ULTRATV_RESERVE7,
3187     DTS_ULTRATV_RESERVE8,
3188     DTS_ULTRATV_RESERVE9,
3189 
3190     //AUDYSSEY
3191     AUDYSSEY_DYNAMICVOL_COMPRESS_MODE,
3192     AUDYSSEY_DYNAMICVOL_GC,
3193     AUDYSSEY_DYNAMICVOL_VOLSETTING,
3194     AUDYSSEY_DYNAMICEQ_EQOFFSET,
3195     AUDYSSEY_ABX_GWET,
3196     AUDYSSEY_ABX_GDRY,
3197     AUDYSSEY_ABX_FILSET,
3198     AUDYSSEY_RESERVE1,
3199     AUDYSSEY_RESERVE2,
3200     AUDYSSEY_RESERVE3,
3201     AUDYSSEY_RESERVE4,
3202     AUDYSSEY_RESERVE5,
3203     AUDYSSEY_RESERVE6,
3204 
3205     //DBX
3206     DBX_MODE_SET,
3207     DBX_LOAD_PM,
3208     DBX_LOAD_DM,
3209     DBX_COPY_TotSonDM,
3210     DBX_COPY_TotSonPM,
3211     DBX_COPY_TotVolDM,
3212     DBX_COPY_TotVolPM,
3213     DBX_COPY_TotSurDM,
3214     DBX_COPY_TotSurPM,
3215     OTHERS_RESERVE9,
3216     OTHERS_RESERVE10,
3217     OTHERS_RESERVE11,
3218     OTHERS_RESERVE12,
3219     OTHERS_RESERVE13,
3220     OTHERS_RESERVE14,
3221     OTHERS_RESERVE15,
3222     OTHERS_RESERVE16,
3223     OTHERS_RESERVE17,
3224     OTHERS_RESERVE18,
3225     OTHERS_RESERVE19,
3226     OTHERS_RESERVE20,
3227     OTHERS_RESERVE21,
3228     OTHERS_RESERVE22,
3229     OTHERS_RESERVE23,
3230     OTHERS_RESERVE24,
3231     OTHERS_RESERVE25,
3232     OTHERS_RESERVE26,
3233     OTHERS_RESERVE27,
3234     OTHERS_RESERVE28,
3235     OTHERS_RESERVE29,
3236     OTHERS_RESERVE30,
3237 
3238     SRS_THEATERSOUND_CS_PROCESS_MODE,
3239     SRS_THEATERSOUND_CS_LR_OUTPUT_GAIN,
3240     SRS_THEATERSOUND_CS_LsRs_OUTPUT_GAIN,
3241     SRS_THEATERSOUND_CS_Center_OUTPUT_GAIN,
3242     SRS_THEATERSOUND_TRUDIALOG_INPUT_GAIN,
3243     SRS_THEATERSOUND_TRUDIALOG_OUTPUT_GAIN,
3244     SRS_THEATERSOUND_TRUDIALOG_BYPASS_GAIN,
3245     SRS_THEATERSOUND_TRUDIALOG_PROCESS_GAIN,
3246     SRS_THEATERSOUND_TRUDIALOG_CLARITY_GAIN,
3247     SRS_THEATERSOUND_TRUVOLUME_NORMALIZE_THRESH,
3248     SRS_THEATERSOUND_HPF_CUTOFF,
3249     SRS_THEATERSOUND_HPF_END_CUTOFF,
3250 
3251 
3252     //SRS PURESOUND
3253     SRS_PURESOUND_HL_INPUT_GAIN,
3254     SRS_PURESOUND_HL_OUTPUT_GAIN,
3255     SRS_PURESOUND_HL_BYPASS_GAIN,
3256     SRS_PURESOUND_HL_LIMITERBOOST,
3257     SRS_PURESOUND_HL_HARDLIMIT,
3258     SRS_PURESOUND_HL_DELAYLEN,
3259     SRS_PURESOUND_AEQ_INPUT_GAIN,
3260     SRS_PURESOUND_AEQ_OUTPUT_GAIN,
3261     SRS_PURESOUND_AEQ_BYPASS_GAIN,
3262     SRS_PURESOUND_FILTER_CONFIG,
3263     SRS_PURESOUND_HPF_FREQUENCY,
3264     SRS_PURESOUND_TBHD_TRUBASS_LEVEL,
3265     SRS_PURESOUND_TBHD_SPEAKER_SIZE,
3266     SRS_PURESOUND_TBHD_LEVEL_INDEPENDENT_EN,
3267     SRS_PURESOUND_TBHD_COMPRESSOR_LEVEL,
3268     SRS_PURESOUND_TBHD_MODE,
3269     SRS_PURESOUND_TBHD_SPEAKER_AUDIO,
3270     SRS_PURESOUND_TBHD_SPEAKER_ANALYSIS,
3271     SRS_PURESOUND_INPUT_GAIN,
3272     SRS_PURESOUND_OUTPUT_GAIN,
3273 
3274     //SRS_THEATERSOUND_3D
3275     SRS_THEATERSOUND_CC3D_INPUT_GAIN,
3276     SRS_THEATERSOUND_CC3D_OUTPUT_GAIN,
3277     SRS_THEATERSOUND_CC3D_BYPASS_GAIN,
3278     SRS_THEATERSOUND_CC3D_APERTURE,
3279     SRS_THEATERSOUND_CC3D_GAINLIMIT,
3280     SRS_THEATERSOUND_CC3D_FF_DEPTH,
3281     SRS_THEATERSOUND_CC3D_NF_DEPTH,
3282 
3283     SRS_THEATERSOUND_CC3D_TSHD_SURR_MODE,
3284     SRS_THEATERSOUND_CC3D_TSHD_MIX_FADE_CTRL,
3285 
3286     SRS_THEATERSOUND_CC3D_TBHDX_INPUT_GAIN,
3287     SRS_THEATERSOUND_CC3D_TBHDX_BASSLEVEL,
3288     SRS_THEATERSOUND_CC3D_TBHDX_SPEAKERSIZE,
3289     SRS_THEATERSOUND_CC3D_TBHDX_MODE,
3290     SRS_THEATERSOUND_CC3D_TBHDX_DYNAMICS,
3291     SRS_THEATERSOUND_CC3D_TBHDX_HP_ORDER,
3292     SRS_THEATERSOUND_CC3D_TBHDX_CUSTOM_FILTER,
3293     SRS_THEATERSOUND_GEQ_INPUT_GAIN,
3294     SRS_THEATERSOUND_GEQ_BAND0_GAIN,
3295     SRS_THEATERSOUND_GEQ_BAND1_GAIN,
3296     SRS_THEATERSOUND_GEQ_BAND2_GAIN,
3297     SRS_THEATERSOUND_GEQ_BAND3_GAIN,
3298     SRS_THEATERSOUND_GEQ_BAND4_GAIN,
3299     SRS_THEATERSOUND_CC3D_PROCESS_PATH,
3300     SRS_THEATERSOUND_TSHD_BYPASS_GAIN,
3301 
3302     //Dolby Volume
3303     DV258_ENABLE,
3304     DV258_LCL_ENABLE,
3305     DV258_LCL_LEVELER_ENABLE,
3306     DV258_LCL_MODELER_ENABLE,
3307     DV258_LCL_MODELER_HALF_MODE,
3308     DV258_LCL_AMOUNT,
3309     DV258_LCL_AVM,
3310     DV258_LCL_DVM,
3311     DV258_LCL_IRL,
3312     DV258_LCL_ORL,
3313     DV258_LCL_PREGAIN,
3314     DV258_LCL_GAIN,
3315 
3316     DV258_LIMITER_ENABLE,
3317     DV258_LIMITER_PEAK,
3318     DV258_LIMITER_BOOST,
3319     DV258_LIMITER_RMS,
3320 
3321     // BONGIOVI_DPS
3322     BONGIOVI_DPS_SET_PARAMS,
3323     BONGIOVI_DPS_SET_GLOBAL_INPUT_GAIN,
3324     BONGIOVI_DPS_SET_GLOBAL_OUTPUT_GAIN,
3325     BONGIOVI_DPS_SET_STEREO_WIDENER_MGAIN,
3326     BONGIOVI_DPS_SET_STEREO_WIDENER_SGAIN,
3327 
3328     // SONICEMOTION ABS3D
3329     SONICEMOTION_ABS3D_SET_PARAMS,
3330 
3331     // DOLBY_DAP
3332     DOLBY_DAP_SET_PARAMS,
3333 
3334     // DBX
3335     DBXTV_SET_MODE,
3336 } ADVSND_PARAM;
3337 
3338 #endif
3339 
3340 //====== Certification Mode TYPE========
3341 typedef enum
3342 {
3343     AUDIO_DOLBY_DD_Cert,                ///<
3344     AUDIO_DOLBY_DDP_Cert,               ///<
3345     AUDIO_DOLBY_PULSE_Cert,             ///<
3346     AUDIO_DOLBY_DDCO_Cert,              ///<
3347     AUDIO_DOLBY_MS10_Cert,              ///<
3348     AUDIO_DOLBY_RESERVE1,               ///<
3349     AUDIO_DOLBY_RESERVE2,               ///<
3350     AUDIO_DOLBY_RESERVE3,               ///<
3351     AUDIO_DTS_DMP_Cert,                 ///<
3352     AUDIO_DTS_BC_Cert,                  ///<
3353     AUDIO_DTS_PremiumTV_Cert,           ///<
3354     AUDIO_DTS_SYMMETRY_Cert,            ///<
3355     AUDIO_DTS_ENVELO_Cert,              ///<
3356     AUDIO_DTS_RESERVE1,                 ///<
3357     AUDIO_DTS_RESERVE2,                 ///<
3358     AUDIO_DTS_RESERVE3,                 ///<
3359     AUDIO_SRS_XT_Cert,                  ///<
3360     AUDIO_SRS_RESERVE1,                 ///<
3361     AUDIO_SRS_RESERVE2,                 ///<
3362     AUDIO_SRS_RESERVE3,                 ///<
3363 } Audio_CertMode;
3364 
3365 typedef enum
3366 {
3367     AUDIO_CERT_Enable,
3368     AUDIO_CERT_Disable
3369 }Audio_CertEnable;
3370 
3371 //====== VoIP Applications ========
3372 typedef enum
3373 {
3374     /* VoIP Application CallBack */
3375     AUDIO_VoIP_CONFIG_REGISTER_DEC_CB,
3376     AUDIO_VoIP_CONFIG_REGISTER_SE_CB,
3377 
3378     /* VoIP Application Audio In/Out */
3379     AUDIO_VoIP_CONFIG_ALSA_PLAYBACK,
3380 
3381     /* Voip Application setup pcm upload and config SRC */
3382     AUDIO_VOIP_CONFIG_PCM_UPLOAD,
3383 
3384 }AUDIO_VoIP_CONFIG_TYPE;
3385 
3386 
3387 //====== STAOS PIP START 2012/02/01 ========
3388 
3389 typedef struct
3390 {
3391     XPCM_TYPE audioType;
3392 #if defined(UFO_PUBLIC_HEADER_212) ||defined(UFO_PUBLIC_HEADER_500_3)
3393     MS_U32    sampleRate;
3394 #else
3395     MS_U16    sampleRate;
3396 #endif
3397     MS_U16    blockSize;
3398     MS_U16    samplePerBlock;
3399     MS_U8     channels;
3400     MS_U8     bitsPerSample;
3401 
3402 } Audio_XPCM_Param;
3403 
3404 typedef struct
3405 {
3406     #define  MAX_NUM_CODECS  5
3407 
3408     MS_U16 Channels[MAX_NUM_CODECS];
3409     MS_U16 Regions[MAX_NUM_CODECS];
3410     MS_U16 cplStart[MAX_NUM_CODECS];
3411     MS_U16 cplQbits[MAX_NUM_CODECS];
3412     MS_U16 FrameSize[MAX_NUM_CODECS];
3413 
3414     MS_U16 mNumCodecs;
3415     MS_U16 mSamples;
3416     MS_U16 mSampleRate;
3417 
3418 } Audio_COOK_Param;
3419 
3420 typedef struct
3421 {
3422     MS_U32    u32Version;
3423     MS_U32    u32Channels;
3424     MS_U32    u32SampleRate;
3425     MS_U32    u32ByteRate;
3426     MS_U32    u32BlockAlign;
3427     MS_U32    u32Encopt;
3428     MS_U32    u32ParsingByApp;
3429     MS_U32    u32BitsPerSample;
3430     MS_U32    u32ChannelMask;
3431     MS_U32    u32DrcParamExist;
3432     MS_U32    u32DrcRmsAmpRef;
3433     MS_U32    u32DrcRmsAmpTarget;
3434     MS_U32    u32DrcPeakAmpRef;
3435     MS_U32    u32DrcPeakAmpTarget;
3436     MS_U32    u32MaxPacketSize;
3437 
3438 } Audio_ASF_Param;
3439 
3440 typedef struct
3441 {
3442     MS_U32 U32WrtAddr;
3443     MS_U32 U32WrtBytes;
3444 
3445 } Audio_MM_Data_Request;
3446 
3447 typedef struct
3448 {
3449     MS_U32  U32DecodeFrame;
3450     MS_U32  U32WrtAddr;
3451     MS_U32  U32WrtBytes;
3452     /* TVOS2.0 DTV */
3453     MS_S64  S64CPTS;
3454     MS_U32  U32FrameSize;
3455     MS_U32  U32ReadAddr;
3456     MS_U32  U32Channels;
3457     MS_U32  U32Bps;
3458     MS_U32  U32SampleRate;
3459     MS_U32  U32WriteAddr;
3460 } Audio_MM_PCM_Info;
3461 
3462 typedef struct
3463 {
3464     MS_U32  U32Name;
3465     MS_U32  U32IsHashkeySupported;
3466 
3467 } Audio_Hashkey_Info;
3468 
3469 /// Audio Decoder ID Information
3470 typedef enum
3471 {
3472     /// Audio Decoder ID invalid
3473     AU_DEC_INVALID                       = -1,
3474     /// Audio 1-Decoder ID
3475     AU_DEC_ID1                           =  0,
3476     /// Audio 2-Decoder ID
3477     AU_DEC_ID2                           =  1,
3478     /// Audio 3-Decoder ID
3479     AU_DEC_ID3                           =  2,
3480     AU_DEC_MAX                           =  3
3481 
3482 } AUDIO_DEC_ID;
3483 
3484 typedef enum
3485 {
3486     AUDIO_DSP_ID_DEC = 0x00,
3487     AUDIO_DSP_ID_SND,
3488     AUDIO_DSP_ID_R2,
3489 
3490     AUDIO_DSP_ID_ALL = 0xFF
3491 } AUDIO_DSP_ID;
3492 
3493 typedef enum
3494 {
3495     AUDIO_MM_OMX = 0x00,
3496     AUDIO_MM_VD,
3497     AUDIO_MM_MAX = 0xFF
3498 } AUDIO_MM_TYPE;
3499 
3500 typedef enum
3501 {
3502     FILTER_TYPE_AUDIO_1 = 0,
3503     FILTER_TYPE_AUDIO_2,
3504     FILTER_TYPE_AUDIO_INVALID,
3505 
3506 } AUDIO_FILTER_TYPE;
3507 
3508 typedef enum
3509 {
3510     Audio_ParamType_SoundMode = 0,
3511     Audio_ParamType_syncSTC,
3512     Audio_ParamType_PTS_info,
3513     Audio_ParamType_setAudioDecoder,
3514     Audio_ParamType_acMode,
3515     Audio_ParamType_MM_FFx2,
3516     Audio_ParamType_reqDataSize,
3517     Audio_ParamType_esBuf_informDataRdy,      // new
3518     Audio_ParamType_playControl,
3519     Audio_ParamType_mute,
3520     Audio_ParamType_predecode,                // for KTV
3521     Audio_ParamType_setWMADecParam,
3522     Audio_ParamType_setCOOKDecParam,
3523     Audio_ParamType_setXPCMDecParam,
3524     Audio_ParamType_UNI_PCM3_Input_Addr,
3525     Audio_ParamType_UNI_NEED_DECODE_FRMCNT,
3526     Audio_ParamType_UNI_ES_Wptr,
3527     Audio_ParamType_UNI_PCMOutCnt,
3528     Audio_ParamType_AllocDecoder,
3529     Audio_ParamType_FreeDecoder,
3530     Audio_ParamType_omx_spdif_mode,
3531     Audio_ParamType_omx_spdif_play,
3532     Audio_ParamType_omx_spdif_pcmLevel,
3533     Audio_ParamType_setExtSynth,
3534     Audio_ParamType_trueHD_bypass_enable,
3535     Audio_ParamType_tvos2_PCM_rdPtr,     //  byte pointer        // update when change       //range : 0 ~ PCM1_DRAM_SIZE
3536     Audio_ParamType_tvos2_DTV_SyncType,  // 0: Normal type, 1: TVOS2.0
3537     Audio_ParamType_CommonCmd,
3538     Audio_ParamType_Multi_Channel,
3539     Audio_ParamType_omx_spdif_pause,
3540     Audio_ParamType_omx_spdif_flush,
3541     Audio_ParamType_omx_spdif_allowed_sampleSize,
3542     Audio_R2_SHM_PARAM_DOLBY_DRC_MODE,
3543     Audio_R2_SHM_PARAM_DOLBY_DMX_MODE,
3544     Audio_R2_SHM_PARAM_DOLBY_HIGH_CUT,
3545     Audio_R2_SHM_PARAM_DOLBY_LOW_BOOST,
3546     Audio_R2_SHM_PARAM_AD_Volume,
3547     Audio_R2_Set_NonPcm_Sel,
3548     Audio_ParamType_Abs_ReadReg_Target,
3549     Audio_ParamType_Abs_WriteReg_Target,
3550     Audio_ParamType_Abs_WriteReg_Value,
3551     Audio_ParamType_ReadDM_Target,
3552     Audio_ParamType_WriteDM_Target,
3553     Audio_ParamType_WriteDM_Value,
3554     Audio_ParamType_ReadPM_Target,
3555     Audio_ParamType_WritePM_Target,
3556     Audio_ParamType_WritePM_Value,
3557     Audio_ParamType_Abs_ReadXbox_Target,
3558     Audio_ParamType_Abs_WriteXbox_Target,
3559     Audio_ParamType_Abs_WriteXbox_Value,
3560     Audio_ParamType_Audio_AAC_mm_single_frame_mode,
3561 
3562     Audio_R2_SHM_PARAM_ES_Limiter_EN,
3563     Audio_R2_SHM_PARAM_ES_Limiter_Threshold,
3564     Audio_R2_SHM_PARAM_PCM_Limiter_EN,
3565     Audio_R2_SHM_PARAM_PCM_Limiter_Threshold,
3566     Audio_SE_Set_PCM_Capture_Volume,
3567     Audio_SE_Set_PCM_Capture2_Volume,
3568     Audio_infoType_Abs_ReadReg_Target,
3569     Audio_infoType_Abs_WriteReg_Target,
3570     Audio_infoType_Abs_WriteReg_Value,
3571     Audio_infoType_ReadDM_Target,
3572     Audio_infoType_WriteDM_Target,
3573     Audio_infoType_WriteDM_Value,
3574     Audio_infoType_ReadPM_Target,
3575     Audio_infoType_WritePM_Target,
3576     Audio_infoType_WritePM_Value,
3577     Audio_ParamType_UNI_TrickMode,
3578     Audio_ParamType_MPG_AVOFFSET,
3579     Audio_ParamType_AC3_AVOFFSET,
3580     Audio_ParamType_AAC_AVOFFSET,
3581     Audio_ParamType_SE_Set_I2S_OutNumber,
3582     Audio_ParamType_SE_Set_HP_Delay,
3583     Audio_ParamType_SE_Set_ADEC0_Input_delay,
3584     Audio_ParamType_SE_Set_ADEC1_Input_delay,
3585     Audio_ParamType_R2_Set_NonPcm_Sel,
3586     Audio_ParamType_Low_Latency_Limiter_ES_enable,
3587     Audio_ParamType_Low_Latency_Limiter_ES_Threshold,
3588     Audio_ParamType_Low_Latency_Limiter_PCM_Threshold,
3589     Audio_ParamType_Low_Latency_Limiter_PCM_Skip_Target,
3590     Audio_ParamType_ES2_IsUsedBy_Dual,
3591     Audio_ParamType_ddp_disable_atmos,
3592     Audio_ParamType_Decoder_RepeatPlay,
3593     Audio_ParamType_SetEDIDOutputInterface,
3594 } Audio_ParamType;
3595 
3596 typedef enum
3597 {
3598     Audio_infoType_Unknow = -1,
3599     Audio_infoType_DecStatus = 0,
3600     Audio_infoType_SampleRate,
3601     Audio_infoType_SoundMode,
3602     Audio_infoType_capability,
3603     Audio_infoType_AudioSyncStatus,   // 1 : AV-Sync  0: Free-run
3604     Audio_infoType_bitRate,
3605     Audio_infoType_acmod,
3606     Audio_infoType_okFrmCnt,
3607     Audio_infoType_errFrmCnt,
3608     Audio_infoType_1ms_timeStamp,
3609     Audio_infoType_33bit_PTS          = 10,
3610     Audio_infoType_33bit_STCPTS_DIFF,
3611     Audio_infoType_esBuf_req,
3612     Audio_infoType_BufferSize,
3613     Audio_infoType_BufferAddr,
3614     Audio_infoType_esBuf_currLevel,
3615     Audio_infoType_pcmBuf_currLevel,
3616     Audio_infoType_get_audio_filter,
3617     Audio_infoType_audio_unsupported,
3618     Audio_infoType_getDecInfo1,
3619     Audio_infoType_UNI_PCM1_Info      = 20,
3620     Audio_infoType_UNI_PCM3_Level,
3621     Audio_infoType_UNI_ES_Level,
3622     Audio_infoType_UNI_ES_Base,
3623     Audio_infoType_UNI_ES_Size,
3624     Audio_infoType_UNI_PCM_Base,
3625     Audio_infoType_UNI_PCM_Size,
3626     Audio_infoType_Decoder_ID,
3627     Audio_infoType_AccumEsCnt,
3628     Audio_infoType_MadBaseAddr,
3629     Audio_infoType_hashkey,
3630     Audio_infoType_UNI_PCM3_Base,
3631     Audio_infoType_UNI_PCM3_Size,
3632     Audio_infoType_AC3_BSID,
3633     Audio_infoType_get_trueHD_bypass_enable,
3634     Audio_infoType_syncSTC_in_mmTs,
3635     Audio_infoType_Pcm_Output_Channel,
3636     Audio_R2_SHM_INFO_PCM_LEVEL,
3637     Audio_R2_SHM_INFO_DEC_STAUS,
3638     Audio_R2_SHM_INFO_CURR_PTS,
3639     Audio_R2_SHM_INFO_TP_ES_FreeSize,
3640     Audio_infoType_Abs_ReadReg,
3641     Audio_infoType_ReadDM_Value,
3642     Audio_infoType_ReadPM_Value,
3643     Audio_infoType_Abs_ReadXbox,
3644     Audio_infoType_omx_no_mixing,
3645     Audio_infoType_omx_ES_bypass,
3646     Audio_infoType_Decoder_Type,
3647     Audio_infoType_33bit_latestPTS,
3648     Audio_infoType_tvos2_PCM1_Info,
3649     Audio_infoType_tvos2_pcm_rdpt,
3650     Audio_infoType_tvos2_pcm_wrpt,
3651     Audio_infoType_tvos2_cpts,
3652     Audio_infoType_tvos2_pcm_framesize,
3653     Audio_infoType_Dec_Channel_Mode,
3654     Audio_infoType_DRA_Channel_Mapping,
3655     Audio_infoType_Smp_Rate,
3656     Audio_infoType_Bit_Rate,
3657     Audio_infoType_DOLBY_BS_Mode,
3658     Audio_infoType_DOLBY_AAC_type,
3659     Audio_infoType_DTS_CD_Mode,
3660     Audio_infoType_DTS_PCM_Frame_Size,
3661     Audio_infoType_DTS_ES_Type,
3662     Audio_infoType_SPDIF_info_flag,
3663     Audio_infoType_MPEG_Layer,
3664     Audio_infoType_MPEG_Stereo_Mode,
3665     Audio_infoType_MPEG_Header,
3666     Audio_infoType_SE_Decoder_Delay,
3667     Audio_infoType_SE_HpOut_Delay,
3668     Audio_infoType_R2_Dec_Type,
3669     Audio_infoType_get_parser_info,
3670     Audio_infoType_Is_Audio_Sync,
3671     Audio_infoType_R2_uart_buf_base,
3672     Audio_infoType_R2_uart_buf_size,
3673     Audio_infoType_R2_uart_buf_wptr,
3674     Audio_infoType_Get_DDPEnc_Status,
3675     Audio_infoType_Is_DDP_8ch_Stream,
3676 } Audio_InfoType;
3677 
3678 typedef MS_BOOL (*pFuncPtr_SetAudioParam2)(AUDIO_DEC_ID DecId, Audio_ParamType paramType, MS_VIRT Param);
3679 typedef MS_BOOL (*pFuncPtr_GetAudioInfo2)(AUDIO_DEC_ID DecId, Audio_InfoType paramType, void * pInfo);
3680 
3681 //====== STAOS PIP END 2012/02/01 ========
3682 
3683 typedef enum
3684 {
3685     Audio_DumpInfo_Off          = 0x0,
3686     Audio_DumpInfo_Avsync       = 0x1,
3687     Audio_DumpInfo_Dec1         = 0x2,
3688     Audio_DumpInfo_IoInfo       = 0x4,
3689     Audio_DumpInfo_mmFileAVsync = 0x8,
3690     Audio_DumpInfo_All          = 0x15,
3691     Audio_DumpInfo_AutoTest     = 0x80,
3692 }Audio_DumpInfo_Type;
3693 
3694 typedef enum
3695 {
3696     Audio_OMX_SPDIF_OFF,
3697     Audio_OMX_SPDIF_ON,
3698     Audio_OMX_SPDIF_STOP,
3699     Audio_OMX_SPDIF_PLAY,
3700 
3701 } Audio_OMX_SPDIF_Param;
3702 
3703 typedef enum
3704 {
3705     AUDIO_USAGE_TYPE_NONE,
3706     AUDIO_USAGE_TYPE_DTV,
3707     AUDIO_USAGE_TYPE_ATV,
3708     AUDIO_USAGE_TYPE_HDMI,
3709     AUDIO_USAGE_TYPE_ADC,
3710     AUDIO_USAGE_TYPE_MM,
3711     AUDIO_USAGE_TYPE_SPDIF,
3712     AUDIO_USAGE_TYPE_KTV,
3713     AUDIO_USAGE_TYPE_GAME,
3714 
3715 } AUDIO_USAGE_TYPE;
3716 
3717 ///<Audio output port source type
3718 typedef enum
3719 {
3720     E_CONNECT_MAIN,                   ///< output connect to main source
3721     E_CONNECT_SUB,                     ///< output connect to sub source
3722     E_CONNECT_SCART,                 ///< output connect to scart source
3723     E_CONNECT_DATA_CAPTURE,  ///< output connect to data capture source
3724     E_CONNECT_KTV,                     ///< output connect to KTV source
3725     E_CONNECT_NULL,                   ///< Disable output port
3726 } AUDIO_OUTPORT_SOURCE_TYPE;
3727 
3728 // TEE Capability
3729 typedef enum
3730 {
3731     Audio_TEE_None                            = 0x00,
3732     Audio_TEE_Setup,
3733     Audio_TEE_Set_DSP_Secure_Accessed,
3734     Audio_TEE_Set_DSP_Normal_Accessed,
3735 
3736     Audio_TEE_Setup_and_ALL_DSP_Secure_Accessed   = 0xFF
3737 } Audio_TEE_Capability;
3738 
3739 ///<Enum for Audio Ease Type
3740 typedef enum
3741 {
3742     E_AUDIO_EASE_TYPE_LINEAR,
3743     E_AUDIO_EASE_TYPE_INCUBIC,
3744     E_AUDIO_EASE_TYPE_OUTCUBIC,
3745     E_AUDIO_EASE_TYPE_INOUTCUBIC,
3746 }AUDIO_EASE_TYPE;
3747 
3748 ///<Enum for Audio Menu Sound Control
3749 typedef enum
3750 {
3751     E_AUDIO_SINETONE_CTRL_RIGHTMUTE,
3752     E_AUDIO_SINETONE_CTRL_LEFTMUTE,
3753     E_AUDIO_SINETONE_CTRL_PAUSE,
3754     E_AUDIO_SINETONE_CTRL_PLAY,
3755 }AUDIO_SINETONE_CTRL;
3756 
3757 typedef enum
3758 {
3759     E_AUDIO_SINETONE_MODE_MONO,
3760     E_AUDIO_SINETONE_MODE_SWEEP,
3761     E_AUDIO_SINETONE_MODE_300TO800,
3762     E_AUDIO_SINETONE_MODE_800TO300,
3763 }AUDIO_SINETONE_MODE;
3764 
3765 //=======================================
3766 /// Init structure for audio
3767 typedef struct __attribute__((packed))
3768 {
3769     MS_U8      miu;               ///< MIU
3770     MS_U8      tv_system;        ///< TV system
3771     MS_U8      dtv_system;       ///< DTV system
3772     MS_U8      au_system_sel;   ///< Audio system type
3773 
3774     //sif threshold
3775     AUDIO_SIF_SET_STANDARD        standard_u8Type;   ///< SIF standard type
3776     AUDIO_SIF_THRESHOLD_TYPE      threshold_u8Type;  ///< SIF Threshold type
3777     MS_U16                        threshold_value;   ///< SIF Threshold value
3778 
3779 } AUDIO_INIT_INFO, *PAUDIO_INIT_INFO;
3780 
3781 //=======================================
3782 /// structure for audio output setting
3783 typedef struct __attribute__((packed))
3784 {
3785     AUDIO_OUTPUT_TYPE   SpeakerOut;  ///< Audio output port for Speaker
3786     AUDIO_OUTPUT_TYPE   HpOut;       ///< Audio output port for HP
3787     AUDIO_OUTPUT_TYPE   MonitorOut;  ///< Audio output port for Monitor out
3788     AUDIO_OUTPUT_TYPE   ScartOut;    ///< Audio output port for Scart out
3789     AUDIO_OUTPUT_TYPE   SpdifOut;    ///< Audio output port for S/PDIF out
3790     AUDIO_OUTPUT_TYPE   ArcOut;      ///< Audio output port for ARC(HDMI_Rx) out
3791     AUDIO_OUTPUT_TYPE   HDMIOut;     ///< Audio output port for HDMI_Tx out
3792 } AUDIO_OUT_INFO, *PAUDIO_OUT_INFO;
3793 
3794 //=======================================
3795 /// structure for audio DSP path setting
3796 typedef struct __attribute__((packed))
3797 {
3798     AUDIO_PATH_TYPE   SpeakerOut;     ///< Audio DSP path for Speaker
3799     AUDIO_PATH_TYPE   HpOut;          ///< Audio DSP path for HP
3800     AUDIO_PATH_TYPE   MonitorOut;     ///< Audio DSP path for Monitor out
3801     AUDIO_PATH_TYPE   ScartOut;       ///< Audio DSP path for Scart out
3802     AUDIO_PATH_TYPE   SpdifOut;       ///< Audio DSP path for Spdif
3803     AUDIO_PATH_TYPE   ArcOut;         ///< Audio output port for ARC(HDMI_Rx) out
3804     AUDIO_PATH_TYPE   HDMIOut;        ///< Audio output port for HDMI out
3805 } AUDIO_PATH_INFO, *PAUDIO_PATH_INFO;
3806 
3807 //=======================================
3808 /// structure for output port connection setting
3809 typedef struct __attribute__((packed))
3810 {
3811     AUDIO_OUTPORT_SOURCE_TYPE   SpeakerOut;     ///<  for Speaker
3812     AUDIO_OUTPORT_SOURCE_TYPE   HpOut;          ///<  for HP
3813     AUDIO_OUTPORT_SOURCE_TYPE   MonitorOut;     ///<  for Monitor out
3814     AUDIO_OUTPORT_SOURCE_TYPE   ScartOut;       ///<  for Scart out
3815     AUDIO_OUTPORT_SOURCE_TYPE   SpdifOut;       ///<  for Spdif
3816     AUDIO_OUTPORT_SOURCE_TYPE   ArcOut;         ///<  for ARC(HDMI_Rx)
3817     AUDIO_OUTPORT_SOURCE_TYPE   HDMIOut;        ///<  for HDMI_Tx
3818 } OUTPUT_SOURCE_INFO, *POUTPUT_SOURCE_INFO;
3819 
3820 //=======================================
3821 /// structure for AES info in new MM mode
3822 typedef struct
3823 {
3824     MS_U32 aes_base_addr;       ///<  base address of ES buffer
3825     MS_U32 aes_end_addr;        ///<  end address of ES buffer
3826     MS_U32 aes_BufSize;         ///<  ES buffer size
3827     MS_U32 aes_write_addr;      ///<  write pointer
3828     MS_U32 aes_read_addr;       ///<  read pointer
3829     MS_U32 aes_freeSpace;       ///<  free space of ES buffer
3830     MS_U32 aes_level;           ///<  level of ES buffer
3831     MS_U32 aes_ptsCnt;          ///<  count of total received PTS
3832     MS_U64 aes_lastPTS;         ///<  last received PTS
3833 } AES_INFO;
3834 
3835 
3836 typedef enum
3837 {
3838     E_TSP_0,
3839     E_TSP_1,
3840     E_TSP_2,
3841     E_TSP_3,
3842     E_TSP_MAX,
3843 } AUDIO_STC_SOURCE;
3844 
3845 typedef enum
3846 {
3847     E_AUD_3_PARSER = 0x0,
3848     E_AUD_4_PARSER_type1 = 0x1,    ///<K3S_type (2 AFIFO & 4 audio parser arch)
3849     E_AUD_4_PARSER_type2 = 0x2,    ///<eiffle_type (4 AFIFO & 4 audio parser arch)
3850     E_AUD_1_PARSER = 0x3,
3851     E_AUD_2_PARSER = 0x4,
3852     E_AUD_MAX_PARSER = 0x5,
3853 }AUDIO_PARSER_Architecture;
3854 
3855 typedef enum
3856 {
3857     E_AFIFO_0,
3858     E_AFIFO_1,
3859     E_AFIFO_2,
3860     E_AFIFO_MAX,
3861 } AUDIO_AFIFO_SOURCE;
3862 
3863 typedef enum
3864 {
3865     AUDIO_FORCE_INVALID = -1,
3866     AUDIO_FORCE_ID1 = 0,
3867     AUDIO_FORCE_ID2 = 1,
3868     AUDIO_FORCE_ID3 = 2,
3869     AUDIO_FORCE_MAX = 3,
3870 } AUDIO_FORCE_ADEC_ID;
3871 
3872 typedef struct __attribute__((packed))
3873 {
3874     MS_BOOL bStart;
3875     MS_BOOL bConnect;
3876     MS_BOOL bAVSyncOn;
3877     MS_BOOL bIsAD;
3878     AUDIO_OUTPORT_SOURCE_TYPE eGroup;
3879     AUDIO_DSP_ID eDSPId;
3880     AUDIO_SOURCE_INFO_TYPE eSourceType;
3881     En_DVB_decSystemType eAudFormat;
3882     AUDIO_STC_SOURCE eStcSource;
3883     AUDIO_AFIFO_SOURCE eAfifoSource;
3884     AUDIO_MM_TYPE eMMType;
3885     AUDIO_FORCE_ADEC_ID eAudio_Force_ID;
3886 } AudioDecStatus_t;
3887 
3888 typedef struct __attribute__((packed))
3889 {
3890     AUDIO_OUTPORT_SOURCE_TYPE eGroup;
3891     AUDIO_DSP_ID u8NonPcmPath;
3892     AUDIO_SOURCE_INFO_TYPE eSourceType;
3893     AUDIO_DIGITAL_OUTPUT_TYPE eDigitalOutfMode;
3894     MS_U8 u8R2NonPcmSetting;
3895 } DigitalOutSetting_t;
3896 
3897 typedef struct __attribute__((packed))
3898 {
3899     MS_BOOL   CBit;
3900     MS_BOOL   LBit;
3901 } Digital_Out_Copy_Righr_t;
3902 
3903 typedef struct __attribute__((packed))
3904 {
3905     MS_U8   u8PcmFormatControl  ;                     // byte 0, [0:7]
3906     MS_U8   u8Category;                                      // byte 1, [8:14]
3907     Digital_Out_Copy_Righr_t    stCopyRight;         // byte 0[1],  byte 1[15]
3908 
3909     MS_U8   u8SourceNumber;                            // byte 2, [16:19]
3910     MS_U8   u8ChannelNumber;                          // byte 2, [20:23]
3911 
3912     MS_U8   u8SamplingRate;                              // byte 3, bit[24:27]
3913     MS_U8   u8ClockPrecision;                            // byte 3, bit[28:31]
3914 
3915     MS_U8   u8WordLength;                                // byte 4, bit[32:35]
3916     MS_U8   u8OriginalSamplingRate;                // byte 4, bit[36:39]
3917 
3918     MS_U8   u8CGMS_A;                                      // byte 5, bit[40:41]
3919 } Digital_Out_Channel_Status_t;
3920 
3921 typedef struct __attribute__((packed))
3922 {
3923     MS_U8   support_codec;              // Short_Audio_Descriptor Byte1 [3:6], 0: default, 1: support, 2: not suppot
3924     MS_U8   support_ch;                 // Short_Audio_Descriptor Byte1 [0:2]
3925     MS_U8   support_samplerate;         // Short_Audio_Descriptor Byte2 [0:6]
3926     MS_U8   support_SAD_byte3;          // Short_Audio_Descriptor Byte3 [0:7]
3927 } Digital_Out_Device_Capability_t;
3928 
3929 //=======================================
3930 /// enum for audio DDR Info
3931 typedef enum
3932 {
3933     E_AUD_MEMORY_BASE = 0x0, ///< for audio DDR Base
3934     E_AUD_MEMORY_SIZE = 0x1, ///< for audio DDR Size
3935 } EN_AUDIO_DDRINFO;
3936 
3937 #ifdef __cplusplus
3938 }
3939 #endif
3940 
3941 #endif // _DRV_AUDIO_IF_H_
3942