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

📄 mvmain.c

📁 优化过的xvid1.1.2源代码
💻 C
字号:
#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>
#include <windows.h>

#include "MVDecodec.h"/***************************************************************************** *        Main program ****************************************************************************/int main(int argc, char *argv[]){	unsigned char *mp4_buffer = NULL;
	unsigned char *mp4_ptr = NULL;	unsigned char *out_buffer = NULL;	int useful_bytes = 0,used_bytes = 0, tmp;    int status = 0, width = 352, height = 288, num =0;
    long out_len, buffer_len = 1024*1024, file_len;
	long handle;	FILE * fp, *fp_out;
    SYSTEMTIME  time1, time2;
    double total_time = 0;

	fp = fopen("D:\\video\\bitstream_samples\\foreman_cif3.m4v", "rb");
	fseek(fp, 0,SEEK_END);
	file_len = ftell(fp);
	fseek(fp, 0, SEEK_SET);
	fp_out = fopen("d:\\a.yuv","wb");
	/* Memory for encoded mp4 stream */	mp4_buffer = (unsigned char *) malloc(buffer_len);
	out_buffer = (unsigned char *) malloc(width * height * 3 / 2);
	useful_bytes = fread(mp4_buffer, 1, buffer_len, fp);
	mp4_ptr = mp4_buffer;	if (!mp4_buffer)		return 0;	    	status = mavrix_mp4_dec_open((void **)&handle);    if (status) 
		return 0;    do
	{		GetLocalTime(&time1);
		used_bytes = mavrix_mp4_dec_decode((void *)handle, (void *)mp4_ptr, useful_bytes,											 (void *)out_buffer, &out_len);        GetLocalTime(&time2);
		tmp = (time2.wHour - time1.wHour) * 3600;
		tmp += (time2.wMinute - time1.wMinute) * 60;
		tmp += time2.wSecond - time1.wSecond;
		tmp = tmp * 1000 + (time2.wMilliseconds - time1.wMilliseconds);
		total_time = total_time + tmp;

		printf("Frame NO: %d, time: %d\n", num++, tmp);
        printf("fps:%f\n", 1000*num/total_time);
		fwrite(out_buffer, 1, out_len, fp_out);
		fflush(fp_out);
    
		useful_bytes -=  used_bytes;
		memcpy(mp4_ptr, mp4_ptr + used_bytes, useful_bytes);
		
		file_len -= used_bytes;
		
		if(file_len < 1)
			break;

		tmp = buffer_len - useful_bytes;
		useful_bytes += fread(mp4_ptr + useful_bytes, 1, tmp, fp);

    }while(1);
 	return(0);}

⌨️ 快捷键说明

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