5. Basic Unit Layer Rate Control
如果没有使用帧做为基本单元层,那么在我们的方案中将添加基本单元层的码率控制。
和帧层的码率控制一样,I帧使用单一的QP进行编码。它的计算和帧层控制中的一样。B帧也是使用单一QP值编码,计算方法同帧层的几乎一样, 和 使用相关帧的所有基本单元的平均QP值代替。
在剩余的章节中,我们为每个P帧提供基本单元层的码率控制。
和帧层一样,我们应该首先决定每个P帧的目标码率。这个过程和帧层是一样的。比特数被分配给每个基本单元。因为在当前帧中每个未编码基本单元的MAD未知,我们给当前帧的每个未编码单元平均的分配剩余的bit。
基本层码率控制选择一帧中所有基本单元的QP值,因此生成bit的和更加接近与帧目标
下面是控制方法的步骤
步骤1 计算当前基本单元的结构bit(texture bits) 。这一步由下面3个子步骤完成。
步骤1.1 计算当前基本单元的目标比特数
用 和 表示当前帧未编码基本单元剩余的比特数和未编码基本单元数。 and 为他们的初始值。当前基本单元的目标比特数由 给出。
步骤1.2 为所有的已编码基本单元计算生成的平均头比特数(header bits)
(27)
其中 是lth基本单元的实际头比特数, 是前一帧所有基本单元的估算?
步骤1.3 计算结构比特数
(28)
步骤2 使用前一帧相同位置的基本单元的MAD通过模型(3)预测当前帧当前基本单元的MAD
步骤3 使用二次RD模型计算当前基本单元的QP,我们需要考虑下面3个因素。
1 当前帧的第一个基本单元
(29)
其中 是前一帧中所有基本单元的平均QP值。
2 .在这种情况下,QP值应该大于前个基本单元的以便生成bit接近
(30)
其中 是前个基本单元的QP,减掉blocking artifacts,当 大于8的时候DQuant为1,否则为2.
为了保持视觉效果的平滑,QP值由下式限制
(31)
其中 为3当 低于一行中的MB数,否则为6
3 此外,在这种情况下,我们应该首先使用二次模型计算QP值 ,和情况2类似,他由下式决定
(32)
目标是减少blocking artifacts,也就是保持视觉效果平滑,他依赖与下式
(33)
步骤4 在当前基本单元中为所有MB计算RDO
步骤5 更新剩余bit数和当前帧中未编码基本单元数.
步骤6 一帧编码结束后,更新 .
为了获得平均PSNR和bit波动的折中, 取自实时视频通信中一行的MB数, 而在其他程序中 为9.
注意: 为了降低使用在不同QP值MB中使用的bit数,H264的语法应该修改,在bit流开始的时候加入一个标志位用来只是基本单元中的实际MB数。之后我们就只需要编码基本单元之间QP值的不同来取代那些MB。
6. Experimental Results