【视频编码\VVC】编码结构基础知识

2024-03-02 10:44

本文主要是介绍【视频编码\VVC】编码结构基础知识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

编码结构概述

包含两个方面:编码时的分层处理架构和编码后码流的语法架构

为支持视频编码标准的通用性,标准只规定码流的语法语义。

高级语法:片头及其以上的语法架构。

VVC编码码流包含一个或多个编码视频序列(CVS),每个CVS以帧内随机接入点(IRAP)图像或逐渐解码刷新(GDR)图像开始。

编码视频序列

CVS是时域独立可解码的基本单元。每个包含一个或多个按解码顺序排列的访问单元(AU),每个AU包含一个或多个同一时刻的图像单元(PU)(一副编码图像)。所以AU中的不同PU被归属为不同的层(Layer),一个CVS中所有同层的PU组成了编码视频序列层(CLVS)

每个PU包含一个多多个片(slice),每个slice由相同的树形编码单元(CTU)组成,每个CTU包含亮度树形编码块(CTB)和两个色度分量树形编码块。每个CTU按照二、三、四叉树划分为不同的矩形编码单元(CU)。

为了保证视频编码层的灵活使用,VVC也采用了视频编码层(VCL)和网络适配层(NAL)的双层架构。编码视频流被封装成NAL单元,并且对视频流进行标识,一遍适配网络传输或存储。

参数集

参数集是一个独立的数据单元,包含视频不同层级编码单元的共用信息。包括

  • 视频参数集(VPS):层级信息和输出层信息,用于支持分层编码
  • 序列参数集(SPS):包含一个CVS中所有图像共用的信息,档次、级别、分辨率、编码工具开关
  • 图像参数集(PPS):一副图像所有slice的共用信息,编码工具开关标识、量化参数、分块信息
  • 图像头(PH):图像级信息, 包含频繁变化的信息。
  • 自适应参数集(APS):类似图像头信息或slice头信息,会被多个slice使用
  • 解码能力信息(DCI):profile、tile、level信息,用于编码流的会话协商
  • 附加增强信息(SEI):视频内容的附加信息

非编码数据的参数集作为Non-VCLU进行传输,提升了传输关键数据的鲁棒性。

VPS

包含的信息:

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

SPS

  • 图像格式信息:采样格式、图像分辨率、量化深度、解码图像是否需要裁剪及裁剪参数
  • 编码参数信息:编码块、变换块的最小尺度和最大尺度,帧内预测、帧间预测时变换块的最大划分升读
  • 与参考图像相关的信息:参考图像序列号POC
  • 档次、层和级
  • 时域分级信息:时域子层的最大数目、控制传输POC进位的参数、时域顺序标识开关、与子层相关的参数
  • 可视化可用信息VUI:用于表征视频格式的额外信息。
  • 其他信息:包括当前SPS引用的VPS\SPS编号和SPS拓展信息

PPS

  • 编码工具的可用性标志:符号位隐藏、帧内预测受限、去方块滤波、P/B图像的加权预测、环路滤波边界处理、变化跳过模式
  • 量化过程相关语法元素:QP初始值设定、计算每个CU的QP所需要的参数、量化参数偏移量、色度参数的偏移量
  • Tile的相关语法元素:tile的划分、总行数、总列数
  • 去方块滤波相关语法元素
  • slice头中的控制信息,是否有额外的slice头比特、图像编码顺序与输出顺序的先后哦关系、基于上下文的自适应算术编码中确定上下文初始化表格使用的方法
  • 编码一副图像时可以共用的其他信息。

多层视频

多层视频编码结构

可分级视频编码

Scalability可分级视频指对视频进行一次编码得到包含多个子集的码流,解码部分子集即可得到一定质量的重建视频。分为时域可分级、质量可分级、空域可分级。

多视点视频编码

由摄像机整列从不同角度拍摄同一场景得到的一组视频信号。除了利用单视点视频的空时域相关性,还可以利用视点间的相关性。

多层视频编码

为了支持上述两个视频的需求,VVC采用了多层给视频编码结构。

每个AU可以包含多个PU,每个PU属于一层,各层间可以独立编码也可以使用层间参考预测编码。各层间的依赖关系由VPS描述,参曹真管理模块根据VPS信息吧参考图像按照规则放入参考帧列表即可。

VVC将图形划分到多个时域层,每层都有一个标识所属时域层的时域层标识号。

VVC允许一个CVS内的图像具有不同的空间分辨率,即参考图像重采样(RPR),可以生成自适应视频流,具有更强的信道匹配能力。需要利用重采样技术。

视频序列

编码视频序列

视频序列由若干时间连续的图像构成,对其进行压缩时,先将该视频序列分割为若干小的图像组(GOP),在VVC中,一个GOP编码后所生成的压缩数据对应标准中的CVS。是时域独立可解码的基本单元,可以作为随机接入点对视频流进行解码。

解码顺序和播放顺序

图像类型

IRAP

IRAP后的第一幅解码图像被称为IRAP图像。

前置图像:解码顺序在IRAP之后而播放顺序在前面的图像。分为随机接入可解码前置(RADL)和随机接入跳过前置(RASL)

后置图像:解码顺序在IRAP之后并播放顺序也在后。

VVC规定了2种IRAP图像

即时刷新(IDR)图像:其前置图像必须是RADL图像,不依赖IDR图像前的室内流信息进行独立解码。

完全随机接入(CRA)图像:允许参考CRA图像前的视频流获得更高编码效率。

GDR

每帧GDR图像中的部分区域仅采用帧内编码,连续多帧GDR(不同帧不同区域)采用帧内编码的区域可以组成一个完整的帧,该帧包含帧内编码模式,可以随机接入。

GDR从non-IDR图像开始解码,在解码特定数量的图像后就能获得内容正确的解码图像 的能力,九二一实现从帧间预测图像随机接入,可以将I帧的高码率分散到一小段时间内传输,防止码率在短时间内突然增大。

GDR图像中的刷新区域与非刷新区域的边界被标识为虚拟边界。

图像

除了PPS,还使用PH和APS来标识图像的共用编码参数。

APS包含大量数据,主要传递自适应环路滤波参数ALF、亮度映射和色度缩放LMCS参数、量化矩阵参数。

图像头

对图像中所有slice有效,承载slice的共用参数

PH承载频繁变换的编码参数信息:图像标识、slice类型允许、图像序列、去方块滤波参数、SAO参数。

PH用于识别一幅图像的第一个slice。

Slice

slice划分的目的时压缩数据的高效存储、传输,每个slice对应一个单独的NAL单元。独立解码。

熵编码在每个slice开始前进行初始化。

分为:I\P\B Slice后面在前面的基础上增加

Tile

一副图像可以划分为若干个Tile,从水平方向和垂直方向将一副图像分割为若干个矩形区域,每个tile包含整数个CTU。

划分tile是为了增强并行处理能力的同时又不引入新的错误扩散。每个tile中的CTU按照光栅扫描进行编码。

子图像

由图像内一块矩形区域的一个或多个slice组成。

树形编码单元

CTU由一个亮度CTB和两个对应的色度CTB组成。

CTU可以进一步划分为多个编码端元CU。

划分方式:垂直二叉树划分、水平二叉树划分、垂直三叉树划分、水平三叉树划分。

嵌套了多类型树的四叉树划分提供了一种内容自适应的编码树结构划分,如何划分采用率失真优化确定。

还有对图像边界上CU划分的处理。

档次profile、层tier和级别level

档次、层和级别指定了对比特流的限制,从而限制了解码比特流需要的能力

  1. 档次主要规定编码器可采用哪些编码工具或者算法。VVC中主要有6个档次,分别是main 10\main 10 still picture\main 4:4:10\main 4:4:4 10 still picture\multilayer main 10\multilayer main 10 4:4:4
  2. 两个层main tier\high tier
  3. 级别则指根据解码端的负载和存储空间情况对关键参数加以限制。13个级别

这篇关于【视频编码\VVC】编码结构基础知识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

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元命令查看表字段信息和索引信息通过系统数据字典查询表结构通过系统数据字典查询索引信息查询所有的表名可

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

linux-基础知识3

打包和压缩 zip 安装zip软件包 yum -y install zip unzip 压缩打包命令: zip -q -r -d -u 压缩包文件名 目录和文件名列表 -q:不显示命令执行过程-r:递归处理,打包各级子目录和文件-u:把文件增加/替换到压缩包中-d:从压缩包中删除指定的文件 解压:unzip 压缩包名 打包文件 把压缩包从服务器下载到本地 把压缩包上传到服务器(zip

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

计组基础知识

操作系统的特征 并发共享虚拟异步 操作系统的功能 1、资源分配,资源回收硬件资源 CPU、内存、硬盘、I/O设备。2、为应⽤程序提供服务操作系统将硬件资源的操作封装起来,提供相对统⼀的接⼝(系统调⽤)供开发者调⽤。3、管理应⽤程序即控制进程的⽣命周期:进程开始时的环境配置和资源分配、进程结束后的资源回收、进程调度等。4、操作系统内核的功能(1)进程调度能⼒: 管理进程、线

usaco 1.3 Mixing Milk (结构体排序 qsort) and hdu 2020(sort)

到了这题学会了结构体排序 于是回去修改了 1.2 milking cows 的算法~ 结构体排序核心: 1.结构体定义 struct Milk{int price;int milks;}milk[5000]; 2.自定义的比较函数,若返回值为正,qsort 函数判定a>b ;为负,a<b;为0,a==b; int milkcmp(const void *va,c

自定义类型:结构体(续)

目录 一. 结构体的内存对齐 1.1 为什么存在内存对齐? 1.2 修改默认对齐数 二. 结构体传参 三. 结构体实现位段 一. 结构体的内存对齐 在前面的文章里我们已经讲过一部分的内存对齐的知识,并举出了两个例子,我们再举出两个例子继续说明: struct S3{double a;int b;char c;};int mian(){printf("%zd\n",s