av1学习笔记(一):码流的整体框架

news2025/1/6 10:58:07

av1学习笔记(一):码流的整体框架


目录

  • av1学习笔记(一):码流的整体框架
    • 1. 码流结构分析:
    • 2. OBU信息分析
      • 2.1 obu_header
      • 2.2 obu_size
      • 2.3 drop_obu
      • 2.4 sequence_header_obu
      • 2.5 temporal_delimiter_obu
      • 2.6 frame_header_obu
      • 2.7 tile_group_obu
      • 2.8 metadata_obu
      • 2.9 frame_obu
      • 2.9 tile_list_obu
      • 2.10 padding_obu,reserved_obu
    • 3. 参考资料


1. 码流结构分析:

🍟视频是由很多张图片组成,对视频的压缩重点也是对图片的压缩;采用av1编解码协议生成的码流结构如下所示:
请添加图片描述
🍗一段视频的码流结构为:bitstream-> temporal_unit->frame_unit->open_bitstream_unit (OBU)。

  • obu内包含多帧图片的信息及其一些配置信息,一个obu也可能只是些header信息(配置信息),具体取决于obu的类型;
  • obu中一张图片(frame_obu)又被划分为多个tile(tile_group_obu);
  • 一个tile被划分为多个LCU(LCU大小为6464或128128,可配置);
  • 一个LCU可以继续往下划分为最小8*8的block。
  • Block 可以继续分为CU + TU
  • CU是预测信息,可以根据同一帧已经完成编解码的部分来推测当前位置信息(帧内预测),也可以根据前面已经解码出来的其他图像来推测当前位置的信息(帧间预测);CU存储的就是选取av1提供的哪种推测策略(mode);由于推测出来的图像和原图存在误差,这个误差就经过处理后存储才TU中;根据CU,TU的信息,可以恢复出来一个block图像;
  • 例如,2,4,6,8,(9),我们编解码(9)时,CU可以存储为(mode = +2), TU存储为(tu_dat = -1), 根据cu的mode(2)和前一个位置的信息8,推测当前位置为10,再根据tu_dat得到当前实际数据为9;

2. OBU信息分析

2.1 obu_header

🍖obu中最靠前部分是码流是obu的头信息(obu_header),具体包含以下内容:

  • obu_forbidden_bit : 一定是0,没有实际意义;
  • obu_type表示obu的类型(2.4-2.11有简略的);
obu_typeName of obu_type含义
0Reserved预留位(正常情况下不会出现)
1OBU_SEQUENCE_HEADER该obu是图像宽高等配置信息
2OBU_TEMPORAL_DELIMITERSeenFrameHeader置0
3OBU_FRAME_HEADER该obu是frame_type等帧信息
4OBU_TILE_GROUP该obu是一帧图像(多个tile)
5OBU_METADATA视频分辨率,帧率等配置信息
6OBU_FRAME与OBU_TILE_GROUP类似,详见2.8
7OBU_REDUNDANT_FRAME_HEADER与OBU_FRAME_HEADER含义相似,暂未发现区别
8OBU_TILE_LISTTile的位置等信息
9-14Reserved无实质内容,空白
15OBU_PADDING无实质内容,空白
  • obu_extension_flag:是否为增强层(该flag为0,则不编码temporal_id和spatial_id,默认为0,即后续码流的图像为基础层;
  • temporal_id,spatial_id : obu_extension_flag为0时,这两个flag默认为0,大于0时表示为增强层图像;
  • obu_has_size_field : 该码流里是否包含了obu_size; obu_size表示该obu若是frame或者一组tile信息时,这些frame和tile的所占字节长度;默认值为obu_size = obu_length - 1 - obu_extension_flag;

2.2 obu_size

🍝obu_size表示该obu若是frame或者一组tile信息时,这些frame和tile的所占字节长度;
🍛默认值为obu_size = obu_length - 1 - obu_extension_flag;

2.3 drop_obu

🍤 根据协议,obu_header的内容和之前sequence_header_obu解码出的一些信息对不上时,表示异常,该obu无效;

2.4 sequence_header_obu

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

2.5 temporal_delimiter_obu

🍣 obu_type = OBU_TEMPORAL_DELIMITER时,该obu不包含实质内容,将变量SeenFrameHeader置为0后,即结束
🍥 SeenFrameHeader = 0 表示该帧的配置信息(如帧类型,frame_type,是I帧,P帧还是B帧)还没有被接收;
🍙 I帧:只支持帧内预测,PB帧即支持帧内预测,也支持帧间预测

2.6 frame_header_obu

🍘 obu_type = OBU_FRAME_HEADER 或OBU_REDUNDANT_FRAME_HEADER,
时,若SeenFrameHeader = 0,则该obu剩下的码流表示帧类型(frame_type)等帧信息;若SeenFrameHeader = 1,则frame_header直接copy之前曾解码过的frame_header信息;

2.7 tile_group_obu

🍚obu_type = OBU_TILE_GROUP 时,obu表示一帧图像压缩信息(多个tile)

2.8 metadata_obu

🍜 obu_type =OBU_METADATA 时,obu表示视频分辨率,帧率等配置信息;

2.9 frame_obu

🍲 obu_type = OBU_ FRAME时,obu表示一帧图像压缩信息(多个tile),
🍢 与tile_group_obu的区别,可以简单理解为frame_obu = frame_header_obu + tile_group_obu;

2.9 tile_list_obu

🍡 obu_type = OBU_TILE_LIST时,该obu表示后续编解码的tile的位置信息,及其对应的frame的大小等信息;

2.10 padding_obu,reserved_obu

🥚 obu_type = Reserved或OBU_PADDING时,该obu后续码流无实质内容

3. 参考资料

【1】av1官方协议文档 https://aomedia.org/specifications/av1/

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

I2C(一):存储器模式:stm32作为主机对AT24C02写读数据

存储器模式:在HAL库中,I2C有专门对存储器外设设置的库函数 I2C(一):存储器模式的使用 1、I2C轮询式写读AT24C02一页数据2、I2C轮询式写读AT24C02多页数据3、I2C中断式写读AT24C02一页数据4、I2C使用DMA式写读AT24C02一…

Ansys Discovery 中的网格划分方法:探索模式

本篇博客文章将介绍 Ansys Discovery 中可用于在探索模式下进行分析的网格划分方法。我们将在下一篇博客中介绍 Refine 模式下的网格划分技术。 了解 Discovery Explore 模式下的网格划分 网格划分是将几何模型划分为小单元以模拟系统在不同条件下的行为的过程。这是通过创建…

MySQL秘籍之索引与查询优化实战指南

MySQL秘籍之索引与查询优化实战指南 目录 MySQL秘籍之索引与查询优化实战指南相关阅读索引相关EXPLAIN 版本 1. 初级篇1.1 【练体术】基础1.1.1 库操作1.1.1 表操作创建一个表增加表字段 1.1.2 增删改插入一条数据删除一条数据更新一条数据库 1.1.3 查询查询所有数据条件查询&a…

MySQL8.0复制原理和部署配置步骤

1. mysql 主从复制原理 在从库上执行change master to;会将主库的信息保存到从库中的master.info文件中在从库执行start slave;开启io_thread, sql_thread线程;io_thread工作;io_thread通过master.info文件中主库的连接信息去连接主库;连接成…

智联视频超融合平台:电力行业的智能守护者

文章目录 一、远程实时监控与设备状态监测二、提高应急响应能力三、实现无人值守与减员增效四、保障电力设施安全与防范外部破坏五、提升电网运行管理效率与决策科学性六、助力电力企业数字化转型与智能化发展七、智联视频超融合平台 在当今数字化浪潮下,视频联网平…

上传本地项目或文件到SVN服务器(图片讲解,超简单)

上传本地项目或文件到SVN服务器(图片讲解,超简单) 1、使用TortoiseSVN2、输入SVN远程仓库地址3、添加文件或文件夹 需求:将本地的文件上传到SVN服务器上指定路径。前提:已经安装好TortoiseSVN 1、使用TortoiseSVN 右…

单周期CPU电路设计

1.实验目的 本实验旨在让学生通过设计一个简单的单周期 CPU 电路,深入理解 RISC-V 指令集的子集功能实现,掌握数字电路设计与实现的基本流程,包括指令解析、部件组合、电路设计以及功能仿真等环节,同时培养verilog HDL编程能力和…

ROS功能包开机自启动(2步解决)

为了实现小车在开机后能自动启动相关功能模块需要解决两个问题 1.准备启动脚本文件加载对应的rosnode和roslaunch,整合相关节点按需要顺序进行,防止报错 2.设置开启启动脚本相关内容 既然是自启动,不能避免USB数据传输的一些问题&#xff…

【ArcGISPro/GeoScenePro】解决常见的空间参考和投影问题

修复空间参考缺失的图像 数据 https://arcgis.com/sharing/rest/content/items/535efce0e3a04c8790ed7cc7ea96d02d/data 查看属性坐标 查看属性范围 范围值并不是零或接近于零。 这意味着栅格具有范围,因此其已正确进行

NLP 中文拼写检测纠正论文-08-Combining ResNet and Transformer

拼写纠正系列 NLP 中文拼写检测实现思路 NLP 中文拼写检测纠正算法整理 NLP 英文拼写算法,如果提升 100W 倍的性能? NLP 中文拼写检测纠正 Paper java 实现中英文拼写检查和错误纠正?可我只会写 CRUD 啊! 一个提升英文单词拼…

【paddle】初次尝试

张量 张量是 paddlepaddle, torch, tensorflow 等 python 主流机器学习包中唯一通货变量,因此应当了解其基本的功能。 张量 paddle.Tensor 与 numpy.array 的转化 import paddle as paddle import matplotlib.pyplot as plt apaddle.to_t…

如何在谷歌浏览器中使用屏幕录制功能

在日常使用电脑的过程中,我们经常会遇到需要记录屏幕操作的情况。无论是制作教学视频、保存游戏过程还是记录会议内容,谷歌浏览器的屏幕录制功能都能帮助我们轻松实现这些需求。那么,如何在谷歌浏览器中启用并使用屏幕录制功能呢?…

万里数据库GreatSQL监控解析

GreatSQL是MySQL的一个分支,专注于提升MGR(MySQL Group Replication)的可靠性及性能。乐维监控平台可以有效地监控GreatSQL,帮助用户及时发现并解决潜在的性能问题。 通过在GreatSQL服务器上安装监控代理,收集数据库性…

APM 3.0.2 | 聚合B站、油管和MF的音乐播放器,支持歌词匹配

APM(Azusa-Player-Mobile)是一款基于B站的第三方音频播放器,现已扩展支持YouTube Music、YouTube、本地音乐、AList和MusicFree等平台。它不仅提供视频作为音频播放,还具备排行榜、分区动态等功能。用户可以通过添加Alist地址接入…

HTML——61. 单行文本框和密码输入框(主讲input元素的type属性)

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>单行文本框和密码输入框</title></head><body><!--input元素的type属性&#xff1a;(必须要有)--> <!--单行文本框:1.type"text"2.可…

在Typora中实现自动编号

文章目录 在Typora中实现自动编号1. 引言2. 准备工作3. 自动编号的实现3.1 文章大纲自动编号3.2 主题目录&#xff08;TOC&#xff09;自动编号3.3 文章内容自动编号3.4 完整代码 4. 应用自定义CSS5. 结论 在Typora中实现自动编号 1. 引言 Typora是一款非常流行的Markdown编辑…

微机——计算机中的数制

目录 数制转换&#xff1a; 十进制数转为非十进制数&#xff1a; 二、八、十六进制数之间的转换&#xff1a; 数及字符的表示&#xff1a; 二进制数的加减运算&#xff1a; 无符号数的运算&#xff1a; 带符号数运算中的溢出问题&#xff1a; 计算机中常用的编码&#…

设计心得——流程图和数据流图绘制

一、流程图和数据流图 在软件开发中&#xff0c;画流程图和数据流图可以说是几乎每个人都会遇到。 1、数据流&#xff08;程&#xff09;图 Data Flow Diagram&#xff0c;DFG。它可以称为数据流图或数据流程图。其主要用来描述系统中数据流程的一种图形工具&#xff0c;可以将…

Node 如何生成 RSA 公钥私钥对

一、引入crypto模块 crypto 为node 自带模块&#xff0c;无需安装 const crypto require(crypto);二、封装生成方法 async function generateRSAKeyPair() {return new Promise((resolve, reject) > {crypto.generateKeyPair(rsa, {modulusLength: 2048, // 密钥长度为 …

壁纸样机神器,可以导出高清图片吗?

壁纸样机神器确实支持导出高清图片。根据搜索结果中的信息&#xff0c;壁纸样机神器提供了以下功能&#xff1a; 壁纸样机神器免费体验 高清壁纸上传&#xff1a;壁纸样机神器支持上传您自己的壁纸图片&#xff0c;推荐尺寸为1290 2796&#xff08;9:19.5&#xff09;&#xf…