xref: /utopia/UTPA2-700.0.x/modules/audio/drv/audio/drvAudio_Common.c (revision 53ee8cc121a030b8d368113ac3e966b4705770ef)
1 //******************************************************************************
2 // MStar Software
3 // Copyright (c) 2010 - 2012 MStar Semiconductor, Inc. All rights reserved.
4 // All software, firmware and related documentation herein ("MStar Software") are
5 // intellectual property of MStar Semiconductor, Inc. ("MStar") and protected by
6 // law, including, but not limited to, copyright law and international treaties.
7 // Any use, modification, reproduction, retransmission, or republication of all
8 // or part of MStar Software is expressly prohibited, unless prior written
9 // permission has been granted by MStar.
10 //
11 // By accessing, browsing and/or using MStar Software, you acknowledge that you
12 // have read, understood, and agree, to be bound by below terms ("Terms") and to
13 // comply with all applicable laws and regulations:
14 //
15 // 1. MStar shall retain any and all right, ownership and interest to MStar
16 //    Software and any modification/derivatives thereof.
17 //    No right, ownership, or interest to MStar Software and any
18 //    modification/derivatives thereof is transferred to you under Terms.
19 //
20 // 2. You understand that MStar Software might include, incorporate or be
21 //    supplied together with third party`s software and the use of MStar
22 //    Software may require additional licenses from third parties.
23 //    Therefore, you hereby agree it is your sole responsibility to separately
24 //    obtain any and all third party right and license necessary for your use of
25 //    such third party`s software.
26 //
27 // 3. MStar Software and any modification/derivatives thereof shall be deemed as
28 //    MStar`s confidential information and you agree to keep MStar`s
29 //    confidential information in strictest confidence and not disclose to any
30 //    third party.
31 //
32 // 4. MStar Software is provided on an "AS IS" basis without warranties of any
33 //    kind. Any warranties are hereby expressly disclaimed by MStar, including
34 //    without limitation, any warranties of merchantability, non-infringement of
35 //    intellectual property rights, fitness for a particular purpose, error free
36 //    and in conformity with any international standard.  You agree to waive any
37 //    claim against MStar for any loss, damage, cost or expense that you may
38 //    incur related to your use of MStar Software.
39 //    In no event shall MStar be liable for any direct, indirect, incidental or
40 //    consequential damages, including without limitation, lost of profit or
41 //    revenues, lost or damage of data, and unauthorized system use.
42 //    You agree that this Section 4 shall still apply without being affected
43 //    even if MStar Software has been modified by MStar in accordance with your
44 //    request or instruction for your use, except otherwise agreed by both
45 //    parties in writing.
46 //
47 // 5. If requested, MStar may from time to time provide technical supports or
48 //    services in relation with MStar Software to you for your use of
49 //    MStar Software in conjunction with your or your customer`s product
50 //    ("Services").
51 //    You understand and agree that, except otherwise agreed by both parties in
52 //    writing, Services are provided on an "AS IS" basis and the warranty
53 //    disclaimer set forth in Section 4 above shall apply.
54 //
55 // 6. Nothing contained herein shall be construed as by implication, estoppels
56 //    or otherwise:
57 //    (a) conferring any license or right to use MStar name, trademark, service
58 //        mark, symbol or any other identification;
59 //    (b) obligating MStar or any of its affiliates to furnish any person,
60 //        including without limitation, you and your customers, any assistance
61 //        of any kind whatsoever, or any information; or
62 //    (c) conferring any license or right under any intellectual property right.
63 //
64 // 7. These terms shall be governed by and construed in accordance with the laws
65 //    of Taiwan, R.O.C., excluding its conflict of law rules.
66 //    Any and all dispute arising out hereof or related hereto shall be finally
67 //    settled by arbitration referred to the Chinese Arbitration Association,
68 //    Taipei in accordance with the ROC Arbitration Law and the Arbitration
69 //    Rules of the Association by three (3) arbitrators appointed in accordance
70 //    with the said Rules.
71 //    The place of arbitration shall be in Taipei, Taiwan and the language shall
72 //    be English.
73 //    The arbitration award shall be final and binding to both parties.
74 //
75 //******************************************************************************
76 //<MStar Software>
77 ////////////////////////////////////////////////////////////////////////////////
78 //
79 // Copyright (c) 2008-2009 MStar Semiconductor, Inc.
80 // All rights reserved.
81 //
82 // Unless otherwise stipulated in writing, any and all information contained
83 // herein regardless in any format shall remain the sole proprietary of
84 // MStar Semiconductor Inc. and be kept in strict confidence
85 // ("MStar Confidential Information") by the recipient.
86 // Any unauthorized act including without limitation unauthorized disclosure,
87 // copying, use, reproduction, sale, distribution, modification, disassembling,
88 // reverse engineering and compiling of the contents of MStar Confidential
89 // Information is unlawful and strictly prohibited. MStar hereby reserves the
90 // rights to any and all damages, losses, costs and expenses resulting therefrom.
91 //
92 //  [for Doxygen]
93 /// file drvAudio_Common.c
94 /// @brief Subroutine for advance sound effect
95 /// @author MStarSemi Inc.
96 ////////////////////////////////////////////////////////////////////////////////
97 
98 //-------------------------------------------------------------------------------------------------
99 //  Include Files
100 //-------------------------------------------------------------------------------------------------
101 #include "ULog.h"
102 #include "MsCommon.h"
103 #include "MsVersion.h"
104 #include "MsIRQ.h"
105 #include "MsOS.h"
106 #ifdef MSOS_TYPE_LINUX_KERNEL
107 #include <linux/string.h>
108 #else
109 #include <string.h>
110 #endif
111 #include "drvBDMA.h"
112 
113 #include "drvAUDIO_if.h"
114 #include "drvAUDIO.h"
115 
116 #include "./internal/drvAUDIO_internal.h"
117 #include "./internal/drvADVSOUND.h"
118 #include "./internal/drvMAD.h"
119 #include "./internal/drvMAD2.h"
120 #include "./internal/drvSOUND.h"
121 #include "./internal/drvSIF.h"
122 #include "./internal/drvAudio_Common.h"
123 
124 #include "regAUDIO.h"
125 #include "drvBDMA.h"
126 #include "halAUDIO.h"
127 #include "halADVAUDIO.h"
128 
129 #include "halMAD.h"
130 #include "halMAD2.h"
131 #include "halSIF.h"
132 #include "halAUDIO.h"
133 #include "regAUDIO.h"
134 
135 //-------------------------------------------------------------------------------------------------
136 //  Driver Compiler Options
137 //-------------------------------------------------------------------------------------------------
138 MS_BOOL (*pFuncPtr_Setsystem)(AUDIO_DEC_ID DecId, AudioDecStatus_t *p_AudioDecStatus) = NULL;
139 
140 #define DRVAUDIO_COMMON_CHECK_SHM_INIT \
141     do { \
142         if (g_AudioVars2 == NULL) \
143         { \
144             AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "%s() : Warning! g_AudioVars2 should not be NULL !!!\n", __FUNCTION__); \
145             AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "%s() : Perform SHM Init here !!!\n", __FUNCTION__); \
146             if ( MDrv_AUDIO_SHM_Init() == FALSE) \
147             { \
148                 MS_ASSERT(0); \
149             } \
150         } \
151     } while(0)
152 
153 //-------------------------------------------------------------------------------------------------
154 //  Local Compiler Options
155 //-------------------------------------------------------------------------------------------------
156 
157 //-------------------------------------------------------------------------------------------------
158 //  Local Defines
159 //-------------------------------------------------------------------------------------------------
160 
161 
162 //-------------------------------------------------------------------------------------------------
163 //  Local Structures
164 //-------------------------------------------------------------------------------------------------
165 
166 
167 //------------------------------------------------------------------------------
168 // Local Functions Prototype
169 //------------------------------------------------------------------------------
170 
171 
172 //-------------------------------------------------------------------------------------------------
173 //  Extern Variables
174 //-------------------------------------------------------------------------------------------------
175 extern MS_U8 MDrv_AUTH_IPCheck(MS_U8 u8Bit);
176 extern AUDIO_SHARED_VARS2 * g_AudioVars2;
177 extern pFuncPtr_SetAudioParam2  g_FuncPrt_Hal_SetAudioParam2;
178 extern pFuncPtr_GetAudioInfo2   g_FuncPrt_Hal_GetAudioInfo2;
179 
180 //-------------------------------------------------------------------------------------------------
181 //  Global Variables
182 //-------------------------------------------------------------------------------------------------
183 
184 
185 //-------------------------------------------------------------------------------------------------
186 //  Local Variables
187 //-------------------------------------------------------------------------------------------------
188 static ADVSND_TYPE MDrv_CurrAdvSndtype = ADV_NONE;
189 static MS_U8 ADVSOUND_IP_BIT[] =
190 {
191   AU_DVB2_AUTHBIT_NULL,                  //MSAPI_AUD_ADVSND_PL2,          ///<ID = 0
192   AU_DVB2_AUTHBIT_BBE,                   //MSAPI_AUD_ADVSND_BBE,          ///<ID = 1
193   AU_DVB2_AUTHBIT_SRS,                   //MSAPI_AUD_ADVSND_SRS,          ///<ID = 2
194   AU_DVB2_AUTHBIT_VDS,                   //MSAPI_AUD_ADVSND_VDS,          ///<ID = 3
195   AU_DVB2_AUTHBIT_VSPK,                  //MSAPI_AUD_ADVSND_VSPK,         ///<ID = 4
196   AU_DVB2_AUTHBIT_NULL,                  //MSAPI_AUD_ADVSND_SUPV,         ///<ID = 5
197   AU_DVB2_AUTHBIT_TSHD,                  //MSAPI_AUD_ADVSND_TSHD,         ///<ID = 6
198   AU_DVB2_AUTHBIT_SRS_StudioSND,         //MSAPI_AUD_ADVSND_SSHD_TSHD,    ///<ID = 55
199   AU_DVB2_AUTHBIT_BONGIOVI_DPS,          //MSAPI_AUD_ADVSND_DPS,          ///<ID = 93
200 };
201 
202 
203 //-------------------------------------------------------------------------------------------------
204 //  Debug Functions
205 //-------------------------------------------------------------------------------------------------
206 
207 
208 //-------------------------------------------------------------------------------------------------
209 //  Local Functions
210 //-------------------------------------------------------------------------------------------------
211 
MDrv_AUDIO_CheckHashkey(void)212 void MDrv_AUDIO_CheckHashkey(void)
213 {
214     MS_U32 ip_auth = 0;
215     DRVAUDIO_COMMON_CHECK_SHM_INIT;
216     MS_BOOL DolbyAACFlag = 0;
217     MS_BOOL DolbyEncFlag = 0;
218 
219     /* IP AUTH :
220      *      ip_auth[0] = 1: Disable AC3
221      *      ip_auth[1] = 1: Disable AC3P
222      *      ip_auth[2] = 1: Disable DDCO (HE-AAC)
223      *      ip_auth[3] = 1: Disable DTS
224      *      ip_auth[4] = 1: Disable Dolby MS10-DDT (HE-AAC)
225      *      ip_auth[5] = 1: Disable WMA
226      *      ip_auth[6] = 1: Disable DRA
227      *      ip_auth[7] = 1: Disable DTSLBR
228      *      ip_auth[8] = 1: Disable Generic HE-AAC
229      *      ip_auth[9] = 1: Disable Dolby MS11
230      *      ip_auth[10]= 1: Disable DTSE
231      *      ip_auth[11]= 1: Disable DTS NeoUltra
232      *      ip_auth[12]= 1: Demo Mode
233      *      ip_auth[13]= 1: Disable SRS_TSHD
234      *      ip_auth[14]= 1: Disable SRS_THEATERSOUND
235      *      ip_auth[15]= 1: Disable DTS StudioSound3D
236      *      ip_auth[16]= 1: Disable COOK
237      *      ip_auth[17]= 1: Disable DTS XLL
238      *      ip_auth[18]= 1: Disable MS12 LC profile
239      *      ip_auth[19]= 1: Disable MS12 C profile
240      *      ip_auth[20]= 1: Disable ABS3D
241      *      ip_auth[21]= 1: Disable MS12 B profile
242      *      ip_auth[22]= 1: Disable Dolby Volume
243      *      ip_auth[23]= 1: Disable SRS_PURESND
244      */
245 
246     if ( g_AudioVars2->g_bHashkeyFlag == TRUE )
247     {
248         return;
249     }
250 
251     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "===== Check Audio Decoder Protection from hash-key IP =====\n");
252     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_AC3))
253     {
254         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support DD.\n");
255     }
256     else
257     {
258         ip_auth |= 0x1;    /* Disable DD */
259         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check DD Fail, no DD license!!\n");
260     }
261 
262     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_AC3P))
263     {
264         ip_auth = ip_auth & 0xFFFFFFFE;    /* If DD+ is enabled, DD should be included as well */
265         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support DD+.\n");
266     }
267     else
268     {
269         ip_auth |= 0x2;    /* Disable DD+ */
270         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check DDP Fail, no DD+ license!!\n");
271     }
272 
273     if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DOLBY_MS11))
274     {
275         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support Dolby MS11.\n");
276         DolbyAACFlag = 1;
277         DolbyEncFlag = 1;
278     }
279     else if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DOLBY_MS11_WO_AAC))
280     {
281         ip_auth |= 0x10; /* Disable MS10_DDT */
282     }
283     else
284     {
285         ip_auth |= 0x200;    /* Disable Dolby MS11 */
286         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check Dolby MS11 Fail, no Dolby MS11 license!!\n");
287     }
288 
289     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DOLBY_MS12_LC))
290     {
291         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support Dolby MS12 LC profile.\n");
292         //dolby_aac_flag = 1;
293     }
294     else
295     {
296         ip_auth |= (1 << 18);    /* Disable Dolby MS12 LC profile*/
297         //AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check Dolby MS12 LC profile Fail, no Dolby MS12 LC profile license!!\n");
298     }
299 
300     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DOLBY_MS12_D))
301     {
302         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support Dolby MS12 D profile.\n");
303         DolbyAACFlag = 1;
304         DolbyEncFlag = 1;
305     }
306     else if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DOLBY_MS12_D_WO_AAC))
307     {
308         ip_auth |= 0x10; /* Disable MS10_DDT */
309     }
310     else
311     {
312         ip_auth |= (1 << 19);    /* Disable Dolby MS12 D profile */
313         //AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check Dolby MS12 D profile Fail, no Dolby MS12 D profile license!!\n");
314     }
315 
316     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DOLBY_MS12_B))
317     {
318         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support Dolby MS12 B profile.\n");
319         DolbyAACFlag = 1;
320         DolbyEncFlag = 1;
321     }
322     else if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DOLBY_MS12_B_WO_AAC))
323     {
324         ip_auth |= 0x10; /* Disable MS10_DDT */
325     }
326     else
327     {
328         ip_auth |= (1 << 21);    /* Disable Dolby MS12 B profile */
329         //AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check Dolby MS12 B profile Fail, no Dolby MS12 B profile license!!\n");
330     }
331 
332     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_MS10_DDT))
333     {
334         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support Dolby Pulse(MS10-DDT).\n");
335         DolbyAACFlag = 1;
336         DolbyEncFlag = 1;
337     }
338     else if (!(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DOLBY_MS11)||MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DOLBY_MS12_B)||MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DOLBY_MS12_D))  )
339     {
340         ip_auth |= 0x10; /* Disable MS10_DDT */
341     }
342 
343     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_GAAC))
344     {
345         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support Generic HE-AAC!!\n");
346         /* See if need to translate to Generic HE-AAC package */
347     }
348     else
349     {
350         ip_auth |= 0x100; /* Disable Generic HE-AAC */
351         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check AAC Fail, no any AAC license!!\n");
352     }
353 
354     if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DDE))
355     {
356         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support Dolby DDCO \n");
357         DolbyEncFlag = 1;
358     }
359     else
360     {
361         ip_auth |= 0x4;    /* Disable DDCO */
362         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check DDCO Fail, no DDCO license!!\n");
363     }
364 
365     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DTSDEC))
366     {
367         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support DTS DMP.\n");
368     }
369     else
370     {
371         ip_auth |= 0x8;    /* Disable DTS */
372         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check DTS Fail, no DTS license!!\n");
373     }
374 
375     if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_WMA))
376     {
377         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support WMA.\n");
378     }
379     else
380     {
381         ip_auth |= 0x20;    /* Disable WMA */
382         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check WMA Fail, no WMA license!!\n");
383     }
384 
385     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DRA))
386     {
387         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support DRA.\n");
388     }
389     else
390     {
391         ip_auth |= 0x40;    /* Disable DRA */
392         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check DRA Fail, no DRA license!!\n");
393     }
394 
395     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DTS_LBR))
396     {
397         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support DTSLBR.\n");
398     }
399     else
400     {
401         ip_auth |= 0x80;    /* Disable DTSLBR */
402         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check DTSLBR Fail, no DTSLBR license!!\n");
403     }
404 
405     if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DTSE))
406     {
407         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support DTSE.\n");
408     }
409     else
410     {
411         ip_auth |= 0x400;    /* Disable DTSE */
412         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check DTSE Fail, no DTSE license!!\n");
413     }
414 
415     if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DTSNeoUltra))
416     {
417         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support DTSNeoUltra.\n");
418     }
419     else
420     {
421         ip_auth |= 0x800;    /* Disable DTSNeoUltra */
422         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check DTSNeoUltra Fail, no DTSNeoUltra license!!\n");
423     }
424 
425     if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD))
426     {
427         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support SRS_TSHD.\n");
428     }
429     else
430     {
431         ip_auth |= 0x2000;    /* Disable SRS_TSHD */
432         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check SRS_TSHD Fail, no SRS_TSHD license!!\n");
433     }
434 
435     if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_SRS_StudioSND))
436     {
437         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support SRS_THEATERSOUND.\n");
438     }
439     else
440     {
441         ip_auth |= 0x4000;    /* Disable SRS_THEATERSOUND */
442         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check SRS_THEATERSOUND Fail, no SRS_THEATERSOUND license!!\n");
443     }
444 
445     if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DTS_StudioSound3D))
446     {
447         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support DTS_StudioSound3D.\n");
448     }
449     else
450     {
451         ip_auth |= 0x8000;    /* Disable DTS_StudioSound3D */
452         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check DTS_StudioSound3D Fail, no DTS_StudioSound3D license!!\n");
453     }
454 
455     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_COOK))
456     {
457         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support COOK.\n");
458     }
459     else
460     {
461         ip_auth |= 0x10000;    /* Disable COOK */
462         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check COOK Fail, no COOK license!!\n");
463     }
464 
465     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DTSHD))
466     {
467         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support DTS_HD.\n");
468         ip_auth &= 0xFFFFFBFF;  //if DTSHD then enable DTSE
469     }
470     else
471     {
472         ip_auth |= 0x20000;    /* Disable DTS_HD */
473         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check DTS_HD Fail, no DTS_HD license!!\n");
474     }
475 
476     if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DolbyVolume))
477     {
478         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support Dolby volume.\n");
479     }
480     else
481     {
482         ip_auth |= 0x400000;    /* Disable Dolby volume */
483         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check Dolby volume Fail, no Dolby volume license!!\n");
484     }
485 
486     if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_SRS_PURESND))
487     {
488         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash-key Support SRS_PURESND.\n");
489     }
490     else
491     {
492         ip_auth |= 0x800000;    /* Disable SRS_PURESND */
493         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Hash Key Check SRS_PURESND Fail, no SRS_PURESND license!!\n");
494     }
495 
496     if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DEMOMODE))
497     {
498         ip_auth |= 0x1000;
499         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "This is Demo Mode!!\n");
500     }
501 
502     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "===== Check Protection IP End                         =====\n");
503     HAL_AUDIO_CheckVersionInfo();
504 
505     HAL_AUDIO_SET_IPAUTH(ip_auth);
506 
507     if (HAL_AUDIO_CheckHashkeyDone(ip_auth) == -A_EINVAL)
508         MS_ASSERT(0);
509 
510     g_AudioVars2->DolbyAACFlag = DolbyAACFlag;
511     g_AudioVars2->DolbyEncFlag = DolbyEncFlag;
512 
513     g_AudioVars2->g_bHashkeyFlag = TRUE;
514 
515 }
516 
MDrv_AUDIO_SetAudioParam2(AUDIO_DEC_ID DecId,Audio_ParamType paramType,MS_VIRT Param)517 MS_BOOL MDrv_AUDIO_SetAudioParam2( AUDIO_DEC_ID DecId, Audio_ParamType paramType, MS_VIRT Param )
518 {
519     MS_BOOL bRet;
520 
521     if ( g_FuncPrt_Hal_SetAudioParam2 )
522     {
523         if ( paramType == Audio_ParamType_setAudioDecoder ||
524              paramType == Audio_ParamType_AllocDecoder )
525         {
526             MMA_AudioType AudioType;
527 
528             AudioType = (MMA_AudioType) Param;
529             MDrv_AUDIO_CheckHashkey();
530 
531             bRet = g_FuncPrt_Hal_SetAudioParam2(DecId, paramType, AudioType);
532         }
533         else
534         {
535             bRet = g_FuncPrt_Hal_SetAudioParam2(DecId, paramType, Param);
536         }
537     }
538     else
539     {
540         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_ERROR, "%s: g_FuncPrt_Hal_SetAudioParam2 is NULL !!\r\n", __FUNCTION__);
541         bRet = FALSE;
542     }
543 
544     return bRet;
545 }
546 
547 //====== STAOS PIP END 2012/02/01 ========
548 
549 ////////////////////////////////////////////////////////////////////////////////
550 /// @brief \b Function \b Name: MDrv_AUDIO_SetSystem()
551 /// @brief \b Function \b Description:  This function will load
552 ///                                     different audio decoder to audio system.
553 ///
554 ///                                     In Mstar audio system, we can support 1 or 2 decoders.
555 ///                                     One is for main DTV audio or Multimedia audio player.
556 ///                                     Another is for second audio decode (ex: used for Audio Description purpose)
557 ///
558 /// @param enDecSystem  \b : (En_DVB_decSystemType) decoder type
559 ///                        - parameter type "MSAPI_AUD_DVB_XXXX" is decoder type for main audio decoder
560 ///                        - parameter type "MSAPI_AUD_DVB2_XXXX" is decoder type for second audio decoder
561 ////////////////////////////////////////////////////////////////////////////////
MDrv_AUDIO_SetSystem(En_DVB_decSystemType enDecSystem)562 MS_BOOL MDrv_AUDIO_SetSystem(En_DVB_decSystemType enDecSystem)
563 {
564     MS_BOOL bRet = FALSE;
565 
566     MDrv_AUDIO_CheckHashkey();
567     HAL_AUDIO_SetSystem(enDecSystem);
568     bRet = TRUE;
569 
570     return bRet;
571 }
572 
MDrv_AUDIO_SetDecodeSystem(AUDIO_DEC_ID DecId,AudioDecStatus_t * p_AudioDecStatus)573 MS_BOOL MDrv_AUDIO_SetDecodeSystem(AUDIO_DEC_ID DecId, AudioDecStatus_t * p_AudioDecStatus)
574 {
575     MS_BOOL bRet = FALSE;
576 
577     DRVAUDIO_COMMON_CHECK_SHM_INIT;
578 
579     if (NULL == p_AudioDecStatus)
580     {
581         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_ERROR, "%s() : AudioDecStatus is null\n", __FUNCTION__);
582         return bRet;
583     }
584 
585     // check hash key and set to correct DSP code type
586     MDrv_AUDIO_CheckHashkey();
587 
588     if (pFuncPtr_Setsystem != NULL)
589     {
590         bRet = pFuncPtr_Setsystem(DecId,p_AudioDecStatus);
591     }
592 
593     if (TRUE == bRet)
594     {
595         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Reload Success\n");
596         memcpy(&g_AudioVars2->AudioDecStatus[DecId], p_AudioDecStatus, sizeof(AudioDecStatus_t));
597     }
598 
599     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "Input\n");
600     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "eAudFormat = %d\n", p_AudioDecStatus->eAudFormat);
601     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "eGroup = %d\n", p_AudioDecStatus->eGroup);
602     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "eDSPId = %d\n", p_AudioDecStatus->eDSPId);
603     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "eStcSource = %d\n", p_AudioDecStatus->eStcSource);
604 
605     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "DecId = %d\n", DecId);
606     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "eAudFormat = %d\n", g_AudioVars2->AudioDecStatus[DecId].eAudFormat);
607     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "eGroup = %d\n", g_AudioVars2->AudioDecStatus[DecId].eGroup);
608     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "eDSPId = %d\n", g_AudioVars2->AudioDecStatus[DecId].eDSPId);
609     AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "eStcSource = %d\n", g_AudioVars2->AudioDecStatus[DecId].eStcSource);
610 
611     return bRet;
612 }
613 
614 ////////////////////////////////////////////////////////////////////////////////
615 /// @brief \b Function \b Name: MDrv_SOUND_VDS_Enable()
616 /// @brief \b Function \b Description:  This function is used to set VDS
617 /// @param u8enVDS     \b : 1: enable, 0: disable
618 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_VDS_Enable(MS_U8 u8enVDS)619 void  MDrv_SOUND_VDS_Enable(MS_U8 u8enVDS)
620 {
621     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_VDS))
622     {
623         HAL_SOUND_VDS_Enable(u8enVDS);
624     }
625 }
626 
627 ////////////////////////////////////////////////////////////////////////////////
628 /// @brief \b Function \b Name: MDrv_SOUND_VSPK_Enable()
629 /// @brief \b Function \b Description:  This function is used to set VSPK
630 /// @param u8enVSPK    \b : 1: enable, 0: disable
631 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_VSPK_Enable(MS_U8 u8enVSPK)632 void  MDrv_SOUND_VSPK_Enable(MS_U8 u8enVSPK)
633 {
634     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_VSPK))
635     {
636         HAL_SOUND_VSPK_Enable(u8enVSPK);
637     }
638 }
639 
640 ////////////////////////////////////////////////////////////////////////////////
641 /// @brief \b Function \b Name: MDrv_SOUND_SRS_SetTsxtPara()
642 /// @brief \b Function \b Description:  This function is used to set paramters of SRS-XT
643 /// @param u8mode      \b : parameter mode
644 /// @param u8value     \b : parameter value
645 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_SRS_SetTsxtPara(MS_U8 u8mode,MS_U8 u8value)646 void  MDrv_SOUND_SRS_SetTsxtPara(MS_U8 u8mode, MS_U8 u8value)
647 {
648     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_SRS) && (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD) == 0))
649     {
650         HAL_SOUND_SRS_SetTsxtPara(u8mode, u8value);
651     }
652 }
653 
654 ////////////////////////////////////////////////////////////////////////////////
655 /// @brief \b Function \b Name: MDrv_SOUND_SRS_SetTshdPara()
656 /// @brief \b Function \b Description:  This function is used to set paramters of SRS-HD
657 /// @param u8mode      \b : parameter mode
658 /// @param u8value     \b : parameter value
659 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_SRS_SetTshdPara(MS_U8 u8mode,MS_U8 u8value)660 void  MDrv_SOUND_SRS_SetTshdPara(MS_U8 u8mode, MS_U8 u8value)
661 {
662     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD))
663     {
664         HAL_SOUND_SRS_SetTshdPara(u8mode, u8value);
665     }
666 }
667 
668 ////////////////////////////////////////////////////////////////////////////////
669 /// @brief \b Function \b Name: MDrv_SOUND_SRS_Enable()
670 /// @brief \b Function \b Description:  This function is used to set SRS-XT
671 /// @param u8enSRS     \b :  1: enable, 0: disable
672 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_SRS_Enable(MS_U8 u8enSRS)673 void  MDrv_SOUND_SRS_Enable(MS_U8 u8enSRS)
674 {
675     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_SRS) && (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD) == 0))
676     {
677         HAL_SOUND_SRS_Enable(u8enSRS);
678     }
679 }
680 
681 ////////////////////////////////////////////////////////////////////////////////
682 /// @brief \b Function \b Name: MDrv_SOUND_TSHD_Enable()
683 /// @brief \b Function \b Description:  This function is used to set SRS-HD
684 /// @param u8enSRS     \b :  1: enable, 0: disable
685 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_TSHD_Enable(MS_U8 u8enTSHD)686 void  MDrv_SOUND_TSHD_Enable(MS_U8 u8enTSHD)
687 {
688     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD))
689     {
690         HAL_SOUND_TSHD_Enable(u8enTSHD);
691     }
692 }
693 
694 ////////////////////////////////////////////////////////////////////////////////
695 /// @brief \b Function \b Name: MDrv_SOUND_VSPK_SetWMod()
696 /// @brief \b Function \b Description:  This function is used to set VSPK W Mode
697 /// @param u8VSPK_WMode \b :
698 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_VSPK_SetWMod(MS_U8 u8VSPK_WMode)699 void  MDrv_SOUND_VSPK_SetWMod(MS_U8 u8VSPK_WMode)
700 {
701     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_VSPK))
702     {
703         HAL_SOUND_VSPK_SetWMod(u8VSPK_WMode);
704     }
705 }
706 
707 ////////////////////////////////////////////////////////////////////////////////
708 /// @brief \b Function \b Name: MDrv_SOUND_VSPK_SetSMod()
709 /// @brief \b Function \b Description:  This function is used to set VSPK S Mode
710 /// @param u8VSPK_SMode \b u8VSPK_SMode:
711 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_VSPK_SetSMod(MS_U8 u8VSPK_SMode)712 void MDrv_SOUND_VSPK_SetSMod(MS_U8 u8VSPK_SMode)
713 {
714     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_VSPK))
715     {
716         HAL_SOUND_VSPK_SetSMod(u8VSPK_SMode);
717     }
718 }
719 
720 ////////////////////////////////////////////////////////////////////////////////
721 /// @brief \b Function \b Name: MDrv_SOUND_BBE_SetBbeMode()
722 /// @brief \b Function \b Description:  This function is used to set BBE Mode
723 /// @param u8EnBBE     \b :
724 /// @param u8BBEMode   \b :
725 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_BBE_SetBbeMode(MS_U8 u8EnBBE,MS_U8 u8BBEMode)726 void  MDrv_SOUND_BBE_SetBbeMode(MS_U8 u8EnBBE, MS_U8 u8BBEMode)
727 {
728     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_BBE))
729     {
730         HAL_SOUND_BBE_SetBbeMode(u8EnBBE, u8BBEMode);
731     }
732 }
733 
734 ////////////////////////////////////////////////////////////////////////////////
735 /// @brief \b Function \b Name: MDrv_SOUND_SRS_DC()
736 /// @brief \b Function \b Description:  This function is used to enable/disable SRS-XT Dialog Clarity
737 /// @param u8SRSenDC   \b :  1: enable, 0: disable
738 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_SRS_DC(MS_U8 u8SRSenDC)739 void  MDrv_SOUND_SRS_DC(MS_U8 u8SRSenDC)
740 {
741     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_SRS) && (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD) == 0))
742     {
743         HAL_SOUND_SRS_DC(u8SRSenDC);
744     }
745 }
746 
747 ////////////////////////////////////////////////////////////////////////////////
748 /// @brief \b Function \b Name: MDrv_SOUND_SRS_TruBass()
749 /// @brief \b Function \b Description:  This function is used to enable/disable SRS-XT Trubass
750 /// @param u8SRSenTruBass \b :  1: enable, 0: disable
751 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_SRS_TruBass(MS_U8 u8SRSenTruBass)752 void  MDrv_SOUND_SRS_TruBass(MS_U8 u8SRSenTruBass)
753 {
754     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_SRS) && (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD) == 0))
755     {
756         HAL_SOUND_SRS_TruBass(u8SRSenTruBass);
757     }
758 }
759 
760 ////////////////////////////////////////////////////////////////////////////////
761 /// @brief \b Function \b Name: MDrv_SOUND_TSHD_TruBass()
762 /// @brief \b Function \b Description:  This function is used to enable/disable SRS-HD Trubass
763 /// @param u8TSHDenTruBass \b :  1: enable, 0: disable
764 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_TSHD_TruBass(MS_U8 u8TSHDenTruBass)765 void  MDrv_SOUND_TSHD_TruBass(MS_U8 u8TSHDenTruBass)
766 {
767     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD))
768     {
769         HAL_SOUND_TSHD_TruBass(u8TSHDenTruBass);
770     }
771 }
772 
773 ////////////////////////////////////////////////////////////////////////////////
774 /// @brief \b Function \b Name: MDrv_SOUND_TSHD_Definition()
775 /// @brief \b Function \b Description:  This function is used to enable/disable SRS-HD Definition
776 /// @param u8TSHDenDefinition \b :  1: enable, 0: disable
777 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_TSHD_Definition(MS_U8 u8TSHDenDefinition)778 void  MDrv_SOUND_TSHD_Definition(MS_U8 u8TSHDenDefinition)
779 {
780     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD))
781     {
782         HAL_SOUND_TSHD_Definition(u8TSHDenDefinition);
783     }
784 }
785 
786 ////////////////////////////////////////////////////////////////////////////////
787 /// @brief \b Function \b Name: MDrv_SOUND_TSHD_Clarity()
788 /// @brief \b Function \b Description:  This function is used to enable/disable SRS-HD DC
789 /// @param u8TSHDenClarity \b :  1: enable, 0: disable
790 ////////////////////////////////////////////////////////////////////////////////
MDrv_SOUND_TSHD_Clarity(MS_U8 u8TSHDenClarity)791 void  MDrv_SOUND_TSHD_Clarity(MS_U8 u8TSHDenClarity)
792 {
793     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD))
794     {
795         HAL_SOUND_TSHD_Clarity(u8TSHDenClarity);
796     }
797 }
798 
799 ////////////////////////////////////////////////////////////////////////////////
800 /// @brief \b Function \b Name: MDrv_ADVSOUND_ProcessEnable
801 /// @brief \b Function \b Description: This routine is used to enable process of advanced sound effect.
802 /// @param <IN>        \b ADVSND_TYPE type
803 /// @param <OUT>       \b NONE    :
804 /// @param <RET>       \b  NONE    :
805 /// @param <GLOBAL>    \b NONE
806 ////////////////////////////////////////////////////////////////////////////////
MDrv_ADVSOUND_ProcessEnable(ADVSND_TYPE type)807 MS_BOOL MDrv_ADVSOUND_ProcessEnable(ADVSND_TYPE type)
808 {
809     MS_BOOL status = FALSE;
810 
811     if (!ADVSND_TYPE_Compare(type, MDrv_CurrAdvSndtype))
812     {
813         // set advance surround sound system
814         // 0: PL2,  1:BBE,  2: SRS  3:VDS, 4:VSPK, 5:SUPV, 6:TSHD, 7:DTS_ULTRATV
815 
816         if (ADVSND_TYPE_Compare(type, BBE))
817         {
818             if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_BBE))
819             {
820                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_BBE);
821                 MDrv_CurrAdvSndtype = BBE;
822                 MsOS_DelayTask(5);
823                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : BBE !!\033[0m \n");
824             }
825             else
826             {
827                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No BBE license!!\033[0m \n");
828                 status = FALSE;
829             }
830         }
831         else if (ADVSND_TYPE_Compare(type, SRS_TSXT))
832         {
833             if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_SRS))
834             {
835                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_SRS);
836                 MDrv_CurrAdvSndtype = SRS_TSXT;
837                 MsOS_DelayTask(5);
838                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : SRS TSXT !!\033[0m \n");
839             }
840             else
841             {
842                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No SONICMOTION ABS3D license!!\033[0m \n");
843                 status = FALSE;
844             }
845         }
846         else if (ADVSND_TYPE_Compare(type, DOLBY_PL2VDS))
847         {
848             if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_VDS))
849             {
850                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_VDS);
851                 MDrv_CurrAdvSndtype = DOLBY_PL2VDS;
852                 MsOS_DelayTask(5);
853                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : VDS !!\033[0m \n");
854             }
855             else
856             {
857                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No VDS license!!\033[0m \n");
858                 status = FALSE;
859             }
860         }
861         else if (ADVSND_TYPE_Compare(type, DOLBY_PL2VDPK))
862         {
863             if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_VSPK))
864             {
865                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_VSPK);
866                 MDrv_CurrAdvSndtype = DOLBY_PL2VDPK;
867                 MsOS_DelayTask(5);
868                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : VSPK !!\033[0m \n");
869             }
870             else
871             {
872                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No VSPK license!!\033[0m \n");
873                 status = FALSE;
874             }
875         }
876         else if (ADVSND_TYPE_Compare(type, SRS_TSHD))
877         {
878              if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_TSHD))
879              {
880                  status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_TSHD);
881                  MDrv_CurrAdvSndtype = SRS_TSHD;
882                  MsOS_DelayTask(5);
883                  AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : SRS TSHD !!\033[0m \n");
884              }
885              else
886              {
887                  AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No SRS TSHD license!!\033[0m \n");
888                  status = FALSE;
889              }
890         }
891         else if (ADVSND_TYPE_Compare(type, SRS_THEATERSOUND))
892         {
893             if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_SRS_StudioSND))
894             {
895                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_THEATERSOUND);
896                 MDrv_CurrAdvSndtype = SRS_THEATERSOUND;
897                 MsOS_DelayTask(5);
898                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : SRS StudioSound HD!!\033[0m \n");
899             }
900             else
901             {
902                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No SRS StudioSound HD license!!\033[0m \n");
903                 status = FALSE;
904             }
905         }
906         else if (ADVSND_TYPE_Compare(type, DTS_STUDIOSOUND_3D))
907         {
908             if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DTS_StudioSound3D))
909             {
910                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_STUDIOSOUND_3D);
911                 MDrv_CurrAdvSndtype = DTS_STUDIOSOUND_3D;
912                 MsOS_DelayTask(5);
913                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : SRS StudioSound 3D!!\033[0m \n");
914             }
915             else
916             {
917                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No SRS StudioSound 3D license!!\033[0m \n");
918                 status = FALSE;
919             }
920         }
921         else if (ADVSND_TYPE_Compare(type, DTS_ULTRATV))
922         {
923             status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_DTS_ULTRA_TV);
924             MDrv_CurrAdvSndtype = DTS_ULTRATV;
925         }
926         else if (ADVSND_TYPE_Compare(type, AUDYSSEY))
927         {
928             if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_AUDSY))
929             {
930                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_AUDSY);
931                 MDrv_CurrAdvSndtype = AUDYSSEY;
932                 MsOS_DelayTask(5);
933                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : AUDUSSEY!!\033[0m \n");
934             }
935             else
936             {
937                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No AUDUSSEY license!!\033[0m \n");
938                 status = FALSE;
939             }
940         }
941         else if (ADVSND_TYPE_Compare(type, SUPER_VOICE))
942         {
943             status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_SUPV);
944             MDrv_CurrAdvSndtype = SUPER_VOICE;
945         }
946         else if (ADVSND_TYPE_Compare(type, DBX))
947         {
948             if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DBX))
949             {
950                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_DBX);
951                 MDrv_CurrAdvSndtype = DBX;
952                 MsOS_DelayTask(5);
953                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : DBX !!\033[0m \n");
954             }
955             else
956             {
957                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No DBX license!!\033[0m \n");
958                 status = FALSE;
959             }
960         }
961         else if (ADVSND_TYPE_Compare(type, SRS_PURESND))
962         {
963             if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_SRS_PURESND))
964             {
965                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_PURESND);
966                 MDrv_CurrAdvSndtype = SRS_PURESND;
967                 MsOS_DelayTask(5);
968                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : SRS PureSound!!\033[0m \n");
969             }
970             else
971             {
972                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No SRS PureSound license!!\033[0m \n");
973                 status = FALSE;
974             }
975         }
976         else if (ADVSND_TYPE_Compare(type, SONICMOTION_ABS3D))
977         {
978             if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_SONICMOTION_ABS3D))
979             {
980                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_SONICMOTION_ABS3D);
981                 MDrv_CurrAdvSndtype = SONICMOTION_ABS3D;
982                 MsOS_DelayTask(5);
983                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : SONICMOTION ABS3D!!\033[0m \n");
984             }
985             else
986             {
987                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No SONICMOTION ABS3D license!!\033[0m \n");
988                 status = FALSE;
989             }
990         }
991         else if (ADVSND_TYPE_Compare(type, BONGIOVI_DPS))
992         {
993             if (MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_BONGIOVI_DPS))
994             {
995                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_BONGIOVI_DPS);
996                 MDrv_CurrAdvSndtype = BONGIOVI_DPS;
997                 MsOS_DelayTask(5);
998                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : BONGIOVI DPS !!\033[0m \n");
999             }
1000             else
1001             {
1002                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No BONGIOVI DPS license!!\033[0m \n");
1003                 status = FALSE;
1004             }
1005         }
1006         else if (ADVSND_TYPE_Compare(type, DOLBY_DAP))
1007         {
1008             if (MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DOLBY_MS12_B) ||
1009                 MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DOLBY_MS12_B_WO_AAC) ||
1010                 MDrv_AUTH_IPCheck(AU_DVB_AUTHBIT_DOLBY_MS12_LC))  //MS12 profile D not support DAP
1011             {
1012                 status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_DOLBY_DAP);
1013                 MDrv_CurrAdvSndtype = DOLBY_DAP;
1014                 MsOS_DelayTask(5);
1015                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m Hash-key Support : DOLBY DAP !!\033[0m \n");
1016             }
1017             else
1018             {
1019                 AUDIO_PRINT(AUDIO_DEBUG_LEVEL_INFO, "\n\033[0;31m [Warning!!]No DOLBY DAP license!!\033[0m \n");
1020                 status = FALSE;
1021             }
1022         }
1023         else
1024         {
1025             status = HAL_ADVSOUND_ProcessEnable(AU_DVB2_ADVSND_NONE);
1026             MDrv_CurrAdvSndtype = ADV_NONE;
1027         }
1028     }
1029     else
1030     {
1031         status = TRUE;
1032     }
1033 
1034     return (status);
1035 }
1036 
1037 ////////////////////////////////////////////////////////////////////////////////
1038 /// @brief \b Function \b Name: MDrv_ADVSOUND_SubProcessEnable(ADVFUNC proc, BOOL enable)
1039 /// @brief \b Function \b Description: This routine is used to enable subprocess of advanced sound effect.
1040 /// @param <IN>        \b proc, enable
1041 /// @param <OUT>       \b NONE    :
1042 /// @param <RET>       \b  NONE    :
1043 /// @param <GLOBAL>    \b NONE
1044 ////////////////////////////////////////////////////////////////////////////////
MDrv_ADVSOUND_SubProcessEnable(ADVFUNC proc,MS_BOOL enable)1045 MS_BOOL MDrv_ADVSOUND_SubProcessEnable(ADVFUNC proc, MS_BOOL enable)
1046 {
1047     DRVAUDIO_COMMON_CHECK_SHM_INIT;
1048 
1049     if (ADVSND_TYPE_Compare(MDrv_CurrAdvSndtype, SRS_TSXT))
1050     {
1051         if (ADVFUNC_Compare(proc, SRS_THEATERSOUND_3D_EN) ||
1052 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_CC3D_EN) ||
1053 	          ADVFUNC_Compare(proc, SRS_TSXT_TRUBASS) ||
1054 	          ADVFUNC_Compare(proc, SRS_TSXT_DC) ||
1055 	          ADVFUNC_Compare(proc, SRS_TSHD_TRUBASS) ||
1056 	          ADVFUNC_Compare(proc, SRS_TSHD_DC) ||
1057 	          ADVFUNC_Compare(proc, SRS_TSHD_SRS3D) ||
1058 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_TSHD) ||
1059 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_TRUBASS) ||
1060 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_DC) ||
1061 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_TSHD_SURR) ||
1062 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_TSHD_LEVEL_INDPT) ||
1063 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_TOTAL))
1064             return(HAL_ADVSOUND_SubProcessEnable(proc, enable));
1065         else
1066             AUDIO_PRINT(AUDIO_DEBUG_LEVEL_ERROR, "\n\033[0;31m [Warning!!] return SRS_TSXT, unknown parameter=%s using.\033[0m \n", proc);
1067     }
1068     else if (ADVSND_TYPE_Compare(MDrv_CurrAdvSndtype, SRS_TSHD))
1069     {
1070         if (ADVFUNC_Compare(proc, SRS_THEATERSOUND_3D_EN) ||
1071 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_CC3D_EN) ||
1072 	          ADVFUNC_Compare(proc, SRS_TSHD_TRUBASS) ||
1073 	          ADVFUNC_Compare(proc, SRS_TSHD_DC) ||
1074 	          ADVFUNC_Compare(proc, SRS_TSHD_DEFINITION) ||
1075 	          ADVFUNC_Compare(proc, SRS_TSHD_SRS3D) ||
1076 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_TSHD) ||
1077 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_TRUBASS) ||
1078 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_DC) ||
1079 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_DEFINITION) ||
1080 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_TSHD_SURR) ||
1081 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_TSHD_LEVEL_INDPT) ||
1082 	          ADVFUNC_Compare(proc, SRS_THEATERSOUND_TOTAL))
1083             return(HAL_ADVSOUND_SubProcessEnable(proc, enable));
1084         else
1085             AUDIO_PRINT(AUDIO_DEBUG_LEVEL_ERROR, "\n\033[0;31m [Warning!!] return TSHD, Unknown parameter=%s using. \033[0m \n", proc);
1086     }
1087     else if ((ADVSND_TYPE_Compare(MDrv_CurrAdvSndtype, DTS_STUDIOSOUND_3D)) ||
1088         (ADVSND_TYPE_Compare(MDrv_CurrAdvSndtype, SRS_THEATERSOUND)))
1089     {
1090         if (ADVFUNC_Compare(proc, SRS_THEATERSOUND_3D_EN) ||
1091             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TSHD) ||
1092             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TRUBASS) ||
1093             ADVFUNC_Compare(proc, SRS_THEATERSOUND_DC) ||
1094             ADVFUNC_Compare(proc, SRS_THEATERSOUND_DEFINITION) ||
1095             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TRUVOLUME) ||
1096             ADVFUNC_Compare(proc, SRS_THEATERSOUND_HARDLIMITER) ||
1097             ADVFUNC_Compare(proc, SRS_THEATERSOUND_HPF) ||
1098             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TRUEQ) ||
1099             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TRUVOLUME_NOISE_MNGR) ||
1100             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TSHD_SURR) ||
1101             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TSHD_LEVEL_INDPT) ||
1102             ADVFUNC_Compare(proc, SRS_THEATERSOUND_CS) ||
1103             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TRUDIALOG) ||
1104             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TRUVOLUME_NORMALIZER) ||
1105             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TRUVOLUME_SMOOTH) ||
1106             ADVFUNC_Compare(proc, SRS_THEATERSOUND_HPF_END) ||
1107             ADVFUNC_Compare(proc, SRS_THEATERSOUND_TOTAL) ||
1108             ADVFUNC_Compare(proc, SRS_THEATERSOUND_CC3D_EN) ||
1109             ADVFUNC_Compare(proc, SRS_THEATERSOUND_CC3D_DEPTH_PROCESS_EN) ||
1110             ADVFUNC_Compare(proc, SRS_THEATERSOUND_CC3D_3D_SURR_BOOST_EN) ||
1111             ADVFUNC_Compare(proc, SRS_THEATERSOUND_CC3D_FADE_EN) ||
1112             ADVFUNC_Compare(proc, SRS_THEATERSOUND_CC3D_TSHD_MIX_EN) ||
1113             ADVFUNC_Compare(proc, SRS_THEATERSOUND_CC3D_TBHDX_EN) ||
1114             ADVFUNC_Compare(proc, SRS_THEATERSOUND_GEQ_EN) ||
1115             ADVFUNC_Compare(proc, SRS_PURESOUND_HL) ||
1116             ADVFUNC_Compare(proc, SRS_PURESOUND_AEQ) ||
1117             ADVFUNC_Compare(proc, SRS_PURESOUND_HPF))
1118             return(HAL_ADVSOUND_SubProcessEnable(proc, enable));
1119          else
1120             AUDIO_PRINT(AUDIO_DEBUG_LEVEL_ERROR, "\n\033[0;31m [Warning!!] return DTS_STUDIOSOUND, Unknown parameter=%s using.\033[0m \n", proc);
1121     }
1122     else if (ADVSND_TYPE_Compare(MDrv_CurrAdvSndtype, SRS_PURESND))
1123     {
1124         if (ADVFUNC_Compare(proc, SRS_PURESOUND_HL) ||
1125             ADVFUNC_Compare(proc, SRS_PURESOUND_AEQ) ||
1126             ADVFUNC_Compare(proc, SRS_PURESOUND_HPF) ||
1127             ADVFUNC_Compare(proc, SRS_PURESOUND_TBHD))
1128             return(HAL_ADVSOUND_SubProcessEnable(proc, enable));
1129         else
1130             AUDIO_PRINT(AUDIO_DEBUG_LEVEL_ERROR, "\n\033[0;31m [Warning!!] return PURESOUND, Unknown parameter=%s using.\033[0m \n", proc);
1131     }
1132     else if (ADVSND_TYPE_Compare(MDrv_CurrAdvSndtype, BONGIOVI_DPS))
1133     {
1134         if (ADVFUNC_Compare(proc, BONGIOVI_DPS_SURR_EN))
1135         {
1136             return(HAL_ADVSOUND_SubProcessEnable(proc, enable));
1137         }
1138         else
1139             AUDIO_PRINT(AUDIO_DEBUG_LEVEL_ERROR, "\n\033[0;31m [Warning!!] return Bongiovi DPS, Unknown parameter=%s using.\033[0m \n", proc);
1140     }
1141     else if (ADVSND_TYPE_Compare(MDrv_CurrAdvSndtype, DOLBY_DAP))
1142     {
1143         if (ADVFUNC_Compare(proc, DOLBY_DAP_EN))
1144         {
1145             g_AudioVars2->g_DolbyDAPEnable = enable;
1146             return(HAL_ADVSOUND_SubProcessEnable(proc, enable));
1147         }
1148         else
1149             AUDIO_PRINT(AUDIO_DEBUG_LEVEL_ERROR, "\n\033[0;31m [Warning!!] return Dolby DAP, Unknown parameter=%s using.\033[0m \n", proc);
1150     }
1151     else
1152         AUDIO_PRINT(AUDIO_DEBUG_LEVEL_ERROR, "\n\033[0;31m [Warning!!] return , Unknown IP Security=%s.\033[0m \n", MDrv_CurrAdvSndtype);
1153     return FALSE;
1154 }
1155 
1156 ////////////////////////////////////////////////////////////////////////////////
1157 /// @brief \b Function \b Name: MDrv_DBXTV_SetMode(DBXTV_TotSonMode TotSonMode, DBXTV_TotVolMode TotVolMode, DBXTV_TotSurMode TotSurMode)
1158 /// @brief \b Function \b Description: This routine is used to set dbx TV mode
1159 /// @param <IN>        \b param, TotSonMode, TotVolMode, TotSurMode
1160 /// @param <OUT>       \b NONE    :
1161 /// @param <RET>       \b  NONE    :
1162 /// @param <GLOBAL>    \b NONE
1163 ////////////////////////////////////////////////////////////////////////////////
MDrv_DBXTV_SetMode(EN_DBXTV_TotSonMode totsonmode,EN_DBXTV_TotVolMode totvolmode,EN_DBXTV_TotSurMode totsurmode,MS_U32 enable)1164 void MDrv_DBXTV_SetMode(EN_DBXTV_TotSonMode totsonmode, EN_DBXTV_TotVolMode totvolmode, EN_DBXTV_TotSurMode totsurmode,MS_U32 enable)
1165 {
1166     if(MDrv_AUTH_IPCheck(AU_DVB2_AUTHBIT_DBX))
1167     {
1168         HAL_DBXTV_SetMode(totsonmode, totvolmode, totsurmode,enable);
1169     }
1170     return;
1171 }
1172 
1173 ////////////////////////////////////////////////////////////////////////////////
1174 /// @brief \b Function \b Name: MDrv_ADVSOUND_GetInfo()
1175 /// @brief \b Function \b Description: This routine is used for Get ADV Sound info
1176 /// @return MS_BOOL     \b : True / False
1177 ////////////////////////////////////////////////////////////////////////////////
MDrv_ADVSOUND_GetInfo(AdvSound_GET_Type Type)1178 MS_U32 MDrv_ADVSOUND_GetInfo(AdvSound_GET_Type Type)
1179 {
1180     MS_U8 i;
1181     MS_U32 rvalue = 0;
1182     if(Type == ADVSOUND_EN_TYPE)
1183     {
1184         for(i = 0; i <= 6; i++)
1185         {
1186             if(MDrv_AUTH_IPCheck(ADVSOUND_IP_BIT[i]))
1187             {
1188                 rvalue = (MS_U32)i;
1189             }
1190         }
1191     }
1192     return rvalue;
1193 }
1194