xref: /utopia/UTPA2-700.0.x/modules/audio/api/audio/apiAUDIO_v2_customer.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 ///////////////////////////////////////////////////////////////////////////////////////////////////
96 ///
97 /// @file   apiAUDIO_v2_customer.h
98 /// @brief  AUDIO API
99 /// @author MStar Semiconductor Inc.
100 ///////////////////////////////////////////////////////////////////////////////////////////////////
101 
102 #ifndef _API_AUDIO_CUSTOMER_H_
103 #define _API_AUDIO_CUSTOMER_H_
104 
105 #include "MsCommon.h"
106 
107 
108 #ifdef __cplusplus
109 extern "C"
110 {
111 #endif
112 
113 //-------------------------------------------------------------------------------------------------------------------------------------
114 /* Initialize, STR */
115 //-------------------------------------------------------------------------------------------------------------------------------------
116 //need to be consistent with AUDIO_OUTPUT_TYPE of drvAudio_if.h
117 typedef enum
118 {
119     API_AUDIO_CUSTOMER_OUTPUT_TYPE_INVALID = -1,
120     API_AUDIO_CUSTOMER_LINEOUT0_OUTPUT,              ///< 0: DAC0 OUTPUT
121     API_AUDIO_CUSTOMER_LINEOUT1_OUTPUT,              ///< 1: T2=>AA0 OUTPUT    T3=>HP OUTPUT
122     API_AUDIO_CUSTOMER_LINEOUT2_OUTPUT,              ///< 2: T2=>AA1 OUTPUT    T3=>DAC2 OUTPUT
123     API_AUDIO_CUSTOMER_LINEOUT3_OUTPUT,              ///< 3: T2=>NULL          T3=>AA OUTPUT
124     API_AUDIO_CUSTOMER_SPDIF_OUTPUT,                 ///< 4: SPDIF OUTPUT
125     API_AUDIO_CUSTOMER_I2S_OUTPUT,                   ///< 5: I2S OUTPUT
126     API_AUDIO_CUSTOMER_HP_OUTPUT,                    ///< 6: OUTPUT with headphone driver
127     API_AUDIO_CUSTOMER_I2S2_OUTPUT,                  ///< 7: I2S2 OUTPUT
128     API_AUDIO_CUSTOMER_HDMI_ARC_OUTPUT,              ///< 8: HDMI ARC OUTPUT(HDMI_Rx,TV)
129     API_AUDIO_CUSTOMER_HDMI_OUTPUT,                  ///< 9: HDMI Tx OUTPUT(HDMI_Tx,STB)
130     API_AUDIO_CUSTOMER_NULL_OUTPUT = 0xFF,           ///< 0xFF: Null output
131     API_AUDIO_CUSTOMER_OUTPUT_MAX,
132 } API_AUDIO_CUSTOMER_OUTPUT_TYPE;
133 
134 //need to be consistent with AUDIO_OUT_INFO of drvAudio_if.h
135 typedef struct
136 {
137     API_AUDIO_CUSTOMER_OUTPUT_TYPE   SpeakerOut;  ///< Audio output port for Speaker
138     API_AUDIO_CUSTOMER_OUTPUT_TYPE   HpOut;       ///< Audio output port for HP
139     API_AUDIO_CUSTOMER_OUTPUT_TYPE   MonitorOut;  ///< Audio output port for Monitor out
140     API_AUDIO_CUSTOMER_OUTPUT_TYPE   ScartOut;    ///< Audio output port for Scart out
141     API_AUDIO_CUSTOMER_OUTPUT_TYPE   SpdifOut;    ///< Audio output port for S/PDIF out
142     API_AUDIO_CUSTOMER_OUTPUT_TYPE   ArcOut;      ///< Audio output port for ARC(HDMI_Rx) out
143     API_AUDIO_CUSTOMER_OUTPUT_TYPE   HDMIOut;     ///< Audio output port for HDMI_Tx out
144 } API_AUDIO_CUSTOMER_OUTPUT_INFO;
145 
146 typedef enum
147 {
148     API_AUDIO_CUSTOMER_CHIP_PLATFORM_INVALID = -1,
149     API_AUDIO_CUSTOMER_CHIP_PLATFORM_TV,
150     API_AUDIO_CUSTOMER_CHIP_PLATFORM_STB,
151 } API_AUDIO_CUSTOMER_CHIP_PLATFORM;
152 
153 //-------------------------------------------------------------------------------------------------------------------------------------
154 /* Connect & Disconnect */
155 //-------------------------------------------------------------------------------------------------------------------------------------
156 typedef enum
157 {
158     API_AUDIO_CUSTOMER_PARSER_MODE_INVALID = -1,
159     API_AUDIO_CUSTOMER_PARSER_MODE_0,
160     API_AUDIO_CUSTOMER_PARSER_MODE_1,
161     API_AUDIO_CUSTOMER_PARSER_MODE_2,
162     API_AUDIO_CUSTOMER_PARSER_MODE_3,
163     API_AUDIO_CUSTOMER_PARSER_MODE_MAX,
164 } API_AUDIO_CUSTOMER_PARSER_MODE;
165 
166 typedef enum
167 {
168     API_AUDIO_CUSTOMER_PARSER_INPUT_INVALID = -1,
169     API_AUDIO_CUSTOMER_PARSER_INPUT_AFIFO0,
170     API_AUDIO_CUSTOMER_PARSER_INPUT_AFIFO1,
171     API_AUDIO_CUSTOMER_PARSER_INPUT_AFIFO2,
172     API_AUDIO_CUSTOMER_PARSER_INPUT_AFIFO3,
173     API_AUDIO_CUSTOMER_PARSER_INPUT_MAX,
174 } API_AUDIO_CUSTOMER_PARSER_INPUT;
175 
176 typedef enum
177 {
178     API_AUDIO_CUSTOMER_ADEC_INDEX_INVALID = -1,
179     API_AUDIO_CUSTOMER_ADEC0,
180     API_AUDIO_CUSTOMER_ADEC1,
181     API_AUDIO_CUSTOMER_ADEC_ATV,
182     API_AUDIO_CUSTOMER_ADEC_MAX,
183 } API_AUDIO_CUSTOMER_ADEC_INDEX;
184 
185 typedef enum
186 {
187     API_AUDIO_CUSTOMER_ADEC_INPUT_INVALID   = -1,
188     API_AUDIO_CUSTOMER_ADEC_INPUT_DTV       = 0,
189     API_AUDIO_CUSTOMER_ADEC_INPUT_HDMI      = 1,
190     API_AUDIO_CUSTOMER_ADEC_INPUT_MM        = 2,
191     API_AUDIO_CUSTOMER_ADEC_INPUT_MM_UNI    = 6, //<--MAX is here!!!
192     API_AUDIO_CUSTOMER_ADEC_INPUT_CLIP      = 3,
193     API_AUDIO_CUSTOMER_ADEC_INPUT_ATV       = 4,
194     API_AUDIO_CUSTOMER_ADEC_INPUT_NONE      = 5,
195     API_AUDIO_CUSTOMER_ADEC_INPUT_MAX       = API_AUDIO_CUSTOMER_ADEC_INPUT_MM_UNI + 1,
196 } API_AUDIO_CUSTOMER_ADEC_INPUT;
197 
198 typedef enum
199 {
200     API_AUDIO_CUSTOMER_ADEC_PCM_PATH_INVALID = -1,
201     API_AUDIO_CUSTOMER_ADEC_PCM_PATH_DSP_SRC,
202     API_AUDIO_CUSTOMER_ADEC_PCM_PATH_MCU,
203     API_AUDIO_CUSTOMER_ADEC_PCM_PATH_MAX,
204 } API_AUDIO_CUSTOMER_ADEC_PCM_PATH;
205 
206 typedef enum
207 {
208     API_AUDIO_CUSTOMER_ADC_INDEX_INVALID   = -1,
209     API_AUDIO_CUSTOMER_ADC0,
210     API_AUDIO_CUSTOMER_ADC1,
211     API_AUDIO_CUSTOMER_ADC_MAX,
212 } API_AUDIO_CUSTOMER_ADC_INDEX;
213 
214 typedef enum
215 {
216     API_AUDIO_CUSTOMER_ADC_IN_PORT_INVALID  = -1,
217     API_AUDIO_CUSTOMER_ADC0_IN_PORT_0       = 0x02,
218     API_AUDIO_CUSTOMER_ADC0_IN_PORT_1       = 0x12,
219     API_AUDIO_CUSTOMER_ADC0_IN_PORT_2       = 0x22,
220     API_AUDIO_CUSTOMER_ADC0_IN_PORT_3       = 0x32,
221     API_AUDIO_CUSTOMER_ADC0_IN_PORT_4       = 0xA2,
222     API_AUDIO_CUSTOMER_ADC0_IN_PORT_5       = 0xB2,
223     API_AUDIO_CUSTOMER_ADC0_MIC_IN          = 0x72,
224     API_AUDIO_CUSTOMER_ADC1_IN_PORT_0       = 0x09,
225     API_AUDIO_CUSTOMER_ADC1_IN_PORT_1       = 0x19,
226     API_AUDIO_CUSTOMER_ADC1_IN_PORT_2       = 0x29,
227     API_AUDIO_CUSTOMER_ADC1_IN_PORT_3       = 0x39,
228     API_AUDIO_CUSTOMER_ADC1_IN_PORT_4       = 0xA9,
229     API_AUDIO_CUSTOMER_ADC1_IN_PORT_5       = 0xB9,
230     API_AUDIO_CUSTOMER_ADC1_MIC_IN          = 0x79,
231 } API_AUDIO_CUSTOMER_ADC_IN_PORT;
232 
233 typedef enum
234 {
235     API_AUDIO_CUSTOMER_PCM_MIXER_INDEX_INVALID = -1,
236     API_AUDIO_CUSTOMER_PCM_MIXER0,
237     API_AUDIO_CUSTOMER_PCM_MIXER_MAX,
238 } API_AUDIO_CUSTOMER_PCM_MIXER_INDEX;
239 
240 typedef enum
241 {
242     API_AUDIO_CUSTOMER_PCM_MIXER_INPUT_INVALID = -1,
243     API_AUDIO_CUSTOMER_PCM_MIXER_INPUT_AMIX0,
244     API_AUDIO_CUSTOMER_PCM_MIXER_INPUT_AMIX1,
245     API_AUDIO_CUSTOMER_PCM_MIXER_INPUT_AMIX2,
246     API_AUDIO_CUSTOMER_PCM_MIXER_INPUT_AMIX3,
247     API_AUDIO_CUSTOMER_PCM_MIXER_INPUT_AMIX4,
248     API_AUDIO_CUSTOMER_PCM_MIXER_INPUT_AMIX5,
249     API_AUDIO_CUSTOMER_PCM_MIXER_INPUT_AMIX6,
250     API_AUDIO_CUSTOMER_PCM_MIXER_INPUT_AMIX7,
251     API_AUDIO_CUSTOMER_PCM_MIXER_INPUT_MAX,
252 } API_AUDIO_CUSTOMER_PCM_MIXER_INPUT;
253 
254 typedef enum
255 {
256     API_AUDIO_CUSTOMER_CH_SOUND_INVALID = -1,
257     API_AUDIO_CUSTOMER_CH5_SOUND,
258     API_AUDIO_CUSTOMER_CH6_SOUND,
259     API_AUDIO_CUSTOMER_CH7_SOUND,
260     API_AUDIO_CUSTOMER_CH8_SOUND,
261     API_AUDIO_CUSTOMER_CH_SOUND_MAX,
262 } API_AUDIO_CUSTOMER_CH_SOUND;
263 
264 typedef enum
265 {
266     API_AUDIO_CUSTOMER_CH_INPUT_INVALID = -1,
267     API_AUDIO_CUSTOMER_CH_INPUT_ADEC0,
268     API_AUDIO_CUSTOMER_CH_INPUT_ADEC1,
269     API_AUDIO_CUSTOMER_CH_INPUT_ADEC_ATV,
270     API_AUDIO_CUSTOMER_CH_INPUT_HDMI,
271     API_AUDIO_CUSTOMER_CH_INPUT_ADC0,
272     API_AUDIO_CUSTOMER_CH_INPUT_ADC1,
273     API_AUDIO_CUSTOMER_CH_INPUT_SCART,
274     API_AUDIO_CUSTOMER_CH_INPUT_R2DMA_DSP1,
275     API_AUDIO_CUSTOMER_CH_INPUT_R2DMA_DSP3,
276     API_AUDIO_CUSTOMER_CH_INPUT_SWDMA_DSP3,
277     API_AUDIO_CUSTOMER_CH_INPUT_HWDMA,
278     API_AUDIO_CUSTOMER_CH_INPUT_NONE,
279     API_AUDIO_CUSTOMER_CH_INPUT_MAX,
280 } API_AUDIO_CUSTOMER_CH_INPUT;
281 
282 typedef  enum
283 {
284     API_AUDIO_CUSTOMER_FWM_INVALID = -1,
285     API_AUDIO_CUSTOMER_FWM0,
286     API_AUDIO_CUSTOMER_FWM1,
287     API_AUDIO_CUSTOMER_FWM2,
288     API_AUDIO_CUSTOMER_FWM_MAX,
289 } API_AUDIO_CUSTOMER_FWM_INDEX;
290 
291 typedef  enum
292 {
293     API_AUDIO_CUSTOMER_FWM_INPUT_INVALID = -1,
294     API_AUDIO_CUSTOMER_FWM_INPUT_CH5,
295     API_AUDIO_CUSTOMER_FWM_INPUT_CH6,
296     API_AUDIO_CUSTOMER_FWM_INPUT_CH7,
297     API_AUDIO_CUSTOMER_FWM_INPUT_CH8,
298     API_AUDIO_CUSTOMER_FWM_INPUT_MAX,
299 } API_AUDIO_CUSTOMER_FWM_INPUT;
300 
301 typedef  enum
302 {
303     API_AUDIO_CUSTOMER_SE_INVALID = -1,
304     API_AUDIO_CUSTOMER_SE_PRER2,
305     API_AUDIO_CUSTOMER_SE_DSPSE,
306     API_AUDIO_CUSTOMER_SE_POSTR2,
307     API_AUDIO_CUSTOMER_SE_MAX,
308 } API_AUDIO_CUSTOMER_SE_INDEX;
309 
310 typedef  enum
311 {
312     API_AUDIO_CUSTOMER_SE_INPUT_INVALID = -1,
313     API_AUDIO_CUSTOMER_SE_INPUT_DLY0,
314     API_AUDIO_CUSTOMER_SE_INPUT_DLY1,
315     API_AUDIO_CUSTOMER_SE_INPUT_MAX,
316 } API_AUDIO_CUSTOMER_SE_INPUT;
317 
318 typedef enum
319 {
320     API_AUDIO_CUSTOMER_SOUNDOUT_INVALID = -1,
321     API_AUDIO_CUSTOMER_SOUNDOUT_I2S,
322     API_AUDIO_CUSTOMER_SOUNDOUT_LINEOUT0,
323     API_AUDIO_CUSTOMER_SOUNDOUT_LINEOUT1,
324     API_AUDIO_CUSTOMER_SOUNDOUT_LINEOUT2,
325     API_AUDIO_CUSTOMER_SOUNDOUT_LINEOUT3,
326     API_AUDIO_CUSTOMER_SOUNDOUT_SPDIF,
327     API_AUDIO_CUSTOMER_SOUNDOUT_HDMI_ARC,
328     API_AUDIO_CUSTOMER_SOUNDOUT_HDMI_TX,
329     API_AUDIO_CUSTOMER_SOUNDOUT_MAX,
330 } API_AUDIO_CUSTOMER_SOUNDOUT_INDEX;
331 
332 typedef enum
333 {
334     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_INVALID       = -1,
335     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_NULL          = 0,
336     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_CH7           = 1,
337     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_FWM0          = 2,
338     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_DLY0          = 3,
339     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_FWM1          = 4,
340     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_DLY1          = 5,
341     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_FWM2          = 6,
342     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_DLY2          = 7,
343     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_AUDIO_DELAY   = 11, //<--MAX is here!!!
344     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_PRER2         = 8,
345     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_DSPSE         = 9,
346     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_POSTR2        = 10,
347     API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_MAX           = API_AUDIO_CUSTOMER_SOUNDOUT_INPUT_AUDIO_DELAY + 1,
348 } API_AUDIO_CUSTOMER_SOUNDOUT_INPUT;
349 
350 typedef enum
351 {
352     API_AUDIO_CUSTOMER_PCM_CAPTURE_INVALID = -1,
353     API_AUDIO_CUSTOMER_PCM_CAPTURE0,
354     API_AUDIO_CUSTOMER_PCM_CAPTURE1,
355     API_AUDIO_CUSTOMER_PCM_CAPTURE2,
356     API_AUDIO_CUSTOMER_PCM_CAPTURE_MAX,
357 } API_AUDIO_CUSTOMER_PCM_CAPTURE_INDEX;
358 
359 typedef enum
360 {
361     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_INVALID = -1,
362     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_CH5,
363     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_CH6,
364     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_CH7,
365     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_CH8,
366     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_PCM,
367     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_PCM_DELAY,
368     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_PCM_SE,
369     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_MIXER,
370     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_FWM0,
371     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_FWM1,
372     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_FWM2,
373     API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT_MAX,
374 } API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT;
375 
376 typedef enum
377 {
378     API_AUDIO_CUSTOMER_MP3_ENC_INVALID = -1,
379     API_AUDIO_CUSTOMER_MP3_ENC0,
380     API_AUDIO_CUSTOMER_MP3_ENC_MAX,
381 } API_AUDIO_CUSTOMER_MP3_ENC_INDEX;
382 
383 typedef enum
384 {
385     API_AUDIO_CUSTOMER_MP3_ENC_INPUT_INVALID = -1,
386     API_AUDIO_CUSTOMER_MP3_ENC_INPUT_CH5,
387     API_AUDIO_CUSTOMER_MP3_ENC_INPUT_CH6,
388     API_AUDIO_CUSTOMER_MP3_ENC_INPUT_MAX,
389 } API_AUDIO_CUSTOMER_MP3_ENC_INPUT;
390 
391 typedef enum
392 {
393     API_AUDIO_CUSTOMER_AAC_ENC_INVALID = -1,
394     API_AUDIO_CUSTOMER_AAC_ENC0,
395     API_AUDIO_CUSTOMER_AAC_ENC_MAX,
396 } API_AUDIO_CUSTOMER_AAC_ENC_INDEX;
397 
398 typedef enum
399 {
400     API_AUDIO_CUSTOMER_AAC_ENC_INPUT_INVALID = -1,
401     API_AUDIO_CUSTOMER_AAC_ENC_INPUT_PCM_CAPTURE0,
402     API_AUDIO_CUSTOMER_AAC_ENC_INPUT_PCM_CAPTURE1,
403     API_AUDIO_CUSTOMER_AAC_ENC_INPUT_MAX,
404 } API_AUDIO_CUSTOMER_AAC_ENC_INPUT;
405 
406 //-------------------------------------------------------------------------------------------------------------------------------------
407 /* Start & Stop */
408 //-------------------------------------------------------------------------------------------------------------------------------------
409 typedef enum
410 {
411     API_AUDIO_CUSTOMER_CODEC_TYPE_INVALID           = -1,
412     API_AUDIO_CUSTOMER_CODEC_TYPE_UNKNOWN           = 0,
413     API_AUDIO_CUSTOMER_CODEC_TYPE_PCM               = 1, // for HDMI PCM
414     API_AUDIO_CUSTOMER_CODEC_TYPE_AC3               = 2,
415     API_AUDIO_CUSTOMER_CODEC_TYPE_EAC3              = 3,
416     API_AUDIO_CUSTOMER_CODEC_TYPE_MPEG              = 4,
417     API_AUDIO_CUSTOMER_CODEC_TYPE_AAC               = 5,
418     API_AUDIO_CUSTOMER_CODEC_TYPE_HEAAC             = 6,
419     API_AUDIO_CUSTOMER_CODEC_TYPE_DRA               = 7,
420     API_AUDIO_CUSTOMER_CODEC_TYPE_MP3               = 8,
421     API_AUDIO_CUSTOMER_CODEC_TYPE_DTS               = 9,
422     API_AUDIO_CUSTOMER_CODEC_TYPE_SIF               = 10,
423     API_AUDIO_CUSTOMER_CODEC_TYPE_SIF_BTSC          = 11,
424     API_AUDIO_CUSTOMER_CODEC_TYPE_SIF_A2            = 12,
425     API_AUDIO_CUSTOMER_CODEC_TYPE_DEFAULT           = 13,
426     API_AUDIO_CUSTOMER_CODEC_TYPE_NONE              = 14,
427     API_AUDIO_CUSTOMER_CODEC_TYPE_DTS_HD_MA         = 15,
428     API_AUDIO_CUSTOMER_CODEC_TYPE_DTS_EXPRESS       = 16,
429     API_AUDIO_CUSTOMER_CODEC_TYPE_DTS_CD            = 17,
430     API_AUDIO_CUSTOMER_CODEC_TYPE_WMA               = 18,
431     API_AUDIO_CUSTOMER_CODEC_TYPE_WMA_PRO           = 19,
432     API_AUDIO_CUSTOMER_CODEC_TYPE_XPCM              = 20,
433     API_AUDIO_CUSTOMER_CODEC_TYPE_RA8LBR            = 21,
434     API_AUDIO_CUSTOMER_CODEC_TYPE_FLAC              = 22,
435     API_AUDIO_CUSTOMER_CODEC_TYPE_VORBIS            = 23,
436     API_AUDIO_CUSTOMER_CODEC_TYPE_AMR_NB            = 24,
437     API_AUDIO_CUSTOMER_CODEC_TYPE_AMR_WB            = 25,
438     API_AUDIO_CUSTOMER_CODEC_TYPE_DolbyTrueHDBypass = 26,
439     API_AUDIO_CUSTOMER_CODEC_TYPE_DVI               = 27, // for HDMI DVI
440     API_AUDIO_CUSTOMER_CODEC_TYPE_ESBypass          = 28,
441 } API_AUDIO_CUSTOMER_CODEC_TYPE;
442 
443 typedef enum
444 {
445     API_AUDIO_CUSTOMER_UPPER_PLAYCMD_INVALID = -1,
446     API_AUDIO_CUSTOMER_UPPER_PLAY            = 0,
447     API_AUDIO_CUSTOMER_UPPER_STOP            = 1,
448     API_AUDIO_CUSTOMER_UPPER_PAUSE           = 2,
449 } API_AUDIO_CUSTOMER_UPPER_PLAYCMD;
450 
451 //-------------------------------------------------------------------------------------------------------------------------------------
452 /* SPDIF */
453 //-------------------------------------------------------------------------------------------------------------------------------------
454 typedef enum
455 {
456     API_AUDIO_CUSTOMER_SPDIF_TX_MODE_INVALID   = -1,
457     API_AUDIO_CUSTOMER_SPDIF_TX_NONE           = 0,
458     API_AUDIO_CUSTOMER_SPDIF_TX_PCM            = 1,
459     API_AUDIO_CUSTOMER_SPDIF_TX_AUTO           = 2,
460     API_AUDIO_CUSTOMER_SPDIF_TX_BYPASS         = 3,
461     API_AUDIO_CUSTOMER_SPDIF_TX_TRANSCODE      = 4,        /* Netflix */
462     API_AUDIO_CUSTOMER_SPDIF_TX_DD             = 5,
463 } API_AUDIO_CUSTOMER_SPDIF_TX_MODE;
464 
465 typedef enum
466 {
467     API_AUDIO_CUSTOMER_SPDIF_COPYRIGHT_INVALID  = -1,
468     API_AUDIO_CUSTOMER_SPDIF_COPY_FREE          = 0,    /* cp-bit : 1, L-bit : 0 */
469     API_AUDIO_CUSTOMER_SPDIF_COPY_NO_MORE       = 1,    /* cp-bit : 0, L-bit : 1 */
470     API_AUDIO_CUSTOMER_SPDIF_COPY_ONCE          = 2,    /* cp-bit : 0, L-bit : 0 */
471     API_AUDIO_CUSTOMER_SPDIF_COPY_NEVER         = 3,    /* cp-bit : 0, L-bit : 1 */
472 } API_AUDIO_CUSTOMER_SPDIF_COPYRIGHT;
473 
474 //====== SPDIF OUTPUT CS TYPE =========
475 typedef enum
476 {
477     API_AUDIO_CUSTOMER_SPDIF_CS_CategoryCode               = 0x0,      ///<
478     API_AUDIO_CUSTOMER_SPDIF_CS_CopyRight                  = 0x1,      ///<
479     API_AUDIO_CUSTOMER_SPDIF_CS_SourceNumber               = 0x2,      ///<
480     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber              = 0x3,      ///<
481     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq                    = 0x4,      ///<
482     API_AUDIO_CUSTOMER_SPDIF_CS_ClockAcc                   = 0x5,      ///<
483     API_AUDIO_CUSTOMER_SPDIF_ChannelAB                     = 0x6,      ///<
484     API_AUDIO_CUSTOMER_SPDIF_CS_CopyProtect                = 0x7,      ///<
485 } API_AUDIO_CUSTOMER_SPDIF_CS_TYPE;
486 
487 //====== SPDIF OUTPUT CS Status =======
488 typedef enum
489 {
490     API_AUDIO_CUSTOMER_SPDIF_CS_Category_BroadCast         = 0x00,     ///<
491     API_AUDIO_CUSTOMER_SPDIF_CS_Category_General           = 0x01,     ///<
492     API_AUDIO_CUSTOMER_SPDIF_CS_Category_BroadCast_JP      = 0x02,     ///<
493     API_AUDIO_CUSTOMER_SPDIF_CS_Category_BroadCast_EU      = 0x03,     ///<
494     API_AUDIO_CUSTOMER_SPDIF_CS_Category_BroadCast_USA     = 0x04,     ///<
495     API_AUDIO_CUSTOMER_SPDIF_CS_Category_Rev4              = 0x05,     ///<
496     API_AUDIO_CUSTOMER_SPDIF_CS_Category_Rev5              = 0x06,     ///<
497     API_AUDIO_CUSTOMER_SPDIF_CS_Category_Rev6              = 0x07,     ///<
498     API_AUDIO_CUSTOMER_SPDIF_CS_CopyRight_CP               = 0x08,     ///<
499     API_AUDIO_CUSTOMER_SPDIF_CS_CopyRight_NonCP            = 0x09,     ///<SPDIF_CS_ChannelNumber_Right
500     API_AUDIO_CUSTOMER_SPDIF_CS_SourceNumber_2             = 0x0A,     ///<
501     API_AUDIO_CUSTOMER_SPDIF_CS_SourceNumber_5             = 0x0B,     ///<
502     API_AUDIO_CUSTOMER_SPDIF_CS_SourceNumber_6             = 0x0C,     ///<
503     API_AUDIO_CUSTOMER_SPDIF_CS_SourceNumber_Rev1          = 0x0D,     ///<
504     API_AUDIO_CUSTOMER_SPDIF_CS_SourceNumber_Rev2          = 0x0E,     ///<
505     API_AUDIO_CUSTOMER_SPDIF_CS_SourceNumber_Rev3          = 0x0F,     ///<
506     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_A_Left       = 0x10,     ///<
507     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_B_Right      = 0x11,     ///<
508     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_C            = 0x12,     ///<
509     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_D            = 0x13,     ///<
510     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_E            = 0x14,     ///<
511     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_F            = 0x15,     ///<
512     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_G            = 0x16,     ///<
513     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_H            = 0x17,     ///<
514     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_I            = 0x18,     ///<
515     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_J            = 0x19,     ///<
516     API_AUDIO_CUSTOMER_SPDIF_CS_ChannelNumber_K            = 0x1A,     ///<
517     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_192                = 0x1B,     ///<
518     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_176                = 0x1C,     ///<
519     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_128                = 0x1D,     ///<
520     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_96                 = 0x1E,     ///<
521     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_88                 = 0x1F,     ///<
522     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_64                 = 0x20,     ///<
523     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_48                 = 0x21,     ///<
524     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_44                 = 0x22,     ///<
525     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_32                 = 0x23,     ///<
526     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_24                 = 0x24,     ///<
527     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_22                 = 0x25,     ///<
528     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_16                 = 0x26,     ///<
529     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_Rev1               = 0x27,     ///<
530     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_Rev2               = 0x28,     ///<
531     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_Rev3               = 0x29,     ///<
532     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_Rev4               = 0x2A,     ///<
533     API_AUDIO_CUSTOMER_SPDIF_CS_SmpFreq_Rev5               = 0x2B,     ///<
534     API_AUDIO_CUSTOMER_SPDIF_CS_ClockAcc_Lev1              = 0x2C,     ///<
535     API_AUDIO_CUSTOMER_SPDIF_CS_ClockAcc_Lev2              = 0x2D,     ///<
536     API_AUDIO_CUSTOMER_SPDIF_CS_ClockAcc_Lev3              = 0x2E,     ///<
537     API_AUDIO_CUSTOMER_SPDIF_CS_ClockAcc_NotMatch          = 0x2F,     ///<
538     API_AUDIO_CUSTOMER_SPDIF_ChannelAB_Invalid_ON          = 0x30,     ///<
539     API_AUDIO_CUSTOMER_SPDIF_ChannelAB_Invalid_OFF         = 0x31,     ///<
540     API_AUDIO_CUSTOMER_SPDIF_CS_CopyProtect_CopyFree       = 0x32,     ///<
541     API_AUDIO_CUSTOMER_SPDIF_CS_CopyProtect_CopyOnce       = 0x33,     ///<
542     API_AUDIO_CUSTOMER_SPDIF_CS_CopyProtect_CopyNever      = 0x34,     ///<
543 } API_AUDIO_CUSTOMER_SPDIF_CS_TYPE_STATUS;
544 
545 //-------------------------------------------------------------------------------------------------------------------------------------
546 /* HDMI */
547 //-------------------------------------------------------------------------------------------------------------------------------------
548 typedef enum
549 {
550     API_AUDIO_CUSTOMER_HDMI_TX_OUTPUT_INVALID    = -1,
551     API_AUDIO_CUSTOMER_HDMI_TX_OUTPUT_PCM,                       ///< HDMI OUTPUT PCM
552     API_AUDIO_CUSTOMER_HDMI_TX_OUTPUT_NONPCM,                    ///< HDMI OUTPUT non-PCM (DD)
553     API_AUDIO_CUSTOMER_HDMI_TX_OUTPUT_EAC3_BYPASS,               ///< HDMI OUTPUT DD/DDP Bypass
554     API_AUDIO_CUSTOMER_HDMI_TX_OUTPUT_EAC3,                      ///< HDMI OUTPUT DDP Encode (MS12)
555 } API_AUDIO_CUSTOMER_HDMI_TX_OUTPUT_TYPE;
556 
557 //-------------------------------------------------------------------------------------------------------------------------------------
558 /* ATV */
559 //-------------------------------------------------------------------------------------------------------------------------------------
560 typedef enum
561 {
562     API_AUDIO_CUSTOMER_SIF_INPUT_INVALID    = -1,
563     API_AUDIO_CUSTOMER_SIF_INPUT_EXTERNAL   = 0,
564     API_AUDIO_CUSTOMER_SIF_INPUT_INTERNAL   = 1,
565 } API_AUDIO_CUSTOMER_SIF_INPUT;
566 
567 typedef enum
568 {
569     API_AUDIO_CUSTOMER_SIF_TYPE_INVALID         = -1,
570     API_AUDIO_CUSTOMER_SIF_TYPE_NONE            = 0x0000,       ///< INIT TYPE : NONE
571     API_AUDIO_CUSTOMER_SIF_ATSC_SELECT          = 0x0001,       ///< INIT TYPE : TV Systems for A2 enabled in default ATSC system
572     API_AUDIO_CUSTOMER_SIF_KOREA_A2_SELECT      = 0x0002,       ///< INIT TYPE : TV Systems for A2 enabled in Korea A2 system
573     API_AUDIO_CUSTOMER_SIF_BTSC_SELECT          = 0x0004,       ///< INIT TYPE : TV Systems for BTSC enabled in ATSC(CO, CF) or DVB(Taiwan) system
574     API_AUDIO_CUSTOMER_SIF_BTSC_BR_SELECT       = 0x0008,       ///< INIT TYPE : TV Systems for BTSC enabled in ATSC(Brazil) system
575     API_AUDIO_CUSTOMER_SIF_BTSC_US_SELECT       = 0x0010,       ///< INIT TYPE : TV Systems for BTSC enabled in ATSC(US) system
576     API_AUDIO_CUSTOMER_SIF_DVB_SELECT           = 0x0020,       ///< INIT TYPE : TV Systems for EU in default DVB system
577     API_AUDIO_CUSTOMER_SIF_DVB_ID_SELECT        = 0x0040,       ///< INIT TYPE : TV Systems for ID(Indonesia) in DVB(PAL B/G) system
578     API_AUDIO_CUSTOMER_SIF_DVB_IN_SELECT        = 0x0080,       ///< INIT TYPE : TV Systems for IN(India) in DVB(PAL B) system
579     API_AUDIO_CUSTOMER_SIF_DVB_CN_SELECT        = 0x0100,       ///< INIT TYPE : TV Systems for CN(China, Hong Kone) in DVB system
580     API_AUDIO_CUSTOMER_SIF_DVB_AJJA_SELECT      = 0x0200,       ///< INIT TYPE : TV Systems for AJ(Asia JooDong), JA(JooAang Asia) in DVB system
581     API_AUDIO_CUSTOMER_SIF_TYPE_MAX             = 0x0FFF,       ///< INIT TYPE : MAX
582 } API_AUDIO_CUSTOMER_SIF_TYPE;
583 
584 typedef enum
585 {
586     API_AUDIO_CUSTOMER_SIF_STANDARD_INVALID = -1,
587     API_AUDIO_CUSTOMER_SIF_BG               = 0x00,         ///< Audio standard BG
588     API_AUDIO_CUSTOMER_SIF_BG_A2            = 0x01,         ///< Audio standard BG A2
589     API_AUDIO_CUSTOMER_SIF_BG_NICAM         = 0x02,         ///< Audio standard BG NICAM
590     API_AUDIO_CUSTOMER_SIF_I                = 0x03,         ///< Audio standard I
591     API_AUDIO_CUSTOMER_SIF_DK               = 0x04,         ///< Audio standard DK
592     API_AUDIO_CUSTOMER_SIF_DK1_A2           = 0x05,         ///< Audio standard DK1 A2
593     API_AUDIO_CUSTOMER_SIF_DK2_A2           = 0x06,         ///< Audio standard DK2 A2
594     API_AUDIO_CUSTOMER_SIF_DK3_A2           = 0x07,         ///< Audio standard DK3 A2
595     API_AUDIO_CUSTOMER_SIF_DK_NICAM         = 0x08,         ///< Audio standard DK NICAM
596     API_AUDIO_CUSTOMER_SIF_L                = 0x09,         ///< Audio standard L
597     API_AUDIO_CUSTOMER_SIF_M                = 0x0A,         ///< Audio standard M
598     API_AUDIO_CUSTOMER_SIF_M_BTSC           = 0x0B,         ///< Audio standard M BTSC
599     API_AUDIO_CUSTOMER_SIF_M_A2             = 0x0C,         ///< Audio standard M A2
600     API_AUDIO_CUSTOMER_SIF_M_EIA_J          = 0x0D,         ///< Audio standard M EIA J
601     API_AUDIO_CUSTOMER_SIF_NOTSTANDARD      = 0x0F          ///< Not Audio standard
602 } API_AUDIO_CUSTOMER_SIF_STANDARD;
603 
604 typedef enum
605 {
606     API_AUDIO_CUSTOMER_SIF_MODE_SET_INVALID             =     -1,
607     API_AUDIO_CUSTOMER_SIF_SET_PAL_MONO                 =   0x00,   // PAL Mono
608     API_AUDIO_CUSTOMER_SIF_SET_PAL_MONO_FORCED          =   0x01,   // PAL Mono Force Mono
609     API_AUDIO_CUSTOMER_SIF_SET_PAL_STEREO               =   0x02,   // PAL Stereo
610     API_AUDIO_CUSTOMER_SIF_SET_PAL_STEREO_FORCED        =   0x03,   // PAL Stereo Force Mono
611     API_AUDIO_CUSTOMER_SIF_SET_PAL_DUALI                =   0x04,   // PAL Dual I
612     API_AUDIO_CUSTOMER_SIF_SET_PAL_DUALII               =   0x05,   // PAL Dual II
613     API_AUDIO_CUSTOMER_SIF_SET_PAL_DUALI_II             =   0x06,   // PAL Dual I+II
614     API_AUDIO_CUSTOMER_SIF_SET_PAL_NICAM_MONO           =   0x07,   // PAL NICAM Mono
615     API_AUDIO_CUSTOMER_SIF_SET_PAL_NICAM_MONO_FORCED    =   0x08,   // PAL NICAM Mono Force Mono
616     API_AUDIO_CUSTOMER_SIF_SET_PAL_NICAM_STEREO         =   0x09,   // PAL NICAM Stereo
617     API_AUDIO_CUSTOMER_SIF_SET_PAL_NICAM_STEREO_FORCED  =   0x0A,   // PAL NICAM Stereo Force Mono
618     API_AUDIO_CUSTOMER_SIF_SET_PAL_NICAM_DUALI          =   0x0B,   // PAL NICAM Dual I
619     API_AUDIO_CUSTOMER_SIF_SET_PAL_NICAM_DUALII         =   0x0C,   // PAL NICAM Dual II
620     API_AUDIO_CUSTOMER_SIF_SET_PAL_NICAM_DUALI_II       =   0x0D,   // PAL NICAM Dual I+II
621     API_AUDIO_CUSTOMER_SIF_SET_PAL_NICAM_DUAL_FORCED    =   0x0E,   // PAL NICAM Dual Forced Mono(Not Supported)
622     API_AUDIO_CUSTOMER_SIF_SET_PAL_UNKNOWN              =   0x0F,   // PAL Unkown State
623     API_AUDIO_CUSTOMER_SIF_SET_NTSC_A2_MONO             =   0x10,   // NTSC(A2) Mono
624     API_AUDIO_CUSTOMER_SIF_SET_NTSC_A2_STEREO           =   0x11,   // NTSC(A2) Stereo
625     API_AUDIO_CUSTOMER_SIF_SET_NTSC_A2_SAP              =   0x12,   // NTSC(A2) SAP
626     API_AUDIO_CUSTOMER_SIF_SET_NTSC_A2_UNKNOWN          =   0x13,   // NTSC(A2) Unkown State
627     API_AUDIO_CUSTOMER_SIF_SET_NTSC_BTSC_MONO           =   0x14,   // NTSC(BTSC) Mono
628     API_AUDIO_CUSTOMER_SIF_SET_NTSC_BTSC_STEREO         =   0x15,   // NTSC(BTSC) Stereo
629     API_AUDIO_CUSTOMER_SIF_SET_NTSC_BTSC_SAP_MONO       =   0x16,   // NTSC(BTSC) SAP Mono
630     API_AUDIO_CUSTOMER_SIF_SET_NTSC_BTSC_SAP_STEREO     =   0x17,   // NTSC(BTSC) SAP Stereo
631     API_AUDIO_CUSTOMER_SIF_SET_NTSC_BTSC_UNKNOWN        =   0x18,   // NTSC(BTSC) Unkown State
632 } API_AUDIO_CUSTOMER_SIF_MODE_SET;
633 
634 typedef enum
635 {
636     API_AUDIO_CUSTOMER_SIF_HHIDEV_FILTER_BW1        = 0x10, // 220kHz~315kHz
637     API_AUDIO_CUSTOMER_SIF_HHIDEV_FILTER_BW2        = 0x20, // 320kHz~415kHz
638     API_AUDIO_CUSTOMER_SIF_HHIDEV_FILTER_BW3        = 0x30, // 400kHz~495kHz
639 } API_AUDIO_CUSTOMER_SIF_HIDEV_BW;
640 
641 ///< Audio mode type
642 typedef enum
643 {
644     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_INVALID        = 0x00,           ///< Audio Mode Invalid
645     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_MONO           = 0x01,           ///< Audio Mode MONO
646     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_FORCED_MONO    = 0x02,           ///< Audio Mode Forced MONO
647     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_G_STEREO       = 0x03,           ///< Audio Mode G Stereo
648     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_K_STEREO       = 0x04,           ///< Audio Mode  K Stereo
649     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_MONO_SAP       = 0x05,           ///< Audio Mode MONO SAP
650     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_STEREO_SAP     = 0x06,           ///< Audio Mode Stereo SAP
651     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_DUAL_A         = 0x07,           ///< Audio Mode Dual A
652     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_DUAL_B         = 0x08,           ///< Audio Mode Dual B
653     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_DUAL_AB        = 0x09,           ///< Audio Mode Dual AB
654     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_NICAM_MONO     = 0x0A,           ///< Audio Mode NICAM MONO
655     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_NICAM_STEREO   = 0x0B,           ///< Audio Mode NICAM Stereo
656     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_NICAM_DUAL_A   = 0x0C,           ///< Audio Mode NICAM DUAL A
657     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_NICAM_DUAL_B   = 0x0D,           ///< Audio Mode NICAM DUAL B
658     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_NICAM_DUAL_AB  = 0x0E,           ///< Audio Mode NICAM DUAL AB
659     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_HIDEV_MONO     = 0x0F,           ///< Audio Mode HIDEV MONO
660     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_LEFT_LEFT      = 0x10,           ///< Audio Mode Left left
661     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_RIGHT_RIGHT    = 0x11,           ///< Audio Mode right right
662     API_AUDIO_CUSTOMER_SIF_AUDIOMODE_LEFT_RIGHT     = 0x12            ///< Audio Mode left right
663 } API_AUDIO_CUSTOMER_SIF_AUDIOMODE_TYPE;
664 
665 ///< Threshold table structure
666 typedef struct
667 {
668     MS_U8  HiByteValue;                 ///< Threshold high-byte
669     MS_U8  LowByteValue;                ///< Threshold low-byte
670 } API_AUDIO_CUSTOMER_SIF_THR_TBL_TYPE;
671 
672 typedef enum
673 {
674     API_AUDIO_CUSTOMER_SIF_PAL_MONO,
675     API_AUDIO_CUSTOMER_SIF_PAL_HIDEV,
676     API_AUDIO_CUSTOMER_SIF_PAL_A2,
677     API_AUDIO_CUSTOMER_SIF_PAL_NICAM
678 }API_AUDIO_CUSTOMER_SIF_PAL_TYPE;
679 
680 ///< ATV SIF Command
681 typedef enum
682 {
683     API_AUDIO_CUSTOMER_SIF_CMD_SET_STOP                  = 0x00,
684     API_AUDIO_CUSTOMER_SIF_CMD_SET_PLAY                  = 0x01,
685     API_AUDIO_CUSTOMER_SIF_CMD_ENABLE_HIDEV              = 0x02,
686     API_AUDIO_CUSTOMER_SIF_CMD_SET_HIDEV_FILTER_BW_LEVEL = 0x03,
687     API_AUDIO_CUSTOMER_SIF_CMD_RESET_FC_TRACKING         = 0x04,
688     API_AUDIO_CUSTOMER_SIF_CMD_ENABLE_FC_TRACKING        = 0x05,
689     API_AUDIO_CUSTOMER_SIF_CMD_SET_ADC_FROM_VIF_PATH     = 0x06,
690     API_AUDIO_CUSTOMER_SIF_CMD_ENABLE_AUTO_MUTE          = 0x07,
691     API_AUDIO_CUSTOMER_SIF_CMD_ENABLE_BEEPER_FUNCTION    = 0x08,
692     API_AUDIO_CUSTOMER_SIF_CMD_SET_BEEPER_TONE           = 0x09,
693     API_AUDIO_CUSTOMER_SIF_CMD_ENABLE_AGC                = 0x0A,
694     API_AUDIO_CUSTOMER_SIF_CMD_RESET_AGC                 = 0x0B,
695     API_AUDIO_CUSTOMER_SIF_STANDARD_RESET                = 0x0C,
696     API_AUDIO_CUSTOMER_SIF_CMD_DETECT_MAIN_STD_ONLY      = 0x0D,
697     API_AUDIO_CUSTOMER_SIF_CMD_ENABLE_AUTO_SOUNDMODE     = 0x0E,
698     API_AUDIO_CUSTOMER_SIF_CMD_FMTX_SET_PREEMP           = 0x0F,
699     API_AUDIO_CUSTOMER_SIF_CMD_SET_ENC_CMD               = 0x10,
700     API_AUDIO_CUSTOMER_SIF_CMD_SET_ENC_Input_attenuation = 0x11,
701     API_AUDIO_CUSTOMER_SIF_CMD_SET_ENC_Output_scaling    = 0x12,
702     API_AUDIO_CUSTOMER_SIF_CMD_SET_BTSC_Enc_M_Gain       = 0x13,
703     API_AUDIO_CUSTOMER_SIF_CMD_SET_BTSC_Enc_D_Gain       = 0x14,
704     API_AUDIO_CUSTOMER_SIF_CMD_SET_BTSC_Enc_SAP_Gain     = 0x15,
705     API_AUDIO_CUSTOMER_SIF_CMD2_ADC_VIA_VIF_PIN          = 0x01
706 } API_AUDIO_CUSTOMER_SIF_CmdType;
707 
708 ///< sif carrier status define
709 typedef enum
710 {
711     // Never change the value of enumeration. Because each bit has weight.
712     API_AUDIO_CUSTOMER_SIF_E_STATE_AUDIO_NO_CARRIER         = 0x00, ///< No carrier detect
713     API_AUDIO_CUSTOMER_SIF_E_STATE_AUDIO_PRIMARY_CARRIER    = 0x01, ///< Carrier 1 exist
714     API_AUDIO_CUSTOMER_SIF_E_STATE_AUDIO_SECONDARY_CARRIER  = 0x02, ///< Carrier 2 exist
715     API_AUDIO_CUSTOMER_SIF_E_STATE_AUDIO_NICAM              = 0x04, ///< Nicam lock state
716     API_AUDIO_CUSTOMER_SIF_E_STATE_AUDIO_STEREO             = 0x08, ///< A2 Stereo exist
717     API_AUDIO_CUSTOMER_SIF_E_STATE_AUDIO_BILINGUAL          = 0x10, ///< A2 Dual exist
718     API_AUDIO_CUSTOMER_SIF_E_STATE_AUDIO_PILOT              = 0x20, ///< A2 Pilot exist
719     API_AUDIO_CUSTOMER_SIF_E_STATE_AUDIO_DK2                = 0x40, ///< Sound standard is DK2
720     API_AUDIO_CUSTOMER_SIF_E_STATE_AUDIO_DK3                = 0x80  ///< Sound standard is DK3
721 } API_AUDIO_CUSTOMER_SIF_AUDIOSTATUS;
722 
723 //======SIF Gain Type========
724 typedef enum
725 {
726     API_AUDIO_CUSTOMER_SIF_PRESCALE_STEP_ONE_DB         = 0x04,
727     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_A2_FM           = 0x00,
728     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_NICAM           = 0x01,
729     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_AM              = 0x02,
730     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_HIDEV           = 0x03,
731     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_FM_M            = 0x04,
732     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_HIDEV_M         = 0x05,
733 
734     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_BTSC            = 0x00,
735     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_BTSC_MONO       = 0x01,
736     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_BTSC_STEREO     = 0x02,
737     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_BTSC_SAP        = 0x03,
738 
739     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_FM_RADIO        = 0x00,
740     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_FM_RADIO_MONO   = 0x01,
741     API_AUDIO_CUSTOMER_SIF_SET_PRESCALE_FM_RADIO_STEREO = 0x02
742 
743 }API_AUDIO_CUSTOMER_SIF_GAIN_TYPE;
744 
745 //-------------------------------------------------------------------------------------------------------------------------------------
746 /* Decoder */
747 //-------------------------------------------------------------------------------------------------------------------------------------
748 typedef enum
749 {
750     API_AUDIO_CUSTOMER_DOLBY_DRC_MODE_INVALID = -1,
751     API_AUDIO_CUSTOMER_DOLBY_LINE_MODE,
752     API_AUDIO_CUSTOMER_DOLBY_RF_MODE,
753 } API_AUDIO_CUSTOMER_DOLBY_DRC_MODE;
754 
755 typedef enum
756 {
757     API_AUDIO_CUSTOMER_DOWNMIX_MODE_INVALID = -1,
758     API_AUDIO_CUSTOMER_LTRT_MODE,
759     API_AUDIO_CUSTOMER_LORO_MODE,
760 } API_AUDIO_CUSTOMER_DOWNMIX_MODE;
761 
762 typedef enum
763 {
764     API_AUDIO_CUSTOMER_DUALMONO_MODE_INVALID = -1,
765     API_AUDIO_CUSTOMER_DUALMONO_MODE_LR,
766     API_AUDIO_CUSTOMER_DUALMONO_MODE_LL,
767     API_AUDIO_CUSTOMER_DUALMONO_MODE_RR,
768     API_AUDIO_CUSTOMER_DUALMONO_MODE_MIX,
769 } API_AUDIO_CUSTOMER_DUALMONO_MODE;
770 
771 typedef enum
772 {
773     API_AUDIO_CUSTOMER_IN_PORT_INVALID  = -1,
774     API_AUDIO_CUSTOMER_IN_PORT_NONE     =  0,
775     API_AUDIO_CUSTOMER_IN_PORT_TP       =  1,   // From TPA Stream Input
776     API_AUDIO_CUSTOMER_IN_PORT_SPDIF    =  2,   // From SERIAL INTERFACE 0
777     API_AUDIO_CUSTOMER_IN_PORT_SIF      =  3,   // From Analog Front End (SIF)
778     API_AUDIO_CUSTOMER_IN_PORT_ADC      =  4,   // Fron ADC Input
779     API_AUDIO_CUSTOMER_IN_PORT_HDMI     =  5,   // From HDMI
780     API_AUDIO_CUSTOMER_IN_PORT_I2S      =  6,   // From I2S
781     API_AUDIO_CUSTOMER_IN_PORT_SYSTEM   =  7,   // From System
782 } API_AUDIO_CUSTOMER_IN_PORT;
783 
784 typedef enum
785 {
786     API_AUDIO_CUSTOMER_SAMPLING_FREQ_INVALID    =       -1,
787     API_AUDIO_CUSTOMER_SAMPLING_FREQ_NONE       =        0,
788     API_AUDIO_CUSTOMER_SAMPLING_FREQ_4_KHZ      =     4000,
789     API_AUDIO_CUSTOMER_SAMPLING_FREQ_8_KHZ      =     8000,
790     API_AUDIO_CUSTOMER_SAMPLING_FREQ_11_025KHZ  =    11025,
791     API_AUDIO_CUSTOMER_SAMPLING_FREQ_12_KHZ     =    12000,
792     API_AUDIO_CUSTOMER_SAMPLING_FREQ_16_KHZ     =    16000,
793     API_AUDIO_CUSTOMER_SAMPLING_FREQ_22_05KHZ   =    22050,
794     API_AUDIO_CUSTOMER_SAMPLING_FREQ_24_KHZ     =    24000,
795     API_AUDIO_CUSTOMER_SAMPLING_FREQ_32_KHZ     =    32000,
796     API_AUDIO_CUSTOMER_SAMPLING_FREQ_44_1KHZ    =    44100,
797     API_AUDIO_CUSTOMER_SAMPLING_FREQ_48_KHZ     =    48000,
798     API_AUDIO_CUSTOMER_SAMPLING_FREQ_64_KHZ     =    64000,
799     API_AUDIO_CUSTOMER_SAMPLING_FREQ_88_2KHZ    =    88200,
800     API_AUDIO_CUSTOMER_SAMPLING_FREQ_96_KHZ     =    96000,
801     API_AUDIO_CUSTOMER_SAMPLING_FREQ_128_KHZ    =   128000,
802     API_AUDIO_CUSTOMER_SAMPLING_FREQ_176_4KHZ   =   176400,
803     API_AUDIO_CUSTOMER_SAMPLING_FREQ_192_KHZ    =   192000,
804     API_AUDIO_CUSTOMER_SAMPLING_FREQ_768_KHZ    =   768000,
805     API_AUDIO_CUSTOMER_SAMPLING_FREQ_DEFAULT    =   999000,
806 } API_AUDIO_CUSTOMER_SAMPLING_FREQ;
807 
808 typedef enum
809 {
810     API_AUDIO_CUSTOMER_HDMI_INDEX_INVALID   = -1,
811     API_AUDIO_CUSTOMER_HDMI0                = 0,
812     API_AUDIO_CUSTOMER_HDMI1                = 1,
813     API_AUDIO_CUSTOMER_HDMI2                = 2,
814     API_AUDIO_CUSTOMER_HDMI3                = 3,
815     API_AUDIO_CUSTOMER_HDMI_SWITCH          = 4,
816     API_AUDIO_CUSTOMER_HDMI_MAX             = API_AUDIO_CUSTOMER_HDMI_SWITCH + 1,
817 } API_AUDIO_CUSTOMER_HDMI_INDEX;
818 
819 typedef enum
820 {
821     API_AUDIO_CUSTOMER_CHANNEL_MODE_INVALID             = -1,
822     API_AUDIO_CUSTOMER_CH_MODE_MONO                     = 0,
823     API_AUDIO_CUSTOMER_CH_MODE_JOINT_STEREO             = 1,
824     API_AUDIO_CUSTOMER_CH_MODE_STEREO                   = 2,
825     API_AUDIO_CUSTOMER_CH_MODE_DUAL_MONO                = 3,
826     API_AUDIO_CUSTOMER_CH_MODE_MULTI                    = 4,
827     API_AUDIO_CUSTOMER_CH_MODE_UNKNOWN                  = 5,
828     API_AUDIO_CUSTOMER_CH_MODE_2_1_FL_FR_LFE            = 6,
829     API_AUDIO_CUSTOMER_CH_MODE_3_0_FL_FR_RC             = 7,
830     API_AUDIO_CUSTOMER_CH_MODE_3_1_FL_FR_RC_LFE         = 8,
831     API_AUDIO_CUSTOMER_CH_MODE_4_0_FL_FR_RL_RR          = 9,
832     API_AUDIO_CUSTOMER_CH_MODE_4_1_FL_FR_RL_RR_LFE      = 10,
833     API_AUDIO_CUSTOMER_CH_MODE_5_0_FL_FR_FC_RL_RR       = 11,
834     API_AUDIO_CUSTOMER_CH_MODE_5_1_FL_FR_FC_RL_RR_LFE   = 12,
835 } API_AUDIO_CUSTOMER_CHANNEL_MODE;
836 
837 typedef struct
838 {
839     MS_U8 version;              /* AAC = 0x0, HE-AACv1 = 0x1, HE-AACv2 = 0x2 */
840     MS_U8 transmissionformat;   /* LOAS/LATM = 0x0, ADTS = 0x1*/
841     MS_U8 channelNum;
842     API_AUDIO_CUSTOMER_CHANNEL_MODE channeMode;
843 } API_AUDIO_CUSTOMER_HEAAC_ES_INFO;
844 
845 typedef struct
846 {
847     MS_U8 bitRate;
848     MS_U8 sampleRate;
849     MS_U8 layer;
850     MS_U8 channelNum;
851     API_AUDIO_CUSTOMER_CHANNEL_MODE channeMode;
852 } API_AUDIO_CUSTOMER_MPEG_ES_INFO;
853 
854 typedef struct
855 {
856     MS_U8 bitRate;
857     MS_U8 sampleRate;
858     MS_U8 channelNum;
859     MS_U8 EAC3; /* AC3 0x0, EAC3 0x1*/
860     API_AUDIO_CUSTOMER_CHANNEL_MODE channeMode;
861 } API_AUDIO_CUSTOMER_AC3_ES_INFO;
862 
863 //need to be consistent with XPCM_TYPE of drvAudio_if.h
864 typedef enum
865 {
866     API_AUDIO_CUSTOMER_XPCM_LPCM            = 1,
867     API_AUDIO_CUSTOMER_XPCM_MS_ADPCM        = 2,
868     API_AUDIO_CUSTOMER_XPCM_G711_A_LAW      = 6,
869     API_AUDIO_CUSTOMER_XPCM_G711_u_LAW      = 7,
870     API_AUDIO_CUSTOMER_XPCM_DVD_LPCM        = 8,
871     API_AUDIO_CUSTOMER_XPCM_PRIVATE1_LPCM   = 9,
872     API_AUDIO_CUSTOMER_XPCM_IMA_ADPCM       = 17,
873     API_AUDIO_CUSTOMER_XPCM_IMA_ADPCM_APPLE = 18, // apple IMA4
874 } API_AUDIO_CUSTOMER_XPCM_TYPE;
875 
876 //need to be consistent with Audio_XPCM_Param of drvAudio_if.h
877 typedef struct
878 {
879     API_AUDIO_CUSTOMER_XPCM_TYPE audioType;
880     MS_U32 sampleRate;
881     MS_U16 blockSize;
882     MS_U16 samplePerBlock;
883     MS_U8  channels;
884     MS_U8  bitsPerSample;
885     MS_U32 dwchannelMask;   //  #define SPEAKER_FRONT_LEFT             0x1
886                             //  #define SPEAKER_FRONT_RIGHT            0x2
887                             //  #define SPEAKER_FRONT_CENTER           0x4
888                             //  #define SPEAKER_LOW_FREQUENCY          0x8
889                             //  #define SPEAKER_BACK_LEFT              0x10
890                             //  #define SPEAKER_BACK_RIGHT             0x20 // <--- only support to here
891                             //  #define SPEAKER_FRONT_LEFT_OF_CENTER   0x40
892                             //  #define SPEAKER_FRONT_RIGHT_OF_CENTER  0x80
893                             //  #define SPEAKER_BACK_CENTER            0x100
894                             //  #define SPEAKER_SIDE_LEFT              0x200
895                             //  #define SPEAKER_SIDE_RIGHT             0x400
896                             //  #define SPEAKER_TOP_CENTER             0x800
897                             //  #define SPEAKER_TOP_FRONT_LEFT         0x1000
898                             //  #define SPEAKER_TOP_FRONT_CENTER       0x2000
899                             //  #define SPEAKER_TOP_FRONT_RIGHT        0x4000
900                             //  #define SPEAKER_TOP_BACK_LEFT          0x8000
901                             //  #define SPEAKER_TOP_BACK_CENTER        0x10000
902                             //  #define SPEAKER_TOP_BACK_RIGHT         0x20000
903                             //  #define SPEAKER_RESERVED               0x80000000
904 } API_AUDIO_CUSTOMER_XPCM_PARAM;
905 
906 //need to be consistent with Audio_COOK_Param of drvAudio_if.h
907 typedef struct
908 {
909     #define COOK_MAX_NUM_CODECS 5
910     MS_U16 Channels[COOK_MAX_NUM_CODECS];
911     MS_U16 Regions[COOK_MAX_NUM_CODECS];
912     MS_U16 cplStart[COOK_MAX_NUM_CODECS];
913     MS_U16 cplQbits[COOK_MAX_NUM_CODECS];
914     MS_U16 FrameSize[COOK_MAX_NUM_CODECS];
915     MS_U16 mNumCodecs;
916     MS_U16 mSamples;
917     MS_U16 mSampleRate;
918 } API_AUDIO_CUSTOMER_COOK_PARM;
919 
920 typedef enum
921 {
922     API_AUDIO_CUSTOMER_TRICK_MODE_INVALID       = -1,
923     API_AUDIO_CUSTOMER_TRICK_NONE               = 0,    ///<  rate : None, TP Live Play
924     API_AUDIO_CUSTOMER_TRICK_PAUSE              = 1,    ///<  rate : Pause, DVR Play
925     API_AUDIO_CUSTOMER_TRICK_NORMAL_PLAY        = 2,    ///<  rate : Normal Play, DVR Play
926     API_AUDIO_CUSTOMER_TRICK_SLOW_MOTION_0P25X  = 3,    ///<  rate : 0.25 Play
927     API_AUDIO_CUSTOMER_TRICK_SLOW_MOTION_0P50X  = 4,    ///<  rate : 0.50 Play
928     API_AUDIO_CUSTOMER_TRICK_SLOW_MOTION_0P80X  = 5,    ///<  rate : 0.80 Play
929     API_AUDIO_CUSTOMER_TRICK_FAST_FORWARD_1P20X = 6,    ///<  rate : 1.20 Play
930     API_AUDIO_CUSTOMER_TRICK_FAST_FORWARD_1P50X = 7,    ///<  rate : 1.50 Play
931     API_AUDIO_CUSTOMER_TRICK_FAST_FORWARD_2P00X = 8,    ///<  rate : 2.00 Play
932     API_AUDIO_CUSTOMER_TRICK_ONE_FRAME_DECODE   = 9,    ///<  rate : one frame decode
933 } API_AUDIO_CUSTOMER_TRICK_MODE;
934 
935 //need to be consistent with AUDIO_AAC_TYPE of drvAudio_if.h
936 typedef enum
937 {
938     API_AUDIO_CUSTOMER_AAC_TYPE_GENERIC_AAC,
939     API_AUDIO_CUSTOMER_AAC_TYPE_GENERIC_HEAACv1,
940     API_AUDIO_CUSTOMER_AAC_TYPE_GENERIC_HEAACv2,
941     API_AUDIO_CUSTOMER_AAC_TYPE_DOLBY_AAC,
942     API_AUDIO_CUSTOMER_AAC_TYPE_DOLBY_HEAACv1,
943     API_AUDIO_CUSTOMER_AAC_TYPE_DOLBY_HEAACv2,
944 } API_AUDIO_CUSTOMER_AAC_TYPE;
945 
946 //-------------------------------------------------------------------------------------------------------------------------------------
947 /* Common Decoder */
948 //-------------------------------------------------------------------------------------------------------------------------------------
949 //need to be consistent with AUDIO_DECODER_INFO_VERSION of drvAudio_if.h
950 #define API_AUDIO_CUSTOMER_COMMON_DECODER_INFO_VERSION 0x00010001
951 
952 //need to be consistent with AUDIO_DECODER_Command_t of drvAudio_if.h
953 typedef struct
954 {
955     MS_U8  CmdName[64];
956     MS_U32 CmdLen;
957 } API_AUDIO_CUSTOMER_COMMON_DECODER_COMMAND;
958 
959 //need to be consistent with AUDIO_DECODER_SOURCE_TYPE of drvAudio_if.h
960 typedef enum
961 {
962     API_AUDIO_CUSTOMER_COMMON_DECODER_SOURCE_INVALID = -1,
963     API_AUDIO_CUSTOMER_COMMON_DECODER_SOURCE_NONE,
964     API_AUDIO_CUSTOMER_COMMON_DECODER_SOURCE_DTV,
965     API_AUDIO_CUSTOMER_COMMON_DECODER_SOURCE_ATV,
966     API_AUDIO_CUSTOMER_COMMON_DECODER_SOURCE_HDMI,
967     API_AUDIO_CUSTOMER_COMMON_DECODER_SOURCE_ADC,
968     API_AUDIO_CUSTOMER_COMMON_DECODER_SOURCE_MM,
969     API_AUDIO_CUSTOMER_COMMON_DECODER_SOURCE_SPDIF,
970 } API_AUDIO_CUSTOMER_COMMON_DECODER_SOURCE;
971 
972 //need to be consistent with AUDIO_DECODER_PLAY_MODE of drvAudio_if.h
973 typedef enum
974 {
975     API_AUDIO_CUSTOMER_COMMON_DECODER_PLAY_MODE_INVALID = -1,
976     API_AUDIO_CUSTOMER_COMMON_DECODER_PLAY_MODE_FRAME_HAND_SHAKE,   // Gstreamer , OMX
977     API_AUDIO_CUSTOMER_COMMON_DECODER_PLAY_MODE_FILE_TS,            // Send data to HW demux
978     API_AUDIO_CUSTOMER_COMMON_DECODER_PLAY_MODE_ES_WITH_TS,         // MM new mode
979     API_AUDIO_CUSTOMER_COMMON_DECODER_PLAY_MODE_ES,                 // MM old mode
980     API_AUDIO_CUSTOMER_COMMON_DECODER_PLAY_MODE_DTV,                //
981     API_AUDIO_CUSTOMER_COMMON_DECODER_PLAY_MODE_OTHER,              // HDMI
982 } API_AUDIO_CUSTOMER_COMMON_DECODER_PLAY_MODE;
983 
984 //need to be consistent with AUDIO_DECODER_AV_SYNC_MODE of drvAudio_if.h
985 typedef enum
986 {
987     API_AUDIO_CUSTOMER_COMMON_DECODER_SYNC_MODE_INVALID = -1,
988     API_AUDIO_CUSTOMER_COMMON_DECODER_SYNC_MODE_AV_SYNC,
989     API_AUDIO_CUSTOMER_COMMON_DECODER_SYNC_MODE_FREE_RUN,
990 } API_AUDIO_CUSTOMER_COMMON_DECODER_SYNC_MODE;
991 
992 //need to be consistent with AUDIO_DECODER_CODECTYPE of drvAudio_if.h
993 typedef enum
994 {
995     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_INVALID = -1,
996     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_PCM,
997     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_XPCM,
998     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_MPEG,
999     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_MP3,
1000     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_AC3,
1001     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_AC3P,
1002     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_AAC_LC,
1003     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_HEAAC_V1,
1004     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_HEAAC_V2,
1005     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_DOLBYPULSE,
1006     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_WMA,
1007     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_WMAPRO,
1008     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_RA8,
1009     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_DTS,
1010     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_FLAC,
1011     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_VORBIS,
1012     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_AMR_NB,
1013     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_AMR_WB,
1014     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_DRA,
1015     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_DTSLBR,
1016     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_DTSXLL,
1017     API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE_NULL = 0xFFFFFFFF
1018 } API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE;
1019 
1020 //need to be consistent with Audio_Ringbuf of drvAudio_if.h
1021 typedef struct
1022 {
1023     MS_U32 u32BufStartAddr;
1024     MS_U32 u32BufEndAddr;
1025     MS_U32 u32BufWrPtr;
1026     MS_U32 u32BufRdPtr;
1027     MS_U32 u32BufTotalSize;
1028     MS_U32 u32BufOffset;
1029     MS_U32 u32Size;
1030     MS_U32 u32CurLevel;
1031 } API_AUDIO_CUSTOMER_COMMON_DECODER_RINGBUFFER;
1032 
1033 //need to be consistent with AUDIO_DECODER_MM_Info_t of drvAudio_if.h
1034 typedef struct
1035 {
1036     API_AUDIO_CUSTOMER_COMMON_DECODER_RINGBUFFER  EsCtrl;  /* ES  buf control */
1037     API_AUDIO_CUSTOMER_COMMON_DECODER_RINGBUFFER  PcmCtrl; /* PCM buf control */
1038 
1039     /*Input ES related*/
1040     MS_U32 u32NeedDecodeFrmCnt;  /* Need decode frame count */
1041     MS_U64 u64TimeStamp;         /* Time stamp */
1042 
1043     /*Output PCM related*/
1044     MS_U32 u32OutputFrameCnt;    /* Decoder decode done frame count */
1045     MS_U32 u32OutputFrameCntAck; /* Inform Decoder output frame count */
1046 } API_AUDIO_CUSTOMER_COMMON_DECODER_MM_INFO;
1047 
1048 //need to be consistent with AUDIO_DECODER_Info_t of drvAudio_if.h
1049 typedef struct
1050 {
1051     char u8Name[32];            /* The DECODER name requested (only 32 bytes, if change this length, must change u8Name of API_AUDIO_CUSTOMER_COMMON_DECODER_COMMAND as well!) */
1052     MS_U32 u32StructVersion;    /* version number of this data structure */
1053     MS_U32 u32StructSize;       /* size of this data structure */
1054 
1055     MS_U32 u32Connect;          /* current connect status*/
1056     MS_U32 u32CodecType;        /* Set Decoder format ex, AC3 MP3 AAC DTS etc. please refer to API_AUDIO_CUSTOMER_COMMON_DECODER_CODECTYPE */
1057     MS_U32 u32SourceType;       /* Set Audio Source, ex, DTV / HDMI /MM etc. */
1058     MS_U32 u32OutputGroup;      /* Set Decoder Output Group */
1059     MS_U32 u32PlayMode;         /* Decoder Playback mode, please refer to API_AUDIO_CUSTOMER_COMMON_DECODER_PLAY_MODE */
1060     MS_U32 u32AfifoSource;      /* Set AUDIO FIFO */
1061     MS_U32 u32AdEnable;         /* Enable AD */
1062     MS_U32 u32AvSyncMode;       /* DECODER AV SYNC MODE, please refer to API_AUDIO_CUSTOMER_COMMON_DECODER_SYNC_MODE */
1063 
1064     MS_U32 u32MadBaseAddr;
1065     MS_U32 u32Endian;
1066     MS_U32 u32Channels;
1067     MS_U32 u32BitsPerSample;
1068     MS_U32 u32SamplingRate;
1069     MS_U32 u32BitRate;
1070     MS_U32 u32DecodeFrameCnt;
1071 
1072     API_AUDIO_CUSTOMER_COMMON_DECODER_MM_INFO tDecoderMMInfo;
1073     MS_U32 *pCodecExtraData;        /* Extra data pointer if necessary */
1074     MS_U32 u32CodecExtraDataSize;   /* Extra data size */
1075 } API_AUDIO_CUSTOMER_COMMON_DECODER_INFO;
1076 
1077 //-------------------------------------------------------------------------------------------------------------------------------------
1078 /* Common Cmd */
1079 //-------------------------------------------------------------------------------------------------------------------------------------
1080 //need to be consistent with AUDIO_COMMON_CMD_t of drvAudio_if.h
1081 typedef struct
1082 {
1083     MS_U8 u8StrCmd[64];
1084     void *pData;
1085 } API_AUDIO_CUSTOMER_COMMON_CMD;
1086 
1087 //need to be consistent with AUDIO_DATA_IO_INFO_t of drvAudio_if.h
1088 typedef struct
1089 {
1090     void *pData;
1091     MS_U32 u32Size;
1092 } API_AUDIO_CUSTOMER_DATA_IO_INFO;
1093 
1094 //need to be consistent with AUDIO_SPDIF_PLAYBACK_CONFIG_t of drvAudio_if.h
1095 typedef struct
1096 {
1097     MS_U32 u32StructVersion; //AUDIO_SPDIF_PLAYBACK_CONFIG_VERSION
1098     MS_U32 u32StructSize;    //sizeof(AUDIO_SPDIF_PLAYBACK_CONFIG_t)
1099     MS_U8 u8PreanbleFlag;
1100     MS_U32 u32SampleRate;
1101 } API_AUDIO_CUSTOMER_SPDIF_PLAYBACK_CONFIG;
1102 
1103 //need to be consistent with AUDIO_SPDIF_PLAYBACK_CONFIG_VERSION of drvAudio_if.h
1104 #define API_AUDIO_CUSTOMER_SPDIF_PLAYBACK_CONFIG_VERSION    0x00010001 //[31:16]major version; [15:0]minor version
1105 
1106 //-------------------------------------------------------------------------------------------------------------------------------------
1107 /* Common */
1108 //-------------------------------------------------------------------------------------------------------------------------------------
1109 typedef enum
1110 {
1111     API_AUDIO_CUSTOMER_PARAM_TYPE_INVALID                       = -1,
1112 
1113     //--------------------------------------------------------------------------------------
1114     // Decoder (API_AUDIO_CUSTOMER_"ADEC"_PARAM_XXXXXXXX)
1115     //--------------------------------------------------------------------------------------
1116     //---MPEG---
1117     API_AUDIO_CUSTOMER_ADEC_PARAM_MPEG_SOUND_MODE               = 0,
1118 
1119     //---Dolby AC3P---
1120     API_AUDIO_CUSTOMER_ADEC_PARAM_AC3P_DRC_MODE                 = 1,
1121     API_AUDIO_CUSTOMER_ADEC_PARAM_AC3P_DOWNMIX_MODE             = 2,
1122     API_AUDIO_CUSTOMER_ADEC_PARAM_AC3P_DOLBY_BULLETIN11         = 3,
1123     API_AUDIO_CUSTOMER_ADEC_PARAM_AC3P_HDMITX_BYPASS_ENABLE     = 4,
1124     API_AUDIO_CUSTOMER_ADEC_PARAM_AC3P_DRC_HIGHCUT_SCALE        = 5,
1125     API_AUDIO_CUSTOMER_ADEC_PARAM_AC3P_DRC_LOWBOOT_SCALE        = 6,
1126 
1127     //---AAC---
1128     API_AUDIO_CUSTOMER_ADEC_PARAM_AAC_DRC_MODE                  = 7,
1129     API_AUDIO_CUSTOMER_ADEC_PARAM_AAC_DOWNMIX_MODE              = 8,
1130 
1131     //---WMA---
1132     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_VERSION                   = 9,
1133     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_CHANNELS                  = 10,
1134     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_SAMPLERATE                = 11,
1135     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_BYTERATE                  = 12,
1136     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_BLOCKALIGN                = 13,
1137     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_ENCOPT                    = 14,
1138     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_PARSINGBYAPP              = 15,
1139     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_BITS_PER_SAMPLE           = 16,
1140     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_CHANNELMASK               = 17,
1141     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_DRC_PARAM_EXIST           = 18,
1142     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_DRC_RMS_AMP_REF           = 19,
1143     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_DRC_RMS_AMP_TARGET        = 20,
1144     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_DRC_PEAK_AMP_REF          = 21,
1145     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_DRC_PEAK_AMP_TARGET       = 22,
1146     API_AUDIO_CUSTOMER_ADEC_PARAM_WMA_MAX_PACKET_SIZE           = 23,
1147 
1148     //---XPCM---
1149     API_AUDIO_CUSTOMER_ADEC_PARAM_XPCM                          = 24,
1150 
1151     //---Underrun threshold in ms, Debounce Cnt---
1152     API_AUDIO_CUSTOMER_ADEC_PARAM_UNDERRUN_THRESHOLD_IN_MS      = 26,
1153     API_AUDIO_CUSTOMER_ADEC_PARAM_UNDERRUN_DEBOUNCE_CNT         = 27,
1154 
1155     //--------------------------------------------------------------------------------------
1156     // Common (API_AUDIO_CUSTOMER_"COMMON"_PARAM_XXXXXXXX)
1157     //--------------------------------------------------------------------------------------
1158     //---Audio Dump Info---
1159     API_AUDIO_CUSTOMER_COMMON_PARAM_DUMP_INFO_Off               = 25,
1160     API_AUDIO_CUSTOMER_COMMON_PARAM_DUMP_INFO_AVSYNC            = 28,
1161     API_AUDIO_CUSTOMER_COMMON_PARAM_DUMP_INFO_ADEC0             = 29,
1162     API_AUDIO_CUSTOMER_COMMON_PARAM_DUMP_INFO_IO_INFO           = 30,
1163     API_AUDIO_CUSTOMER_COMMON_PARAM_DUMP_INFO_MM_FILE_AVSYNC    = 31,
1164     API_AUDIO_CUSTOMER_COMMON_PARAM_DUMP_INFO_ALL               = 32,
1165     API_AUDIO_CUSTOMER_COMMON_PARAM_DUMP_INFO_AUTOTEST          = 33,
1166 
1167     //---Common Cmd---
1168     API_AUDIO_CUSTOMER_COMMON_PARAM_COMMON_CMD                  = 34,
1169 
1170     //---OMX---
1171     API_AUDIO_CUSTOMER_COMMON_PARAM_OMX_SPDIF_MODE              = 35,
1172     API_AUDIO_CUSTOMER_COMMON_PARAM_OMX_SPDIF_PLAY              = 36, //<--MAX is here!!!
1173 
1174     //---MAX---
1175     API_AUDIO_CUSTOMER_PARAM_MAX = API_AUDIO_CUSTOMER_COMMON_PARAM_OMX_SPDIF_PLAY + 1,
1176 } API_AUDIO_CUSTOMER_PARAM_TYPE;
1177 
1178 typedef enum
1179 {
1180     API_AUDIO_CUSTOMER_ADEC_INFO_TYPE_INVALID                       = -1,
1181 
1182     //--------------------------------------------------------------------------------------
1183     // Decoder (API_AUDIO_CUSTOMER_"ADEC"_INFO_XXXXXXXX)
1184     //--------------------------------------------------------------------------------------
1185     //---MPEG---
1186     API_AUDIO_CUSTOMER_ADEC_INFO_MPEG_SOUND_MODE                    = 0,
1187 
1188     //---Dolby AC3P---
1189     API_AUDIO_CUSTOMER_ADEC_INFO_AC3P_DRC_MODE                      = 1,
1190     API_AUDIO_CUSTOMER_ADEC_INFO_AC3P_DOWNMIX_MODE                  = 2,
1191     API_AUDIO_CUSTOMER_ADEC_INFO_AC3P_IS_ATMOS_STREAM               = 18,
1192 
1193     //---AAC---
1194     API_AUDIO_CUSTOMER_ADEC_INFO_AAC_DRC_MODE                       = 3,
1195     API_AUDIO_CUSTOMER_ADEC_INFO_AAC_DOWNMIX_MODE                   = 4,
1196     API_AUDIO_CUSTOMER_ADEC_INFO_AAC_TYPE                           = 23, //<--MAX is here!!!
1197 
1198     //---Decode Info---
1199     API_AUDIO_CUSTOMER_ADEC_INFO_SAMPLERATE                         = 9,
1200     API_AUDIO_CUSTOMER_ADEC_INFO_ACMODE                             = 10,
1201     API_AUDIO_CUSTOMER_ADEC_INFO_AVSYNC_STATE                       = 11,
1202 
1203     //--------------------------------------------------------------------------------------
1204     // Common (API_AUDIO_CUSTOMER_"COMMON"_INFO_XXXXXXXX)
1205     //--------------------------------------------------------------------------------------
1206     //---ES---
1207     API_AUDIO_CUSTOMER_COMMON_INFO_ES_BUFFER_BASE                   = 5,
1208     API_AUDIO_CUSTOMER_COMMON_INFO_ES_BUFFER_SIZE                   = 6,
1209 
1210     //---AD_ES (Audio description)---
1211     API_AUDIO_CUSTOMER_COMMON_INFO_AD_ES_BUFFER_BASE                = 14,
1212     API_AUDIO_CUSTOMER_COMMON_INFO_AD_ES_BUFFER_SIZE                = 15,
1213 
1214     //---PCM---
1215     API_AUDIO_CUSTOMER_COMMON_INFO_PCM_BUFFER_CURRENT_LEVEL         = 7,
1216     API_AUDIO_CUSTOMER_COMMON_INFO_PCM_BUFFER_CURRENT_LEVEL_IN_MS   = 12,
1217 
1218     //---PTS---
1219     API_AUDIO_CUSTOMER_COMMON_INFO_33BIT_PTS                        = 8,
1220 
1221     //---OK, ERR Frame Cnt, IS_MAD_LOCK---
1222     API_AUDIO_CUSTOMER_COMMON_INFO_OK_FRAME_CNT                     = 13,
1223     API_AUDIO_CUSTOMER_COMMON_INFO_ERR_FRAME_CNT                    = 16,
1224     API_AUDIO_CUSTOMER_COMMON_INFO_IS_MAD_LOCK                      = 21,
1225 
1226     //---Delay---
1227     API_AUDIO_CUSTOMER_COMMON_INFO_AUDIO_DELAY                      = 17,
1228     API_AUDIO_CUSTOMER_COMMON_INFO_SEDSP_MS12_DDE_DELAY             = 19,
1229     API_AUDIO_CUSTOMER_COMMON_INFO_SNDR2_MS12_DDPE_DELAY            = 20,
1230     API_AUDIO_CUSTOMER_COMMON_INFO_SNDR2_MS12_DAP_DELAY             = 22,
1231 
1232     //---MAX---
1233     API_AUDIO_CUSTOMER_INFO_MAX = API_AUDIO_CUSTOMER_ADEC_INFO_AAC_TYPE + 1,
1234 } API_AUDIO_CUSTOMER_INFO_TYPE;
1235 
1236 //-------------------------------------------------------------------------------------------------------------------------------------
1237 /* Customized patch */
1238 //-------------------------------------------------------------------------------------------------------------------------------------
1239 typedef enum
1240 {
1241     API_AUDIO_CUSTOMIZED_PATCH_PARAM_TYPE_INVALID = -1,
1242 
1243     //--------------------------------------------------------------------------------------
1244     // (API_AUDIO_"CUSTOMIZED_PATCH"_PARAM_XXXXXXXX), PARAM: Set
1245     //--------------------------------------------------------------------------------------
1246     //---ES Passthrough---
1247     API_AUDIO_CUSTOMIZED_PATCH_PARAM_ES_PASSTHROUGH_DELAY_SAMPLE                = 0,
1248     API_AUDIO_CUSTOMIZED_PATCH_PARAM_ES_PASSTHROUGH_PCM_SAMPLERATE              = 1,
1249     API_AUDIO_CUSTOMIZED_PATCH_PARAM_ES_PASSTHROUGH_HDMI_SAMPLERATE             = 2,
1250 
1251     //---PCM Capture set rptr---
1252     API_AUDIO_CUSTOMIZED_PATCH_PARAM_PCM_CAPTURE1_RPTR                          = 3,
1253     API_AUDIO_CUSTOMIZED_PATCH_PARAM_PCM_CAPTURE2_RPTR                          = 4,
1254 
1255     //--- HDMI RX Bypass---
1256     API_AUDIO_CUSTOMIZED_PATCH_PARAM_HDMI_RX_BYPASS_ENABLE                      = 5,
1257 
1258     //---Low Latency Limiter---
1259     API_AUDIO_CUSTOMIZED_PATCH_PARAM_LOW_LATENCY_LIMITER_ENABLE                 = 6,
1260     API_AUDIO_CUSTOMIZED_PATCH_PARAM_LOW_LATENCY_LIMITER_ES_THRESHOLD           = 7,
1261     API_AUDIO_CUSTOMIZED_PATCH_PARAM_LOW_LATENCY_LIMITER_PCM_THRESHOLD          = 8,
1262     API_AUDIO_CUSTOMIZED_PATCH_PARAM_LOW_LATENCY_LIMITER_PCM_SKIP_TARGET        = 20,
1263 
1264     //---DNSE---
1265     API_AUDIO_CUSTOMIZED_PATCH_PARAM_DNSE_ENABLE                                = 9,
1266     API_AUDIO_CUSTOMIZED_PATCH_PARAM_DNSE_AUTO_VOLUME_CTRL                      = 10,
1267     API_AUDIO_CUSTOMIZED_PATCH_PARAM_DNSE_WIDE_STEREO_CTRL                      = 11,
1268     API_AUDIO_CUSTOMIZED_PATCH_PARAM_DNSE_WALL_FILTER_CTRL                      = 12,
1269     API_AUDIO_CUSTOMIZED_PATCH_PARAM_DNSE_HEADROOM_GAIN_CTRL                    = 13,
1270     API_AUDIO_CUSTOMIZED_PATCH_PARAM_DNSE_GAIN_ADJUSTMENT_CTRL                  = 14,
1271     API_AUDIO_CUSTOMIZED_PATCH_PARAM_DNSE_HARD_LIMITER_CTRL                     = 15,
1272     API_AUDIO_CUSTOMIZED_PATCH_PARAM_DNSE_MODE_IDENTIFICATION_CTRL              = 16,
1273 
1274     //---DOLBY_ATMOS_CONTROL---
1275     API_AUDIO_CUSTOMIZED_PATCH_PARAM_DOLBY_ATMOS_ENABLE                         = 17,
1276     API_AUDIO_CUSTOMIZED_PATCH_PARAM_DOLBY_ATMOS_DISABLE                        = 18,
1277 
1278     //---MCU Dump R2 Log---
1279     API_AUDIO_CUSTOMIZED_PATCH_PARAM_MCU_DUMP_R2_LOG_ENABLE                     = 21,
1280     API_AUDIO_CUSTOMIZED_PATCH_PARAM_MCU_DUMP_R2_LOG_OPTION                     = 22,
1281 
1282     //---ES Repeat Play---
1283     API_AUDIO_CUSTOMIZED_PATCH_PARAM_ES_REPLAY_PLAY_ENABLE                      = 23,
1284 
1285     //---HDMI_TX / SPDIF_TX SE-DSP Force DD/DDP Encode without Main sound---
1286     API_AUDIO_CUSTOMIZED_PATCH_PARAM_HDMI_TX_SEDSP_DDE_WO_MAIN_SND_ENABLE       = 24,
1287     API_AUDIO_CUSTOMIZED_PATCH_PARAM_HDMI_TX_SEDSP_DDPE_WO_MAIN_SND_ENABLE      = 25,
1288     API_AUDIO_CUSTOMIZED_PATCH_PARAM_SPDIF_TX_SEDSP_DDE_WO_MAIN_SND_ENABLE      = 26,
1289     API_AUDIO_CUSTOMIZED_PATCH_PARAM_SEDSP_MS12_ENC_WO_MAIN_SND_DISABLE         = 27,
1290 
1291     //---HDMI_ARC / SPDIF_TX SNDR2 Force DD/DDP Encode without Main sound---
1292     API_AUDIO_CUSTOMIZED_PATCH_PARAM_HDMI_ARC_SEDSP_DDE_WO_MAIN_SND_ENABLE      = 29,
1293     API_AUDIO_CUSTOMIZED_PATCH_PARAM_HDMI_ARC_SNDR2_DDPE_WO_MAIN_SND_ENABLE     = 30,
1294     API_AUDIO_CUSTOMIZED_PATCH_PARAM_SNDR2_MS12_ENC_WO_MAIN_SND_DISABLE         = 31, //<--MAX is here!!!
1295 
1296     //---HDMI_RX_SWITCH_TO_PCM_DEBOUNCE---
1297     API_AUDIO_CUSTOMIZED_PATCH_PARAM_HDMI_RX_SWITCH_TO_PCM_DEBOUNCE             = 19,
1298 
1299     //---HDMI_RX_MONITOR_EVENT_CALLBACK_REGISTER---
1300     API_AUDIO_CUSTOMIZED_PATCH_PARAM_HDMI_RX_MONITOR_EVENT_CALLBACK_REGISTER    = 28,
1301 
1302     //---MAX---
1303     API_AUDIO_CUSTOMIZED_PATCH_PARAM_MAX = API_AUDIO_CUSTOMIZED_PATCH_PARAM_SNDR2_MS12_ENC_WO_MAIN_SND_DISABLE + 1,
1304 } API_AUDIO_CUSTOMIZED_PATCH_PARAM_TYPE;
1305 
1306 typedef enum
1307 {
1308     API_AUDIO_CUSTOMIZED_PATCH_INFO_TYPE_INVALID = -1,
1309 
1310     //--------------------------------------------------------------------------------------
1311     // (API_AUDIO_"CUSTOMIZED_PATCH"_INFO_XXXXXXXX), INFO: Get
1312     //--------------------------------------------------------------------------------------
1313     //---SPDIF npcm buffer get wptr---
1314     API_AUDIO_CUSTOMIZED_PATCH_INFO_SPDIF_NONPCM_WPTR           = 0,
1315 
1316     //---PCM Capture get wptr---
1317     API_AUDIO_CUSTOMIZED_PATCH_INFO_PCM_CAPTURE1_WPTR           = 1,
1318     API_AUDIO_CUSTOMIZED_PATCH_INFO_PCM_CAPTURE2_WPTR           = 2,
1319 
1320     //---R2 UART info---
1321     API_AUDIO_CUSTOMIZED_PATCH_INFO_R2_UART_BUF_BASE            = 3,
1322     API_AUDIO_CUSTOMIZED_PATCH_INFO_R2_UART_BUF_SIZE            = 4,
1323     API_AUDIO_CUSTOMIZED_PATCH_INFO_R2_UART_BUF_WPTR            = 5,
1324 
1325     //---DEC PCM1 buffer info---
1326     API_AUDIO_CUSTOMIZED_PATCH_INFO_DEC_PCM1_BUF_BASE           = 6,
1327     API_AUDIO_CUSTOMIZED_PATCH_INFO_DEC_PCM1_BUF_SIZE           = 7,
1328     API_AUDIO_CUSTOMIZED_PATCH_INFO_DEC_PCM1_BUF_WPTR           = 8,
1329 
1330     //---HDMI NPCM buffer info---
1331     API_AUDIO_CUSTOMIZED_PATCH_INFO_HDMI_NPCM_BUF_BASE          = 9,
1332     API_AUDIO_CUSTOMIZED_PATCH_INFO_HDMI_NPCM_BUF_SIZE          = 10,
1333     API_AUDIO_CUSTOMIZED_PATCH_INFO_HDMI_NPCM_BUF_RPTR          = 11,
1334     API_AUDIO_CUSTOMIZED_PATCH_INFO_HDMI_NPCM_BUF_WPTR          = 12,
1335 
1336     //---MS12 META DATA buffer info---
1337     API_AUDIO_CUSTOMIZED_PATCH_INFO_MS12_DDPE_METADATA_BUF_BASE = 13,
1338     API_AUDIO_CUSTOMIZED_PATCH_INFO_MS12_DDPE_METADATA_BUF_SIZE = 14,
1339     API_AUDIO_CUSTOMIZED_PATCH_INFO_MS12_DDPE_METADATA_BUF_WPTR = 15,
1340 
1341     //---DEC ES1 buffer info---
1342     API_AUDIO_CUSTOMIZED_PATCH_INFO_DEC_ES1_BUF_BASE            = 16,
1343     API_AUDIO_CUSTOMIZED_PATCH_INFO_DEC_ES1_BUF_SIZE            = 17,
1344     API_AUDIO_CUSTOMIZED_PATCH_INFO_DEC_ES1_BUF_RPTR            = 18,
1345     API_AUDIO_CUSTOMIZED_PATCH_INFO_DEC_ES1_BUF_WPTR            = 19, //<--MAX is here!!!
1346 
1347     //---MAX---
1348     API_AUDIO_CUSTOMIZED_PATCH_INFO_MAX = API_AUDIO_CUSTOMIZED_PATCH_INFO_DEC_ES1_BUF_WPTR + 1,
1349 } API_AUDIO_CUSTOMIZED_PATCH_INFO_TYPE;
1350 
1351 //-------------------------------------------------------------------------------------------------------------------------------------
1352 /* Clip Play for ES */
1353 //-------------------------------------------------------------------------------------------------------------------------------------
1354 typedef struct
1355 {
1356     API_AUDIO_CUSTOMER_CODEC_TYPE   clipType;
1357     MS_U32                          repeatNumber;       /* The play number of audio clip. */
1358 } API_AUDIO_CUSTOMER_CLIP_DEC_PARAM;
1359 
1360 typedef enum
1361 {
1362     API_AUDIO_CUSTOMER_CLIP_STATUS_INVALID  = -1,
1363     API_AUDIO_CUSTOMER_CLIP_NONE            = 0,
1364     API_AUDIO_CUSTOMER_CLIP_PLAY            = 1,
1365     API_AUDIO_CUSTOMER_CLIP_STOP            = 2,
1366     API_AUDIO_CUSTOMER_CLIP_RESUME          = 3,
1367     API_AUDIO_CUSTOMER_CLIP_PAUSE           = 4,
1368     API_AUDIO_CUSTOMER_CLIP_DONE            = 5,
1369 } API_AUDIO_CUSTOMER_CLIP_STATUS;
1370 
1371 //-------------------------------------------------------------------------------------------------------------------------------------
1372 /* Clip Play for PCM */
1373 //-------------------------------------------------------------------------------------------------------------------------------------
1374 typedef enum
1375 {
1376     API_AUDIO_CUSTOMER_MIXER_INDEX_INVALID  = -1,
1377     API_AUDIO_CUSTOMER_MIXER0               = 0,
1378     API_AUDIO_CUSTOMER_MIXER1               = 1,
1379     API_AUDIO_CUSTOMER_MIXER2               = 2,
1380     API_AUDIO_CUSTOMER_MIXER3               = 3,
1381     API_AUDIO_CUSTOMER_MIXER4               = 4,
1382     API_AUDIO_CUSTOMER_MIXER5               = 5,
1383     API_AUDIO_CUSTOMER_MIXER6               = 6,
1384     API_AUDIO_CUSTOMER_MIXER7               = 7,
1385     API_AUDIO_CUSTOMER_MIXER_MAX            = API_AUDIO_CUSTOMER_MIXER7 + 1,
1386 } API_AUDIO_CUSTOMER_MIXER_INDEX;
1387 
1388 typedef enum
1389 {
1390     API_AUDIO_CUSTOMER_PCM_ENDIAN_INVALID   = -1,
1391     API_AUDIO_CUSTOMER_PCM_LITTLE_ENDIAN    = 0,
1392     API_AUDIO_CUSTOMER_PCM_BIG_ENDIAN       = 1,
1393 } API_AUDIO_CUSTOMER_PCM_ENDIAN;
1394 
1395 typedef enum
1396 {
1397     API_AUDIO_CUSTOMER_PCM_SIGNED_INVALID   = -1,
1398     API_AUDIO_CUSTOMER_PCM_SIGNED           = 0,
1399     API_AUDIO_CUSTOMER_PCM_UNSIGNED         = 1,
1400 } API_AUDIO_CUSTOMER_PCM_SIGNED_STATUS;
1401 
1402 typedef struct
1403 {
1404     MS_U32                                  numOfChannel;       /* 2  : stereo, 1 : mono,  8 : 8 channel */
1405     MS_U32                                  bitPerSample;       /* 16 : 16 bit, 8 : 8 bit 24 : 24bit */
1406     API_AUDIO_CUSTOMER_SAMPLING_FREQ        samplingFreq;       /* 48000 : 48Khz, 44100 : 44.1Khz */
1407     API_AUDIO_CUSTOMER_PCM_ENDIAN           endianType;         /* 0  : little endian, 1 : big endian */
1408     API_AUDIO_CUSTOMER_PCM_SIGNED_STATUS    signedType;         /* 0  : signed PCM, 1 : unsigned PCM */
1409     MS_U32                                  repeatNumber;       /* The play number of audio clip. */
1410 } API_AUDIO_CUSTOMER_CLIP_MIX_PARAM;
1411 
1412 //-------------------------------------------------------------------------------------------------------------------------------------
1413 /* Gain, Mute & Delay */
1414 //-------------------------------------------------------------------------------------------------------------------------------------
1415 typedef enum
1416 {
1417     API_AUDIO_CUSTOMER_LINE_OUT_INVALID    = -1,
1418     API_AUDIO_CUSTOMER_LINE_OUT_0          = 0,
1419     API_AUDIO_CUSTOMER_LINE_OUT_1          = 1,
1420     API_AUDIO_CUSTOMER_LINE_OUT_2          = 2,
1421     API_AUDIO_CUSTOMER_LINE_OUT_3          = 3,
1422     API_AUDIO_CUSTOMER_LINE_OUT_MAX        = API_AUDIO_CUSTOMER_LINE_OUT_3 + 1,
1423 } API_AUDIO_CUSTOMER_LINE_OUT_IDX;
1424 
1425 //-------------------------------------------------------------------------------------------------------------------------------------
1426 /* SPK Out LR Mode */
1427 //-------------------------------------------------------------------------------------------------------------------------------------
1428 typedef enum
1429 {
1430     API_AUDIO_CUSTOMER_SNDOUT_LRMODE_INVALID    = -1,
1431     API_AUDIO_CUSTOMER_SNDOUT_LRMODE_LR         = 0,
1432     API_AUDIO_CUSTOMER_SNDOUT_LRMODE_LL         = 1,
1433     API_AUDIO_CUSTOMER_SNDOUT_LRMODE_RR         = 2,
1434     API_AUDIO_CUSTOMER_SNDOUT_LRMODE_MIX        = 3,
1435 } API_AUDIO_CUSTOMER_SNDOUT_LRMODE;
1436 
1437 //-------------------------------------------------------------------------------------------------------------------------------------
1438 /* AENC */
1439 //-------------------------------------------------------------------------------------------------------------------------------------
1440 typedef enum
1441 {
1442     API_AUDIO_CUSTOMER_AENC_INDEX_INVALID   = -1,
1443     API_AUDIO_CUSTOMER_AENC0                = 0,
1444     API_AUDIO_CUSTOMER_AENC1                = 1,
1445     API_AUDIO_CUSTOMER_AENC_MAX             = API_AUDIO_CUSTOMER_AENC1 + 1,
1446 } API_AUDIO_CUSTOMER_AENC_INDEX;
1447 
1448 typedef enum
1449 {
1450     API_AUDIO_CUSTOMER_AENC_STATUS_INVALID      = -1,
1451     API_AUDIO_CUSTOMER_AENC_STATUS_STOP         = 0,
1452     API_AUDIO_CUSTOMER_AENC_STATUS_PLAY         = 1,
1453     API_AUDIO_CUSTOMER_AENC_STATUS_ABNORMAL     = 2,
1454 } API_AUDIO_CUSTOMER_AENC_STATUS;
1455 
1456 typedef enum
1457 {
1458     API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT_INVALID = -1,
1459     API_AUDIO_CUSTOMER_AENC_ENCODE_MP3              = 0,    /* Encode MP3 format */
1460     API_AUDIO_CUSTOMER_AENC_ENCODE_AAC              = 1,    /* Encode AAC format */
1461 } API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT;
1462 
1463 typedef enum
1464 {
1465     API_AUDIO_CUSTOMER_AENC_CHANNEL_INVALID = -1,
1466     API_AUDIO_CUSTOMER_AENC_MONO            = 0,
1467     API_AUDIO_CUSTOMER_AENC_STEREO          = 1,
1468 } API_AUDIO_CUSTOMER_AENC_CHANNEL;
1469 
1470 typedef enum
1471 {
1472     API_AUDIO_CUSTOMER_AENC_BITRATE_INVALID = -1,
1473     API_AUDIO_CUSTOMER_AENC_BIT_48K         = 0,
1474     API_AUDIO_CUSTOMER_AENC_BIT_56K         = 1,
1475     API_AUDIO_CUSTOMER_AENC_BIT_64K         = 2,
1476     API_AUDIO_CUSTOMER_AENC_BIT_80K         = 3,
1477     API_AUDIO_CUSTOMER_AENC_BIT_112K        = 4,
1478     API_AUDIO_CUSTOMER_AENC_BIT_128K        = 5,
1479     API_AUDIO_CUSTOMER_AENC_BIT_160K        = 6,
1480     API_AUDIO_CUSTOMER_AENC_BIT_192K        = 7,
1481     API_AUDIO_CUSTOMER_AENC_BIT_224K        = 8,
1482     API_AUDIO_CUSTOMER_AENC_BIT_256K        = 9,
1483     API_AUDIO_CUSTOMER_AENC_BIT_320K        = 10,
1484 } API_AUDIO_CUSTOMER_AENC_BITRATE;
1485 
1486 typedef struct
1487 {
1488     //Get Info for debugging on DDI
1489     API_AUDIO_CUSTOMER_AENC_STATUS            status;   // current ENC Status
1490     API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT   codec;    // current ENC Codec
1491 
1492     MS_U32  errorCount;                                 // current ENC error counter
1493     MS_U32  inputCount;                                 // current ENC input counter - we distinguish whether or not enter data from input.
1494     MS_U32  underflowCount;                             // current ENC underflowCnt in kernel space - we distinguish which module have problem between muxer and encdoer
1495     MS_U32  overflowCount;                              // current ENC overflowCnt - we distinguish
1496 
1497     //Set Info - it is applied realtime, no matter stop&start
1498     API_AUDIO_CUSTOMER_AENC_CHANNEL   channel;          // number of channel
1499     API_AUDIO_CUSTOMER_AENC_BITRATE   bitrate;          // bitrate
1500 } API_AUDIO_CUSTOMER_AENC_INFO;
1501 
1502 //-------------------------------------------------------------------------------------------------------------------------------------
1503 /* PCM(Sound Bar Buletooth, PCM Capture) */
1504 //-------------------------------------------------------------------------------------------------------------------------------------
1505 
1506 
1507 //-------------------------------------------------------------------------------------------------------------------------------------
1508 /* PCM IO */
1509 //-------------------------------------------------------------------------------------------------------------------------------------
1510 typedef struct
1511 {
1512     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!) */
1513     MS_U8 u8MultiChFlag;        /* it is TRUE when request for a multi-channel PCM IO */
1514     MS_U32 u32BufferDuration;   /* PCM buffer size in mini-second unit, and up to a maximun size */
1515     MS_U32 u32Channel;          /* PCM channel number */
1516     MS_U32 u32SampleRate;       /* PCM sample rate */
1517     MS_U32 u32BitWidth;         /* PCM sample's bit width of each channel */
1518     MS_U32 u32BigEndian;        /* PCM endien, TRUE means Big Endien, FALSE means Little Endien */
1519 } API_AUDIO_CUSTOMER_PCMIO_PARAM;
1520 
1521 typedef enum
1522 {
1523     API_AUDIO_CUSTOMER_PCM_CMD_ALL,             /*       GET      */
1524     API_AUDIO_CUSTOMER_PCM_CMD_NONBLOCKING,     /* SET / GET      */
1525     API_AUDIO_CUSTOMER_PCM_CMD_MULTICH,         /*       GET      */
1526     API_AUDIO_CUSTOMER_PCM_CMD_MIXING,          /*       GET      */
1527     API_AUDIO_CUSTOMER_PCM_CMD_MIXINGGROUP,     /* SET / GET      */
1528     API_AUDIO_CUSTOMER_PCM_CMD_BUFFER,          /*       GET only */
1529     API_AUDIO_CUSTOMER_PCM_CMD_BUFFERDURATION,  /* SET / GET      */
1530     API_AUDIO_CUSTOMER_PCM_CMD_READPTR,         /*       GET only */
1531     API_AUDIO_CUSTOMER_PCM_CMD_WRITEPTR,        /*       GET only */
1532     API_AUDIO_CUSTOMER_PCM_CMD_CHANNEL,         /* SET / GET      */
1533     API_AUDIO_CUSTOMER_PCM_CMD_SAMPLERATE,      /* SET / GET      */
1534     API_AUDIO_CUSTOMER_PCM_CMD_BITWIDTH,        /* SET / GET      */
1535     API_AUDIO_CUSTOMER_PCM_CMD_BIGENDIEN,       /* SET / GET      */
1536     API_AUDIO_CUSTOMER_PCM_CMD_TIMESTAMP,       /* SET / GET      */
1537     API_AUDIO_CUSTOMER_PCM_CMD_WEIGHTING,       /* SET / GET      */
1538     API_AUDIO_CUSTOMER_PCM_CMD_VOLUME,          /* SET / GET      */
1539     API_AUDIO_CUSTOMER_PCM_CMD_BUFFERLEVEL,     /*       GET only */
1540     API_AUDIO_CUSTOMER_PCM_CMD_MUTE,            /* SET / GET      */
1541     API_AUDIO_CUSTOMER_PCM_CMD_BUFFERSIZE,      /*       GET only */
1542 } API_AUDIO_CUSTOMER_PCM_COMMAND;
1543 
1544 //-------------------------------------------------------------------------------------------------------------------------------------
1545 /* MM New Mode */
1546 //-------------------------------------------------------------------------------------------------------------------------------------
1547 typedef enum
1548 {
1549     API_AUDIO_CUSTOMER_MEMORY_BASE = 0x0, ///< for audio DDR Base
1550     API_AUDIO_CUSTOMER_MEMORY_SIZE = 0x1, ///< for audio DDR Size
1551 } API_AUDIO_CUSTOMER_DDRINFO;
1552 
1553 typedef struct
1554 {
1555     MS_U32 aes_base_addr;       ///<  base address of ES buffer
1556     MS_U32 aes_end_addr;        ///<  end address of ES buffer
1557     MS_U32 aes_BufSize;         ///<  ES buffer size
1558     MS_U32 aes_write_addr;      ///<  write pointer
1559     MS_U32 aes_read_addr;       ///<  read pointer
1560     MS_U32 aes_freeSpace;       ///<  free space of ES buffer
1561     MS_U32 aes_level;           ///<  level of ES buffer
1562     MS_U32 aes_ptsCnt;          ///<  count of total received PTS
1563     MS_U64 aes_lastPTS;         ///<  last received PTS
1564 } API_AUDIO_CUSTOMER_AES_INFO;
1565 
1566 //-------------------------------------------------------------------------------------------------------------------------------------
1567 /* Mstar Sound Effect */
1568 //-------------------------------------------------------------------------------------------------------------------------------------
1569 typedef enum
1570 {
1571     API_AUDIO_CUSTOMER_GEQ,
1572     API_AUDIO_CUSTOMER_PEQ,
1573     API_AUDIO_CUSTOMER_HPF,
1574     API_AUDIO_CUSTOMER_DRC,
1575     API_AUDIO_CUSTOMER_AVC,
1576     API_AUDIO_CUSTOMER_BALANCE,
1577     API_AUDIO_CUSTOMER_MSTAR_SE_MAX,
1578 } API_AUDIO_CUSTOMER_MSTAR_SE_TYPE;
1579 
1580 typedef struct
1581 {
1582     MS_U8   band;   ///< band
1583     MS_U32  a0;     ///< a0
1584     MS_U32  a1;     ///< a1
1585     MS_U32  a2;     ///< a2
1586     MS_U32  b1;     ///< b1
1587     MS_U32  b2;     ///< b2
1588     MS_BOOL enable; ///< PEQ band enable
1589     MS_U8   scale;  ///< scale
1590 } API_AUDIO_CUSTOMER_MSTAR_PEQ_COEF;
1591 
1592 typedef struct
1593 {
1594     MS_U32  a0;     ///< a0
1595     MS_U32  a1;     ///< a1
1596     MS_U32  a2;     ///< a2
1597     MS_U32  b1;     ///< b1
1598     MS_U32  b2;     ///< b2
1599 } API_AUDIO_CUSTOMER_MSTAR_HPF_COEF;
1600 
1601 typedef enum
1602 {
1603     API_AUDIO_CUSTOMER_AVC_LINEAR,
1604     API_AUDIO_CUSTOMER_AVC_SHIFT,
1605     API_AUDIO_CUSTOMER_AVC_NORMAL,
1606     API_AUDIO_CUSTOMER_AVC_R,
1607 } API_AUDIO_CUSTOMER_MSTAR_AVC_MODE;
1608 
1609 //-------------------------------------------------------------------------------------------------------------------------------------
1610 /* Advanced Sound Effect */
1611 //-------------------------------------------------------------------------------------------------------------------------------------
1612 
1613                                                                                                             // Description:
1614 typedef enum                                                                                                // Enable SRS Main function, Only when the hashkey is correct,
1615 {                                                                                                           // the SRS main function will be activated sucessfully.
1616     API_AUDIO_CUSTOMER_DTS_SE_INVALID           = -1,                                                       // ============================================================================
1617     API_AUDIO_CUSTOMER_DTS_SE_TSXT              = 0,                                                        // for SRS TSXT Hashkey
1618     API_AUDIO_CUSTOMER_DTS_SE_TSHD              = 1,                                                        // for SRS TSHD Hashkey
1619     API_AUDIO_CUSTOMER_DTS_SE_THEATERSOUND      = 2,                                                        // for SRS TheaterSound HD Hashkey
1620     API_AUDIO_CUSTOMER_DTS_SE_PURESND           = 3,                                                        // for SRS Pure Sound Hashkey or for DTS StudioSound 3D Hashkey.
1621     API_AUDIO_CUSTOMER_DTS_SE_STUDIOSOUND_3D    = 4, /*<-MAX*/                                              // for DTS StudioSound 3D Hashkey
1622     API_AUDIO_CUSTOMER_DTS_SE_MAX               = API_AUDIO_CUSTOMER_DTS_SE_STUDIOSOUND_3D + 1,
1623 } API_AUDIO_CUSTOMER_DTS_SE_TYPE;
1624 
1625                                                                                                             //  ________________________________________________________________________________________
1626                                                                                                             // |Hashkey:                             |Description:
1627                                                                                                             // |_____________________________________|__________________________________________________
1628 typedef enum                                                                                                // |SRS_TSXT|SRS_TSHD|SRS_TheaterSound_HD|Enable/Disable
1629 {                                                                                                           // |        |        |DTS_StudioSound_3D |for the following:
1630     API_AUDIO_CUSTOMER_DTS_SE_UNIT_INVALID                                          = -1,                   // |________|________|___________________|
1631                                                                                                             // |           TSHD                      |
1632                                                                                                             // |________ ________ ___________________|__________________________________________________
1633     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_TOTAL                               = 0,                    // |   V    |   V    |        V          |DTS StudioSound main function
1634     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_TSHD                                = 1,                    // |   V    |   V    |        V          |TruSurround HD
1635     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_TSHD_DEFINITION                     = 2,                    // |        |   V    |        V          |Definition processing component of TruSurround HD
1636     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_TSHD_DC                             = 3,                    // |   V    |   V    |        V          |Dialog Clarity processing component of TruSurround HD
1637     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_TSHD_SURR                           = 4,                    // |   V    |   V    |        V          |Surround processing component of TruSurround HD
1638     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_TSHD_TRUBASS                        = 5,                    // |   V    |   V    |        V          |TruBass processing component of TruSurround HD
1639     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_TSHD_TRUBASS_LVL_INDPT              = 6,                    // |   V    |   V    |        V          |Level Independent processing component of TruBass
1640                                                                                                             // |________|________|___________________|
1641                                                                                                             // |     CC3D Controls (CC3D must enable)|
1642                                                                                                             // |________ ________ ___________________|
1643     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_CC3D                                = 7,                    // |   V    |   V    |        V          |CC3D processing
1644     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_CC3D_DEPTH_PROCESS                  = 8,                    // |        |        |        V          |Depth processing in CC3D
1645                                                                                                             // |________|________|___________________|
1646                                                                                                             // |       TRUVOLUME HD                  |
1647                                                                                                             // |________ ________ ___________________|
1648     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_TRUVOLUME                           = 9,                    // |        |        |        V          |TruVolume processing
1649     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_TRUVOLUME_NORMALIZER                = 10,                   // |        |        |        V          |it will detect the level of the incoming signal and if necessary, dynamically boosts the signal level to ensure that it is always within the operational range of TruVolume.
1650                                                                                                             // |________|________|___________________|
1651                                                                                                             // |         TRUDIALOG                   |
1652                                                                                                             // |_____________________________________|
1653     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_TRUDIALOG                           = 11,                   // |        |        |        V          |TruDialog processing
1654                                                                                                             // |________|________|___________________|
1655                                                                                                             // |           TBHDX                     |
1656                                                                                                             // |________ ________ ___________________|
1657     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_CC3D_TBHDX                          = 12,                   // |        |        |        V          |TruBass HDX low frequency compensation processing
1658                                                                                                             // |________|________|___________________|
1659                                                                                                             // |            GEQ                      |
1660                                                                                                             // |________ ________ ___________________|
1661     API_AUDIO_CUSTOMER_DTS_SE_UNIT_THEATERSOUND_GEQ                                 = 13,                   // |        |        |        V          |Graphic EQ processing
1662                                                                                                             // |________|________|___________________|
1663                                                                                                             // |    PURESOUND HRADLIMITER            |
1664                                                                                                             // |________ ________ ___________________|
1665     API_AUDIO_CUSTOMER_DTS_SE_UNIT_PURESOUND_HL                                     = 14,                   // |        |        |        V          |HardLimiter processing
1666                                                                                                             // |________|________|___________________|
1667                                                                                                             // |       PURESOUND AEQ                 |
1668                                                                                                             // |________ ________ ___________________|
1669     API_AUDIO_CUSTOMER_DTS_SE_UNIT_PURESOUND_AEQ                                    = 15,                   // |        |        |        V          |Aective EQ processing
1670                                                                                                             // |________|________|___________________|
1671                                                                                                             // |       PURESOUND HPF                 |
1672                                                                                                             // |________ ________ ___________________|
1673     API_AUDIO_CUSTOMER_DTS_SE_UNIT_PURESOUND_HPF                                    = 16, /*<-MAX*/         // |        |        |�@�@�@�@V          |High Pass Filter processing
1674                                                                                                             // |________|________|___________________|
1675 
1676     API_AUDIO_CUSTOMER_DTS_SE_UNIT_MAX = API_AUDIO_CUSTOMER_DTS_SE_UNIT_PURESOUND_HPF + 1,
1677 } API_AUDIO_CUSTOMER_DTS_SE_UNIT_TYPE;
1678 
1679                                                                                                             //  _____________________________________
1680                                                                                                             // |Hashkey:                             |
1681                                                                                                             // |________ ________ ___________________|__________________________________________________________________________________________________________
1682 typedef enum                                                                                                // |SRS_TSXT|SRS_TSHD|SRS_TheaterSound_HD|
1683 {                                                                                                           // |        |        |DTS_StudioSound_3D |Default               Range                               Description
1684     API_AUDIO_CUSTOMER_DTS_SE_PARAM_INVALID                                             = -1,               // |________|________|___________________|__________________________________________________________________________________________________________
1685                                                                                                             // |           TSHD                      |
1686                                                                                                             // |________ ________ ___________________|
1687     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TSHD_INPUT_GAIN_FXP24                  = 0,                // |   V    |   V    |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Trusurround input gain. Input Gain. Adjusts the level of the signal at the input to TSHD processing.
1688     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TSHD_DEFINITION_CTRL_FXP24             = 1,                // |        |   V    |        V          |0.6                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Trusurround definition control. Definition Level. Controls the level of high frequency enhancement.
1689     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TSHD_DC_LEVEL_CTRL_FXP24               = 2,                // |   V    |   V    |        V          |0.5                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Trusurround dialog clarity control. Dialog Clarity Level. Establishes the amount of dialog clarity enhancement that is applied to the audio signal.
1690     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TSHD_SURR_LEVEL_CTRL_FXP24             = 3,                // |   V    |   V    |        V          |0.6                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Trusurround surround level. Surround Level. Controls the overall mix level of the surround channels.
1691     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TSHD_TRUBASS_CTRL_FXP24                = 4,                // |   V    |   V    |        V          |0.3                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Trubass HD front level control
1692     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TSHD_TRUBASS_COMPR_CTRL_FXP24          = 5,                // |   V    |   V    |        V          |0.25                  0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Trubass HD compressor control
1693     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TSHD_TRUBASS_PROCESS_MODE              = 6,                // |   V    |   V    |        V          |1:stereo              0:mono  1:stereo                    Trubass HD process mode
1694     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TSHD_TRUBASS_SPKSIZE                   = 7,                // |   V    |   V    |        V          |8:Custom              0 ~ 8                               Trubass HD speaker size. 0:40Hz, 1:60Hz, 2:100Hz, 3:150Hz, 4:200Hz, 5:250Hz, 6:300Hz, 7:400Hz, 8:Custom (default), Trubass HD speaker size
1695     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TSHD_TRUBASS_CUS_SPKSIZE               = 8,                // |   V    |   V    |        V          |13:150Hz              0 ~ 38 (20Hz ~ 400 Hz, step:10Hz)   Trubass HD customer audio speaker size
1696     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TSHD_TRUBASS_CUS_SPKSIZE_ANALYSIS      = 9,                // |   V    |   V    |        V          |10:120Hz              0 ~ 38 (20Hz ~ 400 Hz, step:10Hz)   Trubass HD customer analysis frequency
1697                                                                                                             // |________|________|___________________|
1698                                                                                                             // |       Main Controls                 |
1699                                                                                                             // |________ ________ ___________________|
1700     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_MAIN_CTRL_HEADROOM_GAIN_FXP24          = 10,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Headroom Gain. Provides headroom for intermediate calculations so as to avoid clipping.The value is typically set to the inverse of the setting for the Boost Gain control of the HardLimiter. Note that the value of this control must differ for TVOL on versus off.
1701     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_MAIN_CTRL_BYPASS_GAIN_FXP24            = 11,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Bypass Gain. Adjusts the signal level when TheaterSound HD/DTS StudioSound 3D processing is turned off.
1702     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_MAIN_CTRL_CC3D_PROCESS_PATH            = 12,               // |        |        |        V          |2:PATH_1              0 ~ 2                               Processing Path. Selects the processing path: PATH_NONE:NONE, PATH_0:csdecoder + trudiag + tshd, PATH_1:trudiag + cc3d (depth + stereo tshd). 0:SRS_TS3D_PROCESSINGPATH_NONE, 1:SRS_TS3D_PROCESSINGPATH_0; 2:SRS_TS3D_PROCESSINGPATH_1.
1703                                                                                                             // |________|________|___________________|
1704                                                                                                             // |       CC3D Controls                 |
1705                                                                                                             // |________ ________ ___________________|
1706     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CC3D_INPUT_GAIN_FXP24                  = 13,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Input Gain. Adjusts the level of the signal at the input to CC3D processing.
1707                                                                                                             // |________|________|___________________|
1708                                                                                                             // |       TRUVOLUME HD                  |
1709                                                                                                             // |________ ________ ___________________|
1710     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TRUVOLUME_MODE                         = 14,               // |        |        |        V          |1:SRS_TVOLHD_NORM     0 ~ 1                               TruVolume HD Mode. Selects the mode of operation for TruVolume HD.There are two modes supported:Light and Normal.The two modes represent different tunings of the algorithm from lighter to more aggressive. 0:SRS_TVOLHD_LIGHT, 1:SRS_TVOLHD_NORM.
1711     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TRUVOLUME_REF_LEVEL_FXP24              = 15,               // |        |        |        V          |0.125                 0x2C04 ~ 0x7FFFFF (1.0e-3 ~ 1.0)    LKFS. Sets the desired absolute loudness level of the signal
1712     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TRUVOLUME_MAX_GAIN_FXP24               = 16,               // |        |        |        V          |2.0                   0x1FFFFF ~ 0xFFFFFE0 (0.25 ~ 32.00) Max Gain. Controls the maximum amount that the signal may be increased.
1713     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TRUVOLUME_NORMALIZE_THRESH_FXP24       = 17,               // |        |        |        V          |0.25                  0x346 ~ 0x3FFFFF (1.0e-4 ~ 0.5)     Norm Threshold. Determines if the gain boost value is greater than 1 or not.
1714                                                                                                             // |________|________|___________________|
1715                                                                                                             // |         TRUDIALOG                   |
1716                                                                                                             // |________ ________ ___________________|
1717     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TRUDIALOG_INPUT_GAIN_FXP24             = 18,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Input Gain. Adjusts the level of the signal at the input.
1718     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TRUDIALOG_CLARITY_GAIN_FXP24           = 19,               // |        |        |        V          |0.5                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Clarity Gain. Adjusts the amount of vocal enhancement that is applied to the audio signal.
1719     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_TRUDIALOG_PROCESS_GAIN_FXP24           = 20,               // |        |        |        V          |2.82                  0x3FFFFF ~ 0x17FFFFD (0.5 ~ 3.0)    Process Gain. Controls how much of the calculated final outout gain is applied to the output signal, effectively controlling how much the process will raise the dialog signal.
1720                                                                                                             // |________|________|___________________|
1721                                                                                                             // |          TBHDX                      |
1722                                                                                                             // |________ ________ ___________________|
1723     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CC3D_TBHDX_INPUT_GAIN_FXP24            = 21,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Input Gain. Adjusts the amount of vocal enhancement that is applied to the audio signal.
1724     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CC3D_TBHDX_BASSLEVEL_FXP24             = 22,               // |        |        |        V          |0.333521432           0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Bass Level. Determines the level of psychoacoustic bass enhancement.
1725     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CC3D_TBHDX_SPEAKERSIZE                 = 23,               // |        |        |        V          |2:100Hz               0 ~ 10                              Speaker Size. The range of low frequency limitations in the speakers that TruBass HDX is compensating for. 0:40Hz, 1:60Hz, 2:100Hz, 3:120HZ, 4:150Hz, 5:200Hz, 6:250Hz, 7:300Hz, 8:400Hz, 9:500Hz, 10:600Hz.
1726     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CC3D_TBHDX_HP_ORDER                    = 24,               // |        |        |        V          |8                     1 ~ 8                               High Pass Order. The slope of the filter that removes the low frequencies that cannot be replicated by the speaker is adjusted with this control.
1727     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CC3D_TBHDX_DYNAMICS_FXP24              = 25,               // |        |        |        V          |0.3                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Dynamics. Modifies the amount of dynamics processing applied to the signal.The ratio/range of the compressor is dynamically adjusted as the incoming signal is monitored.
1728     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CC3D_TBHDX_MODE                        = 26,               // |        |        |        V          |1                     0:MONO 1:STEREO                     Mode. Determines if the left and right signals are summed and processed then sent to both channels or if the left and right channels are processed by TruBass HDX separetely. 0:SRS_TBHDX_MODE_MONO, 1:SRS_TBHDX_MODE_STEREO
1729                                                                                                             // |________|________|___________________|
1730                                                                                                             // |        CS DECODER                   |
1731                                                                                                             // |________ ________ ___________________|
1732     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CS_INPUT_GAIN_FXP24                    = 27,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Input Gain. Adjusts the level of the signal at the input to CS Decoder.
1733     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CS_PROCESS_MODE                        = 28,               // |        |        |        V          |1:music               0:cinema, 1:music                   Mode. Specifies the format of the source material.
1734     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CS_LR_OUTPUT_GAIN_FXP24                = 29,               // |        |        |        V          |2.0                   0xB645A ~ 0x1FFFFFC (0.089 ~ 4.0)   L/R Output Gain. Controls the output level of the front channel of CS Decoder.
1735     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CS_LsRs_OUTPUT_GAIN_FXP24              = 30,               // |        |        |        V          |1.0                   0xB645A ~ 0x1FFFFFC (0.089 ~ 4.0)   Ls/Rs Output Gain. Controls the output level of the surround channel of CS Decoder.
1736     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_CS_Center_OUTPUT_GAIN_FXP24            = 31,               // |        |        |        V          |2.0                   0xB645A ~ 0x1FFFFFC (0.089 ~ 4.0)   Center Output Gain. Controls the output level of the center channel of CS Decoder.
1737                                                                                                             // |________|________|___________________|
1738                                                                                                             // |            GEQ                      |
1739                                                                                                             // |________ ________ ___________________|
1740     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_GEQ_INPUT_GAIN_FXP24                   = 32,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Input Gain. Adjusts the level of the signal at the input to Graphic EQ processing.
1741     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_GEQ_BAND0_GAIN_FXP24                   = 33,               // |        |        |        V          |SRS_GEQ_PLUS_05DB     0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          Band Gain[5]. Adjusts the gain for each band.A different control is available for each band.
1742     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_GEQ_BAND1_GAIN_FXP24                   = 34,               // |        |        |        V          |SRS_GEQ_PLUS_03DB     0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          SRS_GEQ_MINUS_15DB:0.177, SRS_GEQ_MINUS_11DB:0.282, SRS_GEQ_MINUS_07DB:0.45, SRS_GEQ_MINUS_03DB:0.71, SRS_GEQ_PLUS_01DB:1.12, SRS_GEQ_PLUS_05DB:1.78, SRS_GEQ_PLUS_09DB	2.82, SRS_GEQ_PLUS_13DB:4.47
1743     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_GEQ_BAND2_GAIN_FXP24                   = 35,               // |        |        |        V          |SRS_GEQ_0DB           0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          SRS_GEQ_MINUS_14DB:0.20 , SRS_GEQ_MINUS_10DB:0.316, SRS_GEQ_MINUS_06DB:0.50, SRS_GEQ_MINUS_02DB:0.79, SRS_GEQ_PLUS_02DB:1.26, SRS_GEQ_PLUS_06DB:2.00, SRS_GEQ_PLUS_10DB	3.16, SRS_GEQ_PLUS_14DB:5.01
1744     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_GEQ_BAND3_GAIN_FXP24                   = 36,               // |        |        |        V          |SRS_GEQ_PLUS_03DB     0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          SRS_GEQ_MINUS_13DB:0.224, SRS_GEQ_MINUS_09DB:0.355, SRS_GEQ_MINUS_05DB:0.56, SRS_GEQ_MINUS_01DB:0.89, SRS_GEQ_PLUS_03DB:1.41, SRS_GEQ_PLUS_07DB:2.24, SRS_GEQ_PLUS_11DB	3.55, SRS_GEQ_PLUS_15DB:5.63
1745     API_AUDIO_CUSTOMER_DTS_SE_PARAM_THEATERSOUND_GEQ_BAND4_GAIN_FXP24                   = 37,               // |        |        |        V          |SRS_GEQ_PLUS_05DB     0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          SRS_GEQ_MINUS_12DB:0.251, SRS_GEQ_MINUS_08DB:0.40 , SRS_GEQ_MINUS_04DB:0.63, SRS_GEQ_0DB:1.00       , SRS_GEQ_PLUS_04DB:1.58, SRS_GEQ_PLUS_08DB:2.51, SRS_GEQ_PLUS_12DB	4.00,
1746                                                                                                             // |________|________|___________________|
1747                                                                                                             // |     PURESOUND HRADLIMITER           |
1748                                                                                                             // |________ ________ ___________________|
1749     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_HL_INPUT_GAIN_FXP24                       = 38,               // |        |        |        V          |1.0                   0x0 ~ 0x1FFFFFC (0.0 ~ 4.0)         HardLimiter Input Gain. Adjusts the value used for adjusting the audio level after the HardLimiter process
1750     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_HL_OUTPUT_GAIN_FXP24                      = 39,               // |        |        |        V          |1.0                   0x0 ~ 0x1FFFFFC (0.0 ~ 4.0)         HardLimiter Output Gain. Adjusts the value used for adjusting the audio level before the HardLimiter process.
1751     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_HL_BYPASS_GAIN_FXP24                      = 40,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF  (0.0 ~ 1.0)         HardLimiter Bypass Gain. Adjusts the value used for adjusting the audio level when disable the HardLimiter process.
1752     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_HL_LIMITERBOOST_FXP24                     = 41,               // |        |        |        V          |2.5                   0x7FFFFF ~ 0xFFFFFE0 (1.0 ~ 32.0)   (20*log(v/32))dB, v is 1.0 ~ 32.0. so 32.0 is 0dB (MAX). HardLimiter BoostGain. Modifies the signal level within the context of the HardLimiter, so that the signal will not exceed the Hard Limit Level parameter
1753     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_HL_HARDLIMIT_CTRL_FXP24                   = 42,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF  (0.0 ~ 1.0)         HardLimiter limit level.
1754     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_HL_DELAY                                  = 43,               // |        |        |        V          |14                    6 ~ 48                              HardLimiter Delay Length. Specifies the length of the look-ahead delay line utilized in the HardLimiter algorithm.
1755                                                                                                             // |________|________|___________________|
1756                                                                                                             // |       PURESOUND AEQ                 |
1757                                                                                                             // |________ ________ ___________________|
1758     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_AEQ_INPUT_GAIN_FXP24                      = 44,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          AEQ Input Gain. Adjusts the value used for adjusting the audio level after the AEQ process.
1759     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_AEQ_OUTPUT_GAIN_FXP24                     = 45,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          AEQ Output Gain. Adjusts the value used for adjusting the audio level before the AEQ process.
1760     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_AEQ_BYPASS_GAIN_FXP24                     = 46,               // |        |        |        V          |1.0                   0x0 ~ 0x7FFFFF (0.0 ~ 1.0)          AEQ Bypass Gain. Adjusts the value used for adjusting the audio level when disable the AEQ process.
1761                                                                                                             // |________|________|___________________|
1762                                                                                                             // |       PURESOUND HPF                 |
1763                                                                                                             // |________ ________ ___________________|
1764     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_HPF_FREQUENCY                             = 47,               // |        |        |        V          |1                     0 ~ 3                               HPF Frequency. 0:60Hz, 1:80Hz, 2:100Hz, 3:120Hz
1765                                                                                                             // |________|________|___________________|
1766                                                                                                             // |      PURESOUND hash only            |
1767                                                                                                             // |________ ________ ___________________|
1768     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_INPUT_GAIN_FXP24                          = 48,               // |        |        |                   |                      0x0 ~ 0x7FFFFF (0.0 ~ 1.0)
1769     API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_OUTPUT_GAIN_FXP24                         = 49, /*<-MAX*/     // |        |        |                   |                      0x0 ~ 0x7FFFFF (0.0 ~ 1.0)
1770                                                                                                             // |________|________|___________________|
1771 
1772     API_AUDIO_CUSTOMER_DTS_SE_PARAM_MAX = API_AUDIO_CUSTOMER_DTS_SE_PARAM_PURESOUND_OUTPUT_GAIN_FXP24 + 1,
1773 } API_AUDIO_CUSTOMER_DTS_SE_PARAM_TYPE;
1774 
1775 //For Dolby DAP's parameter setting structure.
1776 #define DOLBY_DAP_MAX_BANDS          (20)
1777 #define DOLBY_DAP_IEQ_MAX_BANDS      DOLBY_DAP_MAX_BANDS
1778 #define DOLBY_DAP_GEQ_MAX_BANDS      DOLBY_DAP_MAX_BANDS
1779 #define DOLBY_DAP_REG_MAX_BANDS      DOLBY_DAP_MAX_BANDS
1780 #define DOLBY_DAP_OPT_MAX_BANDS      DOLBY_DAP_MAX_BANDS
1781 #define DOLBY_DAP_MAX_CHANNELS       6
1782 
1783 typedef struct
1784 {
1785     int pregain;
1786     int postgain;
1787     int systemgain;
1788     int surround_decoder_enable;
1789     int virtualizer_enable;
1790     int headphone_reverb;
1791     int speaker_angle;
1792     int speaker_start;
1793     int surround_boost;
1794     int mi_ieq_enable;
1795     int mi_dv_enable;
1796     int mi_de_enable;
1797     int mi_surround_enable;
1798 
1799     int calibration_boost;
1800 
1801     int leveler_amount;
1802     int leveler_input;
1803     int leveler_output;
1804     int leveler_enable;
1805 
1806     int modeler_enable;
1807     int modeler_calibration;
1808 
1809     int ieq_enable;
1810     int ieq_amount;
1811     int ieq_nb_bands;
1812     int a_ieq_band_center[DOLBY_DAP_IEQ_MAX_BANDS];
1813     int a_ieq_band_target[DOLBY_DAP_IEQ_MAX_BANDS];
1814 
1815     int de_enable;
1816     int de_amount;
1817     int de_ducking;
1818 
1819     int volmax_boost;
1820 
1821     int geq_enable;
1822     int geq_nb_bands;
1823     int a_geq_band_center[DOLBY_DAP_GEQ_MAX_BANDS];
1824     int a_geq_band_target[DOLBY_DAP_GEQ_MAX_BANDS];
1825 
1826     int optimizer_enable;
1827     int optimizer_nb_bands;
1828     int a_opt_band_center_freq[DOLBY_DAP_OPT_MAX_BANDS];
1829     int a_opt_band_gain[DOLBY_DAP_MAX_CHANNELS][DOLBY_DAP_OPT_MAX_BANDS];
1830 
1831     int bass_enable;
1832     int bass_boost;
1833     int bass_cutoff;
1834     int bass_width;
1835 
1836     int reg_nb_bands;
1837     int a_reg_band_center[DOLBY_DAP_REG_MAX_BANDS];
1838     int a_reg_low_thresholds[DOLBY_DAP_REG_MAX_BANDS];
1839     int a_reg_high_thresholds[DOLBY_DAP_REG_MAX_BANDS];
1840     int a_reg_isolated_bands[DOLBY_DAP_REG_MAX_BANDS];
1841 
1842     int regulator_overdrive;
1843     int regulator_timbre;
1844     int regulator_distortion;
1845     int regulator_mode;
1846     int regulator_enable;
1847     int virtual_bass_mode;
1848     int virtual_bass_low_src_freq;
1849     int virtual_bass_high_src_freq;
1850     int virtual_bass_overall_gain;
1851     int virtual_bass_slope_gain;
1852     int virtual_bass_subgain[3];
1853     int virtual_bass_mix_low_freq;
1854     int virtual_bass_mix_high_freq;
1855 } API_AUDIO_CUSTOMER_DOLBY_DAP_PARAM;
1856 
1857 //-------------------------------------------------------------------------------------------------------------------------------------
1858 /* callback functions */
1859 //-------------------------------------------------------------------------------------------------------------------------------------
1860 typedef struct
1861 {
1862     MS_U8   index;      // PCM index
1863     MS_U32  pts;        // PTS(unit : 90Khz clock base, max value : 0xFFFFFFFF)
1864     MS_U8   *pData;     // pointer to Audio Data
1865     MS_U32  dataLen;    // Audio Data Length
1866 } API_AUDIO_CUSTOMER_PCM_DATA;
1867 
1868 typedef struct
1869 {
1870     MS_U32  encFormat;  // Encode format, 0:MP3, 1:AAC
1871     MS_U64  pts;        // PTS
1872     MS_U8   *pData;     // pointer to Audio Data
1873     MS_U32  dataLen;    // Audio Data Length
1874     MS_U8   *pRStart;   // start pointer of buffer
1875     MS_U8   *pREnd;     // end pointer of buffer
1876 } API_AUDIO_CUSTOMER_AENC_DATA;
1877 
1878 typedef enum
1879 {
1880     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INVALID      = -1,
1881     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_IS_HDMI      = 0,
1882     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_IS_NONPCM    = 1,
1883     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_CODEC_CHANGE = 2,
1884     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_MAX,
1885 } API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT;
1886 
1887 typedef enum
1888 {
1889     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_INVALID   = -1,
1890     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_DVI_MODE  = 0,
1891     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_HDMI_MODE = 1,
1892     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_PCM       = 2,
1893     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_NONPCM    = 3,
1894     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_DD        = 4,
1895     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_DTS       = 5,
1896     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_DDP       = 7,
1897     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_DP        = 8,
1898     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_OTHER     = 9,
1899     API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO_MAX,
1900 } API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO;
1901 
1902 typedef MS_BOOL (*pfnAudioCustomerAdecoderClipDone)(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
1903 typedef MS_BOOL (*pfnAudioCustomerAmixerClipDone)(API_AUDIO_CUSTOMER_MIXER_INDEX amixIndex);
1904 typedef MS_BOOL (*pfnAudioCustomerAENCDataHandling)(API_AUDIO_CUSTOMER_AENC_DATA *pMsg);
1905 typedef MS_BOOL (*pfnAudioCustomerPCMDataHandling)(API_AUDIO_CUSTOMER_PCM_DATA *pMsg);
1906 typedef MS_BOOL (*pfnAudioCustomerPCMSending)(MS_U8 *pBuf, MS_U16 length);
1907 typedef MS_BOOL (*pfnAudioCustomerMP3EncodeDone)(MS_U8 *pCopyBuffer, MS_U16 copyLenth);
1908 typedef MS_BOOL (*pfnAudioCustomerAdecDecodeDone)(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, MS_U32 copyLenth);
1909 typedef MS_BOOL (*pfnAudioCustomerAdecEndOfStream)(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
1910 typedef MS_BOOL (*pfnAudioCustomerAdecUnderrun)(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
1911 typedef MS_BOOL (*pfnAudioCustomerHDMIMonitorEvent)(API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT eventType, API_AUDIO_CUSTOMER_HDMI_MONITOR_EVENT_INFO info);
1912 
1913 /******************************************************************************
1914     (Function Declaration)
1915 ******************************************************************************/
1916 /* Initialize, STR */
1917 MS_BOOL API_AUDIO_CUSTOMER_InitializeModule(MS_U32 u32MiuNo, MS_U32 mad_va, API_AUDIO_CUSTOMER_OUTPUT_INFO OutputInfo, API_AUDIO_CUSTOMER_CHIP_PLATFORM chipPlatform);
1918 MS_BOOL API_AUDIO_CUSTOMER_InitializeModule_IsFinish(void);
1919 MS_BOOL API_AUDIO_CUSTOMER_Suspend(void);
1920 MS_BOOL API_AUDIO_CUSTOMER_Resume(void);
1921 
1922 /* Connect & Disconnect */
1923 MS_BOOL API_AUDIO_CUSTOMER_SetParserMode(API_AUDIO_CUSTOMER_PARSER_MODE ParserMode);
1924 MS_BOOL API_AUDIO_CUSTOMER_ADEC_Connect(API_AUDIO_CUSTOMER_ADEC_INDEX currentConnect, API_AUDIO_CUSTOMER_ADEC_INPUT inputConnect);
1925 MS_BOOL API_AUDIO_CUSTOMER_ADEC_Disconnect(API_AUDIO_CUSTOMER_ADEC_INDEX currentConnect);
1926 MS_BOOL API_AUDIO_CUSTOMER_ADC_Connect(API_AUDIO_CUSTOMER_ADC_INDEX currentConnect, API_AUDIO_CUSTOMER_ADC_IN_PORT portNum);
1927 MS_BOOL API_AUDIO_CUSTOMER_ADC_Disconnect(API_AUDIO_CUSTOMER_ADC_INDEX currentConnect, API_AUDIO_CUSTOMER_ADC_IN_PORT portNum);
1928 MS_BOOL API_AUDIO_CUSTOMER_PCM_Mixer_Connect(API_AUDIO_CUSTOMER_PCM_MIXER_INDEX currentConnect, API_AUDIO_CUSTOMER_PCM_MIXER_INPUT inputConnect);
1929 MS_BOOL API_AUDIO_CUSTOMER_PCM_Mixer_Disconnect(API_AUDIO_CUSTOMER_PCM_MIXER_INDEX currentConnect, API_AUDIO_CUSTOMER_PCM_MIXER_INPUT inputConnect);
1930 MS_BOOL API_AUDIO_CUSTOMER_CH_Sound_Connect(API_AUDIO_CUSTOMER_CH_SOUND currentConnect, API_AUDIO_CUSTOMER_CH_INPUT inputConnect);
1931 MS_BOOL API_AUDIO_CUSTOMER_CH_Sound_Disconnect(API_AUDIO_CUSTOMER_CH_SOUND currentConnect, API_AUDIO_CUSTOMER_CH_INPUT inputConnect);
1932 MS_BOOL API_AUDIO_CUSTOMER_FW_MIXER_Connect(API_AUDIO_CUSTOMER_FWM_INDEX currentConnect, API_AUDIO_CUSTOMER_FWM_INPUT inputConnect);
1933 MS_BOOL API_AUDIO_CUSTOMER_FW_MIXER_Disconnect(API_AUDIO_CUSTOMER_FWM_INDEX currentConnect, API_AUDIO_CUSTOMER_FWM_INPUT inputConnect);
1934 MS_BOOL API_AUDIO_CUSTOMER_SE_Connect(API_AUDIO_CUSTOMER_SE_INDEX currentConnect, API_AUDIO_CUSTOMER_SE_INPUT inputConnect);
1935 MS_BOOL API_AUDIO_CUSTOMER_SE_Disconnect(API_AUDIO_CUSTOMER_SE_INDEX currentConnect, API_AUDIO_CUSTOMER_SE_INPUT inputConnect);
1936 MS_BOOL API_AUDIO_CUSTOMER_SNDOUT_Connect(API_AUDIO_CUSTOMER_SOUNDOUT_INDEX currentConnect, API_AUDIO_CUSTOMER_SOUNDOUT_INPUT inputConnect);
1937 MS_BOOL API_AUDIO_CUSTOMER_SNDOUT_Disconnect(API_AUDIO_CUSTOMER_SOUNDOUT_INDEX currentConnect, API_AUDIO_CUSTOMER_SOUNDOUT_INPUT inputConnect);
1938 MS_BOOL API_AUDIO_CUSTOMER_PCM_CAPTURE_Connect(API_AUDIO_CUSTOMER_PCM_CAPTURE_INDEX currentConnect, API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT inputConnect);
1939 MS_BOOL API_AUDIO_CUSTOMER_PCM_CAPTURE_Disconnect(API_AUDIO_CUSTOMER_PCM_CAPTURE_INDEX currentConnect, API_AUDIO_CUSTOMER_PCM_CAPTURE_INPUT inputConnect);
1940 MS_BOOL API_AUDIO_CUSTOMER_MP3_ENC_Connect(API_AUDIO_CUSTOMER_MP3_ENC_INPUT inputConnect);
1941 MS_BOOL API_AUDIO_CUSTOMER_MP3_ENC_Disconnect(API_AUDIO_CUSTOMER_MP3_ENC_INPUT inputConnect);
1942 MS_BOOL API_AUDIO_CUSTOMER_AAC_ENC_Connect(API_AUDIO_CUSTOMER_AAC_ENC_INPUT inputConnect);
1943 MS_BOOL API_AUDIO_CUSTOMER_AAC_ENC_Disconnect(API_AUDIO_CUSTOMER_AAC_ENC_INPUT inputConnect);
1944 
1945 /* Start & Stop */
1946 MS_BOOL API_AUDIO_CUSTOMER_SetCodecType(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMER_CODEC_TYPE audioType);
1947 MS_BOOL API_AUDIO_CUSTOMER_StartDecoding(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
1948 MS_BOOL API_AUDIO_CUSTOMER_StopDecoding(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
1949 MS_BOOL API_AUDIO_CUSTOMER_PauseDecoding(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
1950 MS_BOOL API_AUDIO_CUSTOMER_SetMainDecoderOutput(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
1951 
1952 /* SPDIF */
1953 MS_BOOL API_AUDIO_CUSTOMER_SPDIF_TX_SetOutputType(API_AUDIO_CUSTOMER_SPDIF_TX_MODE eSPDIFMode);
1954 API_AUDIO_CUSTOMER_SPDIF_TX_MODE API_AUDIO_CUSTOMER_SPDIF_TX_GetOutputType(void);
1955 MS_BOOL API_AUDIO_CUSTOMER_SPDIF_TX_SetCopyInfo(API_AUDIO_CUSTOMER_SPDIF_COPYRIGHT copyInfo);
1956 MS_BOOL API_AUDIO_CUSTOMER_SPDIF_TX_SetCategoryCode(MS_U8 categoryCode);
1957 MS_BOOL API_AUDIO_CUSTOMER_SPDIF_TX_SetLightOnOff(MS_BOOL bOnOff);
1958 MS_BOOL API_AUDIO_CUSTOMER_SPDIF_TX_SetMonitorOnOff(MS_BOOL bOnOff);
1959 MS_BOOL API_AUDIO_CUSTOMER_SPDIF_TX_ChannelStatus_CTRL(API_AUDIO_CUSTOMER_SPDIF_CS_TYPE cs_mode, API_AUDIO_CUSTOMER_SPDIF_CS_TYPE_STATUS status);
1960 
1961 /* HDMI */
1962 MS_BOOL API_AUDIO_CUSTOMER_HDMI_RX_GetAudioMode(API_AUDIO_CUSTOMER_CODEC_TYPE *pHDMIMode);
1963 MS_BOOL API_AUDIO_CUSTOMER_HDMI_RX_GetCopyInfo(API_AUDIO_CUSTOMER_SPDIF_COPYRIGHT *pCopyInfo);
1964 MS_BOOL API_AUDIO_CUSTOMER_HDMI_RX_SetAudioReturnChannel(MS_BOOL bOnOff);
1965 MS_BOOL API_AUDIO_CUSTOMER_HDMI_RX_SetMonitorOnOff(MS_BOOL bOnOff);
1966 MS_BOOL API_AUDIO_CUSTOMER_HDMI_TX_SetOutputType(API_AUDIO_CUSTOMER_HDMI_TX_OUTPUT_TYPE eHDMIMode);
1967 MS_BOOL API_AUDIO_CUSTOMER_HDMI_TX_SetMonitorOnOff(MS_BOOL bOnOff);
1968 
1969 /* ATV */
1970 MS_BOOL API_AUDIO_CUSTOMER_SIF_SetInputSource(API_AUDIO_CUSTOMER_SIF_INPUT sifSource);
1971 MS_BOOL API_AUDIO_CUSTOMER_SIF_SetHighDevMode(API_AUDIO_CUSTOMER_SIF_HIDEV_BW bandwidth, MS_BOOL bOnOff);
1972 MS_BOOL API_AUDIO_CUSTOMER_SIF_SetAudioStandard(API_AUDIO_CUSTOMER_SIF_STANDARD sifStandard);
1973 MS_BOOL API_AUDIO_CUSTOMER_SIF_SetSoundMode(API_AUDIO_CUSTOMER_SIF_AUDIOMODE_TYPE u8SifSoundMode);
1974 API_AUDIO_CUSTOMER_SIF_AUDIOMODE_TYPE API_AUDIO_CUSTOMER_SIF_GetSoundMode(void);
1975 MS_BOOL API_AUDIO_CUSTOMER_SIF_SetMonitorOnOff(MS_BOOL bOnOff);
1976 MS_BOOL API_AUDIO_CUSTOMER_SIF_SetAutoMute(MS_BOOL bOnOff);
1977 API_AUDIO_CUSTOMER_SIF_STANDARD API_AUDIO_CUSTOMER_SIF_StartAutoStandardDetection(void);
1978 MS_BOOL API_AUDIO_CUSTOMER_SIF_SetThreshold(API_AUDIO_CUSTOMER_SIF_THR_TBL_TYPE *ThrTbl);
1979 MS_BOOL API_AUDIO_CUSTOMER_SIF_SetPALType(API_AUDIO_CUSTOMER_SIF_PAL_TYPE pal_type);
1980 MS_BOOL API_AUDIO_CUSTOMER_SIF_SendCmd(API_AUDIO_CUSTOMER_SIF_CmdType enAudSifCommand, MS_U8 comm_arg1, MS_U8 comm_arg2);
1981 MS_BOOL API_AUDIO_CUSTOMER_SIF_GetAudioStatus(API_AUDIO_CUSTOMER_SIF_AUDIOSTATUS *eCurrentAudioStatus);
1982 MS_BOOL API_AUDIO_CUSTOMER_SIF_IsPALType(API_AUDIO_CUSTOMER_SIF_PAL_TYPE pal_type);
1983 MS_BOOL API_AUDIO_CUSTOMER_SIF_SetPrescale(API_AUDIO_CUSTOMER_SIF_GAIN_TYPE gain_type, MS_S32 db_value); // db_value: The prescale value, unit is 0.25dB/Step.
1984                                                                                                          // 0: 0db, 1: 0.25dB,  2: 0.5dB, ...,  4: 1.0dB, ...,  8: 2dB
1985                                                                                                          //        -1:-0.25dB, -2:-0.5dB, ..., -4:-1.0dB, ..., -8:-2dB
1986 
1987 
1988 /* Decoder */
1989 MS_BOOL API_AUDIO_CUSTOMER_SetSyncMode(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, MS_BOOL bOnOff);
1990 MS_BOOL API_AUDIO_CUSTOMER_GetDecodingType(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMER_CODEC_TYPE *pAudioType);
1991 MS_BOOL API_AUDIO_CUSTOMER_SetDualMonoOutMode(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMER_DUALMONO_MODE outputMode);
1992 MS_BOOL API_AUDIO_CUSTOMER_GetESInfo(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, void * pAudioESInfo);
1993 MS_BOOL API_AUDIO_CUSTOMER_IsESExist(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
1994 MS_BOOL API_AUDIO_CUSTOMER_SetAudioDescription(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, MS_BOOL bOnOff);
1995 MS_BOOL API_AUDIO_CUSTOMER_SetTrickMode(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMER_TRICK_MODE eTrickMode);
1996 MS_BOOL API_AUDIO_CUSTOMER_GetBufferStatus(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, MS_U32 *pMaxSize, MS_U32 *pFreeSize);
1997 MS_BOOL API_AUDIO_CUSTOMER_SetAdecPcmPath(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMER_ADEC_PCM_PATH pcmPath);
1998 MS_BOOL API_AUDIO_CUSTOMER_AdecPcmReady(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
1999 MS_U32  API_AUDIO_CUSTOMER_AdecPcmGet(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, void * pOutPcm, MS_U32 u32Size);
2000 MS_BOOL API_AUDIO_CUSTOMER_AdecRegisterDecodeDoneCallback(pfnAudioCustomerAdecDecodeDone pfnDecodeDoneCallBack);
2001 MS_BOOL API_AUDIO_CUSTOMER_AdecRegisterEndOfStreamCallback(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, pfnAudioCustomerAdecEndOfStream pfnEndOfStreamCallBack);
2002 MS_BOOL API_AUDIO_CUSTOMER_AdecRegisterUnderrunCallback(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, pfnAudioCustomerAdecUnderrun pfnUnderrunCallBack);
2003 MS_BOOL API_AUDIO_CUSTOMER_Auto_Recovery_SetMonitorOnOff(MS_BOOL bOnOff);
2004 
2005 /* Common Decoder */
2006 MS_S32 API_AUDIO_CUSTOMER_COMMON_DECODER_Open(void * pData);
2007 MS_S32 API_AUDIO_CUSTOMER_COMMON_DECODER_Close(MS_S32 s32DeviceID);
2008 MS_S32 API_AUDIO_CUSTOMER_COMMON_DECODER_Start(MS_S32 s32DeviceID);
2009 MS_S32 API_AUDIO_CUSTOMER_COMMON_DECODER_Stop(MS_S32 s32DeviceID);
2010 MS_S32 API_AUDIO_CUSTOMER_COMMON_DECODER_Set(MS_S32 s32DeviceID, API_AUDIO_CUSTOMER_COMMON_DECODER_COMMAND Cmd, void* pData);
2011 MS_S32 API_AUDIO_CUSTOMER_COMMON_DECODER_Get(MS_S32 s32DeviceID, API_AUDIO_CUSTOMER_COMMON_DECODER_COMMAND Cmd, void* pData);
2012 MS_U32 API_AUDIO_CUSTOMER_COMMON_DECODER_Read(MS_S32 s32DeviceID, void* pBuf, MS_U32 u32Size);
2013 MS_U32 API_AUDIO_CUSTOMER_COMMON_DECODER_Write(MS_S32 s32DeviceID, void* pBuf, MS_U32 u32Size);
2014 MS_S32 API_AUDIO_CUSTOMER_COMMON_DECODER_Flush(MS_S32 s32DeviceID);
2015 
2016 /* Common */
2017 MS_BOOL API_AUDIO_CUSTOMER_SetAudioParam(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMER_PARAM_TYPE paramType, void *pParam);
2018 MS_BOOL API_AUDIO_CUSTOMER_GetAudioInfo(API_AUDIO_CUSTOMER_ADEC_INDEX  adecIndex, API_AUDIO_CUSTOMER_INFO_TYPE  infoType,  void *pInfo);
2019 
2020 /* Customized patch */
2021 MS_BOOL API_AUDIO_CUSTOMIZED_PATCH_SetAudioParam(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMIZED_PATCH_PARAM_TYPE paramType, void *pParam);
2022 MS_BOOL API_AUDIO_CUSTOMIZED_PATCH_GetAudioInfo(API_AUDIO_CUSTOMER_ADEC_INDEX  adecIndex, API_AUDIO_CUSTOMIZED_PATCH_INFO_TYPE  infoType,  void *pInfo);
2023 
2024 /* Clip Play for ES */
2025 MS_BOOL API_AUDIO_CUSTOMER_PlayClipDecoder(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMER_CLIP_DEC_PARAM clipInfo, MS_U32 bufSize, void *pBufClip, pfnAudioCustomerAdecoderClipDone pfnCallBack);
2026 MS_BOOL API_AUDIO_CUSTOMER_StopClipDecoder(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
2027 MS_BOOL API_AUDIO_CUSTOMER_PauseClipDecoder(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
2028 MS_BOOL API_AUDIO_CUSTOMER_ResumeClipDecoder(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
2029 
2030 /* Clip Play for PCM */
2031 MS_BOOL API_AUDIO_CUSTOMER_PlayClipMixer(API_AUDIO_CUSTOMER_MIXER_INDEX mixerIndex, API_AUDIO_CUSTOMER_CLIP_MIX_PARAM clipInfo, MS_U32 bufSize, void *pBufClip, pfnAudioCustomerAmixerClipDone pfnCallBack);
2032 MS_BOOL API_AUDIO_CUSTOMER_StopClipMixer(API_AUDIO_CUSTOMER_MIXER_INDEX mixerIndex);
2033 MS_BOOL API_AUDIO_CUSTOMER_PauseClipMixer(API_AUDIO_CUSTOMER_MIXER_INDEX mixerIndex);
2034 MS_BOOL API_AUDIO_CUSTOMER_ResumeClipMixer(API_AUDIO_CUSTOMER_MIXER_INDEX mixerIndex);
2035 
2036 /* Gain, Mute & Delay */
2037 //---Gain---
2038 MS_BOOL API_AUDIO_CUSTOMER_SetAudioDescriptionGain(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, MS_U32 gain);
2039 MS_BOOL API_AUDIO_CUSTOMER_SetPCMMixerInputGain(API_AUDIO_CUSTOMER_MIXER_INDEX mixerIndex, MS_U32 gain);
2040 MS_BOOL API_AUDIO_CUSTOMER_SetFWMixerChannelGain(API_AUDIO_CUSTOMER_FWM_INDEX currentConnect, API_AUDIO_CUSTOMER_FWM_INPUT inputConnect, MS_U32 gain);
2041 MS_BOOL API_AUDIO_CUSTOMER_SetI2SOutGain(MS_U32 gain);
2042 MS_BOOL API_AUDIO_CUSTOMER_SetLineOutGain(API_AUDIO_CUSTOMER_LINE_OUT_IDX lineIndex, MS_U32 gain);
2043 MS_BOOL API_AUDIO_CUSTOMER_SetSPDIFOutGain(MS_U32 gain);
2044 MS_BOOL API_AUDIO_CUSTOMER_SetHDMIOutGain(MS_U32 gain);
2045 //---Mute---
2046 MS_BOOL API_AUDIO_CUSTOMER_SetPCMMixerInputMute(API_AUDIO_CUSTOMER_MIXER_INDEX mixerIndex, MS_BOOL bOnOff);
2047 MS_BOOL API_AUDIO_CUSTOMER_SetFWMixerChannelMute(API_AUDIO_CUSTOMER_FWM_INDEX currentConnect, API_AUDIO_CUSTOMER_FWM_INPUT inputConnect, MS_BOOL bOnOff);
2048 MS_BOOL API_AUDIO_CUSTOMER_SetI2SOutMute(MS_BOOL bOnOff);
2049 MS_BOOL API_AUDIO_CUSTOMER_SetLineOutMute(API_AUDIO_CUSTOMER_LINE_OUT_IDX lineIndex, MS_BOOL bOnOff);
2050 MS_BOOL API_AUDIO_CUSTOMER_SetSPDIFOutMute(MS_BOOL bOnOff);
2051 MS_BOOL API_AUDIO_CUSTOMER_SetHDMIOutMute(MS_BOOL bOnOff);
2052 MS_BOOL API_AUDIO_CUSTOMER_GetI2SOutMuteStatus(MS_BOOL *pOnOff);
2053 MS_BOOL API_AUDIO_CUSTOMER_GetLineOutMuteStatus(API_AUDIO_CUSTOMER_LINE_OUT_IDX lineIndex, MS_BOOL *pOnOff);
2054 MS_BOOL API_AUDIO_CUSTOMER_GetSPDIFOutMuteStatus(MS_BOOL *pOnOff);
2055 MS_BOOL API_AUDIO_CUSTOMER_MuteDuringLimitedTime_Input(MS_U32 per_50ms, API_AUDIO_CUSTOMER_FWM_INDEX eFWM, API_AUDIO_CUSTOMER_FWM_INPUT eCh);
2056 MS_BOOL API_AUDIO_CUSTOMER_MuteDuringLimitedTime_Output(MS_U32 per_50ms, API_AUDIO_CUSTOMER_OUTPUT_TYPE ePort);
2057 //---Delay---
2058 MS_BOOL API_AUDIO_CUSTOMER_SetChannelDelay(API_AUDIO_CUSTOMER_CH_SOUND ch, MS_U32 delay);
2059 MS_BOOL API_AUDIO_CUSTOMER_SetAudioDelay(MS_U32 delay);
2060 MS_BOOL API_AUDIO_CUSTOMER_SetSpdifDelay(MS_U32 delay);
2061 MS_BOOL API_AUDIO_CUSTOMER_SetHdmiDelay(MS_U32 delay);
2062 
2063 /* AENC */
2064 MS_BOOL API_AUDIO_CUSTOMER_AENC_Start(API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT encFormat);
2065 MS_BOOL API_AUDIO_CUSTOMER_AENC_Stop(API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT encFormat);
2066 MS_BOOL API_AUDIO_CUSTOMER_AENC_RegisterCallback(API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT encFormat, pfnAudioCustomerAENCDataHandling pfnCallBack);
2067 MS_BOOL API_AUDIO_CUSTOMER_AENC_SetInfo(API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT encFormat, API_AUDIO_CUSTOMER_AENC_INFO info);
2068 MS_BOOL API_AUDIO_CUSTOMER_AENC_GetInfo(API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT encFormat, API_AUDIO_CUSTOMER_AENC_INFO *pInfo);
2069 MS_BOOL API_AUDIO_CUSTOMER_AENC_SetGain(API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT encFormat, MS_U32 gain);
2070 MS_BOOL API_AUDIO_CUSTOMER_AENC_CopyData(API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT encFormat, MS_U8 *pDest, MS_U8 *pBufAddr, MS_U32 datasize, MS_U8 *pRStart, MS_U8 *pREnd);
2071 MS_BOOL API_AUDIO_CUSTOMER_AENC_ReleaseData(API_AUDIO_CUSTOMER_AENC_ENCODING_FORMAT encFormat, MS_U8 *pBufAddr, MS_U32 datasize);
2072 
2073 /* PCM Capture */
2074 MS_BOOL API_AUDIO_CUSTOMER_PCM_StartUpload(API_AUDIO_CUSTOMER_PCM_CAPTURE_INDEX currentConnect);
2075 MS_BOOL API_AUDIO_CUSTOMER_PCM_StopUpload(API_AUDIO_CUSTOMER_PCM_CAPTURE_INDEX currentConnect);
2076 MS_BOOL API_AUDIO_CUSTOMER_PCM_RegisterSendPCMCallback(API_AUDIO_CUSTOMER_PCM_CAPTURE_INDEX currentConnect, pfnAudioCustomerPCMSending pfnCallBack);
2077 MS_BOOL API_AUDIO_CUSTOMER_PCM_SetGain(API_AUDIO_CUSTOMER_PCM_CAPTURE_INDEX currentConnect, MS_U32 gain);
2078 MS_BOOL API_AUDIO_CUSTOMER_PCM_SetMute(API_AUDIO_CUSTOMER_PCM_CAPTURE_INDEX currentConnect, MS_BOOL bOnOff);
2079 MS_BOOL API_AUDIO_CUSTOMER_PCM_SetRequestSizeInMs(MS_U32 request_ms);
2080 
2081 /* PCM IO Control */
2082 MS_S32  API_AUDIO_CUSTOMER_PCM_Open(API_AUDIO_CUSTOMER_PCMIO_PARAM *pData);
2083 MS_S32  API_AUDIO_CUSTOMER_PCM_Close(MS_S32 s32DeviceId);
2084 MS_S32  API_AUDIO_CUSTOMER_PCM_Start(MS_S32 s32DeviceId);
2085 MS_S32  API_AUDIO_CUSTOMER_PCM_Stop(MS_S32 s32DeviceId);
2086 MS_S32  API_AUDIO_CUSTOMER_PCM_Set(MS_S32 s32DeviceId, MS_U32 u32Cmd, const void *pData);
2087 MS_S32  API_AUDIO_CUSTOMER_PCM_Get(MS_S32 s32DeviceId, MS_U32 u32Cmd, void *pData);
2088 MS_U32  API_AUDIO_CUSTOMER_PCM_Read(MS_S32 s32DeviceId, void *pBuf, MS_U32 u32Size);
2089 MS_U32  API_AUDIO_CUSTOMER_PCM_Write(MS_S32 s32DeviceId, const void *pBuf, MS_U32 u32Size);
2090 MS_S32  API_AUDIO_CUSTOMER_PCM_Flush(MS_S32 s32DeviceId);
2091 
2092 /* MM New Mode */
2093 MS_PHY  API_AUDIO_CUSTOMER_GetDDRInfo(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMER_DDRINFO DDRInfo);
2094 MS_BOOL API_AUDIO_CUSTOMER_MM2_initAesInfo(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
2095 MS_BOOL API_AUDIO_CUSTOMER_MM2_checkAesInfo(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMER_AES_INFO *aes_info);
2096 MS_BOOL API_AUDIO_CUSTOMER_MM2_inputAesFinished(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, MS_U32 es_size, MS_BOOL ptsExist, MS_U64 pts);
2097 MS_BOOL API_AUDIO_CUSTOMER_MM2_AD_initAesInfo(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex);
2098 MS_BOOL API_AUDIO_CUSTOMER_MM2_AD_checkAesInfo(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, API_AUDIO_CUSTOMER_AES_INFO *aes_info);
2099 MS_BOOL API_AUDIO_CUSTOMER_MM2_AD_inputAesFinished(API_AUDIO_CUSTOMER_ADEC_INDEX adecIndex, MS_U32 es_size, MS_BOOL ptsExist, MS_U64 pts);
2100 
2101 /* Mstar Sound Effect */
2102 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_Enable(API_AUDIO_CUSTOMER_MSTAR_SE_TYPE Type, MS_BOOL bOnOff);
2103 
2104 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_GEQ()
2105 ///@brief \b Function \b Description: This routine is used to set the the 5-band GEQ u8Level
2106 ///@param <IN> \b u8band    :  GEQ band  0~4 // 0:120Hz, 1:500Hz, 2:1500Hz, 3:5000Hz, 4:10000Hz
2107 ///@param <IN> \b s8level   :  GEQ level -48~48(-12dB~12dB, step 0.25dB)
2108 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_GEQ(MS_U8 u8band, MS_S8 s8level);
2109 
2110 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_PEQCoef()
2111 ///@brief \b Function \b Description: This routine is used to set the PEQ parameters
2112 ///@param <IN> \b peq_coef->band    :  PEQ band select ( 0 ~ 7 )
2113 ///@param <IN> \b peq_coef->enable  :  PEQ band enable/disable ( 0:disable  1:enable )
2114 ///@param <IN> \b peq_coef->a0      :  PEQ coefficient a0 (check below sampele code to calculate coefficient)
2115 ///@param <IN> \b peq_coef->a1      :  PEQ coefficient a1 (check below sampele code to calculate coefficient)
2116 ///@param <IN> \b peq_coef->a2      :  PEQ coefficient a2 (check below sampele code to calculate coefficient)
2117 ///@param <IN> \b peq_coef->b1      :  PEQ coefficient b1 (check below sampele code to calculate coefficient)
2118 ///@param <IN> \b peq_coef->b2      :  PEQ coefficient b2 (check below sampele code to calculate coefficient)
2119 ///
2120 /// @@@ Here are sample codes to calculate PEQ Coefficents @@@
2121 /// @param <IN> \b Gain: -12dB ~ 12dB
2122 /// @param <IN> \b Fc (Hz)
2123 /// @param <IN> \b Q : 0.5~16.0 (band width: wide to narrow)
2124 ///void PEQ_Coefficent_Calculation(const float Gain, const int Fc, const float Q)
2125 ///{
2126 ///    float coef;
2127 ///    float G, fc, Q;
2128 ///    float fb,d,v0,H0,aBC,fm,fz,kb;
2129 ///    unsigned int a0, a1, a2, b1, b2;
2130 ///
2131 ///    fb = Fc / Q;
2132 ///    d = - cos( 2 * 3.1415926 * Fc / 48000);
2133 ///    v0 = powf(10.0, (Gain / 20.0));
2134 ///    H0 = v0 -1;
2135 ///    aBC=0;
2136 ///    fm=0;
2137 ///    fz=1;
2138 ///    kb = tan ( 3.1415926 * fb / 48000);
2139 ///
2140 ///    if (Gain >=0)
2141 ///    {
2142 ///        fz = kb - 1;
2143 ///        fm = kb + 1;
2144 ///    }
2145 ///    else
2146 ///    {
2147 ///        fz = kb - v0;
2148 ///        fm = kb + v0;
2149 ///    }
2150 ///
2151 ///    aBC = fz / fm ;
2152 ///    coef = 1 + (1 + aBC) * H0 / 2;
2153 ///    a0 = (long)(coef * 4194304);
2154 ///    coef = d * (1 - aBC);
2155 ///    a1 = (long)(coef * 4194304);
2156 ///    coef = -aBC - (1 + aBC) * H0 /2;
2157 ///    a2 = (long)(coef * 4194304);
2158 ///    coef = d * (1 - aBC);
2159 ///    b1 = (long)(-coef * 4194304);
2160 ///    coef = -aBC;
2161 ///    b2 = (long)(-coef * 4194304);
2162 ///
2163 ///    printf("PEQ Coefficient:\n");
2164 ///    printf("a0:%lx \n",a0));
2165 ///    printf("a1:%lx \n",a1));
2166 ///    printf("a2:%lx \n",a2));
2167 ///    printf("b1:%lx \n",b1));
2168 ///    printf("b2:%lx \n",b2));
2169 ///}
2170 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_PEQCoef(API_AUDIO_CUSTOMER_MSTAR_PEQ_COEF *peq_coef);
2171 
2172 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_HPFCoef()
2173 ///@brief \b Function \b Description: This routine is used to set the HPF parameters
2174 ///@param <IN> \b hpf_coef->a0      :  HPF coefficient a0 (check below sampele code to calculate coefficient)
2175 ///@param <IN> \b hpf_coef->a1      :  HPF coefficient a1 (check below sampele code to calculate coefficient)
2176 ///@param <IN> \b hpf_coef->a2      :  HPF coefficient a2 (check below sampele code to calculate coefficient)
2177 ///@param <IN> \b hpf_coef->b1      :  HPF coefficient b1 (check below sampele code to calculate coefficient)
2178 ///@param <IN> \b hpf_coef->b2      :  HPF coefficient b2 (check below sampele code to calculate coefficient)
2179 ///
2180 /// @@@ Here are sample codes to calculate HPF Coefficents @@@
2181 /// @param <IN> \b Fc (Hz): 50Hz~200Hz, step 1Hz
2182 ///void HPF_Coefficent_Calculation( const int Fc )
2183 ///{
2184 ///    float coef[5];
2185 ///    float dem;
2186 ///    float Q;
2187 ///    float k;
2188 ///    float kpow2;
2189 ///    unsigned int a0, a1, a2, b1, b2;
2190 ///
2191 ///    k = tan((3.1415926*Fc)/48000);
2192 ///    Q = 1/sqrt(2);
2193 ///
2194 ///    kpow2 = k*k;
2195 ///
2196 ///    dem = 1 + k/Q + kpow2;
2197 ///    coef[0] = 1/dem;
2198 ///    coef[1] = -2/dem;
2199 ///    coef[2] = 1/dem;
2200 ///    coef[3] = 2*(kpow2-1)/dem;
2201 ///    coef[4] = (1 - k/Q + kpow2)/dem;
2202 ///
2203 ///    a0 = (long)(coef[0] * 8388608/2);
2204 ///    a1 = (long)(coef[1] * 8388608/2);
2205 ///    a2 = (long)(coef[2] * 8388608/2);
2206 ///    b1 = (long)(-coef[3] * 8388608/2);
2207 ///    b2 = (long)(-coef[4] * 8388608/2);
2208 ///    printf("HPF Coefficient:\n");
2209 ///    printf("a0:%lx \n",a0));
2210 ///    printf("a1:%lx \n",a1));
2211 ///    printf("a2:%lx \n",a2));
2212 ///    printf("b1:%lx \n",b1));
2213 ///    printf("b2:%lx \n",b2));
2214 ///}
2215 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_HPFCoef(API_AUDIO_CUSTOMER_MSTAR_HPF_COEF *hpf_coef);
2216 
2217 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_MODE(API_AUDIO_CUSTOMER_MSTAR_AVC_MODE mode);
2218 
2219 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_LEVEL()
2220 ///@brief \b Function \b Description: This routine is used to set the AVC clipping level
2221 ///@param <IN> \b u16level    :  AVC clipping u16level
2222 ///                              0x00--  0      dBFS
2223 ///                              0x01--  -0.5   dBFS
2224 ///                              0x20--  -16    dBFS
2225 ///                              0x50--  -40    dBFS
2226 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_LEVEL(MS_U16 u16level);
2227 
2228 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_R_MODE_Begin()
2229 ///@brief \b Function \b Description: This routine is used to set the AVC R_Mode begin
2230 ///@param <IN> \b u16Begin    : default: 50 (-50dB), range: 0~60 (0dB ~ -60dB), End Must larger than Begin
2231 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_R_MODE_Begin(MS_U16 u16Begin);
2232 
2233 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_R_MODE_End()
2234 ///@brief \b Function \b Description: This routine is used to set the AVC R_Mode End
2235 ///@param <IN> \b u16End    : default: 20 (-20dB), range: 0~60 (0dB ~ -60dB), End Must larger than Begin
2236 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_R_MODE_End(MS_U16 u16End);
2237 
2238 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_R_MODE_Slope()
2239 ///@brief \b Function \b Description: This routine is used to set the AVC R_Mode offset
2240 ///@param <IN> \b u16Slope    : range: 1 ~ 3 (default: 2)
2241 ///                       - u16Slope = 1 --> 0.75
2242 ///                       - u16Slope = 2 --> 0.5
2243 ///                       - u16Slope = 3 --> 0.25
2244 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_R_MODE_Slope(MS_U16 u16Slope);
2245 
2246 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_S_MODE_OFFSET()
2247 ///@brief \b Function \b Description: This routine is used to set the AVC L_Mode offset (min value)
2248 ///@param <IN> \b u16offset    : range: +0 ~ +12 dB
2249 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_S_MODE_OFFSET(MS_U16 u16offset);
2250 
2251 ////////////////////////////////////////////////////////////////////////////////
2252 /// @brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_AttackTime()
2253 /// @brief \b Function \b Description: This routine is used to set the AVC attack time.
2254 /// @param AvcAT       \b :  AVC attack time
2255 ///                       - AvcAT = 0 --> 20  ms
2256 ///                       - AvcAT = 1 --> 100 ms
2257 ///                       - AvcAT = 2 --> 200 ms
2258 ///                       - AvcAT = 3 --> 1 sec
2259 ////////////////////////////////////////////////////////////////////////////////
2260 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_AttackTime(MS_U8 AvcAT);
2261 
2262 ////////////////////////////////////////////////////////////////////////////////
2263 /// @brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_ReleaseTime()
2264 /// @brief \b Function \b Description: This routine is used to set the AVC  release time .
2265 /// @param AvcRT       \b :  AVC release time
2266 ///                       - AvcRT = 0 --> 1 sec
2267 ///                       - AvcRT = 1 --> 2 sec
2268 ///                       - AvcRT = 2 --> 100 ms
2269 ///                       - AvcRT = 3 --> 200 ms
2270 ////////////////////////////////////////////////////////////////////////////////
2271 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_AVC_ReleaseTime(MS_U8 AvcRT);
2272 
2273 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_DRC_LEVEL()
2274 ///@brief \b Function \b Description: This routine is used to set the DRC clipping level
2275 ///@param <IN> \b u16level    :  DRC clipping u16level
2276 ///                              0x00--  0      dBFS
2277 ///                              0x01--  -0.5   dBFS
2278 ///                              0x20--  -16    dBFS
2279 ///                              0x50--  -40    dBFS
2280 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_DRC_LEVEL(MS_U16 u16level);
2281 
2282 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_BALANCE()
2283 ///@brief \b Function \b Description: This routine is used to set the volume balance
2284 ///@param <IN> \b Lbalance    :  balance L  0x00(0dB)~0xFF(mute)  step: -0.25dB
2285 ///@param <IN> \b Lbalance    :  balance R  0x00(0dB)~0xFF(mute)  step: -0.25dB
2286 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_BALANCE(MS_U16 Lbalance, MS_U16 Rbalance);
2287 
2288 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_SET_NR_Threshold()
2289 ///@brief \b Function \b Description: This routine is used to set noise reduction threshold
2290 ///@param <IN> \b u16level    :  NR level
2291 MS_BOOL API_AUDIO_CUSTOMER_MSTAR_SE_SET_NR_Threshold(MS_U16 u16level);
2292 
2293 ///@brief \b Function \b Name: API_AUDIO_CUSTOMER_MSTAR_SE_GET_NR_Status()
2294 ///@brief \b Function \b Description: This routine is used to get noise reduction status
2295 ///@param <IN> \b u16level    :  NR level
2296 MS_S32 API_AUDIO_CUSTOMER_MSTAR_SE_GET_NR_Status(void);
2297 
2298 /* Advanced Sound Effect */
2299 MS_BOOL API_AUDIO_CUSTOMER_DTS_SE_Enable(API_AUDIO_CUSTOMER_DTS_SE_TYPE seType);
2300 MS_BOOL API_AUDIO_CUSTOMER_DTS_SE_ProcessUnit_Enable(API_AUDIO_CUSTOMER_DTS_SE_UNIT_TYPE seUnit, MS_BOOL bOnOff);
2301 MS_BOOL API_AUDIO_CUSTOMER_DTS_SE_SetParam(API_AUDIO_CUSTOMER_DTS_SE_PARAM_TYPE param, MS_U32 u32value);
2302 MS_BOOL API_AUDIO_CUSTOMER_Dolby_DAP_Enable(MS_BOOL bOnOff);
2303 MS_BOOL API_AUDIO_CUSTOMER_Dolby_DAP_ProcessUnit_Enable(MS_BOOL bOnOff);
2304 MS_BOOL API_AUDIO_CUSTOMER_Dolby_DAP_SetParam(API_AUDIO_CUSTOMER_DOLBY_DAP_PARAM dap_params);
2305 
2306 /* Debug */
2307 void API_AUDIO_CUSTOMER_DebugMenu(void * pVoid, MS_BOOL scanf_bSupport);
2308 void API_AUDIO_CUSTOMER_DebugMenu_Non_Scanf_ParseCommand(char *paramsStr);
2309 
2310 
2311 //-----------------------------------------------------------------------------------
2312 // [PURPOSE] for SET
2313 //-----------------------------------------------------------------------------------
2314 typedef struct
2315 {
2316     MS_U32 Dbg_Param;
2317     MS_U32 Dbg_Param2;
2318     MS_U32 Dbg_Param3;
2319     MS_U32 Dbg_Param4;
2320     MS_U32 Dbg_Param5;
2321     MS_U32 Dbg_Param6;
2322     MS_U32 Dbg_Param7;
2323     MS_U32 Dbg_Param8;
2324     MS_U32 Dbg_Param9;
2325     MS_U32 Dbg_Param10;
2326 } API_AUDIO_CUSTOMER_DEBUG_PARAM;
2327 
2328 //-----------------------------------------------------------------------------------
2329 // [PURPOSE] for GET
2330 //-----------------------------------------------------------------------------------
2331 typedef struct
2332 {
2333     MS_U32 Dbg_Info;
2334     MS_U32 Dbg_Info2;
2335     MS_U32 Dbg_Info3;
2336     MS_U32 Dbg_Info4;
2337     MS_U32 Dbg_Info5;
2338     MS_U32 Dbg_Info6;
2339     MS_U32 Dbg_Info7;
2340     MS_U32 Dbg_Info8;
2341     MS_U32 Dbg_Info9;
2342     MS_U32 Dbg_Info10;
2343 } API_AUDIO_CUSTOMER_DEBUG_INFO;
2344 
2345 //Header-free api structure
2346 typedef struct
2347 {
2348     const char *name;
2349     void* pdata;
2350 } audio_tunnel;
2351 
2352 MS_BOOL API_AUDIO_CUSTOMER_Testing_7202(void * pVoid);
2353 
2354 
2355 #ifdef __cplusplus
2356 }
2357 #endif
2358 
2359 #endif // _API_AUDIO_CUSTOMER_H_
2360