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

📄 videodetect.c

📁 T108 LCD屏的DEMO源代码!需要的就下吧
💻 C
字号:
#include "Common.h"
#include "Global.h"
#include "ICControl.h"	
#include "VideoSourceSwitch.h"
#include "System.h"
#include "TWICreg.h"
#include "VideoDetect.h"
#include "SRC_ctrl.h"
/*   D E T E C T   S I G N A L   S T D   */
/*-------------------------------------------------------------------------
    if h/v locked 
       setOPTiming
        if color detected and chroma locked 
           SetSignalStd
-------------------------------------------------------------------------*/
void DetectSignalStd(void)
{
	uCHAR temp;	

	temp=SignalDefine;	 //sm061011		

	m_cBuff[0]=m_cStandard;
	m_cBuff[1]=IC_ReadByte(TWIC_P2, 0x3A);   //read video status registers
	if(IC_ReadByte(TWIC_P2, 0x3A)&0x06)		// Judge vlock and hlock
	{
		//if(IC_ReadByte(SlaveAddr, 0x7B+RegAddrShift)>0x10){//  For no chroma case
		//twdDelay(100);
		//~~~~~~~ set OPTiming ~~~~~~~~~~~~~~~~~~~//
		if(IC_ReadByte(TWIC_P0,0x59) <= 0xd6)     //read hsync period MSB Register 20060809
			m_cBuff[0]=S_NTSC;
		else
			m_cBuff[0]=S_PAL;
		if((m_cStandard!=m_cBuff[0])){	// signal std was changed,and output timing must be set again
			m_cStandard=m_cBuff[0];
			SetOPTiming();
    	}
		//~~~~~~~ End of set OPTiming ~~~~~~~~~~~~~~~~~~~//

		//~~~~~~~ set Chroma ~~~~~~~~~~~~~~~~~~~//
		m_cBuff[4]=m_cChroma;
        twdDelay(100);
			// Set Chroma lock configration
	//		if(IC_ReadByte(TWIC_P0,0x59) <= 0xd6)
	//			IC_WritByte(SlaveAddr, 0x83+RegAddrShift, 0x39);//6f);  // NTSC	  // change by Sherman 06'02'07
	//		else
		IC_WritByte(TWIC_P2, 0x83, 0x39);  // PAL  write to Vsync Time Constant Register 20060809
		twdDelay(500);

		if(IC_ReadByte(TWIC_P0,0x59) <= 0xd6)
		{ // NTSC-M,NTSC-4,PAL-M
			m_wBuff[2]=0;
			m_cBuff[1]=m_cChroma;	// Preserve previous status for signal std
			twdDelay(300);	  		// add by Sherman 06'01'16
			while (1){	// NTSC-M=1,NTSC-4=4,PAL-M=5
				if (m_cChroma == S_NTSC_4)
				{
					if ((IC_ReadByte(TWIC_P2, 0x3a)&0x08)&&(IC_ReadByte(TWIC_P2, 0x7a)<0x80))
						break;     //T103 has no register 0x7a at Page 2?
				}
				if ((m_cChroma == S_NTSC)||(m_cChroma == S_PAL_M)){
					if ((IC_ReadByte(TWIC_P2, 0x3a)&0x08))
						break;   //reg0x3a at page 2 locked chroma pll burst
				}

				do{
					m_cChroma++;
					if(m_cChroma>=S_PAL_M)
			 		   	m_cChroma=S_NTSC;
				}while(((1<<m_cChroma)&temp)==0x00);


				SetSignalStd();					// Set Signal flag and DTO
				twdDelay(100);

				if ((++m_wBuff[2]) >4) break; 	// Avoid while setting, input switch to NTSC
			}
		}
		else
		{  // PAL-BD,PAL-CN,SECAM

#if (defined YPbPr)
			if(EepPublic.cSource == isrYPbPr)
				m_cBuff[4]=S_PAL;
			else 
			{
#endif
				m_wBuff[2]=0;
				m_cBuff[1]=m_cChroma;	// Preserve previous status for signal std
				twdDelay(300);	  		// add by Sherman 06'01'16
				while (1)	// PAL-BD=2,PAL-CN=6,SECAM=3
				{	
					if ((m_cChroma == S_PAL)||(m_cChroma == S_PAL_CN)){
						if ((IC_ReadByte(TWIC_P2, 0x3a)&0x08) && (IC_ReadByte(TWIC_P2, 0x3c)&0x01==1))//&& (IC_ReadByte(SlaveAddr, 0x7d+RegAddrShift)>0xf0))
								break;       //chroma PLL locked to color burst and PAL color Mode detected
					}
					if (m_cChroma == S_SECAM){
						if ((IC_ReadByte(TWIC_P2, 0x3a)&0x08) && (IC_ReadByte(TWIC_P2, 0x7d)>0xf0))
							break;        //T103 seems have no reg 0x7d at page 2?
					}

					do{
						m_cChroma++;
						if(m_cChroma>=S_END)
			 			   	m_cChroma=S_PAL;
					}while(((1<<m_cChroma)&temp)==0x00);

					SetSignalStd();					// Set Signal flag and DTO
					twdDelay(100);
					if ((++m_wBuff[2]) >4) break; 	// Avoid while setting, input switch to NTSC
				}
#if (defined YPbPr)
			}
#endif
		}
		if (m_cBuff[1] != m_cChroma){
			if ((IC_ReadByte(TWIC_P2, 0x3a)&0x08))
				m_cBuff[4] = m_cChroma;
			m_cChroma=m_cBuff[1] ;
		}
		if((m_cChroma!=m_cBuff[4])){
			m_cChroma=m_cBuff[4];
    	}
	}// 癹伴い

⌨️ 快捷键说明

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