📄 audio_api1.c
字号:
wTemp);
}
void SGTV58xx_StereoModeAuto(BOOL bAutoSet)
{
WORD wTemp = SGTV58XX_DEMOD_STEREO_MODE_CTRL__FORCE_MODE__SET_VALUE;
if(bAutoSet)
{
wTemp = SGTV58XX_DEMOD_STEREO_MODE_CTRL__FORCE_MODE__DETECTED_VALUE;
}
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_STEREO_MODE_CTRL,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__FORCE_MODE__GETMASK,
wTemp);
}
void SGTV58xx_StereoModeSet(ESGTV58xxStereoMode eStereoMode)
{
// WORD wTemp;
SGTV58xx_StereoModeAuto(_FALSE_);
// M2k60720 with LSZ {
switch(eStereoMode)
{
case StereoMode_MONO:
SGTV58xx_SetToChannelB(_FALSE_); // lsz 060713
SGTV58xx_ForcedToLangB(_FALSE_); // lsz 060713
SGTV58xx_NicamForceBackup(_TRUE_); // lsz 061109 (g_AudioInfo.bForceMono_SAP);
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_STEREO_MODE_CTRL,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__GETMASK,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__MONO_VALUE);
break;
case StereoMode_Nicam_MONO:
SGTV58xx_SetToChannelB(_TRUE_); // lsz 060713
SGTV58xx_ForcedToLangB(_TRUE_); // lsz 060713
SGTV58xx_NicamForceBackup(_FALSE_); // lsz 061109 (g_AudioInfo.bForceMono_SAP);
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_STEREO_MODE_CTRL,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__GETMASK,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__MONO_VALUE);
break;
case StereoMode_STEREO:
SGTV58xx_SetToChannelB(_FALSE_); // lsz 060713
SGTV58xx_ForcedToLangB(_FALSE_); // lsz 060713
#ifdef SUPPORT_NICAM
SGTV58xx_NicamForceBackup(_FALSE_); // lsz 0607614
#endif
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_STEREO_MODE_CTRL,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__GETMASK,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__STEREO_VALUE);
break;
case StereoMode_SAP:
SGTV58xx_SetToChannelB(g_AudioInfo.bForceMono_SAP); // lsz 060713
SGTV58xx_ForcedToLangB(g_AudioInfo.bForceMono_SAP); // lsz 060713
// Tenny at 2k60915 {
#ifdef SUPPORT_NICAM
SGTV58xx_NicamForceBackup(_FALSE_); // lsz 0607614
#endif
if(g_AudioInfo.ucStereoModeDetected == StereoMode_STEREO)
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_STEREO_MODE_CTRL,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__GETMASK,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__STEREO_VALUE);
else
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_STEREO_MODE_CTRL,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__GETMASK,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__MONO_VALUE);
// Tenny at 2k60915 }
break;
case StereoMode_DUALA:
case StereoMode_DUALB:
if(eStereoMode == StereoMode_DUALA)
SGTV58xx_SetToChannelB(_FALSE_);
else
SGTV58xx_SetToChannelB(_TRUE_);
#ifdef SUPPORT_NICAM
SGTV58xx_NicamForceBackup(_FALSE_); // lsz 060714
#endif
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_STEREO_MODE_CTRL,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__GETMASK,
SGTV58XX_DEMOD_STEREO_MODE_CTRL__SET_MODE__DUAL_MONO_VALUE);
break;
}
}
void SGTV58xx_StereoModeConfig(void)
{
Audio_ChannelConfig(_FALSE_); //zenghw add 20061116
if(g_AudioInfo.bStatusChanged)
{
g_AudioInfo.bStatusChanged = _FALSE_;
g_AudioInfo.ucUserPreSelect = g_AudioInfo.ucStereoModeDetected;
SGTV58xx_SetToChannelB(g_AudioInfo.bForceMono_SAP);
#ifdef SUPPORT_NICAM
SGTV58xx_NicamForceBackup(g_AudioInfo.bForceMono_SAP);
#endif
SGTV58xx_StereoModeAuto(_TRUE_);
// lsz 061128
if(( g_AudioInfo.ucStereoModeDetected==StereoMode_MONO)&&g_AudioInfo.bNicamLocked)
{
g_AudioInfo.ucUserPreSelect=StereoMode_Nicam_MONO;
}
// lsz 061128
// SGTV58xx_StereoModeSet(g_AudioInfo.ucUserPreSelect);
}
if(g_AudioInfo.bUserChanged)
{
g_AudioInfo.bUserChanged = _FALSE_;
if(g_AudioInfo.bSAPDetected) // Just valid for BTSC
{
if(g_AudioInfo.ucStereoModeDetected == StereoMode_MONO)
{
if(g_AudioInfo.ucUserPreSelect == StereoMode_MONO)
{
g_AudioInfo.bForceMono_SAP = _TRUE_;
g_AudioInfo.ucUserPreSelect = StereoMode_SAP;
}
else
{
g_AudioInfo.bForceMono_SAP = _FALSE_;
g_AudioInfo.ucUserPreSelect = StereoMode_MONO;
}
}
else if(g_AudioInfo.ucStereoModeDetected == StereoMode_STEREO)
{
if(g_AudioInfo.ucUserPreSelect == StereoMode_STEREO)
{
g_AudioInfo.ucUserPreSelect = StereoMode_SAP;
g_AudioInfo.bForceMono_SAP = _TRUE_;
}
else if(g_AudioInfo.ucUserPreSelect == StereoMode_SAP)
{
g_AudioInfo.ucUserPreSelect = StereoMode_MONO;
g_AudioInfo.bForceMono_SAP = _FALSE_;
}
else
{
g_AudioInfo.ucUserPreSelect = StereoMode_STEREO;
g_AudioInfo.bForceMono_SAP = _FALSE_;
}
}
// g_AudioInfo.bForceMono_SAP = !g_AudioInfo.bForceMono_SAP;
// M2k60720 with LSZ
// lsz 060713 SGTV58xx_SetToChannelB(g_AudioInfo.bForceMono_SAP);
}
else if(g_AudioInfo.bNicamLocked)
{
if(g_AudioInfo.ucStereoModeDetected == StereoMode_MONO)
{
if(g_AudioInfo.ucUserPreSelect== StereoMode_Nicam_MONO)
{
g_AudioInfo.bForceMono_SAP = _TRUE_;
g_AudioInfo.ucUserPreSelect = StereoMode_MONO;
}
else// if(g_AudioInfo.ucStereoMode == StereoMode_MONO)
{
g_AudioInfo.ucUserPreSelect = StereoMode_Nicam_MONO;
g_AudioInfo.bForceMono_SAP = _FALSE_;
}
}
else if(g_AudioInfo.ucStereoModeDetected == StereoMode_STEREO)
{
if(g_AudioInfo.ucUserPreSelect== StereoMode_STEREO)
{
g_AudioInfo.bForceMono_SAP = _TRUE_;
g_AudioInfo.ucUserPreSelect = StereoMode_MONO;
}
else// if(g_AudioInfo.ucStereoMode == StereoMode_MONO)
{
//
{
g_AudioInfo.bForceMono_SAP = _FALSE_;
g_AudioInfo.ucUserPreSelect = StereoMode_STEREO;
}
}
}
else
{
if(g_AudioInfo.ucUserPreSelect == StereoMode_DUALA)
{
g_AudioInfo.bForceMono_SAP = _FALSE_;
g_AudioInfo.ucUserPreSelect = StereoMode_DUALB;
}
else
{
if(g_AudioInfo.bForceMono_SAP)
{
g_AudioInfo.bForceMono_SAP = _FALSE_;
g_AudioInfo.ucUserPreSelect = StereoMode_DUALA;
}
else
{
g_AudioInfo.bForceMono_SAP = _TRUE_;
g_AudioInfo.ucUserPreSelect = StereoMode_MONO;
}
}
}
}
else
{
g_AudioInfo.bForceMono_SAP = _FALSE_; // Tenny at 2k60913
if(g_AudioInfo.ucStereoModeDetected == StereoMode_MONO)
{
g_AudioInfo.ucUserPreSelect = StereoMode_MONO;
}
else if(g_AudioInfo.ucStereoModeDetected == StereoMode_STEREO)
{
if(g_AudioInfo.ucUserPreSelect == StereoMode_STEREO)
g_AudioInfo.ucUserPreSelect = StereoMode_MONO;
else
g_AudioInfo.ucUserPreSelect = StereoMode_STEREO;
}
else
{
if(g_AudioInfo.ucUserPreSelect == StereoMode_DUALA)
g_AudioInfo.ucUserPreSelect = StereoMode_DUALB;
else
g_AudioInfo.ucUserPreSelect= StereoMode_DUALA;
}
}
SGTV58xx_StereoModeSet(g_AudioInfo.ucUserPreSelect);
}
#ifdef ZHW_DEBUG_SGTV_MSG
if(g_AudioInfo.ucUserPreSelect == StereoMode_MONO)
tvDebugPrint("g_AudioInfo.ucUserPreSelect = StereoMode_MONO \n");
else if(g_AudioInfo.ucUserPreSelect == StereoMode_STEREO)
tvDebugPrint("g_AudioInfo.ucUserPreSelect = StereoMode_STEREO \n");
else if(g_AudioInfo.ucUserPreSelect == StereoMode_DUALA)
tvDebugPrint("g_AudioInfo.ucUserPreSelect = StereoMode_DUALA\n");
else if(g_AudioInfo.ucUserPreSelect == StereoMode_DUALB)
tvDebugPrint("g_AudioInfo.ucUserPreSelect = StereoMode_DUALB\n");
else if(g_AudioInfo.ucUserPreSelect == StereoMode_Nicam_MONO)
tvDebugPrint("g_AudioInfo.ucUserPreSelect = StereoMode_Nicam_MONO\n");
else
tvDebugPrint1("g_AudioInfo.ucUserPreSelect = %x ,may be is wrong\n",g_AudioInfo.ucUserPreSelect);
#endif
}
//////////////////////////////// Input/Output Channel configure ///////////////////////////////////////
void SGTV58xx_DemodInputSelectSIF0(BOOL bSelectSIF0)
{
if(bSelectSIF0)
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_ANA_CTRL_1,
SGTV58XX_DEMOD_ANA_CTRL_1__AGC_SEL_SIF__GETMASK,
SGTV58XX_DEMOD_ANA_CTRL_1__AGC_SEL_SIF__SIF0_VALUE);
else
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__DEMOD_ANA_CTRL_1,
SGTV58XX_DEMOD_ANA_CTRL_1__AGC_SEL_SIF__GETMASK,
SGTV58XX_DEMOD_ANA_CTRL_1__AGC_SEL_SIF__SIF1_VALUE);
}
void SGTV58xx_AISxSelectInput(ESGTV58xxAnalogInput eAnalogInput, ESGTV58xxAISOutput eAisOutput)
{
WORD wMask;
BYTE ucStartBit;
switch(eAisOutput)
{
case AIS_ADC:
wMask = SGTV58XX_ANA_CTRL_AIS_CNTRL__ADC_SEL__GETMASK;
ucStartBit = SGTV58XX_ANA_CTRL_AIS_CNTRL__ADC_SEL__STARTBIT;
break;
case AIS_ANA0:
wMask = SGTV58XX_ANA_CTRL_AIS_CNTRL__AIS0_SEL__GETMASK;
ucStartBit = SGTV58XX_ANA_CTRL_AIS_CNTRL__AIS0_SEL__STARTBIT;
break;
case AIS_ANA1:
wMask = SGTV58XX_ANA_CTRL_AIS_CNTRL__AIS1_SEL__GETMASK;
ucStartBit = SGTV58XX_ANA_CTRL_AIS_CNTRL__AIS1_SEL__STARTBIT;
break;
case AIS_ANA2:
wMask = SGTV58XX_ANA_CTRL_AIS_CNTRL__AIS2_SEL__GETMASK;
ucStartBit = SGTV58XX_ANA_CTRL_AIS_CNTRL__AIS2_SEL__STARTBIT;
break;
}
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__ANA_CTRL_AIS_CNTRL, wMask, (((WORD)(eAnalogInput)) << ucStartBit));
}
void SGTV58xx_SSSIOConfig(ESGTV58xxSSSInput eSSSInput, ESGTV58xxSSSOutput eSSSOutput)
{
WORD wReg;
WORD wMask;
BYTE ucStartBit;
WORD wValue;
switch(eSSSOutput)
{
case SSSOutput_I2S_DOut0:
case SSSOutput_I2S_DOut1:
case SSSOutput_I2SA_DOut:
wReg = SGTV58XX_REG__SSS_I2SSOUT;
if(eSSSOutput == SSSOutput_I2S_DOut0)
{
wMask = SGTV58XX_SSS_I2SSOUT__I2SSOUT0__GETMASK;
ucStartBit = SGTV58XX_SSS_I2SSOUT__I2SSOUT0__STARTBIT;
}
else if(eSSSOutput == SSSOutput_I2S_DOut1)
{
wMask = SGTV58XX_SSS_I2SSOUT__I2SSOUT1__GETMASK;
ucStartBit = SGTV58XX_SSS_I2SSOUT__I2SSOUT1__STARTBIT;
}
else
{
wMask = SGTV58XX_SSS_I2SSOUT__I2SAOUT__GETMASK;
ucStartBit = SGTV58XX_SSS_I2SSOUT__I2SAOUT__STARTBIT;
}
break;
case SSSOutput_SPDIFOut:
wReg = SGTV58XX_REG__SSS_SPDIFOUT;
wMask = SGTV58XX_SSS_SPDIFOUT__SPDIFOUT__GETMASK;
ucStartBit = SGTV58XX_SSS_SPDIFOUT__SPDIFOUT__STARTBIT;
break;
case SSSOutput_DAC0:
wReg = SGTV58XX_REG__SSS_DACOUT;
wMask = SGTV58XX_SSS_DACOUT__DAC0__GETMASK;
ucStartBit = SGTV58XX_SSS_DACOUT__DAC0__STARTBIT;
break;
case SSSOutput_DAC1:
wReg = SGTV58XX_REG__SSS_DACOUT;
wMask = SGTV58XX_SSS_DACOUT__DAC1__GETMASK;
ucStartBit = SGTV58XX_SSS_DACOUT__DAC1__STARTBIT;
break;
case SSSOutput_DAC_HDPH:
wReg = SGTV58XX_REG__SSS_DACOUT;
wMask = SGTV58XX_SSS_DACOUT__DACHDPH__GETMASK;
ucStartBit = SGTV58XX_SSS_DACOUT__DACHDPH__STARTBIT;
break;
case SSSOutput_DAC_Main:
wReg = SGTV58XX_REG__SSS_DACOUT;
wMask = SGTV58XX_SSS_DACOUT__DACMAIN__GETMASK;
ucStartBit = SGTV58XX_SSS_DACOUT__DACMAIN__STARTBIT;
break;
case SSSOutput_DAC_Sub:
wReg = SGTV58XX_REG__SSS_DAC_MAIN_LF;
wMask = SGTV58XX_SSS_DAC__MAIN_LF__GETMASK;
ucStartBit = SGTV58XX_SSS_DAC__MAIN_LF__STARTBIT;
break;
case SSSOutput_SyncDelay_Out:
wReg = SGTV58XX_REG__SSS_MISC;
wMask = SGTV58XX_SSS_MISC__SYNC_DELAY__GETMASK;
ucStartBit = SGTV58XX_SSS_MISC__SYNC_DELAY__STARTBIT;
break;
case SSSOutput_ToneGen_Out:
wReg = SGTV58XX_REG__SSS_MISC;
wMask = SGTV58XX_SSS_MISC__TONE_GENERATOR__GETMASK;
ucStartBit = SGTV58XX_SSS_MISC__TONE_GENERATOR__STARTBIT;
break;
case SSSOutput_PeakDetect:
wReg = SGTV58XX_REG__SSS_MISC;
wMask = SGTV58XX_SSS_MISC__PEAK_DETECT__GETMASK;
ucStartBit = SGTV58XX_SSS_MISC__PEAK_DETECT__STARTBIT;
break;
case SSSOutput_DAP_SGTLDP:
wReg = SGTV58XX_REG__SSS_DAP;
wMask = SGTV58XX_SSS_DAP__SGTL_DP__GETMASK;
ucStartBit = SGTV58XX_SSS_DAP__SGTL_DP__STARTBIT;
break;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -