H.264的Slice及Slice类型

    xiaoxiao2021-03-25  85

    一、基本概念

    一个视频图像可编码成一个或更多个条带,每个条带包含整数个宏块(MB),即每个条带至少一个MB,最多时每个条带包含整个图像的宏块。总之,一幅图像中每个条带的宏块数不一定固定。设条带的目的是为了限制误码的扩散和传输,应使编码条带相互间是独立的。某个条带的预测不能以其它条带中的宏块为参考图像,这样某一条带中的预测误差才不会传播到其它条带中去。

    Slice的类型如表1所示

    表1 Slice的类型

    说明:

    1、I宏快是指每个块或宏块是通过其所在的Slice中的之前的已经编码过的数据进行预测的;

    2、P宏块是指宏快或宏块分割是通过List0中的一个参考图像来进行预测的;

    3、B宏快是指宏快或宏块分割是通过List0和/或List1中的参考图像来进行预测的;

    4、SI和SP:即Switch I和Switch P,是一种特殊的编解码条带,可以保证在视频流之间进行有效的切换,并且解码器可以任意的访问。比如,同一个视频源被编码成各种码率的码流,在传输的过程中可以根据网络环境进行实时的切换;

    5、SI宏块是一种特殊类型的内部编码宏块,按Intra_4x4预测宏块编码。

    二、条带头语法元素slice_type

    slice_type是条带头语法元素,用于标识条带的编码类型,如表2所示:

    表2 slice_type的类型关联

    可能会感觉有些奇怪,0到4与5到9不是重复了么?是这样,slice_type的值在5到9的范围内表示,除了当前条带的编码类型,所有当前编码图像的其他条带的slice_type的值应与当前条带的slice_type的值一样,或者等于当前条带的slice_type的值减5。

    对于IDR图像,slice_type的值应为2、4、7或者9。

    如果num_ref_frames的值为0,slice_type的值应为2、4、7或者9。其中,num_ref_frames是SPS的语法元素,规定了可能在视频序列中任何图像帧间预测的解码过程中用到的短期参考帧和长期参考帧、互补参考场对以及不成对的参考场的最大数量。

    转自http://blog.csdn.net/yu_yuan_1314/article/details/8994517

    转载请注明原文地址: https://ju.6miu.com/read-37463.html

    最新回复(0)