码率控制(三):TMN8

码率控制(三):TMN8

TMN8是为低延迟视频通信设计的码率控制算法。TMN8码率控制分为帧级码率控制和宏块(MB)级码率控制。帧级码率控制会为当前帧选择合适的目标比特数,MB级码率控制会为帧内的每个MB计算QP(或量化步长)。如果缓冲区溢出则跳过当前帧的编码。

帧级码率控制

在帧级码率控制中,帧的目标比特数由缓冲区充盈度、帧率和信道速率决定。在编码当前帧前通过下式计算缓冲区充盈度W:

其中,

D=编码前一帧实际使用的比特数。

W_prev=之前缓冲区中的比特数。

R=信道速率。

F=帧率。

如果W大于预定义的阈值M=R/F,则编码器跳过接下来的帧直到缓冲区充盈度小于阈值。

当前帧分配的目标比特如下:

MB级码率控制

MB级码率控制按扫描顺序(从左到右从上到下)为帧内每个MB计算量化步长。第i个MB的量化步长按照下面的方式生成:

其中:

MB级码率控制从第一个MB开始用上式计算Q1,然后用Q1编码MB。然后用该帧的目标比特减去估计的头比特数和已经使用的比特数得到剩余目标比特数。用剩余比特按同样方法编码接下来的MB。每编码完一个MB就更新模型参数K和C。

可以发现,当前MB的Q由L、sigma和MB的复杂度决定。这表明如果剩余比特很少(可能为0)则当前MB的量化尺度将非常大,引起很大失真。

以上是对TMN8码率控制流程的简要介绍,具体的模型参数初始化及更新策略等可以查看参考文献1。

参考

  1. Rate Control in DCT Video Coding for Low-Delay Communications

  2. Modified TMN8 Rate Control for Low-Delay Video Communications

感兴趣的请关注微信公众号Video Coding

猜你喜欢

转载自blog.csdn.net/Dillon2015/article/details/105978295