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

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

?? camif.c

?? 2440 開發(fā)板的測試程序。包括uart,iic,lcd
?? C
?? 第 1 頁 / 共 3 頁
字號:
		camCodecCaptureCount++;
	}
	else
	{
		//Uart_Printf("[P]");
		rGPFDAT ^= 1 << 4;	//hzh
		CamPreviewIntMask();
		rSUBSRCPND |= BIT_SUB_CAM_P;
		ClearPending( BIT_CAM ) ;
		switch ( camPviewStatus )
		{
			case CAM_STOP_ISSUED:
				_CamPviewStopHw();
				camPviewStatus = CAM_LAST_CAPTURING;	 
				Uart_Printf( "pr=%x\n" , rCIPRCTRL );
				//Uart_Printf("pS1\n");
				break;
			case CAM_LAST_CAPTURING:
				camPviewStatus = CAM_STOPPED;
				CamPreviewIntMask();
				//Uart_Printf("pS2\n"); 	
				return;
			case CAM_STARTED:
				flagCaptured_P = 1;
				if ( camTestMode & CAM_TEST_MODE_PVIEW )
				{
					if ( camPviewCaptureCount > 0 )
						completedFrameIndex = ( ( ( rCIPRSTATUS >> 26 ) & 0x3 ) + 4 - 2 ) % 4;
					//Uart_Printf("FrameIndex:%d\n",completedFrameIndex);
				}
				else
				{
					//Uart_Printf("Preview Image Captured\n");
				} 		
			default:
				break;
		} 	

		CamPreviewIntUnmask();
		camPviewCaptureCount++;
	}
}



/******************************************************************************
 *  																		  *    
 *  				 camera interface interrupts & controls 				  *
 *  																		  * 	
 ******************************************************************************/


U32 Conv_YCbCr_Rgb( U8 y0 , U8 y1 , U8 cb0 , U8 cr0 )  // second solution... by junon
{
	// bit order is
	// YCbCr = [Cr0 Y1 Cb0 Y0], RGB=[R1,G1,B1,R0,G0,B0].

	int r0, g0, b0, r1, g1, b1;
	U32 rgb0, rgb1, rgb;

#if 1 // 4 frames/s @192MHz, 12MHz ; 6 frames/s @450MHz, 12MHz
	r0 = YCbCrtoR( y0 , cb0 , cr0 );
	g0 = YCbCrtoG( y0 , cb0 , cr0 );
	b0 = YCbCrtoB( y0 , cb0 , cr0 );
	r1 = YCbCrtoR( y1 , cb0 , cr0 );
	g1 = YCbCrtoG( y1 , cb0 , cr0 );
	b1 = YCbCrtoB( y1 , cb0 , cr0 );
#endif

	if ( r0 > 255 )
		r0 = 255;
	if ( r0 < 0 )
		r0 = 0;
	if ( g0 > 255 )
		g0 = 255;
	if ( g0 < 0 )
		g0 = 0;
	if ( b0 > 255 )
		b0 = 255;
	if ( b0 < 0 )
		b0 = 0;

	if ( r1 > 255 )
		r1 = 255;
	if ( r1 < 0 )
		r1 = 0;
	if ( g1 > 255 )
		g1 = 255;
	if ( g1 < 0 )
		g1 = 0;
	if ( b1 > 255 )
		b1 = 255;
	if ( b1 < 0 )
		b1 = 0;

	// 5:6:5 16bit format
	rgb0 = ( ( ( U16 ) r0 >> 3 ) << 11 ) | ( ( ( U16 ) g0 >> 2 ) << 5 ) | ( ( ( U16 ) b0 >> 3 ) << 0 );	//RGB565.
	rgb1 = ( ( ( U16 ) r1 >> 3 ) << 11 ) | ( ( ( U16 ) g1 >> 2 ) << 5 ) | ( ( ( U16 ) b1 >> 3 ) << 0 );	//RGB565.

	rgb = ( rgb1 << 16 ) | rgb0;

	return( rgb );
}


void Display_Cam_Image( U32 size_x , U32 size_y )
{
	U8* buffer_y, * buffer_cb, * buffer_cr;
	U8 y0, y1, cb0, cr0;
	int r0, r1, g0, g1, b0, b1;
	U32 rgb_data0, rgb_data1; 
	U32 x, y;
	int temp;

	if ( CAM_CODEC_4PP )
		temp = ( ( ( rCICOSTATUS >> 26 ) & 0x3 ) + 4 - 2 ) % 4; // current frame memory block
	else
		temp = 4;
	//Uart_Printf("Current Frame memory %d\n", temp);

	switch ( temp ) // current frame mem - 2
	{
		case 0:
			buffer_y = ( U8 * ) rCICOYSA1;
			buffer_cb = ( U8 * ) rCICOCBSA1;
			buffer_cr = ( U8 * ) rCICOCRSA1;
			break;
		case 1:
			buffer_y = ( U8 * ) rCICOYSA2;
			buffer_cb = ( U8 * ) rCICOCBSA2;
			buffer_cr = ( U8 * ) rCICOCRSA2;
			break;
		case 2:
			buffer_y = ( U8 * ) rCICOYSA3;
			buffer_cb = ( U8 * ) rCICOCBSA3;
			buffer_cr = ( U8 * ) rCICOCRSA3;
			break;
		case 3:
			buffer_y = ( U8 * ) rCICOYSA4;
			buffer_cb = ( U8 * ) rCICOCBSA4;
			buffer_cr = ( U8 * ) rCICOCRSA4;
			break;
		default :
			buffer_y = ( U8 * ) rCICOYSA1;
			buffer_cb = ( U8 * ) rCICOCBSA1;
			buffer_cr = ( U8 * ) rCICOCRSA1;
			break;
	}

	//Uart_Printf("End setting : Y-0x%x, Cb-0x%x, Cr-0x%x\n", buffer_y, buffer_cb, buffer_cr);	
#if 0
	// for checking converting time 
	rGPGCON = (rGPGCON&~(1<<23))|(1<<22); //EINT19 -> GPG11 output
	rGPGUP |= (1<<11);
	rGPGDAT &= ~(1<<11);
	Delay(90);
	rGPGDAT |=(1<<11);
	
	rgb_data0 = 0;
#endif

#if CAM_CODEC_OUTPUT==CAM_CCIR420
	for ( y = 0; y < size_y; y++ ) // YCbCr 4:2:0 format
	{
		for ( x = 0; x < size_x; x += 2 )
		{
			rgb_data0 = Conv_YCbCr_Rgb( *buffer_y++ , *buffer_y++ , *buffer_cb++ , *buffer_cr++ );
			frameBuffer16BitTft240320[y][x / 2] = rgb_data0;

			if ( ( x == ( size_x - 2 ) ) && ( ( y % 2 ) == 0 ) ) // when x is last pixel & y is even number
			{
				buffer_cb -= size_x / 2;
				buffer_cr -= size_x / 2;
			}
		}
	}	
#else
	for ( y = 0; y < size_y; y++ ) // YCbCr 4:2:2 format
	{
		for ( x = 0; x < size_x; x += 2 )
		{
			rgb_data0 = Conv_YCbCr_Rgb( *buffer_y++ , *buffer_y++ , *buffer_cb++ , *buffer_cr++ );
			//frameBuffer16BitTft240320[y][x/2] = rgb_data0;

			LCD_BUFFER_CAM[y][x / 2] = rgb_data0;
			//Uart_Printf("%08x\n", rgb_data0);
			//---
		}
	} 
#endif

	//	memcpy((unsigned char*)0x30100000,  frameBuffer16BitTft240320, 320*240*2); // QCIF=178*144*2
#if 0		
	rGPGDAT &= ~(1<<11);
	Delay(30);
	rGPGDAT |=(1<<11);
	rGPGCON = (rGPGCON&~(1<<22))|(1<<23); // GPG11 output -> EINT19
#endif
}

#if 0
void Display_Cam_Image(int offset_x, int offset_y, int size_x, int size_y)
{
	U8* CamFrameAddr, LcdFrameAddr;
	int i, temp;
	
	Lcd_MoveViewPort(offset_x, offset_y, USED_LCD_TYPE);	

	switch(camPviewCaptureCount%4)
	{
	case 2 : 
		temp = rCIPRCLRSA1;
		break;
	case 3 : 
		temp = rCIPRCLRSA2;
		break;
	case 0 : 
		temp = rCIPRCLRSA3;
		break;
	case 1 :
	default:
		temp = rCIPRCLRSA4;
		break;
	}

	*CamFrameAddr = temp;
	*LcdFrameAddr = LCD_BUFFER_CAM;
	for(i=0;i<size_y;i++)
	{
		memcpy(LcdFrameAddr, CamFrameAddr, size_x*2);
		*LcdFrameAddr += size_x*4; // added virtual screen
		*CamFrameAddr += size_x*2; 
	}
}
#endif

