📄 chips.c
字号:
_bLFE = 0; } break ; default: break; } switch(__SetupInfo.bAudioDigitalOut) { case SETUP_AUDIO_DIGITAL_OUT_SPDIF_PCM: _bSpDifMode = 0; //pcm break; case SETUP_AUDIO_DIGITAL_OUT_SPDIF_RAW: _bSpDifMode = 1; //raw break; case SETUP_AUDIO_DIGITAL_OUT_OFF: _bSpDifMode = 2; //off break; default: break; } } if(wInit & CHIPS_INIT_AC3KOKMODE) // Initial AC3 Karaoke Mode { __bVocal = CHIPS_DEFAULT_AC3KOKMODE; } if(wInit & CHIPS_INIT_DUALMODE) // Initial Dual Mode { _SetDualMode(); } if(wInit & CHIPS_INIT_AUDTYPE) // Initial Audio Type { _SetAudio(__bAudioType); } }}// *********************************************************************// Function : CHIPS_KeyControl// Description : It will do key control according to the parameter// Arguments : bKey: The type of command// CHIPS_UP : control up 1 level// CHIPS_DOWN : control down 1 level// CHIPS_NORMAL : set to default level// CHIPS_TOGGLE : toggle between levels in range// CHIPS_LEVEL : return current level// CHIPS_SUPPORT : return if this function supported// Return : TRUE : Supported/Succeeded// : FALSE : Not supported// Change : Will turn off surround.// Will open audio if mute// Side Effect : Only MPEG1 and AC3 support key control// *********************************************************************BYTE CHIPS_KeyControl(BYTE bKey){ BOOL fKey = TRUE; //Kevin2.81, Filter if the desired function is supported or not in one file if(!_CHIPS_FilterFunSupport(CHIPS_KEYCONTROL)) { return FALSE; } // key-up/down will open volume if(__btMute) { // J500KWShih_218, fixed mantis bug 1400 and 1563, HAL_IOMute(FALSE); __btMute = FALSE; OSD_OUTPUT_MACRO(MSG_MUTE, __btMute, 0); } switch(bKey) { case CHIPS_UP: __cKeyShift++; if(__cKeyShift > NORMALKEY_OFFSET) { fKey = FALSE; __cKeyShift = NORMALKEY_OFFSET; } break; case CHIPS_DOWN: __cKeyShift--; if(__cKeyShift < (-1*(char)NORMALKEY_OFFSET)) { fKey = FALSE; __cKeyShift = -1 * (char)NORMALKEY_OFFSET; } break; case CHIPS_NORMAL: if(__cKeyShift == 0) { fKey = FALSE; } else { __cKeyShift = 0; } break ; default: break; } // J500KWShih_221a, if KEY does not need to change, we will not close/open audio. if(fKey) { //Kevin1.01, avoid the bo noise when pressing key +/- CHIPS_OpenAudio(FALSE); //kevin1.07, move form CHIPS_OpenAudio if(__cKeyShift < 0) // from -1 to -7 { _wCHIPSTmp = -(__cKeyShift) | 0x8; } else // from 0 to 7 { _wCHIPSTmp = __cKeyShift; } HAL_WriteAM(HAL_AM_KEYSHIFT, _wCHIPSTmp); //kevin0.72, PCM / DTS also supports keyshift if(__cKeyShift != 0) { HAL_WriteAM(HAL_AM_KEYSHIFT_EN, 1); } else { HAL_WriteAM(HAL_AM_KEYSHIFT_EN, 0); } CHIPS_OpenAudio(TRUE); } OSD_OUTPUT_MACRO(MSG_KEY, __cKeyShift+NORMALKEY_OFFSET, 1); return TRUE;}// *********************************************************************// Function : CHIPS_ProLogicControl// Description : set ProLogic|| DM// Arguments : None// Return : None// Side Effect : None// *********************************************************************//Kevin1.08, createvoid CHIPS_ProLogicControl(void){ //#define W99AV_DM_PROLOGIC_ENABLE 0x0175c //1:enable 0:disable (If src > 2 ch, enable will be of no use) //#define W99AV_DM_PROLOGIC_OCFG 0x00de2 //bit[2:0] chancfg // 011: L,R,C // 110: L,R,Ls,Rs // 111: L,R,Ls,Rs,C //bit[5:3] decmode // 000: ProLogic I // 001: Virtual // 010: Music // 011: Movie // 100: Matrix //bit[7:6] samprate // 00 : 48K // 01 : 44.1K // 10 : 32K //#define W99AV_DM_PROLOGIC_OCTRL 0x00de4 //default : 0x1b0 DWORD dwTemp; BYTE bTemp; //Kevin1.24, add protection if(!(__dwSupportFeature & SUPPORT_FEATURE_PROLOGIC)) { __SetupInfo.bAudioPrologic = SETUP_AUDIO_PROLOGIC_OFF; } switch(__SetupInfo.bAudioPrologic) { case SETUP_AUDIO_PROLOGIC_PROLOGIC: dwTemp = 0 << 3; bTemp = 1; break; case SETUP_AUDIO_PROLOGIC_VIRTUAL: dwTemp = 1 << 3; bTemp = 0; break; case SETUP_AUDIO_PROLOGIC_MUSIC: dwTemp = 2 << 3; bTemp = 0; break; case SETUP_AUDIO_PROLOGIC_MOVIE: dwTemp = 3 << 3; bTemp = 1; break; case SETUP_AUDIO_PROLOGIC_MATRIX: dwTemp = 4 << 3; bTemp = 0; break; case SETUP_AUDIO_PROLOGIC_OFF: default: HAL_WriteAM(HAL_AM_PROLOGIC_ENABLE, 0); return; } switch(__SetupInfo.bAudioAnalogOut) { case SETUP_AUDIO_ANALOG_OUT_2CH: //Kevin1.10-2, disable Prologic for 2CH output HAL_WriteAM(HAL_AM_PROLOGIC_ENABLE, 0); return; case SETUP_AUDIO_ANALOG_OUT_51CH: if(__SetupInfo.bAudioCenter==SETUP_AUDIO_CENTER_ON && __SetupInfo.bAudioRear==SETUP_AUDIO_REAR_ON) { dwTemp |= 7; } else if(__SetupInfo.bAudioCenter==SETUP_AUDIO_CENTER_ON && __SetupInfo.bAudioRear==SETUP_AUDIO_REAR_OFF) { dwTemp |= 3; } else if(__SetupInfo.bAudioCenter==SETUP_AUDIO_CENTER_OFF && __SetupInfo.bAudioRear==SETUP_AUDIO_REAR_ON) { dwTemp |= 6; } else { HAL_WriteAM(HAL_AM_PROLOGIC_ENABLE, 0); return; } default: break; } HAL_ReadInfo(HAL_INFO_AUDIOFREQ, &__dwTemp); //Kevin1.20, use the most close freq settings if(__dwTemp < AUDIO_FREQ_44K) { dwTemp |= (2 << 6); //32K } else if(__dwTemp < AUDIO_FREQ_48K) { dwTemp |= (1 << 6); //44K } //else //dwTemp |= (0<<6); //48K /* //kevin909, add HAL_AM_PROLOGIC_SUR_DELAY later //Kevin2.37, conflicts w/ AC3 //HAL_WriteDM(HAL_AM_PROLOGIC_SUR_DELAY, (DWORD)bTemp); HAL_WriteAM(HAL_AM_PROLOGIC_SUR_DELAY, 0); */ HAL_WriteAM (HAL_AM_PROLOGIC_CTRL, 0x1b0); HAL_WriteAM (HAL_AM_PROLOGIC_CFG, dwTemp); //kevin0.69 HAL_WriteAM(HAL_AM_PROLOGIC_ENABLE, 1); //Kevin1.24, let Prologic & Surround mutual exclusive if(__bSurround) { __bSurround = 0; OSD_Output(MSG_SURROUND, __bSurround, 0x0); }}// *********************************************************************// Description : set HDCD DM// Arguments : None// Return : None// *********************************************************************void CHIPS_ControlHDCD(void){ if( (__bAttrPlay==ATTR_CDDA) && ( __bCDDA_DTS==CDDA_PURE || __bCDDA_DTS==CDDA_HDCD || __bCDDA_DTS==CDDA_CDG )) //kevin0.80-2, add ATTR_CDDA protection { HAL_WriteAM(HAL_AM_HDCD_CTRL, 0x613c); HAL_WriteAM(HAL_AM_PCM_MODE, 1); } //HDCD + Prologic => performance issue if(__SetupInfo.bAudioPrologic != SETUP_AUDIO_PROLOGIC_OFF) { HAL_WriteAM(HAL_AM_PCM_MODE, 1); }}// *********************************************************************// Function : CHIPS_Surround// Description : It will do surround according to the parameter// Arguments : bKey: The type of command// CHIPS_UP : control up 1 level// CHIPS_DOWN : control down 1 level// CHIPS_NORMAL : set to default level// CHIPS_TOGGLE : toggle between levels in range// CHIPS_LEVEL : return current level// CHIPS_SUPPORT : return if this function supported// Return : TRUE : Supported/Succeeded// : FALSE : Not supported// Change : Will turn off key control// Side Effect : Only MP3 doesn't support surround// *********************************************************************BYTE CHIPS_Surround(BYTE bSurd){ //Kevin2.81, Filter if the desired function is supported or not in one place if(!_CHIPS_FilterFunSupport(CHIPS_SURROUND)) { return FALSE; } HAL_WriteAM(HAL_AM_PROLOGIC_ENABLE, 0); //Kevin0.86, add to fix the "KEY_SURROUND but mute is not canceled" bug // surround will open volume if(__btMute) { // J500KWShih_218, fixed mantis bug 1400 and 1563, HAL_IOMute(FALSE); __btMute = FALSE; OSD_OUTPUT_MACRO(MSG_MUTE, __btMute, 0); } switch(bSurd) { case CHIPS_UP: if(__bSurround < CHIPS_SURROUND_TYPE) { __bSurround++; } break; case CHIPS_DOWN: if(__bSurround > CHIPS_SURROUND_NONE) { __bSurround--; } break; case CHIPS_NORMAL: __bSurround = CHIPS_SURROUND_NONE; break ; case CHIPS_TOGGLE: __bSurround++; __bSurround %= (CHIPS_SURROUND_TYPE + 1); break; case CHIPS_LEVEL: return __bSurround; case CHIPS_SUPPORT: return TRUE; default: break; } CHIPS_OpenAudio(TRUE); OSD_OUTPUT_MACRO(MSG_SURROUND, __bSurround, 0x3); return TRUE ;}// *********************************************************************// Function : CHIPS_Echo// Description : It will do echo according to the parameter// w9922qf doesn't support echo// Arguments : bEcho: The type of command// CHIPS_UP : control up 1 level// CHIPS_DOWN : control down 1 level// CHIPS_NORMAL : set to default level// CHIPS_TOGGLE : toggle between levels in range// CHIPS_LEVEL : return current level// CHIPS_SUPPORT : return if this function supported// Return : TRUE : Supported/Succeeded// : FALSE : Not supported// Change :// Side Effect :// *********************************************************************BYTE CHIPS_Echo(BYTE bEcho){ //Kevin2.81, Filter if the desired function is supported or not in one place if(!_CHIPS_FilterFunSupport(CHIPS_ECHO)) { return FALSE; } switch(bEcho) { case CHIPS_UP: if(++__bEchoLevel > ECHO_LEVEL) { __bEchoLevel = ECHO_LEVEL; } break; case CHIPS_DOWN: if(__bEchoLevel > 0) { __bEchoLevel--; } break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -