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

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

?? test.c

?? 基于Linux的ffmepg decoder
?? C
字號:
#define TEST_GLOBALS
#include "../fmpeg4_driver/fmpeg4.h"
#include "portab.h"
#include "test.h"
#include "vpe_m.h"
#include "define.h"
#include "dma_m.h"
#include "mp4.h"
#include "mp4vdec.h"
#include "decoder.h"
//#include "utils/mem_align.h"

static file_info * BS_fileinput;
static int32_t file_no;

#ifdef FPGA
	#if (OUTPUT_FMT == OUTPUT_FMT_CbYCrY)
		static char path[80] = "G:\\Notes\\mpeg4\\From_R\\data\\compliance\\Error\\rtl_CbYCrY\\";
	#elif (OUTPUT_FMT == OUTPUT_FMT_RGB555)
		static char path[80] = "G:\\Notes\\mpeg4\\From_R\\data\\compliance\\Error\\rtl_rgb555\\";
	#elif (OUTPUT_FMT == OUTPUT_FMT_RGB888)
		static char path[80] = "G:\\Notes\\mpeg4\\From_R\\data\\compliance\\Error\\rtl_rgb888\\";
	#elif (OUTPUT_FMT == OUTPUT_FMT_RGB565)
		static char path[80] = "G:\\Notes\\mpeg4\\From_R\\data\\compliance\\Error\\rtl_rgb565\\";
	#elif (OUTPUT_FMT == OUTPUT_FMT_YUV)
		static char path[80] = "G:\\Notes\\mpeg4\\From_R\\data\\compliance\\Error\\rtl_yuv\\";
	#endif

void
vTest_FsdbDumpOff(void)
{
}

void
vTest_FsdbDumpOn(void)
{
}

FILE *
ptTest_open(char *filename, char * mode, int x)
{
	FILE * file;
	char string[0x80];

	strcpy(string, path);
	strcat(string, filename);

	printk("open file \"%s\"", string);
	file = fopen(string, mode);
	printk(", return handle 0x%x\n", (int32_t)file);
	return file;
}

void
vTest_read(FILE * file, void * mp4_buffer, uint32_t size, int swap_endian)
{
	int i;
	uint8_t * buf = (uint8_t *)mp4_buffer;
	
	printk("read file(0x%x), sz = 0x%x, to 0x%x ...\n", (int32_t)file, size, (int32_t)mp4_buffer);
	if (fread(mp4_buffer, sizeof(uint8_t), size, file) != size)
		printk("... error\n");
	else
		printk("... ok\n");
	if (swap_endian) {
		for (i = 0; i < size; i += 4, buf += 4)
			BSWAP(*(uint32_t *)buf);
	}
}

int
s32Test_comp(uint8_t * buffer, uint8_t * bufferg, int size)
{
	int i;
	printk("compare: raw 0x%x, gld 0x%x", (int32_t)buffer, (int32_t)bufferg);
	for (i = 0; i < size; i ++) {
		if (*buffer != *bufferg) {
			printk("\n------ ERROR @ offset: 0x%x ------\n", i);
			printk("addr: raw = 0x%x, gld = 0x%x\n", (int32_t)buffer, (int32_t) bufferg);
			printk("data: raw = 0x%x, gld = 0x%x\n", *buffer, * bufferg);
			return -1;
		}
		++ buffer;
		++ bufferg;
	}
	printk("... ok\n");
	return 0;
}

int32_t
bTest_PatternInfo(void)
{
	FILE * file;
	char string[0x80];
	file_info * pfile;
	int c;
	file_no = 0;

	if ((BS_fileinput = malloc_align(MAX_FILE_TEST * sizeof(file_info), CACHE_LINE, CACHE_LINE)) == NULL)
		return FARADAY_ERR_MEMORY;
	pfile = &BS_fileinput[0];
	strcpy(string, path);
	strcat(string, "pattern_pc.txt");
	if ((file = fopen(string, "r")) == NULL) {
 		printk( "The file '%s' was not opened\n", string);
		return FARADAY_ERR_FAIL;
	}

	c = fgetc(file);
	while (c != EOF) {
		// Check the first character for comment
		if (c == '/')
			fgets(string, 0x80, file);
		else {
			// Push the character back to the file then read the next time
			ungetc(c, file);
			fscanf(file,"%s %d %d\n", pfile->filename, &(pfile->filesize), &(pfile->framesize));
			printk("file_info %d: %s %d %d\n", file_no, pfile->filename, pfile->filesize, pfile->framesize);
			++ pfile;
			if (++ file_no == MAX_FILE_TEST) {
				printk("over MAX_FILE_TEST %d\n", MAX_FILE_TEST);
				break;
			}
		}
		c = fgetc(file);
	}
	// write NULL, no more pattern
	strcpy(pfile->filename, "");
	file_no = 0;
	return FARADAY_ERR_OK;
}

