Was muss ich denn mit nem Hex Editor angucken wenn ich die Frameanzahl in nem RAW MPEG-2 stream haben will?
Reicht es alle Vorkommnisse von "00 00 01 00" zu zählen? (soweit ich mich entsinne ist das ja der Picture header, oder?)
Was muss ich denn mit nem Hex Editor angucken wenn ich die Frameanzahl in nem RAW MPEG-2 stream haben will?
Reicht es alle Vorkommnisse von "00 00 01 00" zu zählen? (soweit ich mich entsinne ist das ja der Picture header, oder?)
ZitatReicht es alle Vorkommnisse von "00 00 01 00" zu zählen
Reicht leider nicht. Wurde im Fieldmode kodiert hat jedes Field einen eigenen Picture Header.
In der Picture Coding Extension (00 00 01 B5 und Byte >=80) steht dann der Field Mode (BF oder TF).
zb 00 00 01 B5 82 1F FA
im dritten Byte nach 85 musst du die beiden ls Bits auswerten
FA = 1111 1010
01 - Top Field
10 - Bottom Field
11 - Frame Picture
Leider können Frames und Fields im Stream bunt gemischt vorhanden sein - du musst alle auswerten.
Danke schon mal für die Info
Was ich also machen müsste ist nach 00 00 01 suchen und ist da nächste Byte ...
Richtig verstanden?
Cu Selur
Vorsicht, nicht hexadezimal mit binär verwechseln. FieldTyp sind 2 bit, "irgend was anderes" kann also nur noch 00 sein, und das wäre eigentlich ein Hinweis auf einen Datenfehler im Bitstrom (reservierter Wert).
Und wenn nach einem ($)B5h dann mehrfach ($)00 kommt, dann folgt darauf jedes Mal je ein Frame oder Field, je nach dem, was bei ($)B5h herausgekommen ist. Das Ergebnis aus ($)B5h setzt also den Status für alle folgenden ($)00h.
($) = MPEG Sync pattern = 000001h
Ah, okay.
Dem "Picture Header" folgt die "Picture Coding Extension"
Eine Extension (es gibt mehrere) hat den Startcode 00 00 01 B5 und die 4 msfBits des nächsten Bytes definieren um welche Extension es sich handelt.
Sequence_Extension 0001
Sequence_Display_Extension 0010
Picture_Display_Extension 0111
Picture_Coding_Extension 1000
Die Picture_Coding_Extension hat also den Startcode 00 00 01 B5 8x
Diese Picture_Coding_Extension musst du auswerten.
Du nimmst das dritte Byte nach B5 und wertest die letzten 2 Bits aus.
Im obigen Beispiel:
00 00 01 B5 82 1F FA
0xFA ist binär 11111010 -> Bottom Field
00 - reserviert
01 - Top Field
10 - Bottom Field
11 - Frame Picture
Heißt dann also:
richtig?
Cu Selur
00 ist reserviert
11 ist ein ganzes Frame
okay, also:
ja
2: Byte nach B5 kann für Picture_Coding_Extension nur zwischen 80 und 8F sein (0b1000xxxx)
Hier ein Sample mit Fields
Nach dem ich erst einen Indexfehler hatte, scheint es nun zu gehen,..
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!