一个网站需要多少网页,wordpress如何让标签大小一致,申请个人网站怎么申请,南昌网站建设公司效果相关说明:1. 使用版本: x264-cvs-2004-05-11
2. 这次的分析基本上已经将代码中最难理解的部分做了阐释,对代码的主线也做了剖析,如果这个主线理解了,就容易设置几个区间,进行分工阅读,将各个区间击破了.
3. 需要学习的知识:a) 编码器的工作流程.b) H.264的码流结构,像x264_sp… 相关说明:1. 使用版本: x264-cvs-2004-05-11
2. 这次的分析基本上已经将代码中最难理解的部分做了阐释,对代码的主线也做了剖析,如果这个主线理解了,就容易设置几个区间,进行分工阅读,将各个区间击破了.
3. 需要学习的知识:a) 编码器的工作流程.b) H.264的码流结构,像x264_sps_t,x264_pps_t等参数的定义基本上都完全符合标准文档中参数集的定义,抓住主要参数,次要参数也应该有所了解.c) 数学知识,对dct变换等与数学相关的知识的编程实现要有较好理解.d) C语言的知识.涉及到c语言的较多不经常用的特性,如函数指针数组,移位运算,结构体的嵌套定义等.e) 耐心,对h.264的复杂性要有清醒的认识.
1. 进入x264.c中的main函数.
刚开始是读取默认参数,如果你设置了参数的话会修改param的.
i_ret Encode( param, fin, fout );
这条语句使过程进入x264.c中的Encode函数.
2. X.264的encode函数.
A. 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 )
}上面这段计算出输入文件的总帧数. B. h x264_encoder_open( param )这个函数是对不正确的参数进行修改,并对各结构体参数和cabac编码,预测等需要的参数进行初始化. C. pic x264_picture_new( h ); 该函数定义在/CORE/common.c中.首先分给能容纳sizeof(x264_picture_t)字节数的空间,然后进行初始化. 这里看一下x264_picture_t和x264_frame_t的区别.前者是说明一个视频序列中每帧的特点.后者存放每帧实际的象素值.注意区分. D. 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循环的地方都应该认真对待,这是我的一个体会,也是进入分层结构认真分析的好方法. fread()函数一次读入一帧,分亮度和色度分别读取.这里要看到c语言中的File文件有一个文件位置指示器,调用fread()函数会使文件指示器自动移位,这就是一帧一帧读取的实现过程.