视频编码中的sodb

不懂就问,网上看的许多都是重点讲的nalu,有没有人指条明路,详解sodb的结构啊,这个原始比特流里面的数据和存储顺序是啥样的,谢

SODB(Start Code and Offset in Data before Byte)是指在一个NALU(Network Abstraction Layer Unit)中,起始码和数据偏移量出现在字节之前的结构。简单来说,SODB 结构是将这个 NALU 中的数据部分与起始码分开存储,在数据部分中添加了一些信息来记录存储偏移量。

具体而言,在 SODB 结构中,每个 NALU 的起始位置都有一个固定的起始码(start code),其值为 0x00 00 01 或 0x00 00 00 01,表示该 NALU 开始位置的标志。在起始码之后紧跟着一个字节,该字节称为“负载头”(payload header),用于描述当前 NALU 的类型和一些其他属性。接下来的字节则是 NALU 数据部分,其中可能包含多个片(slice)或子帧(sub-frame)。

SODB 的主要作用是在进行视频编解码时,方便地对 NALU 进行拆分和处理。在 SODB 中,数据部分与起始码分离,可以更加方便地进行分割和处理。此外,由于在负载头中包含了偏移量信息,也可以方便地对数据进行访问和修改。

需要注意的是,SODB 并不是 H.264/AVC 标准中定义的结构,而是在实际应用中广泛使用的一种扩展结构。因此,在具体的实现中,SODB 的数据存储格式和存储顺序可能会有所不同,需要根据具体情况进行理解和处理。