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

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

?? scaler_test.c

?? 提供S3C6400源例子代碼.希望對大家有所幫助
?? C
?? 第 1 頁 / 共 5 頁
字號:
/*----------------------------------------------------------------------
 *
 * Filename: scaler_test.cpp
 *
 * Contents: Testing application of "class POST"
 *
 * Authors: 
 *
 * Notes:
 *
 * Copyright (c) 2003 SAMSUNG Electronics.
 *
 *----------------------------------------------------------------------
 */

 #include <stdio.h>

#include "def.h"
#include "option.h"
#include "library.h"
#include "sfr6400.h"
#include "system.h"
#include "sysc.h"
#include "post.h"
#include "lcd.h"
#include "glib.h"
#include "intc.h"
#include "camera.h"
#include "timer.h"
#include "post_test.h"
#include "tvenc.h"

static POST oPost;
static POST oSc;

static CSPACE eSrcDataFmt;
static CSPACE eMidDataFmt;
static CSPACE eDstDataFmt;

static CSPACE eSrcDataFmt_Yuv;
static CSPACE eDstDataFmt_Yuv;


static POST_RUN_MODE ePostRunMode;

static u32 uLcdHSz, uLcdVSz;	
static u32 uSrcStartX, uSrcStartY;
static u32 uSrcCroppedHSz, uSrcCroppedVSz;

static u32 uMidImgHSz, uMidImgVSz;
static u32 uMidStartX, uMidStartY;
static u32 uMidScaledHSz, uMidScaledVSz;

static u32 uMid2ImgHSz, uMid2ImgVSz;
static u32 uMid2StartX, uMid2StartY;
static u32 uMid2ScaledHSz, uMid2ScaledVSz;

static u32 uImgHSz, uImgVSz;	
static u32 uDstStartX, uDstStartY;
static u32 uDstScaledHSz, uDstScaledVSz;


const static u32 uLcdStAddr = CODEC_MEM_ST; 

static u32 uNxtAddr1, uNxtAddr2;

const static u32 uMaxFrameCnt = 10;

bool bScalerIsPollingOrInt = true; // true: Polling, false: Int

static u32 uSimpleTest;
static bool uScalerIntOccured;

u8 *Scaler_Image_Entertain[] = {	"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment1.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment2.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment3.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment4.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment5.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment6.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment7.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment8.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment9.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment10.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment11.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment12.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment13.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment14.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/entertainment15.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/Illustrate1.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/Illustrate2.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/Illustrate3.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/Illustrate4.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/Illustrate5.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/Illustrate6.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/Illustrate7.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/Illustrate8.bmp",
								"D:/MyDocument/AP/S3C6400/Software/6400_Test_Rev04/Components/multimedia/image/bmp/Illustrate9.bmp"
							};
////////////////////////////////////////////////////////////////////////////
//////////////////                         ISR Routine                         ///////////////////
////////////////////////////////////////////////////////////////////////////

void __irq ScalerISRDma(void)
{
	uScalerIntOccured = TRUE;
	POST_ClearPending(&oSc);
	INTC_ClearVectAddr();
}



//////////
// Function Name : ScalerT_SelectClockDivider
// Function Description : Set POST Clock Divider
// Input : 	None
// Output : 	None
void ScalerT_SelectClockDivider(void)
{
	u32 uPostClockDivide;
	
	UART_Printf("[ScalerT_SelectClockDivider]\n");

	UART_Printf("\n");
	UART_Printf("Select the source clock [0x01 ~ 0x3F] : ");
	
	uPostClockDivide = (u32)UART_GetIntNum();

	POST_SetClockDivide(uPostClockDivide, &oSc);
}


#if (POST_IMAGE_SORCE == POST_IMAGE_HEADER)
static void ScalerT_GetImageFromHeader(u32 uFbAddr, u32 uHSize, u32 uVSize, CSPACE eBpp)
{
	u32 i;
	u16 *pBufAddr16;
	u32 *pBufAddr32;

	pBufAddr16 = (u16 *)uFbAddr;
	pBufAddr32 = (u32 *)uFbAddr;

	switch(eBpp)
	{
		case RGB16 : 	for(i=0 ; i<uHSize*uVSize ; i++)
						{
							//*pBufAddr16++ = pGuitar240320_16rgb[i];
							//*pBufAddr16++ = pRacingGirl320240[i];
							*pBufAddr16++ = sun320240_16bpp[i];
						}
						break;
		case RGB24 : 	for(i=0 ; i<uHSize*uVSize ; i++)
						{
							//*pBufAddr32++ = pGuitar240320_24rgb[i];
							*pBufAddr32++ = pYepp320x240[i];
						}
						break;
		case YC420 : 	for(i=0 ; i<uHSize*uVSize ; i++)
						{
							*pBufAddr16++ = pGuitar240320_YCbYCr420[i];
						}
						break;
		case YCBYCR : 	for(i=0 ; i<uHSize*uVSize ; i++)
						{
							*pBufAddr16++ = pGuitar240320_YCbYCr422[i];
						}
						break;
		case YCRYCB : 	for(i=0 ; i<uHSize*uVSize ; i++)
						{
							*pBufAddr16++ = pGuitar240320_YCrYCb422[i];
						}
						break;
		case CBYCRY : 	for(i=0 ; i<uHSize*uVSize ; i++)
						{
							*pBufAddr16++ = pGuitar240320_CbYCrY422[i];
						}
						break;
		case CRYCBY : 	for(i=0 ; i<uHSize*uVSize ; i++)
						{
							*pBufAddr16++ = pGuitar240320_CrYCbY422[i];
						}
						break;
		default	: 		break;
	}

}
#endif


static void ScalerT_GetImageFromBMP(u32 uFbAddr, u32 uHSize, u32 uVSize, u32 NumOfImage, CSPACE eBpp)
{
	u32 ImageNum;
	u16 *pBufAddr16;
	u32 *pBufAddr32;
	u32 *uBuffer_Temp;

	uBuffer_Temp = (u32 *)malloc(300000);		//bmp file
	pBufAddr16 = (u16 *)uFbAddr;
	pBufAddr32 = (u32 *)uFbAddr;
	ImageNum = NumOfImage%(sizeof(Scaler_Image_Entertain)/4);
	
	switch(eBpp)
	{
		case RGB16 : 	LoadFromFile((const char*)Scaler_Image_Entertain[ImageNum], (u32)uBuffer_Temp);
						ConvertBmpToRgb16bpp((u32)uBuffer_Temp, (u32)pBufAddr16, uHSize, uVSize);
						break;
		case RGB24 : 	LoadFromFile((const char*)Scaler_Image_Entertain[ImageNum], (u32)uBuffer_Temp);
						ConvertBmpToRgb24bpp((u32)uBuffer_Temp, (u32)pBufAddr32, uHSize, uVSize);
						break;
		default	: 		break;
	}

	free(uBuffer_Temp);
}


////////////////////////////////////////////////////////////////////////////
//////////////////                       RGB to RGB                           ///////////////////
////////////////////////////////////////////////////////////////////////////

static void ScalerT_SetCscTypeDmaToDma_R2R(void)
{
	u32 uSelDmaCscType_R2R;

	while(1)
	{
		UART_Printf("\n");
		UART_Printf("[1] From RGB16 To RGB16\n");
		UART_Printf("[2] From RGB16 To RGB24\n");
		UART_Printf("[3] From RGB24 To RGB16\n");		
		UART_Printf("[4] From RGB24 To RGB24\n");
		UART_Printf("\n");

		UART_Printf(">>Select The Color Space Conversion Type: ");

		uSelDmaCscType_R2R = UART_GetIntNum();

		if (uSelDmaCscType_R2R == 1 || uSelDmaCscType_R2R == 2 || uSelDmaCscType_R2R == 3 || uSelDmaCscType_R2R == 4)
		{
			eSrcDataFmt = 	(uSelDmaCscType_R2R == 1 || uSelDmaCscType_R2R == 2) ? RGB16 : RGB24;
			eDstDataFmt = (uSelDmaCscType_R2R == 1 || uSelDmaCscType_R2R == 3) ? RGB16 : RGB24;

			break;
		}
		else 
			UART_Printf("Invalid Input! Retry It!!\n");
		
	}

	if (eSrcDataFmt == RGB16 && eDstDataFmt == RGB16)
	{
		// Scale up(width, height)
		uImgHSz = 120, 	uImgVSz = 160;
		uSrcStartX = 20, uSrcStartY = 30;
		uSrcCroppedHSz = 88, uSrcCroppedVSz = 100;

		uDstStartX = 40, uDstStartY = 80;
		uDstScaledHSz = 160, uDstScaledVSz = 160;

	}
	else if (eSrcDataFmt == RGB16 && eDstDataFmt == RGB24)
	{
		// Scale up(width), scale down(height)
		uImgHSz = 240,	uImgVSz = 320;
		uSrcStartX = 80, uSrcStartY = 160;
		uSrcCroppedHSz = 120,	uSrcCroppedVSz = 160;

		uDstStartX = 20, uDstStartY = 40;
		uDstScaledHSz = 200, uDstScaledVSz = 120;		
	}
	else if (eSrcDataFmt == RGB24 && eDstDataFmt == RGB16)
	{
		// scale down(width), scale up(height)
		uImgHSz = 360,	uImgVSz = 480;
		uSrcStartX = 30, uSrcStartY = 40;
		uSrcCroppedHSz = 160, uSrcCroppedVSz = 100;

		uDstStartX = 10, uDstStartY = 50;
		uDstScaledHSz = 120, uDstScaledVSz = 190;
	}
	else if (eSrcDataFmt == RGB24 && eDstDataFmt == RGB24)
	{
		// scale down(widht, height)
		uImgHSz = 360,	uImgVSz = 480;
		uSrcStartX = 80, uSrcStartY = 20;
		uSrcCroppedHSz = 168,	uSrcCroppedVSz = 240;

		uDstStartX = 100, uDstStartY = 100;
		uDstScaledHSz = 128, uDstScaledVSz = 140;
	}
	else
	{
		UART_Printf("Error! Unsupported Data Format!\n");
		return;
	}

	UART_Printf("\n");
	if(uSimpleTest == 0)
	{
		UART_Printf("=========    Complex_Test Image Size    =========\n");
		UART_Printf("SrcImgHSz     = %d,       SrcImgVSz     = %d\n",uImgHSz,uImgVSz);
		UART_Printf("SrcStartX     = %d,       SrcStartY     = %d\n",uSrcStartX,uSrcStartY);
		UART_Printf("SrcCroppedHSz = %d,       SrcCroppedVSz = %d\n",uSrcCroppedHSz,uSrcCroppedVSz);
		UART_Printf("DstStartX     = %d,       DstStartY     = %d\n",uDstStartX,uDstStartY);
		UART_Printf("DstScaledHSz  = %d,       DstScaledVSz  = %d\n",uDstScaledHSz,uDstScaledVSz);	
		UART_Printf("=================================================\n");
		UART_Printf("\n");
	}
}


static void ScalerT_SimpleDmaToDma_R2R(void)
{
	u32 uLcdHSz, uLcdVSz;
	u32 uGlibStAddr;
	u32 uBytesPerPixel;

	UART_Printf("[ScalerT_SimpleDmaToDma_R2R(No Scaling)]\n");

	uSimpleTest = 1;
	ScalerT_SetCscTypeDmaToDma_R2R();
	
	LCD_InitDISPC(eDstDataFmt, uLcdStAddr, WIN0, false);
	LCD_Start();
	LCD_SetWinOnOff(1, WIN0);
	LCD_GetFrmSz(&uLcdHSz, &uLcdVSz, WIN0);
	
	// To Clear the LCD Display
	GLIB_Init(uLcdStAddr, uLcdHSz, uLcdVSz, eDstDataFmt);
	GLIB_ClearFrame(C_BLACK);
	
	uBytesPerPixel = (eDstDataFmt == RGB16) ? 2: 4;
	uGlibStAddr = uLcdStAddr + uLcdHSz*uLcdVSz*uBytesPerPixel;

#if (POST_IMAGE_SORCE == POST_IMAGE_PATTERN)
		GLIB_Init(uGlibStAddr, uLcdHSz, uLcdVSz, eSrcDataFmt);
		GLIB_DrawPattern(uLcdHSz, uLcdVSz);
#elif (POST_IMAGE_SORCE == POST_IMAGE_HEADER)
		ScalerT_GetImageFromHeader(uGlibStAddr, uLcdHSz, uLcdVSz, eSrcDataFmt);
#endif
	POST_InitIpForDmaInDmaOut(	uLcdHSz, uLcdVSz, uGlibStAddr, eSrcDataFmt, 
									uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
									1, false, ONE_SHOT, &oSc );
	POST_StartProcessing(&oSc);
	while (!POST_IsProcessingDone(&oSc));	

#if (POST_IMAGE_BMP_SLIDE)	
	{
		u32 uImageNum;
		UART_Printf("Input the any key to display the other image ('q' : quit)\n");
		uImageNum = 0;

		while(UART_Getc() != 'q')
		{
			ScalerT_GetImageFromBMP(uGlibStAddr, uLcdHSz, uLcdVSz, uImageNum, eSrcDataFmt);

			// Only CSC operation, not Scaling
			POST_InitIpForDmaInDmaOut(	uLcdHSz, uLcdVSz, uGlibStAddr, eSrcDataFmt, 
											uLcdHSz, uLcdVSz, uLcdStAddr, eDstDataFmt,
											1, false, ONE_SHOT, &oSc );
			POST_StartProcessing(&oSc);
			while (!POST_IsProcessingDone(&oSc));	
			uImageNum++;
		}
	}
#endif	
}


