📄 vid_ctrl.c
字号:
vSetSharedInfo(SI_PANEL_SHARPNESS_H, bLevel);
vSetSharedInfo(SI_PANEL_SHARPNESS_V, bLevel);
vNotifySharedInfo(SI_PANEL_SHARPNESS_H, 0, 0);
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
char cVideoPQGammaBright(char cLevel) large
{
if (cLevel > VID_BRIGHTNESS_MAX)
{
cLevel = VID_BRIGHTNESS_MAX;
}
else if (cLevel < VID_BRIGHTNESS_MIN)
{
cLevel = VID_BRIGHTNESS_MIN;
}
vSetSharedInfo(SI_PANEL_BRIGHTNESS, cLevel);
vNotifySharedInfo(SI_PANEL_BRIGHTNESS, 0, 0);
return cLevel;
}
// *********************************************************************
// Function :
// Description :
// Parameter :
// Return :
// *********************************************************************
void vVideoPQGammaLevel(BYTE bLevel) large
{
if (bLevel > VID_GAMMA_LEVEL_MAX)
{
bLevel = VID_GAMMA_LEVEL_MAX;
}
else if (bLevel < VID_GAMMA_LEVEL_MIN)
{
bLevel = VID_GAMMA_LEVEL_MIN;
}
vSetSharedInfo(SI_PANEL_GAMMA, bLevel);
vNotifySharedInfo(SI_PANEL_GAMMA, 0, 0);
}
#endif
// *********************************************************************
// 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
{
#ifdef SUPPORT_HDMI
BYTE bData;
#endif //#ifdef SUPPORT_HDMI
if (bLevel > VID_SHARPNESS_MAX)
{
bLevel = VID_SHARPNESS_MAX;
}
else if (bLevel < VID_SHARPNESS_MIN)
{
bLevel = VID_SHARPNESS_MIN;
}
#ifdef SUPPORT_HDMI
switch(bLevel)
{
case 3://highest
bData = 3;
break;
case SV_HIGH:
bData = 2;
break;
case SV_MID:
bData = 1;
break;
case SV_LOW:
bData = 0;
default:
break;
}
vSetSharedInfo(SI_HDMI_SHARPNESS_SETTING, bData);
if(bSharedInfo(SI_HDCP_SERVICE_ROUTINE) == 1)
{
vSendPeriCmd(HDMI_CMD_SCLCOEF, bData, 0);
}
#endif
#ifdef SHARPNESS_USE_YLPF
switch(bLevel)
{
case SV_LOW:
bLevel = (8<<2)|SV_YLP_ENABLE; //bit7 -> sharpness use YLP, 6->10 worse sharpness
break;
case SV_MID:
bLevel = (5<<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)
{
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 PSCAN_EN
#ifdef SETUP_NO_PSCAN_CTRL
/***************************************************************************
Function : void vUserRecallPScan(BOOL fgInit)
Dsecription : called from Timer routine
Parameter : None
Return : None
***************************************************************************/
void vVideoUserRecallPScan(BOOL fgInit) large
{
BYTE bPScan, bTvMode;
bTvMode = bEepromReadByte(TV_COMP_POS);
bPScan = bEepromReadByte(TV_PSCAN_EN_POS);
if (fgInit == FALSE) // not inited, do reset
{
if (bTvMode == SV_TVE_VGA)
{
fgEepromWriteByte(TV_COMP_POS, SV_TVE_YUV);
bTvMode = SV_TVE_YUV;
}
if (bPScan != SV_OFF)
{
fgEepromWriteByte(TV_PSCAN_EN_POS, SV_OFF);
bPScan = SV_OFF;
}
}
vVideoPScanMode(bPScan, bTvMode);
}
#endif /* SETUP_NO_PSCAN_CTRL */
#endif /* PSCAN_EN */
#ifdef SUPPORT_HDMI
void vSetHDMIEnable(BYTE bValue) large
{
BYTE bResolution;
BYTE bData;
if(bValue == SV_ON)
{
bResolution = bEepromReadByte(HDMI_RES_POS);
vSetHDMIRes(bResolution);
}
else
{
vSetSharedInfo(SI_USER_VIDEO_SETTING, VFMT_OFF);
vSendPeriCmd(HDMI_CMD_RESOLUTION, VFMT_OFF, 0);
bSetCompOut(0, 0);
}
}
void vSetHDMIRes(bValue) large
{
if(bEepromReadByte(HDMI_POS) == SV_OFF)
{
return;
}
if(bSharedInfo(SI_RESOLUTION_CHANGE_INDEX) == 1) //HDMI is still in resolution change.
{
return;
}
vSetSharedInfo(SI_RESOLUTION_CHANGE_INDEX, 1);
if(fgTVisHDMI())
{
vAdspMute(1,0);
_rHDMIAudioCtrl.bAudioChange = 1;
}
#if defined(MT1389_REV_HD) && defined(PSCAN_EN)
vSetSharedInfo(SI_TV_CHG_MODE, bSharedInfo(SI_HD_MODE));
#endif
if((bValue == SV_480I) || (bValue == SV_480P27) ||
(bValue == SV_480P54)|| (bValue == SV_720P60) ||
(bValue == SV_1080I60))
{
if(bSharedInfo(SI_TV_SYSTEM) != SV_NTSC)
{
vSetSharedInfo(SI_TV_SYSTEM, SV_NTSC);
vNotifySharedInfo(SI_TV_SYSTEM, 0, 0);
#ifdef PSCAN_EN /* if P-Scan is enabled, TV system must sync with menu */
fgEepromWriteByte(TV_SYSTEM_POSITION, SV_NTSC);
#endif
}
}
else
{
if(bSharedInfo(SI_TV_SYSTEM) != SV_PAL)
{
vSetSharedInfo(SI_TV_SYSTEM, SV_PAL);
vNotifySharedInfo(SI_TV_SYSTEM, 0, 0);
#ifdef PSCAN_EN /* if P-Scan is enabled, TV system must sync with menu */
fgEepromWriteByte(TV_SYSTEM_POSITION, SV_PAL);
#endif
}
}
if((bValue == SV_480I) || (bValue == SV_576I))
{
if (bSharedInfo(SI_PSCAN_EN) != SV_OFF)
{
vSetSharedInfo(SI_PSCAN_EN, SV_OFF);
vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
}
#ifdef MT1389_REV_HD
fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_OFF);
vSetSharedInfo(SI_HD_MODE,SV_HD_MODE_OFF);
vNotifySharedInfo(SI_HD_MODE,0,0);
#endif
vSetSharedInfo(SI_TVE_OUT_MODE, SV_TVE_YCBCR);
vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
}
else
{
if((bValue == SV_480P54) || (bValue == SV_576P54) ||
(bValue == SV_480P27) || (bValue == SV_576P27))
{
vSetSharedInfo(SI_TVE_OUT_MODE, SV_TVE_YCBCR);
vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
}
else
{
if(bSharedInfo(SI_HDMI_VIDEO_DOWNSAMPLE) == 0)
{
vSetSharedInfo(SI_TVE_OUT_MODE, SV_TVE_DIRECT);
vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
}
}
#ifdef MT1389_REV_HD
if(bSharedInfo(SI_HDMI_UPSCALE) == SV_OFF)
{
if((bValue == SV_1080I50) || (bValue == SV_1080I60))
{
if (bSharedInfo(SI_PSCAN_EN) == SV_ON)
{
vSetSharedInfo(SI_PSCAN_EN, SV_OFF);
vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
}
fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_1080I);
if(bSharedInfo(SI_HD_MODE) != SV_HD_MODE_1080I)
{
vSetSharedInfo(SI_HD_MODE,SV_HD_MODE_1080I);
//vNotifySharedInfo(SI_HD_MODE,0,0);
}
}
else if((bValue == SV_720P50) ||(bValue == SV_720P60))
{
if (bSharedInfo(SI_PSCAN_EN) != SV_ON)
{
vSetSharedInfo(SI_PSCAN_EN, SV_ON);
vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
}
fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_720P);
if(bSharedInfo(SI_HD_MODE) != SV_HD_MODE_720P)
{
vSetSharedInfo(SI_HD_MODE,SV_HD_MODE_720P);
//vNotifySharedInfo(SI_HD_MODE,0,0);
}
}
else
{
if (bSharedInfo(SI_PSCAN_EN) != SV_ON)
{
vSetSharedInfo(SI_PSCAN_EN, SV_ON);
vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
}
fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_OFF);
if(bSharedInfo(SI_HD_MODE) != SV_HD_MODE_OFF)
{
vSetSharedInfo(SI_HD_MODE,SV_HD_MODE_OFF);
//vNotifySharedInfo(SI_HD_MODE,0,0);
}
}
}
else
{
if(bSharedInfo(SI_PSCAN_EN) != SV_ON)
{
vSetSharedInfo(SI_PSCAN_EN, SV_ON);
vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
}
fgEepromWriteByte(TV_HD_MODE_POS, SV_HD_MODE_OFF);
vSetSharedInfo(SI_HD_MODE,SV_HD_MODE_OFF);
//vNotifySharedInfo(SI_HD_MODE,0,0);
}
#else
if(bSharedInfo(SI_PSCAN_EN) != SV_ON)
{
vSetSharedInfo(SI_PSCAN_EN, SV_ON);
vNotifySharedInfo(SI_PSCAN_EN, 0, 0);
}
#endif //#ifdef MT1389_REV_HD
}
#ifdef MT1389_REV_E
if (bSharedInfo(SI_USER_VIDEO_SETTING) != bValue);
{
vSetSharedInfo(SI_USER_VIDEO_SETTING, bValue);
vNotifySharedInfo(SI_TVE_OUT_MODE, 0, 0);
}
#else
vSetSharedInfo(SI_USER_VIDEO_SETTING, bValue);
#endif
vSendPeriCmd(HDMI_CMD_RESOLUTION, bValue, 0);
vNotifySharedInfo(SI_HD_MODE,0,0); //don't send too much TV system change command to RISC.
}
void vSetHDMIVideo(bValue) large
{
if(bValue == SV_RGB444)
{
vSetSharedInfo(SI_HDMI_OUTPUT_MODE, 0x00); //for AVI info frame
}
else
{
vSetSharedInfo(SI_HDMI_OUTPUT_MODE, 0x40); //for AVI info frame
}
vSendPeriCmd(HDMI_CMD_VIDEO_FORMAT, 0, 0);
}
void vSetHDMIAudio(bValue) large
{
if(fgTVisHDMI())
{
//vAdspMute(1,0);
_rHDMIAudioCtrl.bAudioChange = 1;
_rHDMIAudioCtrl.bAudioCount = 40;
_rHDMIAudioCtrl.bAudioMuteOK = 0;
}
vSetSharedInfo(SI_HDMI_AUDIO_SOURCE, bValue);
}
void vSetHDMISRC(bValue) large
{
if(fgTVisHDMI())
{
//vAdspMute(1,0);
_rHDMIAudioCtrl.bAudioChange = 1;
_rHDMIAudioCtrl.bAudioCount = 40;
_rHDMIAudioCtrl.bAudioMuteOK = 0;
}
vSetSharedInfo(SI_HDMI_SRC_CONTROL, bValue);
}
void vSetHDMIDVI(bValue) large
{
vSetSharedInfo(SI_EDID_VSDB_EXIST, bValue);
}
#endif //#ifdef SUPPORT_HDMI
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -