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