📄 stpadsp.c
字号:
_wStartX = STP_ENTRY_START_X + (WORD) STP_MENU_ENTRY_H * (bTemp-3);
_wStartY = STP_MENU_START_Y + 120;
_wEndY = _wStartY + wH;
_bEntry = bTemp + 1;
vShowSlide(WB_SETUP_ITEM);
_bDataCur = bEepromReadByte(_rMenuRoot.prMenu[_bMenu]->prEntry[bTemp]->wEEPos);
_wStartX = STP_ENTRY_START_X + (WORD) STP_MENU_ENTRY_H * (bTemp-3);
_wStartY = STP_MENU_START_Y + 120;
_wEndY = _wStartY + wH;
/*
vShowSlideSel(WB_SETUP_ITEM,
_rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wType,
bOptMaxEntryNum(_rMenu, _bMenu, _bEntry));
*/
}
}
_bDataSel = _bDataCur = bTempCur;
_bEntry = bTempItem;
return (bSetEqPreset(wEEPos, bValue));
}
#endif /* !SIMPLE_MENU && PLAYER_ADV_EQ */
#endif /* PLAYER_SURROUND */
#ifdef MIC_ON_KEYSHIFT_FORCING_DOWNMIX_2CH
#ifdef DSP_FAKE_4CH
extern void vDspSwitchFake4CH(BOOL);
#endif /* DSP_FAKE_4CH */
void vMicCheck(BYTE bMicFlag)
{
if(bMicFlag)
{
if(bEepromReadByte(SPEAKER_POSITION) == EV_DOWN_OFF)
{//stereo setting
_bProLogic2Tmp = bEepromReadByte(PROLOG_SW_POS);
#ifdef DOWNMIX_SHOW_UI
fgEepromWriteByte(SPEAKER_POSITION, EV_DOWN_LORO);
bSpkConfig(NULL_POSITION, 0);
#else
fgEepromWriteByte(SPEAKER_POSITION, EV_DOWN_LORO);
bSpkConfig(NULL_POSITION, 0);
fgEepromWriteByte(SPEAKER_POSITION, EV_DOWN_OFF);
#endif
#ifdef DSP_FAKE_4CH
vDspSwitchFake4CH(bMicFlag);
#endif
_bDownMixTmp = EV_DOWN_OFF;
}
/*#ifdef DSP_FAKE_4CH
vDspSwitchFake4CH(bMicFlag);
#endif*/
}
else
{
if((_rAudioCtrl.cCurKey == 0)&&(_bDownMixTmp == EV_DOWN_OFF ))
{
#ifdef DOWNMIX_SHOW_UI
fgEepromWriteByte(SPEAKER_POSITION, EV_DOWN_OFF);
fgEepromWriteByte(PROLOG_SW_POS, _bProLogic2Tmp);
vAdspPL2Config(AUD_PL2_SWITCH, _bProLogic2Tmp);
bSpkConfig(NULL_POSITION, 0);
#else
vAdspPL2Config(AUD_PL2_SWITCH, _bProLogic2Tmp);
bSpkConfig(NULL_POSITION, 0);
#endif
#ifdef DSP_FAKE_4CH
vDspSwitchFake4CH(bMicFlag);
#endif
}
/*#ifdef DSP_FAKE_4CH
vDspSwitchFake4CH(bMicFlag);
#endif*/
}
}
#endif
#ifdef PLAYER_KARAOKE
// *********************************************************************
// Function : BYTE bSetMic(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bSetMic(WORD wEEPos, BYTE bValue) large
{
if (bEepromReadByte(MIC_SW_POS) == EV_ON)
{
#ifdef MIC_ON_KEYSHIFT_FORCING_DOWNMIX_2CH
vMicCheck(TRUE);
#endif
//vAdspMicMix(MIC_MIX_LR, ADSP_ON);
#ifdef PLAYER_MIC_EQ
vAdspSetMicEq(ADSP_ON);
#else
vAdspSetMicEq(ADSP_OFF);
#endif
vAdspKaraMode(KARA_MODE_ENABLE);
}
else
{
//vAdspMicMix(MIC_MIX_LR, ADSP_OFF);
vAdspSetMicEq(ADSP_OFF);
vAdspKaraMode(KARA_MODE_DISABLE);
#ifdef MIC_ON_KEYSHIFT_FORCING_DOWNMIX_2CH
vMicCheck(FALSE);
#endif
}
return (ENTRY_FUN_OK);
}
#elif (defined(USE_EXTERNAL_KARAOKE) && defined(MANUAL_MIC_ON_OFF))
// *********************************************************************
// Function : BYTE bSetMic(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bSetMic(WORD wEEPos, BYTE bValue) large
{
/* switch microphone mixing I/O here */
if (bEepromReadByte(MIC_SW_POS) == EV_ON)
{
vSetAuxIO(AUXIO_MIC_MIX, AUXIO_MIC_MIX_ON);
}
else
{
vSetAuxIO(AUXIO_MIC_MIX, AUXIO_MIC_MIX_OFF);
}
}
#endif /* USE_EXTERNAL_KARAOKE, MANUAL_MIC_ON_OFF */
#if defined(PLAYER_KARAOKE) && defined(KARAOKE_SCORING)
BYTE bKokScoreSwitch(WORD wEEPos, BYTE bValue) large
{
BYTE bKScoreSw = bEepromReadByte(KSCORE_SW_POS);
vAdspKScoreSw(bKScoreSw, 99, 10);
return (TRUE);
}
#endif /* PLAYER_KARAOKE, KARAOKE_SCORING */
#ifdef DOLBY_PROLOGIC
// *********************************************************************
// Function : void vSetProlog(void) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
void vSetProlog(void) large
{
BYTE bMode = bEepromReadByte(PROLOG_SW_POS);
switch (bMode)
{
case EV_PROLOGIC_ON:
case EV_PROLOGIC_AUTO:
#ifdef PROLOGIC_NO_KEY_SHIFT
cAdspAudKeyCtrl(AUDIO_KEY_RESUME);
#endif /* PROLOGIC_NO_KEY_SHIFT */
if (bEepromReadByte(PROLOG_SW_POS) == EV_PROLOGIC_ON)
{
vAdspPrologMode(PROLOGIC_ENABLE);
}
else
{
vAdspPrologMode(PROLOGIC_AUTO);
}
#ifndef SET_VSURR_IN_SPKCFG
if (bEepromReadByte(VSURR_SW_POS) == EV_ON)
{
vAdspSurr(AUD_VSURR_CTRL, ADSP_OFF);
}
#endif
break;
case EV_PROLOGIC_OFF:
vAdspPrologMode(PROLOGIC_DISABLE);
#ifdef SET_VSURR_IN_SPKCFG
if ((bEepromReadByte(SPEAKER_POSITION) == EV_DOWN_VSURR)
#ifdef USE_N22_VSURR
|| (bEepromReadByte(SPEAKER_POSITION) == EV_DOWN_N22)
#endif
)
{
vAdspSurr(AUD_VSURR_CTRL, ADSP_ON);
}
#else /* !SET_VSURR_IN_SPKCFG */
if (bEepromReadByte(VSURR_SW_POS) == EV_ON)
{
vAdspSurr(AUD_VSURR_CTRL, ADSP_ON);
}
#endif /* !SET_VSURR_IN_SPKCFG */
break;
}
}
#endif /* DOLBY_PROLOGIC */
// *********************************************************************
// Function : BYTE bIecConfig(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bIecConfig(WORD wEEPos, BYTE bValue) large
{
BYTE bTmp = bEepromReadByte(IEC958_POSITION);
switch (bTmp)
{
case EV_RAW:
#if (defined(SIMPLE_MENU) && defined(SPDIF_NO_MPEG_OUT))
/* assume simple menu does not has manual SPDIF mode,
no need to restore the setting */
vAdspSpdifManualSet(SPDIF_CDDA, EV_RAW);
vAdspSpdifManualSet(SPDIF_AC3, EV_RAW);
vAdspSpdifManualSet(SPDIF_DTS, EV_RAW);
vAdspSpdifManualSet(SPDIF_MPEG, EV_PCM);
vAdspSpdifMode(SPDIF_MANUAL);
#elif (defined(SPDIF_FORCE_MPEG_OUT))
vAdspSpdifManualSet(SPDIF_CDDA, EV_RAW);
vAdspSpdifManualSet(SPDIF_AC3, EV_RAW);
vAdspSpdifManualSet(SPDIF_DTS, EV_RAW);
vAdspSpdifManualSet(SPDIF_MPEG, EV_RAW);
vAdspSpdifMode(SPDIF_MANUAL);
#else /* RAW data for MPEG */
vAdspSpdifMode(SPDIF_RAW);
#endif
break;
case EV_PCM:
vAdspSpdifMode(SPDIF_PCM);
break;
case EV_MANUAL:
vAdspSpdifMode(SPDIF_MANUAL);
break;
case EV_AO_OFF:
default:
vAdspSpdifMode(SPDIF_OFF);
if (bTmp != EV_AO_OFF)
{
bTmp = EV_AO_OFF;
fgEepromWriteByte(IEC958_POSITION, EV_AO_OFF);
}
break;
}
#if (defined(SPDIF_PCM_FORCE_DOWNMIX) && defined(SPDIF_PCM_CH_SELECT))
if (bTmp == EV_PCM)
{
vAdspSpdifCh(SPDIF_PCM_LR);
}
else
{
if (bEepromReadByte(SPEAKER_POSITION) == EV_DOWN_OFF)
{
bSpkConfig(NULL_POSITION, 0);
}
#ifdef SIMPLE_SPDIF_CTRL
vAdspSpdifCh(SPDIF_PCM_LR);
#else
switch(bEepromReadByte(SPDIF_PCM_CH_POSITION))
{
case EV_LSRS:
vAdspSpdifCh(SPDIF_PCM_LS_RS);
break;
case EV_CLFE:
vAdspSpdifCh(SPDIF_PCM_C_LFE);
break;
case EV_LR:
default:
vAdspSpdifCh(SPDIF_PCM_LR);
break;
}
#endif /* SIMPLE_SPDIF_CTRL */
}
#endif /* SPDIF_PCM_FORCE_DOWNMIX && defined(SPDIF_PCM_CH_SELECT) */
#ifndef SIMPLE_MENU
return (ENTRY_FUN_REDRAW);
#else
return (ENTRY_FUN_OK);
#endif
}
#ifndef SIMPLE_MENU
#ifndef SIMPLE_SPDIF_CTRL
// *********************************************************************
// Function : BYTE bIecPcmChConfig(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bIecManualConfig(WORD wEEPos, BYTE bValue) large
{
BYTE bType, bMode;
/* assume the EEPROM type sequence is same as aud_ctrl */
bType = wEEPos - SPDIF_CDDA_POSITION;
if (bType >= SPDIF_TYPE_MAX)
{
return (ENTRY_FUN_OK);
}
/* error check */
if (bEepromReadByte(wEEPos) > EV_PCM)
{
bMode = EV_RAW;
}
else
{
bMode = bEepromReadByte(wEEPos);
}
vAdspSpdifManualSet(bType, bMode);
return (ENTRY_FUN_OK);
}
#endif /* !SIMPLE_SPDIF_CTRL */
#ifdef SPDIF_PCM_CH_SELECT
// *********************************************************************
// Function : BYTE bIecPcmChConfig(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bIecPcmChConfig(WORD wEEPos, BYTE bValue) large
{
switch(bEepromReadByte(SPDIF_PCM_CH_POSITION))
{
case EV_LSRS:
vAdspSpdifCh(SPDIF_PCM_LS_RS);
break;
case EV_CLFE:
vAdspSpdifCh(SPDIF_PCM_C_LFE);
break;
#ifdef SUPPORT_DDEX
case EV_LBRB:
vAdspSpdifCh(SPDIF_PCM_CH78);
break;
#endif
case EV_LR:
default:
vAdspSpdifCh(SPDIF_PCM_LR);
break;
}
return (ENTRY_FUN_OK);
}
#endif /* SPDIF_PCM_CH_SELECT */
#ifdef SPDIF_PCM_FREQ_SELECT
// *********************************************************************
// Function : BYTE bIecPcmFreq(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
#ifdef MLP_CERTIFICATION
extern void vAClkSetting(BYTE bFs) large;
#endif
BYTE bIecPcmFreq(WORD wEEPos, BYTE bValue) large
{
switch (bEepromReadByte(IEC_MAX_FREQ_POSITION))
{
#ifdef MLP_CERTIFICATION
case EV_04K:
WriteDRAMTbl(0x08, 0x8954, 1); //Capture
vAClkSetting(0x00); //FS384_16K
WriteAUD(AUD_ACLKCFG, 0x6C); //4K
break;
case EV_16K:
WriteDRAMTbl(0x08, 0x8954, 1); //Capture
vAClkSetting(0x00); //FS384_16K
WriteAUD(AUD_ACLKCFG, 0x68); //Normal
break;
case EV_192K:
default:
vAdspPcmFreq(ADSP_IEC_PCM_192K);
WriteDRAMTbl(0x08, 0x8954, 0); //Normal
WriteDRAMTbl(0x08, 0x8955, 0); //Normal
WriteDRAMTbl(0x08, 0x8956, 0); //Normal
WriteDRAMTbl(0x08, 0x8957, 0); //Normal
WriteAUD(AUD_ACLKCFG, 0x64); //Normal
break;
#else
case EV_192K:
vAdspPcmFreq(ADSP_IEC_PCM_192K);
break;
case EV_96K:
vAdspPcmFreq(ADSP_IEC_PCM_96K);
break;
case EV_48K:
default:
vAdspPcmFreq(ADSP_IEC_PCM_48K);
break;
#endif
}
return (ENTRY_FUN_OK);
}
#endif /* SPDIF_PCM_FREQ_SELECT */
#endif /* !SIMPLE_MENU */
#ifdef TWO_CHANNEL_ONLY
// *********************************************************************
// Function : BYTE bSpkConfig(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bSpkConfig(WORD wEEPos, BYTE bValue) large
{
BYTE bTemp;
strucDownmixConfig rDownSpk;
rDownSpk.Front = SPK_LARGE;
rDownSpk.Sub = ADSP_OFF;
switch(bEepromReadByte(SPEAKER_POSITION))
{
case EV_DOWN_LORO:
rDownSpk.Mode = DOWNMIX_LO_RO;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -