词条 | Macroblock Tree |
释义 | 什么是Macroblock Tree Macroblock Tree是一个基于macroblock的qp控制方法。MB Tree的工作原理类似于古典的qpcompression,只不过qcomp处理的对象是整张frame而MBTree针对的是每个MB进行处理。工作过程简单来说,是对于每个MB,向前预测一定数量的帧(该数量由rc-lookahead和keyint的较小值决定)中该MB被参考的情况,根据引用次数的多寡,决定对该MB使用何种大小的qp进行quantization。而qp的大小与被参考次数成反比,也就是说,对于被参考次数多的MB,264的解码器认为此对应于缓慢变化的场景,因此给与比较高的质量(比较低的qp数值)。至于视频的变化率与人眼感知能力的关系,这是一个基于主观测试的经验结果:视频变化率越大人眼的敏感度越低,也就是说,人眼可以容忍快速变化场景的某些缺陷,但相对而言某些平滑场景的缺陷,人眼则相当敏感。注意此处说的平滑,指的是沿时间维度上场景的变化频率,而非普通意义上的像素域中的场景。 MBTree File 这是一个临时文件,记录了每个P帧中每个MB被参考的情况。 MB Tree的处理对象 根据DS blog上的文章,目前mbtree只处理p frames的mb,同时也不支持bpyramid。 与Mbtree相关的参数 --qcomp qcomp有削弱mbtree强度的倾向,具体来说,qcomp的值越趋近于1(Constant Quantizer),mbtree的效力越差。 --rc-lookahead 决定mbtree向前预测的帧数。 一点深入的分析: 对于使用encoder的我们来说,也许需要更进一步的关注下mbtree具体是如何将码率节省到这个地步的,在这之前,我们先回顾下264的码率控制方法。 所谓码率控制,指的是在给定码率和解码端缓冲区的限制下,如何选择最优编码参数的系统优化问题。x264一共支持5种码率控制模式,而VBV的启用可以使264以mb为单位而非以帧为单位指定qp。 简而言之,CRF模式下码率控制的过程由下面三步决定: 1、首先确定当前正在处理帧的码率:由于x264使用了与画面复杂度相关的经验公式,于是问题被归结于如何预测画面复杂度。 2、对于1pass的CRF而言,画面复杂度由残差的SATD决定,后续GOP中的I帧qp则由之前编码的I帧qp继承决定。 3、之后,我们需要根据所选crf的数值,对2中获得的数据进行scaling,以获得最终码率。 |
随便看 |
百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。