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

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

?? x264.c

?? H.264編碼器
?? C
字號:
/* x264: h264 encoder/decoder testing program */

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include "stdint.h"
//#include "iostream.h"

#include <math.h>

//#include <signal.h>
#define _GNU_SOURCE

#ifdef _MSC_VER
#include <io.h>     /* _setmode() */
#include <fcntl.h>  /* _O_BINARY */
#endif

#include "x264.h"
#include "common.h"
#include "frame.h"

#define DATA_MAX 3000000
uint8_t data[DATA_MAX];

x264_t *h;
x264_param_t param;
x264_picture_t *pic;
int64_t i_size;
FILE    *fyuv;
FILE    *fout = stdout;
int     i_frame, i_frame_total;
int64_t i_start, i_end;
int64_t i_file;


char* rY;
char* rU;
char* rV;

x264_frame_t * recon_temp;

/* Ctrl-C handler */
static int     i_ctrl_c = 0;
static void    SigIntHandler( int a )
{
    i_ctrl_c = 1;
}

/****************************************************************************
 * main:
 ****************************************************************************/
void init_x264(int width, int height)
{
    x264_param_default( &param );

	if( ( fyuv = fopen("e:\\foreman.qcif", "rb" ) ) == NULL )
	{
//		cout<<"could not open yuv input file"<<endl;
		;
	}

	i_size = ftell( fyuv );
	
	if( ( fout = fopen("c:\\out.h26l", "wb" ) ) == NULL )
	{
//		cout<<"cannot open output file"<<endl;
	}

	param.i_width = width;
	param.i_height = height;
	
    i_frame_total = 0;
	if( !fseek( fyuv, 0, SEEK_END ) )
	{
		int64_t i_size = ftell( fyuv );
		fseek( fyuv, 0, SEEK_SET );
		i_frame_total = i_size / ( param.i_width * param.i_height * 3 / 2 );
	}
	
 	if( ( h = x264_encoder_open( &param ) ) == NULL )
	{
//		cout<< "x264_encoder_open failed"<<endl;
	}
    pic = x264_picture_new( h );
}

void x264_encode_one_frame(char* Y, char* U, char* V)
{
	int         i_nal;
    x264_nal_t  *nal;
    int         i;
	
	pic->plane[0]=Y;
	pic->plane[1]=U;
	pic->plane[2]=V;
        
	if( x264_encoder_encode( h, &nal, &i_nal, pic) < 0 )
	{
		fprintf( stderr, "x264_encoder_encode failed\n" );
	}
		
	for( i = 0; i < i_nal; i++ )
	{
		int i_size;
		int i_data;
	
		i_data = DATA_MAX;
		if( ( i_size = x264_nal_encode( data, &i_data, 1, &nal[i] ) ) > 0 )
		{
			i_file += fwrite( data, 1, i_size, fout );
		}
		else if( i_size < 0 )
		{
			fprintf( stderr,"need to increase buffer size (size=%d)\n", -i_size );
		}
	}
}


void x264_get_recon(char * reconY, char * reconU, char * reconV)
{
    int y;
	int stride=h->fdec->i_stride[0];
    for( y = 0; y < h->param.i_height; y++ )
    {
		//memcpy(&reconY[y*h->param.i_width], &h->fdec->plane[0][y*stride], h->param.i_width);
		memcpy(&reconY[y*h->param.i_width], &recon_temp->plane[0][y*stride], h->param.i_width);
    }
    for( y = 0; y < h->param.i_height/2; y++ )
    {
		//memcpy(&reconU[y*h->param.i_width/2], &h->fdec->plane[1][y*stride/2], h->param.i_width/2);
		memcpy(&reconU[y*h->param.i_width/2], &recon_temp->plane[1][y*stride/2], h->param.i_width/2);
    }
    for( y = 0; y < h->param.i_height/2; y++ )
    {
		//memcpy(&reconV[y*h->param.i_width/2], &h->fdec->plane[2][y*stride/2], h->param.i_width/2);
		memcpy(&reconV[y*h->param.i_width/2], &recon_temp->plane[2][y*stride/2], h->param.i_width/2);
    }
}



void close_x264()
{
	x264_picture_delete( pic );
	x264_encoder_close( h );
	fprintf( stderr, "\n" );

	fclose( fyuv );
	if( fout != stdout )
	{
		fclose( fout );
	}
	
	if( i_frame > 0 )
	{
		double fps = (double)i_frame * (double)1000000 /(double)( i_end - i_start );
		fprintf( stderr, "encoded %d frames %ffps %lld kb/s\n", i_frame, fps, i_file * 8 * 25 / i_frame / 1000 );
	}
}


void main()
{
	char* bufU;
	char* bufV;
	char* bufY;
	char* rY;
	char* rU;
	char* rV;

	FILE * recon;
	int len;
    int  i, numread, numwritten;
	
/////////////////////////////////////////////////

	init_x264(176,144);	
	//recon_temp = h->fdec;
	

//////////////////////////////////////////////////

	bufU=(char*) malloc(param.i_width * param.i_height/2);	
	bufV=(char*) malloc(param.i_width * param.i_height/2);
	bufY=(char*) malloc(param.i_width * param.i_height);

	rU=(char*) malloc(param.i_width * param.i_height/2);
	rV=(char*) malloc(param.i_width * param.i_height/2);
	rY=(char*) malloc(param.i_width * param.i_height);

 	recon = fopen( "c:\\repak.yuv", "w+t" );

    //   fseek( recon, 0, SEEK_SET );

    i_start = x264_mdate();

	//   
	for( i_frame = 0, i_file = 0;i_frame < 50 && i_ctrl_c == 0 ; i_frame++ )
	{
		int         i_nal;
        x264_nal_t  *nal;
	
        int         i;
	
        // read a frame 
		if( fread(bufY, 1, param.i_width * param.i_height, fyuv ) <= 0 ||
            fread(bufU, 1, param.i_width * param.i_height / 4, fyuv ) <= 0 ||
            fread(bufV, 1, param.i_width * param.i_height / 4, fyuv ) <= 0 )
		{
			break;
		}
	
		recon_temp = h->fdec;
		
		x264_encode_one_frame(bufY, bufU, bufV);
		x264_get_recon(rY, rU, rV);


     	len=h->param.i_height*h->param.i_width;

		fwrite( rY, sizeof(char), len, recon );
		fwrite( rU, sizeof(char), len/4, recon );
		fwrite( rV, sizeof(char), len/4, recon );
	}

	i_end = x264_mdate();
	close_x264();
    fclose( recon );

	free(bufU);
	free(bufV);
	free(bufY);
	free(rU);
	free(rV);
	free(rY);
}



/*
void main()
{
    x264_t *h;
    x264_param_t param;
    x264_picture_t *pic;
    int64_t i_size;
    FILE    *fyuv;
    FILE    *fout = stdout;
    int     i_frame, i_frame_total;
    int64_t i_start, i_end;
    int64_t i_file;


#ifdef _MSC_VER
    _setmode(_fileno(stdin), _O_BINARY);    // thanks to Marcos Morais <morais at dee.ufcg.edu.br> 
    _setmode(_fileno(stdout), _O_BINARY);
#endif

    x264_param_default( &param );
	
	if( ( fyuv = fopen("d:\\in.yuv", "rb" ) ) == NULL )
	{
//		cout<<"could not open yuv input file"<<endl;
		;
	}

	i_size = ftell( fyuv );
	
	if( ( fout = fopen("d:\\out.h26l", "wb" ) ) == NULL )
	{
//		cout<<"cannot open output file"<<endl;
	}
	
	param.i_width = 176;
	param.i_height = 144;
	
    i_frame_total = 0;
	if( !fseek( fyuv, 0, SEEK_END ) )
	{
		int64_t i_size = ftell( fyuv );
		fseek( fyuv, 0, SEEK_SET );
		i_frame_total = i_size / ( param.i_width * param.i_height * 3 / 2 );
	}
	
 	if( ( h = x264_encoder_open( &param ) ) == NULL )
	{
//		cout<< "x264_encoder_open failed"<<endl;
	}

    pic = x264_picture_new( h );
	
    i_start = x264_mdate();
	
	for( i_frame = 0, i_file = 0; i_ctrl_c == 0 ; i_frame++ )
	{
		int         i_nal;
        x264_nal_t  *nal;
	
        int         i;
	
        // read a frame 
		if( fread( pic->plane[0], 1, param.i_width * param.i_height, fyuv ) <= 0 ||
            fread( pic->plane[1], 1, param.i_width * param.i_height / 4, fyuv ) <= 0 ||
            fread( pic->plane[2], 1, param.i_width * param.i_height / 4, fyuv ) <= 0 )
		{
			break;
		}
	
        if( x264_encoder_encode( h, &nal, &i_nal, pic ) < 0 )
		{
			fprintf( stderr, "x264_encoder_encode failed\n" );
		}
		
		for( i = 0; i < i_nal; i++ )
		{
			int i_size;
			int i_data;
	
			i_data = DATA_MAX;
			if( ( i_size = x264_nal_encode( data, &i_data, 1, &nal[i] ) ) > 0 )
			{
				i_file += fwrite( data, 1, i_size, fout );
			}
			else if( i_size < 0 )
			{
				fprintf( stderr,"need to increase buffer size (size=%d)\n", -i_size );
			}
		}
	}
	
	i_end = x264_mdate();
	x264_picture_delete( pic );
	x264_encoder_close( h );
	fprintf( stderr, "\n" );

	fclose( fyuv );
	if( fout != stdout )
	{
		fclose( fout );
	}
	
	if( i_frame > 0 )
	{
		double fps = (double)i_frame * (double)1000000 /(double)( i_end - i_start );
		fprintf( stderr, "encoded %d frames %ffps %lld kb/s\n", i_frame, fps, i_file * 8 * 25 / i_frame / 1000 );
	}
}
*/



?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲免费三区一区二区| 国产日韩欧美不卡| 在线视频国内一区二区| 91天堂素人约啪| 成人99免费视频| 99久久婷婷国产综合精品 | 亚洲影视在线观看| 亚洲精品免费在线观看| 亚洲制服丝袜av| 亚洲国产精品一区二区久久| 亚洲精品videosex极品| 亚洲国产色一区| 三级不卡在线观看| 精品一区二区三区免费观看| 日本sm残虐另类| 国产在线一区二区综合免费视频| 国产一区二区视频在线播放| 国产福利91精品一区| 97se亚洲国产综合自在线不卡| 成人黄色综合网站| 一本大道综合伊人精品热热| 在线观看国产精品网站| 欧美一区三区四区| 国产女人18水真多18精品一级做| 最新中文字幕一区二区三区 | 精品国产麻豆免费人成网站| 中文字幕第一区综合| 亚洲欧美激情视频在线观看一区二区三区| 亚洲视频免费在线| 六月婷婷色综合| 成人免费黄色在线| 欧美日韩在线直播| 国产欧美精品一区二区色综合| 亚洲人吸女人奶水| 免费在线观看一区| 99久久夜色精品国产网站| 91麻豆精品国产自产在线| 国产精品欧美综合在线| 天堂一区二区在线免费观看| 丁香天五香天堂综合| 欧美日韩一区在线观看| 久久久精品tv| 偷拍日韩校园综合在线| 成人午夜电影久久影院| 91麻豆精品国产自产在线| 最新国产成人在线观看| 精品写真视频在线观看| 在线免费不卡视频| 国产嫩草影院久久久久| 日本欧美大码aⅴ在线播放| 成人午夜视频福利| 久久久亚洲精品石原莉奈| 亚洲制服丝袜av| 91亚洲午夜精品久久久久久| 久久综合中文字幕| 日韩中文欧美在线| 欧美日韩一区二区三区不卡| 亚洲天堂成人在线观看| 国产东北露脸精品视频| 日韩午夜av一区| 亚洲6080在线| 欧美怡红院视频| 国产精品每日更新在线播放网址| 久久疯狂做爰流白浆xx| 欧美一区二区成人6969| 午夜私人影院久久久久| 欧美亚洲国产bt| 亚洲欧美乱综合| 91视频免费观看| 18成人在线视频| 99久久综合国产精品| 国产性天天综合网| 国产成人免费视频网站| 国产亚洲欧美色| 国产精品资源在线观看| 精品88久久久久88久久久| 久久99久久久久久久久久久| 日韩三级精品电影久久久| 日本成人在线不卡视频| 日韩一区二区在线免费观看| 日韩一区精品字幕| 日韩精品一区二区三区三区免费| 蜜臀91精品一区二区三区 | 9i在线看片成人免费| 国产精品高潮久久久久无| 成人av电影免费在线播放| 国产精品久久久久久妇女6080 | 中文字幕中文字幕一区二区| 国产a久久麻豆| 亚洲视频一区在线观看| 在线观看精品一区| 麻豆91在线播放| 久久精品欧美日韩精品| 不卡av在线免费观看| 亚洲老司机在线| 欧美一区二区三区在线观看| 黄页网站大全一区二区| 中文一区一区三区高中清不卡| 色婷婷久久99综合精品jk白丝| 亚洲综合色网站| 日韩欧美美女一区二区三区| 国产成人免费xxxxxxxx| 亚洲主播在线播放| wwwwww.欧美系列| 99久久伊人精品| 蜜桃一区二区三区在线观看| 国产精品毛片久久久久久| 在线观看视频91| 韩国av一区二区三区| 亚洲精品你懂的| 亚洲精品在线免费观看视频| 成人动漫中文字幕| 天天综合色天天综合| 国产欧美一区二区在线| 欧美日韩国产123区| 国产精品影音先锋| 亚洲一二三四在线| 久久久久久97三级| 欧美日本在线看| 成人亚洲一区二区一| 亚洲va中文字幕| 中文字幕av不卡| 精品av久久707| 欧美日韩国产高清一区| 99久久免费国产| 国内精品国产成人国产三级粉色| 亚洲伦在线观看| 欧美激情一区二区在线| 欧美一级高清片在线观看| 色88888久久久久久影院野外 | 91视频com| 国产精品一二三在| 麻豆精品一区二区三区| 一区二区三区欧美久久| 中文字幕欧美日本乱码一线二线| 337p亚洲精品色噜噜| 在线观看一区不卡| 一本色道久久综合亚洲91| 国产91综合一区在线观看| 麻豆国产精品一区二区三区 | 日本一区二区视频在线| 日韩久久精品一区| 欧美乱妇23p| 91福利小视频| 一本一道综合狠狠老| av一二三不卡影片| 成人性生交大片免费看中文网站 | 国产精品情趣视频| 国产午夜精品理论片a级大结局| 91精品国产91久久综合桃花| 欧美日免费三级在线| 欧美日韩一区二区三区高清| 欧美写真视频网站| 欧美三级视频在线| 欧美丝袜丝交足nylons图片| 欧美最新大片在线看| 欧美在线制服丝袜| 在线观看日产精品| 欧美日韩午夜影院| 欧美熟乱第一页| 欧美肥妇bbw| 欧美一区二区成人| 久久尤物电影视频在线观看| 精品国产免费一区二区三区四区| 久久这里只有精品首页| 国产精品亲子乱子伦xxxx裸| 亚洲欧美日韩在线不卡| 亚洲一区二区视频在线| 视频精品一区二区| 国产原创一区二区三区| 高清国产午夜精品久久久久久| 成人av在线播放网址| 在线视频国内一区二区| 欧美一区二区啪啪| 久久精品亚洲精品国产欧美kt∨| 国产日韩欧美亚洲| 一区二区三区久久久| 日韩精品免费专区| 成人午夜免费av| 欧美精品久久99久久在免费线 | 91美女蜜桃在线| 欧美三级乱人伦电影| 欧美mv和日韩mv国产网站| 国产农村妇女毛片精品久久麻豆 | 高清在线观看日韩| 91污在线观看| 日韩一区二区三区四区| 欧美国产禁国产网站cc| 亚洲午夜在线电影| 国产传媒日韩欧美成人| 欧美三级蜜桃2在线观看| 国产婷婷精品av在线| 一区二区三区欧美激情| 国产精品一区二区三区99| 色综合久久中文综合久久牛| 欧美一二三区在线观看| 亚洲免费看黄网站| 国产福利一区二区三区| 3atv一区二区三区| 亚洲激情在线激情|