⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 SAMSUNG S3C6410 CPU BSP for winmobile6
💻 C
📖 第 1 页 / 共 2 页
字号:
	/////     FrameExtractorFirst     /////
	///////////////////////////////////////
	ret = FrameExtractorFirst(pCTX, fp);


	num_filled = ExtractConfigStreamH263(pCTX, fp, outbuf, outbuf_size, &h263_conf);

	for (i=0; i<num_frames_convert; i++) {
		num_filled = NextFrameH263(pCTX, fp, outbuf, outbuf_size, &coding_type);
		if (num_filled == 0)
			break;

		printf("\n{%02d}Num = %d,\t%d", i, num_filled, coding_type);

		if (max_size < num_filled)
			max_size = num_filled;
	}

	printf("\ni = %d, max_size = %d\n", i, max_size);

	///////////////////////////////////////
	/////     FrameExtractorFinal     /////
	///////////////////////////////////////

	free(outbuf);

	fclose(fp);
	fclose(fp2);
}

void h264test()
{
//	LPCTSTR  filename = TEXT("C:\\Program Files\\War-ftpd\\FTPRoot\\pub\\TestVectors\\h264_vectors\\Football(VGA)\\fb_3000k.264");
//	LPCTSTR  filename = TEXT("walk_vga_vbr_1951k_25fps_daci264.avc");

	LPCTSTR  filename = TEXT("D:\\FTPRoot\\anonymous\\pub\\TestVectors\\H.264_BP\\Stream\\250_Allegro_BDWIDTH_CAVLC_B01_L30_SD480_5.7.26l");



	int     i, ret;
	int     num_filled, max_size = 0;
	void   *inp;
	FILE   *fp2;

	FRAMEX_CTX *pCTX;
	unsigned char *outbuf;
	int            outbuf_size;

	H264_CONFIG_DATA    h264_conf;
	unsigned int        coding_type;
	unsigned char      *delimiter = delimiter_h264;

	inp = SSB_FILE_OPEN(filename);
	if (inp == NULL) {
		printf("[Error] %s file not found\n", filename);
		return;
	}

	fp2 = fopen("out.264", "wb");
	if (fp2 == NULL) {
		printf("[Error] %s file not found\n", filename);
		return;
	}


	outbuf = (unsigned char *) malloc(MAX_FRAME_SIZE);
	outbuf_size = MAX_FRAME_SIZE;


	//////////////////////////////////////
	/////     FrameExtractorInit     /////
	//////////////////////////////////////
	pCTX = FrameExtractorInit(FRAMEX_IN_TYPE_SEL, delimiter, 4, 1);


	///////////////////////////////////////
	/////     FrameExtractorFirst     /////
	///////////////////////////////////////
	ret = FrameExtractorFirst(pCTX, inp);


	num_filled = ExtractConfigStreamH264(pCTX, inp, outbuf, outbuf_size, &h264_conf);
	fwrite(outbuf, 1, num_filled, fp2);

	printf("\n[[ width, height ]] = (%d, %d)\n", h264_conf.width, h264_conf.height);

	for (i=1; i<1000; i++) {
		num_filled = NextFrameH264(pCTX, inp, outbuf, outbuf_size, &coding_type);
		if (num_filled == 0) {
			break;

			SSB_FILE_REWIND(inp);
			FrameExtractorFirst(pCTX, inp);
			num_filled = NextFrameH264(pCTX, inp, outbuf, outbuf_size, &coding_type);
		}
		fwrite(outbuf, 1, num_filled, fp2);
		printf("\n{%02d}Num = %d,\t%d", i, num_filled, coding_type);

		if (max_size < num_filled)
			max_size = num_filled;

	}

	printf("\ni = %d, max_size = %d\n", i, max_size);

	///////////////////////////////////////
	/////     FrameExtractorFinal     /////
	///////////////////////////////////////

	free(outbuf);

	SSB_FILE_CLOSE(inp);
	fclose(fp2);
}


void vc1test()
{
	LPCTSTR  filename = TEXT("D:\\Temp\\VC1抛胶飘氦磐\\003_comdex_wmv9_cbr_0_one-pass_simple_progressive_0_0_0_3_0_0_58000bps_176x144_10fps_64kbps_44khz_s.rcv");

	int   i;
	int   num_filled, acc_size, max_size = 0;
	void *fp;

	unsigned char *outbuf;
	int            outbuf_size;

	VC1_CONFIG_DATA   vc1_conf_data;


	fp = SSB_FILE_OPEN(filename);
	if (fp == NULL) {
		printf("[Error] %s file not found\n", filename);
		return;
	}

	acc_size = 0;

	outbuf = (unsigned char *) malloc(MAX_FRAME_SIZE);
	outbuf_size = MAX_FRAME_SIZE;


	num_filled = ExtractConfigStreamVC1(fp, outbuf, outbuf_size, &vc1_conf_data);
	if (max_size < num_filled)
		max_size = num_filled;
	acc_size += num_filled;

	for (i=0; i<4000; i++) {

		num_filled = NextFrameVC1(fp, outbuf, outbuf_size, NULL);
		if (num_filled == 0)
			break;
		acc_size += num_filled;
		printf("\n[%d] Num = %d,\tAcc = %d", i+1, num_filled, acc_size);

		if (max_size < num_filled)
			max_size = num_filled;
	}

	printf("\ni = %d, max_size = %d\n", i, max_size);

	///////////////////////////////////////
	/////     FrameExtractorFinal     /////
	///////////////////////////////////////

	free(outbuf);

	SSB_FILE_CLOSE(fp);
}



static int h264_parsing_test(LPCTSTR filename)
{
	int     i;	// Loop counter
	int     nFrames, nLoop;
	int     ret, iRet;
	int     num_filled, max_size = 0;
	void   *inp;

	FRAMEX_CTX *pCTX;
	unsigned char *outbuf;
	int            outbuf_size;

	H264_CONFIG_DATA    h264_conf;
	unsigned int        coding_type;
	unsigned char      *delimiter = delimiter_h264;

	inp = SSB_FILE_OPEN(filename);
	if (inp == NULL) {
		printf("[Error] %s file not found\n", filename);
		return -1;
	}


	outbuf = (unsigned char *) malloc(MAX_FRAME_SIZE);
	outbuf_size = MAX_FRAME_SIZE;


	//////////////////////////////////////
	/////     FrameExtractorInit     /////
	//////////////////////////////////////
	pCTX = FrameExtractorInit(FRAMEX_IN_TYPE_SEL, delimiter, 4, 1);


	///////////////////////////////////////
	/////     FrameExtractorFirst     /////
	///////////////////////////////////////
	ret = FrameExtractorFirst(pCTX, inp);


	num_filled = ExtractConfigStreamH264(pCTX, inp, outbuf, outbuf_size, &h264_conf);

	printf("\n----------------------------");
	printf("\n- Filename : %s", filename);
	printf("\n[[ width, height ]] = (%d, %d)\n", h264_conf.width, h264_conf.height);

	for (nFrames=0, nLoop=0;  nLoop<2  ; nFrames++) {
		num_filled = NextFrameH264(pCTX, inp, outbuf, outbuf_size, &coding_type);
		if (num_filled == 0) {
			nLoop++;
			nFrames++; break;
			SSB_FILE_REWIND(inp);

			FrameExtractorFirst(pCTX, inp);
			num_filled = NextFrameH264(pCTX, inp, outbuf, outbuf_size, &coding_type);
		}
		if (max_size < num_filled)
			max_size = num_filled;

	}

	printf("\nframes = %d, max_size = %d", nFrames / nLoop, max_size);


bail_out:
	///////////////////////////////////////
	/////     FrameExtractorFinal     /////
	///////////////////////////////////////
	FrameExtractorFinal(pCTX);

	free(outbuf);
	SSB_FILE_CLOSE(inp);

	return iRet;
}


void h264_parser_batch_test()
{
	int              iRet;

	HANDLE           hFindFile;
	WIN32_FIND_DATA  find_data;

	LPCTSTR  folderpath = "D:\\FTPRoot\\anonymous\\pub\\TestVectors\\H.264_BP\\Stream\\";
	CHAR     filepath[512];


	strcpy(filepath, folderpath);
//	strcat(filepath, "*.26?");
	strcat(filepath, "222_Allegro_PROCESSING_CAVLC_B00_L30_5x6_5.7.26l");

	hFindFile = FindFirstFile(filepath, &find_data);
	if (hFindFile == INVALID_HANDLE_VALUE)
		return;

	do {
		strcpy(filepath, folderpath);
		strcat(filepath, find_data.cFileName);
		iRet = h264_parsing_test(filepath);

		if (FindNextFile(hFindFile, &find_data) == FALSE)
			break;

	} while (1);

	FindClose(hFindFile);

	printf("\n");
}


void main(char *argv[], int argc)
{
//	mpeg4();

//	h263();

//	h264test();

	vc1test();


//	h264_parser_batch_test();

}


int vc1maxtest(LPCTSTR  filename)
{
	int   i, ret;
	int   num_filled, max_size = 0;
	FILE *fp;

	unsigned char *outbuf;
	int            outbuf_size;

	fp = fopen(filename, "rb");
	if (fp == NULL) {
		printf("[Error] %s file not found\n", filename);
		return;
	}


	outbuf = (unsigned char *) malloc(MAX_FRAME_SIZE);
	outbuf_size = MAX_FRAME_SIZE;


	num_filled = ExtractConfigStreamVC1(fp, outbuf, outbuf_size, NULL);
	if (max_size < num_filled)
		max_size = num_filled;

	for (i=0; i<3600; i++) {

		num_filled = NextFrameVC1(fp, outbuf, outbuf_size, NULL);
		if (num_filled == 0)
			break;

		if (max_size < num_filled)
			max_size = num_filled;
	}


	///////////////////////////////////////
	/////     FrameExtractorFinal     /////
	///////////////////////////////////////

	free(outbuf);

	fclose(fp);

	return max_size;
}


void main011()
{
	int max_size=0;

	LPCTSTR  folderpath = "D:\\Temp\\VC1抛胶飘氦磐\\";
	CHAR     filepath[512];

	FILE     *fp;

	HANDLE           hFindFile;
	WIN32_FIND_DATA  find_data;

	strcpy(filepath, folderpath);
	strcat(filepath, "*.rcv");
	hFindFile = FindFirstFile(filepath, &find_data);
	if (hFindFile == INVALID_HANDLE_VALUE)
		return;

	fp = fopen("out.txt", "wt");

	do {
		strcpy(filepath, folderpath);
		strcat(filepath, find_data.cFileName);
		max_size = vc1maxtest(filepath);

		fprintf(fp, "\n[%s]\t\t max_size = %d\n", find_data.cFileName, max_size);

		if (FindNextFile(hFindFile, &find_data) == FALSE)
			break;

	} while (1);


	FindClose(hFindFile);

	fclose(fp);

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -