H266/VVC标准的编码结构介绍

2023-12-18 06:04

本文主要是介绍H266/VVC标准的编码结构介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

概述

CVS: H266的编码码流包含一个或多个编码视频序列(Coded Video Swquence,CVS),每个CVS以帧内随机接入点(Intra Random Access Point, IRAP)或逐渐解码刷新(Gradual Decoding Refresh, GDR)图像开始。CVS是时域独立可解码的基本单元。
CLVS: 编码视频序列层,当编码码流只包含一层时,CVS与CLVS一致。
AU: 访问单元
PU: 图像单元,不同于H265里的预测单元PU,在H266中的每个PU为一幅图像,包含一个或多个片Slice。CVS、AU、PU的关系如下。
在这里插入图片描述

Slice: 在H266中一图图像可以被分割成一片或多片Slice,目的是压缩数据的高效存储、传输,每个Slice对应一个单独的NAL单元。可以分成三类:

类型解释
I Slice该Slice内所有CU都使用帧内预测
P Slice在I Slice的基础上,该Slice内CU可以使用帧内预测、帧间预测,只使用图像参考列表list0
B Slice在P Slice的基础上,B Slice可以使用图像参考列表list0和list1

Tile: 一幅图像可以划分若干个Tile,即从水平方向和垂直方向将一幅分割成若个矩形区域,一个矩形区域就是一个Tile,每个Tile包含整数个CTU,可以独立解码。划分Tile的主要目的是在增强并行处理能力的同时又不引入新的错误扩散。如下图的Tile划分。
在这里插入图片描述

CTU: H266使用树形编码单元CTU作为编码的基本单位,一幅图像被分成一个CTU序列,对于三通道图像,CTU由一个亮度CTB和两个对应的色度CTB构成。亮度最大允许尺寸128x128,色度块的最大尺寸64x64。
CU: 每个按照二叉树、三叉树、四叉树递归划分为不同尺寸的矩形编码单元CU。不同于H265,有CU\PU\TU的划分,H266是预测、变换、编码均以CU为基本单位。Slice、CTU、CU的关系如下:
在这里插入图片描述
在H266中,CU可以是正方形或矩形,一个CTU可能只包含一个CU,也可能被划分多个CU。如下图利用了多类型树将一个CTU递归划分为多个CU的例子。
在这里插入图片描述

参数集

非编码数据的参数集作为non-VLCU进行传输,这为传递关键数据提供了高鲁棒机制。
在这里插入图片描述

VPS: 视频参数集,VPS主要用于承载视频分级信息,表达PU间的依赖关系,支持可分级视频编码或多视点视频编码。

信息
每个PU的子层标识,子层间的相互依赖关系
标识输出层集合
会话所需的有关操作点的关键信息,如档次、级别

SPS: 序列参数集,SPS包含CVS的共用编码参数,一旦被CVS引用,该CVS中所有编码图像都是用该参数集的编码参数,SPS通过被PPS引用而作用与编码图像,一个CVS中所有被使用的PPS必须引用同一个SPS。

信息
编码格式的信息
编码参数信息
与参考图像相关的信息
档次、层和级相关参数
时域分级信息
可视化可用信息VUI
其他信息

PPS: 图像参数集,每幅图像包含一个或多个 Slice,在 H266中除了PPS,还使用了PH、APS来表示图像的共同编码参数,可被图像内所有Slice使用。PPS中存在一些与SPS中相同的参数,PPS会覆盖SPS中的取值。主要包含:

信息
编码工具的可用性标志
量化过程相关语法元素
Tile相关语法元素
去方块滤波相关语法元素
Slice头中的控制信息
编码一幅图像时可以共用的其他信息

PH: 图像头,作用与PPS相似,PH承载频繁变换的编码参数信息,如IRAP /GDR图像标识、Slice类型允许、图像序列、去方块滤波、SAO参数等。
APS: 自适应参数集,主要包含的信息具有大量数据,如传递自适应环路滤波参数ALF、参数映射与色度缩放参数LMCS、量化矩阵参数。
DCI: 解码能力信息。
SEI: 附加增强信息。

档次、层、级别

Profile: 档次主要规定了编码器可采用哪些编码工具或算法。H266/VVC标准规定了6种档次。

档次解释
Main1010bit、4:2:0或单色采样格式
Main4:4:4 1010bit,4:4:4、4:2:2、4:2:0或单色采样格式
Main 10 Still Picture 和Main 4:4:4 10 Still Picture与对应的Main10档次共享同一个档次ID,但比特流限制为只能包含一副编码图像
Multilayer Main 10 和Multilayer Main 10 4:4:4支持多层编码

Tier: H266/VVC规定了2个层Tier,两个层分别是Main Tier(general_tier_flag=0)、High Tier(general_tier_flag=1)。
Level:H266/VVC规定了13个级别,支持从SQCIF 到8K多种分辨率的图像。图像的宽和高受到该级别定义参数MaxLumaPs的限制,还约束了水平方向和垂直方向Tile的最大数量,以及每秒Tile的最大数量。

参考

JVET提案系统: http://phenix.int-evry.fr/jvet/
JVET输出文档: https://www.itu.int/wftp3/av-arch/jvet-site/
JEM代码: https://jvet.hhi.fraunhofer.de/svn/svn_HMJEMSoftware/tags/
VTM代码: https://vcgit.hhi.fraunhofer.de/jvet/VVCSoftware_VTM
书籍: 新一代通用视频编码H266/VVC:原理、标准与实现[万帅 霍俊彦 马彦卓 杨付正/著]

这篇关于H266/VVC标准的编码结构介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/507294

相关文章

四种Flutter子页面向父组件传递数据的方法介绍

《四种Flutter子页面向父组件传递数据的方法介绍》在Flutter中,如果父组件需要调用子组件的方法,可以通过常用的四种方式实现,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录方法 1:使用 GlobalKey 和 State 调用子组件方法方法 2:通过回调函数(Callb

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

java脚本使用不同版本jdk的说明介绍

《java脚本使用不同版本jdk的说明介绍》本文介绍了在Java中执行JavaScript脚本的几种方式,包括使用ScriptEngine、Nashorn和GraalVM,ScriptEngine适用... 目录Java脚本使用不同版本jdk的说明1.使用ScriptEngine执行javascript2.

Python实现NLP的完整流程介绍

《Python实现NLP的完整流程介绍》这篇文章主要为大家详细介绍了Python实现NLP的完整流程,文中的示例代码讲解详细,具有一定的借鉴价值,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 编程安装和导入必要的库2. 文本数据准备3. 文本预处理3.1 小写化3.2 分词(Tokenizatio

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

Java中switch-case结构的使用方法举例详解

《Java中switch-case结构的使用方法举例详解》:本文主要介绍Java中switch-case结构使用的相关资料,switch-case结构是Java中处理多个分支条件的一种有效方式,它... 目录前言一、switch-case结构的基本语法二、使用示例三、注意事项四、总结前言对于Java初学者

结构体和联合体的区别及说明

《结构体和联合体的区别及说明》文章主要介绍了C语言中的结构体和联合体,结构体是一种自定义的复合数据类型,可以包含多个成员,每个成员可以是不同的数据类型,联合体是一种特殊的数据结构,可以在内存中共享同一... 目录结构体和联合体的区别1. 结构体(Struct)2. 联合体(Union)3. 联合体与结构体的

PostgreSQL如何查询表结构和索引信息

《PostgreSQL如何查询表结构和索引信息》文章介绍了在PostgreSQL中查询表结构和索引信息的几种方法,包括使用`d`元命令、系统数据字典查询以及使用可视化工具DBeaver... 目录前言使用\d元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,