static void ScalerT_ComplexIDmaToDma_R2R(void)
{
	u32 uGlibStAddr=0;
	u32 uBytesPerPixel=0;
	u32 uSrcStAddr;

	UART_Printf("[ScalerT_ComplexIDmaToDma_R2R]\n");

	uSimpleTest = 0;
	ScalerT_SetCscTypeDmaToDma_R2R();
	
	ePostRunMode = ONE_SHOT;
	
	//LCD_InitLDI(MAIN);
#ifdef LCD_INIT_TEST	
	LCD_InitBase();
	LCD_Start();
	LCD_InitWin(eDstDataFmt, uImgHSz, uImgVSz, 0, 0, uImgHSz, uImgVSz, 0, 0, uLcdStAddr, WIN0, false);
#else
	LCD_InitDISPC(eDstDataFmt, uLcdStAddr, WIN0, false);
	LCD_Start();
#endif
	LCD_SetWinOnOff(1, WIN0);
	LCD_GetFrmSz(&uLcdHSz, &uLcdVSz, WIN0);

	// To Clear the LCD Display
	GLIB_Init(uLcdStAddr, uLcdHSz, uLcdVSz, eDstDataFmt);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人av资源在线观看| 亚洲a一区二区| 97久久精品人人爽人人爽蜜臀| 国产精品美女视频| 91丨porny丨国产| 亚洲人快播电影网| 欧美视频一区二区三区| 亚洲成人福利片| 日韩一区二区精品葵司在线| 麻豆成人久久精品二区三区红 | 亚洲综合久久久| 欧美日韩一区 二区 三区 久久精品| 欧美国产日韩a欧美在线观看| 成人黄色免费短视频| 亚洲欧美日韩在线| 91福利精品第一导航| 五月婷婷综合网| 欧美成人国产一区二区| 成人在线综合网站| 亚洲综合在线视频| 日韩欧美中文一区| 粉嫩13p一区二区三区| 亚洲蜜桃精久久久久久久| 日本韩国欧美三级| 亚洲a一区二区| 久久亚洲春色中文字幕久久久| 国产98色在线|日韩| 一区二区三区av电影| 91精品国产综合久久久久久| 国产美女主播视频一区| 成人欧美一区二区三区在线播放| 色悠久久久久综合欧美99| 五月婷婷综合在线| 国产精品午夜久久| 欧美日韩国产一级| 国产一区二区三区久久悠悠色av | 亚洲主播在线观看| 欧美日韩美少妇| 秋霞影院一区二区| 日本一区二区动态图| 欧美日韩精品一区二区| 精品一区精品二区高清| 亚洲少妇中出一区| 日韩视频永久免费| 91污在线观看| 国内精品伊人久久久久av影院| 亚洲人成网站影音先锋播放| 欧美不卡一二三| 色www精品视频在线观看| 国产一区三区三区| 亚洲成人精品一区二区| 国产精品久久久久久户外露出| 欧美日韩在线综合| 国产精品77777竹菊影视小说| 一区二区三区四区精品在线视频| 精品剧情v国产在线观看在线| 91农村精品一区二区在线| 日韩中文字幕不卡| 亚洲视频一区在线| 精品福利在线导航| 欧美日韩精品一区二区天天拍小说| 成人小视频在线| 久久99精品久久久久婷婷| 一区二区三区在线免费播放| 国产午夜精品久久| 欧美一区二区三区日韩视频| 色成人在线视频| 国产不卡视频在线播放| 色综合视频在线观看| 国产精品美女久久久久久久久| 欧美精三区欧美精三区| 成人晚上爱看视频| 青青草国产精品97视觉盛宴| 伊人开心综合网| 中文在线一区二区 | 风间由美一区二区av101| 日韩高清欧美激情| 亚洲综合色在线| 国产精品区一区二区三区| 91麻豆精品国产自产在线观看一区 | 91小视频在线| 国产成人av电影在线| 精品一区二区三区免费| 午夜精品久久久久久久久久| 亚洲手机成人高清视频| 国产欧美1区2区3区| 精品久久一区二区三区| 欧美在线观看视频一区二区三区| www.成人在线| 成人黄色电影在线 | 91精品免费在线| 91免费看`日韩一区二区| 国产一区二区免费看| 日韩精品五月天| 中文字幕日韩精品一区| 久久精品一区二区| 2023国产精华国产精品| 日韩欧美国产系列| 欧美视频在线一区| 色婷婷亚洲精品| 91丝袜美腿高跟国产极品老师| 成人免费看视频| 成人午夜激情片| 粉嫩蜜臀av国产精品网站| 精品亚洲成a人在线观看| 美女免费视频一区二区| 日韩电影一二三区| 五月天欧美精品| 天堂影院一区二区| 婷婷开心激情综合| 日韩成人伦理电影在线观看| 日本不卡视频在线| 美洲天堂一区二卡三卡四卡视频 | 国产专区欧美精品| 蜜桃视频在线一区| 裸体歌舞表演一区二区| 久久不见久久见中文字幕免费| 久久精品国产一区二区| 国内精品久久久久影院色| 狠狠狠色丁香婷婷综合激情| 国产一区二区在线免费观看| 欧美精品久久99| av中文字幕一区| 色婷婷综合中文久久一本| 在线视频亚洲一区| 在线电影欧美成精品| 日韩欧美国产wwwww| 久久香蕉国产线看观看99| 欧美激情在线观看视频免费| 国产精品免费aⅴ片在线观看| 亚洲女人的天堂| 亚洲欧美一区二区三区久本道91| 一区二区三区在线视频免费 | 91老司机福利 在线| 欧美羞羞免费网站| 6080日韩午夜伦伦午夜伦| 日韩欧美你懂的| 国产欧美日韩久久| 亚洲情趣在线观看| 亚洲在线观看免费视频| 视频一区视频二区在线观看| 日韩电影在线看| 国内精品第一页| 99久久99久久精品国产片果冻| 在线观看日韩电影| 6080yy午夜一二三区久久| 日韩午夜小视频| 国产色91在线| 亚洲精品成人悠悠色影视| 婷婷亚洲久悠悠色悠在线播放 | 婷婷成人综合网| 国产乱色国产精品免费视频| 成人一道本在线| 欧美色倩网站大全免费| 欧美成人a在线| 亚洲欧洲精品天堂一级| 亚洲一级二级三级| 麻豆成人91精品二区三区| 懂色av噜噜一区二区三区av| 色婷婷久久综合| 欧美一区二区三区免费大片| 日韩视频免费直播| 国产欧美视频一区二区三区| 一区二区三区在线视频免费| 久久精品国产色蜜蜜麻豆| 99久久精品免费看| 91精品久久久久久蜜臀| 国产日韩欧美高清在线| 亚洲妇熟xx妇色黄| 久久国产欧美日韩精品| 91在线码无精品| 日韩亚洲欧美在线观看| 中文字幕在线不卡一区| 欧美aaaaa成人免费观看视频| 成人免费高清在线| 欧美一区二区三区日韩视频| 亚洲视频在线一区观看| 免费的成人av| 色女孩综合影院| 久久色在线视频| 午夜久久久影院| 国产精品99久久久久久有的能看| 日本精品一级二级| 911精品国产一区二区在线| 亚洲国产精品二十页| 日韩精品亚洲一区二区三区免费| 99久久综合色| 日韩欧美成人一区二区| 亚洲自拍偷拍九九九| 99视频在线精品| 欧美电影影音先锋| 亚洲情趣在线观看| 国产99精品国产| 日韩欧美久久一区| 一级中文字幕一区二区| 高清成人在线观看| 精品久久久久久久久久久院品网| 亚洲午夜久久久久久久久电影网| 波波电影院一区二区三区| 2023国产精品视频|