C语言 x264编码代码,x264源代码解析.doc

x264编码详细文字全过程

(1) x264_param_default( x264_param_t *param )

作用: 对编码器进行参数设定

cqm:量化表相关信息

csp:

量化表相关信息里的memset( param->cqm_4iy, 16, 16 );

memset( param->cqm_4ic, 16, 16 );

memset( param->cqm_4py, 16, 16 );

memset( param->cqm_4pc, 16, 16 );

memset( param->cqm_8iy, 16, 64 );

memset( param->cqm_8py, 16, 64 );

(2)static int Parse( int argc, char **argv, x264_param_t *param, cli_opt_t *opt ) 初始化

1. getopt_long(nargc, nargv, options, long_options, idx) 得到入口地址的向量与方式的选则

2. getopt_internal(nargc, nargv, options) 解析入口地址向量

(3) static int Encode( x264_param_t *param, cli_opt_t *opt )

/* Create a copy of param */ h->param=param

/* VUI */vui信息主要包括帧率、图像尺寸等信息

/* Init x264_t */

x264_sps_init( h->sps, 0, &h->param );序列图像集

x264_pps_init( h->pps, 0, &h->param, h->sps);图像参数集

/* Init frames. */ 初始化并开辟帧空间

/* init mb cache */ 对前一宏块的信息保存,因为是初始化,所以作为第一个宏块的参考,后面会有x264_macroblock_cache_load( h, i_mb_x, i_mb_y );它是将要编码的宏块的周围的宏块的值读进来, 要想得到当前块的预测值,要先知道上面,左面的预测值

/* init cabac adaptive model */

/* init CPU functions */ 初始化cpu对各种分块的参数设定

/* rate control */

1. x264_t *x264_encoder_open ( x264_param_t *param ) 这个函数是对不正确的参数进行修改,并对各结构体参数和cabac编码,预测等需要的参数进行初始化

2、p_read_frame( &pic, opt->hin, i_frame + opt->i_seek, param->i_width, param->i_height )

读取一帧,并把这帧设为prev

3. i_file += Encode_frame( h, opt->hout, &pic );进入核心码层

核心编码层的总流程图:(x264.c)

1. x264_encoder_encode( h, &nal, &i_nal, pic, &pic_out )对帧进行编码

2. i_size = x264_nal_encode( data, &i_data, 1, &nal[i] ) 网络打包编码

3. i_file += p_write_nalu( hout, data, i_size ) 把网络包写入到输出文件中去

4. 返回,对下一帧进行编码

下面一页是详细的流程图:

一.帧内详细流程图:

(1). x264_encoder_encode( h, &nal, &i_nal, pic, &pic_out )对帧进行编码

1. /* 1: Copy the picture to a frame and move it to a buffer */

x264_

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值