⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stpadsp.c

📁 mtk1389L latest sourcecode enjoy
💻 C
📖 第 1 页 / 共 3 页
字号:
/**********************************************************************/
/***************    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 + -