AV1-码流与结构

作者: yongbaoqiji | 来源:发表于2023-12-14 12:52 被阅读0次

    本节简单认识AV1的码流结构。

    1. 码流OBU

    OBU(open bitstream units)是AV1码流组成的基本单元,不同OBU序列按照解码顺序组成码流。
    OBU由OBU Header和OBU Playload组成,其中header声明了OBU的类型和大小。
    OBU的类型及功能如下:


    bitstream
    OBU 说明
    sequence_header_obu 一段编码序列的共用信息,标识profile、frame_width_bits_minus_1、frame_height_bits_minus_1、use_128x128_superblock、enable_filter_intra、enable_intra_edge_filter等信息,类似SPS。
    temporal_delimiter_obu 仅作为时间分割作用的obu,不包含playload, 代表帧的pts,所有跟在这个obu后面的帧可以使用这个PTS
    frame_header_obu 帧信息如帧内/帧间类型,参考帧, 屏幕内容编码、MV精度控制、tile划分、量化参数、滤波参数、frame_size等信息,可以说frame_header中存有解码所需要的大部分功能控制类信息。类似PPS
    tile_group_obu 包含一个或多个tile(及tile内SB)的码流信息,每个tile可以被单独解码。
    frame_obu 含frame_header_obu和tile_group_obu。
    metadata_obu HDR、SVC等。
    tile_list 用于large scale。
    padding_obu 一个填充数据OBU,可以被AV1标准解码器忽略。
    reserved_obu 若一个OBU的obu_type与上述所有OBU都不相同的话,则该OBU为reserved_obu。
    obu_type

    2. 帧类型:

    • KEY_FRAME 类同IDR帧
    • INTER_FRAME 类同P/B帧
    • INTRA_ONLY_FRAME 类同I帧
    • S_FRAME 类264 SI/SP帧,或265的IRAP,是一种新的随机接入点,解码器可以从它开始解码,它具备IDR帧的优点,IDR帧的缺点是所包含的数据量巨大,因此,S_FRAME在解决就近快速接入解码的同时,用来提高了码流压缩率。
    frame_type

    3. Superblock与Tile:

    • Superblock

    超级编码块是AV1支持的最大编码块,luminace最大尺度是128x128,chroma最大是64x64,大小由Sequence Header Obu定义,Superblock仅依赖左、上侧的Superblock。

    superblock

    Superblock可进一步递归划分为更小的块,划分方式如上图。使用较大的块,如128×128 Luma块可以避免如4K场景下的预测模式信息冗余,同时为更好的提升复杂画面的质量,最小支持4x4的Luma块。

    • Tile

    Tile是由多个Superblock组成的矩形块,Tile边界限制了帧内预测和概率模型的更新,因此,Tile的特征是支持单独解码,为多线程编解码提供了支持。TIle最小就是1个Superblock,最大tile对应4096x2304个Luma灰度采样数据。一个帧最大支持512个TIle单元。

    AV1支持2种方式定义Tile的大小,一种是全部统一大小,一种是对大小是否一致不做限制。之所以有大小不统一的Tile划分的原因是,不同Tile的编码运算复杂度随着图像内容不同而不同,对于复杂度较高的tile倾向使用较小尺寸的Tile,进而平衡不同线程运行在不同CPU核上的运算负担,尤其是面对其中存在巨大计算量的Tile上,这样还可以减少计算延时。

    值得注意的是,为避免出现编码块边界振铃效应,Tile边界需要进行图像后处理,类似Deblock Filter和SAO滤波。

    tile

    未经声明,禁止转载,喜欢的给个赞吧!

    相关文章

      网友评论

        本文标题:AV1-码流与结构

        本文链接:https://www.haomeiwen.com/subject/fanbgdtx.html