📄 saa7115.c
字号:
break;
}
}
B_Status = dev_saa7115Read(0x02);
#if 0//test xuli
tdGotoXY(6, 4);
tdSetColor(_VBIATTR_YELLOW_);
tdPrintf("%02x", gmv_VideoDecoder[VIDEO_DECODER_1].Mode);
#endif
return 0x00;//(gmv_VideoDecoder[VIDEO_DECODER_1].Mode);
}
//******************************************************************************
//
// FUNCTION : void dev_saa7115SetVideoInput(BYTE VidDecId,BYTE B_InType)
// USAGE : This function sets SAA7115 input video type
// INPUT : video decoder id, input video type - COMPOSITE/SVIDEO
// OUTPUT : None
// GLOBALS : None
// USED_REGS :
//******************************************************************************
//blh_del_2004_7_21 tinyp BOOL g_7115_test;
void dev_saa7115SetVideoInput(BYTE B_InType)
{
BYTE B_FiltCtrl;
//blh_del_2004_7_21 if(g_7115_test)//wrong_blh
//blh_del_2004_7_21 return;
gmv_VideoDecoder[VIDEO_DECODER_1].InputType = B_InType;
//wrong_blh B_FiltCtrl = dev_saa7115Read(SAA_LUM_CNTL_REG);
switch (B_InType)
{
case VDD_INTYP_COMPOSITE:
dev_saa7115Write(SAA7115_AIN1_ADDR,0xc4);//mode
dev_saa7115Write(0x0e,0x83);//ccomb(bit 0)must be 1
dev_saa7115Write(0x09, 0x40);//byps(bit 7) must be 0;ycomb(bit 6) must be 1
B_FiltCtrl &= 0x7F; //chrominance trap/comb filter active enabled
break;
case VDD_INTYP_SVIDEO: // not used
// case VDD_INTYP_COMPONENT: //not used
dev_saa7115Write(SAA7115_AIN1_ADDR,0xc6);//mode
dev_saa7115Write(0x0e,0x82);//ccomb(bit 0)must be 0
dev_saa7115Write(0x09, 0x81);////byps(bit 7) must be 1;ycomb(bit 6) must be 0
break;
case VDD_INTYP_TUNER:
//case VDD_INTYP_TUNER2:
dev_saa7115Write(SAA7115_AIN1_ADDR,0xc4);//mode
dev_saa7115Write(0x0e,0x83);//ccomb(bit 0)must be 1
break;
default:
dev_saa7115Write(SAA7115_AIN1_ADDR,0xc3);
return;
}
return;
}
BYTE dev_saa7115GetVideoInput()
{
return gmv_VideoDecoder[VIDEO_DECODER_1].InputType;
}
/*void dev_saa7115SetVideoOutputFormat(BYTE OutputFormat)
{
gmv_VideoDecoder[VIDEO_DECODER_1].OutputFormat = OutputFormat;
}
BYTE dev_saa711GetVideoOutputFormat()
{
return gmv_VideoDecoder[VIDEO_DECODER_1].OutputFormat;
}*/
//******************************************************************************
//
// FUNCTION : void dev_saa7115SetVideoBrightness(BYTE VidDecId,BYTE B_BrightVal)
// USAGE : This function sets the brightness value for SAA7115
// INPUT : video decoder id, brightness value
// OUTPUT : None
// GLOBALS : None
// USED_REGS :
//******************************************************************************
void dev_saa7115SetVideoBrightness(BYTE B_BrightVal)
{
gmv_VideoDecoder[VIDEO_DECODER_1].Brightness = B_BrightVal;
dev_saa7115Write(SAA7115_BRT_ADDR, B_BrightVal);
}
BYTE dev_saa7115GetVideoBrightness(void)
{
return gmv_VideoDecoder[VIDEO_DECODER_1].Brightness;
}
//******************************************************************************
//
// FUNCTION : void dev_saa7115SetVideoContrast(BYTE VidDecId,BYTE B_ContrastVal)
// USAGE : This function sets the contrast value for SAA7115
// INPUT : video decoder id, contrast value
// OUTPUT : None
// GLOBALS : None
// USED_REGS :
//******************************************************************************
void dev_saa7115SetVideoContrast(BYTE B_ContrastVal)
{
gmv_VideoDecoder[VIDEO_DECODER_1].Contrast = B_ContrastVal;
dev_saa7115Write(SAA7115_CON_ADDR,B_ContrastVal);
}
BYTE dev_saa7115GetVideoContrast(void)
{
return gmv_VideoDecoder[VIDEO_DECODER_1].Contrast;
}
//******************************************************************************
//
// FUNCTION : void dev_saa7115SetVideoHue(BYTE VidDecId,BYTE B_HueVal)
// USAGE : This function sets the hue value for SAA7115
// INPUT : video decoder id, hue value
// OUTPUT : None
// GLOBALS : None
// USED_REGS :
//******************************************************************************
void dev_saa7115SetVideoHue(BYTE B_HueVal)
{
gmv_VideoDecoder[VIDEO_DECODER_1].Hue = B_HueVal;
dev_saa7115Write(SAA7115_HUE_ADDR,B_HueVal);
}
BYTE dev_saa7115GetVideoHue(void)
{
return gmv_VideoDecoder[VIDEO_DECODER_1].Hue;
}
//******************************************************************************
//
// FUNCTION : void dev_saa7115SetVideoSaturation(BYTE VidDecId,BYTE B_SaturationVal)
// USAGE : This function sets the saturation value for SAA7115
// INPUT : video decoder id, saturation value
// OUTPUT : None
// GLOBALS : None
// USED_REGS :
//******************************************************************************
void dev_saa7115SetVideoSaturation(BYTE B_SaturationVal)
{
gmv_VideoDecoder[VIDEO_DECODER_1].Saturation = B_SaturationVal;
dev_saa7115Write(SAA7115_SAT_ADDR, B_SaturationVal);
}
BYTE dev_saa7115GetVideoSaturation(void)
{
return gmv_VideoDecoder[VIDEO_DECODER_1].Saturation;
}
//******************************************************************************
//
// FUNCTION : BYTE dev_saa7115GetVideoStatus(BYTE VidDecId)
// USAGE : This function returns the status of the incoming video
// INPUT : video decoder id
// OUTPUT : 0 - Locked
// 1 - Not Locked
// GLOBALS : None
// USED_REGS :
//******************************************************************************
BYTE dev_saa7115GetVideoStatus(void)
{
BYTE B_Status;
B_Status = dev_saa7115Read(SAA7115_DEC_STAT_ADDR);
if((B_Status & 0x40) == 0x40)
{
gmv_VideoDecoder[VIDEO_DECODER_1].LockStatus = D_NOTLOCKED;
}
else
{
gmv_VideoDecoder[VIDEO_DECODER_1].LockStatus = D_LOCKED;
}
return (gmv_VideoDecoder[VIDEO_DECODER_1].LockStatus);
}
//******************************************************************************
//
// FUNCTION : void dev_saa7115PowerUp(BYTE VidDecId)
// USAGE : This function powers up the SAA7115 modules.
// INPUT : video decoder id
// OUTPUT : None
// GLOBALS : None
// USED_REGS : Power Save Control
//
//******************************************************************************
void dev_saa7115PowerUp(void)
{
// dev_saa7115Write(0X88,0XF0);
}
//******************************************************************************
//
// FUNCTION : void dev_saa7115PowerDown(void)
// USAGE : This function powers down the SAA7115 modules.
// INPUT : video decoder id
// OUTPUT : None
// GLOBALS : None
// USED_REGS : Power Save Control
//
//******************************************************************************
void dev_saa7115PowerDown(void)
{
// dev_saa7115Write(0X88,0X0B);
}
//tom han 2004.2.16 never used function.
#if 0
//******************************************************************************
//
// FUNCTION : BYTE dev_saa7115GetVideoInterlaceInfo(BYTE VidDecId)
// USAGE : This function returns the current input video interlace status
// INPUT : video decoder id
// OUTPUT : 0 - Non Interlaced
// 1 - Interlaced
// GLOBALS : None
// USED_REGS :
//******************************************************************************
BYTE dev_saa7115GetVideoInterlaceInfo(void)
{
BYTE B_Status;
B_Status = dev_saa7115Read(SAA7115_DEC_STAT_ADDR2);
if(B_Status & 0x80)
{
gmv_VideoDecoder[VIDEO_DECODER_1].Interlace = D_INTERLACED;
}
else
{
gmv_VideoDecoder[VIDEO_DECODER_1].Interlace = D_NONINTERLACED;
}
return gmv_VideoDecoder[VIDEO_DECODER_1].Interlace;
}
#endif
tinyp BYTE g_ucPIPVchipData67,g_ucPIPVchipData68,g_ucPIPVchipData69,g_ucPIPVchipData6A;
//tinyp BYTE g_TEST_COUNTER,g_udData1,g_ucdata2;
tinyp BYTE g_ucPIPMovieRating,g_ucPIPTVRating;
void GetPIPVChipData(void);
#if 0 //7115 xds
void GetPIPVChipData(void)
{
BYTE bContinue = 1;
BYTE ucOldMovingRate =0,ucOldTVRating = 0;
BYTE ucCount=0;
while (bContinue)
{
if((dev_saa7115Read(0x66) & 0xc0) == 0x00)
{
g_ucPIPVchipData67 = dev_saa7115Read(0x67);
g_ucPIPVchipData68 = dev_saa7115Read(0x68);
}
if (((g_ucPIPVchipData67&0x7F) == _XDS_CLASS_CURRENT_START_ ||
(g_ucPIPVchipData67&0x7F) == _XDS_CLASS_CURRENT_CONTINUE_) &&
((g_ucPIPVchipData68&0x7F) == _XDS_PROGRAM_RATING_))
{
g_PIPVChipStruct.ucMovieRating = g_ucPIPVchipData67;
g_PIPVChipStruct.ucTVRating = g_ucPIPVchipData68;
while((g_PIPVChipStruct.ucMovieRating == g_ucPIPVchipData67) &&
(g_PIPVChipStruct.ucTVRating == g_ucPIPVchipData68))
{
if((dev_saa7115Read(0x66) & 0xc0) == 0x00)
{
g_PIPVChipStruct.ucMovieRating = dev_saa7115Read(0x67);
g_PIPVChipStruct.ucTVRating = dev_saa7115Read(0x68);
//SleepDelay(100);
}
}
g_PIPVChipStruct.ucMovieRating &= 0x7F;
g_PIPVChipStruct.ucTVRating &= 0x7F;
#if 0
if(ucCount == 0)
{
ucOldMovingRate = g_PIPVChipStruct.ucMovieRating;
ucOldTVRating = g_PIPVChipStruct.ucTVRating;
ucCount = 1;
}
else
{
if((ucOldMovingRate != g_PIPVChipStruct.ucMovieRating) &&
(ucOldTVRating != g_PIPVChipStruct.ucTVRating))
{
g_PIPVChipStruct.ucMovieRating = 0;
g_PIPVChipStruct.ucTVRating = 0;
}
bContinue = 0;
}
#endif
bContinue = 0;
}
}
}
#endif
//********************************** END *************************************
//#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -