1码流结构
H.264 码流是由一个个 NALU 组成的 而 NALU 又是由 NALU 头和 RBSP 数据组成
NAL单元语法 forbidden_zero_bit f(1) 表示 1 比特定长编码
nal_ref_idc,该行最后一列是 u(2),元素采用 u(2) 方式编码
规定NAL 单元的内容包含一个序列参数集,或一个图像参数集,或一个参考图像
条带,或一个参考图像的条带数据分割。
nal_unit_type u(5) 是指包含在NAL 单元中的RBSP 数据结构的类型
对于一个 H.264 码流 对于一个 H.264 码流中的一个 NALU ,该 NALU 的第一个比特是表示 forbidden_zero_bit 该 NALU 的第二、三个比特是表示 nal_ref_idc 该 NALU 的第四~八个比特是表示 nal_unit_type
H.264 码流是一个个 NALU 拼在一起的,首尾相连 每个 NALU 由头和体组成 NALU 头就是刚才我们看的 7.3.1 小节中的三个粗体字forbidden_zero_bit(1比特)、nal_ref_idc(2比特)、nal_unit_type(5比特)
对于解码器,解码 H.264 码流必然要按顺序处理这些语法元素
JM 解码器是如何按顺序处理这些语法元素的
JM86 main --> decode_one_frame --> read_new_slice 函数 主要作用是读取 NALU 单元数据 附带做一些解码的准备工作
read_new_slice --> GetAnnexbNALU 和 GetRTPNALU 这就涉及到 H.264 的两种码流格式 GetAnnexbNALU 处理字节流