参考资料:
vp9提供了一种新的划分称为segment,tile也好,hevc的slice也好,都是画面内按顺序的区域划分,但segment不是,所以segment的标记是对每个处理块标记一个id,画面最多可被划分为八个segment。每个segment可拥有四种能力:
-SEG_LVL_ALT_Q:设定自己的qp,应用场景如实现ROI,或者进行码率控制等,后面会再提到因为vp9不对每个block设定qp,所以画面内的画质调制啊码率控制啊就可以通过这个功能来实现。
-SEG_LVL_ALT_LF:设定自己的loop filter强度,应用场景如画面中有一部分水面等特别容易blocky的部分,就可以仅对这样的部分增强delocking filter,而不影响其他的部分。
-SEG_LVL_REF_FRAME:设定自己的参考帧,应用场景如视频会议中背景一般是不变的,就可以设定背景区域都去参考固定的参考帧。
-SEG_LVL_SKIP:segment skip(即不传送coeff),应用场景如背景等画面中静止部分,就可以全部skip节省码流,特别是在低码率的情况下比较有帮助。
所以这种segment的划分并不是为了并行或容错,更多的是为了满足不同应用场景下对画质调试的需求。到qp/loop filter部分会具体提到,hevc的这些部分都是可以对每个处理块来控制的,所以可以实现精细调整。只不过二者实现方式不同,也各有优势吧。
VP9 引入了一个更加先进的分段( segmentation)的概念,使编码器更加高效。 一帧图像中的每个 16×16 的宏块都