📄 audio_api1.c
字号:
case SSSOutput_DAP_HPTC:
wReg = SGTV58XX_REG__SSS_DAP;
wMask = SGTV58XX_SSS_DAP__HP_TONE_CONTROL__GETMASK;
ucStartBit = SGTV58XX_SSS_DAP__HP_TONE_CONTROL__STARTBIT;
break;
case SSSOutput_DAP_BM:
wReg = SGTV58XX_REG__SSS_DAP;
wMask = SGTV58XX_SSS_DAP__BASS_MANAGEMENT__GETMASK;
ucStartBit = SGTV58XX_SSS_DAP__BASS_MANAGEMENT__STARTBIT;
break;
case SSSOutput_DAP_SRSBBE:
wReg = SGTV58XX_REG__SSS_DAP;
wMask = SGTV58XX_SSS_DAP__BBE_SRS__GETMASK;
ucStartBit = SGTV58XX_SSS_DAP__BBE_SRS__STARTBIT;
break;
}
wValue=((WORD)(eSSSInput)) << ucStartBit;
SGTV58xx_I2C_MaskWrite(wReg, wMask, wValue);
#ifdef ZHW_DEBUG_SGTV_MSG
// tvDebugPrint3("wreg = 0x%4x , wMask = 0x %4x, eSSSInput = %4x \n" ,wReg,wMask,wValue);
// tvDebugPrint2("wreg = 0x%4x , reg value = 0x%4x\n" ,wReg,(WORD)SGTV58xx_I2C_Read(wReg));
#endif
}
/*
ucSource: source select for Scartx output
= 0 : DAC0
= 1 : DAC1
= 2 : AIS_ANAx
*/
void SGTV58xx_ScartxOutputConfig(ESGTV58xxScartInput eSCInput, ESGTV58xxScartOutput eSCOutput)
{
WORD wMask;
BYTE ucStartBit;
if(eSCOutput == SCARTOutput_AOUT2)
{
wMask = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT2_SEL__GETMASK;
ucStartBit = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT2_SEL__STARTBIT;
}
else if(eSCOutput == SCARTOutput_AOUT1)
{
wMask = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT1_SEL__GETMASK;
ucStartBit = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT1_SEL__STARTBIT;
}
else // if(eSCOutput == SCARTOutput_AOUT0)
{
wMask = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT0_SEL__GETMASK;
ucStartBit = SGTV58XX_ANA_CTRL_AOS_DAC_CNTRL__AOUT0_SEL__STARTBIT;
}
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__ANA_CTRL_AOS_DAC_CNTRL, wMask, ((WORD)eSCInput << ucStartBit));
}
// UserPrefCurrentInputMain - Main Source
// UserPrefCurrentInputPip - Source
// bSwitch - _TRUE_ for speaker outpu PIP audio
void SGTV58xx_ChannelConfig(BYTE ucMPSource, BYTE ucPPSource, BOOL bSwitch)
{
// ESGTV58xxSSSInput eSSSInput;
ESGTV58xxAnalogInput eAnalogInputMP, eAnalogInputPP;
BOOL bI2SSignalChecked = _FALSE_;
// SGTV58xx_I2SAOut_Config();
// 1. Config for TV Out
SGTV58xx_DemodInputSelectSIF0(_TRUE_);
// if(IsSourceHDMIPort(ucMPSource))
if(tvMPSourceIsHDMI())
{
if(tdMPSourceIsHDMI())//tvHDMISignalCheck if HDMI OR DVI
{
bI2SSignalChecked = _TRUE_;
// gm_AvsSetSource(gm_HdmiGetAvsSource()); //zenghw remove for temp 20061108
}
else
{
// gm_AvsSetSource(gmd_AVS_SOURCE_I2S_PINS);
ucMPSource = SRC_MP_RGB;
}
}
// else if(IsSourceHDMIPort(ucPPSource) && UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP)
else if(tvPPSourceIsHDMI() && (g_Data.ucWinStatus >= _TV_WIN_PIP_SS_ || g_Data.ucWinStatus <= _TV_WIN_POP_FULL_))
{
if(tvMPSourceIsHDMI())//tvHDMISignalCheck if HDMI OR DVI
{
bI2SSignalChecked = _TRUE_;
// gm_AvsSetSource(gmd_AVS_SOURCE_HDMI_I2S_OUTPUT);//zenghw remove for temp 20061108
}
else
{
// gm_AvsSetSource(gmd_AVS_SOURCE_I2S_PINS);
ucPPSource = SRC_PIP_RGB;
}
}
// else //zenghw remove for temp 20061108
// gm_AvsSetSource(gmd_AVS_SOURCE_I2S_PINS);
// Tenny at 2k61023 { Disable I2S prescaler if HDMI is unused
if(bI2SSignalChecked)
{
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__SSS_PSCLR_CTRL,
SGTV58XX_SSS_PSCLR_CTRL__I2SAIN__GETMASK,
SGTV58XX_SSS_PSCLR_CTRL__I2SAIN__PRESCALER_ON_VALUE);
}
else
{
SGTV58xx_I2C_MaskWrite(SGTV58XX_REG__SSS_PSCLR_CTRL,
SGTV58XX_SSS_PSCLR_CTRL__I2SAIN__GETMASK,
SGTV58XX_SSS_PSCLR_CTRL__I2SAIN__PRESCALER_OFF_VALUE);
}
switch(ucMPSource)
{
case SRC_MP_TV:// TV
#if 0
if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
{
//if(UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP && IsSourceHDMIPort(ucPPSource) && gm_HdmiCheckStatus())
if(bI2SSignalChecked)
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
}
else
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_I2SA_DOut); // SIF to SGTL_DP
SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
}
}
else //2#else
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
} //2#endif
#endif
// SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC0); // lsz 060610 SSSOutput_DAC0); // SIF to DAC0
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC1); // lsz 060612
if(g_Data.ucWinStatus) //PIP ,POP, MULTIWIN
{
if(g_Data.ucWinStatus >= _TV_WIN_PIP_SS_ || g_Data.ucWinStatus <= _TV_WIN_POP_FULL_) //PIP OR POP
{
switch(ucPPSource)
{
// case ALL_BOARDS_RF2:
case SRC_PIP_SVIDEO:
case SRC_PIP_AV1:
case SRC_PIP_AV2:
case SRC_PIP_HDTV1: // YPbPr 1
case SRC_PIP_HDTV2: // YPbPr 2
case SRC_PIP_RGB: // VGA & DVI1/2
// case ALL_BOARDS_COMP3: // DVB_T, Tenny at 2k60912 zenghw remove fot temp
if(ucPPSource == SRC_PIP_SVIDEO ||ucPPSource == SRC_PIP_AV1)
eAnalogInputPP = INPUT_PIP_AV1;
else if(ucPPSource == SRC_PIP_AV2)
eAnalogInputPP = INPUT_PIP_AV2;
else if(ucPPSource == SRC_PIP_HDTV1)
eAnalogInputPP = INPUT_PIP_YPBPR1;
else if(ucPPSource == SRC_PIP_HDTV2)
eAnalogInputPP = INPUT_PIP_YPBPR2;
else if(ucPPSource == SRC_PIP_RGB)
eAnalogInputPP = INPUT_PIP_VGA;
// else if(ucPPSource == ALL_BOARDS_COMP3) //zenghw remove fot temp
// eAnalogInputPP = Input_Analog8;
else //if(ucPPSource== ALL_BOARDS_RF2)
eAnalogInputPP = Input_Analog9;
SGTV58xx_AISxSelectInput(eAnalogInputPP, AIS_ADC); // Ain_PP to AIS_ADC
if(bSwitch)
{
if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
{
SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_I2SA_DOut); // SIF to SGTL_DP
SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
}
else //2 #else
{
SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
} //2#endif
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC0);
}
else
{
if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
{
//if(UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP && IsSourceHDMIPort(ucPPSource) && gm_HdmiCheckStatus())
if(bI2SSignalChecked)
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
}
else
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_I2SA_DOut); // SIF to SGTL_DP
SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
}
}
else //2#else
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
} //2#endif
SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAC0); // AIS_ADC to DAC0
}
break;
case SRC_PIP_HDMI1:
case SRC_PIP_HDMI2:
case SRC_PIP_HDMI3:
if(bSwitch)
{
SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP); // I2SA to SGTL_DP
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC0); // lsz 060615
SGTV58xx_SSSIOConfig(SSSInput_Null, SSSOutput_I2SA_DOut); // SIF to SGTL_DP
}
else
{
if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
{
SGTV58xx_SSSIOConfig(SSSInput_Null, SSSOutput_I2SA_DOut); // SIF to SGTL_DP
} //2#endif
SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAC0); // I2SA to DAC0
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP);
}
break;
}
#ifdef ZHW_DEBUG_SGTV_MSG
tvDebugPrint1("PIP is On,so Headphone output audio from input %d \n", ucPPSource);
#endif
}
else
{
if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
{
//if(UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP && IsSourceHDMIPort(ucPPSource) && gm_HdmiCheckStatus())
if(bI2SSignalChecked)
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
}
else
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_I2SA_DOut); // SIF to SGTL_DP
SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
}
}
else //2#else
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
} //2#endif
SGTV58xx_SSSIOConfig(SSSInput_Null, SSSOutput_DAC0); // Mute DAC0 output
#ifdef ZHW_DEBUG_SGTV_MSG
tvDebugPrint("Mute Headphone output when Multi-Window active\n");
#endif
}
}
else
{
if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
{
//if(UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP && IsSourceHDMIPort(ucPPSource) && gm_HdmiCheckStatus())
if(bI2SSignalChecked)
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
}
else
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_I2SA_DOut); // SIF to SGTL_DP
SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
}
}
else //2#else
{
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
} //2#endif
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC0);
#ifdef ZHW_DEBUG_SGTV_MSG
tvDebugPrint("PIP is Off,Headphone output audio same as Main\n");
#endif
}
SGTV58xx_ScartxOutputConfig(SCARTInput_DAC0, SCARTOutput_AOUT0); // DAC0 to Headphone
SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC1); // SIF to DAC1
SGTV58xx_ScartxOutputConfig(SCARTInput_DAC1, SCARTOutput_AOUT1); // DAC1 to AV Out
SGTV58xx_ScartxOutputConfig(SCARTInput_DAC1, SCARTOutput_AOUT2); // DAC1 to SC Out
break;
case SRC_MP_AV1: // Video 1
case SRC_MP_AV2: // Video 1
case SRC_MP_SVIDEO: // SVideo lsz 060524
// case ALL_BOARDS_CVBS2: // Video 2 zenghw remove for temp 20061108
case SRC_MP_HDTV1: // YPbPr 1
case SRC_MP_HDTV2: // YPbPr 2
case SRC_MP_RGB: // VGA
case SRC_MP_USB: // USB
// case SRC_MP_DTV: // VGA
// case ALL_BOARDS_COMP3: // DVB_T, Tenny at 2k60912 zenghw remove for temp 20061108
if((ucMPSource == SRC_MP_AV1)||(ucMPSource == SRC_MP_SVIDEO)) // lsz 060524
eAnalogInputMP = INPUT_MP_AV1;
else if(ucMPSource == SRC_MP_AV2) //zenghw remove for temp 20061108
eAnalogInputMP = INPUT_MP_AV2;
else if(ucMPSource == SRC_MP_HDTV1)
eAnalogInputMP = INPUT_MP_YPBPR1;
else if(ucMPSource == SRC_MP_HDTV2)
eAnalogInputMP = INPUT_MP_YPBPR2;
else if(ucMPSource == SRC_MP_RGB)
eAnalogInputMP = INPUT_MP_VGA;
else if(ucMPSource == SRC_MP_USB)//if(ucMPSource == ALL_BOARDS_COMP3)
eAnalogInputMP = INPUT_MP_USB;
else
eAnalogInputMP = INPUT_MP_DTV;
#ifdef ZHW_DEBUG_SGTV_MSG
tvDebugPrint1("eAnalogInputMP=%d \n",eAnalogInputMP);
#endif
#if 0
SGTV58xx_AISxSelectInput(eAnalogInputMP, AIS_ADC); // Ain_MP to AIS_ADC
if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
{
//gm_Printf("Used extern sync delay!");
//if(UserPrefPipMode != NO_PIP && UserPrefPipMode != MULTI_PIP && IsSourceHDMIPort(ucPPSource) && gm_HdmiCheckStatus())
if(bI2SSignalChecked)
{
SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP); // AIS_ADC to SGTL_DP
}
else
{
SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_I2SA_DOut); // SIF to SGTL_DP
SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAP_SGTLDP); // SIF to SGTL_DP
}
}
else //2 #else
{
//gm_Printf("Unused extern sync delay!");
SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP); // AIS_ADC to SGTL_DP
} //2#endif
#endif
// SGTV58xx_AISxSelectInput(eAnalogInputMP, AIS_ANA0); // Ain_MP to AIS_ANA0
// SGTV58xx_ScartxOutputConfig(SCARTInput_AISANA, SCARTOutput_AOUT0); // AIS_ANA0 to Headphone
#if 0
if(UserPrefPipMode != NO_PIP)
{
if(IsSinglePipMode(UserPrefPipMode) || IsSideBySidePipMode(UserPrefPipMode))
{
#else
if(g_Data.ucWinStatus) //PIP ,POP, MULTIWIN
{
if(g_Data.ucWinStatus >= _TV_WIN_PIP_SS_ || g_Data.ucWinStatus <= _TV_WIN_POP_FULL_) //PIP OR POP
{
#endif
switch(ucPPSource)
{
case SRC_PIP_TV: // TV
case SRC_PIP_SVIDEO: // Video1 & SVideo
case SRC_PIP_AV1: // Video 1
case SRC_PIP_AV2: // Video 1
// case ALL_BOARDS_CVBS3: // Video 2 zenghw remove for temp P001
case SRC_PIP_HDTV1: // YPbPr 1
case SRC_PIP
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -