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

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

?? test_enc_suc.c

?? MPEG4編碼和解碼程序
?? C
字號:

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>

#include "encore.h"

#define MY_APP_ID 0x0815			// doesn't matter

#define XDIM 600
#define YDIM 400
#define BUFFERSIZE 1512000		// This should be more than enough for 1 frame

static 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_out;
	FILE* f_in;
	//char *in_buffer[3];
	//char bmp_buffer[]=(char*)malloc(3*XDIM*YDIM);
	//char divx_buffer[]=(char*)malloc(BUFFERSIZE);  
	//char yuv_buffer[XDIM*YDIM + XDIM/2*YDIM/2 + XDIM/2*YDIM/2];
  
	char *in_buffer[3];
	char *bmp_buffer;
	char *divx_buffer;  
	char *yuv_buffer;
  
	int status;
   int frame_size;
   
   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!!! */

   if((!(yuv_buffer=(char*) malloc(frame_size)))||
   !(bmp_buffer=(char*) malloc(3*XDIM*YDIM))||
   !(divx_buffer=(char*) malloc(BUFFERSIZE))
   )return 11;		

/*********************************************************************/
/*                            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 = 2000; 
    enc_param.rc_reaction_period = 10;
    enc_param.rc_reaction_ratio = 20;
    enc_param.search_range = 128;				

    enc_param.max_quantizer = 15;
    enc_param.min_quantizer = 2;    		// these setting are not
    						// important for a single file	
	if((f_in=fopen("win2k.raw","rb"))==0)     //open a file of bmp raw data 
	{
	//	printf("Can't open file bmp.raw to read!");
		exit(0);
	}
	if((f_out=fopen("win2k.div","wb"))==0)
	{
		printf("Can't open file to write!");
		exit(0);
	}

    status = encore(MY_APP_ID, ENC_OPT_INIT, &enc_param, NULL);
	 printf("Encore INIT return %d\n",status);

/*********************************************************************/
/*                            Main Part                              */
/*********************************************************************/

/* read raw RGB from stdin */
	
	fread(bmp_buffer,XDIM,3*YDIM,f_in);
	fclose(f_in);
	
/* convert raw RGB to YUV 4:2:0, that encore()-input format */

	in_buffer[0]=yuv_buffer;
	in_buffer[1]=yuv_buffer + XDIM*YDIM;
	in_buffer[2]=yuv_buffer + XDIM*YDIM + XDIM/2*YDIM/2;
  
  	//RGB2YUV(XDIM,YDIM,bmp_buffer,in_buffer[0],in_buffer[1],in_buffer[2], 0) ; 
	convertRGB (bmp_buffer, yuv_buffer, 17, XDIM, YDIM);

/* Encode one frame */

   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);				

   printf("Encore ENCODE return %d, divx-stream length=%ld bytes\n",status,enc_frame.length);
   printf("Encore RESULT IsKeyFrame=%d\n",enc_result.isKeyFrame);

/* Write encoded data to stdout */

	fwrite(divx_buffer,1,enc_frame.length,f_out);
	fclose(f_out);

/*********************************************************************/
/*                            DIVX PART  Stop                        */
/*********************************************************************/

/* Stop the encoder */

   status = encore(MY_APP_ID, ENC_OPT_RELEASE, &enc_frame, NULL);							// END Encoding
	printf("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一区二区三区免费野_久草精品视频
欧美性受极品xxxx喷水| 五月天一区二区三区| 日韩电影在线观看一区| 成人精品在线视频观看| 日韩亚洲欧美在线| 一区二区三区久久| 成人一区二区三区视频在线观看| 欧美自拍丝袜亚洲| 国产精品不卡在线观看| 美国毛片一区二区| 久久蜜桃av一区精品变态类天堂 | 99视频一区二区三区| 欧美一区二区三区四区在线观看 | 亚洲精品免费在线播放| 国产一区二区三区美女| 3d成人动漫网站| 亚洲高清久久久| 91网站在线播放| 中文字幕在线不卡视频| 经典三级一区二区| 日韩欧美国产一区二区在线播放| 一区二区三区视频在线看| av网站免费线看精品| 国产亚洲1区2区3区| 黄色日韩网站视频| 欧美精品一区二区三区蜜桃视频| 婷婷丁香激情综合| 欧美性欧美巨大黑白大战| 亚洲欧美激情在线| av电影一区二区| 欧美激情在线一区二区| 国产一区二区三区精品欧美日韩一区二区三区 | 欧美喷水一区二区| 亚洲一级片在线观看| 91黄视频在线| 亚洲大片在线观看| 3atv一区二区三区| 免费日本视频一区| 久久蜜桃av一区二区天堂| 国产精品亚洲第一区在线暖暖韩国| 欧美精品一区二区久久久| 国产在线精品免费| 国产精品美女视频| 欧洲一区二区三区在线| 天天做天天摸天天爽国产一区| 91麻豆精品国产91久久久更新时间 | 中文字幕永久在线不卡| www.成人在线| 一区二区理论电影在线观看| 日本高清免费不卡视频| 婷婷开心激情综合| 26uuu精品一区二区| 国产**成人网毛片九色| 最新国产成人在线观看| 日本丶国产丶欧美色综合| 午夜欧美一区二区三区在线播放| 9191精品国产综合久久久久久| 久久成人免费电影| 国产精品国产三级国产有无不卡| 色狠狠av一区二区三区| 韩国av一区二区三区在线观看| 国产欧美日韩卡一| 亚洲男同性视频| 欧美日韩大陆在线| 国产精品综合网| 中文字幕中文字幕中文字幕亚洲无线| 91福利视频网站| 国产精品影视天天线| 国产精品国产三级国产a | 久久色视频免费观看| 成人av午夜影院| 日本91福利区| 亚洲欧美日韩系列| 日韩精品自拍偷拍| 在线免费观看日本一区| 精品写真视频在线观看| 亚洲美女在线国产| 久久青草国产手机看片福利盒子 | 午夜久久久久久久久| 国产色91在线| 欧美一区二区三区在线观看视频| 国产宾馆实践打屁股91| 日韩av在线播放中文字幕| 综合欧美一区二区三区| 日韩一区和二区| 91黄色免费看| 成人av网址在线| 国产在线精品一区二区不卡了 | 欧美成人精品二区三区99精品| av成人免费在线观看| 国产精品影视天天线| 美女视频一区在线观看| 亚洲综合色噜噜狠狠| 国产精品亲子伦对白| 久久免费偷拍视频| 精品久久久久久无| 日韩视频国产视频| 欧美日韩国产美| 欧美在线观看视频一区二区三区| 懂色一区二区三区免费观看 | 99精品欧美一区二区三区小说 | 在线观看国产日韩| 99精品视频一区二区三区| 国产精品白丝jk黑袜喷水| 精品一区二区三区在线观看 | av影院午夜一区| 国产成人在线看| 国产成人免费视| 精品系列免费在线观看| 久久不见久久见免费视频7| 麻豆精品国产91久久久久久| 日韩极品在线观看| 丝袜脚交一区二区| 日韩精品久久理论片| 日本v片在线高清不卡在线观看| 亚洲自拍偷拍图区| 亚洲一区二区欧美日韩| 亚洲v日本v欧美v久久精品| 爽好多水快深点欧美视频| 午夜精品福利在线| 蜜臀精品一区二区三区在线观看 | 欧美中文字幕一二三区视频| 色激情天天射综合网| 精品视频在线免费观看| 欧美一区二区三区性视频| 日韩视频一区二区在线观看| 欧美大片在线观看一区二区| 久久一留热品黄| 中文字幕一区二区三区在线观看 | 中文字幕精品在线不卡| 国产精品久久久久久久午夜片| 亚洲欧美一区二区视频| 亚洲午夜在线视频| 人妖欧美一区二区| 国产一区二区三区在线观看精品| 国产a级毛片一区| 色婷婷亚洲婷婷| 91精品国产一区二区人妖| 久久免费精品国产久精品久久久久| 日本一区二区三区高清不卡| 一区二区成人在线| 日本不卡一二三| 成人国产电影网| 欧美日韩综合在线免费观看| 精品美女一区二区| 国产精品国产三级国产有无不卡 | 91官网在线免费观看| 91精品国产综合久久香蕉麻豆| 亚洲精品一区在线观看| 亚洲三级在线看| 奇米一区二区三区av| 99天天综合性| 日韩美女一区二区三区| 亚洲视频一区在线| 免费观看91视频大全| 91视频免费播放| 久久综合中文字幕| 一区二区日韩电影| 国产酒店精品激情| 91精品久久久久久久99蜜桃 | 久久国内精品视频| 色久优优欧美色久优优| 久久久久久久精| 亚洲国产精品自拍| www.欧美亚洲| 久久久综合网站| 日韩中文字幕不卡| 91色综合久久久久婷婷| 精品99一区二区三区| 午夜欧美2019年伦理| 成人av网站免费观看| 日韩视频在线一区二区| 亚洲国产精品一区二区久久| 成人在线视频一区| 精品福利av导航| 香蕉乱码成人久久天堂爱免费| 国产91精品一区二区麻豆亚洲| 日韩欧美国产一区二区三区| 亚洲福利国产精品| 一本色道久久加勒比精品| 国产日韩精品一区二区三区在线| 日本三级韩国三级欧美三级| 在线观看日韩电影| 亚洲精品视频免费看| 成人免费黄色在线| 久久色.com| 国内不卡的二区三区中文字幕| 91精品国产91久久久久久一区二区 | 99久久精品国产一区二区三区 | 91欧美激情一区二区三区成人| 久久蜜臀精品av| 激情久久五月天| 精品国偷自产国产一区| 午夜精品久久久久久久99水蜜桃| 在线精品视频免费观看| 亚洲免费在线看| 91在线看国产| 国产精品麻豆视频| 91在线无精精品入口| 亚洲欧美国产三级|