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

📄 stpadsp.c

📁 MTK 1389e版 MINI组合音响代码
💻 C
📖 第 1 页 / 共 3 页
字号:
      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
#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;

    case EV_DOWN_LTRT:
    default:
      rDownSpk.Mode = DOWNMIX_LT_RT;
      break;
  }

  vAdspSpkDownmix(rDownSpk);

  return (ENTRY_FUN_OK);
}

#else /* not defined TWO_CHANNEL_ONLY */

BYTE bSpkConfig(WORD wEEPos, BYTE bValue) large
{
  BYTE bTemp;
  #ifdef USE_M62429
  BYTE bTmp;
  #endif
  BYTE bDownmix;
  strucDownmixConfig rDownSpk;
  strucSpkConfig rSpeak;

#if !defined(DVR938)&&!defined(DVR979)
  bTemp = bEepromReadByte(FNT_SPK_POSITION);
#else
 bTemp = 0;
#endif
  switch(bTemp)
  {
    case EV_LARGE:
      rDownSpk.Front = SPK_LARGE;
      rSpeak.Fr = SPK_LARGE;
      break;
    case EV_SMALL:
      rDownSpk.Front = SPK_SMALL;
      rSpeak.Fr = SPK_SMALL;
      break;
  }

#if !defined(DVR938)&&!defined(DVR979)
  bTemp = bEepromReadByte(SUB_SPK_POSITION);
#else
 bTemp = 0;
#endif
  switch(bTemp)
  {
    case EV_OFF:
    	#ifdef USE_M62429
    	WriteMuteSwVol();
    	#endif
      rDownSpk.Sub = ADSP_OFF;
      rSpeak.Sub = ADSP_OFF;
      break;
    case EV_ON:
    	#ifdef USE_M62429
    	if(bSharedInfo(SI_DISC_TYPE) != SV_DVD_VIDEO && bSharedInfo(SI_DISC_TYPE) != SV_DVD_AUDIO && bSharedInfo(SI_DISC_TYPE) != SV_MINI_DVD)
       	{
		bTmp = bEepromReadByte(AMP_SUBW_VOL_POSITION);
		vSendFlFrSwVolume(CHANNELSW_VOLUME_REGISTER,bTmp,COMMON_VOLUME);
       	}
       else
       	{
		bTmp = bEepromReadByte(AMP_SUBW_VOL_POSITION);
		vSendFlFrSwVolume(CHANNELSW_VOLUME_REGISTER,bTmp,DVD_VOLUME);
       	}
       #endif
      rDownSpk.Sub = ADSP_ON;
      rSpeak.Sub = ADSP_ON;
      break;
  }

 //if(_fgHeadphone&0x80)				//ztb @290905
 	 bDownmix = bEepromReadByte(SPEAKER_POSITION);
 //else
 //	 bDownmix = EV_DOWN_LTRT;

#if (defined(DOLBY_PROLOGIC) || defined(DOLBY_PROLOGIC2))
  if (bDownmix != EV_DOWN_OFF)
  {
    if (bEepromReadByte(PROLOG_SW_POS) != EV_PROLOGIC_OFF)
    {
      fgEepromWriteByte(PROLOG_SW_POS, EV_PROLOGIC_OFF);
      // update setting
  #ifdef DOLBY_PROLOGIC
      vSetProlog();
  #elif (defined(DOLBY_PROLOGIC2))
      vAdspPL2Config(AUD_PL2_SWITCH, EV_PL2_OFF);
  #endif
    }
  }
#endif /* DOLBY_PROLOGIC || DOLBY_PROLOGIC2 */

#ifdef SET_VSURR_IN_SPKCFG
  if (bDownmix == EV_DOWN_VSURR)
  {
  #ifdef PLAYER_SURROUND
    #ifndef PLAYER_3D_GAIN
    vAdspVsurrGain(AUD_VSURR_GAIN_DEFAULT);
    vAdspVsurrWGain(AUD_VSURR_WGAIN_DEFAULT);
    vAdspVsurrDelay(AUD_VSURR_DELAY_DEFAULT);
    #endif
  #endif
    vAdspSurr(AUD_VSURR_CTRL, AUD_VSURR_MTK);
    /* Although turn on virtual surroud will force downmix,
       we still need to config large/small of front speaker
       and on/off of sub-woofer.
    */
    vAdspSpkDownmix(rDownSpk);
    return (ENTRY_FUN_REDRAW); //Vincent @12-02-03 ENTRY_FUN_OK ->

  }
  #ifdef USE_N22_VSURR
  else if (bDownmix == EV_DOWN_N22)
  {
  #ifdef PLAYER_SURROUND
    #ifndef PLAYER_3D_GAIN
    vAdspVsurrGain(AUD_VSURR_GAIN_DEFAULT);
    vAdspVsurrWGain(AUD_VSURR_WGAIN_DEFAULT);
    vAdspVsurrDelay(AUD_VSURR_DELAY_DEFAULT);
    #endif
  #endif
    vAdspSurr(AUD_VSURR_CTRL, AUD_VSURR_N22);
    /* Although turn on virtual surroud will force downmix,
       we still need to config large/small of front speaker
       and on/off of sub-woofer.
    */
    vAdspSpkDownmix(rDownSpk);
    return (ENTRY_FUN_REDRAW);
  }
  #endif /* USE_N22_VSURR */
  else
  {
    vAdspSurr(AUD_VSURR_CTRL, ADSP_OFF);
  }
#endif /* SET_VSURR_IN_SPKCFG */

  switch (bDownmix)
  {
    case EV_DOWN_LORO:
      rDownSpk.Mode = DOWNMIX_LO_RO;
#ifdef DOWNMIX_NO_SUBWOFFER
      rDownSpk.Sub = ADSP_OFF;
#endif
      vAdspSpkDownmix(rDownSpk);
      return (ENTRY_FUN_REDRAW); //Vincent @12-02-03 ENTRY_FUN_OK ->

    case EV_DOWN_LTRT:
      rDownSpk.Mode = DOWNMIX_LT_RT;
#ifdef DOWNMIX_NO_SUBWOFFER
      rDownSpk.Sub = ADSP_OFF;
#endif
      vAdspSpkDownmix(rDownSpk);
      return (ENTRY_FUN_REDRAW); //Vincent @12-02-03 ENTRY_FUN_OK ->


    case EV_DOWN_OFF:
      rDownSpk.Mode = DOWNMIX_OFF;
      vAdspSpkDownmix(rDownSpk);
      break;
  }

  bTemp = bEepromReadByte(CNTR_SPK_POSITION);
  switch(bTemp)
  {
    case EV_SPK_OFF:
      rSpeak.Cntr = SPK_OFF;
      break;
    case EV_LARGE:
      rSpeak.Cntr = SPK_LARGE;
      break;
    case EV_SMALL:
      rSpeak.Cntr = SPK_SMALL;
      break;
  }

  bTemp = bEepromReadByte(REAR_SPK_POSITION);
  switch(bTemp)
  {
    case EV_SPK_OFF:
      rSpeak.Rear = SPK_OFF;
      break;
    case EV_LARGE:
      rSpeak.Rear = SPK_LARGE;
      break;
    case EV_SMALL:
      rSpeak.Rear = SPK_SMALL;
      break;
  }

  vAdspSpkConfig(rSpeak);

  
   return (ENTRY_FUN_REDRAW);

}
#endif

BYTE bSetDMono(WORD wEEPos, BYTE bValue) large
{
  vAdspAc3DualMono(bEepromReadByte(DUAL_MN_POS));
  
  return (ENTRY_FUN_OK);
}

#ifdef HDCD_CERTIFICATION
BYTE bHdcdMd(WORD wEEPos, BYTE bValue) large
{
  /* always enable HDCD in cerification */
  vAdspHdcdMode(EV_ON, bEepromReadByte(DITHER_MD_POSITION));
  
  return (ENTRY_FUN_OK);
}

BYTE bHdcdDitherLvl(WORD wEEPos, BYTE bValue) large
{
  vAdspDitherLvl(bEepromReadByte(DITHER_LVL_POSITION));
  
  return (ENTRY_FUN_OK);
}

BYTE bHdcdUpSamp(WORD wEEPos, BYTE bValue) large
{
  vAdspUpSamp(bEepromReadByte(UP_SAMP_POSITION));
  
  return (ENTRY_FUN_OK);
}

  #ifdef AUDIO_IN_EN
BYTE bAinBitLength(WORD wEEPos, BYTE bValue) large
{
  vAdspInputBLength(bEepromReadByte(AIN_BLENGTH_POSITION));
  
  return (ENTRY_FUN_OK);
}
  #endif

#endif
#if (defined(HDCD_EN) && !defined(HDCD_CERTIFICATION))
BYTE bSetHdcdMode(WORD wEEPos, BYTE bValue) large
{
  BYTE bMode = bEepromReadByte(HDCD_MD_POSITION);

  switch(bMode)
  {
    case EV_HDCD_OFF:
#ifdef SHOW_CD_STREAM_TYPE
      vOsdPosShow(OSD_POS_DISC_TYPE, OSD_MSG_CD, OSD_TIMEOUT);
#endif
      vAdspHdcdMode(EV_OFF, EV_ON);
      break;
    case EV_HDCD_1X:
      vAdspHdcdMode(EV_ON, EV_ON);
      vAdspUpSamp(EV_1X);
      break;
    case EV_HDCD_2X:
      vAdspHdcdMode(EV_ON, EV_ON);
      vAdspUpSamp(EV_2X);
      break;
  }  
  
  return (ENTRY_FUN_OK);
}
#endif

#ifdef DOLBY_PROLOGIC2
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
BYTE bSetPL2Switch(WORD wEEPos, BYTE bValue) large
{
#ifdef DAV935
BYTE bTmp;
#endif
//BillDen bg	
  if(bValue!=EV_PL2_OFF)
  {
    if(bEepromReadByte(IEC_MAX_FREQ_POSITION)==EV_96K)  //billy050509
    	{
    	fgEepromWriteByte(IEC_MAX_FREQ_POSITION, EV_48K);
       vAdspPcmFreq(ADSP_IEC_PCM_48K);
    	}
    #ifdef AUDIO_TYPE_NOT_SAVE
    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);
    }	
    #ifdef AUDIO_TYPE_NOT_SAVE
    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);
    }
#ifdef TONE_IN_SETUP
    if (bEepromReadByte(TONE_POS)!=ZERO_KEY_LEVEL)
    {
      fgEepromWriteByte(TONE_POS, ZERO_KEY_LEVEL);
      bToneChange(ZERO_KEY_LEVEL);
    }
#endif    
  }	
//BillDen end
  vAdspPL2Config(AUD_PL2_SWITCH, bValue); //[runma] bEepromReadByte(PROLOG_SW_POS));-> bValue. 
#ifdef DAV935
bTmp = bEepromReadByte(AMP_CT_VOL_POSITION);
vSendCtSlSrVolume(CHANNELCT_VOLUME_REGISTER,bTmp,COMMON_VOLUME);
bTmp = bEepromReadByte(AMP_SR_VOL_POSITION);
vSendCtSlSrVolume(CHANNELSR_VOLUME_REGISTER,bTmp,COMMON_VOLUME); 
bTmp = bEepromReadByte(AMP_SL_VOL_POSITION);
vSendCtSlSrVolume(CHANNELSL_VOLUME_REGISTER,bTmp,COMMON_VOLUME); 
#endif
  return (ENTRY_FUN_REDRAW);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
BYTE bSetPL2Mode(WORD wEEPos, BYTE bValue) large
{
  BYTE bMode;

  bMode = bEepromReadByte(PL2_MODE_POS);

  if (bMode >= EV_PL2_MODE_MAX)
  {
    bMode = EV_PL2_OFF;
  }

  vAdspPL2Config(AUD_PL2_MODE, bMode);

  return (ENTRY_FUN_REDRAW);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
BYTE bSetPL2Panorama(WORD wEEPos, BYTE bValue) large
{
  if (bEepromReadByte(PL2_PANORAMA_POS) == EV_ON)
  {
    vAdspPL2Config(AUD_PL2_PANORAMA, ADSP_ON);
  }
  else
  {
    vAdspPL2Config(AUD_PL2_PANORAMA, ADSP_OFF);
  }
  
  return (ENTRY_FUN_OK);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
BYTE bSetPL2Dimension(WORD wEEPos, BYTE bValue) large
{
  char bSize;
 
  bSize =  (char)bEepromReadByte(PL2_DIMENSION_POS);

  if (bSize > EV_6) // size is -3~0~+3, EV_0~EV_6
  {
    bSize = EV_3;
  }

  vAdspPL2Config(AUD_PL2_DIMENSION, bSize);
  
  return (ENTRY_FUN_OK);
}

// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
BYTE bSetPL2CenterWidth(WORD wEEPos, BYTE bValue) large
{
  BYTE bWidth;
  
  bWidth = bEepromReadByte(PL2_CENTER_POS);

  if (bWidth > EV_7)
  {
    bWidth = EV_0;
  }

  vAdspPL2Config(AUD_PL2_C_WIDTH, bWidth);
  
  return (ENTRY_FUN_OK);
}
#endif /* DOLBY_PROLOGIC2 */

#ifdef AUDIO_IN_EN
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return    :
// *********************************************************************
BYTE bSetAudioInSource(WORD wEEPos, BYTE bValue) large
{
  BYTE bMode;
  
  bMode = bEepromReadByte(AUDIO_IN_POS);

  if (fgIsFuncAin())
  {
    if ((bMode == EV_AI_OFF) ||
        (bMode >= EV_AIN_MAX))
    {
      vAINSwitchSource(EV_AI_OFF);
      vPlayerFuncSwitch(PLAYER_FUNC_DVD);
    }
    else
    {
      vAINSwitchSource(bMode);
    }
  }
  else /* if (fgIsFuncDvd()) */
  {
    if ((bMode > EV_AI_OFF) &&
        (bMode < EV_AIN_MAX))
    {
      vPlayerFuncSwitch(PLAYER_FUNC_AIN);
    }
  }
  
  return (ENTRY_FUN_OK);
}
#endif /* AUDIO_IN_EN */

⌨️ 快捷键说明

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