av1学习笔记(二):sequence_header_obu

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博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/949425.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

WPF区域导航+导航参数使用+路由守卫+导航日志

背景:使用ContentControl控件实现区域导航是有Mvvm框架的WPF都能使用的,不限于Prism 主要是将ContenControl控件的Content内容在ViewModel中切换成不同的用户控件 下面是MainViewModel: private object body;public object Body {get { retu…

Unity中 Xlua使用整理(一)

1.安装: 从GitHub上下载Xlua源码 Tencent/xLua: xLua is a lua programming solution for C# ( Unity, .Net, Mono) , it supports android, ios, windows, linux, osx, etc. (github.com) 下载Xlua压缩包,并解压将Aseet文件夹中的Xlua和Plugins文件夹复制到Unit…

Matlab仿真径向受压圆盘光弹图像

Matlab仿真径向受压圆盘光弹图像-十步相移法 主要参数 % 定义圆盘参数 R 15; % 圆盘半径,单位:mm h 5; % 圆盘厚度,单位:mm P 300; % 径向受压载荷大小,单位&#xff…

基于Django的学校智能图书馆借书归还订阅管理系统

完整源码项目包获取→点击文章末尾名片!

【设计模式-2】23 种设计模式的分类和功能

在软件工程领域,设计模式是解决常见设计问题的经典方案。1994 年,Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides(四人帮,GoF)在《设计模式:可复用面向对象软件的基础》一书中系统性地总结了…

阿里云代理商热销产品推荐

在数字化浪潮的推动下,企业对于云计算的依赖日益加深。阿里云,作为中国领先的云计算服务提供商,为企业提供了丰富多样的云产品和服务。本文将聚焦于阿里云代理商热销产品推荐,探讨其如何帮助企业高效利用云资源,加速数…

[redux] 异步逻辑的两种写法

createAsyncThunk | Redux Toolkit 第一种, extraReducers 普通的reducers只能写同步代码 异步必须得用中间件的形式,就是异步代码调用完有结果了, 再调用同步的reducer, 大概这么理解, 第一种怎么用呢? 先用一个异步函数 const fetchUserById createAsyncThunk(users/fet…

在Java中使用有符号类型模拟无符号整数的技巧

有符号整数和无符号整数 有符号整数:可以表示正数、负数和零。例如,Java中的 byte 类型是有符号的,其范围是 -128 到 127.无符号整数:只能表示非负数(即零和正数)。例如,无符号 byte 应该表示的…

51单片机——8*8LED点阵

LED 点阵的行则为发光二极管的阳极,LED 点阵的列则为发光二极管的阴极 根据 LED 发光二极管导通原理,当阳极为高电平,阴极为低电平则点亮,否则熄灭。 因此通过单片机P0口可控制点阵列,74HC595可控制点阵行 11 脚 SR…

Flutter:邀请海报,Widget转图片,保存相册

记录下,把页面红色区域内的内容,转成图片后保存到相册的功能 依赖 # 生成二维码 qr_flutter: ^4.1.0 # 保存图片 image_gallery_saver_plus: ^3.0.5view import package:demo/common/index.dart; import package:ducafe_ui_core/ducafe_ui_core.dart; i…

C++Primer const限定符

欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…

C语言 游动的小球

代码如下&#xff1a; 在这里插入代码片#include<stdio.h> #include<stdlib.h> #include<windows.h>int main() {int i,j;int x 5;int y 10;int height 20;int velocity_x 1;int velocity_y 1;int left 0;int right 20;int top 0;int bottom 10;while(1){…

动漫推荐系统django+vue前台后台完整源码

完整源码项目包获取→点击文章末尾名片&#xff01;

Chapter 1 Understanding Large Language Models

文章目录 Understanding Large Language ModelsWhat is an LLM?Applications of LLMSStages of building and using LLMsUsing LLMS for different tasksA closer look at the GPT architectureBuilding a large language modelSummary Understanding Large Language Models …

什么是VLAN?

VLAN&#xff08;Virtual Local Area Network&#xff0c;虚拟局域网&#xff09;是一种将物理局域网划分成多个逻辑上独立的虚拟网络的技术。VLAN不依赖于设备的物理位置&#xff0c;而是通过逻辑划分&#xff0c;将局域网内的设备虚拟地组织到同一组。这种技术允许网络管理员…

【君正T31开发记录】12.编译工具相关总结及介绍

移植交叉工具包的时候&#xff0c;发现这是很多工具的集合包&#xff1b;以及写makefile的时候&#xff0c;也需要了解下这些工具的作用及用法&#xff0c;这里总结记录一下常见的工具及相关用法。 g C编译器&#xff0c;用于编译C源代码文件&#xff0c;这个很常见&#xff0…

Appium(一)--- 环境搭建

一、Android自动化环境搭建 1、JDK 必须1.8及以上(1) 安装&#xff1a;默认安装(2) 环境变量配置新建JAVA_HOME:安装路径新建CLASSPath%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar在path中增加&#xff1a;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin&#xff1b;(3) 验证…

猫的眼睛有几种颜色?

在猫咪神秘而迷人的世界里&#xff0c;它们的眼睛犹如璀璨星辰&#xff0c;闪烁着各异的光芒&#xff0c;颜色丰富多样&#xff0c;令人着迷。 猫眼睛的颜色&#xff0c;粗略一数&#xff0c;常见的便有黄色、蓝色、绿色、棕色&#xff0c;还有那神秘的异瞳。这些色彩并非无端生…

PHP框架+gatewayworker实现在线1对1聊天--接收消息(7)

文章目录 接收消息的原理接收消息JavaScript代码 接收消息的原理 接收消息&#xff0c;就是接受服务器转发的客户端消息。并不需要单独创建函数&#xff0c;因为 ws.onmessage会自动接收消息。我们需要在这个函数里进行处理。因为初始化的时候&#xff0c;已经处理的init类型的…

校园周边美食探索及分享平台的设计与实现(源码+数据库+文档)

亲测完美运行带论文&#xff1a;文末获取源码 文章目录 项目简介&#xff08;论文摘要&#xff09;运行视频包含的文件列表&#xff08;含论文&#xff09;前台运行截图后台运行截图 项目简介&#xff08;论文摘要&#xff09; &#xff1a; 美食一直是与人们日常生活息息相关…