前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >H265/HEVC编码NAL的单元的介绍

H265/HEVC编码NAL的单元的介绍

作者头像
用户4148957
发布2022-06-14 09:13:05
2.8K0
发布2022-06-14 09:13:05
举报
文章被收录于专栏:C/C++与音视频

一、引言

与H.264/AVC 类似,H265/HEVC也采用视频编码层(Video Coding Layer,VCL)和网络适配层(Network Abstract Layer, NAL)的双层结构,以适应不同网络环境和视频应用。网络适配层的主要任务是对视频压缩后的数据进行划分和封装,并进行必要的标识,使其更好的适应各种网络环境。

二、NAL单元的基本结构

从NAL单元的基本结构可知,NAL单元由NAL头和原始字节序列负载(Raw Byte sequence payload,RBSP)

三、NAL头的语法定义

forbidden_zero_bits(1bit)

默认为0,值为1时表示错误,当网络发现NAL单元有比特错误时可设置该比特为1,以便接收方纠错或丢掉该单元

nuh_layer_id(6bit)

layerId预留位,用来指示VCL数据属于哪个层或者标识non-VLC数据,占用NALU header的第一个字节的最后一位和第二个字节的前五位,默认全为0,用于未来扩展,如用来表示可分级视频或3D视频等。

nuh_temporal_id_plus1(3bit)

该字段默认为1。temporal_id表示NAL单元的时域层级,根据图像时域层级就可以确定其重要性,如时域层级小的图像不会参考时域层级大的图像,如通常参数集或者idr帧的temporal_id为0。

nal_unit_type(6bits)

用来标识NAL单元类型。通常NAL单元类型包括参数集(VPS,PPS,SPS,SEI)以及slice 数据(如IDR,其他类型帧等)。

由上可知,H265的NAL的类型相对h264多了很多,取值从0~63,其中48~63语义尚未明确,不会影响解码过程。这里总结一下H265的帧相关概念:

IRAP:随机接入点(Intra Random Access point),其后置图像必须能独立正确解码。

Leading前置图像:解码在后,播放在前(类似B帧)。

TAIL后置图像:解码和播放都在其后。

RADL(Random Access Decoder Leading):不依赖IRAP前的前置图像,即从IRAP图像介入可以正确解码。

RASL(Random Access skip Leading):依赖IRAP前的前置图像,即从IRAP图像介入不可以正确解码。

IRAP分三种:

IDR(instantaneous decoder refreshing):IDR不依赖IDR帧前的图像解码,h264也有IDR帧概念。

CRA(clean Random access):允许其前置图像是RASL,以提高编码效率,当直接从CRA图像接入时,其RASL图像无法解码。

BLA(Broke Link access):特殊的CRA,明确其RASL不需要解码

TSA(Temporal sub-layer access):该图像可以切换到时域层大于或等于该图像时域层标识号的时域层

STSA(Step wise Temporal sub-layer access):从该图像切换该图像所属的时域层。

四、NAL单元的负载

视频编码输出的包含不同内容的数据比特流片段,这些比特流片段为SODB(String Of Data Bits),SODB 从左到右、从高到低顺序排列。在SODB后添加一些一个bit的停止比特和多个0,就形成了RBSP。

RBSP生成规则如下:

  1. 如果SODB为空,生成的RBSP也是空
  2. RBSP第一个字节直接取SODB最左端的8bit,第二个字节取SODB接下来的8bit,以此类推,直接到SODB所剩下的内容不足8bit为止。
  3. RBSP的下一个字节首先包含SODB的最后比特,然后添加比特1(RBSP停止位)。如果该字节包含比特数小于9,在后面添加0直到该字节包含8比特。

RBSP可以包含SS的压缩数据,也可以包含VPS,PPS,SPS,SEI等。

注意RBSP可以不能直接NAL单元负载,还有解决冲突问题。一般编码器输出端的NAL单元是带启动码0x000001或者0x000001。或者系统保留某些数据(如0x000002)。RBSP做了以下冲突处理:

0x000000->0x00000300;

0x00001->0x00000301;

0x000002->0x00000302;

 0x000003->0x00000303;

五、参数集 H265/HEVC包含参数集(VPS,SPS,PPS,SEI),相比h264多了一个VPS。 1)VPS(视频参数集) 主要用传输视频分级信息,有利于兼容可分级视频以及3D视频,如视频包含最大的层级,也可包含profile,level等信息。一个给定的视频序列,无论它的SPS是否相同,都参考相同的VPS 2)SPS(序列参数集) 主要包含一个CVS(Code Video Sequence 编码视频序列,类似GOP)所有编码图像共享的编码参数,SPS通过PPS引用而作用图像 3)PPS(图像参数集) 一副图像序列,slice 通过引用PPS进行解码

 VPS,SPS,PPS和SS存在各级引用关系,一副图像中的所有SS引用同一个PPS,一个CVS中所有PPS引用同一个SPS。同一个视频序列中的所有SPS引用一个VPS。VPS,SPS,PPS存在相同参数,后者会覆盖前者。

六、h265的数据分析

以下是一个h265的视频序列,打开的NAL类型如下:

以上就是关于h265/hevc的NAL单元的介绍

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-01-09,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图像处理
图像处理基于腾讯云深度学习等人工智能技术,提供综合性的图像优化处理服务,包括图像质量评估、图像清晰度增强、图像智能裁剪等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档