Projekte > MPEG-1/2 Video > MPEG-2 Elementar Stream Video

Picture Coding Extension

Dem Extension Start Code mit der ID $B5 folgen vier Bit mit der Extension ID $B8.

Aufbau

  • 4 Byte: EXTENSION_START_CODE = $000001B5
  • 4 Bit: Start Code Identifier - Picture Coding Extension = $8
  • 4 Bit: f_code[0][0] - forward horizontal
  • 4 Bit: f_code[0][1] - forward vertical
  • 4 Bit: f_code[1][0] - backward horizontal
  • 4 Bit: f_code[1][1] - backward vertical
  • 2 Bit: Intra DC Precision
  • 2 Bit: Picture Structure
  • 1 Bit: Top Field First
  • 1 Bit: Frame Pred Frame DCT
  • 1 Bit: Concealment Motion Vectors
  • 1 Bit: Q Scale Type
  • 1 Bit: Intra VLC Format
  • 1 Bit: Alternate Scan
  • 1 Bit: Repeat First Field
  • 1 Bit: Chroma 420 Type
  • 1 Bit: Progressive Frame
  • 1 Bit: Composite Display Flag, wenn gesetzt:
    • 1 Bit: V Axis
    • 3 Bit: Field Sequence
    • 1 Bit: Sub Carrier
    • 7 Bit: Burst Amplitude
    • 8 Bit: Sub Carrier Phase

Als Schema

EXTENSION_START_CODE
 
$000001B5
 76543210
0
1
2
3
4Start Code Identifier = $8f_code[0][0]
5f_code[0][1]f_code[1][0]
6f_code[1][1]Intra DC Prec.Picture Structure
7TFFFPF
DCT
CMVQ Scale TypeIntra VLC FormatAlternate ScanRepeat First FieldChroma 420 Type
8Progressive FrameComposite Display?V AxisField SequenceSub CarrierBurst Amplitude
9noch BASub Carrier Phase
10noch SCP 

Erläuterungen

f_code[s][t]
Die Werte werden zum Decodieren der Motion Vectors benutzt. Der Wert 0 ist verboten, zulässig sind 1 bis 9 und 15.

Intra DC Precision
Genauigkeit, mit welcher bei der Diskreten Cosinustransformation gearbeitet wird. Davon wird der Intra DC Mult(iplikator) abgeleitet.

Wert Genauigkeit Multiplikator
008 Bit8
019 Bit4
1010 Bit2
1111 Bit1

Picture Struktur

Wert Picture Struktur
00Reserviert
01Top Field - oberes Halbbild
10Bottom Field - unteres Halbbild
11Frame Picture - Vollbild

Wenn ein Frame in Halbbildern encodet wurde, muss immer ein Paar mit gleichem Picture Coding Type vorliegen.

Top Field First
Dieses Flag ist von Picture Structure, Progressive Sequence und Repeat First Field abhängig.
Bei nicht gesetzten Flag Progressive Sequence dient es beim Decoding der Rekonstruktion des Frames und gibt an, ob das First Field (oberes Halbbild) zuerst ausgegeben wird.
Bei gesetzten Flag Progressive Sequence, gibt es in Verbindung mit dem Flag Repeat First Field an, wie oft ein Frame beim Decoding ausgegeben wird. Dies bedeutet, bei Repeat First Field = 0 und Top Field First = 0 wird ein progressives Frame, bei Repeat First Field = 1 und Top Field First = 0 werden zwei identische progressive Frames und bei Repeat First Field = 1 und Top Field First = 1 drei identische progressive Frames ausgegeben.

Frame Pred Frame DCT
Wenn dieses Flag gesetzt ist, wird nur Frame DCT und Frame Prediction genutzt. Bei Field Picture (Halbbildern) ist es 0, bei progressiven Frames 1.

Concealment Motion Vectors
Dieses Flag gibt an, ob die Intra Macroblocks mit Motion Vectors encoded wurden.

Q Scale Type
Diesses Flag wird für den Quantiser Scale Factor verwendet.

Intra VLC Format
Dieses Flag wird für die Bestimmung der DCT Koeffizienten verwendet.

Alternate Scan
Dieses Flag wird für die Bestimmung der DCT Koeffizienten verwendet.

Repeat First Field
Wenn die Flags progressisve_sequence (siehe Sequence Extension Header) und progressive_frame nicht gesetzt sind, ist das Flag repeat_first_field ebenfalls nicht gesetzt. Beim Decoden wird dann das Frame aus zwei Feldern zusammengesetzt.
Ist das Flag progressive_sequence nicht aber das Flag progressive_frame gesetzt, wird das Frame aus zwei Feldern zusammengesetzt. Das erste Feld (Top Field oder Bottom Field) wird durch das Flag top_field_first identifiziert und wird von dem anderen gefolgt.
Ist dann das Flag repeat_first_field gesetzt, wird das Frame aus drei Fields zusammengesetzt. Das erste Field wird durch das Flag top_field_first bestimmt und von dem anderen gefolgt. Anschließend wird das erste Field wiederholt.
Ist das Flag progressive_sequence gesetzt und das Flag repeat_first_field nicht, wird das Frame aus einem Frame decodiert.

Chroma 420 Type
Ist genauso gesetzt wie Progressive Frame. Existiert aus historischen Gründen.

Progressive Frame
Ist das Flag nicht gesetzt, bedeutet dies, dass die beiden Fields eines Frame zwei interlaced Fields sind. Repeat First Field muss 0 sein (two field duration).
Ist das Flag gesetzt, bedeutet dies, dass die beiden Fields zu einem verschmolzen sind. Picture Structure muss auf "Frame" und Frame Pred Frame DCT auf 1 gesetzt sein.

Composite Display Flag
Dieses Flag ist gesetzt, wenn die Picture, aus denen das MPEG encodet wurde, als (analoges) Composite Video encodet waren. Die Informationen beziehen sich auf die Exstension folgenden Picture. Handelt es sich um ein Frame Picture, beziehen sich die Informationen auf das First Field. Die Informationen werden für das Second Field angepasst, da diese nicht gespeichert werden können.
Die folgenden Elemente werden für das Decoding nicht genutzt. Das Repeat First Field Flag und das Composite Display Flag dürfen nicht gleichzeitig gesetzt sein.

V Axis
1-bit integer used only when the bitstream represents a signal that had previously been encoded according to PAL systems. v_axis is set to 1 on a positive sign, v_axis is set to 0 otherwise.

Field Sequence
Gibt die Nummer des Feldes einer acht Field Sequence bei einem PAL System oder einer fünf Field Sequence bei einem NTSC System entsprechend nachfolgender Tabelle an:

Field Sequence Frame Field
00011
00112
01023
01124
10035
10136
11047
11148

Sub Carrier
Ist das Flag nicht gesetzt ist das sub-carrier/line frequency relationship korrekt.

Burst Amplitude
gibt die Burstamplitude für PAL und NTSC an.

Sub Carrier Phase
Gibt die Phase des Referenz Sub Carrier der Fieldsynchronisation an.

Sub Carrier Phase Phase
0([360° / 256] * 0)
1([360° / 256] * 1)
......
255([360° / 256] * 255)

Testprogramm

Mit dem folgenden kleinen Testprogramm kann man einen MPEG-2 Video Elementar Stream scannen und die Picture Coding Extension anzeigen lassen.

Die Extra Informations Bit wird nicht ausgewertet.

MPEG2 Elementar Test 10 (165 kb) - MD5
Stand: 13. Oktober 2008