1.H.264是由一个个NAL Unit组成,每个NAL Unit以0x000001或者0x00000001为起始码,每两个起始码之间的数据称之为NAL Unit;H.264规定当检查到0x000000标志前一个NAL单元的结束;
而NAL单元视频数据为了防止出现0x000000与起始码竞争,编码器时会插入0x03,当解码器在NAL内部监测到有0x000003的序列时,将把0x03抛弃掉,恢复原始数据。
2.每个NAL Unit第一个字节的低5bit表示该单元的类型nal_unit_type:
#define NALU_TYPE_SLICE 1
#define NALU_TYPE_DPA 2
#define NALU_TYPE_DPB 3
#define NALU_TYPE_DPC 4
#define NALU_TYPE_IDR 5
#define NALU_TYPE_SEI 6
#define NALU_TYPE_SPS 7
#define NALU_TYPE_PPS 8
#define NALU_TYPE_AUD 9
#define NALU_TYPE_EOSEQ 10
#define NALU_TYPE_EOSTREAM 11
#define NALU_TYPE_FILL 12
AUD(分界符):在数据中0x00 00 00 01 09,0x09&0x1f=9
Sequence Parameter Set(SPS,序列参数集):在数据中0x00 00 01 67,0x67&0x1f=7
Picture Parameter Set(PPS,图像参数集):在数据中0x00 00 00 01 68,0x68&0x1f=8
SEI(补充增强信息单元):在数据中0x00 00 01 06,0x06&0x1f=6
I slice():在数据中0x00 00 00 01 65,0x65&0x1f=5
P slice():在数据中0x00 00 01 41,0x41&0x1f=1
3.SPS
profile_idc、level_idc指明所用的pprofile、level
pic_width_in_mbs_minus1指明图像宽度
pic_height_in_map_units_minus1指明图像高度
4.PPS
5.slice header
slice_type:指明slice类型
frame_num:指明图像解码顺序