首页 > 其他分享 >AV1 Bitstream & Decoding Process Specification--[4]:语法结构

AV1 Bitstream & Decoding Process Specification--[4]:语法结构

时间:2024-09-13 23:26:28浏览次数:3  
标签:function 函数 Bitstream Specification AV1 syntax 语法 OBU 字节

语法结构

通用(General)

  • 这一节以表格形式展示了语法结构。每个语法元素的含义在第6节中介绍。

低开销比特流格式(Low overhead bitstream format)

  • 本规范定义了一种低开销比特流格式,它是由本节中定义的OBU(Object Based Unit)语法元素序列构成的。使用此格式时,obu_has_size_field必须等于1。对于需要更容易跳过帧或时间单元的格式的应用,附件B中定义了一种长度限定的比特流格式。
  • 派生规范,例如使能存储AV1视频与音频或字幕一起的容器格式,应指明它们依赖于这些格式中的哪一种。也允许其他将OBUs打包成比特流格式的方法。

OBU语法(OBU syntax)

  1. 通用 OBU 语法( General OBU syntax)
    在这里插入图片描述
    在这里插入图片描述
  2. OBU 头部语法(OBU header syntax)
    在这里插入图片描述
  3. OBU 扩展头部语法(OBU extension header syntax)
    在这里插入图片描述
  4. 拖尾比特语法(Trailing bits syntax)
    在这里插入图片描述
  5. 字节对齐语法(Byte alignment syntax)
    在这里插入图片描述

保留 OBU 语法(Reserved OBU syntax)

在这里插入图片描述

  • 注意:保留的OBUs没有定义的语法。obu_type的保留值是为将来使用而保留的。如果解码器不理解obu_type,应该忽略整个OBU。可以根据obu_size来忽略OBU。对于这种OBU类型的有效负载数据的有效内容的最后一字节被认为是不等于零的最后一字节。这个规则是为了防止系统将尾随的零字节解释为OBU中尾随位的延续而丢弃有效的字节。这意味着,当这种OBU类型有任何有效负载数据时,至少有一个字节的有效负载数据(包括尾随位)不应等于0。

序列头部 OBU 语法(Sequence header OBU syntax)

  1. 通用序列头部 OBU 语法(General sequence header OBU syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 颜色配置语法(Color config syntax)
    在这里插入图片描述
    在这里插入图片描述
  3. 时间信息语法(Timing info syntax)
    在这里插入图片描述
  4. 解码器模式信息语法(Decoder model info syntax)
    在这里插入图片描述
  5. 操作参数信息语法(Operating parameters info syntax)
    在这里插入图片描述

时间分隔符 obu 语法(Temporal delimiter obu syntax)

  • 注意:时间分隔符有一个空的有效载荷。
    在这里插入图片描述

填充 OBU 语法(Padding OBU syntax)

  • 注意:obu_padding_length(OBU填充长度)没有在比特流中编码,但可以根据obu_size(OBU大小)减去尾部字节的数量来计算。实际上,由于这是为了被跳过而添加的填充数据,解码器不需要确定该长度或尾部字节的数量。它们可以忽略整个OBU。可以根据obu_size忽略整个OBU。对于这种OBU类型的有效载荷数据,其有效内容的最后一个字节被认为是最后一个不为零的字节。这个规则是为了防止那些将尾部零字节解释为OBU中尾部位延续的系统错误地丢弃有效字节。这意味着,当这种OBU类型有任何有效载荷数据时,至少有一个字节的有效载荷数据(包括尾部位)不应等于0。
    在这里插入图片描述

元数据OBU语法(Metadata OBU syntax)

  1. 通用元数据 OBU 语法(General metadata OBU syntax)
    • 注意:当metadata_type(元数据类型)等于为将来使用或用户私有值保留的值时,此规范中并未定义metadata_obu(元数据OBU)的确切语法。如果解码器不理解metadata_type,应该忽略整个OBU。有效数据内容的最后一个字节被认为是最后一个不为零的字节。这个规则是为了防止那些将尾部零字节解释为OBU中尾部位延续的系统错误地丢弃有效字节。这意味着,当这种OBU类型有任何有效载荷数据时,至少有一个字节的有效载荷数据(包括尾部位)不应等于0。
      在这里插入图片描述
  2. 元数据 ITUT T35 语法(Metadata ITUT T35 syntax)
    • 注意:itu_t_t35_payload_bytes 的确切语法在本规范中未定义。外部规范可以定义语法。如果解码器不理解它,应该忽略整个OBU。有效数据内容的最后一个字节被认为是最后一个不为零的字节。这个规则是为了防止那些将尾部零字节解释为OBU中尾部位延续的系统错误地丢弃有效字节。这意味着,当这种OBU类型有任何有效载荷数据时,至少有一个字节的有效载荷数据(包括尾部位)不应等于0。
      在这里插入图片描述
  3. 元数据高动态范围HDR内容光照水平语法(Metadata high dynamic range content light level syntax)
    在这里插入图片描述
  4. 元数据高动态范围HDR主控显示色域体积语法(Metadata high dynamic range mastering display color volume syntax)
    在这里插入图片描述
  5. 元数据可分层语法(Metadata scalability syntax)
    在这里插入图片描述
  6. 可分层结构语法(Scalability structure syntax)
    在这里插入图片描述
  7. 元数据时间码语法(Metadata timecode syntax)
    在这里插入图片描述

帧头部 OBU 语法(Frame header OBU syntax)

  1. 通用帧头部 OBU 语法(General frame header OBU syntax)
    在这里插入图片描述
  2. 未压缩头部语法(Uncompressed header syntax)
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述
  3. 获取相对距离函数(Get relative distance function)
    • 这个函数通过将两个顺序提示值相减的结果进行符号扩展,来计算它们之间的距离。

在这里插入图片描述

  1. 参考帧标记函数(Reference frame marking function)
    在这里插入图片描述

  2. 帧大小语法( Frame size syntax)
    在这里插入图片描述

  3. 渲染大小语法(Render size syntax)
    在这里插入图片描述

  4. 有参考性的帧大小语法(Frame size with refs syntax)
    在这里插入图片描述

  5. 超分辨率参数语法(Superres params syntax)
    在这里插入图片描述

  6. 计算图像大小函数(Compute image size function)
    在这里插入图片描述

  7. 插值滤波语法(Interpolation filter syntax)
    在这里插入图片描述

  8. 环路滤波参数语法(Loop filter params syntax)
    在这里插入图片描述在这里插入图片描述

  9. 量化参数语法(Quantization params syntax)
    在这里插入图片描述在这里插入图片描述

  10. 量化增量语法(Delta quantizer syntax)
    在这里插入图片描述

  11. 段参数语法(Segmentation params syntax)
    在这里插入图片描述在这里插入图片描述

    • 在这种语法中使用的常量查找表被定义为:
      在这里插入图片描述
  12. 瓦片 Tile 信息语法(Tile info syntax)
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

  13. 瓦片 Tile 大小计算函数(Tile size calculation function)

    • tile_log2 返回最小的值 k,使得 blkSize << k 大于或等于目标值。
      在这里插入图片描述
  14. 量化器索引增量参数语法(Quantizer index delta parameters syntax)
    在这里插入图片描述

  15. 环路滤波增量参数语法(Loop filter delta parameters syntax)
    在这里插入图片描述

  16. CDEF 参数语法(CDEF params syntax)
    - (Constrained Directional Enhancement Filter, 限制性方向增强滤波器)
    在这里插入图片描述
    在这里插入图片描述

  17. 环路恢复参数语法(Loop restoration params syntax)
    在这里插入图片描述

  • 其中 Remap_Lr_Type 是一个常量查找表,规定如下:
    在这里插入图片描述
  1. 变换模式语法(TX mode syntax)
    在这里插入图片描述

  2. 跳过模式参数语法(Skip mode params syntax)
    在这里插入图片描述
    在这里插入图片描述

  3. 帧参考模式语法(Frame reference mode syntax)
    在这里插入图片描述

  4. 全局运动参数语法(Global motion params syntax)
    在这里插入图片描述
    在这里插入图片描述

  5. 全局参数语法(Global param syntax)
    - 注意:当 force_integer_mv 等于 1 时,仍然会读取一些用于平移分量的小数位。然而,在设置全局运动矢量(Setup Global MV)的过程中,这些小数位将被丢弃。
    在这里插入图片描述

  6. 解码带有引用的带符号下标指数语法(Decode signed subexp with ref syntax)

    • 注意:decode_signed_subexp_with_ref 将返回一个在 low 到 high - 1(含)范围内的值。
      在这里插入图片描述
  7. 解码带有引用的无符号下标指数语法(Decode unsigned subexp with ref syntax)

    • 注意:decode_unsigned_subex_with_ref 将返回一个在 0 到 mx - 1(含)范围内的值。
      在这里插入图片描述
  8. 解码下标语法(Decode subexp syntax)
    在这里插入图片描述

  9. 逆中心化函数(Inverse recenter function)
    在这里插入图片描述

  10. 电影颗粒参数语法(Film grain params syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  11. 时间点信息语法(Temporal point info syntax)
    在这里插入图片描述

帧 OBU 语法(Frame OBU syntax)

在这里插入图片描述

瓦片组 OBU 语法(Tile group OBU syntax)

  1. 通用瓦片组 OBU 语法( General tile group OBU syntax)
    在这里插入图片描述
    在这里插入图片描述

  2. 解码瓦片语法(Decode tile syntax)
    在这里插入图片描述
    其中 Sgrproj_Xqd_Mid 和 Wiener_Taps_Mid 是被规定为如下的常量查找表:
    在这里插入图片描述

  3. 清除块解码标志函数(Clear block decoded flags function)
    在这里插入图片描述

  4. 解码分区语法(Decode partition syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  5. 解码块语法(Decode block syntax)
    在这里插入图片描述
    在这里插入图片描述
    其中 reset_block_context() 被指定为:
    在这里插入图片描述

  6. 模式信息语法(Mode info syntax)
    在这里插入图片描述

  7. 帧内模式信息语法(Intra frame mode info syntax)
    在这里插入图片描述
    在这里插入图片描述

  8. 帧内段ID语法(Intra segment ID syntax)
    在这里插入图片描述

  9. 读取段 ID 语法(Read segment ID syntax)
    在这里插入图片描述
    其中neg_deinterleave是一个函数,定义如下:
    在这里插入图片描述

  10. skip模式语法(Skip mode syntax)
    在这里插入图片描述

  11. skip语法(Skip syntax)
    在这里插入图片描述

  12. 量化器索引增量语法(Quantizer index delta syntax)
    在这里插入图片描述

  13. 环路滤波增量语法(Loop filter delta syntax)
    在这里插入图片描述

  14. 段特征激活函数(Segmentation feature active function)
    在这里插入图片描述

  15. 变换大小语法(TX size syntax)
    在这里插入图片描述
    Max_Tx_Depth 表指定了每个块大小的最大变换深度:
    在这里插入图片描述
    注意:Max_Tx_Depth 包含了变换必须分割的次数,以达到 4x4 变换大小。这个数字可以大于 MAX_TX_DEPTH。然而,不可能编码一个大于 MAX_TX_DEPTH 的变换深度,因为 tx_depth 只能编码范围在 0 到 2 之间的值。

  16. 块变换大小语法(Block TX size syntax)
    在这里插入图片描述

  17. 可变变换大小语法(Var TX size syntax)
    read_var_tx_size 用于读取变换大小树。
    在这里插入图片描述

  18. 帧间模式信息语法(Inter frame mode info syntax)
    在这里插入图片描述

  19. 帧间段ID语法(Inter segment ID syntax)
    这在跳过语法元素被读取之前(preSkip 等于 1)和之后(preSkip 等于 0)被调用。
    在这里插入图片描述
    在这里插入图片描述

  20. 是帧间语法(Is inter syntax)
    在这里插入图片描述

  21. 获取段ID函数(Get segment ID function)
    预测的段ID是当前块覆盖的分割图中屏幕上的区域中找到的最小值。
    在这里插入图片描述

  22. 帧内块模式信息语法(Intra block mode info syntax)
    在这里插入图片描述

  23. 帧间模式信息语法(Inter block mode info syntax)
    在这里插入图片描述
    在这里插入图片描述
    函数 has_nearmv 被定义为:
    在这里插入图片描述
    函数needs_interp_filter被定义为:
    在这里插入图片描述

  24. 过滤帧内模式信息语法(Filter intra mode info syntax)
    在这里插入图片描述

  25. 参考帧语法(Ref frames syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  26. 分配运动矢量语法(Assign MV syntax)
    在这里插入图片描述
    在这里插入图片描述

  27. 读取运动模式语法(Read motion mode syntax)
    在这里插入图片描述
    其中 is_scaled 是一个函数,用于确定参考帧是否使用了缩放,并且被指定为:
    在这里插入图片描述

  28. 读取帧间帧内语法(Read inter intra syntax)
    在这里插入图片描述

  29. 读取复合类型语法(Read compound type syntax)
    在这里插入图片描述
    在这里插入图片描述

  30. 获取模式函数(Get mode function)
    在这里插入图片描述

  31. 运动矢量语法(MV syntax)
    在这里插入图片描述

  32. 运动矢量分量语法(MV component syntax)
    在这里插入图片描述

  33. 计算预测语法(Compute prediction syntax)
    在这里插入图片描述
    在这里插入图片描述

  34. 残差语法(Residual syntax)
    在这里插入图片描述
    在这里插入图片描述

  35. 变换块语法(Transform block syntax)
    在这里插入图片描述
    在这里插入图片描述

  36. 变换树语法(Transform tree syntax)
    transform_tree 用于读取以变换树形式排列的多个变换块。
    在这里插入图片描述
    其中 find_tx_size 用于找到与给定尺寸匹配的变换大小,其定义如下:
    在这里插入图片描述

  37. 获取变换大小函数(Get TX size function)
    在这里插入图片描述

  38. 获取平面残差尺寸函数(Get plane residual size function)
    get_plane_residual_size 函数返回指定平面的残差块的大小。(残差块的宽度和高度至少都将等于4。)
    在这里插入图片描述
    Subsampled_Size 表被定义为:
    在这里插入图片描述

  39. 系数语法(Coefficients syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  40. 计算变换类型函数(Compute transform type function)
    在这里插入图片描述
    在这里插入图片描述
    其中 Tx_Type_In_Set_Inter 和 Tx_Type_In_Set_Intra 两个表被如下指定:
    在这里插入图片描述

  41. 获取扫描函数(Get scan function)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  42. 帧内角度信息亮度分量语法(Intra angle info luma syntax)
    在这里插入图片描述

  43. 帧内角度信息色度分量语法(Intra angle info chroma syntax)
    在这里插入图片描述

  44. 是否为方向模式函数(Is directional mode function)
    在这里插入图片描述

  45. 读取 CFL alphas 语法(Read CFL alphas syntax)
    在这里插入图片描述

  46. 调色板模式信息语法(Palette mode info syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    • 函数 sort(arr, i1, i2)会将数组 arr 中的子数组就地按升序排序。需要排序的子数组包含索引 i1 和 i2 之间的元素(包括索引 i1 和 i2)。
    • 注意:调色板颜色是按升序生成的。调色板缓存也是按升序排列的。这意味着在实现中,排序函数可以通过合并两个已排序的列表来替代。
    • 其中,函数 get_palette_cache,用于将上方和左侧的调色板合并形成一个缓存,其规定如下:

在这里插入图片描述
在这里插入图片描述
注意:get_palette_cache 函数的作用相当于将上方和左侧可用的调色板颜色一起排序,并去除任何重复项。

  1. 变换类型语法(Transform type syntax)
    在这里插入图片描述
    在这里插入图片描述
    其中函数中使用的反转表被如下指定:
    在这里插入图片描述

  2. 获取变换设置函数(Get transform set function)
    在这里插入图片描述

  3. 调色板标记语法(Palette tokens syntax)
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  4. 调色板颜色上下文函数(Palette color context function)
    在这里插入图片描述
    在这里插入图片描述

  5. 是否在内部函数(Is inside function)
    is_inside 函数用于确定候选位置是否在当前瓦片内部。
    在这里插入图片描述

  6. 是否在内部滤波器区域函数(Is inside filter region function)
    is_inside_filter_region 函数用于确定候选位置是否在用于CDEF滤波的区域内。
    在这里插入图片描述

  7. 限制运动矢量行函数(Clamp MV row function)
    在这里插入图片描述

  8. 限制运动矢量列函数(Clamp MV col function)
    在这里插入图片描述

  9. 清除 CDEF 函数(Clear CDEF function)
    在这里插入图片描述

  10. 读取CDEF语法(Read CDEF syntax)
    在这里插入图片描述

  11. 读取循环恢复语法(Read loop restoration syntax)
    在这里插入图片描述
    在这里插入图片描述
    其中 count_units_in_frame 是一个被指定为的函数:
    在这里插入图片描述

  12. 读取循环恢复单元语法(Read loop restoration unit syntax)
    在这里插入图片描述
    在这里插入图片描述
    其中,Wiener_Taps_Min、Wiener_Taps_Max、Wiener_Taps_K、Sgrproj_Xqd_Min 和 Sgrproj_Xqd_Max 是固定的查找表:
    在这里插入图片描述
    Sgr_Params 是在第 7.17.3 节定义的固定查找表,而 decode_signed_subexp_with_ref_bool 是一个函数,其规定如下:
    在这里插入图片描述
    注意:decode_signed_subexp_with_ref_bool 函数与 decode_signed_subexp_with_ref 函数相似,不同之处在于用于表示符号的比特是使用算术编码而不是直接从比特流中读取。

瓦片列表 OBU 语法(Tile list OBU syntax)

  1. 通用瓦片列表 OBU 语法(General tile list OBU syntax)
    在这里插入图片描述

  2. 瓦片列表头目语法(Tile list entry syntax)
    在这里插入图片描述

标签:function,函数,Bitstream,Specification,AV1,syntax,语法,OBU,字节
From: https://blog.csdn.net/yanceyxin/article/details/142214605

相关文章

  • SWEN30006_2024_SM2 Specification for Automail
    Project 1: SpecificationforAutomail: Software Modellingand Design (SWEN30006_2024_SM2)Project 1:Specificationfor AutomailBackground:AutomailDeliveringSolutionsInc. (DS) has recentlydevelopedand provideda Robotic Mail Deliverysyst......
  • Project 1: Specification for Automail
    Project1:SpecificationforAutomailBackground:AutomailDeliveringSolutionsInc.(DS)hasrecentlydevelopedandprovidedaRoboticMailDeliverysystemcalledAutomailtothemarket.Automailisanautomatedmailsortinganddeliverysystemdesigned......
  • Bluetooth Profile Specification之 HFP简介与嵌入式
    BluetoothProfileSpecification丰富了蓝牙技术的应用领域,其中包括了HFP(Hand-FreeProfile)——一个在嵌入式系统中广泛使用的蓝牙配置文件,本文将重点介绍HFP的相关信息,并提供相关的源代码示例。HFP是为了提供嵌入式设备与蓝牙手机之间的音频通信而设计的,通过支持HFP嵌入式设......
  • Linux杀毒软件clamav1.3.1离线安装及杀毒
    Linux杀毒软件clamav1.3.1离线安装及杀毒wgethttps://www.clamav.net/downloads/production/clamav-1.3.1.linux.x86_64.rpmrpm-ivh--prefix=/usr/local/clamavclamav-1.3.1.linux.x86_64.rpmgroupaddclamavuseradd-gclamavclamavmkdir-p/usr/local/clamav/logsmkdir-......
  • UNS0874A | UNC4672AV1 HIEE205012R1 间接励磁系统
    产品型号:UNS0874A产品类别:间接励磁系统产品成色:全新、非全新质量保障:365天原产地;美国库存;有货品牌;ABB定义:UNS0874A驱动控制器是电动车或混动车等设备的核心控制部件之一,负责将电池组提供的高压直流电转化为适合驱动电机工作的交流电信号,从而控制电机的旋转速度和......
  • flutter pub get 的时候:A dependency specification must be a string or a mapping.
    想在pubspec.yaml文件中添加字体:报错了fonts:-family:MiaoZifonts:-asset:assets/fonts/MiaoZi-YunYingTi-2.ttfweight:500看了这篇文章解决了我原来是加在dependencies:flutter:sdk:flutter#新添加的依赖fonts:......
  • libaom 编码器实验 AV1 标准 SVC 分层编码
    SVC编码视频SVC编码,即ScalableVideoCoding(可适性视讯编码或可分级视频编码),是H.264/MPEG-4AVC编码的一种扩展,它提供了更大的编码弹性,并且具有时间可适性(TemporalScalability)、空间可适性(SpatialScalability)及讯杂比(质量)可适性(SNRScalability)三大特性。这种编码方式允......
  • XILINX set_property BITSTREAM.CONFIG.CONFIGRATE
    起因在一个新的XILINXXCKU040FPGA设计中,SPI支持X8模式,此时BIT生成约束如下:#thehardwaresupportspix8,willbootfasterfromflash#set_propertyBITSTREAM.CONFIG.SPI_BUSWIDTH8[current_design]#set_propertyCONFIG_MODESPIx8[current_design]set_property......
  • HITSC_5_Designing Specification
    目标规约,前置后置条件,欠定规约、非确定规约、陈述式、操作式规约、规约的强度及其比较规约作用给自己和别人写出设计决策:如final、数据类型定义作为契约,服务端与客户端达成一致调用方法时双方都要遵守便于定位错误解耦,无需告诉客户端具体实现,变化也无需通知客户端,扮演防......
  • 【论文解读】Performance of AV1 Real-Time Mode
    论文下载地址:PerformanceofAV1Real-TimeMode时间:2020.10级别:IEEE作者:LudovicRoux摘要背景:COVID-19疫情增加了对数字互动的需求,使得实时或低延迟编解码器变得更加重要。现状:大多数编解码器,包括AV1,主要关注于编码效率,这是视频点播(VOD)的主要改进目标。研究目的:阐......