Hello,
while doing some programming with MPEG analysis I got stuck with the MPEG2 headers.
During debugging and dumping some data of a PS stream (PAL 25fps, 720x576) I get stuck with some data bytes according to the spec sheet ISO/IEC 13818-1 (2000) that I'm working with. Here are some pieces of the header data part in question:
1: 00 00 01 e0 => video stream
2: 07 dc 31 00 03 de 91 11.00 03 8a 31
3: 00 00 01 b3 2d 02 40 33.24 9f 23 69 10 11 11 12 ... => sequence header
The problem is at line 2: After the 16 bit length field PES_packet_length of 0x7dc I get 16 bits of flags (0x3100) and a length byte for the options following PES_header_data_length which is 0x03. The data alignment flag is 0, so I have to use a standard start code for the next sequence after PES_header_data_length + the value in there. When I do this I point after the 11 in line 1 and get 0x00038a31 and that is of course wrong. It should continue with line 3 at 0x000001b3. I'm 4 Bytes in offset less than that.
How's that? The flags say that the scrambling value is '11' which is user defined, no off. Is there some header scrambling in place?
At another place in the same stream I've found a '00' scrambling value, an alignment flag of '1' so that I have to jump to a one byte start code after the header ... which is also garbage (a 0x46 that matches no stream in this file) and I have '01' as PTS_DTS_flag which is undefined to ISO of 2000.
Are there major updates to the specification that say different things as of my interpretation? Or am I totally wrong with my assumptions?
I hope someone can help
Cheers,
Konran
while doing some programming with MPEG analysis I got stuck with the MPEG2 headers.
During debugging and dumping some data of a PS stream (PAL 25fps, 720x576) I get stuck with some data bytes according to the spec sheet ISO/IEC 13818-1 (2000) that I'm working with. Here are some pieces of the header data part in question:
1: 00 00 01 e0 => video stream
2: 07 dc 31 00 03 de 91 11.00 03 8a 31
3: 00 00 01 b3 2d 02 40 33.24 9f 23 69 10 11 11 12 ... => sequence header
The problem is at line 2: After the 16 bit length field PES_packet_length of 0x7dc I get 16 bits of flags (0x3100) and a length byte for the options following PES_header_data_length which is 0x03. The data alignment flag is 0, so I have to use a standard start code for the next sequence after PES_header_data_length + the value in there. When I do this I point after the 11 in line 1 and get 0x00038a31 and that is of course wrong. It should continue with line 3 at 0x000001b3. I'm 4 Bytes in offset less than that.
How's that? The flags say that the scrambling value is '11' which is user defined, no off. Is there some header scrambling in place?
At another place in the same stream I've found a '00' scrambling value, an alignment flag of '1' so that I have to jump to a one byte start code after the header ... which is also garbage (a 0x46 that matches no stream in this file) and I have '01' as PTS_DTS_flag which is undefined to ISO of 2000.
Are there major updates to the specification that say different things as of my interpretation? Or am I totally wrong with my assumptions?
I hope someone can help
Cheers,
Konran
Comment