Skip to content
uupaa edited this page Sep 11, 2018 · 3 revisions

SODB, RBSP, EBSP の関係は以下の図のようになります。

EBSP の 00 00 03 0x は、 RBSP では 00 00 0x として解釈する必要があります(x には 0〜3 の数字が入ります)。 mdat に埋め込まれるバイナリデータは EBSP の 00 00 03 0x のままであり、RBSP の 00 00 0x ではありません。

NALUnitHeader をパースする段階では EBSP から RBSP を生成し、生成した RBSP をパースします。

+-------------------+   +------------++----------+     +------------++----------+
| H.264 Byte Stream | = | Start Code || NALUnit  | ... | Start Code || NALUnit  |
+-------------------+   +------------++----------+     +------------++----------+

+-------------------+   +---------------++------+
| NALUnit           | = | NALUnitHeader || EBSP |
+-------------------+   +---------------++------+

+-------------------+   +----+     +----+----+----+----+     +----+
| EBSP              | = | xx | ... | 00 | 00 | 03 | 0x | ... | xx |
+-------------------+   +----+     +----+----+----+----+     +----+

+-------------------+   +------+     +------++---------------++----------------------------+
| RBSP              | = | SODB | ... | SODB || RBSP stop bit || rbsp_alignment_zero_bit... |
+-------------------+   +------+     +------++---------------++----------------------------+

                        +------+     +------++---------------++----------------------------+
                        | 0xFF | ... | 0xFF ||       `1`     || `0000000` ... `0`          |
                        +------+     +------++---------------++----------------------------+

source