boolean
bTest_GetBS(file_info *ptf, file_handle * pth)
{
	char filename_temp[80];
	int x;

	if (BS_fileinput[file_no].filename[0] == '\0') {
		ptf->filesize = 0;
		return FARADAY_ERR_OK;
	}

	if ((pth->bitstream_file = ptTest_open(BS_fileinput[file_no].filename, "rb", VPE_FILE_BITSTREAM)) == NULL)
		return FARADAY_ERR_FAIL;

	ptf->filesize = BS_fileinput[file_no].filesize;
	ptf->framesize = BS_fileinput[file_no].framesize;
	x = (int)strrchr(BS_fileinput[file_no].filename, '\\');
	x = x - (int)BS_fileinput[file_no].filename + 1;
	strncpy(filename_temp, BS_fileinput[file_no].filename, x);
	filename_temp[x] = '\0';
	strcat(filename_temp, "decu_gld.yuv");
	if ((pth->yuv_gld_file = ptTest_open(filename_temp, "rb", VPE_FILE_YUV_GLD)) == NULL)
		return FARADAY_ERR_FAIL;

	x = (int)strrchr(BS_fileinput[file_no].filename, '\\');
	x = x - (int)BS_fileinput[file_no].filename + 1;
	strncpy(filename_temp, BS_fileinput[file_no].filename, x);
	filename_temp[x] = '\0';
	strcat(filename_temp, "decu_gld.display");
	if ((pth->rgb_gld_file = ptTest_open(filename_temp, "rb", VPE_FILE_RGB_GLD)) == NULL)
		return FARADAY_ERR_FAIL;

	++ file_no;
	return FARADAY_ERR_OK;
}

void
vTest_close(FILE * handle)
{
	printk("close file(0x%x)\n", (int)handle);
	fclose(handle);
}

#else

int
s32Test_open(char *filename, char * string, int x)
{
	// start string
	*(volatile uint32_t *)VPE = 0xdddd1100;
	// fill string
	while(*filename != '\0')
		*(volatile uint8_t *)(VPE + 4) = *(filename ++);

	// 1. trickbox_2: file_handle
	*(volatile uint32_t *)(VPE + 0x1008) = (uint32_t)x;
	// 2. trickbox_3: mode
	*(volatile uint32_t *)(VPE + 0x100C) = (uint32_t)*string << 24;
	// 3. trickbox_0: action-open
	*(volatile uint32_t *)(VPE + 0x1000) = 0x00000000;
	// 4. vpe: trigger
	*(volatile uint32_t *)(VPE) = 0x60000003;
	return x;
}

void
vTest_read(int file, void * mp4_buffer, uint32_t size, int swap_endian)
{
	// 1. trickbox_2: file_handle
	*(volatile uint32_t *)(VPE + 0x1008) = (uint32_t)file;
	// 2. trickbox_3: sdram start address
	*(volatile uint32_t *)(VPE + 0x100C) = (uint32_t)mp4_buffer & ~3;
	// 3. trickbox_4: read size
	*(volatile uint32_t *)(VPE + 0x1010) = size;
	// 4. trickbox_5: endian swapping
	*(volatile uint32_t *)(VPE + 0x1014) = swap_endian;
	// 5. trickbox_0: action-read
	*(volatile uint32_t *)(VPE + 0x1000) = 0x00000001;
	// 6. vpe: trigger
	*(volatile uint32_t *)(VPE) = 0x60000003;
}

int
s32Test_comp(uint8_t * buffer, uint8_t * bufferg, int size)
{
	// 1. trickbox_2: raw data sdram start address
	*(volatile uint32_t *)(VPE + 0x1008) = (uint32_t)buffer;
	// 2. trickbox_3: golden data sdram start address
	*(volatile uint32_t *)(VPE + 0x100C) = (uint32_t)bufferg;
	// 3. trickbox_4: size will be compare
	*(volatile uint32_t *)(VPE + 0x1010) = size;
	// 4. trickbox_0: action-compare
	*(volatile uint32_t *)(VPE + 0x1000) = 0x00000002;
	// 5. vpe: trigger
	*(volatile uint32_t *)(VPE) = 0x60000003;

	return 0;
}
int
s32Test_memcpy(uint8_t * dst, uint8_t * src, int size)
{
	// 1. trickbox_2: source address
	*(volatile uint32_t *)(VPE + 0x1008) = (uint32_t)src;
	// 2. trickbox_3: dst address
	*(volatile uint32_t *)(VPE + 0x100C) = (uint32_t)dst;
	// 3. trickbox_4: copy length
	*(volatile uint32_t *)(VPE + 0x1010) = size;
	// 4. trickbox_0: action-memcpy
	*(volatile uint32_t *)(VPE + 0x1000) = 0x00000007;
	// 5. vpe: trigger
	*(volatile uint32_t *)(VPE) = 0x60000003;

	return 0;
}
int32_t
bTest_PatternInfo(void)
{
	if ((BS_fileinput = malloc_align(MAX_FILE_TEST * sizeof(file_info), CACHE_LINE, CACHE_LINE)) == NULL)
		return FARADAY_ERR_MEMORY;

	// 1. trickbox_2: buffer sdram start address
	*(volatile uint32_t *)(VPE + 0x1008) = (uint32_t)BS_fileinput;
	// 2. trickbox_0: action-get_pattern_file
	*(volatile uint32_t *)(VPE + 0x1000) = 0x00000003;
	// 3. vpe: trigger
	*(volatile uint32_t *)(VPE) = 0x60000003;

	file_no = 0;
	return FARADAY_ERR_OK;
}


boolean
bTest_GetBS(file_info *ptf, file_handle * pth)
{
	char filename_temp[80];
	int x;

	if (BS_fileinput[file_no].filename[0] == '\0') {
		ptf->filesize = 0;
		return FARADAY_ERR_OK;
	}

	if ((pth->bitstream_file = s32Test_open(BS_fileinput[file_no].filename, "rb", VPE_FILE_BITSTREAM)) == NULL)
		return FARADAY_ERR_FAIL;

	ptf->filesize = BS_fileinput[file_no].filesize;
	ptf->framesize = BS_fileinput[file_no].framesize;
	x = (int)strrchr(BS_fileinput[file_no].filename, '/');
	x = x - (int)BS_fileinput[file_no].filename + 1;
	strncpy(filename_temp, BS_fileinput[file_no].filename, x);
	filename_temp[x] = '\0';
	strcat(filename_temp, "decu_gld.yuv");
	if ((pth->yuv_gld_file = s32Test_open(filename_temp, "rb", VPE_FILE_YUV_GLD)) == NULL)
		return FARADAY_ERR_FAIL;

	x = (int)strrchr(BS_fileinput[file_no].filename, '/');
	x = x - (int)BS_fileinput[file_no].filename + 1;
	strncpy(filename_temp, BS_fileinput[file_no].filename, x);
	filename_temp[x] = '\0';
	strcat(filename_temp, "decu_gld.display");
	if ((pth->rgb_gld_file = s32Test_open(filename_temp, "rb", VPE_FILE_RGB_GLD)) == NULL)
		return FARADAY_ERR_FAIL;

	++ file_no;
	return FARADAY_ERR_OK;
}


void
vTest_FsdbDumpOff(void)
{
#ifdef TEST_BY_PATTERN_FILE
	#ifdef FSDB_DUMP_ONOFF
	// 1. trickbox_0: action-get_pattern_file
	*(volatile uint32_t *)(VPE + 0x1000) = 0x00000004;
	// 2. vpe: trigger
	*(volatile uint32_t *)(VPE) = 0x60000003;
	#endif
#endif
}

void
vTest_FsdbDumpOn(void)
{
#ifdef TEST_BY_PATTERN_FILE
	#ifdef FSDB_DUMP_ONOFF
	// 1. trickbox_0: action-get_pattern_file
	*(volatile uint32_t *)(VPE + 0x1000) = 0x00000005;
	// 2. vpe: trigger
	*(volatile uint32_t *)(VPE) = 0x60000003;
	#endif
#endif
}

