av1学习笔记(二):sequence_header_obu

ops/2025/1/7 21:51:22/

av1sequence_header_obu_0">av1学习笔记(二):sequence_header_obu


目录

  • av1学习笔记(二):sequence_header_obu
  • 1,图片的编解码方式
    • 1.1 seq_profile:
    • 1.2 still_picture
    • 1.3 reduced_still_picture_header
    • 1.4 编解码图像的宽高
    • 1.5 use_128x128_superblock
    • 1.6 enable_filter_intra
    • 1.7 enable_intra_edge_filter
    • 1.8 enable_superres
    • 1.9 enable_cdef
    • 1.10 enable_restoration
    • 1.11 film_grain_params_present
  • 2,播放视频时的相关参数设置
    • 2.1 timing_info()视频帧率相关的一些信息;
    • 2.2 decoder_model_info()解码器的一些配置信息;
    • 2.3 视频设置
    • 2.4 sequence支持的编码策略的配置
  • 3,色彩空间配置color_config
  • 4,总结
  • 5,参考资料


obu_type = OBU_SEQUENCE_HEADER时,obu为sequence_header_obu,剩下的码流表示图像最大宽高等一系列的配置信息;此后的obu将采用这些信息来解码后续码流。


1,图片的编解码方式

1.1 seq_profile:

seq_profileBit depthYUV
08 or 10YUV420,YUV400
18 or 10YUV444
28 or 10YUV422,YUV400
212YUV420,YUV422,YUV444,YUV400
  • YUV表示图片为Y(亮度)和U,V(色度)三个矩阵组成;
  • YUV400表示图片只含有Y分量;
  • YUV420表示一个8x8的图片,由8x8的Y和4x4的U,4x4的V组成;
  • Bit depth表示单个像素点的位宽;
  • 结合color_config内的内容,才能确定最终图片类型;

1.2 still_picture

♈️still_picture : 若为 1,表示这些配置只对后面一个frame有效,否则表示对后面多个frame有效。

1.3 reduced_still_picture_header

♉️若该flag为1,则只需编码seq_level_idx[0] ;帧率等一些播放相关的参数,变为默认值,不需要在码流里进行编解码;

♊️seq_level_idx: 对图像播放时的最大宽高,支持的最大帧率等的限制参数;软硬件可以根据seq_level_idx对后续视频的编解码工作进行合理的资源配置;

1.4 编解码图像的宽高

  • frame_width_bits_minus_1 : 表示图像最大宽度的变量的位宽
  • frame_height_bits_minus_1: 表示图像最大高度的变量的位宽
  • max_frame_height_minus_1: 表示该后续obu编解码图像的最大高度
  • max_frame_width_minus_1: 表示该后续obu编解码图像的最大宽度

1.5 use_128x128_superblock

♋️ 表示图像编码单位(1:128x128,0:64x64)

1.6 enable_filter_intra

♌️ 表示是否允许开启帧内滤波; 编解码时协议是按照128x128,64x64为单位进行的,后续会被划分成更小,最小至4*4,因此恢复后的图像可能存在块状效应。帧内滤波可以使得该区域的块状效应得到减轻,视觉上更加平滑自然。

1.7 enable_intra_edge_filter

♍️ 也表示是否允许开启帧内滤波。与enable_filter_intra相比,enable_intra_edge_filter更侧重于块边缘部分的滤波。enable_filter_intra则更广泛些;

1.8 enable_superres

♎️ enable_superres 表示是否支持启用超分辨率功能(提高视频分辨率);可以根据是否启用这个功能对后续视频的编解码工作进行合理的资源配置;

1.9 enable_cdef

♏️ 是否允许使用CDEF滤波器;

♐️ CDEF:Constrained Directional Enhanced Filter(约束方向增强滤波器),是非线性空间滤波器,该滤波器以8x8 为基本单位,通过沿着物体的方向进行滤波。CDEF目的是为了消除变换、量化带来的振铃效应,同时还能保留物体边缘的清晰度,提升重建图像的质量【2】。

1.10 enable_restoration

♑️ 是否开启图像或视频的恢复功能。开启后可以通过各种算法来修复图像模糊的地方,降低噪声污染等问题;

1.11 film_grain_params_present

♒️ film_grain_params_present表示是否开启胶片颗粒(film grain)相关功能;
♓️ 胶片颗粒模仿了老电影中看到的颗粒感。这个效果能够让画面看起来有年代感【3】。


2,播放视频时的相关参数设置

⛎ reduced_still_picture_header为1时,以下参数为默认值,不在码流里进行编解码

  • timing_info_present_flag为1时,decoder_model_info_present_flag从码流中解码得出。
  • 若timing_info_present_flag为0时,decoder_model_info_present_flag为0。
  • 这两个flag表示了以下一些语法元素是由码流中解码得出,还是默认值;

2.1 timing_info()视频帧率相关的一些信息;

🔯timing_info_present_flag为1时,该函数下的语法元素有效;否则为默认值

  • num_units_in_display_tick :画面的更新频率(多少个时间单位更新一次)
  • time_scale : 时间单位(1秒里包含了多少个时间单位)
  • equal_picture_interval:表示视频帧之间是否具有相等的间隔时间,若不相等,需要在码流里编码这个时间;
  • num_ticks_per_picture_minus_1(equal_picture_interval为1时有效):每帧显示多久,和num_units_in_display_tick,time_scale共同决定帧率;

2.2 decoder_model_info()解码器的一些配置信息;

🅰️decoder_model_info_present_flag为1时,该函数下的语法元素有效;否则为默认值

  • buffer_delay_length_minus_1:缓冲的buffer设置相关参数,解码器根据收到的 “buffer_delay_length_minus_1” 的值来确定缓冲策略
  • num_units_in_decoding_tick:一个解码周期(decoding tick)内所包含的时间单位数量(时间单位time_scale),也会影响到实际帧率;
  • buffer_removal_time_length_minus_1:buffer缓存的时间单位长度
  • frame_presentation_time_length_minus_1:图像呈现时间,通过修改该参数可以实现快进放慢等效果;

2.3 视频设置

  • initial_display_delay_present_flag是否存在初始视频显示延迟
  • operating_points_cnt_minus_1 :视频操作点数量。一个视频可能有多种分辨率版本(如高清、标清),每种分辨率对应的播放设置就是一个操作点。
  • operating_point_idc[i] 每个操作点的标识符;
  • seq_tier:序列层级(分辨率,帧率方面)。编解码器会根据设定的 “seq_tier” 来决定采用何种编码参数和策略。
  • decoder_model_present_for_this_op[i]:是否存在关于这个层级的解码器配置信息;
  • operating_parameters_info[i]: 不同层级的解码器的buffer的配置信息;
  • initial_display_delay_present_for_this_op[ i ]:这个i层级是否存在初始视频显示延迟
  • initial_display_delay_minus_1[ i ]:i层级初始视频显示延迟时间;
  • frame_id_numbers_present_flag,delta_frame_id_length_minus_2,additional_frame_id_length_minus_1(frame_id_numbers_present_flag为1时,后两者才有效),为frame提供id标识,方便在复杂情况下准确定位;

2.4 sequence支持的编码策略的配置

  • enable_interintra_compound : 是否采用帧间和帧内复合预测的编码方式【4】
  • enable_masked_compound:是否采用带掩码的复合编码技术。掩码用于界定或区分视频帧内不同区域,以便将不同的编码方式应用到特定的区域上,实现更高效且有针对性的视频编码。
  • enable_warped_motion:是否启用扭曲运动(warped motion)相关的编码技术。能更好的捕捉视频的动态变化;
  • enable_dual_filter:是否启用双滤波器。(可以提升画质)
  • enable_order_hint:是否启用顺序提示(order hint)功能,该功能可以方便视频正确的呈现对应顺序的画面。
  • enable_jnt_comp:是否启用联合压缩(joint compression)技术,实现更好的压缩效果(enable_order_hint为1时有效)。
  • enable_ref_frame_mvs:是否启用参考帧运动矢量技术(enable_order_hint为1时有效)
  • order_hint_bits_minus_1:后续frame的顺序信息所占的位宽(enable_order_hint为1时有效)
  • seq_choose_screen_content_tools,seq_force_screen_content_tools : 屏幕内容处理工具的选择,及其是否使用的配置信息
  • seq_choose_integer_mv,seq_force_integer_mv运动矢量是否采用整数形式的选择机制的配置信息(seq_force_screen_content_tools > 0有效)

3,色彩空间配置color_config

🅱️ 该函数里解码出的内容和seq_profile结合,共同判断图像bit位宽,YUV格式等信息。
🆎此外还有separate_uv_delta_q,会影响到uv量化所用到的QP值;


4,总结

💠 sequence_header_obu内的信息是视频帧率配置,后续几组图像支持的最大宽高,图片位宽,YUV格式以及解码器的配置,还有是否支持一些编解码策略的配置;

5,参考资料

【1】 av1官方协议文档
【2】 AV1中的CDEF滤波器解析-CSDN博客
【3】 Unity 后处理(Post-Processing) – (2)创建后处理配置文件_unity volume下的color adjustments怎么用代码控制-CSDN博客
【4】 av1学习笔记(一):码流的整体框架-CSDN博客


http://www.ppmy.cn/ops/148281.html

相关文章

python基础004--flask

文章目录 1.学习目的2.web开发3.代码4.结果展示1.学习目的 最近有粉丝想我写一篇关于web开发的python案例,于是借此机会,2024年最后一天,写一个,祝大家学业有成,万事如意,平安喜乐~ 2.web开发 使用Python进行Web开发通常涉及以下步骤: 选择Web框架: 选择一个适合你项…

探索报表软件的世界:山海鲸、Tableau与Power BI比较

概述 本文将为大家介绍五款优秀的报表软件,其中包括山海鲸报表、FineReport、Tableau、Power BI 和 SAP Crystal Reports。每款软件都有其独特的功能和优势,适用于不同规模和需求的企业与个人。文章从报表设计简便性、数据整合能力、可视化效果、适用场…

网络安全主动防御技术与应用

15.1 入侵阻断技术与应用 入侵阻断是网络安全主动防御的技术方法,其基本原理是通过对目标对象的网络攻击行为进行阻断,从而达到保护目标对象的目的。 1)原理 防火墙、IDS是保障网络安全不可缺少的基础技术,但是防火墙和IDS 本身…

图论:Tarjan算法的使用,找连通分量、割点、桥

感谢B站:“邋遢大哥233”的教学视频 Tarjan算法 Tarjan算法是处理有关图的连通性问题的算法。下面是有关图的连通性的一些基本概念:图的连通性 连通图(Connected Graph):无向图中任意两个顶点都是连通的&#xff0c…

C# 附加到进程中,发现断点不是实的断点

1、提示内容如下。 The breakpoint will not currently be hit. No symbols have been loaded for this document. 2、解决办法 Properties -> Debug-> Enable Debuggers: Check "Enable native code debugging"

某煤矿井上井下网络一体化管理项目

随着某煤矿智能化建设的不断推进,全矿网络内部署了大量网络设备、智能传感器、摄像头及环境监测器等关键设施。在此背景下,如何确保全网设备的敏捷响应与稳定运行,保障井上井下高速数据传输的畅通,以及实现全矿高效运维和安全生产…

使用javacv获取海康威视rtsp流的详细教程

使用JavaCV来获取海康威视(Hikvision)的RTSP流是一个涉及多个步骤的过程。下面将为你提供一个基本指南,帮助你通过JavaCV库从海康威视设备上拉取视频流。请注意,在开始之前确保你的开发环境已经配置好JDK,并且安装了Ma…

排序算法介绍

排序算法是一种将一组数据按照特定顺序进行排列的算法,在计算机科学和数据处理领域中具有重要地位。排序算法的主要目的是将无序的数据元素集合转换为有序的序列,这有助于提高数据的查找、检索和处理效率,以及满足各种应用场景的需求。以下是对常见排序算法的详细解释: 1.…