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

📄 stpadsp.c

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