why can't improve performance?

zzw6789 <[email protected]>
Newsgroups gmane.comp.video.xvid.user
Message-ID <[email protected]>
 Hi,I'm use the xvid lib to encode and docode the mpeg4 stream, I read
form a video file and encode video to mpeg stream, write the stream to a
file, then I read from the encode file, decode form it to video file. In
a VIA C3 500MHz processor, I can't get idea speed, wo I use a INTEL PIII
1000MHz do the same, I hope to improve the encode and decode speed! but
I can't get much improve, the performance is only a little better.
I attach the message of 2 result and my code for referrence!(the code I
changed form the sample code of xvidcore lib). also I found some frame
encodeing(or decoding) time is much longer than others! Can You tell me
why, and hope you suggestion! thanks !

_______________________________________________
XviD-users mailing list
[email protected]
http://list.xvid.org/mailman/listinfo/xvid-users
xvid_codec.c (text/x-csrc, 14.2 KB)
#include <stdio.h>
#include <time.h>
#include <xvid.h>
#include "xvid_codec.h"

//static int WIDTH=320;
//static int HEIGHT=240;

#define COLOR_DEPTH			16

#define	FRAMERATE			25
/******************  XVID_ENC_PARAM const define ********************/
//#define WIDTH				640
//#define HEIGHT				480
#define WIDTH				320
#define HEIGHT				240
//#define WIDTH				160
//#define HEIGHT				120
//#define WIDTH				208
//#define HEIGHT				160
#define FINCR				1
#define FBASE				FRAMERATE
#define	RC_BITRATE			(900*1000)
#define RC_REACTION_DELAY_FACTOR	16
#define RC_AVERAGING_PERIOD		100
#define RC_BUFFER			10
#define	MINQUANTIZER			1
#define	MAXQUANTIZER			31
#define	MAX_KEY_INTERVAL		(10 * FRAMERATE)

/******************  XVID_ENC_FRAME const define ********************/
#define QUANT		0
//#define	COLORSPACE	XVID_CSP_RGB24
#define	COLORSPACE	XVID_CSP_RGB565
#define INTRA		-1
#define GENERAL		XVID_H263QUANT | XVID_HALFPEL | XVID_INTER4V
#define MOTION		PMV_EARLYSTOP16 | PMV_HALFPELREFINE16 | PMV_EARLYSTOP8 | PMV_HALFPELREFINE8


#define HINT_MODE_NONE		0
#define HINT_MODE_GET		1
#define HINT_MODE_SET		2

#define ABS_MAXFRAMENR 			2000
#define BUFFER_SIZE 			(10*WIDTH*HEIGHT)

const int HINTMODE = HINT_MODE_NONE;

/*******************************************************************************
 *xvid encoder initilization
 *enc_handle: if success the void* stores the handle of encoder
 ******************************************************************************/
int xvid_encode_init(void** enc_handle)
{
	int result;
	XVID_INIT_PARAM xinit;
	XVID_ENC_PARAM xparam;

	xinit.cpu_flags = 0;

	xvid_init(NULL, 0, &xinit, NULL);

	xparam.width = WIDTH;
	xparam.height = HEIGHT;

	xparam.fincr = FINCR;
	xparam.fbase = FBASE;
	xparam.rc_reaction_delay_factor = RC_REACTION_DELAY_FACTOR;
	xparam.rc_averaging_period = RC_AVERAGING_PERIOD;
	xparam.rc_buffer = RC_BUFFER;
	xparam.rc_bitrate = RC_BITRATE; 
	xparam.min_quantizer = MINQUANTIZER;
	xparam.max_quantizer = MAXQUANTIZER;
	xparam.max_key_interval = MAX_KEY_INTERVAL;

	result = xvid_encore(NULL, XVID_ENC_CREATE, &xparam, NULL);
	*enc_handle=xparam.handle;

	return result;

}


/*******************************************************************************
 * the function do encode 
 * use the created encoder encode one frame
 * input param: 
 *      enc_handle: encoder handle
 *      image: buffer store data to encode
 *      hints_buffer: used for Motoin Estimation
 * out param:
 *      bitstream: buffer to store frame
 *      streamlength: the frame length
 *      frametype: is a Key frame or not
 *      hints_size: user for Motion Estimation
 ******************************************************************************/
int xvid_encode_do(void * enc_handle, unsigned char* image, \
		unsigned char* bitstream,unsigned char* hints_buffer,\
			long *streamlength, long *frametype, long *hints_size)
{
	int result;

	XVID_ENC_FRAME xframe;
	XVID_ENC_STATS xstats;

	xframe.bitstream = bitstream;
	xframe.length = -1; 

	xframe.image = image;
//	xframe.colorspace = XVID_CSP_RGB24;
	xframe.colorspace = COLORSPACE;

	xframe.intra = -1; 	/* let the codec decide between I-frame (1) and P-frame (0) */

	xframe.quant = QUANT;	/* is quant != 0, use a fixed quant (and ignore bitrate) */

	xframe.motion = MOTION;
	xframe.general = GENERAL;
	xframe.quant_intra_matrix = xframe.quant_inter_matrix = NULL;

	xframe.hint.hintstream = hints_buffer;

	if(HINTMODE == HINT_MODE_SET) {
		xframe.hint.hintlength = *hints_size;
		xframe.hint.rawhints = 0;
		xframe.general |= XVID_HINTEDME_SET;
	}

	if(HINTMODE == HINT_MODE_GET) {
		xframe.hint.rawhints = 0;
		xframe.general |= XVID_HINTEDME_GET;
	}

	result = xvid_encore(enc_handle, XVID_ENC_ENCODE, &xframe, &xstats);

	if(HINTMODE == HINT_MODE_GET)
		*hints_size = xframe.hint.hintlength;

	*frametype = xframe.intra;
	*streamlength = xframe.length;

	return result;

}

/*******************************************************************************
 * destroy the encoder instance
 * enc_handle: the encoder to destroy
 * retrun value:
 *  0 if success ,non_zero error 
 ******************************************************************************/
int xvid_encode_quit(void* enc_handle)
{
	return xvid_encore(enc_handle, XVID_ENC_DESTROY, NULL, NULL);
}


/*******************************************************************************
 *xvid encoder initilization
 *enc_handle: if success the void* stores the handle of encoder
 ******************************************************************************/
int xvid_decode_init(void** dec_handle)
{
	int result;

        XVID_INIT_PARAM xinit;
        XVID_DEC_PARAM xparam;

	xinit.cpu_flags = 0;

        xvid_init(NULL, 0, &xinit, NULL);
        
	xparam.width = WIDTH;
        xparam.height = HEIGHT;

        result = xvid_decore(NULL, XVID_DEC_CREATE, &xparam, NULL);
      
	*dec_handle = xparam.handle;

        return result;
}


/*******************************************************************************
 * the function do decode 
 * decode one frame
 * input param: 
 *      dec_handle: decoder handle
 *      istream: buffer store data to decode
 *      istream_size: size of frame to decode
 * out param:
 *      ostream: buffer to store frame
 *      ostream_size: size of ostream
 ******************************************************************************/
int xvid_decode_do(void* dec_handle, unsigned char *istream,\
		unsigned char *ostream, int istream_size, int *ostream_size)
{
        int xerr;
        XVID_DEC_FRAME xframe;

        xframe.bitstream = istream;
        xframe.length = istream_size;
	xframe.image = ostream;
        xframe.stride = WIDTH;
	if(COLORSPACE == XVID_CSP_RGB24)
		xframe.colorspace = XVID_CSP_RGB24 | XVID_CSP_VFLIP;
	else 
		xframe.colorspace = COLORSPACE;             

	xerr = xvid_decore(dec_handle, XVID_DEC_DECODE, &xframe, NULL);

	*ostream_size = xframe.length;

        return xerr;
}


/*******************************************************************************
 * destroy the decoder instance
 * enc_handle: the decoder to destroy
 * retrun value:
 *  0 if success, non_zero error 
 ******************************************************************************/
int xvid_decode_quit(void* dec_handle)
{
	return xvid_decore(dec_handle, XVID_DEC_DESTROY, NULL, NULL);
}







/***************************** code for test **********************************/

#ifdef XVID_CODEC_TEST
/* Return time elapsed time in miliseconds since the program started */
double msecond()
{	
	clock_t clk;
	clk = clock();
	return (double)clk * 1000 / CLOCKS_PER_SEC;
}


int main_encode(void)
{
//	char* srcfm = "/hdb1/test/rgb565_160x120.data";
//	char* encodefm = "/hdb1/test/rgb565_160x120.m4v";
//	char* srcfm = "/hdb1/test/rgb565_208x160.data";
//	char* encodefm = "/hdb1/test/rgb565_208x160.m4v";
	char* srcfm = "/hdb1/test/rgb565_320x240.data";
	char* encodefm = "/hdb1/test/rgb565_320x240.m4v";
//	char* srcfm = "/hdb1/test/rgb565_640x480.data";
//	char* encodefm = "/hdb1/test/encode_rgb565_640x480.m4v";
	FILE* srcfile;
	FILE* encodefile;
	unsigned char* src_buffer;
	unsigned char* mp4_buffer;
	unsigned char* hint_buffer;
	void* enc_handle = NULL;
	long totalsize;
	long hint_size = 0;
	long frame_type;
	int result;
	long m4v_size;
	int filenr = 0;
	double enctime;
	double totalenctime=0.;

	srcfile  = fopen(srcfm, "r");
	if (srcfile == NULL) 
	{
		fprintf(stderr, "Error opening input file %s\n", encodefile);
		goto release_all;
	}

	encodefile  = fopen(encodefm, "w");
	if (srcfile == NULL) 
	{
		fprintf(stderr, "Error opening input file %s\n", encodefile);
		goto release_all;
	}

//	src_buffer = (unsigned char *) malloc(HEIGHT*WIDTH*3);
	src_buffer = (unsigned char *) malloc(HEIGHT*WIDTH*COLOR_DEPTH/8);
	if (!src_buffer)
	{
		fprintf(stderr, "malloc error!\n");
		goto release_all;
	}

	/* this should really be enough memory ! */
//	mp4_buffer = (unsigned char *) malloc(HEIGHT*WIDTH*3*2);
	mp4_buffer = (unsigned char *) malloc(HEIGHT*WIDTH*COLOR_DEPTH/8*2);
	if (!mp4_buffer)
	{
		fprintf(stderr, "malloc error!\n");
		goto release_all;
	}
	
//	hint_buffer = (unsigned char*) malloc(HEIGHT*WIDTH*3*2);
	hint_buffer = (unsigned char*) malloc(HEIGHT*WIDTH*COLOR_DEPTH/8*2);
	if(!hint_buffer)
	{
		fprintf(stderr, "malloc hint_buffer error!\n");
		goto release_all;
	}

//init encoder
	result = xvid_encode_init(&enc_handle);
	if(enc_handle == NULL)
	{
		fprintf(stderr, "enc_handle NULL %d\n");
		goto release_all;
	}
	if (result)    
	{ 
		fprintf(stderr, "Encore INIT problem, return value %d\n", result);
		goto release_all;
	}


/*********************** Encoding loop *************************************/
	totalsize = 0;
	do {

//		fread(src_buffer, 1, HEIGHT*WIDTH*3, srcfile);
		fread(src_buffer, 1, HEIGHT*WIDTH*COLOR_DEPTH/8, srcfile);

/*********************** Encode and decode this frame **********************/
		enctime = msecond();
		result = xvid_encode_do(enc_handle ,src_buffer, mp4_buffer, hint_buffer,
						  &m4v_size, &frame_type, &hint_size);
		enctime = msecond() - enctime;

		totalenctime += enctime;
		totalsize += m4v_size;

		printf("Frame %5d: intra %1d, enctime=%6.1f ms, size=%6dbytes\n",
			   (int)filenr, (int)frame_type, (float)enctime, (int)m4v_size);

		/* Write mp4 data */
		fwrite(mp4_buffer, m4v_size, 1, encodefile);

		filenr++;

	} while (!feof(srcfile));
	
      
/******** Calculate totals and averages for output, print results *********/

	totalsize    /= filenr;
	totalenctime /= filenr;

	printf("Avg: enctime %5.2f ms, %5.2f fps, filesize %7d bytes\n",
		   totalenctime, 1000/totalenctime, (int)totalsize);
	
 release_all:
	if (enc_handle)
	{	
		result = xvid_encode_quit(enc_handle);
		if (result)    
			fprintf(stderr, "Encore RELEASE problem return value %d\n", result);
	}

	if(srcfile)
		fclose(srcfile);
	if(encodefile)
		fclose(encodefile);

 free_all_memory:
	free(mp4_buffer);
	free(src_buffer);
	free(hint_buffer);
	return 0;
}




int main_decode(void)
{

	/* max number of frames */

//	static char *ARG_INPUTFILE = "/hdb1/test/encode_rgb24_320x240.m4v";
	static char *ARG_OUTPUTFILE = "/hdb1/test/rgb24_320x240.dec";
	static char *ARG_INPUTFILE = "/hdb1/test/rgb565_320x240.m4v";
//	static char *ARG_OUTPUTFILE = "/hdb1/test/rgb565_320x240.dec";
//	static char *ARG_INPUTFILE = "/hdb1/test/rgb565_160x120.m4v";
//	static char *ARG_OUTPUTFILE = "/hdb1/test/rgb565_160x120.dec";
//	static char *ARG_INPUTFILE = "/hdb1/test/rgb565_208x160.m4v";
//	static char *ARG_OUTPUTFILE = "/hdb1/test/rgb565_208x160.dec";
	void *dec_handle = NULL;

	char* filepath = "./";
	unsigned char *mp4_buffer = NULL;
	unsigned char *mp4_ptr    = NULL;
	unsigned char *out_buffer = NULL;
	int bigendian = 0;

	double totaldectime;
  
	long totalsize;
	int status;
  
	int use_assembler = 0;
  
	char filename[256];
  
	FILE *in_file;
	FILE *out_file; 
	int filenr;
	int i = 0;


	in_file = fopen(ARG_INPUTFILE, "rb");
	if (in_file == NULL) {
		fprintf(stderr, "Error opening input file %s\n", ARG_INPUTFILE);
		return -1;
	}

	out_file = fopen(ARG_OUTPUTFILE, "w");
	if(out_file == NULL)
	{
		fprintf(stderr, "Error opening input file %s\n", ARG_INPUTFILE);
		return -1;
	}

/*****************************************************************************
 *        Memory allocation
 ****************************************************************************/

	/* Memory for encoded mp4 stream */
	mp4_buffer = (unsigned char *) malloc(BUFFER_SIZE);
	mp4_ptr = mp4_buffer;
	if (!mp4_buffer)
		goto free_all_memory;	
    
	/* Memory for frame output */
	out_buffer = (unsigned char *) malloc(WIDTH*HEIGHT*4);
	if (!out_buffer)
		goto free_all_memory;	


/*****************************************************************************
 *        XviD PART  Start
 ****************************************************************************/

//	status = dec_init(&dec_handle);
	status = xvid_decode_init(&dec_handle);
	if (status) {
		fprintf(stderr,
			"Decore INIT problem, return value %d\n", status);
		goto release_all;
	}


/*****************************************************************************
 *	                         Main loop
 ****************************************************************************/

	fread(mp4_buffer, BUFFER_SIZE, 1, in_file);

	totaldectime = 0;
	totalsize = 0;
	filenr = 0;
	mp4_ptr = mp4_buffer;

	do {

		int mp4_size = (mp4_buffer + BUFFER_SIZE - mp4_ptr);
		int used_bytes = 0;
		double dectime;

		/* Read data from input file */
			/* Real raw stream */

			/* buffer more than half empty -> Fill it */
			if (mp4_ptr > mp4_buffer + BUFFER_SIZE/2) {
				int rest = (mp4_buffer + BUFFER_SIZE - mp4_ptr);

				/* Move data if needed */
				if (rest)
					memcpy(mp4_buffer, mp4_ptr, rest);

				/* Update mp4_ptr */
				mp4_ptr = mp4_buffer; 

				/* read new data */
				if(feof(in_file))
					break;
				fread(mp4_buffer + rest, BUFFER_SIZE - rest, 1, in_file);

			}


		/* Decode frame */
		dectime = msecond();
//		status = dec_main(mp4_ptr, out_buffer, mp4_size, &used_bytes);
		status = xvid_decode_do(dec_handle, mp4_ptr, out_buffer, mp4_size, &used_bytes);
		dectime = msecond() - dectime;

		if (status) {
			break;
		}

		/*
		 * Only needed for real raw stream, mp4u uses
		 * mp4_ptr = mp4_buffer for each frame 
		 */
		mp4_ptr += used_bytes;

		/* Updated data */
		totalsize += used_bytes;
		totaldectime += dectime;
      
		/* Prints some decoding stats */
		printf("Frame %5d: dectime =%6.1f ms length=%7d bytes \n", 
		       filenr, dectime, used_bytes);

		/* Save output frame if required */
			fwrite(out_buffer, 1, WIDTH*HEIGHT*COLOR_DEPTH/8, out_file);

		filenr++;

	} while ( (status>=0) && (filenr<=1000) );
//	} while ( (status>=0) && (filenr<ABS_MAXFRAMENR) );

      
//      Calculate totals and averages for output, print results

	totalsize    /= filenr;
	totaldectime /= filenr;
	
	printf("Avg: dectime %5.2f ms, %5.2f fps, mp4 stream size =%d\n",
		totaldectime, 1000/totaldectime, (int)totalsize);
		
//      XviD PART  Stop

 release_all:
  	if (dec_handle) {
//	  	status = dec_stop();
	  	status = xvid_decode_quit(dec_handle);
		if (status)    
			fprintf(stderr, "decore RELEASE problem return value %d\n", status);
	}
	fclose(out_file);

 free_all_memory:
	free(out_buffer);
	free(mp4_buffer);

	return 0;

}


