stringtranslate.com

Paquete de ondas

WavPack es un formato de compresión de audio sin pérdida de código abierto y gratuito , y una aplicación que implementa el formato. Es único en el sentido de que admite la compresión de audio híbrida junto con la compresión normal, que es similar a cómo funciona FLAC . También admite la compresión de una amplia variedad de formatos sin pérdida, incluidas varias variantes de PCM y también DSD , como se usa en SACD , junto con su compatibilidad con audio envolvente.

Características

La compresión WavPack puede comprimir (y restaurar sin pérdida) archivos de audio PCM de punto fijo de 8, 16, 24 y 32 bits y de punto flotante de 32 bits en el formato de archivo . WAV . También puede manejar entrada DSD en formato DSDIFF o DSF. [2] También admite transmisiones de sonido envolvente y altas frecuencias de muestreo . Al igual que otros esquemas de compresión sin pérdida, la tasa de reducción de datos varía con la fuente, pero generalmente está entre el 30% y el 70% para la música popular típica y algo mejor que eso para la música clásica y otras fuentes con mayor rango dinámico. [3]

Modo híbrido

WavPack también incorpora un modo "híbrido", que aún ofrece las características de la compresión sin pérdida, pero crea dos archivos: un archivo con pérdida relativamente pequeño y de alta calidad (.wv) que se puede utilizar por sí solo; y un archivo de "corrección" (.wvc) que, cuando se combina con el archivo con pérdida, proporciona una restauración completa sin pérdida. Esto permite el uso conjunto de códecs con pérdida y sin pérdida. El algoritmo con pérdida es similar a ADPCM . [4]

El modo híbrido puede manejar datos de punto flotante, pero solo cuando no hay valores de "excepción" como infinitos o NaN. No puede manejar DSD porque no existe un algoritmo con pérdida para DSD. [2]

OptimFROG DualStream , MPEG-4 SLS y DTS-HD Master Audio también ofrecen una función "híbrida" similar .

Resumen

Historia

David Bryant comenzó a desarrollar WavPack a mediados de 1998 con el lanzamiento de la versión 1.0 (15 de agosto de 1998). Esta primera versión comprimía y descomprimía audio sin pérdida y ya presentaba una de las mejores relaciones eficiencia-velocidad entre los codificadores sin pérdida. [5]

Muy poco después del lanzamiento de la versión 1.0, se lanzó la versión 2.0 (2 de septiembre de 1998), que incluía codificación con pérdida (usando solo la cuantificación del residuo de predicción para la reducción de datos; no se aplicó ningún modelo de enmascaramiento psicoacústico a la transmisión).

En 1999, se lanzó 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 sin formato (sin encabezado) y detección de errores mediante una verificación de redundancia cíclica de 32 bits .

Una característica agregada en las últimas versiones 3.x es el modo "híbrido", donde el codificador genera un archivo con pérdida y un archivo de corrección, de modo que ambos pueden descomprimirse nuevamente en una transmisión PCM que tiene la misma calidad que el original. [6]

En WavPack 4 se introduce una nueva estructura de formato de archivo. El autor también publica una "hoja de ruta" con la versión 4.40, que contiene posibles pistas sobre el desarrollo futuro. [7] WavPack 5 introdujo soporte para la compresión de DSD.

Apoyo

Software

Algunos programas admiten el formato de forma nativa (como DeaDBeeF , foobar2000 , [8] y Jack! The Knife), mientras que otros requieren complementos. El sitio web oficial de WavPack ofrece complementos para Winamp , Nero Burning ROM , MediaChest 2.1 y varias otras aplicaciones, así como un filtro DirectShow . [9] dBpoweramp CD-Ripper, [10] del autor de foobar2000, así como el propio foobar2000 [11] y Asunder permiten copiar CD de audio directamente a archivos Wavpack.

El soporte de Linux está disponible con un puerto nativo.

FFmpeg tiene un codificador nativo WavPack, que puede combinarse con software como GNU Parallel para utilizar múltiples núcleos de CPU para transcodificar rápidamente otros formatos sin pérdida a WavPack, y de WavPack a cualquier formato compatible con FFmpeg, sin necesidad de software adicional. Sin embargo, el codificador de FFMpeg es algo limitado.

A partir de 2023, el codificador WavPack de FFmpeg tiene algunas limitaciones considerables. Solo puede producir flujos de bits de la versión 4, que no admiten la verificación rápida para verificaciones de integridad de archivos, o más de 16 canales. También descartará fragmentos RIFF y es posible que no se comporte de manera predecible con una entrada de 24 bits. También utiliza de manera predeterminada una compresión inferior a la óptima para lograr una codificación más rápida. Debido a la falta de compatibilidad con el modo híbrido, el software de reproducción basado en FFmpeg no tendrá en cuenta el archivo de corrección .wvc si hay uno presente y reproducirá o transcodificará solo la sección con pérdida. (Sin embargo, este no es el modo de funcionamiento habitual de WavPack). Como la compatibilidad nativa de Wavpack con Direct Stream Digital se agregó en la versión 5 del codificador de referencia, FFmpeg WavPack también está limitado a la codificación de entrada PCM. [12]

Hardware

Soporte nativo:

Soporte no nativo:

El sitio web de WavPack también incluye un complemento que permite la compatibilidad con el formato en Roku PhotoBridge HD Archivado el 8 de julio de 2005 en Wayback Machine . [9]

Tecnología

