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

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

?? multi_enc.c

?? 用VC++實現的MPEG4視頻編碼和視頻解碼,很好用的
?? C
字號:
/************************************************************************ *                                                                      * *多重編碼結構:
  通過標準輸入格式讀入一系列已編碼(PGm編碼)的YUV圖片,
  利用DIVX CODEC進行編碼并寫入按一定幀率寫入指定文件中  
 ************************************************************************/#include <stdio.h>#include <malloc.h>#include <stdlib.h>#include "encore.h"#define MY_APP_ID 0x0815			// doesn't matter#define XDIM 320#define YDIM 240#define BUFFERSIZE 1512000		// This should be more than enough for 1 frame#define MAXFILENR 200				// number of framesstatic float RGBYUV02990[256], RGBYUV05870[256], RGBYUV01140[256];
static float RGBYUV01684[256], RGBYUV03316[256];
static float RGBYUV04187[256], RGBYUV00813[256];
#   define  MAX(a,b)              (((a) > (b)) ? (a) : (b))
#   define  CLIP(a,i,s)           (((a) > (s)) ? (s) : MAX(a,i))
/************************************************************************
 *
 *  int RGB2YUV (int x_dim, int y_dim, void *bmp, YUV *yuv)
 *
 *	Purpose :	It takes a 24-bit RGB bitmap and convert it into
 *				YUV (4:2:0) format
 *
 *  Input :		x_dim	the x dimension of the bitmap
 *				y_dim	the y dimension of the bitmap
 *				bmp		pointer to the buffer of the bitmap
 *				yuv		pointer to the YUV structure
 *
 *  Output :	0		OK
 *				1		wrong dimension
 *				2		memory allocation error
 *
 *	Side Effect :
 *				None
************************************************************************/

void InitLookupTable()
{
	int i;

	for (i = 0; i < 256; i++) RGBYUV02990[i] = (float)0.2990 * i;
	for (i = 0; i < 256; i++) RGBYUV05870[i] = (float)0.5870 * i;
	for (i = 0; i < 256; i++) RGBYUV01140[i] = (float)0.1140 * i;
	for (i = 0; i < 256; i++) RGBYUV01684[i] = (float)0.1684 * i;
	for (i = 0; i < 256; i++) RGBYUV03316[i] = (float)0.3316 * i;
	for (i = 0; i < 256; i++) RGBYUV04187[i] = (float)0.4187 * i;
	for (i = 0; i < 256; i++) RGBYUV00813[i] = (float)0.0813 * i;
}

int convertRGB (void *bmp, void *yuv, long type, long x_dim, long y_dim)
{
	static int init_done = 0;

	long i, j, size, stride;
	unsigned char *r, *g, *b;
	unsigned char *y, *u, *v;
	unsigned char *pu1, *pu2, *pv1, *pv2, *psu, *psv;
	unsigned char *y_buffer, *u_buffer, *v_buffer;
	unsigned char *sub_u_buf, *sub_v_buf;

	if (init_done == 0)
	{
		InitLookupTable();
		init_done = 1;
	}

	// check to see if x_dim and y_dim are divisible by 2
	if ((x_dim % 2) || (y_dim % 2)) return 1;
	size = x_dim * y_dim;

	if (type == 17) stride = 3;
	else if (type == 18) stride = 4;

	// allocate memory
	y_buffer = (unsigned char *)yuv;
	sub_u_buf = y_buffer + size;
	sub_v_buf = y_buffer + size * 5 / 4;
	u_buffer = (unsigned char *)malloc(size * sizeof(unsigned char));
	v_buffer = (unsigned char *)malloc(size * sizeof(unsigned char));
	if (!(u_buffer && v_buffer))
	{
		if (u_buffer) free(u_buffer);
		if (v_buffer) free(v_buffer);
		return 2;
	}

	b = (unsigned char *)bmp;
	y = y_buffer;
	u = u_buffer;
	v = v_buffer;

	// convert RGB to YUV
	for (j = 0; j < y_dim; j ++)
	{
		y = y_buffer + (y_dim - j - 1) * x_dim;
		u = u_buffer + (y_dim - j - 1) * x_dim;
		v = v_buffer + (y_dim - j - 1) * x_dim;

		for (i = 0; i < x_dim; i ++) {
			g = b + 1;
			r = b + 2;
			*y = (unsigned char)CLIP ((  RGBYUV02990[*r] + RGBYUV05870[*g] + RGBYUV01140[*b]),       0, 255.f);
			*u = (unsigned char)CLIP ((- RGBYUV01684[*r] - RGBYUV03316[*g] + (*b)/2          + 128), 0, 255.f);
			*v = (unsigned char)CLIP ((  (*r)/2          - RGBYUV04187[*g] - RGBYUV00813[*b] + 128), 0, 255.f);
			b += stride;
			y ++;
			u ++;
			v ++;
		}
	}

	// subsample UV
	for (j = 0; j < y_dim/2; j ++)
	{
		psu = sub_u_buf + j * x_dim / 2;
		psv = sub_v_buf + j * x_dim / 2;
		pu1 = u_buffer + 2 * j * x_dim;
		pu2 = u_buffer + (2 * j + 1) * x_dim;
		pv1 = v_buffer + 2 * j * x_dim;
		pv2 = v_buffer + (2 * j + 1) * x_dim;
		for (i = 0; i < x_dim/2; i ++)
		{
			*psu = (*pu1 + *(pu1+1) + *pu2 + *(pu2+1)) / 4;
			*psv = (*pv1 + *(pv1+1) + *pv2 + *(pv2+1)) / 4;
			psu ++;
			psv ++;
			pu1 += 2;
			pu2 += 2;
			pv1 += 2;
			pv2 += 2;
		}
	}

	free(u_buffer);
	free(v_buffer);

	return 0;
}
int main(){
	FILE *f_in;	char *bmp_buffer;
	char *divx_buffer;  	char *yuv_buffer;	char *in_buffer[3];
		int status;   int frame_size;	FILE* filehandle;   int	filenr;   char 	filename[80];         ENC_PARAM enc_param;   ENC_FRAME enc_frame;   ENC_RESULT enc_result;   frame_size = XDIM*YDIM + XDIM/2*YDIM/2 + XDIM/2*YDIM/2;		// full Y, subsamples U,V/* ...skip check for malloc failure... don't do that in application!!! */   bmp_buffer=(char*) malloc(3*XDIM*YDIM);   yuv_buffer=(char*) malloc(frame_size);   divx_buffer=(char*) malloc(BUFFERSIZE);	/*********************************************************************//*                            DIVX PART  Start                       *//*********************************************************************//* Init the encoder */    enc_param.x_dim = XDIM;     enc_param.y_dim = YDIM;    enc_param.framerate = 24.0;    enc_param.bitrate = 900000;    enc_param.rc_period = 300; //2000;     enc_param.rc_reaction_period = 10;    enc_param.rc_reaction_ratio = 20;    enc_param.search_range = 128; //128;				    enc_param.max_quantizer = 15;    enc_param.min_quantizer = 2;//1;    	// these setting are explained in the              							// "Encoder"-forum at www.projectmayo.com    status = encore(MY_APP_ID, ENC_OPT_INIT, &enc_param, NULL);	 fprintf(stderr,"Encore INIT return %d\n",status);/*********************************************************************//*                            Main Part                              *//*********************************************************************/	for (filenr=1;filenr<MAXFILENR;filenr++)		// main loop over frames	{///* read raw YUV from stdin */    sprintf(filename,"bmp%05d.bmp",filenr);
	f_in=fopen(filename,"rb");	    fseek(f_in,54L,0);			// skip PGM header, we don't need it here	fread(bmp_buffer,XDIM,YDIM*3,f_in);	// read YUV-data	fclose(f_in);/* Encode one frame */	in_buffer[0]=yuv_buffer;
	in_buffer[1]=yuv_buffer + XDIM*YDIM;
	in_buffer[2]=yuv_buffer + XDIM*YDIM + XDIM/2*YDIM/2;
	convertRGB (bmp_buffer, yuv_buffer, 17, XDIM, YDIM);
	   enc_frame.image       = (void *) yuv_buffer;   enc_frame.bitstream   = (void *) divx_buffer;   enc_frame.length      = 0;							// will be filled by routine   status = encore(MY_APP_ID, ENC_OPT_WRITE, &enc_frame, &enc_result);				//   fprintf(stderr,"Frame %d:\nEncore ENCODE return %d, divx-stream length=%ld bytes\n",filenr,status,enc_frame.length);//  fprintf(stderr,"Encore RESULT IsKeyFrame=%d\n",enc_result.isKeyFrame);/* Write encoded data to stdout */	sprintf(filename,"frame%05d.divx",filenr);   filehandle = fopen(filename,"wb");   if (!filehandle)    {	fprintf(stderr,"Error writing file!\n"); return 2; }	fwrite(divx_buffer,1,enc_frame.length,filehandle);    fclose(filehandle);	}		// end of for-loop over all frames   /*********************************************************************//*                            DIVX PART  Stop                        *//*********************************************************************//* Stop the encoder */   status = encore(MY_APP_ID, ENC_OPT_RELEASE, &enc_frame, NULL);							// END Encoding	fprintf(stderr,"Encore RELEASE return %d\n",status);		free(divx_buffer);	free(yuv_buffer);   	free(bmp_buffer);
		return 0;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美综合亚洲图片综合区| 91片在线免费观看| 一区二区三区中文字幕电影| 精品国产乱码久久久久久牛牛| 欧美日韩在线播放| 欧美日韩另类国产亚洲欧美一级| 色综合一个色综合| 欧日韩精品视频| 欧洲激情一区二区| 69成人精品免费视频| 欧美日本精品一区二区三区| 欧美午夜精品电影| 欧美日韩免费高清一区色橹橹| 欧美午夜在线观看| 91精品国模一区二区三区| 欧美三区在线观看| 日韩一二三区视频| 久久久国际精品| 国产欧美一区二区三区在线看蜜臀| 国产日产亚洲精品系列| 中文字幕巨乱亚洲| 夜夜夜精品看看| 美女一区二区久久| 国产盗摄女厕一区二区三区 | 99久久99久久精品免费观看| 91视频国产资源| 欧美日韩亚洲综合在线| 69久久99精品久久久久婷婷| 26uuu久久天堂性欧美| 中文字幕中文在线不卡住| 亚洲国产成人精品视频| 久久精品国产精品亚洲红杏| 国产99久久久国产精品免费看| 色综合天天综合| 欧美一区二区性放荡片| 中文字幕成人av| 亚洲www啪成人一区二区麻豆| 日韩经典一区二区| 成人av电影在线观看| 欧美性视频一区二区三区| 精品伦理精品一区| 一区二区三区日韩在线观看| 久久精品国产77777蜜臀| 色综合久久综合网欧美综合网| 777xxx欧美| 中文字幕一区av| 久久精品免费观看| 色999日韩国产欧美一区二区| 91精品国产综合久久久久久久| 欧美国产一区二区| 美女在线视频一区| 欧美三级三级三级爽爽爽| 国产日本欧美一区二区| 久久电影国产免费久久电影| 色综合欧美在线视频区| 中文乱码免费一区二区| 国内精品国产成人| 91精品国产色综合久久不卡蜜臀| 亚洲免费观看高清完整版在线观看| 精品一区二区三区蜜桃| 欧美日韩三级在线| 亚洲精品成人天堂一二三| 国产成人av电影免费在线观看| 欧美一区二区三区免费观看视频| 亚洲欧美国产77777| 东方aⅴ免费观看久久av| 欧美精品一区二区三区很污很色的 | 综合中文字幕亚洲| 国产精品自在欧美一区| 欧美电影免费观看完整版| 亚洲mv大片欧洲mv大片精品| 91精彩视频在线观看| 国产精品成人免费在线| 成人做爰69片免费看网站| 久久综合九色综合久久久精品综合| 青青草91视频| 欧美va亚洲va香蕉在线| 久色婷婷小香蕉久久| 精品国产一区久久| 美女视频第一区二区三区免费观看网站 | 欧美不卡一区二区| 精品无码三级在线观看视频 | 狠狠久久亚洲欧美| 欧美精品一区二| 国产激情一区二区三区| 欧美国产一区二区| 色综合激情久久| 亚洲国产视频一区| 日韩视频免费观看高清完整版| 日韩一区精品字幕| 欧美精品一区二区三区在线| 黑人精品欧美一区二区蜜桃| 国产日韩欧美精品一区| 成人精品免费视频| 亚洲电影在线播放| 日韩欧美国产电影| 成人免费毛片app| 国产精品成人免费| 欧美图区在线视频| 日韩二区三区四区| 国产日韩一级二级三级| 99精品国产视频| 午夜精品久久久久久不卡8050| 日韩欧美一级二级| 成人精品鲁一区一区二区| 亚洲人成小说网站色在线| 日本韩国一区二区| 蜜臀av在线播放一区二区三区| 久久久亚洲午夜电影| 色婷婷综合久久久久中文一区二区 | 欧美日本一道本在线视频| 久久99精品国产91久久来源 | 97成人超碰视| 日韩av在线播放中文字幕| 久久综合色8888| 欧美三级日韩在线| 国产麻豆欧美日韩一区| 亚洲地区一二三色| 亚洲国产激情av| 欧美日韩一级二级| 99在线精品观看| 日本v片在线高清不卡在线观看| 欧美激情艳妇裸体舞| 在线综合亚洲欧美在线视频| av中文字幕一区| 极品少妇一区二区三区精品视频 | 色悠久久久久综合欧美99| 久久精品国产一区二区三| 伊人性伊人情综合网| 久久无码av三级| 91精品国产91综合久久蜜臀| 白白色亚洲国产精品| 日韩激情一区二区| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美丝袜自拍制服另类| 国产成人午夜精品5599| 日本一区中文字幕| 亚洲第一av色| 夜夜揉揉日日人人青青一国产精品| 久久色视频免费观看| 日韩三级视频中文字幕| 欧美日韩免费高清一区色橹橹| 99国产欧美另类久久久精品| 国产精品 欧美精品| 国产在线国偷精品产拍免费yy| 午夜精品福利一区二区蜜股av| 亚洲日本免费电影| 中文字幕成人在线观看| 国产亚洲欧美一区在线观看| 日韩一级免费观看| 欧美一区二视频| 欧美日本视频在线| 欧美精品精品一区| 欧美一a一片一级一片| 99精品国产91久久久久久 | 亚洲免费在线视频| 亚洲欧洲制服丝袜| 亚洲人成7777| 亚洲国产精品天堂| 亚洲图片欧美色图| 偷拍日韩校园综合在线| 美女高潮久久久| 美女任你摸久久| 激情文学综合网| 国产一区二区久久| 成人午夜视频在线观看| 99re视频精品| 日本高清不卡一区| 欧美日韩成人综合天天影院| 欧美视频一区二区| 欧美一区二区三区在线观看 | av一本久道久久综合久久鬼色| 大桥未久av一区二区三区中文| 懂色av噜噜一区二区三区av| av动漫一区二区| 欧美日韩一区国产| 久久亚洲精华国产精华液| 国产精品女主播av| 亚洲国产精品人人做人人爽| 视频一区二区三区入口| 国产精品一区二区三区乱码 | 一区二区久久久久久| 日韩中文字幕一区二区三区| 麻豆国产精品官网| 国产91露脸合集magnet| 日本高清无吗v一区| 精品国产免费一区二区三区四区| 国产日本欧洲亚洲| 亚洲国产aⅴ成人精品无吗| 极品尤物av久久免费看| 色综合天天狠狠| 2020日本不卡一区二区视频| 亚洲欧美日韩成人高清在线一区| 亚洲第一福利一区| 国产成人精品亚洲日本在线桃色 | 天涯成人国产亚洲精品一区av| 久久99久久99| 在线看国产一区二区| 国产欧美一区二区精品久导航| 一区二区三区在线视频免费|