WavPack
# WavPack

## Características

La compresión WavPack (archivos.WV) puede comprimir (y restaurar) archivos de audio de punto fijo de 8, 16, 24 y 32 bits y de coma flotante de 32 bits en el formato de archivo.WAV. También soporta flujos de sonido envolvente y frecuencias de muestreo de alta frecuencia. Al igual que otros esquemas de compresión sin pérdidas, la tasa de reducción de datos varía según la fuente, pero generalmente se sitúa entre el 30% y el 70% para la música popular típica y algo mejor que para la música clásica y otras fuentes con mayor rango dinámico.

### Modo híbrido

WavPack también incorpora un modo "híbrido" que proporciona las características de la compresión sin pérdidas, pero crea dos archivos: un archivo con pérdidas (.wvv) relativamente pequeño y de alta calidad que puede ser utilizado por sí mismo; y un archivo de "corrección" (.wvc) que, cuando se combina con el archivo con pérdidas, proporciona una restauración completa sin pérdidas. Esto permite el uso conjunto de codecs con y sin pérdida.

Una característica "híbrida" similar también es ofrecida por OptimFROG DualStream, MPEG-4 SLS y DTS-HD Master Audio.

## Historia

David Bryant comenzó el desarrollo de WavPack a mediados de 1998 con el lanzamiento de la versión 1.0 (1998-08-15). Esta primera versión comprimió y descomprimió el audio sin pérdidas, y ya presentaba una de las mejores relaciones eficiencia vs. velocidad entre los codificadores sin pérdidas. Poco después del lanzamiento de la versión 1.0, v. 2.0 (2 de septiembre de 1998), se publicó la versión 2.0, con codificación con pérdidas (usando solo cuantización de residuos de predicción para la reducción de datos - no se aplicó ningún modelo de enmascaramiento psicoacústico a la secuencia).

En 1999 se publicó la versión 3.0 (12 de septiembre de 1999), con un nuevo "modo rápido" (aunque con una relación de compresión reducida), compresión de archivos de audio PCM en bruto (sin encabezado) y detección de errores mediante una comprobación de redundancia cíclica de 32 bits. Una característica añadida en versiones 3.x tardías es el modo "híbrido", en el que el codificador genera un archivo con pérdidas y un archivo de corrección de forma que ambos pueden descomprimirse de nuevo en un flujo PCM de la misma calidad que el original. El autor publica también una "hoja de ruta" que contiene posibles pistas sobre la evolución futura.

## Soporte

### Software

Algunos programas soportan el formato de forma nativa (como Jack! The Knife), mientras que otros requieren plugins. El sitio web oficial de WavPack ofrece plugins para Winamp, Nero Burning ROM, MediaChest 2.1, Foobar 2000 y otras aplicaciones, así como un filtro DirectShow. Asunder permite copiar CDs de audio directamente en archivos Wavpack.

### Hardware

Soporte nativo:

Cowon A3 PMP soporta WavPack fuera de la caja.

Soporte no nativo:

* La gama de reproductores de música para iPod de Apple no es compatible con WavPack desde el primer momento, pero sí con el firmware Rockbox de código abierto.
* iriver serie H100, puede a través de firmware Rockbox de código abierto.
* iriver serie H300, puede a través de firmware Rockbox de código abierto.
* Dispositivos Android, Android Smartphones puede con la instalación de software Media Player de terceros.

El sitio web de WavPack también incluye un plugin que permite soportar el formato en el Roku PhotoBridge HD.

## Tecnología

Para asegurar una operación de alta velocidad, WavPack utiliza un predictor que se implementa completamente en matemáticas enteras. En su modo "rápido" la predicción es simplemente la extrapolación aritmética de las dos muestras anteriores. Por ejemplo, si las dos muestras anteriores eran -10 y 20, entonces la predicción sería 50. Para el modo por defecto se añade un factor adaptativo simple para sopesar la influencia de la muestra anterior en la predicción. En nuestro ejemplo, la predicción resultante podría variar entre 20 para ninguna influencia y 50 para la influencia total. Este factor de ponderación se actualiza constantemente en función de las características espectrales cambiantes de los datos de audio.

La predicción generada se resta entonces de la muestra real a ser codificada para generar el valor de error. En el modo mono este valor se envía directamente al codificador. Sin embargo, las señales estéreo tienden a tener alguna correlación entre los dos canales que puede ser explotada aún más. Por lo tanto, se calculan dos valores de error que representan la diferencia y el promedio de los valores de error izquierdo y derecho. En el modo de operación "rápido", estos dos nuevos valores se envían simplemente al codificador en lugar de los valores izquierdo y derecho. En el modo por defecto, el valor de diferencia siempre se envía al codificador junto con uno de los otros tres valores (promedio, izquierdo o derecho). Un algoritmo adaptativo determina continuamente el más eficiente de los tres para enviar basado en el balance cambiante de los canales.

En lugar de la codificación Rice, se utiliza un codificador de datos especial para WavPack. La codificación Rice es la codificación de bits óptima para este tipo de datos, y el codificador de WavPack es menos eficiente, pero solo en unos 0,15 bits por muestra (o menos del 1% para datos de 16 bits). Sin embargo, hay algunas ventajas a cambio; la primera es que el codificador de WavPack no requiere que los datos sean almacenados en un búfer antes de la codificación, sino que convierte cada muestra directamente a códigos de bits. Esto es más eficiente computacionalmente, y es mejor en algunas aplicaciones donde el retardo de codificación es crítico. La segunda ventaja es que es fácilmente adaptable a la codificación con pérdidas, ya que todos los bits significativos (excepto el "uno" MSB implícito) se transmiten directamente. De esta manera solo es posible transmitir, por ejemplo, los 3 bits más significativos (con signo) de cada muestra. De hecho, es posible transmitir solo el signo y el MSB implícito para cada muestra con un promedio de solo 3,65 bits/muestra.

Este esquema de codificación se utiliza para implementar el modo "con pérdidas" de WavPack. En el modo "rápido", la salida del decorrelator no adaptable se redondea simplemente al valor codificable más cercano para el número de bits especificado. En el modo por defecto se utiliza el decorrelador adaptativo (que reduce el ruido medio en torno a 1 dB) y tanto la muestra actual como la siguiente se tienen en cuenta a la hora de elegir el mejor de los dos códigos disponibles (que reduce el ruido otro 1 dB).

No se utiliza aritmética de coma flotante en la ruta de datos de WavPack porque, según el autor, las operaciones de números enteros son menos susceptibles a variaciones sutiles de chip a chip que podrían corromper la naturaleza sin pérdidas de la compresión (el error de coma flotante Pentium es un ejemplo). Es posible que un compresor sin pérdidas que usara matemática en coma flotante pudiera generar una salida diferente cuando se ejecuta en ese Pentium defectuoso. Incluso sin tener en cuenta los errores reales, las matemáticas en coma flotante son lo suficientemente complicadas como para que pueda haber diferencias sutiles entre las implementaciones "correctas" que podrían causar problemas para este tipo de aplicación. Se incluye un código de detección de errores de 32 bits en los flujos generados para mantener la confianza del usuario en la integridad de la compresión de WavPack.

El código fuente de WavPack es portable, y ha sido compilado en varios sistemas operativos Unix y similares a Unix (Linux, Mac OS X, Solaris, FreeBSD, OpenBSD, NetBSD, Compaq Tru64, HP-UX...) así como en Windows, DOS, Palm OS y OpenVMS. Funciona en muchas arquitecturas, incluyendo x86, ARM, PowerPC, AMD64, IA-64, SPARC, Alpha, PA-RISC, MIPS y Motorola 68k.

Se desarrolló una versión reducida de WavPack para el procesador de señal digital de la serie TMS320 de Texas Instruments. El objetivo principal era animar a los fabricantes a incorporar la compresión (y descompresión) WavPack en los grabadores de audio con memoria portátil. Esta versión soportaba características que solo eran aplicables a aplicaciones embebidas (compresión de flujo en tiempo real, tasa de compresión seleccionable) y descartaba características que solo se aplicaban a sistemas informáticos completos (autoextracción, modos de alta compresión, flotadores de 32 bits). Los DSPs de la serie TMS320 son dispositivos enteros nativos y son compatibles con WavPack. Se incluyeron algunas características "especiales" del software WavPack completo (capacidad de generar un "archivo" de corrección (stream), por ejemplo) y se excluyeron otras. Esta bifurcación se basaba en la versión 4.

Se agregó soporte para WavPack a WinZip a partir de la versión 11.0 beta, lanzada en octubre de 2006. Esta extensión al formato de archivo ZIP fue incluida por PKWARE, los mantenedores del formato, en el archivo de descripción oficial de APPNOTE.TXT a partir de la versión 6.3.2, publicada el 2 de febrero de 2009.