int main(int argc, char** argv)
{
	printf("now exec encode\n");
	main_encode();
	
	printf("exec encode OK!\n now exec decode\n");
	main_decode();
	printf("exec decode OK!\n");
	return 0;
}


#endif 		//XVID_CODEC_TEST
xvid_codec.h (text/x-chdr, 542 B)
#ifndef __XVID_CODEC_H
#define __XVID_CODEC_H

int xvid_encode_init(void** enc_handle);
int xvid_encode_do(void * enc_handle, unsigned char* image, \
		unsigned char* bitstream, unsigned char* hints_buffer,\
		long *streamlength, long *frametype, long *hints_size);
int xvid_encode_quit(void* enc_handle);

int xvid_decode_init(void** dec_hangle);
int xvid_decode_do(void* dec_handle, unsigned char *istream, \
		unsigned char *ostream, int istream_size, int *ostream_size);
int xvid_decode_quit(void* dec_handle);
#endif 	//__XVID_CODEC_H
intel_PIII-1000MHz.txt (text/plain, 4.2 KB)
now exec encode
Frame     0: intra 1, enctime=  60.0 ms, size= 10675bytes
Frame     1: intra 0, enctime=  60.0 ms, size=  5299bytes
Frame     2: intra 0, enctime=  60.0 ms, size=  3187bytes
rame    44: intra 0, enctime=  50.0 ms, size=  5186bytes
Frame    45: intra 0, enctime=  40.0 ms, size=  2395bytes
Frame    46: intra 0, enctime= 100.0 ms, size=  5434bytes
Frame    47: intra 0, enctime=  40.0 ms, size=  2293bytes
Frame    48: intra 0, enctime=  90.0 ms, size=  5347bytes
Frame    49: intra 0, enctime=  50.0 ms, size=  4709bytes
Frame    50: intra 0, enctime=  50.0 ms, size=  4988bytes
Frame    51: intra 0, enctime=  50.0 ms, size=  2292bytes
Frame    52: intra 0, enctime= 100.0 ms, size=  5056bytes
Frame    53: intra 0, enctime=  50.0 ms, size=  4727bytes
Frame    54: intra 0, enctime=  90.0 ms, size=  4977bytes
Frame    55: intra 0, enctime=  50.0 ms, size=  4802bytes
Frame    56: intra 0, enctime=  70.0 ms, size=  2373bytes
Frame    57: intra 0, enctime=  50.0 ms, size=  5094bytes
Frame    58: intra 0, enctime= 100.0 ms, size=  4731bytes
Frame    59: intra 0, enctime=  40.0 ms, size=  4775bytes
Frame    60: intra 0, enctime=  60.0 ms, size=  4864bytes
Frame    61: intra 0, enctime=  50.0 ms, size=  4662bytes
Frame    62: intra 0, enctime=  70.0 ms, size=  2402bytes
Frame    63: intra 0, enctime=  40.0 ms, size=  5088bytes
Frame    64: intra 0, enctime=  90.0 ms, size=  4929bytes
Frame    65: intra 0, enctime=  50.0 ms, size=  4752bytes
rame   761: intra 0, enctime=  50.0 ms, size=  3590bytes
Frame   762: intra 0, enctime= 100.0 ms, size=  4654bytes
Frame   763: intra 0, enctime=  60.0 ms, size=  3548bytes
Frame   764: intra 0, enctime= 100.0 ms, size=  6009bytes
Frame   765: intra 0, enctime=  60.0 ms, size=  4009bytes
Frame   766: intra 0, enctime=  90.0 ms, size=  6594bytes
Frame   767: intra 0, enctime=  60.0 ms, size=  5369bytes
Frame   768: intra 0, enctime= 100.0 ms, size=  3535bytes
rame   999: intra 0, enctime=  50.0 ms, size=  6364bytes
Frame  1000: intra 0, enctime=  40.0 ms, size=    51bytes
Avg: enctime 67.25 ms, 14.87 fps, filesize    4500 bytes
exec encode OK!
 now exec decode
Frame     0: dectime =  10.0 ms length=  10670 bytes 
Frame     1: dectime =  10.0 ms length=   5299 bytes 
Frame     2: dectime =   0.0 ms length=   3187 bytes 
Frame     3: dectime =  10.0 ms length=   2077 bytes 
Frame     4: dectime =  10.0 ms length=   3179 bytes 
Frame     5: dectime =  10.0 ms length=   1881 bytes 
Frame     6: dectime =  10.0 ms length=   2875 bytes 
Frame     7: dectime =   0.0 ms length=   3149 bytes 
Frame     8: dectime =  10.0 ms length=   2625 bytes 
Frame     9: dectime =  10.0 ms length=   6337 bytes 
rame   317: dectime =   0.0 ms length=   5193 bytes 
Frame   318: dectime =   0.0 ms length=   5342 bytes 
Frame   319: dectime =   0.0 ms length=   4932 bytes 
Frame   320: dectime =   0.0 ms length=   2298 bytes 
Frame   321: dectime =  10.0 ms length=   5543 bytes 
Frame   322: dectime =  10.0 ms length=   4644 bytes 
Frame   323: dectime =  10.0 ms length=   4852 bytes 
Frame   324: dectime =  10.0 ms length=   4755 bytes 
Frame   325: dectime =  10.0 ms length=   2402 bytes 
Frame   326: dectime = 130.0 ms length=   5067 bytes 
Frame   327: dectime = 460.0 ms length=   4730 bytes 
Frame   328: dectime = 410.0 ms length=   4879 bytes 
Frame   329: dectime = 460.0 ms length=   4858 bytes 
Frame   330: dectime = 400.0 ms length=   4865 bytes 
Frame   331: dectime = 390.0 ms length=   2615 bytes 
Frame   332: dectime = 390.0 ms length=   5275 bytes 
Frame   333: dectime = 460.0 ms length=   4571 bytes 
Frame   334: dectime = 440.0 ms length=   4764 bytes 
Frame   335: dectime = 450.0 ms length=   4661 bytes 
Frame   336: dectime = 170.0 ms length=   2351 bytes 
Frame   337: dectime = 460.0 ms length=   4920 bytes 
Frame   338: dectime = 350.0 ms length=   4553 bytes 
Frame   339: dectime = 440.0 ms length=   4563 bytes 
Frame   340: dectime = 140.0 ms length=   4756 bytes 
Frame   341: dectime =  10.0 ms length=   4621 bytes 
Frame   342: dectime =  10.0 ms length=   4623 bytes 
rame   940: dectime =  10.0 ms length=   2121 bytes 
Frame   941: dectime =  10.0 ms length=   5892 bytes 
Avg: dectime 32.31 ms, 30.95 fps, mp4 stream size =4502
exec decode OK!
via_c3_500MHz.txt (text/plain, 2.5 KB)
now exec encode
Frame     0: intra 1, enctime=  30.0 ms, size= 10666bytes
Frame     1: intra 0, enctime=  70.0 ms, size=  5297bytes
Frame     2: intra 0, enctime=  60.0 ms, size=  3193bytes
Frame    31: intra 0, enctime=  50.0 ms, size=  2350bytes
Frame    32: intra 0, enctime=  50.0 ms, size=  5699bytes
Frame    33: intra 0, enctime=  50.0 ms, size=  2293bytes
Frame    34: intra 0, enctime= 110.0 ms, size=  5837bytes
Frame    35: intra 0, enctime=  50.0 ms, size=  5248bytes
Frame    36: intra 0, enctime=  40.0 ms, size=  2483bytes
Frame    37: intra 0, enctime= 100.0 ms, size=  5706bytes
Frame    38: intra 0, enctime=  50.0 ms, size=  5289bytes
Frame    39: intra 0, enctime=  50.0 ms, size=  2365bytes
Frame    40: intra 0, enctime=  50.0 ms, size=  4164bytes
Frame    41: intra 0, enctime=  50.0 ms, size=  6209bytes
Frame    42: intra 0, enctime=  50.0 ms, size=  3577bytes
Frame    43: intra 0, enctime= 110.0 ms, size=  5639bytes
Frame    44: intra 0, enctime=  50.0 ms, size=  5140bytes
Frame    45: intra 0, enctime=  50.0 ms, size=  2389bytes
Frame    46: intra 0, enctime=  50.0 ms, size=  5402bytes
Frame    47: intra 0, enctime= 100.0 ms, size=  2314bytes
Frame    48: intra 0, enctime=  50.0 ms, size=  5355bytes
Frame    49: intra 0, enctime= 100.0 ms, size=  4705bytes
Frame    50: intra 0, enctime=  50.0 ms, size=  5017bytes
Frame    51: intra 0, enctime=  40.0 ms, size=  2255bytes
Frame    52: intra 0, enctime=  50.0 ms, size=  5060bytes
Frame    53: intra 0, enctime=  50.0 ms, size=  4718bytes
Frame    54: intra 0, enctime=  50.0 ms, size=  4935bytes
Frame    55: intra 0, enctime=  50.0 ms, size=  4793bytes
rame   999: intra 0, enctime=  50.0 ms, size=  3211bytes
Frame  1000: intra 1, enctime=  40.0 ms, size= 13857bytes
Avg: enctime 66.75 ms, 14.98 fps, filesize    4512 bytes
exec encode OK!
 now exec decode
Frame     0: dectime =  30.0 ms length=  10661 bytes 
Frame     1: dectime =  30.0 ms length=   5297 bytes 
rame   658: dectime =  50.0 ms length=   3358 bytes 
Frame   659: dectime =  80.0 ms length=   5781 bytes 
rame   935: dectime =  30.0 ms length=   6216 bytes 
Frame   936: dectime =  30.0 ms length=   5164 bytes 
Frame   937: dectime =  20.0 ms length=   3123 bytes 
Frame   938: dectime =  30.0 ms length=   5905 bytes 
Frame   939: dectime =  20.0 ms length=   2226 bytes 
Frame   940: dectime =  20.0 ms length=   3698 bytes 
Frame   941: dectime =  20.0 ms length=   2828 bytes 
Frame   942: dectime =  20.0 ms length=   6021 bytes 
Avg: dectime 22.95 ms, 43.58 fps, mp4 stream size =4502
exec decode OK!
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.