亚洲欧美第一页_禁久久精品乱码_粉嫩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一区二区三区免费野_久草精品视频
2020国产精品| 精品久久久久久久久久久久包黑料 | 激情综合色丁香一区二区| 国产欧美日韩精品在线| 国产性色一区二区| 国产精品久久久久永久免费观看| 亚洲精品在线一区二区| 久久久国际精品| 亚洲激情成人在线| 日韩高清不卡在线| 国产精品18久久久久久久网站| 国产一区二区三区日韩| 91日韩一区二区三区| 欧美美女直播网站| 久久综合九色欧美综合狠狠 | 日韩激情视频在线观看| 国产一区二区三区不卡在线观看 | 日韩中文字幕一区二区三区| 欧美a级理论片| 成人免费高清在线观看| 欧美午夜一区二区| 中文文精品字幕一区二区| 国产精品久久久久婷婷二区次| 亚洲一区在线观看视频| 精品一区二区精品| 欧美日韩精品一区二区天天拍小说 | 欧美日韩免费在线视频| 中文字幕精品—区二区四季| 日韩精品欧美精品| 在线亚洲高清视频| 国产欧美日韩视频在线观看| 久久精品人人爽人人爽| 日韩精品一二区| 欧美日韩电影在线| 亚洲国产成人91porn| 成人午夜激情在线| 国产欧美一二三区| 国产美女在线精品| 国产午夜精品一区二区三区四区| 亚洲大片免费看| 欧美精选在线播放| 天堂精品中文字幕在线| 色婷婷激情一区二区三区| 亚洲视频免费观看| 欧美日韩电影一区| 蜜臀久久久久久久| 久久久久国产精品厨房| 国产美女视频91| 亚洲天堂精品在线观看| 色婷婷综合久久久中文一区二区 | 成人激情av网| 一区二区三区国产精品| 欧美日韩高清在线| 狠狠色丁香婷婷综合| 国产精品久久久久久户外露出| 成人av先锋影音| 亚洲aaa精品| 欧美国产精品一区二区| 91黄视频在线观看| 麻豆精品在线观看| 中文字幕中文乱码欧美一区二区| 91精品福利视频| 麻豆成人久久精品二区三区红| 久久亚洲欧美国产精品乐播| 播五月开心婷婷综合| 天天色天天操综合| 精品免费视频.| 成人精品视频一区二区三区| 亚洲国产精品嫩草影院| 久久婷婷国产综合国色天香| 91麻豆蜜桃一区二区三区| 久久精品国产99久久6| 亚洲一区二区三区影院| 国产欧美一区二区精品久导航| 91国内精品野花午夜精品 | 91精选在线观看| 成人av在线资源网| 久久激情五月激情| 爽爽淫人综合网网站| 亚洲制服欧美中文字幕中文字幕| 国产日韩在线不卡| 欧美精品一区二区三| 67194成人在线观看| 欧美人xxxx| 制服丝袜日韩国产| 色欧美88888久久久久久影院| 国产成人免费视频一区| 国产成人免费在线| 粉嫩aⅴ一区二区三区四区| 国产精品亚洲午夜一区二区三区| 久久成人精品无人区| 麻豆精品在线视频| 狠狠色2019综合网| 成人精品鲁一区一区二区| 国产精品一区在线观看你懂的| 国产麻豆成人传媒免费观看| 国产一区二区影院| 97国产精品videossex| 在线看不卡av| 欧美成人vr18sexvr| 久久久www成人免费无遮挡大片| 中文字幕欧美激情| 石原莉奈一区二区三区在线观看| 男人的天堂亚洲一区| 成人理论电影网| 欧美日韩国产美| 色视频欧美一区二区三区| 国产精品一品视频| 91在线视频免费观看| 337p亚洲精品色噜噜| 国产精品美女久久久久久久久久久 | 国产精品素人视频| 另类小说欧美激情| 91色视频在线| 久久免费电影网| 视频一区二区三区入口| 成人99免费视频| 国产亚洲精品精华液| 偷拍日韩校园综合在线| 不卡的av中国片| 国产午夜精品一区二区三区嫩草| 亚洲女同一区二区| 高清不卡在线观看av| 精品国产制服丝袜高跟| 性做久久久久久久免费看| 91丨porny丨最新| 国产欧美综合在线观看第十页| 麻豆精品一区二区av白丝在线| 欧日韩精品视频| 一区二区三区在线免费视频| 丰满白嫩尤物一区二区| 久久欧美一区二区| 国产尤物一区二区| 久久久蜜桃精品| 国产成人精品免费一区二区| 久久久亚洲午夜电影| 国产不卡视频一区| 中文字幕免费不卡在线| 成人精品视频.| 亚洲制服丝袜av| 欧美高清性hdvideosex| 午夜激情一区二区| 日韩你懂的在线观看| 懂色av一区二区三区免费看| 国产精品久久久久国产精品日日| 91精品国产高清一区二区三区蜜臀 | 欧美一区二区久久久| 天使萌一区二区三区免费观看| 欧美成人一区二区三区在线观看 | 欧美日韩精品久久久| 日韩在线一二三区| 欧美激情综合在线| 欧美网站一区二区| 精品综合久久久久久8888| 国产精品久久久久婷婷二区次| 欧美日韩三级一区| 国产xxx精品视频大全| 亚洲午夜视频在线| 久久精品视频一区| 日韩女优电影在线观看| 色综合久久天天综合网| 国产精品小仙女| 久久精品国产亚洲高清剧情介绍| 中文字幕在线不卡| 久久久久久久电影| 日韩欧美色电影| 欧美精品日韩一区| 在线亚洲一区观看| 99精品偷自拍| 91无套直看片红桃| 99这里只有精品| 99re66热这里只有精品3直播| 免费观看日韩av| 看片的网站亚洲| 麻豆精品视频在线观看| 秋霞午夜av一区二区三区| 亚洲图片欧美色图| 亚洲国产精品精华液网站| 亚洲综合小说图片| 亚洲18女电影在线观看| 日日夜夜一区二区| 国产美女一区二区三区| 奇米影视在线99精品| 久久精品国产99| www.亚洲人| 欧美日韩精品专区| 精品国产区一区| 日本一区二区视频在线观看| 国产精品久久久久影视| 亚洲 欧美综合在线网络| 国产精品美女www爽爽爽| 精品日韩欧美一区二区| 亚洲欧美中日韩| 午夜久久久久久久久| 国产一区二区不卡在线| 在线观看国产精品网站| 日韩免费电影网站| 一区二区三区在线看| 国内外精品视频| 欧美日韩国产综合一区二区|