📄 ypbpr.c
字号:
//----------------------------------------------------------------------------------------------------
// ID Code : YPbPr.c No.0001
// Update Note :
//
//----------------------------------------------------------------------------------------------------
#define __YPBPR__
#include "..\Header\Include.h"
#if(_YPBPR_SUPPORT == _ON)
//--------------------------------------------------
// Description : Search mode for YPbPr
// Input Value : None
// Output Value : YPbPr Mode number
//--------------------------------------------------
BYTE CYPbPrSearchMode(void)
{
BYTE cnt, modetemp = _MODE_NOSUPPORT;
if(((bit)CScalerGetBit(_SYNC_SELECT_47, _BIT6)))
return modetemp;
for(cnt=0;cnt<_MAX_YPBPR_MODE;cnt++)
{
if(CYPbPrCompareMode(cnt) == _TRUE)
{
modetemp = cnt;
break;
}
}
return modetemp;
}
//--------------------------------------------------
// Description : Compare mode in YPbPr mode table
// Input Value : Mode number
// Output Value : Return _TRUE if get an available mode
//--------------------------------------------------
bit CYPbPrCompareMode(BYTE ucModeCnt)
{
if(abs(stModeInfo.IVFreq - tYPBPR_MODE_TABLE[ucModeCnt].IVFreq) > tYPBPR_MODE_TABLE[ucModeCnt].IVFreqTolerance)
{
return _FALSE;
}
if(abs(stModeInfo.IHFreq - tYPBPR_MODE_TABLE[ucModeCnt].IHFreq) > tYPBPR_MODE_TABLE[ucModeCnt].IHFreqTolerance)
{
return _FALSE;
}
return _TRUE;
}
//--------------------------------------------------
// Description : Get mode information for YPbPr
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CYPbPrGetModeInfo(void)
{
stModeInfo.IHTotal = tYPBPR_MODE_TABLE[stModeInfo.ModeCurr].IHTotal;
stModeInfo.IHStartPos = tYPBPR_MODE_TABLE[stModeInfo.ModeCurr].IHStartPos;
stModeInfo.IHWidth = tYPBPR_MODE_TABLE[stModeInfo.ModeCurr].IHWidth;
stModeInfo.IVStartPos = tYPBPR_MODE_TABLE[stModeInfo.ModeCurr].IVStartPos;
stModeInfo.IVHeight = tYPBPR_MODE_TABLE[stModeInfo.ModeCurr].IVHeight;
stModeUserData.Clock = stModeInfo.IHTotal;
stModeUserData.Phase = 0;
stModeUserData.HPosition = stModeInfo.IHStartPos;
stModeUserData.VPosition = stModeInfo.IVStartPos;
// Test
stModeUserCenterData.CenterClock = stModeInfo.IHTotal;
stModeUserCenterData.CenterHPos = stModeInfo.IHStartPos;
stModeUserCenterData.CenterVPos = stModeInfo.IVStartPos;
}
//--------------------------------------------------
// Description : Start up settings for YPbPr
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CYPbPrStartUp(void)
{
CScalerCodeW(tYPBPR_TABLE_SET_SCALER);
}
//--------------------------------------------------
// Description : Setup YPbPr mode
// Input Value : None
// Output Value : None
//--------------------------------------------------
void CYPbPrSetupMode(void)
{
WORD ustemp;
BYTE temp;
BYTE option = 0;
// Get information from mode table, such as IHTotal, IHStartPos, IHWidth, IVStartPos, IVHeight.
CYPbPrGetModeInfo();
// Start up settings of VGA mode.
CModeStartUpVGA();
// Start up settings of YPbPR mode.
CYPbPrStartUp();
// Get scaling option, Capture window setup, Scaling setup, Display setup
CModeSetupDisplay();
CAdjustBrightness();
CAdjustContrast();
CAdjustBacklight();
CAdjustAdcGainOffset();
CAdjustAdcClock(stModeUserData.Clock);
CAdjustPhase(stModeUserData.Phase);
CAdjustHPosition();
CAdjustVPosition();
pData[0] = CFrameSyncDo();
if(pData[0] == 2)
{
CModeResetMode();
return;
}
switch(stModeInfo.ModeCurr)
{
case 0:
case 1:
case 5:
case 6:
CScalerSetBit(_SCALE_CTRL_19, ~_BIT7, _BIT7);
CScalerSetBit(_VGIP_ODD_CTRL_08, ~_BIT0, _BIT0);
CScalerSetByte(_IPV_ACT_STA_L_0E, CScalerGetBit(_IPV_ACT_STA_L_0E, 0xff) + 1);
CScalerRead(_IV_DV_DELAY_CLK_ODD_41, LENGTH(1), &temp, _NON_AUTOINC);
ustemp = (WORD)temp * 16 + 16;
ustemp += stModeInfo.IHTotal;
CScalerSetByte(_IV_DV_DELAY_CLK_ODD_41, (ustemp - 16) / 16);
ustemp -= stModeInfo.IHTotal / 2;
CScalerSetByte(_IV_DV_DELAY_CLK_EVEN_42, (ustemp - 16) / 16);
CScalerSetBit(_FS_DELAY_FINE_TUNING_43, ~(_BIT1), _BIT1);
break;
}
CModeSetupEtcs(_FUNCTION_ENABLE);
}
#endif // End of #if(_YPBPR_SUPPORT == _ON)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -