亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? tvp5150a.cpp

?? 視頻芯片TVP5150驅動的
?? CPP
字號:
//------------------------------------------------------------------------------
//
//	Copyright (C) 2006 MagicEyes co., Ltd All Rights Reserved
//	MagicEyes Proprietary & Confidential
//
//	Module     : TVP5150A(Video decoder) source file
//	File       : TVP5150A.h
//	Description:
//	Author     : rohan
//	History    : 
//		2006.08.0x first implementation
//------------------------------------------------------------------------------

#include "config.h"
#include "vidsrcif.h"
#include "mutexi2c.h"
#include "TVP5150A.h"


#if __cplusplus
extern "C" 
#if (BSP_IN_VIDEO_DECODER_TVP5150A == 1)

void  *GetVideoSourceHnd(void)
{
	DEBUGMSG(ZONE_VIDDEC,(TEXT(" TVP5150A: Create TVP5150A video source instance. \r\n")));
	CVIDSource *pVIDEO = new TVP5150A();
	if(pVIDEO == NULL)	
		return NULL;		
	return pVIDEO;
}
#endif	// BSP_IN_VIDEO_DECODER_TVP5150A
#endif	// __cplusplus

// Constructor
TVP5150A::TVP5150A(void)
{
	DEBUGMSG(ZONE_VIDDEC,(TEXT(" TVP5150A::TVP5150A \r\n")));
	m_pi2c = new MutexI2C(TVP5150A_I2C_ADDR, 1000, MutexI2C::MES_I2C0);	
	m_pi2c->Init(MES_I2C03::TXCLKSRC_PCLK256, 0, 10);
}  

// Destructor
TVP5150A::~TVP5150A(void)
{  
	DEBUGMSG(ZONE_VIDDEC,(TEXT(" TVP5150A::~TVP5150A \r\n")));
	DeInitDevice();
	if(m_pi2c) delete m_pi2c;	}  
BOOL 
TVP5150A::Identify(void)
{
	// Check Device ID
	U8  id[2]={0,}; 
	m_pi2c->Read(0x80, &id[0], 1);
	m_pi2c->Read(0x81, &id[1], 1);

	if(((id[1]<<8) | id[0]) != TVP5150A_IDENTYFY)
	{	
		ERRORMSG(ZONE_ERROR,(TEXT(" Fail: TVP5150A access failed. \r\n")));
		return FALSE;
	}
	DEBUGMSG(1,(TEXT(" TVP5150A Identify code: (0x%X)\r\n"), ((id[1]<<8) | id[0])));
	return TRUE;
}

BOOL
TVP5150A::InitDevice(void)
{ 
	U8 tmp;	
	// Operation Mode Control Register : Disable Power-down
	tmp = 0x00;	m_pi2c->Write(0x02, &tmp, 1);	
	for( volatile U32 i=0 ; i<0xFFFFFF ; i++ );	// some delay

	tmp = 0x01; m_pi2c->Write(0x05, &tmp, 1);		// software reset, all default set
	tmp = 0x02; m_pi2c->Write(0x0F, &tmp, 1);		// Select FID, GPCL
	tmp = 0x00; m_pi2c->Write(0x00, &tmp, 1);		// Composite = AIP1A

	// Analog channle control register : Automatic offset control = disabled, Automatic gain control = AGC enabled.
//	tmp = 0x11; m_pi2c->Write(0x01, &tmp, 1);
//	tmp = 0x04; m_pi2c->Write(0xC2, &tmp, 1);		// YCbCr Enable
	
	// Misc Control Register : GPCL Output Enable & Low, YCbCr & Clock Enable
	tmp = 0x29; m_pi2c->Write(0x03, &tmp, 1);
//	tmp = 0x2D; m_pi2c->Write(0x03, &tmp, 1);		// HSYNC, VSYNC, AVID, FID are active
	
	return CTRUE;	
}

BOOL 
TVP5150A::DeInitDevice(void)
{
	// Misc Control Register
//	m_pi2c->Read (0x03, &temp, 1);		
//	temp &= ~0x29;	// YCbCr & Clock Disable & GPCL Output Disable.
//	m_pi2c->Write(0x03, &temp, 1);	
	
	return TRUE;
}

BOOL	
TVP5150A::GetStatus(U32 Addr, U32 *pStatus)
{ 
	m_pi2c->Read((U8)Addr, (U8 *)pStatus, 1);

	*pStatus &= 0xff;
	
	return S_OK; 
}

HRESULT
TVP5150A::GetVideoSyncInfo(int SyncNum, LPVIP_SYNCINFO pSync)
{	
	U32 status;	
	m_nSyncInfoNum = SyncNum;
	
	GetStatus(&status);
	
	if(0 == (status & DECODERSTATUS_MASK_READYFORCAPURE))
		DEBUGMSG(ZONE_VIDDEC,(TEXT(" TVP5150A - No signal(0x%02X) \n"), status));
	
	if( status & DECODERSTATUS_MASK_60HZ )	
	{
		pSync->ExternalSync = CFALSE;			
		pSync->HorActive     = 720; // Active width                  
		pSync->HorFrontPorch =   8; // Horizontal Blank : Front porch
		pSync->HorSyncWidth  =  64; // Horizontal Blank : Sync width 
		pSync->HorBackPorch  =  66; // Horizontal Blank : Back porch 
		pSync->VerActive     = 240; // Active height                 
		pSync->VerFrontPorch =   4; // Vertical Blank : Front porch  
		pSync->VerSyncWidth  =   6; // Vertical Blank : Sync width   
		pSync->VerBackPorch  =  12; // Vertical Blank : Back proch   
	}
	else
	{
		pSync->ExternalSync = CFALSE;			
		pSync->HorActive     = 720;	// Active width                  
		pSync->HorFrontPorch =  10;	// Horizontal Blank : Front porch
		pSync->HorSyncWidth  =  64;	// Horizontal Blank : Sync width 
		pSync->HorBackPorch  =  70;	// Horizontal Blank : Back porch 
		pSync->VerActive     = 288;	// Active height                 
		pSync->VerFrontPorch =   2;	// Vertical Blank : Front porch  
		pSync->VerSyncWidth  =   6;	// Vertical Blank : Sync width   
		pSync->VerBackPorch  =  16;	// Vertical Blank : Back proch   
	}

	if( status & DECODERSTATUS_MASK_INTERLACE )
		pSync->IsInterlaced = CTRUE;		
	else
		pSync->IsInterlaced = CFALSE;
	
	return S_OK;
}

HRESULT	
TVP5150A::SetVideoPort(VIPSRC_PORT Port)	
{
	U8	tmp = 0xFF;				
	U8	ch  = 0;
	m_pi2c->Write(0x1C, &tmp, 1); 	// Interrupt Reset Register B : Reset status B
	m_pi2c->Write(0xC0, &tmp, 1);	// Interrupt Status Register A : Reset status A
	
	m_pi2c->Read (0x03, &tmp, 1);	// read decoder pin status		
	switch(Port)
	{
		case COMPOSITE_PORT: 	tmp &= ~0x40, ch = 0;	break;
		case S_VIDEO_PORT  :	tmp |=  0x40, ch = 1;	break;		
		default:				return E_FAIL;				
	}
	tmp |= 0x09;
	m_pi2c->Write(0x03, &tmp, 1);
	m_pi2c->Write(0x0, &ch, 1);
	
	return S_OK;
}	

HRESULT	
TVP5150A::SetVideoChannel(U8 Ch)
{
	return E_FAIL;
}


BOOL
TVP5150A::GetStatus(U32 *pStatus)	
{
	U8 status[7]= {0,};
	U8 temp = 0;
	
	m_pi2c->Read(0x88, &status[0], 1);		// Status #1
	m_pi2c->Read(0x89, &status[1], 1);		// Status #2
//	m_pi2c->Read(0x8A, &status[2], 1);		// Status #3
//	m_pi2c->Read(0x8B, &status[3], 1);		// Status #4
//	m_pi2c->Read(0x8C, &status[4], 1);		// Status #5
//	m_pi2c->Read(0x86, &status[5], 1);		// Status B
	m_pi2c->Read(0xC0, &status[6], 1);		// Status A
	
	for(int i=0; i < 7; i++)
		DEBUGMSG(0,(TEXT(" TVP5150A: status[%d]:0x%02X\r\n"), i, status[i]));	
		
	temp = (DECODERSTATUS_MASK_60HZ | DECODERSTATUS_MASK_INTERLACE);	
	
	if( status[6] & (1<<7))		temp |= DECODERSTATUS_MASK_READYFORCAPURE;	// |= 0x01 (ready)	
	if( status[1] & 0x07)		temp |= DECODERSTATUS_MASK_COPYPROTECTION;	// |= 0x07 (macrovision)
	if( status[0] & (1<<5))		temp &= ~DECODERSTATUS_MASK_60HZ;			// &= 0xdf (50hz)
	if((status[0] & 0x06)==6)	temp |= DECODERSTATUS_MASK_LOOPLOCK;		// |= 0x40
	if( status[0] & (1<<6))		temp &= ~DECODERSTATUS_MASK_INTERLACE; 		// &= 0x7f (Non Interlace)

	*pStatus = temp;	
	DEBUGMSG(ZONE_VIDDEC,(TEXT(" TVP5150A: GetStatus = 0x%02X\r\n"), *pStatus));
	return TRUE;
}

HRESULT 
TVP5150A::SetFramePerSecond(U32 FPS)
{ 
	return E_FAIL; 
}

//------------------------------------------------------------------------------
// 	Color Control Interface functions
//------------------------------------------------------------------------------
HRESULT	
TVP5150A::SetHueValue(U8 Value)
{ 
	// 1000 0000 : -128 (-180 phase)
	// 1000 0000 :    0 (default)
	// 1111 1111 : +127 (+180 phase)
	m_pi2c->Write(0x0B, &Value, 1);
	DEBUGMSG(ZONE_VIDDEC,(TEXT(" TVP5150A: Hue Reg[0x%02X]=%d\r\n"), 0x0B, (char)Value));
		
	return S_OK; 
};

HRESULT	
TVP5150A::SetContrastValue(U8 Value)
{ 
	// 0000 0000 :   0 - min contrast(no dark color)
	// 1000 0000 : 128 - default
	// 1111 1111 : 255 - max contrast
	m_pi2c->Write(0x0C, &Value, 1);
	DEBUGMSG(ZONE_VIDDEC,(TEXT(" TVP5150A: Contrast Reg[0x%02X]=%d\r\n"), 0x0C, Value));
	
	return S_OK; 	
};

HRESULT	
TVP5150A::SetSaturationValue(U8 Value)
{ 
	// 0000 0000 :   0 - min (no color)
	// 1000 0000 : 128 - default
	// 1111 1111 : 255 - max 
	m_pi2c->Write(0x0A, &Value, 1);
	DEBUGMSG(ZONE_VIDDEC,(TEXT(" TVP5150A: Saturation Reg[0x%02X]=%d\r\n"), 0x0A, Value));
	
	return S_OK; 
};

HRESULT	
TVP5150A::SetBrightValue(U8 Value)
{ 
	// 0000 0000 :   0 - dark
	// 1000 0000 : 128 - default
	// 1111 1111 : 255 - white(bright)
	m_pi2c->Write(0x09, &Value, 1);
	DEBUGMSG(ZONE_VIDDEC,(TEXT(" TVP5150A: Brightness Reg[0x%02X]=%d\r\n"), 0x09, Value));
	
	return S_OK; 
};

HRESULT	
TVP5150A::SetSharpValue (U8 Value)
{ 
	return E_FAIL; 
}

HRESULT	
TVP5150A::SetMiscConfig(LPVID_MISC pMisc)
{ 
	return E_FAIL; 
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产视频一区二区在线| 欧美中文字幕一二三区视频| 久久久www成人免费毛片麻豆| 免费在线视频一区| 久久欧美一区二区| 99精品视频一区二区三区| 一区二区三区在线不卡| 欧美三级在线视频| 久久国产人妖系列| 国产精品国产三级国产普通话蜜臀 | 国产99久久精品| 国产精品午夜在线观看| 色婷婷狠狠综合| 日韩不卡一二三区| 久久久久成人黄色影片| 99re66热这里只有精品3直播| 一区二区三区在线视频观看| 欧美高清视频www夜色资源网| 久久国产剧场电影| 日韩毛片精品高清免费| 在线不卡免费av| 成人午夜在线播放| 日日夜夜精品视频免费| 国产欧美在线观看一区| 欧美色国产精品| 国产河南妇女毛片精品久久久| 一级精品视频在线观看宜春院| 欧美一级高清大全免费观看| 成人动漫一区二区三区| 日韩高清一区二区| 国产精品看片你懂得| 欧美精品日韩一区| 成人黄色小视频| 免费看欧美女人艹b| 亚洲婷婷综合色高清在线| 日韩一区二区麻豆国产| 91同城在线观看| 精品一区二区免费看| 一区二区三区不卡视频在线观看| 精品国产免费久久| 精品污污网站免费看| 成人午夜精品在线| 免费观看91视频大全| 亚洲欧美日韩在线不卡| 久久精品人人做人人爽人人| 制服丝袜成人动漫| 99国产欧美另类久久久精品 | 亚洲精品日日夜夜| 久久亚洲精品小早川怜子| 欧美最猛黑人xxxxx猛交| 成人激情动漫在线观看| 国产在线视视频有精品| 亚洲成人在线观看视频| 亚洲精品视频免费观看| 国产精品国产三级国产aⅴ中文| 欧美xxxxxxxx| 欧美一区二区三区影视| 欧美网站大全在线观看| 色偷偷久久人人79超碰人人澡| 成人一区二区视频| 国产91丝袜在线播放九色| 国产一区亚洲一区| 精品午夜一区二区三区在线观看| 亚洲国产精品一区二区久久| 欧美日韩另类一区| 国产一区二区看久久| 久热成人在线视频| 奇米四色…亚洲| 日韩精品乱码免费| 日韩极品在线观看| 日韩不卡一区二区| 另类欧美日韩国产在线| 欧美a级理论片| 日本aⅴ免费视频一区二区三区| 亚洲v中文字幕| 亚洲成人免费在线| 丝袜亚洲精品中文字幕一区| 亚洲bt欧美bt精品| 天天av天天翘天天综合网| 亚洲第一福利视频在线| 婷婷中文字幕一区三区| 日韩av中文字幕一区二区| 日本不卡中文字幕| 卡一卡二国产精品 | 色悠悠久久综合| 欧美在线观看禁18| 欧美日韩国产首页| 欧美一区二区视频在线观看2020| 日韩一级高清毛片| 久久综合色8888| 国产精品欧美一区喷水| 玉米视频成人免费看| 日韩激情一区二区| 狠狠色狠狠色合久久伊人| 国产91丝袜在线播放九色| 99久久er热在这里只有精品66| 色素色在线综合| 91精品国产一区二区| 久久久天堂av| 一区二区三区欧美日| 日本不卡一二三区黄网| 国产麻豆成人传媒免费观看| 99综合影院在线| 欧美高清hd18日本| 久久网站热最新地址| 亚洲视频狠狠干| 欧美aaaaa成人免费观看视频| 国产乱码精品一区二区三区av| 成人黄色小视频| 91麻豆精品国产91| 日本一区二区在线不卡| 亚洲成人激情自拍| 国产成人精品一区二区三区四区 | 狠狠色狠狠色综合| 99re这里都是精品| 日韩欧美成人午夜| 国产精品视频九色porn| 午夜精品福利久久久| 国产99精品在线观看| 欧美伦理电影网| 亚洲欧洲精品一区二区三区不卡| 午夜精品久久久久久久久久 | 久久综合九色综合欧美98| 亚洲欧美国产高清| 韩国三级在线一区| 欧美三区在线观看| 国产人成一区二区三区影院| 午夜在线电影亚洲一区| 成人黄色在线视频| 精品欧美乱码久久久久久1区2区| 亚洲一区二区黄色| 国产成人精品www牛牛影视| 欧美日本在线视频| 综合久久一区二区三区| 国产一区二区三区久久悠悠色av | 久久精品国产**网站演员| 日本高清视频一区二区| 久久亚洲一区二区三区明星换脸| 午夜电影一区二区三区| 日本国产一区二区| 国产精品久久精品日日| 国产揄拍国内精品对白| 这里是久久伊人| 亚洲一区二区在线免费看| 不卡av免费在线观看| 国产欧美一区二区精品婷婷| 精品一区二区三区免费观看| 欧美人与z0zoxxxx视频| 亚洲激情图片qvod| 99re热视频精品| 国产精品色哟哟网站| 国产综合成人久久大片91| 日韩视频国产视频| 免费久久99精品国产| 在线不卡免费欧美| 偷拍日韩校园综合在线| 欧美在线观看一区| 亚洲无人区一区| 欧洲一区二区三区在线| 亚洲乱码国产乱码精品精的特点| 成人av电影在线| 国产精品国产精品国产专区不片| 国产91对白在线观看九色| 国产日本一区二区| 成人aaaa免费全部观看| 中文字幕亚洲精品在线观看| jiyouzz国产精品久久| 亚洲色欲色欲www| 色婷婷久久综合| 亚洲第一综合色| 欧美精品tushy高清| 日韩av一级电影| 精品国产乱码久久久久久夜甘婷婷 | 久久久久久久久久美女| 国产一区二区三区精品欧美日韩一区二区三区 | 国产成人在线视频免费播放| 国产欧美日韩视频在线观看| 成人午夜看片网址| 亚洲日本免费电影| 欧美私人免费视频| 天堂在线亚洲视频| 精品国产免费久久| 成人av资源网站| 一区二区免费在线| 91精品国产欧美一区二区成人| 久久精品72免费观看| 国产亚洲一区二区三区| av动漫一区二区| 亚洲成人av免费| 2020国产精品久久精品美国| 丁香另类激情小说| 午夜国产不卡在线观看视频| 精品国产乱码久久| 不卡av在线免费观看| 污片在线观看一区二区| 久久亚洲综合av| 91免费小视频| 蜜桃视频一区二区三区在线观看| 久久免费美女视频| 在线欧美小视频|