MPEG-1のデータは「パック」の集まりで構成されている。つまり、「パック」の連なりで表現されることになる。
パックのデータ構造
(数字はビット数)
パック開始符号 |
固定 |
SCR |
固定 |
SCR |
固定 |
SCR |
固定 |
最大伝送速度 |
固定 |
システムヘッダ |
パケット |
0x000001BA |
0b0010 |
[32..30] |
0b1 |
[29..15] |
0b1 |
[14..0] |
0b11 |
- |
0b1 |
- |
- |
32 |
4 |
3 |
1 |
15 |
1 |
15 |
2 |
22 |
1 |
あってもなくてもOK |
n個 |
名前 |
長さ(ビット) |
説明 |
パック開始符号 |
32 |
パックヘッダを示すスタート符合。0x000001BA |
SCR |
33 |
System Clock Reference(システム時刻基準参照値)。現在時刻を90KHzをベースクロックとしている |
最大伝送速度 |
22 |
MPEG-1のストリーム速度。転送速度を50Byte/秒 単位で表した値 |
システムヘッダ |
- |
以下参照 |
パケット |
- |
以下参照 |
システムヘッダのデータ構造
システムヘッダはデコード(再生)時に制御用として使用する
システムヘッダ開始符号 |
ヘッダ長 |
固定 |
レートバウンド |
固定 |
オーディオバウンド |
フラグ |
固定 |
ビデオバウンド |
予約ビット |
ストリームID |
固定 |
STDバッファバウンドスケール |
STDバッファサイズバウンド |
0x000001BB |
- |
0b1 |
- |
0b1 |
- |
- |
0b1 |
- |
0xFF |
- |
0b11 |
- |
- |
32 |
16 |
1 |
22 |
1 |
6 |
4 |
1 |
5 |
8 |
8 |
2 |
1 |
13 |
※ストリームID〜STDバッファサイズバウンドはn個
名前 |
長さ(ビット) |
説明 |
システムヘッダ開始符号 |
32 |
システムヘッダ 0x000001BB |
ヘッダ長 |
16 |
このシステムヘッダの長さ |
レートバウンド |
22 |
最大速度の最大値。このストリームがデコード可能か判断する際に利用 |
オーディオバウンド |
6 |
多重化されたオーディオの最大数(0〜32) |
フラグ |
4 |
各種フラグ |
ビデオバウンド |
5 |
多重化されたビデオの最大数(0〜16) |
予約ビット |
8 |
全てのビットが1となる |
ストリームID |
8 |
多重化されたパケットの先頭部のストリームID値。オーディオ、ビデオなどの識別に利用 |
STDバッファバウンドスケール |
1 |
ストリームIDがオーディオの場合 0.ビデオの場合 1.それ以外のデータでは 0 or 1 |
STDバッファサイズバウンド |
13 |
入力バッファ容量。STDバッファバウンドスケールが0の場合は128Byte単位。1の場合は1024Byte単位 |
パケットのデータ構造
パケット開始符号 |
ストリームID |
パケット長 |
パディング |
データヘッダ |
データ |
0x000001 |
0xBC〜0xFF |
- |
0xFF |
- |
- |
24 |
8 |
16 |
8*必要なだけ |
40 or 80 or 8(以下の3種類) |
8*N |
オーディオフレームやBピクチャの先頭を含む場合のデータヘッダ
固定 |
PTS |
固定 |
PTS |
固定 |
PTS |
固定 |
0b0010 |
[32..30] |
0b1 |
[29..15] |
0b1 |
[14..0] |
0b1 |
4 |
3 |
1 |
15 |
1 |
15 |
1 |
Iピクチャ、Pピクチャの先頭を含む場合のデータヘッダ
固定 |
PTS |
固定 |
PTS |
固定 |
PTS |
固定 |
固定 |
DTS |
固定 |
DTS |
固定 |
DTS |
固定 |
0b0010 |
[32..30] |
0b1 |
[29..15] |
0b1 |
[14..0] |
0b1 |
0b0001 |
[32..30] |
0b1 |
[29..15] |
0b1 |
[14..0] |
0b1 |
4 |
3 |
1 |
15 |
1 |
15 |
1 |
4 |
3 |
1 |
15 |
1 |
15 |
1 |
それ以外のデータの場合のデータヘッダ
名前 |
長さ(ビット) |
説明 |
パケット開始符号 |
24 |
パケット開始符号の先頭24ビット(0x000001)。ストリームIDとくっつけてパケットの先頭を示す |
ストリームID |
8 |
パケットデータを示す識別子。0xBC〜0xFF |
パケット長 |
16 |
このフィールドより後ろからパケットの最後までのデータ長。つまり、パディングからのデータ長 |
PTS |
33 |
Presentation Time Stamp(提示時刻)。90KHzのクロックでカウントした値 |
DTS |
33 |
Decoding Time Stamp(複合時刻)。90KHzのクロックでカウントした値。PSTとデコード開始時刻が異なる時に使用 |