NALU(NAL单元)的顺序要求

转载 2016年08月30日 14:28:12


NALU类型    标识NAL单元中的RBSP数据类型,其中,nal_unit_type为1, 2, 3, 4, 5及12的NAL单元称为VCL的NAL单元,其他类型的NAL单元为非VCL的NAL单元。   

0:未规定    

1:非IDR图像中不采用数据划分的片段    

2:非IDR图像中A类数据划分片段    

3:非IDR图像中B类数据划分片段  

4:非IDR图像中C类数据划分片段    

5:IDR图像的片段    

6:补充增强信息 (SEI)    

7:序列参数集   

8:图像参数集    

9:分割符    

10:序列结束符    

11:流结束符    

12:填充数据    

13 – 23:保留    

24 – 31:未规定    

H.264/AVC标准对送到解码器的NAL单元顺序是有严格要求的,如果NAL单元的顺序是混乱的,必须将其重新依照规范组织后送入解码器,否则解码器不能够正确解码。   1. 序列参数集NAL单元(nal_unit_type为7)必须在传送所有以此参数集为参考的其他NAL单元之前传送,不过允许这些NAL单元中间出现重复的序列参数集NAL单元。所谓重复的详细解释为:序列参数集NAL单元都有其专门的标识,如果两个序列参数集NAL单元的标识相同,就可以认为后一个只不过是前一个的拷贝,而非新的序列参数集。    

2.图像参数集NAL单元(nal_unit_type为8)必须在所有以此参数集为参考的其他NAL单元之先,不过允许这些NAL单元中间出现重复的图像参数集NAL单元,这一点与上述的序列参数集NAL单元是相同的。    

3. 不同基本编码图像中的片段(slice)单元和数据划分片段(data partition)单元在顺序上不可以相互交叉,即不允许属于某一基本编码图像的一系列片段(slice)单元和数据划分片段(data partition)单元中忽然出现另一个基本编码图像的片段(slice)单元片段和数据划分片段(data partition)单元。    

4.参考图像的影响:如果一幅图像以另一幅图像为参考,则属于前者的所有片段(slice)单元和数据划分片段(data partition)单元必须在属于后者的片段和数据划分片段之后,无论是基本编码图像还是冗余编码图像都必须遵守这个规则   

  5.基本编码图像的所有片段(slice)单元和数据划分片段(data partition)单元必须在属于相应冗余编码图像的片段(slice)单元和数据划分片段(data partition)单元之前。    

6.如果数据流中出现了连续的无参考基本编码图像,则图像序号小的在前面。    

7. 如果arbitrary_slice_order_allowed_flag置为1,一个基本编码图像中的片段(slice)单元和数据划分片段(data partition)单元的顺序是任意的,如果arbitrary_slice_order_allowed_flag置为零,则要按照片段中第一个宏块的位置来确定片段的顺序,若使用数据划分,则A类数据划分片段在B类数据划分片段之前,B类数据划分片段在C类数据划分片段之前,而且对应不同片段的数据划分片段不能相互交叉,也不能与没有数据划分的片段相互交叉。    

8.如果存在SEI(补充增强信息) 单元的话,它必须在它所对应的基本编码图像的片段(slice)单元和数据划分片段(data partition)单元之前,并同时必须紧接在上一个基本编码图像的所有片段(slice)单元和数据划分片段(data partition)单元后边。假如SEI属于多个基本编码图像,其顺序仅以第一个基本编码图像为参照。    

9.如果存在图像分割符的话,它必须在所有SEI 单元、基本编码图像的所有片段slice)单元和数据划分片段(data partition)单元之前,并且紧接着上一个基本编码图像那些NAL单元。    

10. 如果存在序列结束符,且序列结束符后还有图像,则该图像必须是IDR(即时解码器刷新)图像。序列结束符的位置应当在属于这个IDR图像的分割符、SEI 单元等数据之前,且紧接着前面那些图像的NAL单元。如果序列结束符后没有图像了,那么它的就在比特流中所有图像数据之后。    

11.流结束符在比特流中的最后。    ①NALU(Network Abstract Layer Unit):H264标准中的比特流是以NAL为单位,每个NAL单元包含一个RBSP(raw byte sequence payload,原始字节序列载荷),NALU的头信息定义了RBSP所属类型。类型一般包括序列参数集(SPS)、图像参数集(PPS)、增强信息(SEI)、条带(Slice)等,其中,SPS和PPS属于参数集,两标准采用参数集机制是为了将一些主要的序列、图像参数(解码图像尺寸、片组数、参考帧数、量化和滤波参数标记等)与其他参数分离,通过解码器先解码出来。此外,为了增强图像的清晰度,AVS-M添加了图像头(Picture head)信息。读取NALU流程中,每个NALU前有一个起始码0x000001,为防止 内部0x000001序列竞争,H.264编码器在最后一字节前插入一个新的字节——0x03,所以解码器检测到该序列时,需将0x03删掉,而AVS-M只需识别出起始码0x000001。    ②读取宏块类型(mb type)和宏块编码模板(cbp):编解码图像以宏块划分,一个宏块由一个16*16亮度块和相应的一个8*8cb和一个8*8cr色度块组成

注:结合上述转载的论述,可以断定 nal_unit_type 为5 的必然为idr 帧,9:分割符 实际为图像分隔符,也可以认为是帧分隔符,idr帧、i帧、p帧、b帧之间的分隔符,因此取某帧图像,则以nal_unit_type 为9为开始和结束,10:序列结束符 指某一为idr为参考的一系列帧,其中包含1个idr帧,x个i帧,y个p帧,z个b帧,x,y,z的取值范围0~n

讲的比较好的NALU格式文章--H.264NAL层解析(转载)

.引言 H.264的主要目标: 1.高的视频压缩比 2.良好的网络亲和性 解决方案: VCL video coding layer 视频编码层 NAL network abstra...
  • justmeloo
  • justmeloo
  • 2014年12月21日 22:37
  • 676

H.264 NAL层解析(0x00000001,编码,打包,NALU)

H.264 NAL层解析(0x00000001,编码,打包,NALU)   1.引言 H.264的主要目标: 1.高的视频压缩比 2.良好的网络亲和性 解决方案: VCL  video ...
  • wudebao5220150
  • wudebao5220150
  • 2013年10月31日 19:59
  • 10025

音视频数据处理(18)--- H.264的NAL层数据单元NALU与I帧判断

NAL全称Network Abstract Layer,即网络抽象层。在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(NAL)。其中,前者负责有...
  • HandsomeHong
  • HandsomeHong
  • 2017年05月27日 01:15
  • 347

NALU(NAL单元)

一 NALU类型    标识NAL单元中的RBSP数据类型,其中,nal_unit_type为1, 2, 3, 4, 5及12的NAL单元称为VCL的NAL单元,其他类型的NAL单元为非VCL的NAL...
  • wl_fln
  • wl_fln
  • 2011年05月04日 17:11
  • 2128

H.264的NAL单元及码流结构

参考: http://blog.csdn.net/EricBaner/article/details/3950810 http://wenku.baidu.com/view/ab19d6c79ec3d...
  • lyuan1314
  • lyuan1314
  • 2013年05月28日 13:04
  • 6500

MP4文件中的NALU解析

1.什么是NAL NAL全称Network Abstract Layer,即网络抽象层。 在H.264/AVC视频编码标准中,整个系统框架被分为了两个层面:视频编码层面(VCL)和网络抽象层面(N...
  • cy_weiyi
  • cy_weiyi
  • 2015年07月25日 12:21
  • 1317

HEVC学习(十九) —— NAL unit 的解码过程之三

前面两篇已经将NAL的解析过程的核心部分介绍完了,本篇主要讨论如何将NAL的payload部分转化为原始数据,即从EBSP到RBSP的过程。 该过程由TAppDecTop::decode()的子函数...
  • HEVC_CJL
  • HEVC_CJL
  • 2013年01月03日 20:43
  • 9226

H.264的NAL单元

每个NAL单元是一个一定语法元素的可变长字节字符串,包括包含一个字节的头信息(用来表示数据类型),以及若干整数字节的负荷数据。一个NAL单元可以携带一个编码片、A/B/C型数据分割或一个序列或图像参数...
  • dreamxiang68
  • dreamxiang68
  • 2012年01月07日 17:25
  • 4077

关于FFMPEG里读取的h264的AVPACKET存储nalu成为h264问题

转载http://blog.csdn.net/leixiaohua1020/article/details/11800877经过试验确实是这样       在使用FFMPEG的类库进行编程的过程...
  • u010289908
  • u010289908
  • 2015年06月01日 18:29
  • 2835

H264中的NAL的定义

NAL单元语义: 规定VCL是为了有效的表示视频数据的内容。规定NAL则是为了格式化数据,并以适用于存储介质或在多种通信信道上传输的格式提供头信息。NAL单元中包含了所有的数据,每个NAL单元都...
  • u011046042
  • u011046042
  • 2015年11月30日 18:01
  • 2869
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:NALU(NAL单元)的顺序要求
举报原因:
原因补充:

(最多只允许输入30个字)