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

📄 stpadsp.c

📁 MTK 1389e版 MINI组合音响代码
💻 C
📖 第 1 页 / 共 3 页
字号:
      _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 PLAYER_KARAOKE
// *********************************************************************
// Function : BYTE bSetMic(WORD wEEPos, BYTE bValue) large
// Description :
// Parameter :
// Return    : None
// *********************************************************************
#if 0 //def INTERNAL_KARA
extern BYTE xdata _bMicSw;
#endif
BYTE bSetMic(WORD wEEPos, BYTE bValue) large
{

#ifdef ASSIST_KARA_DET
if(bMICMenuON)
#endif
{
#if defined(KARA_DET)
  if(bValue)
#else
  if (bEepromReadByte(MIC_SW_POS) == EV_ON)
#endif
  {

  #ifdef DEBUG_ADSP
DRS232LogS("S1\n");    //ON
DRS232LogB(0,0,0,0);
#endif
  #if 0//def PLAYER_MIC_EQ
    vAdspSetMicEq(ADSP_ON);
  #else
    vAdspSetMicEq(ADSP_OFF);
  #endif
  
  #ifdef KARA_IN_SETUP
    vAdspEchoLevel(bEepromReadByte(MIC_ECHO_POS) + 7);
  #else
    vAdspMicThreshold(0x0C);                                                //   change this to adjust the switch_value of vocal_assiat
    vAdspEchoLevel(bEepromReadByte(MIC_ECHO_POS));   
  #endif

   vAdspKaraMode(KARA_MODE_ENABLE);
  }
  else
  {
  #ifdef DEBUG_ADSP
DRS232LogS("S2\n");     //OFF
#endif
    vAdspSetMicEq(ADSP_OFF);
    vAdspKaraMode(KARA_MODE_DISABLE);
  }
}
#ifdef ASSIST_KARA_DET
else
{
#if defined(KARA_DET)
  if(bValue)
#else
  if (bEepromReadByte(MIC_SW_POS) == EV_ON&&fgMICDET)
#endif
  {
  #ifdef PLAYER_MIC_EQ
    vAdspSetMicEq(ADSP_ON);
  #else
    vAdspSetMicEq(ADSP_OFF);
  #endif
  
  #ifdef KARA_IN_SETUP
    vAdspEchoLevel(bEepromReadByte(MIC_ECHO_POS) + 7);
  #else
    vAdspMicThreshold(0x0c);                                                //   change this to adjust the switch_value of vocal_assiat
    vAdspEchoLevel(bEepromReadByte(MIC_ECHO_POS));   
  #endif
  
   vAdspKaraMode(KARA_MODE_ENABLE);
  }
  else
  {
    //vAdspMicMix(MIC_MIX_LR, ADSP_OFF);
    vAdspSetMicEq(ADSP_OFF);
    vAdspKaraMode(KARA_MODE_DISABLE);
  }
}
#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);

  #ifdef DVD_DECODE//no spdif out when in the AUDIO_IN_EN
  if(fgIsFuncAin()) bTmp=EV_AO_OFF;
  #endif				

  switch (bTmp)
  {
    case EV_PCM:
      vAdspSpdifMode(SPDIF_PCM);
      break;

    case EV_MANUAL:
      vAdspSpdifMode(SPDIF_MANUAL);
      break;

    case EV_AO_OFF:
      vAdspSpdifMode(SPDIF_OFF);
      if (bTmp != EV_AO_OFF)
      {
        bTmp = EV_AO_OFF;
        fgEepromWriteByte(IEC958_POSITION, EV_AO_OFF);
      }
      break;
    
    case EV_RAW:
    default:
#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;

#if 0 //bbk
    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;
#endif      
  }

#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);
    }

#if 1//BillDen def 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;

    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
{
//BillDen bg
  BYTE bType=bEepromReadByte(IEC_MAX_FREQ_POSITION);
  BYTE bReDraw = 0;
  if(bType!=EV_48K)
  { 
    #ifdef AUDIO_TYPE_NOT_SAVE  //dengsu 0701
    if (_bSurType!=EV_NONE)
    #else
    if (bEepromReadByte(REVERB_MD_POS)!=EV_NONE)
    #endif
    {
      fgEepromWriteByte(REVERB_MD_POS, EV_NONE);
      _bSurType = EV_NONE;
      vAdspReverbMode(EV_NONE);
      bReDraw = 1;
    }	
    #ifdef AUDIO_TYPE_NOT_SAVE   //dengsu 0701
    if (_bEqType!=EV_NONE)
    #else
    if (bEepromReadByte(EQ_PRESET_POS)!=EV_NONE)
    #endif
    {
      fgEepromWriteByte(EQ_PRESET_POS, EV_NONE);
      vAdspSurr(AUD_CH_EQ_CTRL, ADSP_OFF);
      _bEqType = EV_NONE;
      vAdspChEqLoadPreset(EV_NONE);
      bReDraw = 1;
    }	
  }	
//BillDen end

  switch (bType) //BillDen
  {
#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
  }

#ifdef BBK //BillDen
  if(bReDraw)
    return (ENTRY_FUN_REDRAW);
  else  
#endif
  return (ENTRY_FUN_OK);
}
  #endif /* SPDIF_PCM_FREQ_SELECT */

#else 
	#ifdef BBK_MENU
  #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

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -