以下、MPEG-2の規格を見ていくと…
MPEG-2 Program Streamは、
MPEG2_program_stream() {
do {
pack()
} while (nextbits()==pack_start_code)
MPEG_program_end_code // 32 bslbf
}
と、1個以上のpackが連続したもので、最後に、MPEG_Program_end_codeが付く。
※MPEG_program_end_codeは、0x000001B9
packは、
pack() {
pack_header()
while (nextbits()==pack_start_code) {
PES_packet()
}
}
と、pack_headerから始まり、0個以上のPES_packetが連続するデータ。
※pack_start_codeは、0x000001BA
pack_headerは、
pack_header() {
pack_start_code // 32 bslbf
'01' // 2 bslbf
system_clock_reference_base[32..30] // 3 bslbf
marker_bit // 1 bslbf
system_clock_reference_base[29..15] // 15 bslbf
marker_bit // 1 bslbf
system_clock_reference_base[14..0] // 15 bslbf
marker_bit // 1 bslbf
system_clock_reference_extension // 9 uimsbf
marker_bit // 1 bslbf
program_mux_rate // 22 uimsbf
marker_bit // 1 bslbf
marker_bit // 1 bslbf
Reserved // 5 bslbf
pack_staffing_length // 3 uimsbf
for(i=0;i<pack_staffing_length;i++) {
stuffing_byte // 8 bslbf
}
for(nextbits()==system_header_start_code) {
system_header()
}
}
と、system_clock_referenceと、program_mux_rateの情報を持ち、オプションとして、system_headerを持つ。
※system_clock_reference_baseは、90kHz
※system_clock_reference_extenstionは、0~299
※system_header_start_codeは、0x000001BB
最終更新:2007年03月03日 21:02