📄 vid_ctrl.c
字号:
// Parameter :
// Return :
// *********************************************************************
#ifdef MT1379
void vVideoHueSaturation(char cLevel) large
{
if (cLevel > VID_SATURATION_MAX)
{
cLevel = VID_SATURATION_MAX;
}
else if (cLevel < VID_SATURATION_MIN)
{
cLevel = VID_SATURATION_MIN;
}
vSetSharedInfo(SI_V_SATURATION, cLevel);
vNotifySharedInfo(SI_V_SATURATION, 0, 0);
}
#else // for MT1369
void vVideoHueSaturation(BYTE bLevel) large
{
if (bLevel > VID_SATURATION_MAX)
{
bLevel = VID_SATURATION_MAX;
}
else if (bLevel < VID_SATURATION_MIN)
{
bLevel = VID_SATURATION_MIN;
}
vSetSharedInfo(SI_V_SATURATION, bLevel);
vNotifySharedInfo(SI_V_SATURATION, 0, 0);
}
#endif // for MT1369
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
void vVideoEdgeEnhance(BYTE bLevel) large
{
if (bLevel > VID_EDGE_ENHANCE_MAX)
{
bLevel = VID_EDGE_ENHANCE_MAX;
}
else if (bLevel < VID_EDGE_ENHANCE_MIN)
{
bLevel = VID_EDGE_ENHANCE_MIN;
}
vSetSharedInfo(SI_EDGE_EN, bLevel);
vNotifySharedInfo(SI_EDGE_EN, 0, 0);
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
void vVideoPedestal(BYTE bType,BOOL fgOnOff) large
{
/* TODO: check NTSC/PAL system */
BYTE bOriValue;
bOriValue = bSharedInfo(SI_BLK_LVL);
/* pedestal on will make black level lighter */
if(fgOnOff) //on
vSetSharedInfo(SI_BLK_LVL, bOriValue|bType);
else //off
vSetSharedInfo(SI_BLK_LVL, bOriValue&(~bType));
//r vSetSharedInfo(SI_BLK_LVL, fgOnOff);
vNotifySharedInfo(SI_BLK_LVL, 0, 0);
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
void vVideoSharpness(BYTE bLevel) large
{
if (bLevel > VID_SHARPNESS_MAX)
{
bLevel = VID_SHARPNESS_MAX;
}
else if (bLevel < VID_SHARPNESS_MIN)
{
bLevel = VID_SHARPNESS_MIN;
}
#ifdef SHARPNESS_USE_YLPF
switch(bLevel)
{
case SV_LOW:
bLevel = (5<<2)|SV_YLP_ENABLE; //bit7 -> sharpness use YLP, 6->10 worse sharpness
break;
case SV_MID:
bLevel = (3<<2)|SV_YLP_ENABLE; //5 normal sharpness
break;
case SV_HIGH:
default:
bLevel = (2<<2)|SV_YLP_ENABLE; //4->0 more sharpness
break;
}
#else
bLevel |= (5<<2); //sharpness use CLP and set YLP normal
#endif
vSetSharedInfo(SI_SHARPNESS, bLevel);
vNotifySharedInfo(SI_SHARPNESS, 0, 0);
}
#ifdef MTK_TVE
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
void vVideoPScanMode(BYTE bPScanEn, BYTE bTvMode) large
{
BYTE bMode = bEepromReadByte(ASPECT_POSITION);
#ifdef PSCAN_EN
if (bPScanEn)
{
if (bEepromReadByte(TV_COMP_POS)==SV_TVE_VGA)
vVfdSymbol(VFD_SYM_TV_VGA);
else
vVfdSymbol(VFD_SYM_TV_PSCAN);
}
else
vVfdSymbol(VFD_SYM_TV_INTERLACE);
#endif
#ifdef PSCAN_FORCE_TV_AUTO
if ((bPScanEn == SV_ON) && (bSharedInfo(SI_TV_SYSTEM) != SV_AUTO))
{
vSetSharedInfo(SI_TV_SYSTEM, SV_AUTO);
vNotifySharedInfo(SI_TV_SYSTEM, 0, 0);
vVfdSymbol(VFD_SYM_TV_MULTI);
}
#endif /* PSCAN_FORCE_TV_AUTO */
if (bTvMode != SV_TVE_SCART)
{
vSetSharedInfo(SI_G_SYNC, SV_ON);
vNotifySharedInfo(SI_G_SYNC, 0, 0);
}
#ifdef PSCAN_EN
if (bPScanEn == SV_ON)
{
if (bTvMode == SV_TVE_VGA)
{
vSetSharedInfo(SI_G_SYNC, SV_OFF);
vNotifySharedInfo(SI_G_SYNC, 0, 0);
}
if (bTvMode == SV_TVE_DIRECT)
{
bTvMode = SV_TVE_YCBCR;
}
if (bSharedInfo(SI_TVE_OUT_MODE) != bTvMode)
{
vSetSharedInfo(SI_TVE_OUT_MODE, bTvMode);
vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
}
if (bSharedInfo(SI_PSCAN_EN) != SV_ON)
{
vSetSharedInfo(SI_PSCAN_EN, SV_ON);
vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
}
}
else
#endif /* PSCAN_EN */
// P-Scan off
{
if (bTvMode != SV_TVE_SCART)
{
vTvScartAspect(0); // don't care
vTvRGBSel(1);
vTvScartTvSel(0); // don't care
}
if (bTvMode == SV_TVE_VGA)
{
fgEepromWriteByte(TV_COMP_POS, SV_TVE_YCBCR); //BillDen
bTvMode = SV_TVE_YCBCR;
}
else if (bTvMode == SV_TVE_SCART)
{
bTvMode = SV_TVE_RGB;
vSetSharedInfo(SI_G_SYNC, SV_OFF);
vNotifySharedInfo(SI_G_SYNC, 0, 0);
vTvScartTvSel(0);
vTvRGBSel(0);
if (bMode == SV_WIDE)
vTvScartAspect(1);
else
vTvScartAspect(0);
}
if (bSharedInfo(SI_TVE_OUT_MODE) != bTvMode)
{
vSetSharedInfo(SI_TVE_OUT_MODE, bTvMode);
vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
}
if (bSharedInfo(SI_PSCAN_EN) != SV_OFF)
{
vSetSharedInfo(SI_PSCAN_EN, SV_OFF);
vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
}
}
}
#endif /* MTK_TVE */
#ifdef SCART_SELECTION
extern BYTE xdata _bScart;
#endif
#ifdef PSCAN_EN
#ifdef SETUP_NO_PSCAN_CTRL
/***************************************************************************
Function : void vUserRecallPScan(BOOL fgInit)
Dsecription : called from Timer routine
Parameter : None
Return : None
***************************************************************************/
#if defined(SUPPORT_RUSSIAN)||defined(SUPPORT_WAIXIAO)//Vincent @11-22-03
extern BIT _fgSoftReset;
#endif
void vVideoUserRecallPScan(BOOL fgInit) large
{
BYTE bPScan, bTvMode;
#if defined(SUPPORT_RUSSIAN)||defined(SUPPORT_WAIXIAO) //Vincent @11-22-03 //俄罗斯IS/PS掉电不记忆
if(fgIsSoftReset())
{
bTvMode = bEepromReadByte(TV_COMP_POS);
bPScan = bEepromReadByte(TV_PSCAN_EN_POS);
}
else
{
fgEepromWriteByte(TV_PSCAN_EN_POS,SV_OFF);
bPScan = SV_OFF;
///fgEepromWriteByte(TV_COMP_POS, SV_TVE_DIRECT);
///bTvMode = SV_TVE_DIRECT;
}
#else
bTvMode = bEepromReadByte(TV_COMP_POS);
bPScan = bEepromReadByte(TV_PSCAN_EN_POS);
#endif
if (fgInit == FALSE) // not inited, do reset
{
if (bTvMode == SV_TVE_VGA)
{
fgEepromWriteByte(TV_COMP_POS, SV_TVE_YCBCR);
bTvMode = SV_TVE_YCBCR;
}
if (bPScan != SV_OFF)
{
fgEepromWriteByte(TV_PSCAN_EN_POS, SV_OFF);
bPScan = SV_OFF;
}
}
else //BillDen
{
if((bTvMode != SV_TVE_YCBCR) && (bPScan == SV_OFF))
{
fgEepromWriteByte(TV_COMP_POS, SV_TVE_YCBCR);
bTvMode = SV_TVE_YCBCR;
}
}
#ifdef SCART_SELECTION
if(_bScart == 1 && bPScan == EV_OFF)
{
vVideoPScanMode(1, SV_TVE_RGB);
vTvRGBSel(1);
}
#if defined(SCART_SELECTION)&&defined(MT1389_REV_E) //修正BUG:S端子在PS下掉电,再上电后无输出
else if(_bScart == 2 && bPScan == EV_OFF)
{
bSetCompOutBBK(TV_S_POS,SV_TVE_DIRECT);
vTvRGBSel(0);
}
#endif
else if (_bScart == 0 && bPScan == EV_OFF)
{
vVideoPScanMode(1, SV_TVE_YCBCR);
vTvRGBSel(0);
}
else
#endif
vVideoPScanMode(bPScan, bTvMode);
}
#endif /* SETUP_NO_PSCAN_CTRL */
#endif /* PSCAN_EN */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -