WavPack - WavPack

WavPack
Entwickler David Bryant
Stabile Version
5.4.0 / 12. Januar 2021 ; vor 7 Monaten ( 2021-01-12 )
Repository Bearbeite dies bei Wikidata
Betriebssystem Plattformübergreifend
Typ Audio-Codec- Container
Lizenz BSD-Lizenz
Webseite wavpack.com
WavPack
Dateinamenerweiterung
.wv (für verlustfreie und hybride Dateien), .wvc (Korrekturdatei nur für hybride Dateien)
Internet-Medientyp
Audio/x-wavpack (.wv), Audio/x-wavpack-Korrektur (.wvc)
magische Zahl wvpk
Enthalten von Matroska (nicht erforderlich)
Offenes Format ? Jawohl

WavPack ist eine freie und Open-Source - Lossless Audio Kompressionsformat und applicition das Format umzusetzen. Es ist insofern einzigartig, als es neben der normalen Komprimierung hybride Audiokomprimierung unterstützt, die der Funktionsweise von FLAC ähnelt . Es unterstützt auch die Komprimierung einer Vielzahl von verlustfreien Formaten, einschließlich verschiedener Varianten von PCM und auch DSD, wie es in SACDs verwendet wird , zusammen mit seiner Unterstützung für Surround-Audio.

Merkmale

Die WavPack-Komprimierung kann 8-, 16-, 24- und 32-Bit- Festkomma- und 32-Bit- Gleitkomma- PCM- Audiodateien im . WAV- Dateiformat. Es unterstützt auch Surround-Sound- Streams und Hochfrequenz- Abtastraten . Wie bei anderen verlustfreien Komprimierungsschemata variiert die Datenreduktionsrate mit der Quelle, liegt jedoch im Allgemeinen zwischen 30% und 70% für typische populäre Musik und etwas besser als bei klassischer Musik und anderen Quellen mit größerem Dynamikumfang.

Hybridmodus

WavPack enthält auch einen "Hybrid"-Modus, der immer noch die Funktionen der verlustfreien Komprimierung bietet, aber zwei Dateien erstellt: eine relativ kleine, qualitativ hochwertige, verlustbehaftete Datei (.wv), die allein verwendet werden kann; und eine "Korrektur"-Datei (.wvc), die in Kombination mit der verlustbehafteten Datei eine vollständige verlustfreie Wiederherstellung ermöglicht. Dies ermöglicht die gemeinsame Verwendung von verlustbehafteten und verlustfreien Codecs.

Eine ähnliche „Hybrid“-Funktion bieten auch OptimFROG DualStream , MPEG-4 SLS und DTS-HD Master Audio .

Zusammenfassung

  • Open-Source , veröffentlicht unter einer BSD- ähnlichen Lizenz
  • Multiplattform
  • Fehlerrobustheit
  • Schnelle Codierungsgeschwindigkeit
  • Höhere Komprimierungsraten als andere weit verbreitete (FLAC/ALAC) verlustfreie Open-Source-Audiocodecs
  • Streaming- Unterstützung
  • Unterstützt Mehrkanal-Audio und hohe Auflösungen
  • Native Unterstützung in WavPack 5.x zum Komprimieren von Direct Stream Digital, ohne die Quelldatei in PCM zu konvertieren.
  • Hybrid-/verlustbehafteter Modus
  • Hardware-Unterstützung (von Rockbox- Firmware bereitgestellt )
  • Unterstützung von Metadaten ( ID3 , APE- Tags) (APE-Tag ist das bevorzugte Format.)
  • Unterstützt RIFF- Blöcke
  • ReplayGain- kompatibel
  • Möglichkeit, selbstextrahierende Dateien für die Win32-Plattform zu erstellen
  • Unterstützt 32-Bit-Gleitkomma-Streams
  • Unterstützt eingebettete CUE-Sheets
  • Enthält MD5- Hashes für eine schnelle Integritätsprüfung
  • Kann sowohl im symmetrischen als auch im asymmetrischen Modus (langsamere Codierung, um die Decodierung zu beschleunigen) codieren

Geschichte

David Bryant begann Mitte 1998 mit der Veröffentlichung von Version 1.0 (1998-08-15) mit der Entwicklung von WavPack. Diese erste Version komprimierte und dekomprimierte Audio verlustfrei und bot bereits eines der besten Effizienz-Geschwindigkeits-Verhältnisse unter den verlustfreien Encodern.

Sehr bald nach der Veröffentlichung von Version 1.0 wurde v. 2.0 (2. September 1998) mit verlustbehafteter Kodierung veröffentlicht (unter Verwendung nur der Quantisierung von Vorhersageresten zur Datenreduktion - kein psychoakustisches Maskierungsmodell wurde auf den Stream angewendet).

1999 wurde Version 3.0 (12. September 1999) mit einem neuen "schnellen Modus" (wenn auch mit reduziertem Kompressionsverhältnis), Komprimierung von rohen (headerlosen) PCM- Audiodateien und Fehlererkennung mit einer zyklischen 32-Bit- Redundanzprüfung veröffentlicht .

Ein Feature, das in späten 3.x-Versionen hinzugefügt wurde, ist der "Hybrid"-Modus, bei dem der Encoder eine verlustbehaftete Datei und eine Korrekturdatei erzeugt, sodass beide wieder in einen PCM-Stream mit der gleichen Qualität wie das Original dekomprimiert werden können. Außerdem wird vom Autor eine „Roadmap“ veröffentlicht, die mögliche Hinweise für die zukünftige Entwicklung enthält.

Die Unterstützung

Software

Einige Software unterstützt das Format nativ (wie DeaDBeeF , foobar2000 und Jack! The Knife ), während andere Plugins benötigen. Die offizielle WavPack-Website bietet Plugins für Winamp , Nero Burning ROM , MediaChest 2.1 und mehrere andere Anwendungen sowie einen DirectShow- Filter. dBpoweramp CD-Ripper , vom Autor von foobar2000, sowie foobar2000 selbst und Asunder ermöglichen das direkte Rippen von Audio-CDs in Wavpack-Dateien.

Linux- Unterstützung ist mit einem nativen Port verfügbar.

FFmpeg verfügt über einen nativen WavPack-Encoder, der mit Software wie GNU parallel kombiniert werden kann , um mehrere CPU-Kerne zu verwenden, um schnell andere verlustfreie Formate in WavPack und von WavPack in jedes von FFmpeg unterstützte Format zu transcodieren, ohne dass zusätzliche Software erforderlich ist.

Hardware

Native Unterstützung:

  • Cowon A3 PMP unterstützt WavPack out of the box.

Nicht-native Unterstützung:

  • Die Apple iPod- Reihe von Musikplayern unterstützt WavPack nicht von Haus aus, kann aber über die Open-Source- Rockbox- Firmware.
  • iriver H100-Serie , kann über Open-Source-Rockbox-Firmware.
  • iriver H300-Serie , kann über Open-Source-Rockbox-Firmware.
  • Android- Smartphones und -Tablets mit der Installation von Mediaplayer-Software von Drittanbietern.
  • Chrome OS- Geräte mit Media Player-Software, die im Linux-Subsystem oder im Android Play Store installiert ist.

Die WavPack-Website enthält auch ein Plugin, das die Unterstützung des Formats auf der Roku PhotoBridge HD ermöglicht .

Technologie

Um einen Hochgeschwindigkeitsbetrieb zu gewährleisten, verwendet WavPack einen Prädiktor, der vollständig in Integer-Mathematik implementiert ist. In seinem "schnellen" Modus ist die Vorhersage einfach die arithmetische Extrapolation der vorherigen zwei Abtastwerte. Wenn die vorherigen beiden Stichproben beispielsweise -10 und 20 waren, wäre die Vorhersage 50. Für den Standardmodus wird ein einfacher adaptiver Faktor hinzugefügt, um den Einfluss der früheren Stichprobe auf die Vorhersage zu gewichten. In unserem Beispiel könnte die resultierende Vorhersage dann zwischen 20 für keinen Einfluss und 50 für vollen Einfluss variieren. Dieser Gewichtungsfaktor wird basierend auf den sich ändernden Spektraleigenschaften der Audiodaten ständig aktualisiert.

Die erzeugte Vorhersage wird dann von dem zu codierenden tatsächlichen Abtastwert subtrahiert, um den Fehlerwert zu erzeugen. Im Mono-Modus wird dieser Wert direkt an den Coder gesendet. Jedoch Stereosignale neigen gewisse Korrelation zwischen den beiden Kanälen zu haben , die weiter ausgenutzt werden können. Daher werden zwei Fehlerwerte berechnet, die die Differenz und den Durchschnitt der linken und rechten Fehlerwerte darstellen. In der Betriebsart "schnell" werden diese beiden neuen Werte statt der linken und rechten Werte einfach an den Codierer gesendet. Im Standardmodus wird der Differenzwert immer zusammen mit einem der anderen drei Werte (Mittelwert, links oder rechts) an den Codierer gesendet. Ein adaptiver Algorithmus bestimmt kontinuierlich den effizientesten der drei zu sendenden basierend auf der sich ändernden Balance der Kanäle.

Anstelle der Rice-Codierung wird ein spezieller Datenencoder für WavPack verwendet. Rice-Codierung ist die optimale Bitcodierung für diese Art von Daten, und der Codierer von WavPack ist weniger effizient, jedoch nur um etwa 0,15 Bits/Sample (oder weniger als 1% für 16-Bit-Daten). Es gibt jedoch einige Vorteile im Austausch; der erste ist, dass der Kodierer von WavPack nicht erfordert, dass die Daten vor der Kodierung gepuffert werden; stattdessen wandelt es jedes Sample direkt in Bitcodes um. Dies ist rechnerisch effizienter und bei einigen Anwendungen besser, bei denen die Codierungsverzögerung kritisch ist. Der zweite Vorteil besteht darin, dass es leicht an eine verlustbehaftete Codierung angepasst werden kann, da alle signifikanten Bits (außer dem implizierten "eins" MSB ) direkt übertragen werden. Auf diese Weise ist es möglich, beispielsweise nur die 3 höchstwertigen Bits (mit Vorzeichen) jedes Samples zu übertragen. Tatsächlich ist es möglich, nur das Vorzeichen und das implizierte MSB für jeden Abtastwert mit einem Durchschnitt von nur 3,65 Bits/Abtastwert zu übertragen.

Dieses Codierungsschema wird verwendet, um den "verlustbehafteten" Modus von WavPack zu implementieren. Im "schnellen" Modus wird die Ausgabe des nicht adaptiven Dekorrelators einfach auf den nächsten kodierbaren Wert für die angegebene Anzahl von Bits gerundet. Im Standardmodus wird der adaptive Dekorrelator verwendet (der das durchschnittliche Rauschen um 1 dB reduziert ) und sowohl der aktuelle als auch der nächste Abtastwert werden bei der Auswahl des besseren der beiden verfügbaren Codes berücksichtigt (der das Rauschen um weitere 1 dB reduziert).

Im Datenpfad von WavPack wird keine Gleitkomma- Arithmetik verwendet, da Integer- Operationen laut dem Autor weniger anfällig für subtile Chip-zu-Chip-Variationen sind, die die verlustfreie Natur der Komprimierung beeinträchtigen könnten (der Pentium-Gleitkomma-Fehler ist ein Beispiel). . Es ist möglich, dass ein verlustfreier Kompressor, der Gleitkomma-Mathematik verwendet, eine andere Ausgabe erzeugt, wenn er auf diesem fehlerhaften Pentium läuft. Selbst wenn man die tatsächlichen Fehler außer Acht lässt, ist Gleitkomma-Mathematik kompliziert genug, dass es feine Unterschiede zwischen "richtigen" Implementierungen geben kann, die für diese Art von Anwendung Probleme verursachen können. Ein 32-Bit-Fehlererkennungscode für die generierten Streams ist enthalten, um das Vertrauen des Benutzers in die Integrität der Komprimierung von WavPack aufrechtzuerhalten.

Der Quellcode von WavPack ist portabel und wurde auf mehreren Unix- und Unix-ähnlichen Betriebssystemen ( Linux , Mac OS X , Solaris , FreeBSD , OpenBSD , NetBSD , Compaq Tru64 , HP-UX ...) sowie Windows , DOS kompiliert , PalmOS und OpenVMS . Es funktioniert auf vielen Architekturen, einschließlich x86 , ARM , PowerPC , AMD64 , IA-64 , SPARC , Alpha , PA-RISC , MIPS und Motorola 68k .

Eine abgespeckte Version von WavPack wurde für den digitalen Signalprozessor der Serie TMS320 von Texas Instruments entwickelt. Dies zielte hauptsächlich darauf ab, Hersteller zu ermutigen, die WavPack-Komprimierung (und -Dekomprimierung) in tragbare Audiorecorder mit Speicher zu integrieren. Diese Version unterstützte Funktionen, die nur auf eingebettete Anwendungen anwendbar waren (Stream-Komprimierung in Echtzeit, wählbare Kompressionsrate) und entfernte Funktionen, die nur auf vollständige Computersysteme zutrafen (Selbstextraktion, Hochkompressionsmodi, 32-Bit-Float). Die DSPs der TMS320-Serie sind native Integer-Geräte und unterstützen WavPack gut. Einige 'besondere' Funktionen der vollständigen WavPack-Software wurden eingeschlossen (zum Beispiel die Möglichkeit, eine Korrektur-'Datei' (Stream) zu generieren) und andere wurden ausgeschlossen. Die Portierung basierte auf Version 4.

WavPack-Unterstützung wurde WinZip ab Version 11.0 Beta hinzugefügt , die im Oktober 2006 veröffentlicht wurde. Diese Erweiterung des ZIP-Dateiformats wurde von PKWARE , den Verwaltern des Formats, in die offizielle APPNOTE.TXT- Beschreibungsdatei ab Version 6.3.2 aufgenommen. veröffentlicht am 28.09.2007.

Siehe auch

Verweise

Externe Links