x264中的队列管理(version20100611)
编码图像队列
概述
x264中采用两个队列来实现未编码图像的维护,分别是next存储原始顺序图像和current保存编码顺序图像,二者关系如图 3‑1所示,假设当前设定P帧之间有2个B帧,图像首先进入next队列缓冲,当装满2+l幅图像时,开始判断帧类型。图3.3中当next队列满3帧时,使用x264_slicetype_decide()函数判断帧类型分别为B、B、P。最后将next中的图像加入到current队列中,这时将图像顺序转换为编码顺序Pl、Bl、B2。
如果编码中有B帧,其输入图像的顺序和编码图像顺序不同。所以,输入图像需要重排列,进入编码图像对列。 具体详见[1]。
实现流程
概念
为了以下的叙述方便,特规定如下定义。
输入图像序列:以视频显示顺序表达原始图像序列。
编码图像队列:以视频编码顺序表达原始图像序列。在非B帧编码模式下,输入图像队列等同于编码图像队列。
解码图像队列:以编码顺序表示解码重构后的图像序列。
编码图像单元:在x264中,连续的B帧和随之而来的非B帧,组成一个编码图像单元。
编码图像的处理流程
单线程下编码图像处理流程: