1.图像层比特率控制
视频信号通常按照恒定的帧率送入视频编码器,受信道传输能力、视频编码器处理能力等因素的影响,一般情况下并非所有的帧都被真正编码传输。因此,跳帧通常是码率控制中的第一决策选择。
1)跳帧
在对当前帧编码前,首先估计缓冲区的满盈程度,即缓冲区中占用的比特数 W :
(2.37)
式中, B prev 表示上一帧图像实际使用的比特数; W prew 表示上一次缓冲区中的比特数(初始时, W prew =0, B prev 是第一帧图像使用的比特数); R 表示信道速率; F 表示帧频。
如果 W 大于或者等于设定的阈值 M ,则编码器将跳过当前帧,直到缓冲区不是特别充满( W < M )才终止跳帧操作。每跳过一帧,缓冲区将减少 R / F 比特。这种简单的跳帧策略可以有效地避免缓冲区上溢。
2)延时
在实时视频通信中,与编码过程、传输环节引入的延时相比,缓冲区引入的延时是主要部分,其大小Δ t 由下式决定:
(2.38)
M 的取值是缓冲区环节引入延迟的决定性因素,在实际系统中可以通过增大(减小) M 来相应增加(减少)缓冲区延时,可见缓冲区延时的大小相对比较容易控制。
3)码率控制
经过选择的图像帧送入编码器后,图像层码率控制首先确定该帧图像可以使用多少比特,称为一帧图像期望输出的比特数,用 B 表示:
(2.39)
式中, W 表示缓存区中的比特数; F 为帧频; M 为设定的容量阈值; Z =0.1。Δ是一个取值很小的参数,反映了缓冲区满盈程度对一帧图像期望输出的比特数的影响。式(2.39)意味着,如果 W 超过了 M 的10%, B 的取值就会略微减小;否则, B 的取值会略微增大。
2.宏块层比特率控制
宏块层比特率控制需要根据一帧图像的期望输出比特数,确定各宏块使用的量化参数。以一帧图像中所有 N 个宏块的比特数 B i 之和 B 为约束条件,以各个宏块的量化参数 所定义的失真为最小化目标函数,构成求取各量化参数的极小化问题:
(2.40)
参照式(2.35)的二次 R - Q 模型,利用拉格朗日方法求解,得到各宏块的最优量化步长
(2.41)
式中, 为宏块残差系数的方差; 为宏块的加权系数,在TMN8中有具体定义。