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

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

?? ad9380.c

?? SigmDesign SMP8634 media decode chip development SDK
?? C
?? 第 1 頁 / 共 5 頁
字號:
#include "ad9380.h"#include "ad9380yuvdata.h"#include "ad9380vgadata.h"#include "ad9380hdmidata.h"#include "ad9380cscdata.h"#include "i2c.h"static RMuint8 isUpdateCSC=0;static RMuint8 isUpdateCSCTable=0;static void printBinary(RMuint32 val,RMuint8 bits){	RMuint8 i=0;	RMuint32 tmp=0;	for(i=1;i<=bits;i++)	{		tmp=val >> (bits-i);		tmp=tmp & 0x01;		printf("%ld",tmp);	}}RMstatus ad9380_checkRegisterSet(struct RUA *pInstance,										   RMuint32 dev ,										   RMuint8 delay){	RMstatus err=RM_OK;	RMuint32 addr;	//		RMuint32 *data;	RMuint32 reg;/*		for(addr=0x00;addr<=0xed;addr++)	{		err = read_i2c(pInstance, delay, dev, addr, &reg);		if (RMFAILED(err))		{			printf("Can't Read I2C \n");			return err;		}		printf(" reg %lx = %lx \n",addr,reg);				}*/	printf("\n---------------------------\n");	printf("RMuint8 i2c_data[][2] = { \n");	printf("<devicevalues name=\"AD9880 Family\">\n");	//for(addr=0x00;addr<=0x95;addr++)	for(addr=0x00;addr<=0xee;addr++)	{		err = read_i2c(pInstance, delay, dev, addr, &reg);		if (RMFAILED(err))		{			printf("Can't Read I2C \n");			//return err;		}		//printf(" { 0x%lx , 0x%lx },\n",addr,reg);			//printf("0x%2lx,",reg);			//printf("	<registerval addr=\"%lX\" value=\"%lX\"/>\n",addr,reg);		printf("	<registerval addr=\"%2lX\" value=\"%2lX\" ( dec = %3ld , bin = ",addr,reg,reg);		printBinary(reg,8);		printf(")\\>\n");	}	printf("};\n");	printf("\n---------------------------\n");if(0){		RMuint8 hex_val[]={0x13,0x00,0x40,0x54,0x80,0x80,0x80,0x80,0x00,0x80,0x00,0x80,0x00,0x80,0x20,0x40,0x40,0x02,0xa9,0x00,0x00,0x00,0xdb,0x02,0xee,0x08,0x14,0x06,0x4e,0xff,0x20,0x32,0x14,0xec,0x08,0x14,0x20,0x52,0x08,0x80,0x82,0x00,0x05,0x00,0x02,0xd0,0x18,0x6f,0xf0,0x96,0x0d,0x95,0x82,0x2c,0x52,0x08,0x00,0x00,0x00,0x19,0xd7,0x1c,0x54,0x08,0x00,0x1e,0x89,0x02,0x92,0x00,0x00,0x08,0x00,0x0e,0x87,0x18,0xbd,0x3b,0x6d,0x54,0x90,0x40,0x01,0x3f,0x00,0x00,0x0f,0x00,0x91,0x20,0x03,0x0b,0x54,0x81,0x00,0x99,0x00,0x02,0x0b,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x22,0x55,0x10,0x2d,0x80,0x02,0x11,0x28,0x00,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x05,0x00,0x00,0x0b,0x00,		};		for(addr=0x00;addr<=0x95;addr++)		{			reg=hex_val[addr];			switch(addr) {			case 0x00:			case 0x15:			case 0x16:			case 0x17:			case 0x18:			case 0x2f:			case 0x30:						break;			default:				if (addr<0x5a) {					printf(" { 0x%lx , 0x%lx },\n",addr,reg);					}			}						//printf("0x%2lx,",reg);				//printf("	<registerval addr=\"%lX\" value=\"%ld\"/>\n",addr,reg);		}	}	return err;}//Use H#if 0static float H(float curVal,float matchVal,float maxPoint){	float result=0;	float minus=0;		//minus = abs(Curval-matchVal);	if ((curVal==0) || (matchVal==0)) {		result = 0; 	}else		if (curVal >= matchVal) {			minus=curVal-matchVal;			result=maxPoint-(minus/curVal)*maxPoint;			if (result<maxPoint/2) {				result=0;			}		}else{			minus=matchVal-curVal;					result=maxPoint-(minus/matchVal)*maxPoint;			if (result<maxPoint/2) {				result=0;			}		}		return result;		}#elsestatic float H(float curVal,float matchVal,float maxPoint){	float result=0;	float minus=0;		//minus = abs(Curval-matchVal);	if ((curVal==0) || (matchVal==0)) {		result = 0; 	}else		if (curVal >= matchVal) {			minus=curVal-matchVal;			result=maxPoint-minus;			if (result<maxPoint/2) {				result=0;			}		}else{			minus=matchVal-curVal;					result=maxPoint-minus;			if (result<maxPoint/2) {				result=0;			}		}		return result;		}#endifRMstatus ad9380_getCaptureStandard(	struct RUA *pInstance,								   RMuint32 numHsyncPerVsync,								   enum EMhwlibTVStandard tvStandartSupportedList[],								   RMuint8 sizeOftvStandartSupportedList,								   enum EMhwlibTVStandard *newTVStandard){	RMstatus err=RM_OK;	struct EMhwlibTVFormatDigital formatDigital;	RMuint32 curLinesPerField;	float maxH=0;	float curH=0;		RMuint8 i=0;	enum EMhwlibTVStandard oldTVStandard;	oldTVStandard=*newTVStandard;		*newTVStandard=EMhwlibTVStandard_Custom;			for(i=0;i<sizeOftvStandartSupportedList;i++)	{				curH=0; 		err = RUAExchangeProperty(pInstance, DisplayBlock, 			RMDisplayBlockPropertyID_TVFormatDigital, 			&tvStandartSupportedList[i], sizeof(tvStandartSupportedList[i]), 			&formatDigital, sizeof(formatDigital));		if RMFAILED(err) {			fprintf(stderr, "Can not get format!\n");			return err;		}		curLinesPerField = formatDigital.VTotalSize;		if (formatDigital.TopFieldHeight) curLinesPerField /= 2;				//printf("%d > compare %ld with %ld\n",i,numHsyncPerVsync,curLinesPerField);		curH += H((float)numHsyncPerVsync,(float)curLinesPerField,100);		if (maxH<curH) {			*newTVStandard=tvStandartSupportedList[i];			maxH=curH;					}	}		//printf("H = %f\n",maxH);		if (maxH<80) {		*newTVStandard=EMhwlibTVStandard_Custom;	}else		if (maxH<97) {			*newTVStandard=oldTVStandard;		}	return err;}RMstatus ad9380_getCaptureStandardYUV_ByNumHsyncPerVsync(									  struct RUA *pInstance, 									  RMuint8 dev, 									  RMuint8 delay,									  RMuint32 numHsyncPerVsync,									  enum EMhwlibTVStandard *yuvId){	RMstatus err=RM_OK;		enum EMhwlibTVStandard yuvTVStandartSupportedList[]= {		ad9380_yuv_ntsc,//ad9380_yuv_480i,			ad9380_yuv_pal, //ad9380_yuv_576i,						ad9380_yuv_480p,			ad9380_yuv_1080i30,			ad9380_yuv_576p,			ad9380_yuv_720p60,			//		ad9380_yuv_1080i25,					ad9380_yuv_1080p60			//EMhwlibTVStandard_480p59,			//		EMhwlibTVStandard_720p60,			//		EMhwlibTVStandard_1080i60,			//		EMhwlibTVStandard_ITU_Bt656_525,			//		EMhwlibTVStandard_ITU_Bt656_625,						};	err=ad9380_getCaptureStandard(pInstance,numHsyncPerVsync,yuvTVStandartSupportedList,(sizeof(yuvTVStandartSupportedList) / sizeof(enum EMhwlibTVStandard)),yuvId);	if (err!=RM_OK) {		printf("Can not get TV standard YUV!\n");	}		return err;}#if AUTODETECT_BY_EMRMstatus ad9380_getCaptureStandardYUV(									  struct RUA *pInstance, 									  RMuint8 dev, 									  RMuint8 delay,									  RMuint32 numHsyncPerVsync,									  enum EMhwlibTVStandard *yuvId){	RMstatus err=RM_OK;	enum EMhwlibTVStandard oldTVStandard;	enum EMhwlibTVStandard yuvTVStandartSupportedList[]= {		ad9380_yuv_ntsc,//ad9380_yuv_480i,		ad9380_yuv_pal, //ad9380_yuv_576i,					ad9380_yuv_480p,		ad9380_yuv_1080i30,		ad9380_yuv_576p,		ad9380_yuv_720p60,//		ad9380_yuv_1080i25,				ad9380_yuv_1080p60		//EMhwlibTVStandard_480p59,		//		EMhwlibTVStandard_720p60,		//		EMhwlibTVStandard_1080i60,		//		EMhwlibTVStandard_ITU_Bt656_525,		//		EMhwlibTVStandard_ITU_Bt656_625,					};	RMuint32 regValue=0x0;		RMuint32 regAdd=0x0;	oldTVStandard=*yuvId;		err=ad9380_getCaptureStandard(pInstance,numHsyncPerVsync,yuvTVStandartSupportedList,(sizeof(yuvTVStandartSupportedList) / sizeof(enum EMhwlibTVStandard)),yuvId);	if (err!=RM_OK) {		printf("Can not get TV standard YUV!\n");	}else	{		if (*yuvId!=oldTVStandard) {			printf("Using I2C bus to detect YUV Mode\n");			numHsyncPerVsync=0;						regAdd=0x17;			err = read_i2c(pInstance, delay, dev, regAdd, &regValue);			if (RMFAILED(err)) {				fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);				return err;			}					numHsyncPerVsync |= regValue << 8;			usleep(100);			regAdd=0x18;			err = read_i2c(pInstance, delay, dev, regAdd, &regValue);			if (RMFAILED(err)) {				fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);				return err;			}			numHsyncPerVsync |= regValue;						err=ad9380_getCaptureStandard(pInstance,numHsyncPerVsync,yuvTVStandartSupportedList,(sizeof(yuvTVStandartSupportedList) / sizeof(enum EMhwlibTVStandard)),yuvId);			if (err!=RM_OK) {				printf("Can not get TV standard YUV!\n");			}		}else		{			//printf("Not read I2C AD . NumHS = 0x%lx\n",numHsyncPerVsync);		}	}	return err;}#elseRMstatus ad9380_getCaptureStandardYUV(									  struct RUA *pInstance, 									  RMuint8 dev, 									  RMuint8 delay,									  enum EMhwlibTVStandard *yuvId){	RMstatus err=RM_OK;	RMuint32 regValue=0x0;	RMuint32 regAdd=0x0;	if (1) {		enum EMhwlibTVStandard yuvIdNew=*yuvId;		enum EMhwlibTVStandard yuvIdOld=*yuvId;				RMuint32 numHsyncPerVsync=0;		RMuint8 samples=10;		RMuint8 i;		RMuint8 changeCount=0;		for(i=0;i<samples;i++)		{			regAdd=0x17;			err = read_i2c(pInstance, delay, dev, regAdd, &regValue);			if (RMFAILED(err)) {				fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);				return err;			}					regValue &= 0x0f;//Only use 4 low bits			numHsyncPerVsync |= regValue << 8;			usleep(100);			regAdd=0x18;			err = read_i2c(pInstance, delay, dev, regAdd, &regValue);			if (RMFAILED(err)) {				fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);				return err;			}			numHsyncPerVsync |= regValue;			if (ad9380_getCaptureStandardYUV_ByNumHsyncPerVsync(pInstance,dev,delay,numHsyncPerVsync,&yuvIdNew)!=RM_OK) {				printf("Error ad9380_getCaptureStandardVGA_ByNumHsyncPerVsync!\n");			}			if (yuvIdNew != yuvIdOld) {				yuvIdOld=yuvIdNew;				changeCount =0;			}else{								changeCount ++;			}						usleep(100);		}				if (changeCount >= 9  ) { //IF SIGNAL DETECT OK.			*yuvId = yuvIdNew;			//printf("\n****Count Change = %d \n",changeCount);		}					}else{			regAdd=0x15;	usleep(100);	err = read_i2c(pInstance, delay, dev, regAdd, &regValue);	if (RMFAILED(err)) {		fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);		return err;	}		usleep(100);	switch(regValue) {	case 0x04:	case 0xac://YUV+VGA		regAdd=0x17;		err = read_i2c(pInstance, delay, dev, regAdd, &regValue);		if (RMFAILED(err)) {			fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);			return err;		}				usleep(100);		switch(regValue) {		case 0x01:			regAdd=0x18;			err = read_i2c(pInstance, delay, dev, regAdd, &regValue);			if (RMFAILED(err)) {				fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);				return err;			}			switch(regValue) {			case 0x06:			case 0x07:				*yuvId=ad9380_yuv_ntsc;				break;			case 0x39:			case 0x38:				*yuvId=ad9380_yuv_pal;				break;			default:				*yuvId=ad9380_invalid_standard;//				fprintf(stderr, "0x04 - 0x01 - 0x%lx\n",regValue);				//err=RM_ERROR;			}			break;		case 0x02:			regAdd=0x18;						err = read_i2c(pInstance, delay, dev, regAdd, &regValue);			if (RMFAILED(err)) {				fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);				return err;			}			switch(regValue) {			case 0x0d:			case 0x41:				*yuvId=ad9380_yuv_480p;				break;			case 0x32: //1080i30			case 0x33:				*yuvId=ad9380_yuv_1080i30;				break;			case 0xee:			case 0x18:			case 0x15:				*yuvId=ad9380_yuv_720p60;				break;			case 0x71:				*yuvId=ad9380_yuv_576p;				break;			default:				*yuvId=ad9380_invalid_standard;//				fprintf(stderr, "0x04 - 0x02 - 0x%lx\n",regValue);				//err=RM_ERROR;			}			break;				case 0x04:			regAdd=0x18;			err = read_i2c(pInstance, delay, dev, regAdd, &regValue);			if (RMFAILED(err)) {				fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);				return err;			}			switch(regValue) {			case 0x6d:				*yuvId=ad9380_yuv_480p;				break;			case 0x8a:				*yuvId=ad9380_yuv_1080i30;				break;			case 0x65:				*yuvId=ad9380_yuv_1080p60;				break;							default:				*yuvId=ad9380_invalid_standard;//				fprintf(stderr, "0x04 - 0x04 - 0x%lx\n",regValue);				//err=RM_ERROR;			}			break;		default:			*yuvId=ad9380_invalid_standard;//			fprintf(stderr, "0x04 - 0x%lx\n",regValue);			//err=RM_ERROR;		}		break;	case 0x08:			regAdd=0x17;		err = read_i2c(pInstance, delay, dev, regAdd, &regValue);		if (RMFAILED(err)) {			fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);			return err;		}		usleep(100);		switch(regValue) {		case 0x01:			regAdd=0x18;			err = read_i2c(pInstance, delay, dev, regAdd, &regValue);			if (RMFAILED(err)) {				fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);				return err;			}			switch(regValue) {			case 0x07:				regAdd=0x5e;				err = read_i2c(pInstance, delay, dev, regAdd, &regValue);				if (RMFAILED(err)) {					fprintf(stderr, "Failed to read reg 0x%lx\n",regAdd);					return err;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美电影在线免费观看| 亚洲一区二区精品3399| 亚洲一区二区不卡免费| 国产真实乱对白精彩久久| 色哟哟一区二区| 日本一二三不卡| 免费在线观看一区| 91极品视觉盛宴| 欧美国产日产图区| 韩国成人在线视频| 欧美日韩综合在线| 亚洲精品视频自拍| av在线这里只有精品| 久久久久久久久97黄色工厂| 亚洲一区二区三区四区的| 不卡视频一二三四| 国产网站一区二区三区| 美女网站一区二区| 欧美一区二区精美| 蜜臀久久99精品久久久久久9| 色美美综合视频| 亚洲男人天堂一区| 91麻豆6部合集magnet| 国产精品麻豆视频| 高清不卡一区二区| 欧美精品一区视频| 日韩福利视频导航| 欧美精选一区二区| 亚洲成人7777| 欧美日韩高清一区| 午夜精品久久久久影视| 91精品福利视频| 亚洲国产成人av好男人在线观看| 一道本成人在线| 亚洲另类春色校园小说| 日本精品裸体写真集在线观看| 中文字幕在线免费不卡| 风间由美性色一区二区三区| 久久久国际精品| 国产91丝袜在线观看| 久久久久久久久久久99999| 国产一区二区在线观看免费| 国产日韩欧美一区二区三区乱码 | 麻豆精品精品国产自在97香蕉| 欧美精品 日韩| 捆绑变态av一区二区三区| 欧美大片日本大片免费观看| 国产综合久久久久影院| 国产精品五月天| 色婷婷精品久久二区二区蜜臀av | 久久亚洲一区二区三区明星换脸| 黑人巨大精品欧美黑白配亚洲| 精品99一区二区三区| 粉嫩aⅴ一区二区三区四区| 国产精品九色蝌蚪自拍| 色av综合在线| 老司机精品视频一区二区三区| 精品国产成人系列| 成人av网站在线观看免费| 亚洲精品成人精品456| 欧美一级二级三级乱码| 国产精品一级片在线观看| 国产精品久久久久一区二区三区| 在线看国产一区二区| 久久不见久久见免费视频7| 国产精品亲子伦对白| 欧美日韩的一区二区| 国产九色sp调教91| 亚洲黄网站在线观看| 欧美不卡一区二区| 一本色道综合亚洲| 国产一区福利在线| 亚洲一区日韩精品中文字幕| 欧美变态凌虐bdsm| 91看片淫黄大片一级| 免费xxxx性欧美18vr| 国产精品萝li| 欧美mv日韩mv亚洲| 欧美午夜精品免费| 国产成a人亚洲精| 美女免费视频一区二区| 亚洲欧美另类图片小说| 精品国产百合女同互慰| 欧美日韩一区久久| 欧美亚洲动漫制服丝袜| 国产91露脸合集magnet| 免费观看在线综合| 亚洲主播在线播放| 亚洲视频免费观看| 欧美国产1区2区| 精品国产乱码久久久久久1区2区| 欧美日韩成人综合| 在线视频观看一区| www.综合网.com| 国产精品一区二区x88av| 免费欧美日韩国产三级电影| 亚洲国产欧美一区二区三区丁香婷| 久久精品夜色噜噜亚洲a∨| 日韩一区二区三区免费观看| 欧美亚洲综合久久| 色婷婷综合中文久久一本| 成人动漫一区二区在线| 国产精品羞羞答答xxdd| 国产中文一区二区三区| 久88久久88久久久| 美女免费视频一区二区| 免费观看在线色综合| 蜜臀久久久久久久| 全部av―极品视觉盛宴亚洲| 天天av天天翘天天综合网色鬼国产| 一区二区三区日韩欧美| 亚洲靠逼com| 亚洲欧美另类综合偷拍| 伊人色综合久久天天人手人婷| 亚洲图片另类小说| 一区二区三区蜜桃| 亚洲一区二区在线观看视频| 亚洲免费在线视频| 亚洲激情校园春色| 亚洲一卡二卡三卡四卡| 亚洲国产精品久久一线不卡| 亚洲一级二级三级在线免费观看| 亚洲国产aⅴ天堂久久| 亚洲风情在线资源站| 视频一区中文字幕| 蜜臀av性久久久久av蜜臀妖精| 久久成人免费网| 国产高清亚洲一区| 成人国产电影网| 欧美在线观看视频在线| 欧美高清激情brazzers| 日韩一区二区三区av| 亚洲色图制服诱惑| 亚洲国产成人av| 久久精品国产亚洲a| 国产精品一二三区| 一本大道综合伊人精品热热 | 亚洲国产精品自拍| 日本亚洲天堂网| 国产精品一品视频| 欧美最猛性xxxxx直播| 在线播放亚洲一区| 国产欧美1区2区3区| 一区二区三区精品视频在线| 日本女人一区二区三区| 成人久久视频在线观看| 日本道在线观看一区二区| 制服.丝袜.亚洲.另类.中文| 国产清纯在线一区二区www| 一区二区三区在线免费| 精品一区二区三区久久久| www.在线成人| 欧美日韩一级片网站| 久久亚洲精精品中文字幕早川悠里 | 青青草原综合久久大伊人精品| 国产乱理伦片在线观看夜一区| 色菇凉天天综合网| 欧美成人艳星乳罩| 一区二区三区四区国产精品| 免费av成人在线| 欧美性生活大片视频| 国产欧美日韩精品在线| 日本不卡高清视频| 91小视频在线免费看| ww久久中文字幕| 亚洲va国产天堂va久久en| 国产成人精品亚洲日本在线桃色| 欧美日韩成人综合在线一区二区| 中文字幕免费在线观看视频一区| 午夜天堂影视香蕉久久| 91一区二区三区在线观看| 精品三级在线看| 日韩精品电影在线| 色菇凉天天综合网| 国产精品美女一区二区三区| 精品一区二区三区视频| 欧美性生交片4| 亚洲同性gay激情无套| 国产精品白丝av| 日韩免费看的电影| 日韩不卡一二三区| 欧美日韩一区二区在线观看| 亚洲视频一二区| av一区二区不卡| 国产日韩欧美精品在线| 国精产品一区一区三区mba视频| 欧美日韩一区精品| 亚洲午夜一区二区三区| 日本高清无吗v一区| 国产精品麻豆欧美日韩ww| 成人动漫av在线| 国产精品白丝在线| av网站免费线看精品| 国产精品丝袜久久久久久app| 国产成人亚洲综合色影视| 欧美精品一区视频| 国产精品资源在线看| 日本一区二区免费在线| 高清国产午夜精品久久久久久| 国产亚洲综合在线|