xref: /utopia/UTPA2-700.0.x/projects/tmplib/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 
100 #ifdef __cplusplus
101 extern "C"
102 {
103 #endif
104 
105 //-------------------------------------------------------------------------------------------------
106 //  Macro and Define
107 //-------------------------------------------------------------------------------------------------
108 //CathyRemove #define drvMAD_STOP                     0x0
109 
110 #define AUD_CAP_VERSION                 1
111 #define AUDIO_BIFROST_TEST_SUPPORT_VERSION  2
112 
113 #define HDMI_Tx_HD                      1
114 #define HDMI_Tx_DTS_HD                  1
115 
116 //================================================================
117 //  HDMI PC Define
118 //================================================================
119 #define  AU_HDMI_AC3                    0x01
120 #define  AU_HDMI_AC3P                   0x15
121 #define  AU_HDMI_DTS_TYPE1              0x0B
122 #define  AU_HDMI_DTS_TYPE2              0x0C
123 #define  AU_HDMI_DTS_TYPE3              0x0D
124 
125 //================================================================
126 //  Common PCM I/O DEFINE
127 //================================================================
128 #define AUDIO_PCM_INFO_VERSION    2
129 
130 #define AUDIO_HW_DMA_READER1    "HW DMA Reader1"
131 #define AUDIO_HW_DMA_READER2    "HW DMA Reader2"
132 #define AUDIO_SW_DMA_READER1    "SW DMA Reader1"
133 #define AUDIO_R2_DMA_READER1    "R2 DMA Reader1"
134 #define AUDIO_R2_DMA_READER2    "R2 DMA Reader2"
135 #define AUDIO_PCM_CAPTURE1      "PCM Capture1"
136 #define AUDIO_PCM_CAPTURE2      "PCM Capture2"
137 #define AUDIO_HW_DMA_WRITER1    "HW DMA Writer1"
138 
139 #define A_EPERM    1 /* Operation not permitted */
140 #define A_ENOMEM    12 /* Out of memory */
141 #define A_EFAULT    14 /* Bad address */
142 #define A_EBUSY    16 /* Device or resource busy */
143 #define A_ENODEV    19 /* No such device */
144 #define A_EINVAL    22 /* Invalid argument */
145 
146 //================================================================
147 //  Structure
148 //================================================================
149 
150 typedef struct
151 {
152     MS_U32 u32Addr;
153     MS_U32 u32Size;
154     MS_U64 u64Idx;
155 }AU_DVB_ENC_FRAME_INFO, *PAU_DVB_ENC_FRAME_INFO;
156 
157 typedef struct
158 {
159     MS_U32 u32Addr;
160     MS_U32 u32Size;
161     MS_U32 u32Idx;
162 }AUDIO_UPLOAD_INFO, *PAUDIO_UPLOAD_INFO;
163 
164 typedef enum
165 {
166     AUDIO_COEF_PREVER_PEQ, //for compatible with PEQ of previous version
167     AUDIO_COEF_PEQ,
168     AUDIO_COEF_HPF,
169     AUDIO_COEF_BASS,
170     AUDIO_COEF_TREBLE,
171 }AUDIO_COEF_TYPE;
172 
173 typedef enum
174 {
175     AUDIO_SINGLE_PRECISION,
176     AUDIO_DOUBLE_PRECISION,
177 }AUDIO_PRECISION_TYPE;
178 
179 
180 typedef struct
181 {
182     MS_U8   band;                       ///< band
183     MS_U8   sfs;                        ///< fs
184     MS_U8   scale;                      ///< scale
185     MS_U32  a0;                         ///< a0
186     MS_U32  a1;                         ///< a1
187     MS_U32  a2;                         ///< a2
188     MS_U32  b1;                         ///< b1
189     MS_U32  b2;                         ///< b2
190     AUDIO_COEF_TYPE   type;             /// PEQ, HPF or tone
191     MS_BOOL enable;                     /// PEQ band enable
192     AUDIO_PRECISION_TYPE precision;     /// PEQ filter precision
193 } AUDIO_PEQ_COEF, *PAUDIO_PEQ_COEF;
194 
195 typedef struct __attribute__((packed))
196 {
197     MS_U32 u32AudioCapsVersion;
198     MS_U32 u32AudioCapsStructSize;
199     MS_U8 u8MaxDecoderNum;
200     MS_U8 u8MaxDmaReaderNum;
201     MS_BOOL bIsADSupported;
202     MS_BOOL bIsPusiDetectSupported;
203     MS_BOOL bIsMpegSupported;
204     MS_BOOL bIsAc3Supported;
205     MS_BOOL bIsAc3pSupported;
206     MS_BOOL bIsAacSupported;
207     MS_BOOL bIsMp3Supported;
208     MS_BOOL bIsWmaSupported;
209     MS_BOOL bIsRa8LbrSupported;
210     MS_BOOL bIsXpcmSupported;
211     MS_BOOL bIsDtsSupported;
212     MS_BOOL bIsWmaProSupported;
213     MS_BOOL bIsFlacSupported;
214     MS_BOOL bIsVorbisSupported;
215     MS_BOOL bIsDtsLbrSupported;
216     MS_BOOL bIsAmrNbSupported;
217     MS_BOOL bIsAmrWbSupported;
218     MS_BOOL bIsDraSupported;
219 
220     /*
221      * Note!!!
222      *
223      * 1. No matter what kind of modification in this structure, "AUD_CAP_VERSION" must be updated as well!!!
224      *
225      * 2. The element in this structure can only be added, never removed!!!
226      *
227      */
228 } AUDIO_CAPABILITIES;
229 
230 typedef struct
231 {
232     MS_U32 u32StructVersion; /* version number of this data structure */
233     MS_U32 u32StructSize; /* size of this data structure */
234     MS_U8 u8ConnectFlag; /* it is TRUE when opened */
235     MS_U8 u8StartFlag; /* it is TRUE when started and opened */
236     MS_U8 u8Name[32]; /* The PCM name requested (only 32 bytes, if change this length, must change u8Name of AUDIO_PCM_INFO_t as well!) */
237     MS_U8 u8NonBlockingFlag; /* it is TRUE when request for nonblocking mode */
238     MS_U8 u8MultiChFlag; /* it is TRUE when request for a multi-channel PCM IO */
239     MS_U8 u8MixingFlag; /* it is TRUE when request for a mixing PCM IO */
240     MS_U32 u32MixingGroup; /* PCM mixing group, i.e. AUDIO_PCMMIXER_GROUP_ALL */
241     MS_S8 *pBuffer; /* PCM buffer address */
242     MS_S8 *pReadPtr; /* PCM read pointer */
243     MS_S8 *pWritePtr; /* PCM write pointer */
244     MS_U32 u32BufferDuration; /* PCM buffer size in mini-second unit, and up to a maximun size */
245     MS_U32 u32Channel; /* PCM channel number */
246     MS_U32 u32SampleRate; /* PCM sample rate */
247     MS_U32 u32BitWidth; /* PCM sample's bit width of each channel */
248     MS_U32 u32BigEndien; /* PCM endien, TRUE means Big Endien, FALSE means Little Endien */
249     MS_U32 u32Timestamp; /* PCM timestamp */
250     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 */
251     MS_U32 u32Volume; /* PCM volume, the range is 0 ~ 1016, and 96 means 0dB */
252     MS_U32 u32BufferLevel; /* PCM bufffer level in byte unit */
253 
254     /*
255      * Note!!!
256      *
257      * 1. No matter what kind of modification in this structure, "AUDIO_PCM_INFO_VERSION" must be updated as well!!!
258      *
259      * 2. The element in this structure can only be added, never removed!!!
260      *
261      */
262 } AUDIO_PCM_INFO_t;
263 
264 //================================================================
265 //  Enum
266 //================================================================
267 
268 //================================================================
269 //  AuCommon
270 //================================================================
271 typedef enum
272 {
273     AUDIO_PATH_GROUP_1,
274     AUDIO_PATH_GROUP_2,
275     AUDIO_PATH_GROUP_3,
276 }AUDIO_PATH_GROUP_TYPE;
277 
278 
279 ///<Audio source info type
280 typedef enum
281 {
282     E_AUDIO_INFO_DTV_IN,
283     E_AUDIO_INFO_ATV_IN,
284     E_AUDIO_INFO_HDMI_IN,
285     E_AUDIO_INFO_ADC_IN,
286     E_AUDIO_INFO_MM_IN,
287     E_AUDIO_INFO_SPDIF_IN,
288     E_AUDIO_INFO_KTV_IN,
289     E_AUDIO_INFO_GAME_IN,
290     E_AUDIO_INFO_KTV_STB_IN         ///< Iuput source type for STB KTV mode
291 }AUDIO_SOURCE_INFO_TYPE;
292 
293 ///<Enum for Audio data capture source selection
294 typedef enum
295 {
296     E_CAPTURE_CH1,                   ///< Data from DIG1 input port
297     E_CAPTURE_CH2,                   ///< Data from DIG2 input port
298     E_CAPTURE_CH3,                   ///< Data from DIG3 input port
299     E_CAPTURE_CH4,                   ///< Data from DIG4 input port
300     E_CAPTURE_CH5,                   ///< Data from DIG5 input port
301     E_CAPTURE_CH6,                   ///< Data from DIG6 input port
302     E_CAPTURE_CH7,                   ///< Data from DIG7 input port
303     E_CAPTURE_CH8,                   ///< Data from DIG8 input port
304     E_CAPTURE_PCM,                   ///< Pure PCM out =Data CH5
305     E_CAPTURE_PCM_DELAY,             ///< PCM + Delay out
306     E_CAPTURE_PCM_SE,                ///< PCM + Delay +SE out
307     E_CAPTURE_ADC,                   ///< Data from ADC1 input port
308     E_CAPTURE_AUOUT0,                ///< Data for DAC0 output port
309     E_CAPTURE_AUOUT1,                ///< Data for DAC1 output port
310     E_CAPTURE_AUOUT2,                ///< Data for DAC2 output port
311     E_CAPTURE_AUOUT3,                ///< Data for DAC3 output port
312     E_CAPTURE_I2S_OUT,               ///< Data for I2S output port
313     E_CAPTURE_SPDIF_OUT,             ///< Data for SPDIF output port
314     E_CAPTURE_MIXER,                 ///< Data for audio data Mixer
315     E_CAPTURE_ADC2,                  ///< Data from ADC2 input port
316     E_CAPTURE_ADC1_AUIN0_INPUT,      /// ADC1-Line-in[0]
317     E_CAPTURE_ADC1_AUIN1_INPUT,      /// ADC1-Line-in[1]
318     E_CAPTURE_ADC1_AUIN2_INPUT,      /// ADC1-Line-in[2]
319     E_CAPTURE_ADC1_AUIN3_INPUT,      /// ADC1-Line-in[3]
320     E_CAPTURE_ADC1_AUIN4_INPUT,      /// ADC1-Line-in[4]
321     E_CAPTURE_ADC1_AUIN5_INPUT,      /// ADC1-Line-in[5]
322     E_CAPTURE_ADC1_AUMIC_INPUT,      /// ADC1-Micphone-in
323     E_CAPTURE_ADC2_AUIN0_INPUT,      /// ADC2-Line-in[0]
324     E_CAPTURE_ADC2_AUIN1_INPUT,      /// ADC2-Line-in[1]
325     E_CAPTURE_ADC2_AUIN2_INPUT,      /// ADC2-Line-in[2]
326     E_CAPTURE_ADC2_AUIN3_INPUT,      /// ADC2-Line-in[3]
327     E_CAPTURE_ADC2_AUIN4_INPUT,      /// ADC2-Line-in[4]
328     E_CAPTURE_ADC2_AUIN5_INPUT,      /// ADC2-Line-in[5]
329     E_CAPTURE_ADC2_AUMIC_INPUT,      /// ADC2-Micphone-in
330     E_CAPTURE_MAX_NUM,               ///< MAX capture source number
331     E_CAPTURE_NULL                   = 0xFF,  ///< No caupure source
332 }AUDIO_CAPTURE_SOURCE_TYPE;          // Audio capture type selection
333 
334 ///<Enum for Multi-Audio Device
335 typedef enum
336 {
337     E_DEVICE0,    ///< 1st audio device
338     E_DEVICE1,    ///< 2nd audio device
339     E_DEVICE2,    ///< 3rd audio device
340     E_DEVICE3,    ///< 4th audio device
341     E_DEVICE4,    ///< 5th audio device
342     E_DEVICE5,    ///< 6th audio device
343 }AUDIO_DEVICE_TYPE;   // Audio device type
344 
345 ///====== Audio Path Mode TYPE========
346 enum
347 {
348     AUDIO_DSP1_INPUT,                   ///< 0: DSP Decoder1 Input
349     AUDIO_DSP2_INPUT,                   ///< 1: DSP Decoder2 Input
350     AUDIO_ADC_INPUT,                    ///< 2: ADC Input
351     AUDIO_DSP3_INPUT                    = 0x06,     ///< 6: DSP Decoder3 Input
352     AUDIO_DSP4_INPUT                    = 0x08,     ///< 8: DSP Decoder4 Input
353     AUDIO_ADC2_INPUT                    = 0x09,     ///< 9: ADC2 Input
354     AUDIO_DMA_INPUT                     = 0x0E,     ///< E: DMA Input
355 };
356 
357 typedef enum
358 {
359     AUDIO_PATH_0,                       ///< 0: PATH 0
360     AUDIO_PATH_1,                       ///< 1: PATH 1
361     AUDIO_PATH_2,                       ///< 2: PATH 2
362     AUDIO_PATH_3,                       ///< 3: PATH 3
363     AUDIO_PATH_4,
364     AUDIO_PATH_5,
365     AUDIO_PATH_6,
366     AUDIO_PATH_7,                       ///< 7: New add in T3
367     AUDIO_PATH_MAIN                     = 4,
368 
369     AUDIO_T3_PATH_AUOUT0                = 0x30,      ///< T3 volume path : AUOUT0
370     AUDIO_T3_PATH_AUOUT1                = 0x31,      ///< T3 volume path : AUOUT1
371     AUDIO_T3_PATH_AUOUT2                = 0x32,      ///< T3 volume path : AUOUT2
372     AUDIO_T3_PATH_AUOUT3                = 0x33,      ///< T3 volume path : AUOUT3
373     AUDIO_T3_PATH_I2S                   = 0x34,      ///< T3 volume path : I2S
374     AUDIO_T3_PATH_SPDIF                 = 0x35,      ///< T3 volume path : SPDIF
375     AUDIO_T3_PATH_I2S2                  = 0x36,      ///< T3 volume path : SPDIF
376     AUDIO_T3_PATH_HDMI                  = 0x37,      ///< T3 volume path : HDMI
377     AUDIO_T3_PATH_LR                    = 0x38,
378     AUDIO_T3_PATH_PCM_CAPTURE1          = 0x39,      ///< T3 volume path : PCM Capture1
379     AUDIO_T3_PATH_PCM_CAPTURE2          = 0x3A,      ///< T3 volume path : PCM Capture2
380     AUDIO_T3_PATH_DMA_WRITER1          = 0x3B,       ///< T3 volume path : HW DMA Writer1
381 
382     AUDIO_T3_PATH_MIXER_MAIN            = 0x40,      ///< Internal volume path for Mixer 1st port (CH5 in)
383     AUDIO_T3_PATH_MIXER_SECONDARY       = 0x41,      ///< Internal volume path for Mixer 2nd port (CH6 in)
384     AUDIO_T3_PATH_MIXER_DMA_IN          = 0x42,      ///< Internal volume path for Mixer 3rd port (CH8 in)
385 
386     AUDIO_PATH_NULL                     = 0xFF
387 }AUDIO_PATH_TYPE;
388 
389 typedef enum
390 {
391     INTERNAL_MULTI_1,                   ///< 0: For Multi-channel only
392     INTERNAL_MULTI_2,                   ///< 1  For Multi-channel only
393     INTERNAL_MULTI_3,                   ///< 2: For Multi-channel only
394     INTERNAL_MULTI_4,                   ///< 3: For Multi-channel only
395     INTERNAL_PCM,                       ///< 4: Pure PCM out
396     INTERNAL_PCM_DELAY,                 ///< 5: PCM + Delay out
397     INTERNAL_PCM_SE,                    ///< 6: PCM + Delay +SE out
398     INTERNAL_SCART,                     ///< 7: SCART data
399     INTERNAL_MIXER,                     ///< 8: SCART data
400     INTERNAL_CH6,                       ///< 9: CH6 data
401     INTERNAL_TEST,                      ///< A: Test data
402     INTERNAL_LRDIV2,                    ///< B: I2S (L+R)/2 data
403     INTERNAL_TONE,                      ///< C: 1KHz Tone
404     INTERNAL_CH8,                       ///< D: Data from CH8
405     INTERNAL_ATVENC,                    ///< E: Data from ATV Encoder.
406     INTERNAL_MAX_NUM,                   ///< MAX Internal path number
407     INTERNAL_PATH_NULL                  = 0xFF,
408 }AUDIO_INTERNAL_PATH_TYPE;              // for T3 only
409 
410 //====== Audio input Mode TYPE========
411 typedef enum
412 {
413     AUDIO_SPDIF_INPUT                   = 3,        ///< 3: SPDIF INPUT
414     AUDIO_I2S_INPUT                     = 4,        ///< 4: I2S INPUT
415     AUDIO_HDMI_INPUT                    = 5,        ///< 5: HDMI INPUT
416     AUDIO_SRC_INPUT                     = 7,
417 
418     AUDIO_DSP1_DVB_INPUT                = 0x00,
419     AUDIO_DSP1_DVB1_INPUT               = 0x10,
420     AUDIO_DSP1_SPDIF_INPUT              = 0x20,
421     AUDIO_DSP1_SPDIFx1_INPUT            = 0x30,
422     AUDIO_DSP1_HDMI_INPUT               = 0x40,
423     AUDIO_DSP1_HDMIx1_INPUT             = 0x50,
424     AUDIO_DSP1_CardRD_INPUT             = 0x60,
425     AUDIO_DSP1_SIF_INPUT                = 0x70,
426     AUDIO_DSP1_MM_INPUT                 = 0x80,
427 
428     AUDIO_DSP2_DVB_INPUT                = 0x01,
429     AUDIO_DSP2_DVB1_INPUT               = 0x11,
430     AUDIO_DSP2_SPDIF_INPUT              = 0x21,
431     AUDIO_DSP2_SPDIFx1_INPUT            = 0x31,
432     AUDIO_DSP2_HDMI_INPUT               = 0x41,
433     AUDIO_DSP2_HDMIx1_INPUT             = 0x51,
434     AUDIO_DSP2_CardRD_INPUT             = 0x61,
435     AUDIO_DSP2_SIF_INPUT                = 0x71,
436 
437     AUDIO_DSP3_DVB_INPUT                = 0x06,
438     AUDIO_DSP3_DVB1_INPUT               = 0x16,
439     AUDIO_DSP3_SPDIF_INPUT              = 0x26,
440     AUDIO_DSP3_SPDIFx1_INPUT            = 0x36,
441     AUDIO_DSP3_HDMI_INPUT               = 0x46,
442     AUDIO_DSP3_HDMIx1_INPUT             = 0x56,
443     AUDIO_DSP3_CardRD_INPUT             = 0x66,
444     AUDIO_DSP3_SIF_INPUT                = 0x76,
445 
446     AUDIO_DSP4_DVB_INPUT                = 0x08,
447     AUDIO_DSP4_DMARD_INPUT              = 0x58,     /// New add in T3
448     AUDIO_DSP4_SIF_INPUT                = 0x78,     /// For T3 SIF input
449 
450     AUDIO_AUIN0_INPUT                   = 0x02,     /// Line-in[0]
451     AUDIO_AUIN1_INPUT                   = 0x12,     /// Line-in[1]
452     AUDIO_AUIN2_INPUT                   = 0x22,     /// Line-in[2]
453     AUDIO_AUIN3_INPUT                   = 0x32,     /// Line-in[3]
454     AUDIO_AUIN4_INPUT                   = 0xA2,     /// Line-in[4]
455     AUDIO_AUIN5_INPUT                   = 0xB2,     /// Line-in[5]
456     AUDIO_AUMIC_INPUT                   = 0x72,     /// Micphone-in
457 
458     AUDIO_ADC2_AUIN0_INPUT              = 0x09,     /// Line-in[0]
459     AUDIO_ADC2_AUIN1_INPUT              = 0x19,     /// Line-in[1]
460     AUDIO_ADC2_AUIN2_INPUT              = 0x29,     /// Line-in[2]
461     AUDIO_ADC2_AUIN3_INPUT              = 0x39,     /// Line-in[3]
462     AUDIO_ADC2_AUIN4_INPUT              = 0xA9,     /// Line-in[4]
463     AUDIO_ADC2_AUIN5_INPUT              = 0xB9,     /// Line-in[5]
464     AUDIO_ADC2_AUMIC_INPUT              = 0x79,     /// Micphone-in
465 
466     AUDIO_DMA_READER_INPUT              = 0x0E,       ///<0x0E : DMA Reader INPUT
467 
468     AUDIO_NULL_INPUT                    = 0xFF,
469 } AUDIO_INPUT_TYPE;
470 
471 //================================================================
472 //  HDMI ENUM
473 //================================================================
474 
475 //====== HDMI Rx Mode TYPE========
476 typedef enum
477 {
478     HDMI_RX_PCM                         = 0x0,      ///< HDMI RX PCM Mode
479     HDMI_RX_DD                          = 0x1,      ///< HDMI RX Dolby Mode
480     HDMI_RX_DTS                         = 0x2,      ///< HDMI RX DTS Mode
481     HDMI_RX_DDP                         = 0x3,      ///< HDMI RX DDP Mode
482     HDMI_RX_Other                       = 0x4,      ///< HDMI RX Other Mode
483 } AUDIO_HDMI_RX_TYPE;
484 
485 typedef enum
486 {
487     CODEC_NONE                          = 0x0,
488     CODEC_LPCM                          = 0x1,      ///< Support LPCM
489     CODEC_DD                            = 0x2,      ///< Support DD
490     CODEC_MPEG1                         = 0x3,      ///< Support MPEG1
491     CODEC_MP3                           = 0x4,      ///< Support MP3
492     CODEC_MPEG2                         = 0x5,      ///< Support MPEG2
493     CODEC_AAC                           = 0x6,      ///< Support AAC
494     CODEC_DTS                           = 0x7,      ///< Support DTS
495     CODEC_ATRAC                         = 0x8,      ///< Support ATRAC
496     CODEC_ONEBITAUDIO                   = 0x9,      ///< Support One-Bit Audio
497     CODEC_DDP                           = 0xA,      ///< Support DDP
498     CODEC_DTSHD                         = 0xB,      ///< Support DTSHD
499     CODEC_TRUEHD                        = 0xC,      ///< Support MLP/TRUE-HD
500     CODEC_DST                           = 0xD,      ///< Support DST
501     CODEC_WMAPRO                        = 0xE,      ///< Support WMA-Pro
502     CODEC_MAX                           = 0xF,
503 } AUDIO_FORMAT_CODE;
504 
505 //====== HDMI Tx Mode TYPE========
506 typedef enum
507 {
508     HDMI_OUT_PCM,                       ///< HDMI OUTPUT PCM
509     HDMI_OUT_NONPCM,                    ///< HDMI OUTPUT non-PCM
510     HDMI_OUT_8CH_NONPCM,                ///< HDMI OUTPUT non-PCM with 8 Channel output
511 } HDMI_TX_OUTPUT_TYPE;
512 
513 //====== Audio output Mode TYPE========
514 typedef enum
515 {
516     AUDIO_AUOUT0_OUTPUT,                ///< 0: DAC0 OUTPUT
517     AUDIO_AUOUT1_OUTPUT,                ///< 1: T2=>AA0 OUTPUT    T3=>HP OUTPUT
518     AUDIO_AUOUT2_OUTPUT,                ///< 2: T2=>AA1 OUTPUT    T3=>DAC2 OUTPUT
519     AUDIO_AUOUT3_OUTPUT,                ///< 3: T2=>NULL          T3=>AA OUTPUT
520     AUDIO_SPDIF_OUTPUT,                 ///< 4: SPDIF OUTPUT
521     AUDIO_I2S_OUTPUT,                   ///< 5: I2S OUTPUT
522     AUDIO_HP_OUTPUT,                    ///< 6: OUTPUT with headphone driver
523     AUDIO_I2S2_OUTPUT,                  ///< 7: I2S2 OUTPUT
524     AUDIO_HDMI_ARC_OUTPUT,              ///< 8: HDMI ARC OUTPUT(HDMI_Rx,TV)
525     AUDIO_HDMI_OUTPUT,                  ///< 9: HDMI Tx OUTPUT(HDMI_Tx,STB)
526     AUDIO_NULL_OUTPUT                   = 0xFF,
527 } AUDIO_OUTPUT_TYPE;
528 
529 typedef enum
530 {
531     DIGITAL_SPDIF_OUTPUT,                 ///< 0: SPDIF
532     DIGITAL_HDMI_ARC_OUTPUT,          ///< 1: HDMI ARC
533     DIGITAL_HDMI_OUTPUT,                  ///< 2: HDMI
534     DIGITAL_I2S_OUTPUT,                     ///< 3: I2S
535     DIGITAL_MAX_OUTPUT,
536 } DIGITAL_OUTPUT_TYPE;
537 
538 //================================================================
539 //  I2S ENUM
540 //================================================================
541 //====== I2S OUTPUT Mode TYPE========
542 typedef enum
543 {
544     AUDIO_I2S_MCLK,                     ///< I2S MCLK
545     AUDIO_I2S_WORD_WIDTH,               ///< I2S Word-width
546     AUDIO_I2S_SOURCE_CH,                ///< I2S Source
547     AUDIO_I2S_FORMAT,                    ///< I2S format
548     AUDIO_I2S_RXMODE,                     ///< I2S RxMode
549     AUDIO_I2S_TXMODE,                     ///< I2S TxMode
550 } AUDIO_I2S_MODE_TYPE;
551 
552 
553 typedef enum
554 {
555     I2S_MCLK_64FS                       = 0x04,
556     I2S_MCLK_128FS                      = 0x05,
557     I2S_MCLK_256FS                      = 0x06,     ///< 256 Fs ==>default setting
558     I2S_MCLK_384FS                      = 0x07,
559 
560     I2S_WORD_WIDTH_16BIT                = 0x4,
561     I2S_WORD_WIDTH_24BIT                = 0x5,
562     I2S_WORD_WIDTH_32BIT                = 0x6,      ///< 32-bit ==> default setting
563 
564     I2S_FORMAT_STANDARD                 = 0,
565     I2S_FORMAT_LEFT_JUSTIFIED           = 1,
566 
567     I2S_MASTER_MODE                       = 0,      ///< MASTER_MODE ==> default setting
568     I2S_SLAVE_MODE                       = 1,
569 } AUDIO_I2S_MODE_VALUE;
570 
571 //================================================================
572 //  SPDIF ENUM
573 //================================================================
574 //====== SPDIF OUTPUT PATH========
575 typedef enum
576 {
577     MPEG_ENCODE,
578     DTS_ENCODE_2CH,
579     DTS_ENCODE_MULTI,
580     MP3_ENCODE,
581     DD_DDENCODE,
582     DD_DDCO,
583 }AUDIO_ENCODE_TYPE;
584 
585 //====== DIGITAL OUTPUT Mode TYPE========
586 typedef enum
587 {
588     DIGITAL_OUT_PCM,
589     DIGITAL_OUT_DOLBYDIGITAL,
590     DIGITAL_OUT_DTS,
591     DIGITAL_OUT_AAC_LC,
592     DIGITAL_OUT_NONE,
593 } AUDIO_DIGITAL_OUTPUT_TYPE;
594 
595 //====== SPDIF OUTPUT Mode TYPE========
596 typedef enum
597 {
598     SPDIF_OUT_PCM                       = 0x0,      ///< S/PDIF always output PCM
599     SPDIF_OUT_AUTO                      = 0x2,      ///< S/PDIF OUTPUT PCM or non-PCM automatic
600     SPDIF_OUT_NONPCM                    = 0x2,      ///< S/PDIF OUTPUT non-PCM
601     SPDIF_OUT_BYPASS,                   ///< S/PDIF OUTPUT by-pass from HDMI
602     SPDIF_OUT_TRANSCODE,                ///< S/PDIF OUTPUT always transcode
603     SPDIF_OUT_NONE,                     ///< S/PDIF OUTPUT nothing
604 } AUDIO_SPDIF_OUTPUT_TYPE;
605 
606 //====== SPDIF OUTPUT CS TYPE =========
607 typedef enum
608 {
609     SPDIF_CS_CategoryCode               = 0x0,      ///<
610     SPDIF_CS_CopyRight                  = 0x1,      ///<
611     SPDIF_CS_SourceNumber               = 0x2,      ///<
612     SPDIF_CS_ChannelNumber              = 0x3,      ///<
613     SPDIF_CS_SmpFreq                    = 0x4,      ///<
614     SPDIF_CS_ClockAcc                   = 0x5,      ///<
615     SPDIF_ChannelAB                     = 0x6,      ///<
616     SPDIF_CS_CopyProtect                = 0x7,      ///<
617 } AUDIO_SPDIF_CS_TYPE;
618 
619 //====== SPDIF OUTPUT CS Status =======
620 typedef enum
621 {
622     SPDIF_CS_Category_BroadCast         = 0x00,     ///<
623     SPDIF_CS_Category_General           = 0x01,     ///<
624     SPDIF_CS_Category_BroadCast_JP      = 0x02,     ///<
625     SPDIF_CS_Category_BroadCast_EU      = 0x03,     ///<
626     SPDIF_CS_Category_BroadCast_USA     = 0x04,     ///<
627     SPDIF_CS_Category_Rev4              = 0x05,     ///<
628     SPDIF_CS_Category_Rev5              = 0x06,     ///<
629     SPDIF_CS_Category_Rev6              = 0x07,     ///<
630     SPDIF_CS_CopyRight_CP               = 0x08,     ///<
631     SPDIF_CS_CopyRight_NonCP            = 0x09,     ///<SPDIF_CS_ChannelNumber_Right
632     SPDIF_CS_SourceNumber_2             = 0x0A,     ///<
633     SPDIF_CS_SourceNumber_5             = 0x0B,     ///<
634     SPDIF_CS_SourceNumber_6             = 0x0C,     ///<
635     SPDIF_CS_SourceNumber_Rev1          = 0x0D,     ///<
636     SPDIF_CS_SourceNumber_Rev2          = 0x0E,     ///<
637     SPDIF_CS_SourceNumber_Rev3          = 0x0F,     ///<
638     SPDIF_CS_ChannelNumber_A_Left       = 0x10,     ///<
639     SPDIF_CS_ChannelNumber_B_Right      = 0x11,     ///<
640     SPDIF_CS_ChannelNumber_C            = 0x12,     ///<
641     SPDIF_CS_ChannelNumber_D            = 0x13,     ///<
642     SPDIF_CS_ChannelNumber_E            = 0x14,     ///<
643     SPDIF_CS_ChannelNumber_F            = 0x15,     ///<
644     SPDIF_CS_ChannelNumber_G            = 0x16,     ///<
645     SPDIF_CS_ChannelNumber_H            = 0x17,     ///<
646     SPDIF_CS_ChannelNumber_I            = 0x18,     ///<
647     SPDIF_CS_ChannelNumber_J            = 0x19,     ///<
648     SPDIF_CS_ChannelNumber_K            = 0x1A,     ///<
649     SPDIF_CS_SmpFreq_192                = 0x1B,     ///<
650     SPDIF_CS_SmpFreq_176                = 0x1C,     ///<
651     SPDIF_CS_SmpFreq_128                = 0x1D,     ///<
652     SPDIF_CS_SmpFreq_96                 = 0x1E,     ///<
653     SPDIF_CS_SmpFreq_88                 = 0x1F,     ///<
654     SPDIF_CS_SmpFreq_64                 = 0x20,     ///<
655     SPDIF_CS_SmpFreq_48                 = 0x21,     ///<
656     SPDIF_CS_SmpFreq_44                 = 0x22,     ///<
657     SPDIF_CS_SmpFreq_32                 = 0x23,     ///<
658     SPDIF_CS_SmpFreq_24                 = 0x24,     ///<
659     SPDIF_CS_SmpFreq_22                 = 0x25,     ///<
660     SPDIF_CS_SmpFreq_16                 = 0x26,     ///<
661     SPDIF_CS_SmpFreq_Rev1               = 0x27,     ///<
662     SPDIF_CS_SmpFreq_Rev2               = 0x28,     ///<
663     SPDIF_CS_SmpFreq_Rev3               = 0x29,     ///<
664     SPDIF_CS_SmpFreq_Rev4               = 0x2A,     ///<
665     SPDIF_CS_SmpFreq_Rev5               = 0x2B,     ///<
666     SPDIF_CS_ClockAcc_Lev1              = 0x2C,     ///<
667     SPDIF_CS_ClockAcc_Lev2              = 0x2D,     ///<
668     SPDIF_CS_ClockAcc_Lev3              = 0x2E,     ///<
669     SPDIF_CS_ClockAcc_NotMatch          = 0x2F,     ///<
670     SPDIF_ChannelAB_Invalid_ON          = 0x30,     ///<
671     SPDIF_ChannelAB_Invalid_OFF         = 0x31,     ///<
672     SPDIF_CS_CopyProtect_CopyFree       = 0x32,     ///<
673     SPDIF_CS_CopyProtect_CopyOnce       = 0x33,     ///<
674     SPDIF_CS_CopyProtect_CopyNever      = 0x34,     ///<
675 } AUDIO_SPDIF_CS_TYPE_STATUS;
676 
677 //====== SPDIF OUTPUT CS Mode TYPE========
678 typedef enum
679 {
680     SPDIF_CHANNEL_STATUS_FS,            ///< Set sampling rate in CS3
681     SPDIF_CHANNEL_STATUS_CATEGORY,      ///< Set Category code in CS1
682     SPDIF_CHANNEL_STATUS_PCM_FORMAT,    ///< Set PCM/NonPCM mode in CS0
683     SPDIF_CHANNEL_STATUS_SOURCE_NUMBER,    ///< Set source number in CS2
684     SPDIF_CHANNEL_STATUS_CHANNEL_NUMBER,    ///< Set Channel number in CS2
685 } SPDIF_CS_MODE_TYPE;
686 
687 typedef enum
688 {
689     SPDIF_CS_FS_32K                     = 0xC0,
690     SPDIF_CS_FS_44K                     = 0x00,
691     SPDIF_CS_FS_48K                     = 0x40,     ///< ==>default setting
692     SPDIF_CS_CATEGORY_NONE              = 0x00,
693     SPDIF_CS_CATEGORY_DVB               = 0x30,
694     SPDIF_CS_CATEGORY_ATSC              = 0x26,
695     SPDIF_CS_FORMAT_PCM                 = 0x00,
696     SPDIF_CS_FORMAT_NONPCM              = 0x40,
697 }SPDIF_CS_MODE_VALUE;
698 
699 //================================================================
700 //  SIF ENUM
701 //================================================================
702 //======SIF Standard========
703 typedef enum
704 {
705     AU_SYS_NOT_READY,                   // 0
706     AU_SYS_M_BTSC,                      // 1
707     AU_SYS_M_EIAJ,                      // 2
708     AU_SYS_M_A2,                        // 3
709 
710     AU_SYS_BG_A2,                       // 4
711     AU_SYS_DK1_A2,                      // 5
712     AU_SYS_DK2_A2,                      // 6
713     AU_SYS_DK3_A2,                      // 7
714 
715     AU_SYS_BG_NICAM,                    // 8
716     AU_SYS_DK_NICAM,                    // 9
717     AU_SYS_I_NICAM,                     // 10
718     AU_SYS_L_NICAM,                     // 11
719     AU_SYS_FM_RADIO,                    // 12
720     AU_SYS_HI_DEV                       = 0x10,
721     AU_SYS_BUSY                         = 0x80,
722     STD_SEL_AUTO                        = 0xE0
723 }AUDIO_SIF_SET_STANDARD;
724 
725 //======SIF System Type========
726 typedef enum
727 {
728     A2_M_STANDARD                       = 0x00,
729     A2_BG_STANDARD,
730     A2_DK_STANDARD,
731     A2_I_STANDARD,
732     AM_STANDARD,
733     NICAM_BG_STANDARD,
734     NICAM_I_STANDARD,
735     HIDEV_M_STANDARD,
736     HIDEV_BG_STANDARD,
737     HIDEV_DK_STANDARD,
738     HIDEV_I_STANDARD,
739     BTSC_STANDARD,
740     FM_RADIO_STANDARD,
741     WRITE_THRESHOLD                     = 0x10
742 }AUDIO_SIF_SYSTEM_TYPE;
743 
744 
745 //======SIF Threshold Type========
746 typedef enum
747 {
748     CARRIER1_ON_AMP                     = 0x00,
749     CARRIER1_OFF_AMP,
750     CARRIER1_ON_NSR,
751     CARRIER1_OFF_NSR,
752     CARRIER2_ON_AMP,
753     CARRIER2_OFF_AMP,
754     CARRIER2_ON_NSR,
755     CARRIER2_OFF_NSR,
756     A2_PILOT_ON_AMP,
757     A2_PILOT_OFF_AMP,
758 
759     NICAM_ON_SIGERR                     = 0x0,
760     NICAM_OFF_SIGERR                    = 0x1,
761 
762     BTSC_MONO_ON_NSR_RATIO              = 0x0,
763     BTSC_MONO_OFF_NSR_RATIO             = 0x1,
764     BTSC_PILOT_AMPLITUDE_ON             = 0x2,
765     BTSC_PILOT_AMPLITUDE_OFF            = 0x3,
766     BTSC_SAP_ON_NSR_RATIO               = 0x4,
767     BTSC_SAP_OFF_NSR_RATIO              = 0x5,
768     BTSC_STEREO_ON_RATIO                = 0x6,
769     BTSC_STEREO_OFF_NSR_RATIO           = 0x7,
770     BTSC_SAP_AMPLITUDE_ON               = 0x8,
771     BTSC_SAP_AMPLITUDE_OFF              = 0x9,
772     BTSC_HIDEV_ON_NSR_RATIO             = 0xA,
773     BTSC_HIDEV_OFF_NSR_RATIO            = 0xB
774 }AUDIO_SIF_THRESHOLD_TYPE;
775 
776 //======SIF Gain Type========
777 typedef enum
778 {
779     PRESCALE_STEP_ONE_DB                = 0x04,
780     SET_PRESCALE_A2_FM                  = 0x00,
781     SET_PRESCALE_NICAM                  = 0x01,
782     SET_PRESCALE_AM                     = 0x02,
783     SET_PRESCALE_HIDEV                  = 0x03,
784     SET_PRESCALE_FM_M                   = 0x04,
785     SET_PRESCALE_HIDEV_M                = 0x05,
786 
787     SET_PRESCALE_BTSC                   = 0x00,
788     SET_PRESCALE_BTSC_MONO              = 0x01,
789     SET_PRESCALE_BTSC_STEREO            = 0x02,
790     SET_PRESCALE_BTSC_SAP               = 0x03,
791 
792     SET_PRESCALE_FM_RADIO               = 0x00,
793     SET_PRESCALE_FM_RADIO_MONO          = 0x01,
794     SET_PRESCALE_FM_RADIO_STEREO        = 0x02
795 
796 }AUDIO_SIF_GAIN_TYPE;
797 
798 enum
799 {
800     AU_STATUS_MUTE                      = 0x00,
801     AU_STATUS_MONO                      = 0x01,    // Primary Mono
802     AU_STATUS_STEREO                    = 0x02,    // Primary Stereo
803     AU_STATUS_SAP                       = 0x04,    // Second Audio Program
804     AU_STATUS_NICAM                     = 0x08,    // Second Audio Program
805     AU_STATUS_NICAM_MONO                = 0x10
806 };
807 
808 //  enum for sif command
809 typedef enum
810 {
811     // need to compatible with En_AUD_SIF_CmdType at apiAUDIO.h
812     AU_SIF_CMD_SET_STOP                 = 0x00,
813     AU_SIF_CMD_SET_PLAY                 = 0x01,
814     AU_SIF_CMD_ENABLE_HIDEV             = 0x02,
815     AU_SIF_CMD_SET_HIDEV_FILTER_BW_LEVEL= 0x03,
816     AU_SIF_CMD_RESET_FC_TRACKING        = 0x04,
817     AU_SIF_CMD_ENABLE_FC_TRACKING       = 0x05,
818     AU_SIF_CMD_SET_ADC_FROM_VIF_PATH    = 0x06,
819     AU_SIF_CMD_ENABLE_AUTO_MUTE         = 0x07,
820     AU_SIF_CMD_ENABLE_BEEPER_FUNCTION   = 0x08,
821     AU_SIF_CMD_SET_BEEPER_TONE          = 0x09,
822     AU_SIF_CMD_ENABLE_AGC               = 0x0A,
823     AU_SIF_CMD_RESET_AGC                = 0x0B,
824     AU_SIF_CMD_STANDARD_RESET           = 0x0C,
825     AU_SIF_CMD_DETECT_MAIN_STD_ONLY     = 0x0D,
826     AU_SIF_CMD_ENABLE_AUTO_SOUNDMODE    = 0x0E,
827     AU_SIF_CMD_SET_FM_RADIO_DeEmp       = 0x0F,
828     AU_SIF_CMD_SET_FM_RADIO_FC_TRACK    = 0x10,
829     AU_SIF_CMD_FM_RADIO_RESET           = 0x11,
830     AU_SIF_CMD_FMTX_SET_PREEMP          = 0x12,
831     AU_SIF_CMD_SET_ENC_CMD              = 0x13,
832     AU_SIF_CMD_SET_ENC_Input_attenuation                 = 0x14,
833     AU_SIF_CMD_SET_ENC_Output_scaling                = 0x15,
834     AU_SIF_CMD_SET_BTSC_Enc_M_Gain                 =0x16,
835     AU_SIF_CMD_SET_BTSC_Enc_D_Gain                 = 0x17,
836     AU_SIF_CMD_SET_BTSC_Enc_SAP_Gain                 = 0x18,
837 
838     // internal used at sif driver.
839     AU_SIF_CMD_SET_STD                  = 0x40,
840     AU_SIF_CMD_SET_SUB_CARRIER_STD      = 0x41,
841     AU_SIF_CMD_SET_CARRIER_DEBOUNCE     = 0x42,
842     AU_SIF_CMD_ENABLE_SIF_SYNTHESIZER   = 0x43,
843     AU_SIF_CMD_ENABLE_CHANNEL           = 0x44,
844     AU_SIF_CMD_SET_SIFFIFO_MODE         = 0x45,
845     AU_SIF_CMD_DK123_MONITOR            = 0x46,
846 
847     // internal used at sif driver.
848     AU_SIF_CMD_GET_HIDEV_ENABLE         = 0x80,
849     AU_SIF_CMD_GET_HIDEV_FILTER_BW_LEVEL= 0x81,
850     AU_SIF_CMD_GET_ADC_FROM_VIF_PATH    = 0x82,
851     AU_SIF_CMD_GET_FM_A2_MODE_STATUS    = 0x83,
852     AU_SIF_CMD_GET_BTSC_MODE_STATUS     = 0x84,
853     AU_SIF_CMD_GET_NICAM_MODE_STATUS    = 0x85,
854     AU_SIF_CMD_GET_STANDARD_STATUS      = 0x86,
855     AU_SIF_CMD_GET_STANDARD_CMD         = 0x87,
856     AU_SIF_CMD_GET_NSR_CMD              = 0x88,
857     AU_SIF_CMD_GET_AMP_CMD              = 0x89,
858     AU_SIF_CMD_GET_FM_RADIO_MODE_STATUS = 0x8A,
859     AU_SIF_CMD_GET_FM_RADIO_DC_AMP      = 0x8B,
860     AU_SIF_CMD_GET_FM_RADIO_NSR         = 0x8C,
861     AU_SIF_CMD_GET_VIF_PATCH_ENABLE     = 0x90,
862     AU_SIF_CMD_SET_SIF_SHIFT_CLK        = 0x91,
863 
864     AU_SIF_CMD2_ADC_VIA_VIF_PIN = 0x01
865 } AU_SIF_CMD;
866 
867 //====== DSP code Type========
868 typedef enum
869 {
870     AU_DVB_STANDARD_INVALID             = 0xFF,
871     AU_DVB_STANDARD_DEC_DSP             = 0x00,    // define for dsp load code
872     AU_DVB_STANDARD_DEC_DSP_EXT         = 0x10,    // define for dsp load code
873     AU_DVB_NONE                         = 0x00,     //0x00
874     AU_DVB_DEC_NONE,                    //0x01
875     AU_DVB_ENC_NONE,                    //0x02
876     AU_DVB_STANDARD_MPEG,               //0x03
877     AU_DVB_STANDARD_AC3,                //0x04
878     AU_DVB_STANDARD_AC3P,               //0x05
879     AU_DVB_STANDARD_AAC,                //0x06
880     AU_DVB_STANDARD_MP3,                //0x07
881     AU_DVB_STANDARD_WMA,                //0x08
882     AU_DVB_STANDARD_RESERVE3,           //0x09
883     AU_DVB_STANDARD_RA8LBR,             //0x0A
884     AU_DVB_STANDARD_XPCM,               //0x0B
885     AU_DVB_STANDARD_TONE,               //0x0C
886     AU_DVB_STANDARD_DTS,                //0x0D
887     AU_DVB_STANDARD_MS10_DDT,           //0x0E
888     AU_DVB_STANDARD_MS10_DDC,           //0x0F
889     AU_DVB_STANDARD_WMA_PRO,            //0x10
890     AU_DVB_STANDARD_FLAC,               //0x11
891     AU_DVB_STANDARD_VORBIS,             //0x12
892     AU_DVB_STANDARD_DTSLBR,             //0x13
893     AU_DVB_STANDARD_AMR_NB,             //0x14
894     AU_DVB_STANDARD_AMR_WB,             //0x15
895     AU_DVB_STANDARD_DRA,                //0x16
896     AU_DVB_STANDARD_MPEG_AD,            //0x17
897     AU_DVB_STANDARD_DolbyTrueHD_Bypass, //0x18
898     AU_DVB_STANDARD_DTSHD_ADO, //0x19
899     AU_DVB_STANDARD_MAX,
900 
901     AU_DVB_STANDARD_ENC                 = 0x20,    // define for dsp load code
902     AU_DVB_STANDARD_MPEG_EN             = 0x20,
903 
904     AU_DVB2_STANDARD_SE_DSP             = 0x30,    // define for dsp load code
905     //AU_DVB2_STANDARD_SE_DSP_EXT         = 0x40,    // need to refine ADV judgement first.
906     AU_DVB2_NONE                        = 0x30,
907     AU_DVB2_STANDARD_MPEG_AD ,
908     AU_DVB2_STANDARD_AC3_AD,
909     AU_DVB2_STANDARD_AC3P_AD,
910     AU_DVB2_STANDARD_AAC_AD,
911     AU_DVB2_STANDARD_DDE,
912     AU_DVB2_STANDARD_GAAC_AD,
913     AU_DVB2_STANDARD_MP3,
914     AU_DVB2_STANDARD_MPEG_EN,
915     AU_DVB2_STANDARD_XPCM,
916     AU_DVB2_STANDARD_KTV,
917     AU_DVB2_STANDARD_KTV2,
918     AU_DVB2_STANDARD_DTS,
919     AU_DVB2_STANDARD_TONEGEN,
920     AU_DVB2_STANDARD_DolbyTrueHD_Bypass,
921     AU_DVB2_STANDARD_DTSHD_ADO,
922     AU_DVB2_STANDARD_MAX,
923 
924     AU_DVB2_ADVSND                      = 0x40,    // define for dsp load code
925     AU_DVB2_ADVSND_PL2                  = 0x40,
926     AU_DVB2_ADVSND_BBE,
927     AU_DVB2_ADVSND_SRS,
928     AU_DVB2_ADVSND_VDS,
929     AU_DVB2_ADVSND_VSPK,
930     AU_DVB2_ADVSND_SUPV,
931     AU_DVB2_ADVSND_TSHD,
932     AU_DVB2_ADVSND_DTS_ULTRA_TV,
933     AU_DVB2_ADVSND_TSHDVIQ,
934     AU_DVB2_ADVSND_AUDSY,
935     AU_DVB2_ADVSND_DBX,
936     AU_DVB2_ADVSND_THEATERSOUND,
937     AU_DVB2_ADVSND_PURESND,
938     AU_DVB2_ADVSND_STUDIOSOUND_3D,
939     AU_DVB2_ADVSND_BONGIOVI_DPS,
940     AU_DVB2_ADVSND_MAX,
941 
942     AU_DEC_SYSTEM                       = 0x50,
943     AU_SE_SYSTEM                        = 0x60,
944 
945     AU_KTV_ENC                          = 0x70,
946     AU_KTV_FUNC                         = 0x80,
947     AU_KTV_SYSTEM                       = 0x90,
948 
949     AU_SND_EFFECT                       = 0xa0,
950 
951     AU_STANDARD_SIF_TYPE                = 0xb0,
952     AU_SIF_NONE                         = 0xb0,
953     AU_SIF_BTSC ,
954     AU_SIF_EIAJ,
955     AU_SIF_PALSUM,
956     AU_SIF_FM_RADIO,
957 
958     AU_ATVENC_NONE                      = 0xc0,
959     AU_ATVENC_FMTx,
960     AU_ATVENC_BTSC,
961 
962 }AUDIO_DSP_CODE_TYPE;
963 
964 typedef enum
965 {
966     AU_SIF_PAL_MONO,
967     AU_SIF_PAL_HIDEV,
968     AU_SIF_PAL_A2,
969     AU_SIF_PAL_NICAM
970 }AUDIO_SIF_PAL_TYPE;
971 
972 typedef enum
973 {
974     AU_MODE_MONO,                       ///< MONO
975     AU_MODE_STEREO,                     ///< STEREO
976     AU_MODE_SAP,                        ///< SAP
977     AU_MODE_LANG_A,                     ///< LANG_A
978     AU_MODE_LANG_B,                     ///< LANG_B
979     AU_MODE_LANG_AB,                    ///< LANG_AB
980     AU_MODE_FORCE_NICAM,                ///< FORCE_NICAM
981     AU_MODE_NICAM_MONO,
982     AU_MODE_AUTO                        = 0x80      ///< auto switch to mono & mute
983 } AUDIO_SIF_SOUND_MODE;
984 
985 
986 //================================================================
987 //  DVB/MAD ENUM
988 //================================================================
989 //====== DSP Running Counter Type========
990 typedef enum
991 {
992     DSP_DEC_MAIN_COUNTER,               /// Main counter for 1st DSP
993     DSP_DEC_TIMER_COUNTER,              /// Timer counter for 1st DSP
994     DSP_SE_MAIN_COUNTER,                /// Main counter for 2nd DSP
995     DSP_SE_TIMER_COUNTER,               /// Timer counter for 2nd DSP
996     DSP_SE_ISR_COUNTER,                 /// ISR counter for 2nd DSP
997     DEC_R2_MAIN_COUNTER,                /// Main counter for DEC R2
998     DEC_R2_TIMER_COUNTER,               /// Timer counter for DEC R2
999     SND_R2_MAIN_COUNTER,                /// Main counter for SND R2
1000     SND_R2_TIMER_COUNTER                /// Timer counter for SND R2
1001 } AUDIO_DSP_COUNTER_TYPE;
1002 
1003 ///< Audio decoder system (1st & 2nd) type
1004 typedef enum
1005 {
1006     MSAPI_AUD_DVB_INVALID               = 0xFF,     ///< 0xFF: System=Invalid
1007 
1008     //DTV / MM Audio main decoder
1009     MSAPI_AUD_DVB_NONE                  = 0x00,     ///< 0x00: System=None
1010     MSAPI_AUD_DVB_MPEG,                 ///< 0x01: System=MPEG
1011     MSAPI_AUD_DVB_AC3,                  ///< 0x02: System=AC3
1012     MSAPI_AUD_DVB_AC3P,                 ///< 0x03: System=AC3+
1013     MSAPI_AUD_DVB_AAC,                  ///< 0x04: System=AAC
1014     MSAPI_AUD_DVB_MP3,                  ///< 0x05: System=MP3
1015     MSAPI_AUD_DVB_WMA,                  ///< 0x06: System=WMA
1016     MSAPI_AUD_DVB_CDLPCM,               ///< 0x07: System=LPCM
1017     MSAPI_AUD_DVB_RA8LBR,               ///< 0x08: System=RA8 LBR
1018     MSAPI_AUD_DVB_XPCM,                 ///< 0x09: System=XPCM
1019     MSAPI_AUD_DVB_TONE,                 ///< 0x0A: System=TONE
1020     MSAPI_AUD_DVB_DTS,                  ///< 0x0B: System=DTS
1021     MSAPI_AUD_DVB_MS10_DDT,             ///< 0x0C: System=MS10 DDT
1022     MSAPI_AUD_DVB_MS10_DDC,             ///< 0x0D: System=MS10 DDC
1023     MSAPI_AUD_DVB_WMA_PRO,              ///< 0x0E: System=WMA PRO
1024     MSAPI_AUD_DVB_FLAC,                 ///< 0x0F: System=FLAC
1025     MSAPI_AUD_DVB_VORBIS,               // 0x10
1026     MSAPI_AUD_DVB_DTSLBR,               // 0x11
1027     MSAPI_AUD_DVB_AMR_NB,               // 0x12
1028     MSAPI_AUD_DVB_AMR_WB,               // 0x13
1029     MSAPI_AUD_DVB_DRA,                  // 0x14
1030     MSAPI_AUD_DVB_DolbyTrueHDBypass,    ///< 0x15: Dolby TruHD bypass
1031     MSAPI_AUD_DVB_DTSHDADO,             //0x16:
1032     MSAPI_AUD_DVB_MAX,
1033 
1034     //DTV Audio decoder 2 (for AD)
1035     MSAPI_AUD_DVB2_NONE                 = 0x30,     ///< 0x30: System=None
1036     MSAPI_AUD_DVB2_MPEG,                ///< 0x31: System=MPEG AD
1037     MSAPI_AUD_DVB2_AC3,                 ///< 0x32: System=AC3 AD
1038     MSAPI_AUD_DVB2_MP3,                 ///< 0x33: System=2nd MP3
1039     MSAPI_AUD_DVB2_AAC,                 ///< 0x34: System=AAC AD
1040     MSAPI_AUD_DVB2_GAAC,                ///< 0x35: System=GAAC AD
1041     MSAPI_AUD_DVB2_AC3P,                ///< 0x36: System=AC3P AD
1042     MSAPI_AUD_DVB2_DDE,                 ///< 0x37: System=AC3 Encoder
1043     MSAPI_AUD_DVB2_DTSE,                ///< 0x38: System=DTS Encoder
1044     MSAPI_AUD_DVB2_XPCM,
1045     MSAPI_AUD_DVB2_KTV,
1046     MSAPI_AUD_DVB2_KTV2,
1047     MSAPI_AUD_DVB2_DTS,
1048     MSAPI_AUD_DVB2_TONEGEN,
1049     MSAPI_AUD_DVB2_DolbyTrueHDBypass,    ///< 0x15: Dolby TruHD bypass
1050     MSAPI_AUD_DVB2_DTSHDADO,             //0x16:
1051     MSAPI_AUD_DVB2_MAX,
1052 
1053     //ATV SIF
1054     MSAPI_AUD_ATV_NONE                  = 0xB0,     ///< 0xB0: System=None
1055     MSAPI_AUD_ATV_BTSC,                 ///< 0xB1: System=BTSC
1056     MSAPI_AUD_ATV_EIAJ,
1057     MSAPI_AUD_ATV_PAL,                  ///< 0xB3: System=PALSUM
1058     MSAPI_AUD_ATV_FM_RADIO,             ///< 0xB4: System=FM_RADIO
1059     MSAPI_AUD_ATV_MAX,
1060 
1061     //ATV ENC
1062     MSAPI_AUD_ATVENC_NONE               = 0xC0,     ///< 0xC0: System=None
1063     MSAPI_AUD_ATVENC_FMTX,              ///< 0xC1: System=FM_Tx
1064     MSAPI_AUD_ATVENC_BTSC,              ///< 0xC2: System=BTSC_Enc
1065     MSAPI_AUD_ATVENC_MAX
1066 } En_DVB_decSystemType;
1067 
1068 typedef enum
1069 {
1070     Audio_DEC_PCM                       = 0x00000001,
1071     Audio_DEC_XPCM                      = 0x00000002,
1072     Audio_DEC_MPEG                      = 0x00000004,
1073     Audio_DEC_MP3                       = 0x00000008,
1074     Audio_DEC_AC3                       = 0x00000010,
1075     Audio_DEC_AC3P                      = 0x00000020,
1076     Audio_DEC_AAC_LC                    = 0x00000040,
1077     Audio_DEC_HEAAC_V1                  = 0x00000080,
1078     Audio_DEC_HEAAC_V2                  = 0x00000100,
1079     Audio_DEC_DOLBYPULSE                = 0x00000200,
1080     Audio_DEC_WMA                       = 0x00000400,
1081     Audio_DEC_WMAPRO                    = 0x00000800,
1082     Audio_DEC_RA8                       = 0x00001000,
1083     Audio_DEC_DTS                       = 0x00002000,
1084     Audio_DEC_FLAC                      = 0x00004000,
1085     Audio_DEC_VORBIS                    = 0x00008000,
1086     Audio_DEC_KTV                       = 0x00010000,
1087     Audio_DEC_KTV2                      = 0x00020000,
1088     Audio_DEC_AMR_NB                    = 0x00040000,
1089     Audio_DEC_AMR_WB                    = 0x00080000,
1090     Audio_DEC_DRA                       = 0x00100000,
1091     Audio_DEC_DTSLBR                    = 0x00200000,
1092     Audio_DEC_Dolby_TrueHD_Bypass_R2    = 0x00400000,
1093     Audio_DEC_DTS_HD_ADO_R2             = 0x00800000,
1094     Audio_DEC_NULL                      = 0xFFFFFFFF
1095 
1096 } MMA_AudioType;
1097 
1098 //====== MMA ========
1099 typedef enum
1100 {
1101     MMA_STOP,
1102     MMA_PLAY,
1103     MMA_PLAY_FILETSP,
1104     MMA_RESYNC,
1105     MMA_PLAY_FILE,
1106     MMA_BROWSE,
1107     MMA_PAUSE,
1108     MMA_PLAY_FRAME,
1109     MMA_PLAY_FRAME_GS,
1110 
1111 } MMA_AUDIO_CONTROL;
1112 
1113 typedef enum
1114 {
1115   /*********  New Interface ********/
1116     Audio_Comm_infoType_MMA_init = 0x60,
1117     Audio_Comm_infoType_MMA_finish,
1118 
1119     /*******************************************************************/
1120     /* If you want add new cmd below,                                  */
1121     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order" */
1122     /*******************************************************************/
1123     Audio_Comm_infoType_ADEC1_capability = 0x70,
1124     Audio_Comm_infoType_ADEC1_setAudioDecoder,
1125     Audio_Comm_infoType_ADEC1_currAudDecStatus,
1126     Audio_Comm_infoType_ADEC1_AudioSyncStatus,   // 1 : AV-Sync  0: Free-run
1127     Audio_Comm_infoType_ADEC1_sampleRate,
1128     Audio_Comm_infoType_ADEC1_bitRate,
1129     Audio_Comm_infoType_ADEC1_acmod,
1130     Audio_Comm_infoType_ADEC1_soundmod,
1131     Audio_Comm_infoType_ADEC1_reqDataSize,
1132     Audio_Comm_infoType_ADEC1_okFrmCnt,
1133     Audio_Comm_infoType_ADEC1_errFrmCnt,
1134     Audio_Comm_infoType_ADEC1_1ms_timeStamp,
1135     Audio_Comm_infoType_ADEC1_33bit_PTS,
1136     Audio_Comm_infoType_ADEC1_33bit_STCPTS_DIFF,
1137     Audio_Comm_infoType_ADEC1_esBuf_reqFlag,       //new
1138     Audio_Comm_infoType_ADEC1_esBuf_reqAddr,
1139     Audio_Comm_infoType_ADEC1_esBuf_reqSize,
1140     Audio_Comm_infoType_ADEC1_esBuf_informDataRdy, //new
1141     Audio_Comm_infoType_ADEC1_esBuf_currLevel,
1142     Audio_Comm_infoType_ADEC1_pcmBuf_currLevel,
1143     Audio_Comm_infoType_ADEC1_playControl,
1144     Audio_Comm_infoType_ADEC1_FF2X,
1145     Audio_Comm_infoType_ADEC1_mute,
1146     Audio_Comm_infoType_syncSTC_in_mmTs,
1147     Audio_Comm_infoType_ADEC1_play_wo_output,
1148     Audio_Comm_infoType_ADEC1_audio_unsupported,
1149     Audio_Comm_infoType_ADEC1_UNI_PCMOutCnt,       // UNI_DEC1_PCM1 -> MIPS out size
1150     Audio_Comm_infoType_ADEC1_UNI_pcm_wptr,        // DEC1 -> UNI_DEC1_PCM1 wptr
1151     Audio_Comm_infoType_ADEC1_UNI_pcm_decSize,     // DEC1 -> UNI_DEC1_PCM1 w_size
1152     Audio_Comm_infoType_ADEC1_UNI_PCMInput_Addr,   // MISP -> UNI_DEC1_PCM3 wptr
1153     Audio_Comm_infoType_ADEC1_UNI_OutPCMLevel,     // UNI_DEC1_PCM3 level count
1154     Audio_Comm_infoType_ADEC1_avSyncOffset,
1155 
1156     Audio_Comm_infoType_ADEC1_Set_play_smpRate = 0x1000,
1157     Audio_Comm_infoType_ADEC1_Get_PTS_latency,
1158     Audio_Comm_infoType_ADEC1_Get_PCM_bufferEmpty,
1159 
1160     /********************************************************************/
1161     /* Please Add ADEC 1 cmd above                                      */
1162     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order"  */
1163     /********************************************************************/
1164     Audio_Comm_infoType_ADEC1_setDecParam = 0x8F,
1165     Audio_Comm_infoType_ADEC1_getDecInfo1 = 0x90,
1166     Audio_Comm_infoType_ADEC1_getDecInfo2,
1167     Audio_Comm_infoType_ADEC1_getDecInfo3,
1168     Audio_Comm_infoType_ADEC1_getDecInfo4,
1169     Audio_Comm_infoType_ADEC1_getDecInfo5,
1170     Audio_Comm_infoType_ADEC1_getDecInfo6,
1171     Audio_Comm_infoType_ADEC1_getDecInfo7,
1172     Audio_Comm_infoType_ADEC1_getDecInfo8,
1173     Audio_Comm_infoType_ADEC1_getDecChannelInfo,
1174 
1175     /********************************************************************/
1176     /* If you want add new cmd below,                                   */
1177     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order"  */
1178     /********************************************************************/
1179     Audio_Comm_infoType_ADEC2_capability = 0xA0,
1180     Audio_Comm_infoType_ADEC2_setAudioDecoder,
1181     Audio_Comm_infoType_ADEC2_currAudDecStatus,
1182     Audio_Comm_infoType_ADEC2_AudioSyncStatus,   // 1 : AV-Sync  0: Free-run
1183     Audio_Comm_infoType_ADEC2_sampleRate,
1184     Audio_Comm_infoType_ADEC2_bitRate,
1185     Audio_Comm_infoType_ADEC2_acmod,
1186     Audio_Comm_infoType_ADEC2_soundmod,
1187     Audio_Comm_infoType_ADEC2_reqDataSize,
1188     Audio_Comm_infoType_ADEC2_okFrmCnt,
1189     Audio_Comm_infoType_ADEC2_errFrmCnt,
1190     Audio_Comm_infoType_ADEC2_1ms_timeStamp,
1191     Audio_Comm_infoType_ADEC2_33bit_PTS,
1192     Audio_Comm_infoType_ADEC2_33bit_STCPTS_DIFF,
1193     Audio_Comm_infoType_ADEC2_esBuf_reqFlag,
1194     Audio_Comm_infoType_ADEC2_esBuf_reqAddr,
1195     Audio_Comm_infoType_ADEC2_esBuf_reqSize,
1196     Audio_Comm_infoType_ADEC2_esBuf_informDataRdy,
1197     Audio_Comm_infoType_ADEC2_esBuf_currLevel,
1198     Audio_Comm_infoType_ADEC2_pcmBuf_currLevel,
1199     Audio_Comm_infoType_ADEC2_playControl,
1200     Audio_Comm_infoType_ADEC2_FF2X,
1201     Audio_Comm_infoType_ADEC2_mute,
1202     Audio_Comm_infoType_ADEC2_syncSTC_in_mmTs,
1203     Audio_Comm_infoType_ADEC2_play_wo_output,
1204     Audio_Comm_infoType_ADEC2_audio_unsupported,
1205     Audio_Comm_infoType_ADEC2_UNI_PCMOutCnt,       // UNI_DEC2_PCM1 -> MIPS out size
1206     Audio_Comm_infoType_ADEC2_UNI_pcm_wptr,        // DEC2 -> UNI_DEC2_PCM1 wptr
1207     Audio_Comm_infoType_ADEC2_UNI_pcm_decSize,     // DEC2 -> UNI_DEC2_PCM1 w_size
1208     Audio_Comm_infoType_ADEC2_UNI_PCMInput_Addr,   // MISP -> UNI_DEC2_PCM3 wptr
1209     Audio_Comm_infoType_ADEC2_UNI_OutPCMLevel,     // UNI_DEC2_PCM3 level count
1210     Audio_Comm_infoType_ADEC2_avSyncOffset,
1211 
1212     /********************************************************************/
1213     /* Please Add ADEC 2 cmd above                                      */
1214     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order"  */
1215     /********************************************************************/
1216     Audio_Comm_infoType_ADEC2_setDecParam = 0xBF,
1217     Audio_Comm_infoType_ADEC2_getDecInfo1 = 0xC0,
1218     Audio_Comm_infoType_ADEC2_getDecInfo2,
1219     Audio_Comm_infoType_ADEC2_getDecInfo3,
1220     Audio_Comm_infoType_ADEC2_getDecInfo4,
1221     Audio_Comm_infoType_ADEC2_getDecInfo5,
1222     Audio_Comm_infoType_ADEC2_getDecInfo6,
1223     Audio_Comm_infoType_ADEC2_getDecInfo7,
1224     Audio_Comm_infoType_ADEC2_getDecInfo8,
1225     Audio_Comm_infoType_ADEC2_getDecChannelInfo,
1226 
1227     /**********************************************************************/
1228     /* If you want add new cmd below,                                     */
1229     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order"    */
1230     /**********************************************************************/
1231     Audio_Comm_infoType_ADEC3_capability = 0xD0,
1232     Audio_Comm_infoType_ADEC3_setAudioDecoder,
1233     Audio_Comm_infoType_ADEC3_currAudDecStatus,
1234     Audio_Comm_infoType_ADEC3_AudioSyncStatus,   // 1 : AV-Sync  0: Free-run
1235     Audio_Comm_infoType_ADEC3_sampleRate,
1236     Audio_Comm_infoType_ADEC3_bitRate,
1237     Audio_Comm_infoType_ADEC3_acmod,
1238     Audio_Comm_infoType_ADEC3_soundmod,
1239     Audio_Comm_infoType_ADEC3_reqDataSize,
1240     Audio_Comm_infoType_ADEC3_okFrmCnt,
1241     Audio_Comm_infoType_ADEC3_errFrmCnt,
1242     Audio_Comm_infoType_ADEC3_1ms_timeStamp,
1243     Audio_Comm_infoType_ADEC3_33bit_PTS,
1244     Audio_Comm_infoType_ADEC3_33bit_STCPTS_DIFF,
1245     Audio_Comm_infoType_ADEC3_esBuf_reqFlag,
1246     Audio_Comm_infoType_ADEC3_esBuf_reqAddr,
1247     Audio_Comm_infoType_ADEC3_esBuf_reqSize,
1248     Audio_Comm_infoType_ADEC3_esBuf_informDataRdy,
1249     Audio_Comm_infoType_ADEC3_esBuf_currLevel,
1250     Audio_Comm_infoType_ADEC3_pcmBuf_currLevel,
1251     Audio_Comm_infoType_ADEC3_playControl,
1252     Audio_Comm_infoType_ADEC3_FF2X,
1253     Audio_Comm_infoType_ADEC3_mute,
1254     Audio_Comm_infoType_ADEC3_syncSTC_in_mmTs,
1255     Audio_Comm_infoType_ADEC3_play_wo_output,
1256     Audio_Comm_infoType_ADEC3_audio_unsupported,
1257     Audio_Comm_infoType_ADEC3_UNI_PCMOutCnt,       // UNI_DEC3_PCM1 -> MIPS out size
1258     Audio_Comm_infoType_ADEC3_UNI_pcm_wptr,        // DEC3 -> UNI_DEC3_PCM1 wptr
1259     Audio_Comm_infoType_ADEC3_UNI_pcm_decSize,     // DEC3 -> UNI_DEC3_PCM1 w_size
1260     Audio_Comm_infoType_ADEC3_UNI_PCMInput_Addr,   // MISP -> UNI_DEC3_PCM3 wptr
1261     Audio_Comm_infoType_ADEC3_UNI_OutPCMLevel,     // UNI_DEC3_PCM3 level count
1262     Audio_Comm_infoType_ADEC3_avSyncOffset,
1263 
1264     /**********************************************************************/
1265     /* Please Add ADEC 3 cmd above                                        */
1266     /* Please make sure ADEC 1 / 2/ 3 have "same" cmd in "same" order"    */
1267     /**********************************************************************/
1268     Audio_Comm_infoType_ADEC3_setDecParam = 0xEF,
1269     Audio_Comm_infoType_ADEC3_getDecInfo1 = 0xF0,
1270     Audio_Comm_infoType_ADEC3_getDecInfo2,
1271     Audio_Comm_infoType_ADEC3_getDecInfo3,
1272     Audio_Comm_infoType_ADEC3_getDecInfo4,
1273     Audio_Comm_infoType_ADEC3_getDecInfo5,
1274     Audio_Comm_infoType_ADEC3_getDecInfo6,
1275     Audio_Comm_infoType_ADEC3_getDecInfo7,
1276     Audio_Comm_infoType_ADEC3_getDecInfo8,
1277     Audio_Comm_infoType_ADEC3_getDecChannelInfo,
1278 
1279     /****************************************************/
1280     /*  General audio cmd  */
1281     /****************************************************/
1282     Audio_Comm_infoType_DecStatus = 0x00,
1283     Audio_Comm_infoType_SampleRate,
1284     Audio_Comm_infoType_SoundMode,
1285     Audio_Comm_infoType_DecOutMode,
1286     Audio_Comm_infoType_ChannelMode,
1287     Audio_Comm_infoType_MMFileSize,
1288     Audio_Comm_infoType_33Bit_PTS,
1289     Audio_Comm_infoType_33Bit_STCPTS_DIFF,
1290     Audio_Comm_infoType_1ms_PTS,
1291     Audio_Comm_infoType_DEC1_BufferSize,
1292     Audio_Comm_infoType_DEC1_BufferAddr,
1293     Audio_Comm_infoType_DEC1_MMTag,
1294     Audio_Comm_infoType_DEC1_MMResidualPCM,
1295     Audio_Comm_infoType_DEC1_ESBufferSize,
1296     Audio_Comm_infoType_DEC1_PCMBufferSize,
1297     Audio_Comm_infoType_DEC2_BufferSize,
1298     Audio_Comm_infoType_DEC2_BufferAddr = 0x10,
1299     Audio_Comm_infoType_DEC2_MMTag,
1300     Audio_Comm_infoType_DEC2_MMResidualPCM,
1301     Audio_Comm_infoType_DecodeErrorCnt,
1302     Audio_Comm_infoType_MM_FFx2,
1303     Audio_Comm_infoType_setBypassSPDIF_PAPB_chk,
1304     Audio_Comm_infoType_CompressBin_LoadCode,
1305     Audio_Comm_infoType_CompressBin_DDRAddress,
1306     Audio_Comm_infoType_DMAReader_BufferLevel,
1307     Audio_Comm_infoType_DMAReader_Command,
1308     Audio_Comm_infoType_SetSCMS,
1309     Audio_Comm_infoType_GetSCMS,
1310     Audio_Comm_infoType_ADC_InputGain,
1311     Audio_Comm_infoType_KTV_SetType,
1312     Audio_Comm_infoType_getSignal_Energy,
1313     Audio_Comm_infoType_getNR_Status,
1314     Audio_Comm_infoType_setNR_Threshold = 0x20,
1315     Audio_Comm_infoType_setSPDIF_FS,
1316     Audio_Comm_infoType_getSPDIF_FS,
1317     Audio_Comm_infoType_setSpdifDelay,
1318     Audio_Comm_infoType_ReadByte,
1319     Audio_Comm_infoType_WriteByte,
1320     Audio_Comm_infoType_hdmiTx_outType,
1321     Audio_Comm_infoType_hdmiTx_outFreq,
1322     Audio_Comm_infoType_PTS_info,
1323     Audio_Comm_infoType_RTSP_Mem,
1324     Audio_Comm_infoType_setSpdif_BufferProcess,
1325     Audio_Comm_infoType_DEC1_setBufferProcess,
1326     Audio_Comm_infoType_setES_REQ_SZ,
1327     Audio_Comm_infoType_AD_OutputStyle,
1328     Audio_Comm_infoType_getHDMI_CopyRight_C_Bit,
1329     Audio_Comm_infoType_getHDMI_CopyRight_L_Bit,
1330     Audio_Comm_infoType_Set_UNI_NEED_DECODE_FRMCNT = 0x30,
1331     Audio_Comm_infoType_Set_UNI_ES_Wptr,
1332     Audio_Comm_infoType_Get_UNI_ES_MEMCNT,
1333     Audio_Comm_infoType_Set_MENU_WT_PTR,
1334     Audio_Comm_infoType_Get_MENU_WT_PTR,
1335     Audio_Comm_infoType_Get_MENU_KEY_CNT,
1336     Audio_Comm_infoType_Get_CurSynthRate,
1337     Audio_Comm_infoType_ADC1_InputGain,
1338     Audio_Comm_infoType_mainpath_mute_status,
1339     Audio_Comm_infoType_spdif_mute_status,
1340     Audio_Comm_infoType_hdmiTX_mute_status,
1341     Audio_Comm_infoType_SRC_Compensation,
1342     Audio_Comm_infoType_Dump_Dsp_Info,
1343     Audio_Comm_infoType_Set_Video_STCPTS_DIFF,
1344 
1345     Audio_Comm_infoType_Get_UNI_ES_Base,
1346     Audio_Comm_infoType_Get_UNI_ES_Size,
1347     Audio_Comm_infoType_Get_UNI_PCM_Base = 0x40,
1348     Audio_Comm_infoType_Get_UNI_PCM_Size,
1349     Audio_Comm_infoType_Get_AccumEsCnt,
1350     Audio_Comm_infoType_DSP_PLL_Setting,
1351     Audio_Comm_infoType_Set_CallBackFunc,
1352     Audio_Comm_infoType_Set_ALSA_Mode,  /* For OMX Dual Mono Setting */
1353     Audio_Comm_infoType_HDMI_Unstable_Protect,
1354     Audio_Comm_infoType_HDMI_Unstable_Threshold,
1355     Audio_Comm_infoType_Set_TEE_Capibility,
1356     Audio_Comm_infoType_Parser_Spec,  /* Support ISO 11172-1 for MM */
1357     Audio_Comm_infoType_Get_MultiPlayer_Capability,
1358     Audio_Comm_infoType_Get_Parser_Architecture,
1359     Audio_Comm_infoType_Set_CfgCtrlRegs_Lock,
1360     Audio_Comm_infoType_DMAReader_BufferSize,
1361     Audio_Comm_infoType_PUSI_disable_Info,  /*For STB only PES file in tsp.(need disable PUSI)*/
1362     Audio_Comm_infoType_Set_Parser,
1363     Audio_Comm_infoType_Parser_Info = 0x50,
1364     Audio_Comm_infoType_Get_Dolby_TrueHD_Bypass_Capability,
1365     Audio_Comm_infoType_Set_DFS_PowerSave,   /*DFS setting for saving power*/
1366     Audio_Comm_infoType_Is_Decoder_In_R2,  /*For IC with R2 Decoder*/
1367     Audio_comm_infoType_Get_audio_crash_status,
1368     Audio_Comm_infoType_Vorbis_header_size = 0x5F,
1369     /*******************************************************/
1370     /*  Please Add common audio cmd above                  */
1371     /*******************************************************/
1372 
1373     Audio_Comm_infoType_Get_SE_Input_Main_BufferBase = 0x8000,
1374     Audio_Comm_infoType_Get_SE_Input_Main_BufferSize,
1375     Audio_Comm_infoType_Get_SE_Output_Main_BufferBase,
1376     Audio_Comm_infoType_Get_SE_Output_Main_BufferSize,
1377     Audio_Comm_infoType_Get_SE_PROCESS_FRAME_SMP_UNIT,
1378     Audio_Comm_infoType_Get_SE_PROCESS_FETCH_CHANNELS,
1379     Audio_Comm_infoType_Get_SE_PROCESS_STORE_CHANNELS,
1380     Audio_Comm_infoType_Get_SE_PROCESS_FETCH_FRAME_BYTE_SIZE,
1381     Audio_Comm_infoType_Get_SE_PROCESS_STORE_FRAME_BYTE_SIZE,
1382 
1383     Audio_Comm_infoType_Set_SE_Input_Main_Buffer_Feed = 0x8100,
1384     Audio_Comm_infoType_Set_SE_Output_Main_Buffer_Consume,
1385     Audio_Comm_infoType_Set_SE_Test_Init,
1386     Audio_Comm_infoType_Set_SE_Test_End,
1387     Audio_Comm_infoType_Set_SE_TONE_Test_Begin,
1388     Audio_Comm_infoType_Set_SE_PEQ_Test_Begin,
1389     Audio_Comm_infoType_Set_SE_GEQ_Test_Begin,
1390     Audio_Comm_infoType_Set_SE_AVC_Test_Begin,
1391     Audio_Comm_infoType_Set_SE_SRS_THEATER_SOUND_Begin,
1392 } Audio_COMM_infoType;
1393 
1394 //================================================================
1395 //  Common PCM I/O ENUM
1396 //================================================================
1397 typedef enum
1398 {
1399     AUDIO_PCM_CMD_ALL, /* GET */
1400     AUDIO_PCM_CMD_NONBLOCKING, /* SET/GET */
1401     AUDIO_PCM_CMD_MULTICH, /* GET */
1402     AUDIO_PCM_CMD_MIXING, /* GET */
1403     AUDIO_PCM_CMD_MIXINGGROUP, /* SET/GET */
1404     AUDIO_PCM_CMD_BUFFER, /* GET only */
1405     AUDIO_PCM_CMD_BUFFERDURATION, /* SET/GET */
1406     AUDIO_PCM_CMD_READPTR, /* GET only */
1407     AUDIO_PCM_CMD_WRITEPTR, /* GET only */
1408     AUDIO_PCM_CMD_CHANNEL, /* SET/GET */
1409     AUDIO_PCM_CMD_SAMPLERATE, /* SET/GET */
1410     AUDIO_PCM_CMD_BITWIDTH, /* SET/GET */
1411     AUDIO_PCM_CMD_BIGENDIEN, /* SET/GET */
1412     AUDIO_PCM_CMD_TIMESTAMP, /* SET/GET */
1413     AUDIO_PCM_CMD_WEIGHTING, /* SET/GET */
1414     AUDIO_PCM_CMD_VOLUME, /* SET/GET */
1415     AUDIO_PCM_CMD_BUFFERLEVEL, /* GET only */
1416     AUDIO_PCM_CMD_MUTE, /* SET/GET */
1417 } AUDIO_PCM_COMMAND;
1418 
1419 // MPEG
1420 typedef enum
1421 {   //info Type name                    //Attibtue       //Parameter
1422     Audio_MPEG_infoType_DecStatus,      //R              //0:unlock  1:lock
1423     Audio_MPEG_infoType_SampleRate,     //R              //
1424     Audio_MPEG_infoType_BitRate,        //R              //
1425     Audio_MPEG_infoType_FrameNum,       //R              //
1426     Audio_MPEG_infoType_SoundMode,      //W              //0: LR / 1:LL / 2:RR
1427     Audio_MPEG_infoType_stereoMode,     //R              //0: Stereo / 1: / 2:RR
1428     Audio_MPEG_infoType_Layer,          //R              //1 / 2 / 3
1429     Audio_MPEG_infoType_Header,         //R              //
1430     Audio_MPEG_infoType_FFSpeed,        //W              //
1431     Audio_MPEG_infoType_MMFileSize,     //W              //enum FILE_SIZE
1432     Audio_MPEG_infoType_Emphasis,       //R              //
1433     Audio_MPEG_DTV_AVSYNC_OFFSET,       //W, unit= 33bits offset
1434     Audio_MPEG_infoType_PCMBufLev,      //RW
1435     Audio_MPEG_infoType_BufferDelay,    //RW
1436     Audio_MPEG_DTV_AVSYNC_DISABLE_SETTING,
1437     Audio_MPEG_MuteFrm_PcmHighLevel_Threshold_NumTimeOut,
1438     Audio_MPEG_MuteFrm_PcmHighLevel_MuteNum,
1439     Audio_MPEG_infoType_PcmHighLevel_Pcmdata
1440 } Audio_MPEG_infoType;
1441 
1442 typedef enum
1443 {
1444     AUD_MPEG_SOUNDMODE_LL,
1445     AUD_MPEG_SOUNDMODE_RR,
1446     AUD_MPEG_SOUNDMODE_LR,
1447     AUD_MPEG_SOUNDMODE_MIX_LR
1448 }AUD_MPEG_SOUNDMODE;
1449 
1450 typedef enum
1451 {
1452     MPEG_SOUND_MODE_STEREO =0,
1453     MPEG_SOUND_MODE_JOINT_STEREO,
1454     MPEG_SOUND_MODE_DUAL_CHAN,
1455     MPEG_SOUND_MODE_MONO
1456 }MPEG_SOUND_MODE;
1457 
1458 /// MP3 Layer
1459 typedef enum
1460 {
1461     Audio_MP3_LAYER_RESERVED            = 0x0,
1462     Audio_MP3_LAYER_3                   = 0x1,
1463     Audio_MP3_LAYER_2                   = 0x2,
1464     Audio_MP3_LAYER_1                   = 0x3,
1465     Audio_MP3_LAYER_NOT_DETERMINE_YET   = 0xFF,
1466 } Audio_MP3_LAYER;
1467 
1468 // Dolby AC3
1469 typedef enum
1470 {   //info Type name                    //Attribute      //Parameter
1471     Audio_AC3_infoType_DecStatus,       //R              //0:unlock  1:lock
1472     Audio_AC3_infoType_SampleRate,      //R              //
1473     Audio_AC3_infoType_BitRate,         //R              //
1474     Audio_AC3_infoType_Dialnorm,        //R              //
1475     Audio_AC3_infoType_Acmod,           //R              //
1476     Audio_AC3_infoType_DrcMode,         //RW             //
1477     Audio_AC3_infoType_DownmixMode,     //RW             //
1478     Audio_AC3_infoType_MMFileSize,      //Not supported  //
1479     Audio_AC3_infoType_PCMBufLevel,     //R              //
1480     Audio_AC3_infoType_BufferDelay,     //RW             //
1481     Audio_AC3_infoType_SyncwordFound_Count,
1482 } Audio_AC3_infoType;
1483 
1484 // Dolby AC3P
1485 typedef enum
1486 {   //info Type name                     //Attribute     //Parameter
1487     Audio_AC3P_infoType_DecStatus,       //R             //
1488     Audio_AC3P_infoType_SampleRate,      //R             //
1489     Audio_AC3P_infoType_BitRate,         //R             //
1490     Audio_AC3P_infoType_Dialnorm,        //R             //
1491     Audio_AC3P_infoType_Acmod,           //R             //
1492     Audio_AC3P_infoType_DrcMode,         //RW            //
1493     Audio_AC3P_infoType_DownmixMode,     //RW            //
1494     Audio_AC3P_infoType_MMFileSize,      //W             //
1495     Audio_AC3P_infoType_syncSTC_in_mmTs, //W             //
1496     Audio_AC3P_infoType_hdmiTxBypass_enable,
1497     Audio_AC3P_infoType_AC3Type,
1498     Audio_AC3P_infoType_FrameSize,
1499     Audio_AC3P_infoType_BSMode,
1500     Audio_AC3P_infoType_BYTESWAP,
1501     Audio_AC3P_infoType_enableDolbyBulletin11,//W       // True or False          //default is enabled
1502     Audio_AC3P_DTV_AVSYNC_OFFSET,        //W, unit= 33bits offset
1503     Audio_AC3P_infoType_hdmiAC3inSE,
1504     Audio_AC3P_DTV_AVSYNC_DISABLE_SETTING,
1505     Audio_AC3P_infoType_hdmi_in_support_DDP,
1506     Audio_AC3P_infoType_Drc_HighCutScale,
1507     Audio_AC3P_infoType_Drc_LowBootScale,
1508     Audio_AC3P_infoType_LoudnessMatching,
1509     Audio_AC3P_infoType_ATMOS_support,
1510 } Audio_AC3P_infoType;
1511 
1512 typedef enum
1513 {
1514     AUD_Dolby_SOUNDMODE_LR              = 0x0,
1515     AUD_Dolby_SOUNDMODE_LL              = 0x1,
1516     AUD_Dolby_SOUNDMODE_RR              = 0x2,
1517 }AUD_Dolby_SOUNDMODE;
1518 
1519 typedef enum
1520 {
1521     DOLBY_MONO,
1522     DOLBY_STEREO,
1523     DOLBY_MULTI_CHAN
1524 }DOLBY_AC_MODE;
1525 
1526 typedef enum
1527 {
1528     DOLBY_DOWNMIX_MODE_LTRT,
1529     DOLBY_DOWNMIX_MODE_LORO,
1530     DOLBY_DOWNMIX_MODE_AUTO
1531 }DOLBY_DOWNMIX_MODE;
1532 
1533 typedef enum
1534 {
1535     LINE_MODE,
1536     RF_MODE,
1537 }DOLBY_DRC_MODE;
1538 
1539 typedef enum
1540 {
1541     DVB_MODE,
1542     ATSC_MODE,
1543     OTHER_MODE
1544 }DOLBY_LOUDNESS_MODE;
1545 
1546 typedef enum
1547 {
1548     AC3_ENABLE,
1549     AC3_DISABLE
1550 }AC3_DIS_EN;
1551 
1552 
1553 // DTS
1554 typedef enum
1555 {   //info Type name                     //Attribute    //Parameter
1556     Audio_DTS_infoType_DecStatus,        //R            //
1557     Audio_DTS_infoType_KernelVersion,    //R            //
1558     Audio_DTS_infoType_SampleRate,       //R            //
1559     Audio_DTS_infoType_BitRate,          //R            //
1560     Audio_DTS_infoType_CD_MODE,          //R            //
1561     Audio_DTS_infoType_Amode,            //R            //
1562     Audio_DTS_infoType_DMIX_LFE_EN,      //RW           //
1563     Audio_DTS_infoType_DrcMode,          //RW           //
1564     Audio_DTS_infoType_DownmixMode,      //RW           //
1565     Audio_DTS_infoType_Dialnorm_EN,      //RW           //
1566     Audio_DTS_infoType_ESDataServiceMode,//RW           //
1567     Audio_DTS_infoType_MMFileSize,       //W            //
1568     Audio_DTS_infoType_syncSTC_in_mmTs,  //W            //
1569     Audio_DTS_infoType_ESData_ByteSwap,  //W            //
1570     Audio_DTS_infoType_CertMode,         //W            //
1571     Audio_DTS_infoType_HDMI_DSP_SEL,
1572     Audio_DTS_infoType_DTSHD_HDMITxBypass_Enable,  //W            //
1573 } Audio_DTS_infoType;
1574 
1575 typedef enum
1576 {   //ctrl Type name                     //Attribute
1577     Audio_DTS_Ctrl_DMIX_LFE_OFF         = 0x0,
1578     Audio_DTS_Ctrl_DMIX_LFE_ON          = 0x1,
1579     Audio_DTS_Ctrl_Drc_OFF              = 0x0,
1580     Audio_DTS_Ctrl_Drc_50               = 0x1,
1581     Audio_DTS_Ctrl_Drc_100              = 0x2,
1582     Audio_DTS_Ctrl_Downmix_LoRo         = 0x0,
1583     Audio_DTS_Ctrl_Downmix_LtRt         = 0x1,
1584     Audio_DTS_Ctrl_Dialnorm_OFF         = 0x0,
1585     Audio_DTS_Ctrl_Dialnorm_ON          = 0x1,
1586     Audio_DTS_Ctrl_POLLINGMode          = 0x0,
1587     Audio_DTS_Ctrl_INTRPTMode           = 0x1,
1588     Audio_DTS_Ctrl_ByteSwap_OFF         = 0x0,
1589     Audio_DTS_Ctrl_ByteSwap_ON          = 0x1,
1590     Audio_DTS_Ctrl_CertMode_OFF         = 0x0,
1591     Audio_DTS_Ctrl_CertMode_ON          = 0x1,
1592     Audio_DTS_Ctrl_DTSHDBypass_OFF      = 0x0,
1593     Audio_DTS_Ctrl_DTSHDBypass_ON       = 0x1,
1594 } Audio_DTS_CtrlType;
1595 
1596 
1597 typedef enum
1598 {
1599     Audio_WMA_infoType_DecStatus,
1600     Audio_WMA_infoType_SampleRate,
1601     Audio_WMA_infoType_BitRate,
1602     Audio_WMA_infoType_Asf_Param,
1603     Audio_WMA_infoType_FFSpeed,
1604     Audio_WMA_infoType_MMFileSize
1605 } Audio_WMA_infoType;
1606 
1607 typedef enum
1608 {
1609     //info Type name                    //Attibtue      //Parameter
1610     Audio_AAC_error_count,              //R             //
1611     Audio_AAC_infoType_DrcMode,         //RW            //
1612     Audio_AAC_infoType_DownmixMode,     //RW            //
1613     Audio_AAC_dec_unsupported,          //R             //
1614     Audio_AAC_ts_file_end_ntfi,         //R
1615     Audio_AAC_infoType_MMFileSize,      //W
1616     Audio_AAC_DTV_AVSYNC_OFFSET,        //W, unit= 33bits offset
1617     Audio_AAC_DTV_AVSYNC_DISABLE_SETTING,
1618     Audio_AAC_mm_single_frame_mode
1619 } Audio_AAC_infoType;
1620 
1621 typedef enum
1622 {   //info Type name                    //Attibtue      //Parameter
1623     Audio_RA8LBR_NumCodes,              //w
1624     Audio_RA8LBR_Samples,               //w
1625     Audio_RA8LBR_SampleRate,            //w
1626 
1627     Audio_RA8LBR_Channels1,             //w
1628     Audio_RA8LBR_Regions1,              //w
1629     Audio_RA8LBR_cplStart1,             //w
1630     Audio_RA8LBR_cplQbits1,             //w
1631     Audio_RA8LBR_FrameSize1,            //w
1632 
1633     Audio_RA8LBR_Channels2,             //w
1634     Audio_RA8LBR_Regions2,              //w
1635     Audio_RA8LBR_cplStart2,             //w
1636     Audio_RA8LBR_cplQbits2,             //w
1637     Audio_RA8LBR_FrameSize2,            //w
1638 
1639     Audio_RA8LBR_Channels3,             //w
1640     Audio_RA8LBR_Regions3,              //w
1641     Audio_RA8LBR_cplStart3,             //w
1642     Audio_RA8LBR_cplQbits3,             //w
1643     Audio_RA8LBR_FrameSize3,            //w
1644 
1645     Audio_RA8LBR_Channels4,             //w
1646     Audio_RA8LBR_Regions4,              //w
1647     Audio_RA8LBR_cplStart4,             //w
1648     Audio_RA8LBR_cplQbits4,             //w
1649     Audio_RA8LBR_FrameSize4,            //w
1650 
1651     Audio_RA8LBR_Channels5,             //w
1652     Audio_RA8LBR_Regions5,              //w
1653     Audio_RA8LBR_cplStart5,             //w
1654     Audio_RA8LBR_cplQbits5,             //w
1655     Audio_RA8LBR_FrameSize5,            //w
1656 
1657     Audio_RA8LBR_infoType_DecStatus,    //R
1658 } Audio_RA8LBR_infoType;
1659 
1660 typedef enum
1661 {
1662     LPCM                                = 1,
1663     MS_ADPCM                            = 2,
1664     G711_A_LAW                          = 6,
1665     G711_u_LAW                          = 7,
1666     DVD_LPCM                            = 8,
1667     PRIVATE1_LPCM                       = 9,
1668     IMA_ADPCM                           = 17
1669 }XPCM_TYPE;
1670 
1671 typedef enum
1672 {
1673     SAMPLE_RATE_48000,
1674     SAMPLE_RATE_44100,
1675     SAMPLE_RATE_32000,
1676     SAMPLE_RATE_24000,
1677     SAMPLE_RATE_22050,
1678     SAMPLE_RATE_16000,
1679     SAMPLE_RATE_12000,
1680     SAMPLE_RATE_11025,
1681     SAMPLE_RATE_8000,
1682     SAMPLE_RATE_4000,
1683     SAMPLE_RATE_96000,
1684 }SAMPLE_RATE;
1685 
1686 // AD & Mixer
1687 typedef enum
1688 {
1689     MAIN_MIX_AD,
1690     AD_MIX_MAIN,
1691 }AD_MIX_MODE;
1692 
1693 typedef enum
1694 {
1695     MIX_OFF,
1696     MIX_ON,
1697 }MIX_ONOFF;
1698 
1699 typedef enum
1700 {
1701     FILE_SIZE_1KB,
1702     FILE_SIZE_2KB,
1703     FILE_SIZE_4KB,
1704     FILE_SIZE_8KB,
1705     FILE_SIZE_16KB,
1706     FILE_SIZE_32KB,
1707     FILE_SIZE_64KB,
1708     FILE_SIZE_256,
1709     FILE_SIZE_512,
1710     FILE_SIZE_64,
1711     FILE_SIZE_128
1712 }FILE_SIZE;
1713 
1714 
1715 typedef enum
1716 {
1717     AU_DVB_MODE_STEREO,                 ///< 0:STEREO
1718     AU_DVB_MODE_LL,                     ///< 1: LL
1719     AU_DVB_MODE_RR,                     ///< 2: RR
1720     AU_DVB_MODE_MIXED_LR                ///< 3:(L+R)/2
1721 }AU_DVB_MODE;
1722 
1723 //  enum for dvb decoder command
1724 typedef enum
1725 {
1726     AU_DVB_DECCMD_STOP                  = 0,
1727     AU_DVB_DECCMD_PLAY                  = 1,
1728     AU_DVB_DECCMD_PLAYFILETSP           = 2,
1729     AU_DVB_DECCMD_RESYNC                = 3,
1730     AU_DVB_DECCMD_PLAYFILE              = 4,
1731     AU_DVB_DECCMD_STARTBROWSE           = 5,
1732     AU_DVB_DECCMD_PAUSE                 = 6,
1733     AU_DVB_DECCMD_PLAYFRAME             = 8,            // Uniplayer, Mstreamer for TSP input
1734     AU_DVB_DECCMD_PLAYFRAME_STAGE       = 9,            // Stagecraft
1735     AU_DVB_DECCMD_PLAYFRAME_GS          = 10,           // Uniplayer, Gstreamer for ES copy
1736     AU_DVB_DECCMD_PLAYFILE2_PTS         = 11,
1737     AU_DVB_DECCMD_PLAY_AD               = 12,
1738     AU_DVB_DECCMD_STOP_AD               = 13,
1739     AU_DVB_DECCMD_SKIP                  = 15,
1740     AU_DVB_DECCMD_AVSYNC                = 0x10,
1741     AU_DVB_DECCMD_FREERUN               = 0x20,
1742 } AU_DVB_DECCMD;
1743 
1744 typedef enum
1745 {
1746     AU_DVB_ENCCMD_STOP,   // 0
1747     AU_DVB_ENCCMD_START   // 1
1748 } AU_DVB_ENCCMD;
1749 
1750 typedef enum
1751 {
1752     AU_DVB_ENCBR_192K,                  // 0
1753     AU_DVB_ENCBR_384K,                  // 1
1754     AU_DVB_ENCBR_128K,                  // 2
1755     AU_DVB_ENCBR_64K                    // 3
1756 } AU_DVB_ENCBR;
1757 
1758 typedef enum
1759 {
1760     WMA_PARAMTYPE_VERSION,
1761     WMA_PARAMTYPE_CHANNELS,
1762     WMA_PARAMTYPE_SAMPLERATE,
1763     WMA_PARAMTYPE_BYTERATE,
1764     WMA_PARAMTYPE_BLOCKALIGN,
1765     WMA_PARAMTYPE_ENCOPT,
1766     WMA_PARAMTYPE_PARSINGBYAPP,
1767     WMA_PARAMTYPE_BITS_PER_SAMPLE,
1768     WMA_PARAMTYPE_CHANNELMASK,
1769     WMA_PARAMTYPE_DRC_PARAM_EXIST,
1770     WMA_PARAMTYPE_DRC_RMS_AMP_REF,
1771     WMA_PARAMTYPE_DRC_RMS_AMP_TARGET,
1772     WMA_PARAMTYPE_DRC_PEAK_AMP_REF,
1773     WMA_PARAMTYPE_DRC_PEAK_AMP_TARGET,
1774     WMA_PARAMTYPE_MAX_PACKET_SIZE
1775 }WMA_ASF_PARMTYPE;
1776 
1777 enum
1778 {
1779     DSP_INIT_FINISH_ACK,
1780     DSP_READY_FOR_RELOAD_ACK,
1781     DSP_RELOAD_FINISH_ACK,
1782     MCU_START_TO_RUN_CMD,
1783     MCU_START_RELOAD_CMD,
1784     MCU_RELOAD_FINISH_CMD
1785 };
1786 
1787 //================================================================
1788 //  MAD2
1789 //================================================================
1790 enum
1791 {
1792     DSP_DEC,                            //0
1793     DSP_SE,                             //1
1794     DSP_ADV,                              //2
1795     DSP_MAD                             //3
1796 };
1797 
1798 // DTV decoder sample rate definition
1799 typedef enum
1800 {
1801     AUDIO_FS_NONE,
1802     AUDIO_FS_8KHZ,
1803     AUDIO_FS_11KHZ,
1804     AUDIO_FS_12KHZ,
1805     AUDIO_FS_16KHZ,
1806     AUDIO_FS_22KHZ,
1807     AUDIO_FS_24KHZ,
1808     AUDIO_FS_32KHZ,
1809     AUDIO_FS_44KHZ,
1810     AUDIO_FS_48KHZ,
1811     AUDIO_FS_64KHZ,
1812     AUDIO_FS_88KHZ,
1813     AUDIO_FS_96KHZ,
1814     AUDIO_FS_176KHZ,
1815     AUDIO_FS_192KHZ,
1816     AUDIO_FS_UNSUPPORT                  = 0xFF,
1817 } AUDIO_FS_TYPE;
1818 
1819 typedef struct
1820 {
1821     AUDIO_HDMI_RX_TYPE      audio_type;
1822     AUDIO_FS_TYPE           sampleRate;
1823 } ST_HDMI_AUDIO_STATUS;
1824 // DTV decoder sound mode type definition
1825 typedef enum
1826 {
1827     AUD_CH_MODE_DUAL_MONO               = 0x0,              //MPEG/DDP/MS10
1828     AUD_CH_MODE_MONO                    = 0x1,              //MPEG/DDP/MS10
1829     AUD_CH_MODE_STEREO                  = 0x2,              //MPEG/DDP/MS10
1830     AUD_CH_MODE_3_0_MODE                = 0x3,              //     DDP/MS10
1831     AUD_CH_MODE_2_1_MODE                = 0x4,              //     DDP/MS10
1832     AUD_CH_MODE_3_1_MODE                = 0x5,              //     DDP/MS10
1833     AUD_CH_MODE_2_2_MODE                = 0x6,              //     DDP/MS10
1834     AUD_CH_MODE_3_2_MODE                = 0x7,              //     DDP/MS10
1835     AUD_CH_MODE_JOINT_STEREO,//MPEG
1836     AUD_CH_MODE_NONE,
1837 } AUD_CH_MODE_TYPE;
1838 
1839 //================================================================
1840 //  KTV
1841 //================================================================
1842 typedef enum
1843 {
1844     AUD_KTV_MODEL1,
1845     AUD_KTV_MODEL2,
1846     AUD_KTV_MODEL3,
1847     AUD_KTV_MODEL4,
1848 }AUDIO_KTV_MODEL;
1849 
1850 typedef enum
1851 {   /*  Model               AUD_KTV_MODEL1    AUD_KTV_MODEL2    AUD_KTV_MODEL3  *
1852      *  Chip                T3-iSing99        U3-Multak                         *
1853      *--------------------------------------------------------------------------*/
1854     AUD_KTV_infoType1,                  // ScoringCommand
1855     AUD_KTV_infoType2,                  // EchoLevel
1856     AUD_KTV_infoType3,                  // EchoDeep
1857     AUD_KTV_infoType4,                  // MICGain
1858     AUD_KTV_infoType5,                  // (TBD)
1859     AUD_KTV_infoType6,                  // (TBD)
1860     AUD_KTV_infoType7,                  // (TBD)
1861     AUD_KTV_infoType8,                  // (TBD)
1862     AUD_KTV_infoType9,                  // (TBD)
1863     AUD_KTV_infoType10,                 // (TBD)
1864     AUD_KTV_infoType11,                 // (TBD)
1865     AUD_KTV_infoType12,                 // (TBD)
1866     AUD_KTV_infoType13,                 // (TBD)
1867     AUD_KTV_infoType14,                 // (TBD)
1868     AUD_KTV_infoType15,                 // (TBD)
1869     AUD_KTV_infoType16,                 // (TBD)
1870 }AUDIO_KTV_INFOTYPE;
1871 
1872 typedef enum
1873 {   /*  Model             AUD_KTV_MODEL1    AUD_KTV_MODEL2    AUD_KTV_MODEL3    *
1874      *  Chip              T3-iSing99        U3-Multak                           *
1875      *--------------------------------------------------------------------------*/
1876     AUD_KTV_ParamType1,                 // AvMICVol
1877     AUD_KTV_ParamType2,                 // PitchCnt
1878     AUD_KTV_ParamType3,                 // Pitch
1879     AUD_KTV_ParamType4,                 // Energy
1880     AUD_KTV_ParamType5,                 // (TBD)
1881     AUD_KTV_ParamType6,                 // (TBD)
1882     AUD_KTV_ParamType7,
1883     AUD_KTV_ParamType8,
1884     AUD_KTV_ParamType9,
1885     AUD_KTV_ParamType10,
1886     AUD_KTV_ParamType11,
1887     AUD_KTV_ParamType12,
1888     AUD_KTV_ParamType13,
1889     AUD_KTV_ParamType14,
1890     AUD_KTV_ParamType15,
1891     AUD_KTV_ParamType16,
1892 }AUDIO_KTV_PARAMTYPE;
1893 
1894 typedef enum
1895 {
1896     PCM_VOL,
1897     MIC_VOL,
1898     MP3_VOL,
1899     GAME1_VOL,
1900     GAME2_VOL,
1901     ECHO1_VOL,
1902     ECHO2_VOL,
1903 }AUDIO_MIX_VOL_TYPE;
1904 
1905 #define code
1906 ///< Threshold table structure
1907 typedef struct
1908 {
1909     MS_U8  HiByteValue;                 ///< Threshold high-byte
1910     MS_U8  LowByteValue;                ///< Threshold low-byte
1911 } THR_TBL_TYPE;
1912 
1913 //================================================================
1914 //  Sound Enum
1915 //================================================================
1916 // ADC Input Gain Type Definition
1917 typedef enum
1918 {
1919     AUD_ADC_GAIN_0dB = 0,               //  0dB
1920     AUD_ADC_GAIN_NEG_3dB,               // -3dB
1921     AUD_ADC_GAIN_NEG_6dB,               // -6dB
1922     AUD_ADC_GAIN_3dB,                   //  3dB
1923     AUD_ADC_GAIN_6dB,                   //  6dB
1924     AUD_ADC_GAIN_9dB,                   //  9dB
1925     AUD_ADC_GAIN_12dB,                  // 12dB
1926     AUD_ADC_GAIN_15dB,                  // 15dB
1927 } AUD_ADC_GAIN_TYPE;
1928 
1929 typedef struct
1930 {
1931     MS_U8  param1;                      ///< param1
1932     MS_U8  param2;                      ///< param2
1933     MS_U8  param3;                      ///< param1
1934     MS_U8  param4;                      ///< param2
1935 } Sound_SET_Param;
1936 
1937 typedef struct
1938 {
1939     MS_U8  AvcThreshold;                ///< AvcThreshold
1940     MS_U8  AvcMode;                     ///< AvcMode
1941     MS_U8  AvcAT;                       ///< AvcAT
1942     MS_U8  AvcRT;                       ///< AvcRT
1943 } Sound_AVC_param;
1944 
1945 typedef struct
1946 {
1947     MS_U8  SurroundXA;                  ///< SurroundXA
1948     MS_U8  SurroundXB;                  ///< SurroundXB
1949     MS_U8  SurroundXK;                  ///< SurroundXK
1950     MS_U8  SurroundLPFGain;             ///< SurroundLPFGain
1951 } Sound_SURR_param;
1952 
1953 typedef enum
1954 {
1955     Sound_SET_Type_SetPreScale,
1956     Sound_SET_Type_SetMute,
1957     Sound_SET_Type_SetBalance,
1958     Sound_SET_Type_EnableEQ,
1959     Sound_SET_Type_EnablePEQ,
1960     Sound_SET_Type_EnableTone,
1961     Sound_SET_Type_EnableAutoVolume,
1962     Sound_SET_Type_EnableSurround,
1963     Sound_SET_Type_SetBass,
1964     Sound_SET_Type_EnableBalance,
1965     Sound_SET_Type_AbsoluteBass,
1966     Sound_SET_Type_SetTreble,
1967     Sound_SET_Type_SetEq,
1968     Sound_SET_Type_SetEq_7band,
1969     Sound_SET_Type_SetAvc,
1970     Sound_SET_Type_SetAudioDelay,
1971     Sound_SET_Type_SetSurround,
1972     Sound_SET_Type_ConvertVolumeUnit,
1973     Sound_SET_Type_SetDCOffet,
1974     Sound_SET_Type_EnableSineTone,
1975 } Sound_SET_Type;
1976 
1977 typedef enum
1978 {
1979     Sound_SET_PARAM_PreScale,
1980     Sound_SET_PARAM_Balance,
1981     Sound_SET_PARAM_EQ,
1982     Sound_SET_PARAM_Surround_XA,
1983     Sound_SET_PARAM_Surround_XB,
1984     Sound_SET_PARAM_Surround_XK,
1985     Sound_SET_PARAM_Surround_LPFGAIN,
1986     Sound_SET_PARAM_Treble,
1987     Sound_SET_PARAM_Bass,
1988     Sound_SET_PARAM_AbsoluteBass,
1989     Sound_SET_PARAM_Avc_Mode,
1990     Sound_SET_PARAM_NR_Threshold,
1991     Sound_SET_PARAM_Avc_Threshold,
1992     Sound_SET_PARAM_Avc_AT,
1993     Sound_SET_PARAM_Avc_RT,
1994     Sound_SET_PARAM_AudioDelay,
1995     Sound_SET_PARAM_DCOffet,
1996     Sound_SET_PARAM_PEQ_48K_A0,
1997     Sound_SET_PARAM_PEQ_48K_A1,
1998     Sound_SET_PARAM_PEQ_48K_A2,
1999     Sound_SET_PARAM_PEQ_48K_B1,
2000     Sound_SET_PARAM_PEQ_48K_B2,
2001     Sound_SET_PARAM_PEQ_32K_A0,
2002     Sound_SET_PARAM_PEQ_32K_A1,
2003     Sound_SET_PARAM_PEQ_32K_A2,
2004     Sound_SET_PARAM_PEQ_32K_B1,
2005     Sound_SET_PARAM_PEQ_32K_B2,
2006     Sound_SET_PARAM_PEQ_SCALE,
2007     Sound_SET_PARAM_AbsoluteEQ,
2008     Sound_SET_PARAM_Drc_Threshold,
2009     Sound_SET_PARAM_DMAReader,
2010     Sound_SET_PARAM_AVC_S_Offset,
2011     Sound_SET_PARAM_Tone_Test_Fs,
2012     Sound_SET_PARAM_Tone_Test_Gain,
2013     Sound_SET_PARAM_AbsoluteBalance,
2014     Sound_SET_PARAM_AbsoluteTreble,
2015     Sound_SET_PARAM_Ease_Type_A,
2016     Sound_SET_PARAM_Ease_Duration_A,
2017     Sound_SET_PARAM_Ease_Gain_A,
2018     Sound_SET_PARAM_Ease_Target_Channel_A,
2019     Sound_SET_PARAM_Ease_Type_B,
2020     Sound_SET_PARAM_Ease_Duration_B,
2021     Sound_SET_PARAM_Ease_Gain_B,
2022     Sound_SET_PARAM_Ease_Target_Channel_B,
2023 } Sound_SET_PARAM_Type;
2024 
2025 typedef enum
2026 {
2027     Sound_GET_PARAM_PreScale,
2028     Sound_GET_PARAM_Balance_L,
2029     Sound_GET_PARAM_Balance_R,
2030     Sound_GET_PARAM_EQ,
2031     Sound_GET_PARAM_Surround_XA,
2032     Sound_GET_PARAM_Surround_XB,
2033     Sound_GET_PARAM_Surround_XK,
2034     Sound_GET_PARAM_Surround_LPFGAIN,
2035     Sound_GET_PARAM_Treble,
2036     Sound_GET_PARAM_Bass,
2037     Sound_GET_PARAM_Avc_Mode,
2038     Sound_GET_PARAM_Avc_Threshold,
2039     Sound_GET_PARAM_Avc_AT,
2040     Sound_GET_PARAM_Avc_RT,
2041     Sound_GET_PARAM_AudioDelay,
2042     Sound_GET_PARAM_DCOffet,
2043     Sound_GET_PARAM_NR_Threshold,
2044     Sound_GET_PARAM_NR_Status,
2045     Sound_GET_PARAM_getSignal_Energy,
2046     Sound_GET_PARAM_EQ_Status,
2047     Sound_GET_PARAM_PEQ_Status,
2048     Sound_GET_PARAM_Tone_Status,
2049     Sound_GET_PARAM_AutoVolume_Status,
2050     Sound_GET_PARAM_Surround_Status,
2051     Sound_GET_PARAM_HPF_Status,
2052     Sound_GET_PARAM_Drc_Threshold,
2053     Sound_GET_PARAM_DMAReader_Buffer_Addr,
2054     Sound_GET_PARAM_ToneTest_LEVEL,
2055     Sound_GET_PARAM_FPC_Lpeak,
2056     Sound_GET_PARAM_FPC_Rpeak,
2057     Sound_GET_PARAM_Ease_Type_A,
2058     Sound_GET_PARAM_Ease_Duration_A,
2059     Sound_GET_PARAM_Ease_Gain_A,
2060     Sound_GET_PARAM_Ease_Type_B,
2061     Sound_GET_PARAM_Ease_Duration_B,
2062     Sound_GET_PARAM_Ease_Gain_B,
2063 } Sound_GET_PARAM_Type;
2064 
2065 typedef enum
2066 {
2067 //  Sound_ENABL_Type_PreScale,
2068     Sound_ENABL_Type_EQ,
2069     Sound_ENABL_Type_PEQ,
2070     Sound_ENABL_Type_Tone,               //treble/bass
2071     Sound_ENABL_Type_AutoVolume,
2072     Sound_ENABL_Type_Surround,
2073     Sound_ENABL_Type_Balance,
2074     Sound_ENABL_Type_DRC,
2075     Sound_ENABL_Type_KTVEcho,
2076     Sound_ENABL_Type_Hpf,
2077     Sound_ENABL_Type_FPC,
2078     Sound_ENABL_Type_DcRemove,
2079     Sound_ENABL_Type_EaseVol,
2080 } Sound_ENABLE_Type;
2081 
2082 typedef enum
2083 {
2084     AdvSound_SET_Type_VDS_Enable,
2085     AdvSound_SET_Type_VSPK_Enable,
2086     AdvSound_SET_Type_VSPK_SetWMod,
2087     AdvSound_SET_Type_VSPK_SetSMod,
2088     AdvSound_SET_Type_SRS_Enable,
2089     AdvSound_SET_Type_SRS_DC,
2090     AdvSound_SET_Type_SRS_TruBass,
2091     AdvSound_SET_Type_SRS_SetTsxtPara,
2092     AdvSound_SET_Type_TSHD_Enable,
2093     AdvSound_SET_Type_TSHD_TruBass,
2094     AdvSound_SET_Type_TSHD_Definition,
2095     AdvSound_SET_Type_TSHD_Clarity,
2096     AdvSound_SET_Type_TSHD_TruSurr,
2097     AdvSound_SET_Type_TSHD_Limiter,
2098     AdvSound_SET_Type_TSHD_SRS3D,
2099     AdvSound_SET_Type_SRS_SetTshdPara,
2100     AdvSound_SET_Type_TruVolume_Enable,
2101     AdvSound_SET_Type_BBE_SetBbeMode,
2102     AdvSound_SET_CV2_Enable,
2103     AdvSound_SET_CV2_SetPara,
2104     AdvSound_SET_CV_SetPara,
2105     AdvSound_SET_AV_SetPara,
2106     AdvSound_SET_SetEQPara,
2107     AdvSound_SET_CV_SetLevel,
2108     AdvSound_SET_ADSY_SetPara,
2109 } AdvSound_SET_Type;
2110 
2111 typedef enum
2112 {
2113     ADVSOUND_EN_TYPE
2114 } AdvSound_GET_Type;
2115 
2116 
2117 //================================================================
2118 //  Advance Sound Enum
2119 //================================================================
2120 
2121 //SRS APOLLO
2122 typedef enum
2123 {
2124     AU_SRS_APOLLO_EN,
2125     AU_SRS_TSHD_EN,
2126     AU_SRS_TRUBASS_FRONT_EN,
2127     AU_SRS_DEFINITION_FRONT_EN,
2128     AU_SRS_DIALOG_CLARITY_EN,
2129     AU_SRS_SURROUND_LEVEL_CTRL,
2130     AU_SRS_TSHD_INPUT_GAIN,
2131     AU_SRS_DEFINITION_FRONT_CTRL,
2132     AU_SRS_DIALOG_CLARITY_CTRL,
2133     AU_SRS_TRUBASS_FRONT_CTRL,
2134     AU_SRS_LOW_END_FRONT_SPEAKER_FREQ,
2135     AU_SRS_HL_EN,
2136     AU_SRS_HL_LIMIT_LEVEL,
2137     AU_SRS_HL_BOOST_GAIN,
2138     AU_SRS_APOLLO_HEADROOM_GAIN,
2139     AU_SRS_AEQ_PEQ_EN,
2140     AU_SRS_AEQ_HPF_EN,
2141     AU_SRS_AEQ_GEQ_EN,
2142     AU_SRS_VIQ_EN,
2143     AU_SRS_VIQ_MODE,
2144     AU_SRS_VIQ_VOL_REF_LEVEL,
2145     AU_SRS_VIQ_MAX_GAIN,
2146     AU_SRS_VIQ_NOISE_MNGR_THLD,
2147     AU_SRS_VIQ_CALIBRATE,
2148     AU_SRS_VIQ_NOISE_MNGR_EN,
2149     AU_SRS_AEQ_HPF_FC,
2150     AU_SRS_VIQ_INPUT_GAIN,
2151     AU_SRS_VIQ_OUTPUT_GAIN,
2152 
2153 
2154     AU_SRS_FTB_LVL_INDPDT_ENABLE,
2155     AU_SRS_FTB_COMPRESSOR_CONTROL,
2156     AU_SRS_FTB_MODE,
2157     AU_SRS_FTB_SPEAKER_AUDIO,
2158     AU_SRS_FTB_SPEAKER_ANALYSIS,
2159     AU_SRS_TVOLHD_EN,
2160     AU_SRS_TVOLHD_OUTPUT_GAIN,
2161     AU_SRS_TVOLHD_INPUT_GAIN,
2162     AU_SRS_TVOLHD_BYPASS_GAIN,
2163     AU_SRS_TVOLHD_MODE,
2164     AU_SRS_TVOLHD_MAX_GAIN,
2165     AU_SRS_TVOLHD_NORMALIZER_EN,
2166     AU_SRS_TVOLHD_NORMTHRESH,
2167     AU_SRS_TVOLHD_SMOOTH_EN,
2168     AU_SRS_TVOLHD_LKFS,
2169     AU_SRS_AEQ_PEQ_INPUT_GAIN,
2170 } AU_SRS_APOLLO_TYPE;
2171 
2172 
2173 ////////////////////////////////////////////////////////
2174 /** Total Sonics modes for DBXTV_SetMode() */
2175 typedef enum _DBXTV_TotSonMode
2176 {
2177     E_TOTSON_ON        = 0,
2178     E_TOTSON_OFF,
2179 } EN_DBXTV_TotSonMode;
2180 
2181 /** Total Volume modes for DBXTV_SetMode() */
2182 typedef enum _DBXTV_TotVolMode
2183 {
2184     E_TOTVOL_NORMAL     = 0,
2185     E_TOTVOL_NIGHT,
2186     E_TOTVOL_OFF,
2187 } EN_DBXTV_TotVolMode;
2188 
2189 /** Total Surround modes for DBXTV_SetMode() */
2190 typedef enum _DBXTV_TotSurMode
2191 {
2192     E_TOTSUR_ON     = 0,
2193     E_TOTSUR_OFF,
2194 } EN_DBXTV_TotSurMode;
2195 
2196 /** Total Surround modes for HAL_DBXTV_SetOnOff() */
2197 typedef enum _DBXTV_TurnOnOff
2198 {
2199     E_DBXTV_TurnOff     = 0,
2200     E_DBXTV_TurnOn,
2201 } EN_DBXTV_TurnOnOff;
2202 
2203 ////////////////////////////////////////////////////////
2204 
2205 
2206 typedef enum
2207 {
2208     AU_SRS_THEATER_EN,
2209     AU_SRS_THEATER_HPF_EN,
2210     AU_SRS_THEATER_VIQ_EN,
2211     AU_SRS_THEATER_CS_EN,
2212     AU_SRS_THEATER_TRUDIALOG_EN,
2213     AU_SRS_THEATER_INPUT_GAIN,
2214     AU_SRS_THEATER_OUTPUT_GAIN,
2215     AU_SRS_THEATER_BYPASS_GAIN,
2216     AU_SRS_THEATER_HEADROOM_GAIN,
2217     AU_SRS_THEATER_INPUT_MODE,
2218     AU_SRS_THEATER_VIQ_INPUT_GAIN,
2219     AU_SRS_THEATER_VIQ_OUTPUT_GAIN,
2220     AU_SRS_THEATER_VIQ_BYPASS_GAIN,
2221     AU_SRS_THEATER_VIQ_VOLUME_MODE,
2222     AU_SRS_THEATER_VOLHD_MAXGAIN_CONTROL,
2223     AU_SRS_THEATER_VOLHD_NORMALIZER_EN,
2224     AU_SRS_THEATER_VOLHD_NORMTHRESH,
2225     AU_SRS_THEATER_VOLHD_SMOOTH_EN,
2226     AU_SRS_THEATER_VOLHD_LKFS,
2227     AU_SRS_THEATER_CS_INPUT_GAIN,
2228     AU_SRS_THEATER_CS_PROCESSING_MODE,
2229     AU_SRS_THEATER_CS_LR_OUTPUT_GAIN,
2230     AU_SRS_THEATER_CS_LSRS_OUTPUT_GAIN,
2231     AU_SRS_THEATER_CS_CENTER_OUTPUT_GAIN,
2232     AU_SRS_THEATER_TRUDIALOG_INPUT_GAIN,
2233     AU_SRS_THEATER_TRUDIALOG_OUTPUT_GAIN,
2234     AU_SRS_THEATER_TRUDIALOG_BYPASS_GAIN,
2235     AU_SRS_THEATER_TRUDIALOG_PROCESS_GAIN,
2236     AU_SRS_THEATER_TRUDIALOG_CLARITY_GAIN,
2237     AU_SRS_THEATER_HPF_ORDER,
2238     AU_SRS_THEATER_HPF_COEFS,
2239     AU_SRS_THEATER_TSHD_EN,
2240     AU_SRS_THEATER_TSHD_SURR_EN,
2241     AU_SRS_THEATER_TSHD_TRUBASS_FRONT_EN,
2242     AU_SRS_THEATER_TSHD_DEFINITION_FRONT_EN,
2243     AU_SRS_THEATER_TSHD_DIALOG_CLARITY_EN,
2244     AU_SRS_THEATER_TSHD_TRUBASS_LEVEL_INDEPENDENT_EN,
2245     AU_SRS_THEATER_HPF_END_EN,
2246     AU_SRS_THEATER_HL_EN,
2247     AU_SRS_THEATER_TSHD_SURROUND_LEVEL_CTRL,
2248     AU_SRS_THEATER_TSHD_INPUT_GAIN,
2249     AU_SRS_THEATER_TSHD_OUTPUT_GAIN,
2250     AU_SRS_THEATER_TSHD_DEFINITION_FRONT_CTRL,
2251     AU_SRS_THEATER_TSHD_DIALOG_CLARITY_CTRL,
2252     AU_SRS_THEATER_TSHD_TRUBASS_FRONT_CTRL,
2253     AU_SRS_THEATER_TSHD_TRUBASS_SPEAKER_SIZE,
2254     AU_SRS_THEATER_TSHD_TRUBASS_COMPRESSOR_CTRL,
2255     AU_SRS_THEATER_TSHD_TRUBASS_PROCESS_MODE,
2256     AU_SRS_THEATER_TSHD_TRUBASS_SPEAKER_AUDIO,
2257     AU_SRS_THEATER_TSHD_TRUBASS_SPEAKER_ANALYSIS,
2258     AU_SRS_THEATER_HL_LIMIT_LEVEL_CTRL,
2259     AU_SRS_THEATER_HL_BOOST_GAIN,
2260     AU_SRS_THEATER_HPF_CUTOFF,
2261     AU_SRS_THEATER_HPF_END_CUTOFF,
2262     AU_SRS_THEATER_CC3D_EN,//param54
2263     AU_SRS_THEATER_CC3D_DEPTH_PROCESS_EN,//param55
2264     AU_SRS_THEATER_CC3D_3D_SURR_BOOST_EN,//param56
2265     AU_SRS_THEATER_CC3D_FADE_EN,//param57
2266     AU_SRS_THEATER_CC3D_TSHD_MIX_EN,//param58
2267     AU_SRS_THEATER_CC3D_TBHDX_EN,//param59
2268     AU_SRS_THEATER_CC3D_INPUT_GAIN,//param60
2269     AU_SRS_THEATER_CC3D_OUTPUT_GAIN,//param61
2270     AU_SRS_THEATER_CC3D_BYPASS_GAIN,//param62
2271     AU_SRS_THEATER_CC3D_APERTURE,//param63
2272     AU_SRS_THEATER_CC3D_GAINLIMIT,//param64
2273     AU_SRS_THEATER_CC3D_FF_DEPTH,//param65
2274     AU_SRS_THEATER_CC3D_NF_DEPTH,//param66
2275 
2276     AU_SRS_THEATER_CC3D_TSHD_SURR_MODE,//param67
2277     AU_SRS_THEATER_CC3D_TSHD_MIX_FADE_CTRL,//param68
2278 
2279     AU_SRS_THEATER_CC3D_TBHDX_INPUT_GAIN,//param69
2280     AU_SRS_THEATER_CC3D_TBHDX_BASSLEVEL,//param70
2281     AU_SRS_THEATER_CC3D_TBHDX_SPEAKERSIZE,//param71
2282     AU_SRS_THEATER_CC3D_TBHDX_MODE,//param72
2283     AU_SRS_THEATER_CC3D_TBHDX_DYNAMICS,//param73
2284     AU_SRS_THEATER_CC3D_TBHDX_HP_ORDER,//param74
2285     AU_SRS_THEATER_CC3D_TBHDX_CUSTOM_FILTER,
2286     AU_SRS_THEATER_CC3D_GEQ_EN,//param75
2287     AU_SRS_THEATER_CC3D_GEQ_INPUT_GAIN,
2288     AU_SRS_THEATER_CC3D_GEQ_BAND0_GAIN,
2289     AU_SRS_THEATER_CC3D_GEQ_BAND1_GAIN,
2290     AU_SRS_THEATER_CC3D_GEQ_BAND2_GAIN,
2291     AU_SRS_THEATER_CC3D_GEQ_BAND3_GAIN,
2292     AU_SRS_THEATER_CC3D_GEQ_BAND4_GAIN,
2293     AU_SRS_THEATER_CC3D_PROCESS_PATH,
2294     AU_SRS_THEATER_TSHD_BYPASS_GAIN,
2295 
2296     AU_SRS_R2_MAX=100,
2297 
2298     AU_SRS_PURESOUND_HL_EN,//param101
2299     AU_SRS_PURESOUND_HL_INPUT_GAIN,//param102
2300     AU_SRS_PURESOUND_HL_OUTPUT_GAIN,//param103
2301     AU_SRS_PURESOUND_HL_BYPASS_GAIN,//param104
2302     AU_SRS_PURESOUND_HL_LIMITERBOOST,//param105
2303     AU_SRS_PURESOUND_HL_HARDLIMIT,//param106
2304     AU_SRS_PURESOUND_HL_DELAYLEN,//param107
2305 
2306     AU_SRS_PURESOUND_AEQ_EN,//param108
2307     AU_SRS_PURESOUND_AEQ_INPUT_GAIN,//param109
2308     AU_SRS_PURESOUND_AEQ_OUTPUT_GAIN,//param110
2309     AU_SRS_PURESOUND_AEQ_BYPASS_GAIN,//param111
2310     AU_SRS_PURESOUND_FILTER_CONFIG,//param112
2311 
2312     AU_SRS_PURESOUND_HPF_EN,//param113
2313     AU_SRS_PURESOUND_HPF_FREQUENCY,//param114
2314     AU_SRS_PURESOUND_TBHD_EN,
2315     AU_SRS_PURESOUND_TBHD_TRUBASS_LEVEL,
2316     AU_SRS_PURESOUND_TBHD_SPEAKER_SIZE,
2317     AU_SRS_PURESOUND_TBHD_LEVEL_INDEPENDENT_EN,
2318     AU_SRS_PURESOUND_TBHD_COMPRESSOR_LEVEL,
2319     AU_SRS_PURESOUND_TBHD_MODE,
2320     AU_SRS_PURESOUND_TBHD_SPEAKER_AUDIO,
2321     AU_SRS_PURESOUND_TBHD_SPEAKER_ANALYSIS,
2322 
2323     AU_SRS_PURESOUND_INPUT_GAIN,
2324     AU_SRS_PURESOUND_OUTPUT_GAIN,
2325 
2326 } AU_SRS_THEATERSOUND_TYPE;
2327 
2328 typedef enum
2329 {
2330     DOLBY_PL2VDS,
2331     DOLBY_PL2VDPK,
2332     BBE,
2333     SRS_TSXT,
2334     SRS_TSHD,
2335     SRS_THEATERSOUND,
2336     DTS_ULTRATV,
2337     AUDYSSEY,
2338     SUPER_VOICE,
2339     DBX,
2340     SRS_PURESND,
2341     DTS_STUDIOSOUND_3D,
2342     BONGIOVI_DPS,
2343     RESERVE5,
2344     RESERVE6,
2345     ADV_NONE,
2346 } ADVSND_TYPE;
2347 
2348 typedef enum
2349 {
2350     //SRS_TSXT
2351     SRS_TSXT_TRUBASS,
2352     SRS_TSXT_DC,
2353 
2354     //SRS_TSHD
2355     SRS_TSHD_TRUBASS,
2356     SRS_TSHD_DC,
2357     SRS_TSHD_DEFINITION,
2358     SRS_TSHD_SRS3D,
2359 
2360     //SRS_THEATERSOUND
2361     SRS_THEATERSOUND_TSHD,
2362     SRS_THEATERSOUND_TRUBASS,
2363     SRS_THEATERSOUND_DC,
2364     SRS_THEATERSOUND_DEFINITION,
2365     SRS_THEATERSOUND_TRUVOLUME,
2366     SRS_THEATERSOUND_HARDLIMITER,
2367     SRS_THEATERSOUND_HPF,
2368     SRS_THEATERSOUND_TRUEQ,
2369     SRS_THEATERSOUND_TRUVOLUME_NOISE_MNGR,
2370 
2371     //DTS_ULTRATV
2372     DTS_ULTRATV_EVO,
2373     DTS_ULTRATV_SYM,
2374 
2375     //AUDYSSEY
2376     AUDYSSEY_DYNAMICVOL,
2377     AUDYSSEY_DYNAMICEQ,
2378     AUDYSSEY_EQ,
2379     AUDYSSEY_ABX,
2380 
2381     SRS_THEATERSOUND_TSHD_SURR,
2382     SRS_THEATERSOUND_TSHD_LEVEL_INDPT,
2383     SRS_THEATERSOUND_CS,
2384     SRS_THEATERSOUND_TRUDIALOG,
2385     SRS_THEATERSOUND_TRUVOLUME_NORMALIZER,
2386     SRS_THEATERSOUND_TRUVOLUME_SMOOTH,
2387     SRS_THEATERSOUND_HPF_END,
2388     SRS_THEATERSOUND_TOTAL,
2389 
2390     SRS_PURESOUND_HL,
2391     SRS_PURESOUND_AEQ,
2392     SRS_PURESOUND_HPF,
2393     SRS_PURESOUND_TBHD,
2394     SRS_THEATERSOUND_CC3D_EN,
2395     SRS_THEATERSOUND_CC3D_DEPTH_PROCESS_EN,
2396     SRS_THEATERSOUND_CC3D_3D_SURR_BOOST_EN,
2397     SRS_THEATERSOUND_CC3D_FADE_EN,
2398     SRS_THEATERSOUND_CC3D_TSHD_MIX_EN,
2399     SRS_THEATERSOUND_CC3D_TBHDX_EN,
2400     SRS_THEATERSOUND_GEQ_EN,
2401     SRS_THEATERSOUND_3D_EN,
2402 
2403     BONGIOVI_DPS_SURR_EN,
2404 } ADVFUNC;
2405 
2406 typedef enum
2407 {
2408     //BBE
2409     BBE_MODE_SET,
2410 
2411     //DOLBY
2412     DOLBY_PL2VDPK_SMOD,
2413     DOLBY_PL2VDPK_WMOD,
2414 
2415     //SRS TSXT
2416     SRS_TSXT_SET_INPUT_GAIN,
2417     SRS_TSXT_SET_DC_GAIN,
2418     SRS_TSXT_SET_TRUBASS_GAIN,
2419     SRS_TSXT_SET_SPEAKERSIZE,
2420     SRS_TSXT_SET_INPUT_MODE,
2421     SRS_TSXT_SET_OUTPUT_GAIN,
2422     SRS_TSXT_RESERVE1,
2423     SRS_TSXT_RESERVE2,
2424     SRS_TSXT_RESERVE3,
2425 
2426     //SRS TSHD in SE-DSP
2427     SRS_TSHD_SET_INPUT_MODE,
2428     SRS_TSHD_SET_OUTPUT_MODE,
2429     SRS_TSHD_SET_SPEAKERSIZE,
2430     SRS_TSHD_SET_TRUBASS_CONTROL,
2431     SRS_TSHD_SET_DEFINITION_CONTROL,
2432     SRS_TSHD_SET_DC_CONTROL,
2433     SRS_TSHD_SET_SURROUND_LEVEL,
2434     SRS_TSHD_SET_INPUT_GAIN,
2435     SRS_TSHD_SET_WOWSPACE_CONTROL,
2436     SRS_TSHD_SET_WOWCENTER_CONTROL,
2437     SRS_TSHD_SET_WOWHDSRS3DMODE,
2438     SRS_TSHD_SET_LIMITERCONTROL,
2439     SRS_TSHD_SET_OUTPUT_GAIN,
2440     SRS_TSHD_RESERVE1,
2441     SRS_TSHD_RESERVE2,
2442     SRS_TSHD_RESERVE3,
2443 
2444     //SRS_THEATERSOUND
2445     SRS_THEATERSOUND_INPUT_GAIN,
2446     SRS_THEATERSOUND_DEFINITION_CONTROL,
2447     SRS_THEATERSOUND_DC_CONTROL,
2448     SRS_THEATERSOUND_TRUBASS_CONTROL,
2449     SRS_THEATERSOUND_SPEAKERSIZE,
2450     SRS_THEATERSOUND_HARDLIMITER_LEVEL,
2451     SRS_THEATERSOUND_HARDLIMITER_BOOST_GAIN,
2452     SRS_THEATERSOUND_HEADROOM_GAIN,
2453     SRS_THEATERSOUND_TRUVOLUME_MODE,
2454     SRS_THEATERSOUND_TRUVOLUME_REF_LEVEL,
2455     SRS_THEATERSOUND_TRUVOLUME_MAX_GAIN,
2456     SRS_THEATERSOUND_TRUVOLUME_NOISE_MNGR_THLD,
2457     SRS_THEATERSOUND_TRUVOLUME_CALIBRATE,
2458     SRS_THEATERSOUND_TRUVOLUME_INPUT_GAIN,
2459     SRS_THEATERSOUND_TRUVOLUME_OUTPUT_GAIN,
2460     SRS_THEATERSOUND_HPF_FC,
2461     SRS_THEATERSOUND_TSHD_INPUT_GAIN,
2462     SRS_THEATERSOUND_TSHD_OUTPUT_GAIN,
2463     SRS_THEATERSOUND_SURR_LEVEL_CONTROL,
2464     SRS_THEATERSOUND_TRUBASS_COMPRESSOR_CONTROL,
2465     SRS_THEATERSOUND_TRUBASS_PROCESS_MODE,
2466     SRS_THEATERSOUND_TRUBASS_SPEAKER_AUDIO,
2467     SRS_THEATERSOUND_TRUBASS_SPEAKER_ANALYSIS,
2468     SRS_THEATERSOUND_OUTPUT_GAIN,
2469     SRS_THEATERSOUND_BYPASS_GAIN,
2470     SRS_THEATERSOUND_INPUT_MODE,
2471     SRS_THEATERSOUND_TRUVOLUME_BYPASS_GAIN,
2472     SRS_THEATERSOUND_CS_INPUT_GAIN,
2473 
2474     //DTS_ULTRATV
2475     DTS_ULTRATV_EVO_MONOINPUT,
2476     DTS_ULTRATV_EVO_WIDENINGON,
2477     DTS_ULTRATV_EVO_ADD3DBON,
2478     DTS_ULTRATV_EVO_PCELEVEL,
2479     DTS_ULTRATV_EVO_VLFELEVEL,
2480     DTS_ULTRATV_RESERVE1,
2481     DTS_ULTRATV_RESERVE2,
2482     DTS_ULTRATV_RESERVE3,
2483     DTS_ULTRATV_RESERVE4,
2484     DTS_ULTRATV_RESERVE5,
2485     DTS_ULTRATV_RESERVE6,
2486 
2487     DTS_ULTRATV_SYM_DEFAULT,
2488     DTS_ULTRATV_SYM_MODE,
2489     DTS_ULTRATV_SYM_LEVEL,
2490     DTS_ULTRATV_SYM_RESET,
2491     DTS_ULTRATV_RESERVE7,
2492     DTS_ULTRATV_RESERVE8,
2493     DTS_ULTRATV_RESERVE9,
2494 
2495     //AUDYSSEY
2496     AUDYSSEY_DYNAMICVOL_COMPRESS_MODE,
2497     AUDYSSEY_DYNAMICVOL_GC,
2498     AUDYSSEY_DYNAMICVOL_VOLSETTING,
2499     AUDYSSEY_DYNAMICEQ_EQOFFSET,
2500     AUDYSSEY_ABX_GWET,
2501     AUDYSSEY_ABX_GDRY,
2502     AUDYSSEY_ABX_FILSET,
2503     AUDYSSEY_RESERVE1,
2504     AUDYSSEY_RESERVE2,
2505     AUDYSSEY_RESERVE3,
2506     AUDYSSEY_RESERVE4,
2507     AUDYSSEY_RESERVE5,
2508     AUDYSSEY_RESERVE6,
2509 
2510     //DBX
2511     DBX_MODE_SET,
2512     DBX_LOAD_PM,
2513     DBX_LOAD_DM,
2514     DBX_COPY_TotSonDM,
2515     DBX_COPY_TotSonPM,
2516     DBX_COPY_TotVolDM,
2517     DBX_COPY_TotVolPM,
2518     DBX_COPY_TotSurDM,
2519     DBX_COPY_TotSurPM,
2520     OTHERS_RESERVE9,
2521     OTHERS_RESERVE10,
2522     OTHERS_RESERVE11,
2523     OTHERS_RESERVE12,
2524     OTHERS_RESERVE13,
2525     OTHERS_RESERVE14,
2526     OTHERS_RESERVE15,
2527     OTHERS_RESERVE16,
2528     OTHERS_RESERVE17,
2529     OTHERS_RESERVE18,
2530     OTHERS_RESERVE19,
2531     OTHERS_RESERVE20,
2532     OTHERS_RESERVE21,
2533     OTHERS_RESERVE22,
2534     OTHERS_RESERVE23,
2535     OTHERS_RESERVE24,
2536     OTHERS_RESERVE25,
2537     OTHERS_RESERVE26,
2538     OTHERS_RESERVE27,
2539     OTHERS_RESERVE28,
2540     OTHERS_RESERVE29,
2541     OTHERS_RESERVE30,
2542 
2543     SRS_THEATERSOUND_CS_PROCESS_MODE,
2544     SRS_THEATERSOUND_CS_LR_OUTPUT_GAIN,
2545     SRS_THEATERSOUND_CS_LsRs_OUTPUT_GAIN,
2546     SRS_THEATERSOUND_CS_Center_OUTPUT_GAIN,
2547     SRS_THEATERSOUND_TRUDIALOG_INPUT_GAIN,
2548     SRS_THEATERSOUND_TRUDIALOG_OUTPUT_GAIN,
2549     SRS_THEATERSOUND_TRUDIALOG_BYPASS_GAIN,
2550     SRS_THEATERSOUND_TRUDIALOG_PROCESS_GAIN,
2551     SRS_THEATERSOUND_TRUDIALOG_CLARITY_GAIN,
2552     SRS_THEATERSOUND_TRUVOLUME_NORMALIZE_THRESH,
2553     SRS_THEATERSOUND_HPF_CUTOFF,
2554     SRS_THEATERSOUND_HPF_END_CUTOFF,
2555 
2556 
2557     //SRS PURESOUND
2558     SRS_PURESOUND_HL_INPUT_GAIN,
2559     SRS_PURESOUND_HL_OUTPUT_GAIN,
2560     SRS_PURESOUND_HL_BYPASS_GAIN,
2561     SRS_PURESOUND_HL_LIMITERBOOST,
2562     SRS_PURESOUND_HL_HARDLIMIT,
2563     SRS_PURESOUND_HL_DELAYLEN,
2564     SRS_PURESOUND_AEQ_INPUT_GAIN,
2565     SRS_PURESOUND_AEQ_OUTPUT_GAIN,
2566     SRS_PURESOUND_AEQ_BYPASS_GAIN,
2567     SRS_PURESOUND_FILTER_CONFIG,
2568     SRS_PURESOUND_HPF_FREQUENCY,
2569     SRS_PURESOUND_TBHD_TRUBASS_LEVEL,
2570     SRS_PURESOUND_TBHD_SPEAKER_SIZE,
2571     SRS_PURESOUND_TBHD_LEVEL_INDEPENDENT_EN,
2572     SRS_PURESOUND_TBHD_COMPRESSOR_LEVEL,
2573     SRS_PURESOUND_TBHD_MODE,
2574     SRS_PURESOUND_TBHD_SPEAKER_AUDIO,
2575     SRS_PURESOUND_TBHD_SPEAKER_ANALYSIS,
2576     SRS_PURESOUND_INPUT_GAIN,
2577     SRS_PURESOUND_OUTPUT_GAIN,
2578 
2579     //SRS_THEATERSOUND_3D
2580     SRS_THEATERSOUND_CC3D_INPUT_GAIN,
2581     SRS_THEATERSOUND_CC3D_OUTPUT_GAIN,
2582     SRS_THEATERSOUND_CC3D_BYPASS_GAIN,
2583     SRS_THEATERSOUND_CC3D_APERTURE,
2584     SRS_THEATERSOUND_CC3D_GAINLIMIT,
2585     SRS_THEATERSOUND_CC3D_FF_DEPTH,
2586     SRS_THEATERSOUND_CC3D_NF_DEPTH,
2587 
2588     SRS_THEATERSOUND_CC3D_TSHD_SURR_MODE,
2589     SRS_THEATERSOUND_CC3D_TSHD_MIX_FADE_CTRL,
2590 
2591     SRS_THEATERSOUND_CC3D_TBHDX_INPUT_GAIN,
2592     SRS_THEATERSOUND_CC3D_TBHDX_BASSLEVEL,
2593     SRS_THEATERSOUND_CC3D_TBHDX_SPEAKERSIZE,
2594     SRS_THEATERSOUND_CC3D_TBHDX_MODE,
2595     SRS_THEATERSOUND_CC3D_TBHDX_DYNAMICS,
2596     SRS_THEATERSOUND_CC3D_TBHDX_HP_ORDER,
2597     SRS_THEATERSOUND_CC3D_TBHDX_CUSTOM_FILTER,
2598     SRS_THEATERSOUND_GEQ_INPUT_GAIN,
2599     SRS_THEATERSOUND_GEQ_BAND0_GAIN,
2600     SRS_THEATERSOUND_GEQ_BAND1_GAIN,
2601     SRS_THEATERSOUND_GEQ_BAND2_GAIN,
2602     SRS_THEATERSOUND_GEQ_BAND3_GAIN,
2603     SRS_THEATERSOUND_GEQ_BAND4_GAIN,
2604     SRS_THEATERSOUND_CC3D_PROCESS_PATH,
2605     SRS_THEATERSOUND_TSHD_BYPASS_GAIN,
2606 
2607     // BONGIOVI_DPS
2608     BONGIOVI_DPS_SET_PARAMS,
2609     BONGIOVI_DPS_SET_GLOBAL_INPUT_GAIN,
2610     BONGIOVI_DPS_SET_GLOBAL_OUTPUT_GAIN,
2611     BONGIOVI_DPS_SET_STEREO_WIDENER_MGAIN,
2612     BONGIOVI_DPS_SET_STEREO_WIDENER_SGAIN,
2613 } ADVSND_PARAM;
2614 
2615 //====== Certification Mode TYPE========
2616 typedef enum
2617 {
2618     AUDIO_DOLBY_DD_Cert,                ///<
2619     AUDIO_DOLBY_DDP_Cert,               ///<
2620     AUDIO_DOLBY_PULSE_Cert,             ///<
2621     AUDIO_DOLBY_DDCO_Cert,              ///<
2622     AUDIO_DOLBY_MS10_Cert,              ///<
2623     AUDIO_DOLBY_RESERVE1,               ///<
2624     AUDIO_DOLBY_RESERVE2,               ///<
2625     AUDIO_DOLBY_RESERVE3,               ///<
2626     AUDIO_DTS_DMP_Cert,                 ///<
2627     AUDIO_DTS_BC_Cert,                  ///<
2628     AUDIO_DTS_PremiumTV_Cert,           ///<
2629     AUDIO_DTS_SYMMETRY_Cert,            ///<
2630     AUDIO_DTS_ENVELO_Cert,              ///<
2631     AUDIO_DTS_RESERVE1,                 ///<
2632     AUDIO_DTS_RESERVE2,                 ///<
2633     AUDIO_DTS_RESERVE3,                 ///<
2634     AUDIO_SRS_XT_Cert,                  ///<
2635     AUDIO_SRS_RESERVE1,                 ///<
2636     AUDIO_SRS_RESERVE2,                 ///<
2637     AUDIO_SRS_RESERVE3,                 ///<
2638 } Audio_CertMode;
2639 
2640 typedef enum
2641 {
2642     AUDIO_CERT_Enable,
2643     AUDIO_CERT_Disable
2644 }Audio_CertEnable;
2645 
2646 //====== VoIP Applications ========
2647 typedef enum
2648 {
2649     /* VoIP Application CallBack */
2650     AUDIO_VoIP_CONFIG_REGISTER_DEC_CB,
2651     AUDIO_VoIP_CONFIG_REGISTER_SE_CB,
2652 
2653     /* VoIP Application Audio In/Out */
2654     AUDIO_VoIP_CONFIG_ALSA_PLAYBACK,
2655 
2656     /* Voip Application setup pcm upload and config SRC */
2657     AUDIO_VOIP_CONFIG_PCM_UPLOAD,
2658 
2659 }AUDIO_VoIP_CONFIG_TYPE;
2660 
2661 
2662 //====== STAOS PIP START 2012/02/01 ========
2663 
2664 typedef struct
2665 {
2666     XPCM_TYPE audioType;
2667     MS_U16    sampleRate;
2668     MS_U16    blockSize;
2669     MS_U16    samplePerBlock;
2670     MS_U8     channels;
2671     MS_U8     bitsPerSample;
2672 
2673 } Audio_XPCM_Param;
2674 
2675 typedef struct
2676 {
2677     #define  MAX_NUM_CODECS  5
2678 
2679     MS_U16 Channels[MAX_NUM_CODECS];
2680     MS_U16 Regions[MAX_NUM_CODECS];
2681     MS_U16 cplStart[MAX_NUM_CODECS];
2682     MS_U16 cplQbits[MAX_NUM_CODECS];
2683     MS_U16 FrameSize[MAX_NUM_CODECS];
2684 
2685     MS_U16 mNumCodecs;
2686     MS_U16 mSamples;
2687     MS_U16 mSampleRate;
2688 
2689 } Audio_COOK_Param;
2690 
2691 typedef struct
2692 {
2693     MS_U32    u32Version;
2694     MS_U32    u32Channels;
2695     MS_U32    u32SampleRate;
2696     MS_U32    u32ByteRate;
2697     MS_U32    u32BlockAlign;
2698     MS_U32    u32Encopt;
2699     MS_U32    u32ParsingByApp;
2700     MS_U32    u32BitsPerSample;
2701     MS_U32    u32ChannelMask;
2702     MS_U32    u32DrcParamExist;
2703     MS_U32    u32DrcRmsAmpRef;
2704     MS_U32    u32DrcRmsAmpTarget;
2705     MS_U32    u32DrcPeakAmpRef;
2706     MS_U32    u32DrcPeakAmpTarget;
2707     MS_U32    u32MaxPacketSize;
2708 
2709 } Audio_ASF_Param;
2710 
2711 typedef struct
2712 {
2713     MS_U32 U32WrtAddr;
2714     MS_U32 U32WrtBytes;
2715 
2716 } Audio_MM_Data_Request;
2717 
2718 typedef struct
2719 {
2720     MS_U32  U32DecodeFrame;
2721     MS_U32  U32WrtAddr;
2722     MS_U32  U32WrtBytes;
2723 
2724 } Audio_MM_PCM_Info;
2725 
2726 typedef struct
2727 {
2728     MS_U32  U32Name;
2729     MS_U32  U32IsHashkeySupported;
2730 
2731 } Audio_Hashkey_Info;
2732 
2733 /// Audio Decoder ID Information
2734 typedef enum
2735 {
2736     /// Audio Decoder ID invalid
2737     AU_DEC_INVALID                       = -1,
2738     /// Audio 1-Decoder ID
2739     AU_DEC_ID1                           =  0,
2740     /// Audio 2-Decoder ID
2741     AU_DEC_ID2                           =  1,
2742     /// Audio 3-Decoder ID
2743     AU_DEC_ID3                           =  2,
2744     AU_DEC_MAX                           =  3
2745 
2746 } AUDIO_DEC_ID;
2747 
2748 typedef enum
2749 {
2750     AUDIO_DSP_ID_DEC = 0x00,
2751     AUDIO_DSP_ID_SND,
2752     AUDIO_DSP_ID_R2,
2753 
2754     AUDIO_DSP_ID_ALL = 0xFF
2755 } AUDIO_DSP_ID;
2756 
2757 typedef enum
2758 {
2759     AUDIO_MM_OMX = 0x00,
2760     AUDIO_MM_VD,
2761     AUDIO_MM_MAX = 0xFF
2762 } AUDIO_MM_TYPE;
2763 
2764 typedef enum
2765 {
2766     FILTER_TYPE_AUDIO_1 = 0,
2767     FILTER_TYPE_AUDIO_2,
2768     FILTER_TYPE_AUDIO_INVALID,
2769 
2770 } AUDIO_FILTER_TYPE;
2771 
2772 typedef enum
2773 {
2774     Audio_ParamType_SoundMode = 0,
2775     Audio_ParamType_syncSTC,
2776     Audio_ParamType_PTS_info,
2777     Audio_ParamType_setAudioDecoder,
2778     Audio_ParamType_acMode,
2779     Audio_ParamType_MM_FFx2,
2780     Audio_ParamType_reqDataSize,
2781     Audio_ParamType_esBuf_informDataRdy,      // new
2782     Audio_ParamType_playControl,
2783     Audio_ParamType_mute,
2784     Audio_ParamType_predecode,                // for KTV
2785     Audio_ParamType_setWMADecParam,
2786     Audio_ParamType_setCOOKDecParam,
2787     Audio_ParamType_setXPCMDecParam,
2788     Audio_ParamType_UNI_PCM3_Input_Addr,
2789     Audio_ParamType_UNI_NEED_DECODE_FRMCNT,
2790     Audio_ParamType_UNI_ES_Wptr,
2791     Audio_ParamType_UNI_PCMOutCnt,
2792     Audio_ParamType_AllocDecoder,
2793     Audio_ParamType_FreeDecoder,
2794     Audio_ParamType_omx_spdif_mode,
2795     Audio_ParamType_omx_spdif_play,
2796     Audio_ParamType_omx_spdif_pcmLevel,
2797     Audio_ParamType_setExtSynth,
2798     Audio_ParamType_trueHD_bypass_enable,
2799 
2800 } Audio_ParamType;
2801 
2802 typedef enum
2803 {
2804     Audio_infoType_Unknow = -1,
2805     Audio_infoType_DecStatus = 0,
2806     Audio_infoType_SampleRate,
2807     Audio_infoType_SoundMode,
2808     Audio_infoType_capability,
2809     Audio_infoType_AudioSyncStatus,   // 1 : AV-Sync  0: Free-run
2810     Audio_infoType_bitRate,
2811     Audio_infoType_acmod,
2812     Audio_infoType_okFrmCnt,
2813     Audio_infoType_errFrmCnt,
2814     Audio_infoType_1ms_timeStamp,
2815     Audio_infoType_33bit_PTS          = 10,
2816     Audio_infoType_33bit_STCPTS_DIFF,
2817     Audio_infoType_esBuf_req,
2818     Audio_infoType_BufferSize,
2819     Audio_infoType_BufferAddr,
2820     Audio_infoType_esBuf_currLevel,
2821     Audio_infoType_pcmBuf_currLevel,
2822     Audio_infoType_get_audio_filter,
2823     Audio_infoType_audio_unsupported,
2824     Audio_infoType_getDecInfo1,
2825     Audio_infoType_UNI_PCM1_Info      = 20,
2826     Audio_infoType_UNI_PCM3_Level,
2827     Audio_infoType_UNI_ES_Level,
2828     Audio_infoType_UNI_ES_Base,
2829     Audio_infoType_UNI_ES_Size,
2830     Audio_infoType_UNI_PCM_Base,
2831     Audio_infoType_UNI_PCM_Size,
2832     Audio_infoType_Decoder_ID,
2833     Audio_infoType_AccumEsCnt,
2834     Audio_infoType_MadBaseAddr,
2835     Audio_infoType_hashkey,
2836     Audio_infoType_UNI_PCM3_Base,
2837     Audio_infoType_UNI_PCM3_Size,
2838     Audio_infoType_AC3_BSID,
2839     Audio_infoType_get_trueHD_bypass_enable,
2840     Audio_infoType_syncSTC_in_mmTs,
2841 } Audio_InfoType;
2842 
2843 typedef MS_BOOL (*pFuncPtr_SetAudioParam2)(AUDIO_DEC_ID DecId, Audio_ParamType paramType, MS_VIRT Param);
2844 typedef MS_BOOL (*pFuncPtr_GetAudioInfo2)(AUDIO_DEC_ID DecId, Audio_InfoType paramType, void * pInfo);
2845 
2846 //====== STAOS PIP END 2012/02/01 ========
2847 
2848 typedef enum
2849 {
2850     Audio_DumpInfo_Off          = 0x0,
2851     Audio_DumpInfo_Avsync       = 0x1,
2852     Audio_DumpInfo_Dec1         = 0x2,
2853     Audio_DumpInfo_IoInfo       = 0x4,
2854     Audio_DumpInfo_mmFileAVsync = 0x8,
2855     Audio_DumpInfo_All          = 0x15,
2856     Audio_DumpInfo_AutoTest     = 0x80,
2857 }Audio_DumpInfo_Type;
2858 
2859 typedef enum
2860 {
2861     Audio_OMX_SPDIF_OFF,
2862     Audio_OMX_SPDIF_ON,
2863     Audio_OMX_SPDIF_STOP,
2864     Audio_OMX_SPDIF_PLAY,
2865 
2866 } Audio_OMX_SPDIF_Param;
2867 
2868 typedef enum
2869 {
2870     AUDIO_USAGE_TYPE_NONE,
2871     AUDIO_USAGE_TYPE_DTV,
2872     AUDIO_USAGE_TYPE_ATV,
2873     AUDIO_USAGE_TYPE_HDMI,
2874     AUDIO_USAGE_TYPE_ADC,
2875     AUDIO_USAGE_TYPE_MM,
2876     AUDIO_USAGE_TYPE_SPDIF,
2877     AUDIO_USAGE_TYPE_KTV,
2878     AUDIO_USAGE_TYPE_GAME,
2879 
2880 } AUDIO_USAGE_TYPE;
2881 
2882 ///<Audio output port source type
2883 typedef enum
2884 {
2885     E_CONNECT_MAIN,                   ///< output connect to main source
2886     E_CONNECT_SUB,                     ///< output connect to sub source
2887     E_CONNECT_SCART,                 ///< output connect to scart source
2888     E_CONNECT_DATA_CAPTURE,  ///< output connect to data capture source
2889     E_CONNECT_KTV,                     ///< output connect to KTV source
2890     E_CONNECT_NULL,                   ///< Disable output port
2891 } AUDIO_OUTPORT_SOURCE_TYPE;
2892 
2893 // TEE Capability
2894 typedef enum
2895 {
2896     Audio_TEE_None                            = 0x00,
2897     Audio_TEE_Setup,
2898     Audio_TEE_Set_DSP_Secure_Accessed,
2899     Audio_TEE_Set_DSP_Normal_Accessed,
2900 
2901     Audio_TEE_Setup_and_ALL_DSP_Secure_Accessed   = 0xFF
2902 } Audio_TEE_Capability;
2903 
2904 ///<Enum for Audio Ease Type
2905 typedef enum
2906 {
2907     E_AUDIO_EASE_TYPE_LINEAR,
2908     E_AUDIO_EASE_TYPE_INCUBIC,
2909     E_AUDIO_EASE_TYPE_OUTCUBIC,
2910     E_AUDIO_EASE_TYPE_INOUTCUBIC,
2911 }AUDIO_EASE_TYPE;
2912 
2913 //=======================================
2914 /// Init structure for audio
2915 typedef struct __attribute__((packed))
2916 {
2917     MS_U8      miu;               ///< MIU
2918     MS_U8      tv_system;        ///< TV system
2919     MS_U8      dtv_system;       ///< DTV system
2920     MS_U8      au_system_sel;   ///< Audio system type
2921 
2922     //sif threshold
2923     AUDIO_SIF_SET_STANDARD        standard_u8Type;   ///< SIF standard type
2924     AUDIO_SIF_THRESHOLD_TYPE      threshold_u8Type;  ///< SIF Threshold type
2925     MS_U16                        threshold_value;   ///< SIF Threshold value
2926 
2927 } AUDIO_INIT_INFO, *PAUDIO_INIT_INFO;
2928 
2929 //=======================================
2930 /// structure for audio output setting
2931 typedef struct __attribute__((packed))
2932 {
2933     AUDIO_OUTPUT_TYPE   SpeakerOut;  ///< Audio output port for Speaker
2934     AUDIO_OUTPUT_TYPE   HpOut;       ///< Audio output port for HP
2935     AUDIO_OUTPUT_TYPE   MonitorOut;  ///< Audio output port for Monitor out
2936     AUDIO_OUTPUT_TYPE   ScartOut;    ///< Audio output port for Scart out
2937     AUDIO_OUTPUT_TYPE   SpdifOut;    ///< Audio output port for S/PDIF out
2938     AUDIO_OUTPUT_TYPE   ArcOut;      ///< Audio output port for ARC(HDMI_Rx) out
2939     AUDIO_OUTPUT_TYPE   HDMIOut;     ///< Audio output port for HDMI_Tx out
2940 } AUDIO_OUT_INFO, *PAUDIO_OUT_INFO;
2941 
2942 //=======================================
2943 /// structure for audio DSP path setting
2944 typedef struct __attribute__((packed))
2945 {
2946     AUDIO_PATH_TYPE   SpeakerOut;     ///< Audio DSP path for Speaker
2947     AUDIO_PATH_TYPE   HpOut;          ///< Audio DSP path for HP
2948     AUDIO_PATH_TYPE   MonitorOut;     ///< Audio DSP path for Monitor out
2949     AUDIO_PATH_TYPE   ScartOut;       ///< Audio DSP path for Scart out
2950     AUDIO_PATH_TYPE   SpdifOut;       ///< Audio DSP path for Spdif
2951     AUDIO_PATH_TYPE   ArcOut;         ///< Audio output port for ARC(HDMI_Rx) out
2952     AUDIO_PATH_TYPE   HDMIOut;        ///< Audio output port for HDMI out
2953 } AUDIO_PATH_INFO, *PAUDIO_PATH_INFO;
2954 
2955 //=======================================
2956 /// structure for output port connection setting
2957 typedef struct __attribute__((packed))
2958 {
2959     AUDIO_OUTPORT_SOURCE_TYPE   SpeakerOut;     ///<  for Speaker
2960     AUDIO_OUTPORT_SOURCE_TYPE   HpOut;          ///<  for HP
2961     AUDIO_OUTPORT_SOURCE_TYPE   MonitorOut;     ///<  for Monitor out
2962     AUDIO_OUTPORT_SOURCE_TYPE   ScartOut;       ///<  for Scart out
2963     AUDIO_OUTPORT_SOURCE_TYPE   SpdifOut;       ///<  for Spdif
2964     AUDIO_OUTPORT_SOURCE_TYPE   ArcOut;         ///<  for ARC(HDMI_Rx)
2965     AUDIO_OUTPORT_SOURCE_TYPE   HDMIOut;        ///<  for HDMI_Tx
2966 } OUTPUT_SOURCE_INFO, *POUTPUT_SOURCE_INFO;
2967 
2968 //=======================================
2969 /// structure for AES info in new MM mode
2970 typedef struct
2971 {
2972     MS_U32 aes_base_addr;       ///<  base address of ES buffer
2973     MS_U32 aes_end_addr;        ///<  end address of ES buffer
2974     MS_U32 aes_BufSize;         ///<  ES buffer size
2975     MS_U32 aes_write_addr;      ///<  write pointer
2976     MS_U32 aes_read_addr;       ///<  read pointer
2977     MS_U32 aes_freeSpace;       ///<  free space of ES buffer
2978     MS_U32 aes_level;           ///<  level of ES buffer
2979     MS_U32 aes_ptsCnt;          ///<  count of total received PTS
2980     MS_U64 aes_lastPTS;         ///<  last received PTS
2981 } AES_INFO;
2982 
2983 
2984 typedef enum
2985 {
2986     E_TSP_0,
2987     E_TSP_1,
2988     E_TSP_MAX,
2989 } AUDIO_STC_SOURCE;
2990 
2991 typedef enum
2992 {
2993     E_AUD_3_PARSER = 0x0,
2994     E_AUD_4_PARSER_type1 = 0x1,    ///<K3S_type
2995     E_AUD_4_PARSER_type2 = 0x2,    ///<eiffle_type
2996     E_AUD_1_PARSER = 0x3,
2997     E_AUD_2_PARSER = 0x4,
2998     E_AUD_MAX_PARSER = 0x5,
2999 }AUDIO_PARSER_Architecture;
3000 
3001 typedef enum
3002 {
3003     E_AFIFO_0,
3004     E_AFIFO_1,
3005     E_AFIFO_2,
3006     E_AFIFO_MAX,
3007 } AUDIO_AFIFO_SOURCE;
3008 
3009 
3010 typedef struct __attribute__((packed))
3011 {
3012     MS_BOOL bStart;
3013     MS_BOOL bConnect;
3014     MS_BOOL bAVSyncOn;
3015     MS_BOOL bIsAD;
3016     AUDIO_OUTPORT_SOURCE_TYPE eGroup;
3017     AUDIO_DSP_ID eDSPId;
3018     AUDIO_SOURCE_INFO_TYPE eSourceType;
3019     En_DVB_decSystemType eAudFormat;
3020     AUDIO_STC_SOURCE eStcSource;
3021     AUDIO_AFIFO_SOURCE eAfifoSource;
3022     AUDIO_MM_TYPE eMMType;
3023 } AudioDecStatus_t;
3024 
3025 typedef struct __attribute__((packed))
3026 {
3027     AUDIO_OUTPORT_SOURCE_TYPE eGroup;
3028     AUDIO_DSP_ID u8NonPcmPath;
3029     AUDIO_SOURCE_INFO_TYPE eSourceType;
3030     AUDIO_DIGITAL_OUTPUT_TYPE eDigitalOutfMode;
3031     MS_U8 u8R2NonPcmSetting;
3032 } DigitalOutSetting_t;
3033 
3034 typedef struct __attribute__((packed))
3035 {
3036     MS_BOOL   CBit;
3037     MS_BOOL   LBit;
3038 } Digital_Out_Copy_Righr_t;
3039 
3040 typedef struct __attribute__((packed))
3041 {
3042     MS_U8   u8PcmFormatControl  ;                     // byte 0, [0:7]
3043     MS_U8   u8Category;                                      // byte 1, [8:14]
3044     Digital_Out_Copy_Righr_t    stCopyRight;         // byte 0[1],  byte 1[15]
3045 
3046     MS_U8   u8SourceNumber;                            // byte 2, [16:19]
3047     MS_U8   u8ChannelNumber;                          // byte 2, [20:23]
3048 
3049     MS_U8   u8SamplingRate;                              // byte 3, bit[24:27]
3050     MS_U8   u8ClockPrecision;                            // byte 3, bit[28:31]
3051 
3052     MS_U8   u8WordLength;                                // byte 4, bit[32:35]
3053     MS_U8   u8OriginalSamplingRate;                // byte 4, bit[36:39]
3054 
3055     MS_U8   u8CGMS_A;                                      // byte 5, bit[40:41]
3056 } Digital_Out_Channel_Status_t;
3057 
3058 typedef struct
3059 {
3060     MS_U8   support_codec;              // Short_Audio_Descriptor Byte1 [3:6], 0: default, 1: support, 2: not suppot
3061     MS_U8   support_ch;                 // Short_Audio_Descriptor Byte1 [0:2]
3062     MS_U8   support_samplerate;         // Short_Audio_Descriptor Byte2 [0:6]
3063     MS_U8   support_SAD_byte3;          // Short_Audio_Descriptor Byte3 [0:7]
3064 } Digital_Out_Device_Capability_t;
3065 
3066 //=======================================
3067 /// enum for audio DDR Info
3068 typedef enum
3069 {
3070     E_AUD_MEMORY_BASE = 0x0, ///< for audio DDR Base
3071     E_AUD_MEMORY_SIZE = 0x1, ///< for audio DDR Size
3072 } EN_AUDIO_DDRINFO;
3073 
3074 #ifdef __cplusplus
3075 }
3076 #endif
3077 
3078 #endif // _DRV_AUDIO_IF_H_
3079