void Test_CamPreview( void )
{
	U8 flag;
	U32 i, j, k, value;

	Uart_Printf( "\nNow Start Camera Preview\n" );

	//camera global variables
	camTestMode = CAM_TEST_MODE_PVIEW;
	camCodecCaptureCount = 0;
	camPviewCaptureCount = 0;
	camPviewStatus = CAM_STOPPED;
	camCodecStatus = CAM_STOPPED;
	flagCaptured_P = 0;

	
#if( DISP_TYPE == 1 )	
	LCD_LTS350Q1_PE1_Init() ;		//
#elif( DISP_TYPE == 2 )
	Lcd_V16C6448AC_Init() ;		//Modufied by GongJun
#endif
	//Uart_Printf( "Any key to continue...\n" ) ;		Uart_Getch() ;

#if( DISP_TYPE == 1 )	
	for ( i = 0 ; i < SCR_YSIZE_TFT_240320 ; i++ )
	{
		for ( j = 0 ; j < SCR_XSIZE_TFT_240320 ; j++ )
		{
			if ( j < 80 )
				LCD_BUFFER_CAM[i][j] = 0x001f ;  //blue
			else if ( ( j > 79 ) && ( j < 160 ) )
				LCD_BUFFER_CAM[i][j] = 0x07e0; //green
			else if ( j > 159 )
				LCD_BUFFER_CAM[i][j] = 0xf800; //red
		}
	}
#elif( DISP_TYPE == 2 )		//Modufied by GongJun
	for ( i = 0 ; i < SCR_YSIZE_TFT_640480 ; i++ )
	{
		for ( j = 0 ; j < SCR_XSIZE_TFT_640480 ; j++ )
		{
			if ( j < 80 )
				LCD_BUFFER_CAM[i][j] = 0xffff ;  //black
			else if ( ( j > 79 ) && ( j < 160 ) )
				LCD_BUFFER_CAM[i][j] = 0x0000; //white
			else if ( ( j > 159 ) && ( j < 240 ) )
				LCD_BUFFER_CAM[i][j] = 0x0001f; //blue
			else if ( ( j > 239 ) && ( j < 320 ) )
				LCD_BUFFER_CAM[i][j] = 0x07e0; //green
			else if ( ( j > 319 ) && ( j < 400 ) )
				LCD_BUFFER_CAM[i][j] = 0xf800; //red
			else if ( ( j > 399 ) && ( j < 480 ) )
				LCD_BUFFER_CAM[i][j] = 0xffe0; //
			else if ( ( j > 479 ) && ( j < 560 ) )
				LCD_BUFFER_CAM[i][j] = 0x07ff; //
			else if ( j > 559 )
				LCD_BUFFER_CAM[i][j] = 0xf81f; //
		}
	}
#endif

	Uart_Printf( "preview sc control = %x\n" , rCIPRSCCTRL ) ;

	// Initialize Camera interface
	switch ( USED_CAM_TYPE )
	{
		case CAM_S5X532 :
			// defualt for test : data-falling edge, ITU601, YCbCr
			CamInit( 640 , 480 , 240 , 320 , 112 , 20 , CAM_FRAMEBUFFER_C , CAM_FRAMEBUFFER_P );
			break;
		case CAM_S5X3A1 :
			// defualt for test : data-falling edge, YCbCr
			CamInit( 640 , 480 , 240 , 320 , 120 , 100 , CAM_FRAMEBUFFER_C , CAM_FRAMEBUFFER_P );
			rCISRCFMT = rCISRCFMT & ~( 1 << 31 ); // ITU656
			//		rCIGCTRL &= ~(1<<26); // inverse PCLK, test pattern
			break;
		default :
			CamInit( 640 , 480 , 240 , 320 , 0 , 0 , CAM_FRAMEBUFFER_C , CAM_FRAMEBUFFER_P );
			break;
	}
	Uart_Printf( "preview sc control = %x\n" , rCIPRSCCTRL );

	// Start Capture	
	rSUBSRCPND |= BIT_SUB_CAM_C | BIT_SUB_CAM_P;
	ClearPending( BIT_CAM );
	pISR_CAM = ( U32 ) CamIsr;    
	CamPreviewIntUnmask();
	CamCaptureStart( CAM_PVIEW_SCALER_CAPTURE_ENABLE_BIT );
	Uart_Printf( "Press 'ESC' key to exit!\n" );
	while ( 1 )
	{
		if ( flagCaptured_P )
		{
			flagCaptured_P = 0;
			//Uart_Printf("Enter Cam A port, count = %d\n",camCodecCaptureCount);
		}
		if ( Uart_GetKey() == ESC_KEY )
			break;
	}

	CamCaptureStop();

	Uart_Printf( "\nWait until the current frame capture is completed.\n" );
	while ( camPviewStatus != CAM_STOPPED )
		if ( Uart_GetKey() == '\r' )
			break;			

	Uart_Printf( "CIS format = %x\n" , rCISRCFMT );
	Uart_Printf( "image cap = %x\n" , rCIIMGCPT );
	Uart_Printf( "preview sc control = %x\n" , rCIPRSCCTRL );
	Uart_Printf( "preview control = %x\n" , rCIPRCTRL );
	Uart_Printf( "codec sc control = %x\n" , rCICOSCCTRL );
	Uart_Printf( "codec control = %x\n" , rCICOCTRL );
	Uart_Printf( "pr addr1 = %x\n" , rCIPRCLRSA1 );
	Uart_Printf( "pr addr2 = %x\n" , rCIPRCLRSA2 );

	Uart_Printf( "camCodecCaptureCount=%d\n" , camCodecCaptureCount );
	Uart_Printf( "camPviewCaptureCount=%d\n" , camPviewCaptureCount );
	//	CamPreviewIntMask();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕一区二区视频| 人人精品人人爱| 日本免费新一区视频| 99免费精品视频| 精品1区2区在线观看| 亚洲综合色成人| 不卡区在线中文字幕| 日韩一级在线观看| 午夜视频一区二区三区| 波多野结衣中文字幕一区 | 日韩中文字幕91| 欧美成人女星排行榜| 樱桃国产成人精品视频| 成人午夜av电影| 欧美精品一区二区三| 免费成人性网站| 欧美久久久久免费| 一区二区三区高清| 99久久99精品久久久久久| 国产三区在线成人av| 国产一区二区三区四| 日韩欧美一级在线播放| 蜜臀久久久99精品久久久久久| 欧美日韩一二三| 一区2区3区在线看| 91一区二区三区在线播放| 欧美韩日一区二区三区| 国产福利一区在线| 26uuu亚洲婷婷狠狠天堂| 六月婷婷色综合| 欧美变态凌虐bdsm| 国产精品自拍一区| 欧美激情一二三区| 91免费观看视频| 亚洲精品高清在线观看| 色婷婷综合五月| 亚洲成人手机在线| 欧美精品粉嫩高潮一区二区| 五月天丁香久久| 日韩精品在线一区二区| 激情六月婷婷久久| 亚洲国产精品成人综合| 97se亚洲国产综合在线| 亚洲精品成人在线| 91精品免费在线观看| 美女一区二区在线观看| 久久九九久久九九| 91在线观看美女| 日韩影院免费视频| 久久精品视频网| 91香蕉视频在线| 日韩激情视频网站| 国产日韩v精品一区二区| 色综合一个色综合亚洲| 视频一区二区三区在线| 国产亚洲午夜高清国产拍精品| 成人国产电影网| 亚洲午夜av在线| 精品对白一区国产伦| 99精品国产91久久久久久| 日韩精品电影一区亚洲| 中文字幕精品一区二区三区精品| 91蝌蚪porny九色| 精品一区二区三区视频| 一色屋精品亚洲香蕉网站| 欧美精品久久久久久久久老牛影院| 国产一区福利在线| 亚洲成a人片在线不卡一二三区| 精品国产一区二区三区忘忧草| 99精品国产99久久久久久白柏| 天堂成人国产精品一区| 中日韩av电影| 91精品在线免费观看| 成人sese在线| 奇米影视在线99精品| 中文字幕亚洲电影| 久久影视一区二区| 欧美性大战久久久久久久蜜臀| 国内精品久久久久影院色 | 欧美男生操女生| 成人中文字幕合集| 麻豆国产精品官网| 亚洲精品国久久99热| 337p粉嫩大胆噜噜噜噜噜91av| 欧美色综合天天久久综合精品| 国产在线看一区| 亚洲成人你懂的| 亚洲男同性视频| 国产亚洲精品资源在线26u| 91精品国产欧美日韩| 在线观看一区日韩| 91丝袜美腿高跟国产极品老师| 国产自产2019最新不卡| 99久久婷婷国产综合精品| 乱中年女人伦av一区二区| 亚洲v日本v欧美v久久精品| 自拍偷在线精品自拍偷无码专区| 久久久午夜精品理论片中文字幕| 91精品国产91久久久久久一区二区 | 欧美精品在欧美一区二区少妇| 一本一本大道香蕉久在线精品 | 国产精品免费丝袜| 国产性天天综合网| 久久这里只精品最新地址| 91精品国产综合久久福利软件 | 毛片av一区二区| 日精品一区二区| 婷婷综合另类小说色区| 午夜精品久久久久久久久久久| 一区二区三区高清| 亚洲福利视频导航| 午夜伊人狠狠久久| 五月综合激情婷婷六月色窝| 午夜欧美在线一二页| 日本特黄久久久高潮| 午夜激情一区二区| 免费观看在线色综合| 免费成人在线影院| 国产一区二区网址| 成人精品国产免费网站| 99久久久精品| 欧美性猛交一区二区三区精品| 欧美日韩一区视频| 在线成人免费视频| 91精品国产品国语在线不卡| 精品欧美一区二区久久| 久久久一区二区三区| 国产性做久久久久久| 亚洲少妇30p| 亚洲午夜精品在线| 蜜臀91精品一区二区三区| 国产精品91xxx| 91毛片在线观看| 欧美日韩大陆一区二区| 亚洲天堂久久久久久久| 亚洲国产美女搞黄色| 久久99国产精品尤物| 成人性生交大合| 欧美色综合天天久久综合精品| 日韩亚洲电影在线| 国产精品三级在线观看| 亚洲午夜激情网页| 国产一区二区中文字幕| 91色|porny| 国产一区二区三区精品欧美日韩一区二区三区 | 美女高潮久久久| 成人免费高清在线| 欧美精品久久久久久久多人混战| 久久久久国产精品人| 亚洲韩国一区二区三区| 国产一区二区三区| 91精品办公室少妇高潮对白| 91精品国产综合久久婷婷香蕉| 国产色产综合色产在线视频 | 亚洲丝袜美腿综合| 麻豆精品久久久| 91久久精品一区二区| 精品久久人人做人人爰| 一区二区三区在线影院| 韩国精品主播一区二区在线观看| 91麻豆蜜桃一区二区三区| 一区二区三区在线观看网站| 久久99精品久久只有精品| 一本大道av伊人久久综合| 欧美大片拔萝卜| 午夜激情一区二区| av影院午夜一区| 久久亚洲精品小早川怜子| 亚洲综合图片区| 99久久精品免费看| 久久久99精品免费观看不卡| 免费在线观看成人| 欧美亚洲综合另类| 中文字幕一区二| 国产激情一区二区三区四区| 欧美精选一区二区| 亚洲一区二区三区不卡国产欧美| 国产69精品久久久久777| 日韩一区二区三区视频| 午夜精品在线视频一区| 91福利在线免费观看| 国产精品国产三级国产a| 国内久久精品视频| 精品国产一区二区三区久久久蜜月| 一区二区三区国产精华| 91麻豆精品视频| 亚洲欧洲国产日韩| 成人精品视频网站| 欧美韩国一区二区| 国产91高潮流白浆在线麻豆 | 亚洲精品国产无套在线观| 成人福利视频在线| 国产欧美日韩精品a在线观看| 久久精品国产精品亚洲综合| 欧美一级片在线看| 麻豆精品蜜桃视频网站| 欧美成人激情免费网| 狠狠v欧美v日韩v亚洲ⅴ| 精品国产乱码久久久久久久 | 中文字幕巨乱亚洲|