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

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

?? camera.c

?? 三星公司S3c2443的測試程序源碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
;/*********************************************************************
;* Project Name : S3C2443
;*
;* Copyright 2005 by Samsung Electronics, Inc.
;* All rights reserved.
;*
;* Project Description :
;* This software is only for verifying functions of the S3C2443
;* Anybody can use this code without our permission.
;**********************************************************************
;*
;*	Description	:	Camera
;*	
;*	History
;*			R0.0 (2006.8. ) : Y.C.Kwon draft
;*
;**********************************************************************/

//////////////////////////////////////
// Put this into system library or erase every 'Assert'. This is not necessary function.
#include <stdio.h>
#define Assert(condition,message) { if (!(condition)) printf(message, __FILE__, __LINE__); }
//////////////////////////////////////


#include "Camera.h"

//	Chapter23	Camera Interface
#define FIMC_BASE		(0x4d800000)
#define rCISRCFMT		(*(volatile unsigned *)(FIMC_BASE+0x00))	//Input Source Format        
#define rCIWDOFST		(*(volatile unsigned *)(FIMC_BASE+0x04))	//Window offset       
#define rCIGCTRL		(*(volatile unsigned *)(FIMC_BASE+0x08))	//Global control        
#define rCIDOWSFT2		(*(volatile unsigned *)(FIMC_BASE+0x14))	//Window option 2
#define rCICOYSA1		(*(volatile unsigned *)(FIMC_BASE+0x18))	//Y1 frame start address for codec DMA      
#define rCICOYSA2		(*(volatile unsigned *)(FIMC_BASE+0x1C))	//Y2 frame start address for codec DMA       
#define rCICOYSA3		(*(volatile unsigned *)(FIMC_BASE+0x20))	//Y3 frame start address for codec DMA        
#define rCICOYSA4		(*(volatile unsigned *)(FIMC_BASE+0x24))	//Y4 frame start address for codec DMA          
#define rCICOCBSA1		(*(volatile unsigned *)(FIMC_BASE+0x28))	//Cb1 frame start address for codec DMA 
#define rCICOCBSA2		(*(volatile unsigned *)(FIMC_BASE+0x2C))	//Cb2 frame start address for codec DMA        
#define rCICOCBSA3		(*(volatile unsigned *)(FIMC_BASE+0x30))	//Cb3 frame start address for codec DMA           
#define rCICOCBSA4		(*(volatile unsigned *)(FIMC_BASE+0x34))	//Cb4 frame start address for codec DMA   
#define rCICOCRSA1		(*(volatile unsigned *)(FIMC_BASE+0x38))	//Cr1 frame start address for codec DMA
#define rCICOCRSA2		(*(volatile unsigned *)(FIMC_BASE+0x3C))	//Cr2 frame start address for codec DMA
#define rCICOCRSA3		(*(volatile unsigned *)(FIMC_BASE+0x40))	//Cr3 frame start address for codec DMA
#define rCICOCRSA4		(*(volatile unsigned *)(FIMC_BASE+0x44))	//Cr4 frame start address for codec DMA
#define rCICOTRGFMT		(*(volatile unsigned *)(FIMC_BASE+0x48))	//Target image format of codex DMA
#define rCICOCTRL		(*(volatile unsigned *)(FIMC_BASE+0x4C))	//Codec DMA comtrol        
#define rCICOSCPRERATIO	(*(volatile unsigned *)(FIMC_BASE+0x50))	//Codec pre-scaler ratio control      
#define rCICOSCPREDST	(*(volatile unsigned *)(FIMC_BASE+0x54))	//Codec pre-scaler desitination format
#define rCICOSCCTRL		(*(volatile unsigned *)(FIMC_BASE+0x58))	//Codec main-scaler control
#define rCICOTAREA		(*(volatile unsigned *)(FIMC_BASE+0x5C))	//Codec pre-scaler desination format
#define rCICOSTATUS		(*(volatile unsigned *)(FIMC_BASE+0x64))	//Codec path status
#define rCIPRCLRSA1		(*(volatile unsigned *)(FIMC_BASE+0x6C))	//RGB 1st frame start address for preview DMA
#define rCIPRCLRSA2		(*(volatile unsigned *)(FIMC_BASE+0x70))	//RGB 1st frame start address for preview DMA
#define rCIPRCLRSA3		(*(volatile unsigned *)(FIMC_BASE+0x74))	//RGB 1st frame start address for preview DMA
#define rCIPRCLRSA4		(*(volatile unsigned *)(FIMC_BASE+0x78))	//RGB 1st frame start address for preview DMA
#define rCIPRTRGFMT		(*(volatile unsigned *)(FIMC_BASE+0x7C))	//Target image format of Preview DMA
#define rCIPRCTRL		(*(volatile unsigned *)(FIMC_BASE+0x80))	//Codec DMA comtrol        
#define rCIPRSCPRERATIO	(*(volatile unsigned *)(FIMC_BASE+0x84))	//Codec pre-scaler ratio control      
#define rCIPRSCPREDST	(*(volatile unsigned *)(FIMC_BASE+0x88))	//Codec pre-scaler desitination format
#define rCIPRSCCTRL		(*(volatile unsigned *)(FIMC_BASE+0x8C))	//Codec main-scaler control
#define rCIPRTAREA		(*(volatile unsigned *)(FIMC_BASE+0x90))	//Codec pre-scaler desination format
#define rCIPRSTATUS		(*(volatile unsigned *)(FIMC_BASE+0x98))	//Codec path status
#define rCIIMGCPT		(*(volatile unsigned *)(FIMC_BASE+0xA0))	//Imahe capture enable command
#define rCICOCPTSEQ		(*(volatile unsigned *)(FIMC_BASE+0xA4))	//Codec dma capture sequence related
#define rCICOSCOS		(*(volatile unsigned *)(FIMC_BASE+0xA8))	//Codec scan line offset related
#define rCIIMGEFF		(*(volatile unsigned *)(FIMC_BASE+0xB0))	//Imahe Effects related
#define rCIMSYSA		(*(volatile unsigned *)(FIMC_BASE+0xB4))	//MSDMA Y start address related
#define rCIMSCBSA		(*(volatile unsigned *)(FIMC_BASE+0xB8))	//MSDMA Cb start address related
#define rCIMSCRSA		(*(volatile unsigned *)(FIMC_BASE+0xBC))	//MSDMA Cr start address related
#define rCIMSYEND		(*(volatile unsigned *)(FIMC_BASE+0xC0))	//MSDMA Y end address related
#define rCIMSCBEND		(*(volatile unsigned *)(FIMC_BASE+0xC4))	//MSDMA Cb end address related
#define rCIMSCREND		(*(volatile unsigned *)(FIMC_BASE+0xC8))	//MSDMA Cr end address related
#define rCIMSYOFF		(*(volatile unsigned *)(FIMC_BASE+0xCC))	//MSDMA Y offset related
#define rCIMSCBOFF		(*(volatile unsigned *)(FIMC_BASE+0xD0))	//MSDMA Cb offset related
#define rCIMSCROFF		(*(volatile unsigned *)(FIMC_BASE+0xD4))	//MSDMA Cr offset related
#define rCIMSWIDTH		(*(volatile unsigned *)(FIMC_BASE+0xD8))	//MSDMA source image width related
#define rCIMSCTRL		(*(volatile unsigned *)(FIMC_BASE+0xDC))	//MSDMA cotrol


//*******************************************************************
//*		Functions for Camera Interface
//*******************************************************************

void ResetCameraModule( void)
{
	volatile int delay;
	
	rCIGCTRL	&=	~(1<<30);
	for(delay=0;delay<1000000;delay++);	//	substitude this with Delay() function.
	
	rCIGCTRL	|=	(1<<30);
	for(delay=0;delay<1000000;delay++);	//	substitude this with Delay() function.
}

void EnableImageCapture( void)
{
	rCIIMGCPT	|=	(1u<<31);
}

void DisableImageCapture( void)
{
	rCIIMGCPT	&=	~(1u<<31);
}

void ResetCameraInterface( void)
{
	rCISRCFMT	|=	(1u<<31);

	rCIGCTRL	|=	(1u<<31);
	rCIGCTRL	&=	~(1u<<31);
}

void SetCameraSourceFormat( unsigned int ITU601_656, unsigned int UVOffset, unsigned int Order422)
{
	rCISRCFMT	=	(rCISRCFMT & ~((0x1<<31)|(0x1<<30)|(0x3<<14))) | (ITU601_656<<31)|(UVOffset<<30)|(Order422<<14);
}

void SetCameraSourceSize( unsigned int SourceHsize, unsigned int SourceVsize)
{
	rCISRCFMT	=	(rCISRCFMT & ~((0x1fff<<16)|(0x1fff<<0))) | (SourceHsize<<16)|(SourceVsize);
}

void SetCameraInterfacePolarity( unsigned int InvPolPCLK, unsigned int InvPolVSYNC, unsigned int InvPolHREF)
{
	rCIGCTRL	=	(rCIGCTRL & ~((1<<26)|(1<<25)|(1<<24))) | (InvPolPCLK<<26)|(InvPolVSYNC<<25)|(InvPolHREF<<24);
}

void SetCameraWindowOffset( unsigned int WinOfsEn, unsigned int WinHorOfst, unsigned int WinVerOfst, unsigned int WinHorOfst2, unsigned int WinVerOfst2)
{
	rCIWDOFST	=	(rCIWDOFST & ~((0x1<<31)|(0x7ff<<16)|(0x7ff<<0))) | (WinOfsEn<<31)|(WinHorOfst<<16)|(WinVerOfst<<0);

	rCIDOWSFT2	=	(rCIDOWSFT2 & ~((0x7ff<<16)|(0x7ff<<0))) | (WinHorOfst2<<16)|(WinVerOfst2<<0);
}

void SetCameraTestPattern( unsigned int TestPattern)
{
	rCIGCTRL	=	(rCIGCTRL & ~(0x3<<27)) | (TestPattern<<27);
}

void SetImageEffector( unsigned int IE_FIN, unsigned int PAT_Cb, unsigned int PAT_Cr)
{
	rCIIMGEFF	=	(IE_FIN<<26)|(PAT_Cb<<13)|(PAT_Cr<<0);
}

void EnableOverflowIRQ( void)
{
	rCIWDOFST	|=	(1<<30)|(1<<15)|(1<<14)|(1<<13)|(1<<12);
	rCIWDOFST	&=	~((1<<30)|(1<<15)|(1<<14)|(1<<13)|(1<<12));

	rCIGCTRL	|=	(1<<22);
}

void DisableOverflowIRQ( void)
{
	rCIGCTRL	&=	~(1<<22);
}

static void CalculateBurstSize( unsigned int TargetImageSize, unsigned int *MainBurstLength, unsigned int *RemainedBurstLength)
{
	switch((TargetImageSize>>2)&0xf) {
	case 0	:	*MainBurstLength		=	16;
				*RemainedBurstLength	=	16;
				break;
	case 2	: 	*MainBurstLength		=	16;
				*RemainedBurstLength	=	2;
				break;
	case 4	:	*MainBurstLength		=	16;
				*RemainedBurstLength	=	4;
				break;
	case 6	:	*MainBurstLength		=	4;
				*RemainedBurstLength	=	2;
				break;
	case 8	:	*MainBurstLength		=	16;
				*RemainedBurstLength	=	8;
				break;
	case 10	:	*MainBurstLength		=	8;
				*RemainedBurstLength	=	2;
				break;
	case 12	:	*MainBurstLength		=	8;
				*RemainedBurstLength	=	4;
				break;
	case 14	:	*MainBurstLength		=	4;
				*RemainedBurstLength	=	2;
				break;
	default :	Assert(0,"Improper image size\n");
				break;
	}
}

static void CalculatePrescalerRatioShift( unsigned int SRC_Size, unsigned int DST_Size, unsigned int *Ratio,unsigned int *Shift)
{
	if (SRC_Size>=64*DST_Size) 		{	Assert(0,"Out of scale range.\n");	}
	else if (SRC_Size>=32*DST_Size)	{	*Ratio=32;	*Shift=5;	}
	else if (SRC_Size>=16*DST_Size)	{	*Ratio=16;	*Shift=4;	}
	else if (SRC_Size>=8*DST_Size)	{	*Ratio=8;	*Shift=3;	}
	else if (SRC_Size>=4*DST_Size) 	{	*Ratio=4;	*Shift=2;	}
	else if (SRC_Size>=2*DST_Size) 	{	*Ratio=2;	*Shift=1;	}
	else 							{	*Ratio=1;	*Shift=0;	}
}

//*******************************************************************
//*		Functions for Camera Codec Path
//*******************************************************************

void EnableImageCaptureCodec( void)
{
	rCIIMGCPT |= (1<<30);
}

void DisableImageCaptureCodec( void)
{
	rCIIMGCPT &= ~(1<<31);
}

void EnableCodecDMA( void)
{
	rCIIMGCPT |= (1<<24);
}

void DisableCodecDMA( void)
{
	rCIIMGCPT &= ~(1<<24);
}

static unsigned int GetCodecBytesPerPixel( unsigned int OutFormat, unsigned int Interleave)
{
	unsigned int BytesPerPixel;
	
	switch(OutFormat)
	{
	case OutFormat_YCBCR420 :
		BytesPerPixel = 1;
		break;

	case OutFormat_YCBCR422 :
		if (Interleave==INTERLEAVE_OFF)
			BytesPerPixel = 1;
		else
			BytesPerPixel = 2;
		break;

	case OutFormat_RGB16B :
		BytesPerPixel = 2;
		break;

	case OutFormat_RGB24B :
		BytesPerPixel = 4;
		break;
	}
	
	return BytesPerPixel;
}

void SetCodecFormat( unsigned int InFormat, unsigned int OutFormat, unsigned int Interleave, unsigned int Order422)
{
	rCICOTRGFMT	&=	~((0x1<<31)|(0x1<<30)|(0x1<<29));
	rCIIMGCPT	&=	~((0x1<<26)|(0x1<<25));

	switch(OutFormat)
	{
	case OutFormat_RGB16B :
		Assert(!(Interleave==INTERLEAVE_OFF),"Interleave mode must be set in RGB mode.\n");
		rCICOTRGFMT	|=	(InFormat<<31)|(0x1<<30)|(0x1<<29);
		rCIIMGCPT	|=	(0x1<<26)|(0x0<<25);
		break;

	case OutFormat_RGB24B :
		Assert(!(Interleave==INTERLEAVE_OFF),"Interleave mode must be set in RGB mode.\n");
		rCICOTRGFMT	|=	(InFormat<<31)|(0x1<<30)|(0x1<<29);
		rCIIMGCPT	|=	(0x1<<26)|(0x1<<25);
		break;

	case OutFormat_YCBCR420 :
		Assert(!(Interleave==INTERLEAVE_ON),"Could not set Interleave mode in YCBCR420 output format.\n");
		rCICOTRGFMT	|=	(InFormat<<31)|(0x0<<30)|(0x0<<29);
		rCIIMGCPT	|=	(0x0<<26)|(0x0<<25);
		break;

	case OutFormat_YCBCR422 :
		Assert(!(InFormat==InFormat_YCBCR420),"Could not set YCBCR422 output format when the input format is set as YCBCR420.\n");
		rCICOTRGFMT	|=	(InFormat<<31)|(0x1<<30)|(Interleave<<29);
		rCIIMGCPT	|=	(0x0<<26)|(0x0<<25);
		break;
	}

	rCICOCTRL	=	(rCICOCTRL & ~(0x3)) | (Order422);
}

void SetCodecFrameBuffer( unsigned int FrameBuffer, unsigned int TargetHsize, unsigned int TargetVsize, unsigned int OutFormat, unsigned int Interleave)
{
	unsigned int BytesPerPixel;

	if (Interleave==INTERLEAVE_OFF)
	{
		if (OutFormat==OutFormat_YCBCR420)
		{
			rCICOYSA1	=	FrameBuffer;
			rCICOYSA2	=	rCICOYSA1+TargetHsize*TargetVsize+(TargetHsize*TargetVsize/2);
			rCICOYSA3	=	rCICOYSA2+TargetHsize*TargetVsize+(TargetHsize*TargetVsize/2);
			rCICOYSA4	=	rCICOYSA3+TargetHsize*TargetVsize+(TargetHsize*TargetVsize/2);

			rCICOCBSA1	=	rCICOYSA1+TargetHsize*TargetVsize;
			rCICOCBSA2	=	rCICOYSA2+TargetHsize*TargetVsize;
			rCICOCBSA3	=	rCICOYSA3+TargetHsize*TargetVsize;
			rCICOCBSA4	=	rCICOYSA4+TargetHsize*TargetVsize;

			rCICOCRSA1	=	rCICOCBSA1+(TargetHsize*TargetVsize/4);
			rCICOCRSA2	=	rCICOCBSA2+(TargetHsize*TargetVsize/4);
			rCICOCRSA3	=	rCICOCBSA3+(TargetHsize*TargetVsize/4);
			rCICOCRSA4	=	rCICOCBSA4+(TargetHsize*TargetVsize/4);
		} else {	//	OutFormat = YCBCR422
			rCICOYSA1	=	FrameBuffer;
			rCICOYSA2	=	rCICOYSA1+TargetHsize*TargetVsize*2;
			rCICOYSA3	=	rCICOYSA2+TargetHsize*TargetVsize*2;
			rCICOYSA4	=	rCICOYSA3+TargetHsize*TargetVsize*2;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美一级欧美三级| 91国偷自产一区二区开放时间 | 91成人网在线| www.综合网.com| 丰满白嫩尤物一区二区| 国产精品亚洲午夜一区二区三区| 久久www免费人成看片高清| 亚洲图片一区二区| 亚洲五月六月丁香激情| 亚洲高清免费视频| 视频一区视频二区在线观看| 婷婷丁香激情综合| 狠狠v欧美v日韩v亚洲ⅴ| 国产精品一区二区久久精品爱涩| 国产精品911| 99精品黄色片免费大全| 91福利国产精品| 欧美一级爆毛片| 久久久久久久久岛国免费| 国产精品理论片| 一区二区三区视频在线观看| 日韩电影在线看| 国产成人夜色高潮福利影视| 91视频在线观看| 欧美一区二区视频在线观看| 久久久久久久综合狠狠综合| 一区二区三区久久久| 午夜免费久久看| 国产麻豆欧美日韩一区| 91国内精品野花午夜精品| 日韩欧美第一区| 亚洲视频一区二区在线| 蜜桃视频第一区免费观看| 成人精品免费看| 欧美三级电影精品| 国产欧美一区二区精品久导航| 亚洲天天做日日做天天谢日日欢 | |精品福利一区二区三区| 一区二区三区在线视频免费观看| 毛片一区二区三区| 91香蕉国产在线观看软件| 日韩一区二区三区在线| 亚洲日本韩国一区| 韩国欧美国产1区| 欧美性感一类影片在线播放| 日韩美一区二区三区| 亚洲综合色在线| 粉嫩av一区二区三区| 91精品国产综合久久香蕉的特点| 国产精品污网站| 国产一区激情在线| 国产欧美日韩三区| 麻豆传媒一区二区三区| 日本丰满少妇一区二区三区| 国产肉丝袜一区二区| 免费成人在线网站| 欧美最猛黑人xxxxx猛交| 国产精品久久久久久久久免费丝袜 | 欧美日韩精品电影| 中文字幕中文字幕一区二区| 国产成人精品一区二| 日韩精品中文字幕一区 | 欧美大尺度电影在线| 亚洲国产精品久久不卡毛片| 成人丝袜高跟foot| 26uuu久久天堂性欧美| 久久国产精品72免费观看| 在线播放一区二区三区| 亚洲一区二区高清| 欧美亚洲日本国产| 亚洲综合成人网| 在线免费观看日韩欧美| 一卡二卡三卡日韩欧美| 色婷婷亚洲综合| 亚洲欧美视频在线观看视频| 91香蕉视频mp4| 一区二区三区四区视频精品免费| 色婷婷久久综合| 一区二区三区精品在线观看| 91福利精品第一导航| 亚洲一区日韩精品中文字幕| 欧美日韩一区在线| 天堂在线亚洲视频| 欧美成人精品福利| 国产老肥熟一区二区三区| 国产精品久久久久久户外露出 | 久久er精品视频| 久久精品人人做| 成人激情动漫在线观看| 综合av第一页| 欧美日韩视频在线观看一区二区三区 | 成人丝袜18视频在线观看| 国产欧美综合在线| www.视频一区| 亚洲午夜一区二区三区| 欧美一区二区三区视频在线| 国产一区二区在线电影| 一区免费观看视频| 欧美日韩国产综合视频在线观看| 人妖欧美一区二区| 中文av一区二区| 欧美三级乱人伦电影| 国产老妇另类xxxxx| 一区二区三区久久| 欧美成人a∨高清免费观看| a4yy欧美一区二区三区| 亚洲第一福利视频在线| 久久日一线二线三线suv| 色综合久久中文综合久久97| 丝袜美腿高跟呻吟高潮一区| 久久精品在这里| 欧美猛男gaygay网站| 国产电影一区二区三区| 亚洲成人久久影院| 久久久久久久网| 欧美日韩国产乱码电影| 成人污视频在线观看| 日本最新不卡在线| 国产精品免费aⅴ片在线观看| 欧美猛男男办公室激情| 成人午夜免费电影| 热久久一区二区| 国产精品美日韩| 精品国内片67194| 欧美视频在线观看一区| 成人久久视频在线观看| 精品一区二区三区视频 | 欧美一区二区在线看| 一本大道久久a久久精品综合| 精品亚洲国产成人av制服丝袜 | 日韩色在线观看| 色哟哟亚洲精品| 国产精品亚洲午夜一区二区三区| 日欧美一区二区| 亚洲黄网站在线观看| 国产精品美女久久久久久| 精品国产一区二区国模嫣然| 在线观看www91| 91亚洲精品一区二区乱码| 国产一区不卡视频| 麻豆国产一区二区| 日韩精品亚洲专区| 天堂av在线一区| 午夜欧美2019年伦理| 欧美日韩一区二区三区四区| 日韩电影在线看| 亚洲一区二区综合| 日韩欧美一区二区不卡| 欧美色中文字幕| 亚洲精品一区二区三区99| 国产精品视频九色porn| 国产·精品毛片| 99久久综合狠狠综合久久| 欧美午夜精品久久久久久孕妇| 欧美一区二区久久久| 国产欧美日韩三区| 亚洲成av人片一区二区梦乃| 国产成人精品亚洲777人妖| 欧美在线看片a免费观看| 久久久久久一二三区| 丝袜亚洲精品中文字幕一区| 粉嫩aⅴ一区二区三区四区| 欧美日韩精品一区二区三区蜜桃| 久久综合99re88久久爱| 五月婷婷综合激情| 97精品国产露脸对白| 日韩一级二级三级精品视频| 亚洲精品中文在线影院| 国产成人精品综合在线观看| 制服丝袜亚洲网站| 亚洲色图一区二区| 国产美女娇喘av呻吟久久| 欧美猛男超大videosgay| 亚洲欧洲日韩综合一区二区| 国产一区二区在线观看免费| 7777精品久久久大香线蕉| 综合久久综合久久| 成人一区二区三区视频| 日韩午夜三级在线| 亚洲123区在线观看| 91免费视频网址| 中文幕一区二区三区久久蜜桃| 精品亚洲国产成人av制服丝袜| 欧美精品 国产精品| 亚洲精品写真福利| www.99精品| 欧美国产精品劲爆| 国产美女娇喘av呻吟久久| 精品国产第一区二区三区观看体验 | 一区二区三区免费观看| 成人精品视频一区二区三区| 久久久不卡影院| 国产精品亚洲午夜一区二区三区| 欧美电影免费观看完整版| 免费美女久久99| 欧美sm极限捆绑bd| 国内精品免费在线观看| 精品久久久三级丝袜| 看电影不卡的网站| 精品伦理精品一区|