void
vTest_close(int handle)
{
	// 1. trickbox_2: file_handle
	*(volatile uint32_t *)(VPE + 0x1008) = (uint32_t)handle;
	// 2. trickbox_0: action-close
	*(volatile uint32_t *)(VPE + 0x1000) = 0x00000006;
	// 3. vpe: trigger
	*(volatile uint32_t *)(VPE) = 0x60000003;
}
// additional function call for speed up simulation in VPE
int32_t
Mp4VDec_FillBuffer_VPE(void * ptDecHandle, uint8_t * ptBuf, uint32_t u32BufSize)
{
	DECODER * dec = (DECODER *)ptDecHandle;

	if (u32BufSize > (dec->u32BS_buf_sz - dec->u32BS_buf_sz_remain))
		return FARADAY_ERR_FAIL;

	if ((dec->u32BS_buf_sz_remain) && (dec->pu8BS_start_virt != dec->pu8BS_ptr_virt))
		s32Test_memcpy(dec->pu8BS_start_virt, dec->pu8BS_ptr_virt, dec->u32BS_buf_sz_remain);

	if (u32BufSize)
		s32Test_memcpy(dec->pu8BS_start_virt + dec->u32BS_buf_sz_remain, ptBuf, u32BufSize);

	dec->pu8BS_ptr_virt = dec->pu8BS_start_virt;
	dec->pu8BS_ptr_phy = dec->pu8BS_start_phy;
	dec->u32BS_buf_sz_remain += u32BufSize;

	return FARADAY_ERR_OK;
}
#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
午夜精品久久久久久久久久久| 中文字幕av资源一区| 色婷婷激情一区二区三区| 国产91高潮流白浆在线麻豆| 国产一区二区久久| 久久99久久精品| 国产在线精品不卡| 成人黄色免费短视频| 99免费精品在线观看| 99久久国产免费看| 在线看日本不卡| 69堂精品视频| 欧美精品一区二区蜜臀亚洲| 国产视频911| 亚洲色图一区二区| 亚洲成人动漫在线免费观看| 天天做天天摸天天爽国产一区| 蜜桃一区二区三区在线观看| 精品无码三级在线观看视频| 粉嫩aⅴ一区二区三区四区五区| 99国产精品99久久久久久| 91麻豆精品一区二区三区| 日本久久精品电影| 欧美一区二区三区免费| 国产欧美一区二区三区在线看蜜臀| 国产精品久久久久久久岛一牛影视 | 欧美一级欧美一级在线播放| 日韩三级在线免费观看| 久久久www成人免费无遮挡大片| 中文幕一区二区三区久久蜜桃| 亚洲你懂的在线视频| 蜜臀av性久久久久蜜臀av麻豆| 国产一区福利在线| 欧美性生活一区| 久久久一区二区三区捆绑**| 一区二区三区产品免费精品久久75| 视频一区国产视频| 成人av在线观| 欧美一区二区三区日韩| 国产精品久久久久aaaa| 日韩精品电影在线观看| 国产成人精品网址| 在线播放91灌醉迷j高跟美女| 久久精品夜色噜噜亚洲aⅴ| 亚洲一区二区在线免费观看视频 | 91麻豆精品国产91久久久| 2024国产精品视频| 亚洲一区二区3| 国产成人av电影在线| 欧美视频一二三区| 亚洲欧洲一区二区在线播放| 久久国产精品无码网站| 日本韩国一区二区| 国产精品久久久久久亚洲伦| 美女在线视频一区| 欧美高清性hdvideosex| 亚洲免费av网站| 国产成人免费网站| 亚洲精品在线一区二区| 热久久免费视频| 欧美日韩免费高清一区色橹橹| 国产精品乱人伦| 高清在线成人网| 久久久一区二区三区捆绑**| 久久精工是国产品牌吗| 欧美丰满嫩嫩电影| 亚洲va欧美va人人爽| 欧美天天综合网| 亚洲电影一级黄| 欧美日韩中文国产| 亚洲精品国产a| 色欧美片视频在线观看在线视频| 国产免费观看久久| 成人黄色小视频在线观看| 中文字幕欧美三区| 丁香桃色午夜亚洲一区二区三区| 日韩免费看的电影| 狠狠色丁香婷婷综合| 久久免费国产精品| 丁香婷婷综合色啪| 亚洲精品老司机| 欧美日韩一区三区四区| 青青草国产精品亚洲专区无| 欧美一区二区三区日韩| 狠狠色2019综合网| 欧美激情综合五月色丁香 | 欧美视频中文字幕| 日韩和欧美一区二区三区| 91麻豆精品国产自产在线| 捆绑紧缚一区二区三区视频| 欧美一级黄色录像| 国产激情一区二区三区四区 | 亚洲女同一区二区| 欧美日韩视频在线观看一区二区三区 | 欧美日韩免费高清一区色橹橹 | 激情深爱一区二区| 欧美国产综合色视频| 色婷婷激情一区二区三区| 日韩电影在线免费| 精品久久久久一区二区国产| 成人深夜在线观看| 亚洲成人av免费| 国产欧美一区二区精品婷婷 | 首页国产欧美日韩丝袜| 精品福利一区二区三区| aaa欧美日韩| 日韩精品五月天| 中文字幕的久久| 337p亚洲精品色噜噜| 高清国产一区二区| 日韩高清国产一区在线| 国产免费观看久久| 欧美一区二区三区视频| 成人av在线网站| 日本不卡的三区四区五区| 久久久国产一区二区三区四区小说| 成人精品一区二区三区中文字幕| 亚洲五码中文字幕| 国产精品素人视频| 91精品福利在线一区二区三区| 国产精一品亚洲二区在线视频| 亚洲美女在线国产| 精品黑人一区二区三区久久| 欧美日韩一级片在线观看| 成人动漫视频在线| 久久66热偷产精品| 亚洲国产精品久久久久秋霞影院| 久久综合九色欧美综合狠狠| 欧美日韩综合在线免费观看| 激情综合五月婷婷| 亚洲午夜精品网| 亚洲欧美电影一区二区| 国产精品色在线观看| 久久免费看少妇高潮| 91麻豆精品国产91久久久使用方法 | 欧美婷婷六月丁香综合色| 成人免费高清视频| 国产一区二区三区不卡在线观看| 午夜激情久久久| 亚洲另类春色国产| 国产精品丝袜91| 国产亚洲欧美一级| www国产亚洲精品久久麻豆| 91麻豆精品国产自产在线观看一区| 91精品福利在线| 色先锋资源久久综合| 91色综合久久久久婷婷| 大桥未久av一区二区三区中文| 精品一区二区三区久久| 久久精品99国产精品| 麻豆视频一区二区| 美女任你摸久久 | 成人影视亚洲图片在线| 极品销魂美女一区二区三区| 精品在线播放免费| 激情综合网av| 成人app在线| 91麻豆国产香蕉久久精品| 97超碰欧美中文字幕| 91福利国产成人精品照片| 欧美亚洲高清一区二区三区不卡| 色视频成人在线观看免| 欧美日韩一区二区在线视频| 欧美人狂配大交3d怪物一区| 欧美一区二区免费观在线| 精品久久久久一区二区国产| 久久久91精品国产一区二区精品 | 中文一区在线播放| 国产精品成人免费精品自在线观看| 国产精品欧美精品| 一区二区三区精密机械公司| 亚洲3atv精品一区二区三区| 奇米888四色在线精品| 国产中文字幕精品| 北条麻妃一区二区三区| 在线国产电影不卡| 欧美精品一区二区精品网| 国产精品毛片久久久久久| 亚洲高清不卡在线观看| 国产酒店精品激情| 91香蕉国产在线观看软件| 在线成人免费观看| 国产欧美一区二区三区鸳鸯浴| 日韩理论片网站| 免费在线看成人av| 不卡av免费在线观看| 欧美日韩一区小说| 日本一区二区三区视频视频| 一区二区在线观看免费视频播放| 麻豆精品国产91久久久久久| 本田岬高潮一区二区三区| 91精品国产综合久久精品麻豆| 国产欧美日韩精品在线| 亚洲动漫第一页| 粉嫩欧美一区二区三区高清影视| 欧美日韩精品一区二区在线播放| 中文字幕欧美国产| 琪琪久久久久日韩精品| 91国偷自产一区二区三区成为亚洲经典 | 亚洲在线成人精品|