⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 saa7115.c

📁 SAA7115-driver-inclue :pal ntfs.
💻 C
📖 第 1 页 / 共 3 页
字号:
                    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 + -