📄 videodetect.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 + -