WavPack (.wv/wvc) ist ein freier quelloffener Codec zur verlustfreien und verlustbehafteten Audiokompression, entwickelt von David Bryant/Conifer Software.
WavPack
| |
---|---|
![]() | |
Basisdaten
| |
Entwickler | David Bryant |
Erscheinungsjahr | 1998 |
Aktuelle Version | 4.32 (10. April 2006) |
Betriebssystem | plattformunabhängig |
Programmiersprache | C[1] |
Kategorie | Encoder |
Lizenz | BSD-Lizenz |
deutschsprachig | nein |
www.wavpack.com |
Beschreibung
WavPack ermöglicht es Audiodaten aus dem WAV-Format zu packen und mathematisch verlustfrei zu rekonstruieren. Die Packrate schwankt naturgegeben mit der Art des Eingangssignals, bewegt sich jedoch normalerweise zwischen 25 und 50% und verbessert sich bei Klassischer Musik und anderen Signalen mit größerer dynamischer Bandbreite.
Eine Besonderheit von WavPack ist der Hybrid-Modus (bei OptimFROG auch DualStream genannt), der die komprimierten Audiodaten in eine relativ kleine, qualitativ hochwertige verlusbehaftet komprimierte Datei und eine Korrekturdatei aufteilt.
Wichtigste Merkmale
- Schnelles und effizientes Encoding und Decoding
- quelloffen, Freie Software (BSD-artige Lizenz)
- Plattformübergreifende Verfügbarkeit
- Unterstützung von Mono-, Stereo- und Mehrkanal-Signalen
- Unterstützung hoher Auflösungen – zeitlich wie auch der Klangtiefe (Abtastfrequenzen bis ; Abtastpunkte von 8-, 16-, 24- und 32-Bit Gleitkomma-Werten)
- Verlustbehafteter Hybrid-Modus
- moderne Tagging-Unterstützung (APEv2- und ID3-Tags)
- Streaming-Unterstützung
- Fehlertoleranz
- Kompatibel zum Replay Gain-Standard
- Unterstützt eingebettete Cuesheet
- Unterstützung für RIFF-Chunks
- Unterstützt die Erstellung selbstentpackender Dateien unter Windows
- Eingebettete MD5-Prüfsummen zur schnellen Überprüfung auf Vollständigkeit
- Symmetrische und asymmetrische Codiermöglichkeiten (=von der Encodiergeschwindigkeit un-/abhängige Decodiergeschwindigkeit)
- Gute Software-Unterstützung
- Hardware-Unterstützung.
Geschichte
David Bryant begann die Entwicklung von WavPack Mitte 1998 mit der Veröffentlichung von Version 1.0. Sie beherrschte noch nichts weiter als das verlustfreie Packen und Entpacken von Audiodaten – doch schon damals in einem der besten Verhältnisse von Kodierzeit zu Effizienz.
Sehr bald nach der ersten kam Version 2.0, welche verlustbehaftetes Packen unterstützte (quantisiert die Vorhersage-Restwerte zur Datenreduktion – kein Psychoakustisches Modell kommt zur Anwendung).
1999 kam Version 3.0 mit neuen Merkmalen wie einem schnelleren (weniger effizienten) Modus, Unterstützung von rohen, kopfdatenlosen PCM-Dateien ("raw"/"headerless") sowie Fehlererkennung durch eine 32 Bit Zyklische Redundanzprüfung.
Als weiteres wesentliches Merkmal kam in den späten 3.x-Versionen der Hybrid-Modus hinzu, bei dem zusätzlich zu einer verlustbehaftet kodierten Datei noch eine Korrekturdatei erzeugt wird, die in der Kombination die Rekonstruktion der Originaldaten erlauben.
2004 kam WavPack 4 heraus. Es fügte wichtige Merkmale wie schnelles Suchen, Mehrkanalunterstützung und Unterstützung hoher Bit- und Sampleraten hinzu, die es zu einem der vielfältigsten, modernsten und nach FLAC meistgenutzten freien verlustfreien Audiopackverfahren machen.
Software-Unterstützung
- Custom Windows Frontend (von Speek)
- Directshow Filter für Directshow-Programme wie Windows Media Player (http://CoreWavPack.corecodec.org/)
- WavPack kompiliert für verschiedene Plattformen
- MrQuestionMan - Audio Identifier
- Burrrn - Direktes schreiben von Audio CDs aus mehreren Formaten
- Mp3tag - Universeller Tag-Editor
- Exact Audio Copy - AudioCD-Einleseprogramm (mit wavpack.exe als externes Kompressionsprogramm)
- VUPlayer - freies multiformat Audio Wiedergabe-/Konvertierprogramm
- Xist (beta) - Experimentelles Wiedergabeprogramm für OS X mit WavPack-Unterstützung (Quellcodes)
- Cog - neues Wiedergabeprogramm für OS X mit WavPack-Unterstützung
- MPXPlay - DOS (MS-DOS, FreeDOS, DR-DOS) basiertes Wiedergabeprogramm mit WavPack-Unterstützung
- The GodFather - Tagger / Musikmanager
- Wavpack4Wavelab - das erste Dateiein-/ausgabe-Zusatzmodul eines Drittanbieters aller Zeiten für den kommerziellen/professionellen Wave-Editor Steinberg Wavelab 5/6
- Easy CD-DA Extractor - Kommerzielles CD-Einlese-, Codier- und Konvertierprogramm
- OggdropXPd - Codiert direkt aus verschiedenen verlustfreien Formaten, darunter WavPack, ins quelloffene verlusbehaftete OggVorbis-Format
Zusatzmodule für
- NullSofts Winamp mit ReplayGain- & Media Library-Unterstützung (http://www.wavpack.com/downloads.html)
- foobar2000 - Advanced Audio Player mit Unterstützung von ReplayGain & Cuesheets (offizielles Zusatzmodul)
- XMMS (http://www.wavpack.com/downloads.html, Quellcode: http://svn.caddr.com/svn/)
- Adobe Audition / CoolEdit mit Unterstützung für 32 Bit Fließkomma- & Speicherung von Zusatzinformationen (http://www.wavpack.com/downloads.html)
- dBpowerAMP - Music Converter / Audio Player / CD Writer (offizielles Zusatzmodul)
- Apollo Audio Player mit ReplayGain-Unterstützung (http://www.wavpack.com/downloads.html)
- MusikCube - Free Audio Player (http://www.musikcube.com/page/plugins/view/15)
- Ahead Nero Burning ROM (http://www.wavpack.com/downloads.html)
- LAMIP (offizielles Zusatzmodul) - Modular audio player for Linux and friends - Homepage
- XMPlay - small free Windows player mit offiziellem Zusatzmodul (http://support.xmplay.com/file.php?count_per_page=all&cat_id=11&submit=Set)
- Quintessential Player (http://www.quinnware.com/list_plugins.php?plugin=43)
- 1by1 und Coolplayer mit dem Winamp WavPack-Zusatzmodul (http://www.wavpack.com/downloads.html)
Hardware-Unterstützung
- Für Geräte mit der quelloffenen Rockbox-Firmware wie die Modelle iriver ihp100, ihp120, ihp140, H320, H340 sowie iPod Color/Photo/Nano (http://www.rockbox.org/)
- Roku PhotoBridge HD durch Zusatzmodul (http://www.wavpack.com/downloads.html)
Technologie
Um Hochgeschwindigkeit zu gewährleisten nutzt WavPack einen sehr einfache Voraussage, die ausschließlich auf Ganzzahlmathematik basiert. Im schnellen Modus besteht die Vorhersage nur in der arithmetischen Extrapolation der vorausgehenden zwei Abtastpunkte. Wenn also beispielsweise die vorausgehenden zwei Abtastpunkte die Werte -10 und 20 waren, dann wäre der vorausgesagte Wert 50. Für den voreingestellten Modus kommt ein einfacher Anpassungsfaktor hinzu um den Einfluss des ersten Punktes auf die Vorhersage zu gewichten. Für obiges Beispiel bedeutete das eine Variation des Ergebnisses von 20 bei keinem Einfluss bis zu 50 bei vollem Einfluss. Dieser Gewichtungsfaktor wird ständig angepasst abhängig von der Charakteristika des Spektrums des Tonmaterials, daher nennt es sich "adaptiv" (anpassend).
Der erzeugte Vorhersagewert wird dann vom echten Abtastwert abgezogen um den Fehlerwert zu erhalten. Im Mono-Modus wird dieser Wert direkt an den Kodierer weitergeleitet, doch Stereosignale neigen zu Abhängigkeiten zwischen den Kanälen, die zusätzlich ausgenutzt werden kann. In diesem Falle werden zwei Fehlerwerte ermittelt, derer einer die Differenz und einer den Durchschnitt des linken und rechten Fehlerwertes darstellt. Im schnellen Modus werden diese zwei neuen Werte anstatt des rechten und linken Fehlerwertes einfach an den Kodierer geschickt. Im Vorgabemodus wird immer der Differenzwert zusammen mit einem der restlichen drei Werte, dem Durchschnitt, dem linken oder dem rechten Wert, an den Kodierer gegeben. Ein anpassungsfähiger Algorithmus bestimmt fortlaufend den geeignetsten der drei anhand der veränderlichen Balance zwischen den Kanälen.
Der Entwickler hat für WavPack einen Datenencoder entwickelt, von dem er glaubt, er sei besser als die Rice-Kodierung in zweierlei Bereichen. Es ist unmöglich effizienter als die Rice-Kodierung zu kodieren, da sie für diesen Datentyp in jedem Fall eine optimale Bitkodierung erreicht (manchmal als Huffman-Code bekannt). Der Enkoder von WavPack bietet etwas weniger Effizienz, doch nur um etwa 0,15 Bits/Abtastwert (bzw. weniger als ein Prozent bei 16 Bit-Daten). Der erste Vorteil des WavPack-Coders ist, dass die Daten nicht vorausgepuffert werden müssen und stattdessen jeder Abtastwert direkt in Bitcodes übertragen werden kann. Dies ist in der Berechnung effizienter und in Anwendungsfällen, in denen es auf die Codierverzögerung ankommt, von Belang. Der zweite Vorteil ist, dass es leicht an die verlustbehaftete Codierung angepasst werden kann, da alle wichtigen Bits (mit Ausnahme des implied "einen" höchstwertigen Bits) direkt übertragen werden. Somit ist es möglich beispielsweise nur die drei wichtigsten Bits jedes Abtastpunktes (mit Vorzeichen) zu übergeben. Tatsächlich ist es möglich sogar nur das Vorzeichen und das zwangsläufige MSB jedes Punktes zu übertragen mit einem Durchschnitt von nur 3,65 Bits/Abtastwert.
Dieses Vorgehen kommt zum Einsatz um den verlustbehafteten Modus von WavPack zu verwirklichen. Im schnellen Modus wird die Ausgabe des nichtanpassungsfähigen Dekorrelators einfach auf den nächsten codierbaren Wert gerundet, der sich aus der angegebenen Zahl an Bits ergibt. Im Vorgabemodus wird der anpassungsfähige Dekorrelator benutzt, was die Störgeräusche um etwa ein Dezibel senkt. Des Weiteren werden sowohl der aktuelle als auch der folgende Abtastpunkt herangezogen um das geeignetere der zwei zu bestimmen, was die Störgeräusche um ein weiteres Dezibel reduziert.
Der Entwickler hat entschieden keine Fließkomma-Arithmetik in WavPacks Prozeduren zu benutzen, da er Ganzzahloperationen für weniger anfällig gegenüber kleinen Abweichungen von Chip zu Chip hält, die die Verlustfreiheit gefährden könnten. Der Pentium Fließkomma-Fehler ist ein alarmierendes Beispiel dessen. Es besteht die Möglichkeit, dass ein verlustfreier Packer, der Fließkomma-Operationen nutzt, auf solch einem fehlerhaften Pentium eine abweichende Ausgabe erzeugt. Sogar wenn solche Fehler nicht in Betracht gezogen werden ist Fließkomma-Mathematik kompliziert genug um kleine Unterschiede zwischen "richtigen" Implementierungen möglich zu machen, die für eine Sorte von Anwendungen Schwierigkeiten verursachen. Um die Zuverlässigkeit noch weiter zu erhöhen bindet der Encoder einen 32 Bit-Fehlererkennungs-Code in den erzeugten Datenstrom ein.
Der WavPack-Quellcode ist v.a. wegen der ausschließlichen Verwendung von Ganzzahloperationen überaus gut portierbar. Er wurde für zahlreiche Unices kompiliert (Linux, Mac OS X, Solaris, FreeBSD, OpenBSD, NetBSD, Compaq Tru64, HP-UX ...) wie auch für Windows, DOS, Palm OS und OpenVMS. Er läuft auf Architekturen wie x86, ARM, PowerPC, AMD64, IA-64, Sun SPARC, DEC Alpha, PA-RISC, MIPS, Motorola 68k ...
Siehe auch
Audioformat für eine Liste weiterer Verfahren
Weblinks
- Offizielle Seite von WavPack
- Nützliche Programme zu WavPack
- Ein Vergleich einiger verlustfreier Audiocoder at Hydrogenaudio Wiki.
- Historische Versionen auf ReallyRareWares
- ↑ The wav_pack Open Source Project on Open Hub: Languages Page. In: Open Hub. (abgerufen am 3. September 2018).