H266/VVC网络适配层概述

视频编码标准的分层结构

视频数据分层的必要性:网络类型的多样性、不同的应用场景对视频有不同的需求。
编码标准的分层结构:为了适应不同网络和应用需求,视频编码数据根据其内容特性被分成若干NAL单元(NAL Unit,NALU),并对NALU的内容特性进行标识。网络只需要根据NALU及其标识就可以优化视频传输性能,不再需要亲自分析视频数据的内容特性。如下图就是典型的分层结构。
在这里插入图片描述
H266中NAL的作用机制: 原始图像经过编码(VCL)后,每幅图像变成难以理解的码流片段,每个码流片段内的数据不再具有类似像素表示的形式。NAL根据压缩视频码流的内容特性将其划分成多个数据段,对每个数据段进行分装并对内容特性进行标识,就生成了NALU,将内容特性信息存放在NALU头信息中。
在这里插入图片描述

网络适配层单元

NALU的组成: NALU头 和NALU载荷(原始字节序列载荷,Raw Byte Sequence Payload,RBSP)
在这里插入图片描述
H266的NALU头: 长度为固定两字节,反应NALU的内容特征。语法结构如下表。

语法元素编码方式解释
nal_umit_header(){
forbidden_zero_bitf(1)值设置为0
nuh_reserved_zero_bitu(1)值设置为0,1预留待未来使用
nuh_layer_idu(6)表示NALU对应的层标识号,取值范围0~55,该值在一幅编码图像内的所有VCL NALU应该相同
nal_unit_typeu(5)表示NALU的类型,即NAL单元中包含的RBSP语法结构的类型,共5比特,分为VCL和non-VCL两类,取值0~31
nuh_temporal_id_plus1u(3)NALU所在的时域层的标识号
}

H266的NALU类型:
在这里插入图片描述
在这里插入图片描述

H266的NALU载荷:
RBSP的长度为整数字节,承载视频编码后的比特流片段。
在视频编码过程中输出包含不同内容的压缩数据比特流片段,这些比特流片段称为SODB(String of Data Bits),SODB为最高有效位在左的存储形式,即字节内的比特按照从左到右、从高到低 的顺序排列,在SODB后添加RBSP尾(rbsp_trailing_bits)就生成了RBSP,RBSP尾由称为RBSP停止比特的一比特1和其后的零比特或多比特0组成。
RBSP 即整数化的SODB。
RBSP冲突避免处理:
RBSP不能直接作为NALU的载荷,因为在字节流应用环境中0x000001为NALU的起始码,0x000000为结束码。因此,为了避免NALU载荷中的字节流片段与NALU的都起始码、结束码冲突,需要对RBSP字节流进行冲突避免处理。
在这里插入图片描述

视频比特流中的NALU

H266使用了图像单元(PU)和接入单元(AU)的概念,每个AU包含同一时刻的一个或多个PU,每个PU包含且仅包含一幅完整图像的编码数据,每个图像编码数据包含一个或多个Slice NALU,即VCL NALU。此外一个PU还可以包含non-VCL NALU,比如各种参数集、SEI等。

AU的顺序及其与CVS的关系: 一个比特流包含一个或多个编码视频序列(CVS),从时间维度看,一个CVS包含一个或多个AU,从层级维度看,一个CVS包含一个或多个编码层视频序列(CLVS)。

PU的顺序及其与AU的关系: 一个AU包含一个或多个按照nuh_layer_id升序排列的PU。在一个AU中最多可以包含一个AU界定符(AU Delimiter, AUD)NALU。当AU中存在AUD NALU时,其应该为AU的第一个NALU,同时也是AU内第一个PU的第一个NALU。

编码图像和NALU的顺序及其与PU的关系: 一个PU由零个或一个PH NALU和一幅编码图像组成,编码图像包含一个或多个VCL NALU和零个或多个其他non-VCL NALU。

网络适配层单元的应用

NALU是压缩视频数据的基本单元,也是后续视频传输的基本单元。
字节流应用:
要求对NALU的边界进行标识以保证解码端可以对NALU进行识别。在每个NALU前面插入3字节的起始码start_code_prefix_one_3bytes,其对应的值为0x000001。其语法结构如下。
在这里插入图片描述
分组流应用:
视频分组流是网络传输的一种有效方式,当视频NALU作为网络分组的载荷在网络中传输时,不同的网络分组因承载不同特性的NALU而具有不同的重要性,网络可以根据分组重要性优化视频流的服务质量。基于RTP/UDP/IP的实时业务采用典型的分组流传输方式。

RTP分组由RTP头和RTP载荷前后两部分组成,其RTP头的结构如下图。
在这里插入图片描述
RTP分组的类型有单NALU分组(一个分组只承载一个NALU)、聚合分组(一个分组承载多个NALU)、分片分组(一个分组只承载一个NALU的一部分)。

参考

JVET输出文档: https://www.itu.int/wftp3/av-arch/jvet-site/
书籍: 新一代通用视频编码H266/VVC:原理、标准与实现[万帅 霍俊彦 马彦卓 杨付正/著]

备注

本系列博客主要是对《新一代通用视频编码H266/VVC:原理、标准与实现》的学习笔记。

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

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

相关文章

2024--Django平台开发-基础信息(一)

一、前置知识点 - Python环境搭建 (Python解释器、Pycharm、环境变量等) - 基础语法(条件、循环、输入输出、编码等) - 数据类型(整型、布尔型、字符串、列表、字典、元组、集合等) - 函数(文件操作、返回值、参数、作用域等) - 面向对象 (类、对象、封装、继承、多态等)包和模…

【动态规划】C++算法312 戳气球

作者推荐 【动态规划】【字符串】扰乱字符串 本文涉及的基础知识点 动态规划 LeetCode312 戳气球 有 n 个气球,编号为0 到 n - 1,每个气球上都标有一个数字,这些数字存在数组 nums 中。 现在要求你戳破所有的气球。戳破第 i 个气球&…

Simpy简介:python仿真模拟库-01/5

一、说明 在计算机编程领域,仿真在理解复杂系统、进行实验和做出明智决策方面发挥着关键作用。SimPy 是“Simulation Python”的缩写,是一个功能强大且多功能的仿真框架,允许开发人员和研究人员使用 Python 创建和分析离散事件仿真。无论您是…

视频如何制作微信表情?仅需一招在线制作

Gif动画表情包是当下一种非常流行的图片展示格式,能够通过gif格式的图片来调节聊天氛围或是传递信息,非常有趣。而gif动图现在也被各行各业的商家用作宣传使用,很吸引大众的目光。 那么,这种非常吸引人的gif动图是怎么制作的呢&a…

Power BI - 5分钟学习修改数据类型

每天5分钟,今天介绍Power BI修改数据类型 Power BI加载数据时,会尝试将源列的数据类型转换为更高效的存储、计算和数据可视化的数据类型。 例如,如果从Excel导入的值的列没有小数值,Power BI Desktop会将整个数据列转换为整数数据…

Spanner on a modern columnar storage engine 中文翻译

文章目录 0. 摘要1. 存储引擎2. 存储引擎迁移的挑战2.1 可靠性、可用性和数据完整性2.2 性能和成本2.3 复杂性 3. 迁移可靠性的系统原则方法3.1 可靠性原则和自动化架构3.2 迁移方案和按周迁移3.3 客户 部署感知 调度3.4 管理可靠性、可用性和性能 4. 项目管理和驱动指标概括 0…

基于领域驱动设计的低代码平台的设计与实现

本文介绍了基于领域驱动设计(DDD)的低代码平台的设计与实现方法。低代码平台是一种能够通过图形化界面和少量编码,快速构建应用程序的工具。通过结合DDD的思想,我们可以将领域专家的知识转化为具体的领域模型,并将其作…

网络层协议及IP编址

0x00 前言 本节为网络层协议及IP编址内容 IP地址的范围:0.0.0.0-255.255.255.255 IP分为网络位以及主机位。子网划分就是向主机位借位。 网络层协议 IPICMP(internet Control message protocol)IPX IP协议的作用 为网络层的设备提供逻…

手把手教你新建一个winform项目(史上最全)

文章目录 前言:第1步、打开Microsoft Visual Studio(简称vs),本人这里使用的是Visual Studio 2017 专业版,如下图:1.2 Visual Studio Community 2019下载1.3 Visual Studio Community 2019 安装 第2步、点击…

2024年【A特种设备相关管理(锅炉压力容器压力管道)】报名考试及A特种设备相关管理(锅炉压力容器压力管道)模拟考试题库

题库来源:安全生产模拟考试一点通公众号小程序 A特种设备相关管理(锅炉压力容器压力管道)报名考试是安全生产模拟考试一点通总题库中生成的一套A特种设备相关管理(锅炉压力容器压力管道)模拟考试题库,安全…

nodejs版本管理工具nvm的安装与使用

提示:nodejs版本管理工具nvm的安装与使用 文章目录 前言一、安装二、淘宝镜像配置三、安装所需版本的nodejs四、切换nodejs版本五、参考文档总结 前言 需求:新建一个vue3项目,,提示写法错误 查原因为node版本过低 随着技术更新迭…

Python Asyncio网络编程方法全面解析与实战应用!

更多Python学习内容:ipengtao.com Python的asyncio库是一种强大的异步编程工具,它使得编写高效的网络应用程序变得更加容易。在本文中,我们将深入探讨使用asyncio进行网络编程的方法,包括异步IO、协程、事件循环等方面的内容&…

Python编程+copilot+代码补全+提高效率

Python编程copilot代码补全提高效率 copilot是由Github和OpenAI合作开发的一款AI编程工具,它可以根据自然语言或部分代码,自动给出合适的代码补全建议。copilot支持多种编程语言,包括Python,也可以在Pycharm等主流IDE中使用。本资…

SpringIOC之support模块FileSystemXmlApplicationContext

博主介绍:✌全网粉丝5W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战,博主也曾写过优秀论文,查重率极低,在这方面有丰富的经验…

LINE网页版使用方法(内含LINE网页版特点总结)

如果想要在电脑上使用LINE,但是又觉得下载客户端很累赘的话,LINE网页版是你最好的选择。但是LINE网页版相对于其他平台来说使用方式比较少。所以今天就来讲讲,我们有什么方式可以在电脑中使用LINE。 LINE网页版使用方法 1.需要使用Chrome浏览…

【hyperledger-fabric】部署Java应用远程访问智能合约

简介 首先是根据b站的视频 hyperledger-fabric【3】在 java 应用中访问合约 以及hyperledger-fabric【5】Java应用和私有数据,本文章主要讲述的是视频中我遇到的问题,以及相关知识点的总结。 遇到的问题 问题1:git clone下载下来的代码发现…

《异侠传S1赛季侠义九州》公测版本三端互通PC客户端与IOS下载地址!!!

尊敬的各位异侠玩家们: 我们怀着无比激动的心情,充满感激地向大家宣布:今天上午10:00我们即将迎来《异侠传S1赛季:侠义九州》的首发公测!在这个特殊的时刻,我们想将我们最诚挚的感谢献给每一位…

STM32 CubeMX LwIP + freertOS 移植

开发板: 官方 STM32F746 MCU型号:STM32F746NGH 网卡型号:LAN8742A 原理图如下 先用裸机测试LAN8742A的网卡驱动 使用CubeMX创建工程 系统时钟和时基定时器如下 无系统LWIP协议栈设置,静态IP地址,关闭DHCP 生产代码&#xff…

Java版企业电子招投标系统源代码,支持二次开发,采用Spring cloud技术

在数字化时代,采购管理也正经历着前所未有的变革。全过程数字化采购管理成为了企业追求高效、透明和规范的关键。该系统通过Spring Cloud、Spring Boot2、Mybatis等先进技术,打造了从供应商管理到采购招投标、采购合同、采购执行的全过程数字化管理。通过…

iOS UITextField复制、粘贴框显示为英文如何解决

问题描述: 使用UITextField,欲粘贴文本,长按或者双击展示的提示框显示为英文 解决方案: 在Xcode配置文件info,plist文件中,新增Localizas属性,填入Chinese 结果如下: 提示框成功展示为中文