x264编码过程笔记
// ------------------------------------------------------------------------------------
一、初始化
1、一次性分配所有需要用到的内存。
2、根据参数填充或归零初始化x264句柄结构体中的各个成员以及相关的全局变量和内存缓存区。
3、初始化sps和pps。
4、初始化各个主要运算函数指针(例如:DCT运算,根据不同平台优化的不同函数,在此指定)。
// ------------------------------------------------------------------------------------
二、编码
1、将源YUV数据按指定格式和形式拷贝到指定缓存区。
2、决定当前编码帧类型。
3、创建参考帧列表。
4、初始化条带。
5、初始化比特流缓存。
6、初始化NAL。
7、【编码主流程】
8、处理重建帧,更新参考帧。
9、将NAL编码并输出到最终进行传输或保存的缓存区。
// ------------------------------------------------------------------------------------
三、【编码主流程】
//=========================================
I帧:
1、确定当前待编码宏块,赋值源宏块指针以及重建宏块指针,同时初始化或载入某些缓存的变量,以及设定当前宏块位置信息。
2、根据当前宏块位置确定可以尝试的预测模式,然后全部预测一遍,选出代价值(SAD)最小的预测模式作为当前宏块的帧内预测模式。这个步骤分别对Y和UV进行。
3、根据上一步确定的预测模式初步预测出当前重建宏块。
4、当前重建宏块与当前源宏块进行残差,之后再进行16x16的DCT。
5、将16个4x4DCT结果的DC分量抽取出并按Z字形重排;AC分量则进行量化、Z字形重排以及反量化。
6、将上一步