Hi3516a——h265 Nalu类型详细解析

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u014470361/article/details/89541544

前言

在海思自hi3516a带的开发固件中,有H265编码的实例,在SAMPLE_VENC_1080P_CLASSIC(HI_VOID)应用实例中有涉及,那么本文将对H265的nal头和nalu的类型进行相关解析。

h265 Nalu类型解析

在这里插入图片描述

F

F:必须为0,表示有效;为1的话表示无效。

在这里插入图片描述

Type

Type:6-bits NALType 确定NAL的类型,其中VCL NAL和non-VCL NAL各有32类。0-31是vcl nal单元;32-63,是非vcl nal单元。VCL是指携带编码数据的数据流,而non-VCL则是控制数据流.
在这里插入图片描述
vcl nal单元的类型(0-31)如下表:
在这里插入图片描述
non-vcl nal单元的类型(32-63)如下表:
在这里插入图片描述
Non-VCL NAL Type:Non-VCL NAL的种类如上图,Parameter sets包括VPS、SPS和PPS。

Delimiters(分隔符)包括AUD_NUT、EOS_NUT、EOB_NUT,其中AUD_NUT用于指示access unit的边界,所以和access unit内的VCL NAL有相同的TID,是access unit内的第一个NAL。EOS_NUT、EOB_NUT分别表示CVS和bitstream的结束,它们的TID为0,没有payload,只有2-Type的header。
Filler Data对解码过程并没有任何影响,payload就是由一串’11111111’和1-Type的’10000000’组成,主要用来填充 SEI:supplemental enhancement informatyion,辅助增强信息,提供可选的解码支持元数据。在HEVC中,SEI是prefix(SEI必须在Access unit的所有VCL NAL之前)或者suffix(SEI可以在Access unit的VCL NAL之后)的,而且SEI有些是只对当前Access unit有效,有些作用范围可能是多个Access unit甚至整个SVC。VUI是在SPS中的可选信息,VUI不直接影响解码过程,但是提供两个方面的信息:1、解码图像的展示信息,包括宽高比、扫描、分时等信息;2、限制解码端的一些信息,包括tiles、MV、参考图像等。

LayerID

LayerID:表示NAL所在的Access unit所属的层,该字段是为了HEVC的继续扩展设置。也就是目前都是0,以后的扩展可能会用到。
在这里插入图片描述

TID

在这里插入图片描述
在这里插入图片描述

H265 帧类型解析

和264的&0x1f不同。
265是 :
int type = (code & 0x7E)>>1;
00 00 00 01是NALU头,常见的共6种:

根据H265的NALU类型定义分析:
(1)控制数据流:
00 00 00 01 40 01 的nuh_unit_type的值为 32, 语义为视频参数集 VPS
00 00 00 01 42 01 的nuh_unit_type的值为 33, 语义为序列参数集 SPS
00 00 00 01 44 01 的nuh_unit_type的值为 34, 语义为图像参数集 PPS
00 00 00 01 4E 01 的nuh_unit_type的值为 39, 语义为补充增强信息 SEI
在这里插入图片描述
在这里插入图片描述
VPS、SPS、PPS:三者的结构和关系如下图所示:
在这里插入图片描述

(2)编码数据的数据流:
00 00 00 01 26 01 的nuh_unit_type的值为 19, 语义为可能有RADL图像的IDR图像的SS编码数据 IDR
00 00 00 01 02 01 的nuh_unit_type的值为1, 语义为被参考的后置图像,且非TSA、非STSA的SS编码数据
在这里插入图片描述在这里插入图片描述

参考:http://www.cnblogs.com/DwyaneTalk/p/5711430.html

展开阅读全文

没有更多推荐了,返回首页