Para garantizar un funcionamiento a alta velocidad, WavPack utiliza un predictor que se implementa completamente en matemáticas enteras. [14] 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 fueron −10 y 20, entonces la predicción sería 50. Para el modo predeterminado, se agrega un factor adaptativo simple para ponderar la influencia de la muestra anterior en la predicción. En el ejemplo anterior, la predicción resultante podría variar entre 20 para ninguna influencia y 50 para influencia completa. 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 que se va a codificar para generar el valor de error. En modo mono, este valor se envía directamente al codificador. Sin embargo, las señales estéreo tienden a tener cierta correlación entre los dos canales que se puede aprovechar 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 simplemente se envían al codificador en lugar de los valores izquierdo y derecho. En el modo predeterminado, 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 en función del 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 se almacenen en búfer antes de la codificación; en su lugar, convierte cada muestra directamente en códigos de bits. Esto es más eficiente computacionalmente y es mejor en algunas aplicaciones donde el retraso de codificación es crítico. La segunda ventaja es que es fácilmente adaptable a la codificación con pérdida, ya que todos los bits significativos (excepto el "uno" MSB implícito ) se transmiten directamente. De esta manera es posible transmitir solo, 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 por muestra.

Este esquema de codificación se utiliza para implementar el modo "con pérdida" de WavPack. En el modo "rápido", la salida del decorrelacionador no adaptativo se redondea simplemente al valor codificable más cercano para la cantidad de bits especificada. En el modo predeterminado, se utiliza el decorrelacionador adaptativo (que reduce el ruido promedio en aproximadamente 1  dB ), y tanto la muestra actual como la siguiente se consideran para elegir el mejor de los dos códigos disponibles (que reduce el ruido en otro 1 dB).

No se utiliza aritmética de punto flotante en la ruta de datos de WavPack porque, según el autor, las operaciones con 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 punto flotante de Pentium es un ejemplo). Es posible que un compresor sin pérdidas que utilizara matemáticas de punto flotante pudiera generar una salida diferente al ejecutarse en ese Pentium defectuoso. Incluso sin tener en cuenta los errores reales, las matemáticas de punto flotante son lo suficientemente complicadas como para que pueda haber diferencias sutiles entre implementaciones "correctas" que podrían causar problemas para este tipo de aplicación. [15] Se incluye un código de detección de errores de 32 bits para 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 ( 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, incluidas 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 alentar a los fabricantes a incorporar la compresión (y descompresión) de WavPack en las grabadoras de audio portátiles con memoria. Esta versión admitía funciones que solo se aplicaban a aplicaciones integradas (compresión de flujo en tiempo real, tasa de compresión seleccionable) y eliminaba funciones que solo se aplicaban a sistemas informáticos completos (autoextracción, modos de alta compresión, flotantes de 32 bits). Los DSP de la serie TMS320 son dispositivos enteros nativos y admiten bien WavPack. Se incluyeron algunas funciones "especiales" del software completo de WavPack (capacidad de generar un "archivo" de corrección (flujo), por ejemplo), y se excluyeron otras. El puerto se basó en la versión 4.

La compatibilidad con WavPack se agregó a WinZip a partir de la versión 11.0 beta, lanzada en octubre de 2006. [16] Esta extensión al formato de archivo ZIP fue incluida por PKWARE , los mantenedores del formato, en el archivo de descripción oficial APPNOTE.TXT a partir de la versión 6.3.2, lanzada el 28 de septiembre de 2007. [17]

Véase también

Referencias

  1. ^ "Lanzamiento de WavPack 5.7.0". 1 de marzo de 2024. Consultado el 2 de marzo de 2024 .
  2. ^ ab "Documentación del usuario de WavPack". www.wavpack.com .
  3. ^ Heijden, Hans (11 de julio de 2006). «Compresión y velocidad de formatos de audio sin pérdida». Archivado desde el original el 3 de julio de 2009. Consultado el 17 de julio de 2009 .
  4. ^ Bryant, David. "7.11 WavPack". En Solomon, David (ed.). Compresión de datos: la referencia completa (PDF) . pág. 773.
  5. ^ Speek (7 de febrero de 2005). «Comparación de rendimiento de compresores de audio sin pérdida». Archivado desde el original el 25 de noviembre de 2010. Consultado el 17 de julio de 2009 .
  6. ^ "Compresión de audio WavPack".
  7. ^ "WavPack 4.40 lanzado".
  8. ^ "foobar2000". foobar2000.org . Consultado el 19 de noviembre de 2019 .
  9. ^ ab "Descargas de WavPack". www.wavpack.com .
  10. ^ "dBpoweramp Codec Central" (Central de códecs de dBpoweramp). www.dbpoweramp.com . Consultado el 19 de noviembre de 2019 .
  11. ^ "foobar2000: paquete de codificadores gratuito" www.foobar2000.org . Consultado el 19 de noviembre de 2019 .
  12. ^ "WavPack - Base de conocimientos de Hydrogenaudio".
  13. ^ "SoundCodecs < Principal < Wiki". www.rockbox.org .
  14. ^ Bryant, David (21 de marzo de 2007). «Comentario del desarrollador en el foro» . Consultado el 17 de julio de 2009 .
  15. ^ Goldberg, David (marzo de 1991). "What Every Computer Scientist Should Know About Floating-Point Arithmetic" (PDF) . Encuestas de computación de la ACM . 23 (1): 5–48. doi :10.1145/103162.103163. S2CID  222008826 . Consultado el 20 de enero de 2016 .([1], [2]).
  16. ^ "WinZip – Especificación de métodos de compresión adicionales". WinZip International LLC. 15 de noviembre de 2006. Consultado el 6 de enero de 2008 .
  17. ^ "APPNOTE.TXT – Especificación del formato de archivo .ZIP". PKWARE Inc. 28 de septiembre de 2007. Consultado el 6 de enero de 2008 .

Enlaces externos