📄 stpadsp.c
字号:
/**********************************************************************/
/*************** MTK CONFIDENTIAL & COPYRIGHTED ****************/
/*************** $Modtime:: 07/06/03 5:15p $ ****************/
/*************** $Revision:: 3 $ ****************/
/*************** ****************/
/*************** Description : Setup ADSP ****************/
/*************** relative routine ****************/
/*************** ****************/
/*************** Company : MediaTek Inc. ****************/
/*************** Programmer : Peter Huang ****************/
/**********************************************************************/
#include "general.h"
//#include SETUP_MENU_FILE
#ifdef SIMPLE_MENU
#include "stpmenu1.h"
#else
#include "stpmenu.h"
#endif
#include "stposdfn.h"
#pragma NOAREGS
#ifdef MIC_ON_KEYSHIFT_FORCING_DOWNMIX_2CH
extern BYTE bSpkConfig(WORD wEEPos, BYTE bValue) large;
extern void vAdspPL2Config(BYTE bCtrl, BYTE bMode) large;
extern BYTE xdata _bDownMixTmp;
extern BYTE xdata _bProLogic2Tmp;
#endif
// *********************************************************************
// Function : void vSetADsp(BOOL fgReset) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
void vSetADsp(BOOL fgReset) large
{
WORD wEEPos;
strucDspChBand rChBand;
#ifndef TWO_CHANNEL_ONLY
if (_rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wType == TYPE_SPK_CONFIG)
{
wEEPos = _rMenuRoot.prMenu[DELAY_PAGE]->prEntry[_bDataCur]->wEEPos;
}
else
#endif
{
wEEPos = _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wEEPos;
}
switch (wEEPos)
{
#ifndef TWO_CHANNEL_ONLY
case DIALOG_POS:
vAdspDialogGain(bEepromReadByte(wEEPos) + ((TRIM_LEVEL_MAX - 1) / 2));
break;
#endif /* not TWO_CHANNEL_ONLY */
case DRNG_POS:
vAdspDynamicRange(bEepromReadByte(wEEPos));
break;
#ifdef PLAYER_KARAOKE
case MIC_TH_POSITION:
vAdspMicThreshold(bEepromReadByte(wEEPos));
break;
case MIC_VOL1_POS:
vAdspMicVol(AUD_MIC_VOL_1, bEepromReadByte(wEEPos));
break;
case MIC_VOL2_POS:
vAdspMicVol(AUD_MIC_VOL_2, bEepromReadByte(wEEPos));
break;
#ifdef KARAOKE_SIMPLE_ECHO
case MIC_ECHO_POS:
vAdspEchoLevel(bEepromReadByte(wEEPos));
break;
#else /* original echo */
case MIC_ECHO_POS:
vAdspEchoVol(bEepromReadByte(wEEPos));
break;
case MIC_DEPTH_POS:
vAdspEchoDepth(bEepromReadByte(wEEPos));
break;
case MIC_DELAY_POS:
vAdspEchoDelay(bEepromReadByte(wEEPos));
break;
#endif /* original echo */
case MIC_DRY_POS:
case MIC_BAND1_POS:
case MIC_BAND2_POS:
case MIC_BAND3_POS:
vAdspMicEq((BYTE)(wEEPos - MIC_DRY_POS + MIC_EQ_DRY), bOptMaxEntryNum(_rMenuRoot, _bMenu, _bEntry));
//(char)bEepromReadByte(wEEPos)+ _rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wMaxOpt);
break;
#endif /* PLAYER_KARAOKE */
#ifndef TWO_CHANNEL_ONLY
#ifdef PLAYER_TRIM
case CENTER_TRIM_POS:
case LEFT_TRIM_POS:
case RIGHT_TRIM_POS:
case LS_TRIM_POS:
case RS_TRIM_POS:
vAdspChTrim((BYTE)(wEEPos - CENTER_TRIM_POS + TRIM_CH_C),
(char)bEepromReadByte(wEEPos)+bOptMaxEntryNum(_rMenuRoot, _bMenu, _bEntry)); //_rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wMaxOpt);
break;
case SUB_TRIM_POS:
vAdspChTrim(TRIM_CH_SUB,
(char)bEepromReadByte(wEEPos)+bOptMaxEntryNum(_rMenuRoot, _bMenu, _bEntry)); //_rMenuRoot.prMenu[_bMenu]->prEntry[_bEntry-1]->wMaxOpt);
break;
#endif /* PLAYER_TRIM */
case LEFT_DELAY_POS:
case RIGHT_DELAY_POS:
/* no time delay for front speaker */
break;
case CENTER_DELAY_POS:
#ifdef CHNL_DELAY_USE_TIME
vAdspChDelayTime((BYTE)(wEEPos - CENTER_DELAY_POS + DELAY_CH_C), bEepromReadByte(wEEPos));
#else
vAdspChDelay((BYTE)(wEEPos - CENTER_DELAY_POS + DELAY_CH_C), bEepromReadByte(wEEPos) * 2);
#endif
break;
case LS_DELAY_POS:
case RS_DELAY_POS:
#ifdef CHNL_DELAY_USE_TIME // 0ms ~ 15ms
#ifdef SIMPLE_AUDIO_SETUP_MENU
vAdspChDelayTime((BYTE)(LS_DELAY_POS - CENTER_DELAY_POS + DELAY_CH_C), bEepromReadByte(wEEPos) * 3);
vAdspChDelayTime((BYTE)(RS_DELAY_POS - CENTER_DELAY_POS + DELAY_CH_C), bEepromReadByte(wEEPos) * 3);
#else
vAdspChDelayTime((BYTE)(wEEPos - CENTER_DELAY_POS + DELAY_CH_C), bEepromReadByte(wEEPos) * 3);
#endif
#else
vAdspChDelay((BYTE)(wEEPos - CENTER_DELAY_POS + DELAY_CH_C), bEepromReadByte(wEEPos) * 2);
#endif
break;
case SUB_DELAY_POS:
vAdspChDelay(DELAY_CH_SUB, bEepromReadByte(wEEPos) * 2);
break;
#endif /* TWO_CHANNEL_ONLY */
#ifdef PLAYER_SURROUND
case BASS_GAIN_POS:
vAdspBassBoostGain(bEepromReadByte(wEEPos)+14);
break;
case CLEAR_GAIN_POS:
vAdspTrebleBoostGain(bEepromReadByte(wEEPos)+14);
break;
case SB_DELAY_POS:
vAdspBassPipeDelay(bEepromReadByte(wEEPos));
break;
case VS_GAIN_POS:
vAdspVsurrGain(bEepromReadByte(wEEPos));
break;
case VS_W_GAIN_POS:
vAdspVsurrWGain(bEepromReadByte(wEEPos));
break;
case VS_DELAY_POS:
vAdspVsurrDelay(bEepromReadByte(wEEPos));
break;
case EQ_DRY_POS:
case EQ_BAND_1_POS:
case EQ_BAND_2_POS:
case EQ_BAND_3_POS:
case EQ_BAND_4_POS:
case EQ_BAND_5_POS:
case EQ_BAND_6_POS:
case EQ_BAND_7_POS:
case EQ_BAND_8_POS:
case EQ_BAND_9_POS:
case EQ_BAND_10_POS:
if (fgReset)
{
break;
}
if (_fgNotify)
{
vAdspSurr(AUD_CH_EQ_CTRL, ADSP_ON);
}
rChBand.Union.Bit.Ch = EQ_CH_ALL;
rChBand.Union.Bit.Band = (BYTE)(wEEPos - EQ_DRY_POS);
vAdspChEqBand(rChBand, (char)_bDataCur + bOptMaxEntryNum(_rMenuRoot, _bMenu, _bEntry), TRUE);
break;
#endif /* PLAYER_SURROUND */
default:
break;
}
}
#ifdef PLAYER_SURROUND
#ifndef SET_VSURR_IN_SPKCFG
// *********************************************************************
// Function : BYTE bSetVsurr(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bSetVsurr(WORD wEEPos, BYTE bValue) large
{
if (bEepromReadByte(VSURR_SW_POS) == EV_ON)
{
#ifndef PLAYER_3D_GAIN
vAdspVsurrGain(AUD_VSURR_GAIN_DEFAULT);
vAdspVsurrWGain(AUD_VSURR_WGAIN_DEFAULT);
vAdspVsurrDelay(AUD_VSURR_DELAY_DEFAULT);
#endif
vAdspSurr(AUD_VSURR_CTRL, ADSP_ON);
}
else
{
vAdspSurr(AUD_VSURR_CTRL, ADSP_OFF);
}
}
#endif /* !SET_VSURR_IN_SPKCFG */
// *********************************************************************
// Function : BYTE bSetBass(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bSetBass(WORD wEEPos, BYTE bValue) large
{
if (bEepromReadByte(BASS_SW_POS) == EV_ON)
{
#ifndef PLAYER_SEQ
vAdspBassBoostGain(AUD_BASS_BOOST_GAIN_DEFAULT);
#endif
vAdspSurr(AUD_BASS_BOOST_CTRL, ADSP_ON);
}
else
{
vAdspSurr(AUD_BASS_BOOST_CTRL, ADSP_OFF);
}
#ifdef PLAYER_SEQ
return (ENTRY_FUN_REDRAW);
#else
return (ENTRY_FUN_OK);
#endif
}
// *********************************************************************
// Function : BYTE bSetClear(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bSetClear(WORD wEEPos, BYTE bValue) large
{
if (bEepromReadByte(CLEAR_SW_POS) == EV_ON)
{
#ifndef PLAYER_SEQ
vAdspTrebleBoostGain(AUD_TREBLE_BOOST_GAIN_DEFAULT);
#endif
vAdspSurr(AUD_TREBLE_BOOST_CTRL, ADSP_ON);
}
else
{
vAdspSurr(AUD_TREBLE_BOOST_CTRL, ADSP_OFF);
}
#ifdef PLAYER_SEQ
return (ENTRY_FUN_REDRAW);
#else
return (ENTRY_FUN_OK);
#endif
}
// *********************************************************************
// Function : BYTE bSetSBass(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bSetSBass(WORD wEEPos, BYTE bValue) large
{
if (bEepromReadByte(SBASS_SW_POS) == EV_ON)
{
#ifndef PLAYER_SEQ
vAdspBassPipeDelay(AUD_BASS_PIPE_DELAY_DEFAULT);
#endif
vAdspSurr(AUD_BASS_PIPE_CTRL, ADSP_ON);
}
else
{
vAdspSurr(AUD_BASS_PIPE_CTRL, ADSP_OFF);
}
#ifdef PLAYER_SEQ
return (ENTRY_FUN_REDRAW);
#else
return (ENTRY_FUN_OK);
#endif
}
// *********************************************************************
// Function : BYTE bSetReverbMd(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bSetReverbMd(WORD wEEPos, BYTE bValue) large
{
BYTE bTmp = bValue;//bEepromReadByte(REVERB_MD_POS);
if (bTmp > AUD_REVERB_MODE_MAX)
{
bTmp = 0;
fgEepromWriteByte(REVERB_MD_POS, 0);
}
vAdspReverbMode(bTmp);
return (ENTRY_FUN_OK);
}
#ifndef NO_POST_DRC_ON_OFF
// *********************************************************************
// Function : BYTE bSetPostDRC(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bSetPostDRC(WORD wEEPos, BYTE bValue) large
{
BYTE bTmp = bEepromReadByte(POST_DRC_POS);
switch (bTmp)
{
case EV_POST_DRC_ON:
vAdspPostDRC(AUD_DRC_POST_ON);
break;
case EV_POST_DRC_OFF:
vAdspPostDRC(AUD_DRC_POST_OFF);
break;
case EV_POST_DRC_AUTO:
vAdspPostDRC(AUD_DRC_POST_AUTO);
break;
default:
break;
}
return (ENTRY_FUN_OK);
}
#endif /* NO_POST_DRC_ON_OFF */
// *********************************************************************
// Function : BYTE bSetEqPreset(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bSetEqPreset(WORD wEEPos, BYTE bValue) large
{
BYTE bType = bEepromReadByte(EQ_PRESET_POS);
#ifdef CH_EQ_NO_SUPER_EQ
if (bEepromReadByte(BASS_SW_POS) == EV_ON)
{
fgEepromWriteByte(BASS_SW_POS, EV_OFF);
vAdspSurr(AUD_BASS_BOOST_CTRL, ADSP_OFF);
}
if (bEepromReadByte(CLEAR_SW_POS) == EV_ON)
{
fgEepromWriteByte(CLEAR_SW_POS, EV_OFF);
vAdspSurr(AUD_TREBLE_BOOST_CTRL, ADSP_OFF);
}
if (bEepromReadByte(SBASS_SW_POS) == EV_ON)
{
fgEepromWriteByte(SBASS_SW_POS, EV_OFF);
vAdspSurr(AUD_BASS_PIPE_CTRL, ADSP_OFF);
}
#endif /* CH_EQ_NO_SUPER_EQ */
if (bType == EV_NONE)
{
vAdspSurr(AUD_CH_EQ_CTRL, ADSP_OFF);
}
else
{
vAdspSurr(AUD_CH_EQ_CTRL, ADSP_ON);
}
vAdspChEqLoadPreset(bType);
#ifdef CH_EQ_NO_SUPER_EQ
return (ENTRY_FUN_REDRAW);
#else
return (ENTRY_FUN_OK);
#endif
}
#if (!defined(SIMPLE_MENU) && defined(PLAYER_ADV_EQ))
// *********************************************************************
// Function : BYTE bChEq(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return : None
// *********************************************************************
BYTE bChEq(WORD wEEPos, BYTE bValue) large
{
WORD wH;
BYTE bTemp;
BYTE bTempCur;
BYTE bTempItem;
bTempCur = _bDataCur;
bTempItem = _bEntry;
for(bTemp = 3; bTemp <= 13; bTemp++)
{
fgEepromWriteByte(_rMenuRoot.prMenu[EQ_PAGE]->prEntry[bTemp]->wEEPos, cAdspChEqPresetParm(bTempCur, bTemp-3));
}
if (_fgNotify)
{
for(bTemp = 3; bTemp <= 13; bTemp++)
{
wH = bOptMaxEntryNum(_rMenuRoot, _bMenu, bTemp + 1)<<3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -