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

📄 audio_api.c

📁 The driver of audio processor SGTV5830 音频处理芯片SGTV5830驱动
💻 C
📖 第 1 页 / 共 5 页
字号:


//		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 // #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
				PRINTF("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
				PRINTF("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
			PRINTF("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
		PRINTF1("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_HDTV2:			// YPbPr 2
				case SRC_PIP_RGB:			// VGA & DVI1/2
//				case ALL_BOARDS_COMP3:			// DVB_T, Tenny at 2k60912					
					 if(ucPPSource == SRC_PIP_SVIDEO ||ucPPSource == SRC_PIP_AV1)
						eAnalogInputPP = INPUT_PIP_AV1;
					else if(ucPPSource == SRC_PIP_AV2)  //zenghw remove for temp P001
						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)
//						eAnalogInputPP = Input_Analog8;
					else //if(ucPPSource== ALL_BOARDS_RF2)
						eAnalogInputPP = Input_Analog9;

					if(bSwitch)
					{
						SGTV58xx_AISxSelectInput(eAnalogInputPP, AIS_ADC);	// Ain_PP to AIS_ADC
						SGTV58xx_AISxSelectInput(eAnalogInputMP, AIS_ANA0);	// Ain_MP to AIS_ANA0
//						SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP);	// AIS_ADC to SGTL_DP
					}
					else
					{
						if(ucPPSource == SRC_PIP_TV)  //zenghw add
							 SGTV58xx_SSSIOConfig(SSSInput_Demod, SSSOutput_DAC0);
						else
						SGTV58xx_AISxSelectInput(eAnalogInputPP, AIS_ANA0);	// Ain_PP to AIS_ANA0
						SGTV58xx_AISxSelectInput(eAnalogInputMP, AIS_ADC);	// Ain_MP to AIS_ADC
//						SGTV58xx_ScartxOutputConfig(SCARTInput_AISANA, SCARTOutput_AOUT0);	// AIS_ANA0 to Headphone
					}
					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 // #else
					{
						//gm_Printf("Unused extern sync delay!");
						SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP);	// AIS_ADC to SGTL_DP
					} //2#endif
					if(ucPPSource == SRC_PIP_TV)   //zenghw add
						SGTV58xx_ScartxOutputConfig(SCARTInput_DAC0, SCARTOutput_AOUT0);	// DAC0 to Headphone
					else
						SGTV58xx_ScartxOutputConfig(SCARTInput_AISANA, SCARTOutput_AOUT0);	// AIS_ANA0 to Headphone
					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_Null, SSSOutput_I2SA_DOut);	// SIF to SGTL_DP
						SGTV58xx_AISxSelectInput(eAnalogInputMP, AIS_ANA0);	// Ain_MP to AIS_ANA0
						SGTV58xx_ScartxOutputConfig(SCARTInput_AISANA, SCARTOutput_AOUT0);	// AIS_ANA0 to Headphone
					}
					else
					{
						if(UserPrefFactory_ExternSyncDelay) //2#ifdef USE_EXTERN_DELAY
						{
							SGTV58xx_SSSIOConfig(SSSInput_Null, SSSOutput_I2SA_DOut);	// SIF to SGTL_DP
						} //2#endif

						SGTV58xx_AISxSelectInput(eAnalogInputMP, AIS_ADC);	// Ain_MP to AIS_ADC
						SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP);	// AIS_ADC to SGTL_DP
						SGTV58xx_SSSIOConfig(SSSInput_I2SAin_DIn, SSSOutput_DAC0);	// I2SA to DAC0
						SGTV58xx_ScartxOutputConfig(SCARTInput_DAC0, SCARTOutput_AOUT0);	// DAC0 to Headphone
					}
					break;
				}
#ifdef ZHW_DEBUG_SGTV_MSG
				PRINTF1("PIP is On,so Headphone output audio from input %d \n", ucPPSource);
#endif
			}
			else
			{
				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 // #else
				{
					//gm_Printf("Unused extern sync delay!");
					SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP);	// AIS_ADC to SGTL_DP
				} //2#endif
				SGTV58xx_SSSIOConfig(SSSInput_Null, SSSOutput_DAC0);	// Mute DAC0 output
				SGTV58xx_ScartxOutputConfig(SCARTInput_DAC0, SCARTOutput_AOUT0);	// DAC0 to Headphone
#ifdef ZHW_DEBUG_SGTV_MSG
				PRINTF("Mute Headphone output when Multi-Window active\n");
#endif
			}
		}
		else
		{
			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 // #else
			{
				//gm_Printf("Unused extern sync delay!");
				SGTV58xx_SSSIOConfig(SSSInput_ADC, SSSOutput_DAP_SGTLDP);	// AIS_ADC to SGTL_DP
			} //2#endif
			SGTV58xx_AISxSelectInput(eAnalogInputMP, AIS_ANA0);	// Ain_MP to AIS_ANA0
			SGTV58xx_ScartxOutputConfig(SCARTInput_AISANA, SCARTOutput_AOUT0);	// AIS_ANA0 to Headphone

			SGTV58xx_SSSIOConfig(SSSInput_Null, SSSOutput_DAC0);	// Mute DAC0 output   zenghw add 20070508 P023
			SGTV58xx_SSSIOConfig(SSSInput_Null, SSSOutput_DAC1);	// Mute DAC1 output

#ifdef ZHW_DEBUG_SGTV_MSG
			PRINTF("PIP is Off,Headphone output audio same as Main\n");
#endif
		}
/**		// Tenny at 2k61024: The config for main is same
#ifdef SGTV_SUPPORT_SRS
		if(UserPrefAudioEffect==AUDIO_SURROUND_OFF)
		{
		      // SGTV58xx_SSSIOConfig(SSSInput_DAP_SGTLDP_In, SSSOutput_DAP_SRSBBE);	// SGTL_DP to SRS
			SGTV58xx_SSSIOConfig(SSSInput_DAP_SGTLDP_In, SSSOutput_DAC_Main);	// SRS to BM
		}
		else
		{
			SGTV58xx_SSSIOConfig(SSSInput_DAP_SGTLDP_In, SSSOutput_DAP_SRSBBE);	// SGTL_DP to SRS
			SGTV58xx_SSSIOConfig(SSSInput_DAP_SRS_BBE_In, SSSOutput_DAC_Main);	// SRS to BM
		}
//		SGTV58xx_SSSIOConfig(SSSInput_DAP_BM_Main_In, SSSOutput_DAC_Main);	// BM to Speaker
#else
		SGTV58xx_SSSIOConfig(SSSInput_DAP_SGTLDP_In, SSSOutput_DAC_Main);	// SGTL_DP to Speaker
#endif
*/
		SGTV58xx_AISxSelectInput(eAnalogInputMP, AIS_ANA1);	// Ain_MP to AIS_ANA1
		if(ucMPSource == SRC_MP_AV1 ||ucMPSource == SRC_MP_AV2)// || ucMPSource == SRC_MP_SVIDEO)//zenghw add  P010
			SGTV58xx_ScartxOutputConfig(SCARTInput_AISANA, SCARTOutput_AOUT1);	// AIS_ANA1 to AV Out
		else
			SGTV58xx_ScartxOutputConfig(SCARTInput_MaxNum, SCARTOutput_AOUT1);	// AIS_ANA1 to AV Out
			

⌨️ 快捷键说明

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