aspose.info
DE

VP6 - TrueMotion-Videodatei

Aktualisiert

Was ist eine VP6-Datei?

VP6 ist ein Videoformat mit verlustbehafteter Komprimierung, das im Mai 2003 von On2 Technologies eingeführt wurde. Es ist Teil einer Reihe von Video-Codecs, die von TrueMotion entwickelt wurden, einschließlich V3, V4 und V5. Das Format wurde in Kürze im Rundfunkbereich verwendet, beispielsweise mit BBC-Berichten und QuickLink-Software. VP6 wurde im Januar 2005 vom VP7-Codec mit besserer Kompatibilität zur Komprimierung abgelöst.

VP6-Dateiformat

Vollständige Spezifikationen für V6-Dateien sind nicht öffentlich verfügbar. On2 veröffentlichte die Spezifikationen zunächst, aber bald wurden sie für allgemeine Benutzer nicht verfügbar gemacht. Eine inoffizielle Dokumentation des VP6-Dateiformats ist unter Multimedia-Wiki verfügbar, die als Referenz für Entwickler herangezogen werden kann.

Makroblöcke (MB)

Ähnlich wie bei MPEG-2, MPEG-4 Teil 2 und 10 besteht jeder Videoframe einer VP6-Datei aus einem Array von 16x16 Makroblöcken (MB). Jeder MB kann sich in einem der folgenden Modi befinden:

  • Intra-MB
  • Inter MB, null MV, vorherige Frame-Referenz
  • Inter-MB, Differential-MV, vorherige Frame-Referenz
  • Inter MB, vier MVs, vorherige Frame-Referenz
  • Inter MB, MV 1, vorherige Frame-Referenz
  • Inter MB, MV 2, vorherige Frame-Referenz
  • Inter MB, null MV, mit Lesezeichen versehene Frame-Referenz
  • Inter-MB, differenzieller MV, mit Lesezeichen versehene Frame-Referenz
  • Inter MB, MV 1, Frame-Referenz mit Lesezeichen
  • Inter MB, MV 2, Frame-Referenz mit Lesezeichen

Frame-Header

Der Frame-Header eines VP6 ist wie unten gezeigt und folgt dem Big-Endian-Bitpacking.

SyntaxAnzahl BitsTypSymantecs
frame_mode1Enum0x0 bedeutet ein Intra-Frame
qp6UnsignedGültiger Bereich Quantisierungsparameter 0..63
Markierung1Konstante0=VP61/62, 1=VP60
if (frame_mode == 0) {0entspricht INTRA_FRAME
Version5Konstante6=VP60/61, 7=VP60(Electronic Arts), 8=VP62
version22Konstante0=VP60, 3=VP61/62
Verschachtelung1Booleantrue (1) bedeutet, dass Interlace verwendet wird
if (marker==1 oder version2==0) {
Offset16UnsignedOffset des sekundären Puffers (Bytes relativ zum Anfang des Puffers)
}
dim_y8UnsigniertMakroblockhöhe des Videos
dim_x8UnsigniertMakroblockbreite des Videos
render_y8UnsignedHöhe des Videos anzeigen
render_x8UnsignedAnzeigebreite des Videos
}sonst{
if (marker==1 oder version2==0) {
offset16UnsignedOffset des sekundären Puffers (Bytes relativ zum Anfang des Puffers)
}
}

Verweise

Siehe auch