【学习鸡汤】看一千遍不如动手整理一遍。尽管网上有很多NALU格式的学习资料,还是有必要按自己的理解写一下。
参考链接:https://blog.csdn.net/Dillon2015/article/details/102550782
以下内容主要整理自ITU-T H.265(04/2013)。
概念理解
NALU,全称network abstraction layer(NAL) unit,即网络抽象层单元。听着就很抽象,到底是什么玩意儿呢?不妨把视频的压缩和传输过程比作搬家,首先将待搬的东西大致分类并装进不同的箱子里,然后贴上内容标签(可迅速判断内容以及重要性),再逐个箱子搬走。NALU就好比这个过程中贴了标签的箱子,它是一种能够表示内部数据类型的语法结构,也是视频数据存放和传输的基本单元。
RBSP: NALU数据常表现为RBSP(字节流)的形式,也就是内部的数据以byte为最小单位。RBSP就好比箱子的体积信息。搬家时,货拉拉司机一般会问你有几个箱子,每个箱子的体积大概多少。表示成字节流,可以方便快捷地估算待传输信息量的大小。
NALU类型
请在参考链接中部找到NALU类型相关的Table 7-1。
此表格源自HEVC标准,为了方便理解,进行以下拆分:
- 根据表格最后一列可知,NALU分成两大类:VCL和non-VCL. VCL,全称video coding layer,即视频编码层。好家伙,又来了一个很抽象的概念~
- 接下来看倒数第二列,找相同点和不同点,首先自动忽略所有带“Reserved”的行项(reserve = 基本没用),不难发现所有VCL栏对应的都是slice_segment_layer_rbsp(),而non-VCL对应的东西就多啦,包括:
video_parameter_set_rbsp(), 缩写VPS
seq_parameter_set_rbsp(), 缩写SPS
pic_parameter_set_rbsp(), 缩写PPS
access_unit_delimiter_rbsp(), 缩写AUD
end_of_seq_rbsp(), 缩写EOS
end_of_bitstream_rbsp(), 缩写EOB
filler_data_rbsp(), 缩写FD
sei_rbsp(), 依旧SEI。
所以VCL对应的就是slice级内的视频压缩数据,其他的都是non-VCL. - 继续看第二列中VCL对应的内容,又出现了好多缩略词TRAIL, TSA, STSA, RADL, RASL, RSV, BLA, IDR, CRA。。。
未完待续~