📄 chips.c
字号:
#include "winav.h"#include "digest.h"#include "cc.h"#include "utl.h"#include "ctkav.h"#include "input.h"#include "chips.h"#include "utl.h"#include "osd.h"#include "hal.h"#include "setup.h"#include "infofilter.h"#include "SrcFilter.h"#include "navigate.h"#include "initial.h"#include "media.h"#ifdef CT950_STYLE#include "dvdsetup_op.h"#endif //CT950_STYLE#undef printf#ifndef WIN32#define printf(x, y...) DBG_Printf(DBG_THREAD_CHEERDVD, DBG_INFO_PRINTF, x, ## y)#endif // WIN32char __bEchoLevel;BYTE __bSurround; // Record Surround kindBYTE __bVocal;DWORD __dwVolAudio;DWORD __dwPreVolAudio; //Kevin1.00, add#ifndef NO_MIC_INPUT DWORD __wMICVol;#endif // NO_MIC_INPUTchar __cKeyShift; // Key adjustment; Up/Downchar _bDualMode;char _bAudType;BYTE _bSpDifMode; // 1:output compressed bitstream, 0:output stereo lpcm (Kevin0.84a add)2:disable spdif outputBYTE _bChannelMode;char _bLFE;// TCC051, for reduce sramWORD _wCHIPSTmp;#ifdef SUPPORT_JPEG_AUDIO_PLAYINGextern BYTE __bMMJPEGAudioMode;#endif //SUPPORT_JPEG_AUDIO_PLAYING// wyc2.17-909S, for language study.#if (SLOW_MODE_CONFIG != NORMAL_SLOW_MODE) extern BYTE __bLangStudyFlag;#endif // (SLOW_MODE_CONFIG != NORMAL_SLOW_MODE)// Brian.170, SW MIC Detect#ifdef ENABLE_AUTOVOCAL #define MIC_INPUT_THRESHOLD_HIGH 1450L #define MIC_INPUT_THRESHOLD_LOW 1280L #ifdef SW_MIC_DETECT extern bit __sbMICDetect; #endif // SW_MIC_DETECT#endif // ENABLE_AUTOVOCAL// *********************************************************************// Function : _SetAudio// Description : It will set audio variable _bAudType according to __bAudioType// Arguments : bType: The type of command (Reference HAL_SetAudioType)// Return : None// Change :// Side Effect :// *********************************************************************void _SetAudio(BYTE bAudio){#ifdef SUPPORT_STB if(__bChooseMedia == MEDIA_SELECT_STB) { switch(bAudio) { case HAL_AUDIO_MP2: case HAL_AUDIO_MPG: case HAL_AUDIO_MP3: _bSpDifMode = 0; //pcm break; case HAL_AUDIO_AC3: _bSpDifMode = 1; //always set raw as default when DVB AC3 break; default: break; } } else#endif switch(bAudio) { // TCC025, use same definition as HAL case HAL_AUDIO_PCM: case HAL_AUDIO_LPCM: _bAudType = AUDIO_PCM; // TCC043, must force spdif off for pcm data so that it also send through SPDIF if(__SetupInfo.bAudioDigitalOut == SETUP_AUDIO_DIGITAL_OUT_OFF) { _bSpDifMode = 2; //off } else { _bSpDifMode = 0; //pcm } break; // PCM case HAL_AUDIO_MP2: //Alex1.10, System will support MP2 format audio case HAL_AUDIO_MPG: case HAL_AUDIO_MP3: // TCC043, must force spdif off for pcm data so that it also send through SPDIF _bAudType = AUDIO_MPG; if(__SetupInfo.bAudioDigitalOut == SETUP_AUDIO_DIGITAL_OUT_OFF) { _bSpDifMode = 2; //off } else { _bSpDifMode = 0; //pcm } break; // MPEG#ifdef SUPPORT_WMA case HAL_AUDIO_WMA: //Kevin1.08 // TCC043, must force spdif off for pcm data so that it also send through SPDIF _bAudType = AUDIO_WMA; if(__SetupInfo.bAudioDigitalOut == SETUP_AUDIO_DIGITAL_OUT_OFF) { _bSpDifMode = 2; //off } else { _bSpDifMode = 0; //pcm } break; // HAL_AUDIO_WMA#endif //#ifdef SUPPORT_WMA case HAL_AUDIO_AC3: _bAudType = AUDIO_AC3; // TCC274, set spdif mode according to setupinfo. if(__SetupInfo.bAudioDigitalOut == SETUP_AUDIO_DIGITAL_OUT_SPDIF_PCM) { _bSpDifMode = 0; //pcm } else if(__SetupInfo.bAudioDigitalOut == SETUP_AUDIO_DIGITAL_OUT_SPDIF_RAW) { _bSpDifMode = 1; //raw } else { _bSpDifMode = 2; //off } break; // HAL_AUDIO_AC3 // TCC039, add setting DTS and SDDS type to force spdif mode case HAL_AUDIO_DTS: _bAudType = AUDIO_DTS; // ** TCH0.412; DTS should be 11b, Don't know SDDS. if(__SetupInfo.bAudioDigitalOut == SETUP_AUDIO_DIGITAL_OUT_SPDIF_PCM) { //Kevin1.05-3, modify //_bSpDifMode = 0; //pcm if(__dwSupportFeature & SUPPORT_FEATURE_DTS) { _bSpDifMode = 0; //pcm } else { //Kevin1.10, still show SPDIF pcm in SETUP Digital Output menu //__SetupInfo.bAudioDigitalOut = SETUP_AUDIO_DIGITAL_OUT_SPDIF_RAW; _bSpDifMode = 1; //raw } } else if(__SetupInfo.bAudioDigitalOut == SETUP_AUDIO_DIGITAL_OUT_SPDIF_RAW) { _bSpDifMode = 1; //raw } else { _bSpDifMode = 2; //off } break; // HAL_AUDIO_DTS default: break; }}// *********************************************************************// Function : _SetDualMode// Description : It will set variable _bDualMode according to __bModeChannel// Arguments : None// Return : None// Change :// Side Effect :// *********************************************************************//#pragma NOAREGS //Kevin1.23, may be called by ISRvoid _SetDualMode(void){ // TCC275, check if MP3 is mono, must not set it to RR or no audio output. Force set it to LR (same as LL) if((__bAttrPlay == ATTR_MP3) || (__bAttrPlay == ATTR_MP2)) //Alex1.10, support MP2 format audio { HAL_ReadAM(HAL_AM_MP3MP2_CH_NO, &__dwTemp); if(__dwTemp == 1) // Mono { _bDualMode = DUAL_STEREO; return; } } // TCC022, Dual mode is LR/LL/RR/Mixed if((__bModeChannel == AUDIO_LR) || (__bModeChannel == AUDIO_RL)) { _bDualMode = DUAL_STEREO; } else if(__bModeChannel == AUDIO_LL) { _bDualMode = DUAL_LEFTMONO; } else if(__bModeChannel == AUDIO_RR) { _bDualMode = DUAL_RIGHTMONO; }#ifdef DOLBY_CERTIFICATION //Kevin0.76a else if(__bModeChannel == AUDIO_MIXED) { _bDualMode = DUAL_MIXEDMONO; }#endif}// Kevin2.81, create// *******************************************************************************// Function : _CHIPS_FilterFunSupport// Description : Filter if the desired function is supported or not// Arguments : bType, the desired function// Return : TRUE: supported// FALSE: not supported// Side Effect : none// *******************************************************************************//#pragma NOAREGS // called in ISR //Kevin1.24BYTE _CHIPS_FilterFunSupport(BYTE bType){ //Kevin0.87, modify to fixed "It displays "invalid" in File Manager when KEY_VOL_UP/KEY_VOL_DOWN even the cursor is at the MP3 file. //if (__bAttrPlay == ATTR_JPG)#ifdef SUPPORT_JPEG_AUDIO_PLAYING if (!__bMMJPEGAudioMode)#endif //SUPPORT_JPEG_AUDIO_PLAYING { if((__bAttrPlay == ATTR_JPG) && (__btPlaying || __btPause) ) return FALSE; } switch(bType) { case CHIPS_VOLUMECONTROL: case CHIPS_SOUNDEFFECT: //Kevin1.23, comment case CHIPS_OPENAUDIO: //Kevin0.87, add return TRUE; break; //Kevin0.90, modify case CHIPS_ECHO: //except DTS if(_bAudType != AUDIO_DTS) return TRUE; break; //Kevin1.24, let Prologic & Surround mutual exclusive, otherwise there may be noise case CHIPS_SURROUND: //kevin0.69, support surround for all audio types //if ( _bAudType!=AUDIO_DTS && if((__SetupInfo.bAudioPrologic == SETUP_AUDIO_PROLOGIC_OFF) || (__SetupInfo.bAudioAnalogOut == SETUP_AUDIO_ANALOG_OUT_2CH)) return TRUE; break; case CHIPS_KEYCONTROL: //kevin0.69, support keyshift for all audio types /* if ((_bAudType==AUDIO_AC3) || //dvd/vcd karaoke //((_bAudType==AUDIO_MPG) && (__bAttrPlay != ATTR_MP3)) ) //Alex1.10, support MP2 format audio ((_bAudType==AUDIO_MPG) && (__bAttrPlay != ATTR_MP3) && (__bAttrPlay != ATTR_MP2) && (__bAttrPlay != ATTR_JPG))) */ //kevin1.10, not allow keyshift when doing language study // wyc2.17-909S, for language study.#if (SLOW_MODE_CONFIG != NORMAL_SLOW_MODE) if(__bLangStudyFlag == TRUE) return FALSE;#endif return TRUE; break; default: break; } return FALSE;}// *********************************************************************// Function : CHIPS_Initial// Description : It will initial the global variables set to w9922qf// : to it's default value.// : Will write the variables to chip only when issue CHIPS_OpenAudio// Arguments : wInit: The type to initial (Can use || to combine settings)// CHIPS_INIT_KEY : key control// CHIPS_INIT_SURROUND : surround type// CHIPS_INIT_ECHO : echo level// CHIPS_INIT_3DLEVEL : 3d level// CHIPS_INIT_VOL : volume level// CHIPS_INIT_CHANNELMODE : channel mode// CHIPS_INIT_AC3KOKMODE : ac3 karaoke mode// CHIPS_INIT_DUALMODE : ac3 dual mode// CHIPS_INIT_AUDTYPE : audio type// CHIPS_INIT_ALL : all above settings// CHIPS_INIT_BYPASS : bypass all setting// Return : None// Change :// Side Effect :// *********************************************************************void CHIPS_Initial(WORD wInit){ if(wInit != CHIPS_INIT_BYPASS) { if(wInit & CHIPS_INIT_KEY) // Initial KEY value { __cKeyShift = CHIPS_DEFAULT_KEY; HAL_WriteAM(HAL_AM_KEYSHIFT_EN, 0); //kevin1.07 } if(wInit & CHIPS_INIT_SURROUND) // Initial Surround Type { __bSurround = CHIPS_DEFAULT_SURROUND;#ifdef SUPPORT_USER_DEFINED_EQ for(__bBandSelect=BAND_SELECT_BEGIN; __bBandSelect<=BAND_SELECT_END; __bBandSelect++) { __bPerAmp[__bBandSelect] = DEFAULT_PER_BAND_AMP; } __bBandSelect=BAND_SELECT_BEGIN;#endif } if(wInit & CHIPS_INIT_ECHO) // Initial Echo level { __bEchoLevel = CHIPS_DEFAULT_ECHO; } if(wInit & CHIPS_INIT_VOL) // Initial Voice Level {#ifdef CT950_STYLE __dwVolAudio = (DWORD)DVDSETUP_GetVolume();#else __dwVolAudio = CHIPS_DEFAULT_VOL;#endif //CT950_STYLE __dwPreVolAudio = 0;#ifndef NO_MIC_INPUT __wMICVol = MIC_VOL_DEFAULT; //kevin1.01#endif } if(wInit & CHIPS_INIT_CHANNELMODE) // Initial Channel Mode { switch(__SetupInfo.bAudioAnalogOut) { case SETUP_AUDIO_ANALOG_OUT_2CH: _bLFE = 0; // J500KWShih_220, set down mix mode for SD0 if(__SetupInfo.bAudioDownMix == SETUP_AUDIO_DOWNMIX_LORO) { _bChannelMode = CHIPS_LR; } else { _bChannelMode = CHIPS_LRD; } break; case SETUP_AUDIO_ANALOG_OUT_51CH: if(__SetupInfo.bAudioCenter == SETUP_AUDIO_CENTER_ON) { if(__SetupInfo.bAudioRear == SETUP_AUDIO_REAR_ON) { _bChannelMode = CHIPS_LCRLSRS; } else { _bChannelMode = CHIPS_LCR; } } else { if(__SetupInfo.bAudioRear == SETUP_AUDIO_REAR_ON) { _bChannelMode = CHIPS_LRLSRS; } else { _bChannelMode = CHIPS_LRD; } } if(__SetupInfo.bAudioSubwoofer == SETUP_AUDIO_SUBWOOFER_ON) { _bLFE = 1; } else {
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -