Spezifikationen weiterer Komprimierungsmethoden

HINWEIS: Die Informationen auf dieser Seite sind für die Arbeit mit WinZip® nicht von Bedeutung, sondern lediglich für die Entwickler von Dienstprogrammen zur Verarbeitung von ZIP-Dateien gedacht.

In diesem Dokument wird das von WinZip für die Erzeugung PPMd-, WavPack- und Jpeg-komprimierter Archive verwendete Dateiformat beschrieben. Das PPMd-Komprimierungsformat wurde mit der im August 2005 herausgegebenen Version WinZip 10.0 Beta eingeführt. Das WavPack-Komprimierungsformat wurde mit der im Oktober 2006 herausgegebenen Version WinZip 11.0 Beta eingeführt. Das Compressed Jpeg-Format wurde mit der im September 2008 herausgegebenen Version WinZip 12.0 eingeführt. Mit der im Mai 2009 herausgegebenen Version WinZip 12.1 wurde die Zipx-Datei eingeführt. Die Zipx-Datei ist ein Archiv, das wie in der Zip-Dateispezifikation appnote.txt beschrieben mit einer der oben genannten Komprimierungsmethoden, mit der LZMA- oder mit der bzip2-Komprimierungsmethode erstellt wurde.

Diese Informationen werden bei Bedarf aktualisiert, beispielsweise um Änderungen an den Dateiformaten zu dokumentieren oder weitere Hinweise oder Tipps zur Implementierung bereitzustellen. Wenn Sie per E-Mail auf wesentliche Änderungen an diesem Dokument hingewiesen werden möchten, können Sie sich weiter unten in unsere Mailingliste "Developer Information" eintragen lassen.

WinZip Computing hat die Spezifikation des ZIP-Dateiformats um die Unterstützung der PPMd- und der WavPack-Komprimierung sowie von Compressed JPEG-Dateien erweitert, ohne das Dateiformat hierbei grundlegend zu verändern. Diese Erweiterungen werden in dem vorliegenden Dokument ausführlich beschrieben. Außerdem erfahren Sie in diesem Dokument, wo Sie die aktuellen PPMd- und WavPack-Komprimierungscodes kostenlos beziehen können. Hierbei handelt es sich um dieselben Codes, die auch von WinZip verwendet werden. Wir sind der Überzeugung, dass alle Entwickler mithilfe des frei verfügbaren Komprimierungscodes und dieser Spezifikation problemlos in der Lage sein werden, ihre ZIP-Dateidienstprogramme mit kompatiblen Komprimierungsmechanismen auszustatten.

Dieses Dokument soll kein Tutorial zum Thema Komprimierung oder Archivdateistruktur darstellen. Zwar haben wir versucht, die notwendigen Detailinformationen zu den aktuellen PPMd-, WavPack- und Compressed Jpeg-Spezifikationen im ZIP-Dateiformat bereitzustellen, für die Umsetzung dieser Informationen in eigenen Programmen wird jedoch eine grundlegende Kenntnis der Komprimierungskonzepte, des ZIP-Dateiformats usw. benötigt.

WinZip Computing übernimmt keinerlei Garantie für die in diesem Dokument enthaltenen Informationen. Insbesondere bietet WinZip Computing keine Gewähr für die Fehlerfreiheit dieser Informationen oder ihre Eignung für einen bestimmten Zweck sowie dafür, dass das hier beschriebene Dateiformat auch in künftigen WinZip-Versionen unterstützt wird. Es wird ausdrücklich empfohlen, jeglichen Code und alle Verfahren mit der üblichen Sorgfalt zu testen und zu validieren.


Compressed Jpeg - Komprimierungsmethode 96

Compressed Jpeg ist ein verlustfreies Komprimierungsformat für JPEG-Dateien. Informationen zu dem in WinZip ab Version 12.0 verwendeten Compressed Jpeg 1.0-Format finden Sie im Internet unter https://www.winzip.com/wz-jpg-comp.pdf.

WinZip speichert die einzelnen Compressed JPEG-Dateien als Ausgabe der Compressed JPEG-Routine im Archiv unmittelbar nach dem Ende des lokalen Headers. Die Komprimierungsmethode wird im lokalen und zentralen Header auf 96 eingestellt. Außerdem setzt WinZip die Felder "version needed to extract" und "version made by" im lokalen und zentralen Header auf dieselben Werte, die auch verwendet würden, wenn die Dateien mit dem Deflate-Algorithmus komprimiert worden wären.


WavPack - Komprimierungsmethode 97

WavPack ist ein verlustloses Open-Source-Audiokomprimierungsformat, das von David Bryant entwickelt wurde. Informationen und den Quellcode für die WavPack-Version 4.32, die mit der in WinZip ab 11.0 verwendeten Version von WavPack auf- und abwärtskompatibel ist, finden Sie im Internet unter http://www.wavpack.com.

WinZip speichert die einzelnen WavPack-komprimierten .WAV-Dateien als Ausgabe der WavPack-Routine im Archiv unmittelbar nach dem Ende des lokalen Headers. Die Komprimierungsmethode wird im lokalen und zentralen Header auf 97 eingestellt. Außerdem setzt WinZip die Felder "version needed to extract" und "version made by" im lokalen und zentralen Header auf dieselben Werte, die auch verwendet würden, wenn die Dateien mit dem Deflate-Algorithmus komprimiert worden wären.

HINWEIS: Es ist erforderlich, die gesamte für die Speicherung eines Musters verwendete Bytesequenz und nicht nur die für die Darstellung des Musters selbst verwendeten Bits zu komprimieren. Ein 12-Bit-Sample belegt beispielsweise 2 Byte (16 Bit) im .WAV-Dateiformat. Wenn Sie WavPack mitteilen, dass die Größe des Musters nur 12 Bit beträgt, werden die 4 ungenutzten Bit bei der Komprimierung ignoriert und unabhängig von der Einstellung in der ursprünglichen Datei beim Extrahieren auf 0 gesetzt. Um sicherzustellen, dass die extrahierte Datei Bit für Bit mit der ursprünglichen Datei identisch ist, müssen Sie WavPack daher mitteilen, dass die Größe des Musters die vollen 16 Bit (d. h. nicht nur die tatsächlichen 12 Bit) beträgt.


PPMd - Komprimierungsmethode 98

PPMd ist ein Open-Source-Datenkomprimierungsalgorithmus, der von Dmitry Shkarin entwickelt wurde. WinZip verwendet Version I, Revision 1 dieses Algorithmus. Informationen zu PPMd I rev. 1 sowie den entsprechenden Quellcode finden Sie im Internet unter http://www.compression.ru/ds/.

WinZip fügt am Beginn der PPMd-komprimierten Daten in einer ZIP-Datei ein Zwei-Byte-WORD ein, das die drei folgenden Felder enthält:

  1. Methode zur Wiederherstellung des Modells bei ungenügender Speicherkapazität:
    MRM_RESTART - Modell neu aufbauen (0 - Standardeinstellung)
    MRM_CUT_OFF - Modell abschneiden (1)
    MRM_FREEZE - Kontextstruktur einfrieren (2)
  2. SubAlloc-Größe (in MB): Standardeinstellung ist 50 MB.
    WinZip extrahiert alle Dateien mit einer SubAlloc-Größe von 1 MB bis einschließlich 256 MB (sofern auf dem PC, auf dem WinZip ausgeführt wird, genügend Speicher verfügbar ist).
  3. Maximale Modellfolge: Standardeinstellung ist 8.
    WinZip extrahiert alle Dateien mit einer maximalen Modellfolge von 2 bis einschließlich 16 (sofern auf dem PC, auf dem WinZip ausgeführt wird, genügend Speicher verfügbar ist).

Diese Felder werden wie im folgenden C++ Beispielcode dargestellt in das Zwei-Byte WORD (in der Intel low-byte/high-byte-Reihenfolge) am Anfang einer komprimierten Datei gepackt:

Bei PPMd-komprimierten Dateien setzt WinZip die Felder "version needed to extract" und "version made by" im lokalen und zentralen Header auf dieselben Werte, die auch verwendet würden, wenn die Dateien mit dem Deflate-Algorithmus komprimiert worden wären.


Unser Dank geht an: