NAL Uint

1.什么是NAL unit?

NAl Unit是一种包装H.264 数据的格式. Network Abstract Layer
NAL 的一种分割方法是用 start_code即 0x000001 或者 0x00000001
NAL 中包含 integer number of bytes


2.VCL(Video coding Layre)

1-5的nal_unit_type中NAL被称为VCL-NAL,可以理解包含真正的图片数据的slice. IDR帧是没有Slice_partition的, 普通的picture或partition或者没有partition,若partition的话可能被分为partition A, partitoin B, Partitoin C.
image


3.NAL unit的组成

EBSP的全称为Encapsulated byte sequence payload
RBSP的全称为 Raw byte sequence payload
NALU = NAL_header + EBSP;
EBSP = RBSP 加上 emulation byte(0x03) 后的结果。
比如RBSP是如下数据
'00000000 00000000 000000XX' (XX为00,01,10,11)
加上emulation byte 后就变成了
'00000000 00000000 00000011 000000XX'
emulation字节主要用于区分start_code和NAL内部的数据
如果rbsp 最后的byte equals to 0x00; 说明加了cabac_zero_word, 最后还会补上一个0x03;


4.RBSP的组成

RBSP的组成如下, 每个|8 byte|直接都代表8或者16比特, -> 代表下一个比特. ^代表下面文字对上面字节的解释。
SODB: string of data bits, representing syntax elements.
|SODB| -> |SODB| -> xxx..... -> |口口口口口口口口| ->|0x0000|
^满8位^                          ^         ^one or more 0x0000 may presernt^
      对于最后一个字节,把所有剩余的SODB写入,再写入一位RBSP_STOP_ONE_BIT(1),再写入rbsp_alignment_zero_bit(000).假设SODB为3位,则最后一个字节为|XXX10000|


5. access unit

An access unit consists of one primary coded picture, zero or more corresponding redundant coded pictures, and zero or more non-VCL NAL units.
开启一个新的access unit的标志.
image

资料来源

T-REC-H.264-200503-s!!!PDF-F page 72 - 79

posted @ 2021-05-02 17:49  哇哩顾得  阅读(385)  评论(0编辑  收藏  举报