FLAC

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 26 de agosto de 2021; las comprobaciones requieren 5 ediciones .
Códec de audio sin pérdida gratuito
Tipo de códec de audio, formato de archivo de audio
Desarrollador Josh Coalson, Fundación Xiph.Org
Escrito en C [2]
Sistema operativo multiplataforma
Primera edición 20 de julio de 2001
ultima versión
Formatos de archivo legibles Códec de audio sin pérdidas gratuito
Formatos de archivo generados Códec de audio sin pérdidas gratuito
Licencia GNU GPL ; BSD (Piezas)
Sitio web xiph.org/flac
 Archivos multimedia en Wikimedia Commons
FLAC
Extensión .flac
tipo MIME audio/xflac
Desarrollador Xiph.Org [3]
publicado 20 de julio de 2001 [4]
Tipo de formato audio
Estándar(es) Especificación
Sitio web xiph.org/flac
 Archivos multimedia en Wikimedia Commons

FLAC ( English  Free Lossless Audio Codec ) es un códec gratuito diseñado para comprimir datos de audio sin pérdidas .

A diferencia de los códecs de audio que proporcionan compresión con pérdida ( MP3 , AAC , WMA , Ogg Vorbis , Opus ), FLAC, como cualquier otro códec sin pérdida , no elimina ninguna información de la transmisión de audio y es adecuado tanto para escuchar música en audio de alta calidad equipos y para archivar una colección de audio.

Hoy en día, el formato FLAC es compatible con muchas aplicaciones de audio, reproductores de audio portátiles y sistemas de audio especializados y tiene una amplia variedad de implementaciones de hardware [5]

Detalles del formato

Transmisión de audio

Las partes principales del flujo son:

Los primeros cuatro bytes identifican el flujo FLAC. Los metadatos que les siguen contienen información sobre la transmisión, seguida de los datos de audio comprimidos.

Metadatos

A partir del 10/03/2010, los siguientes tipos de bloques están definidos en libflac-1.2.1: StreamInfo, Padding, Application, SeekTable, VorbisComment, CueSheet, Picture, Unknown. Los bloques de metadatos pueden ser de cualquier tamaño, no es difícil agregar nuevos bloques. El decodificador salta bloques desconocidos de metadatos.

Se requiere el bloque STREAMINFO. Contiene datos que permiten al decodificador ajustar los búferes , la frecuencia de muestreo , la cantidad de canales, la cantidad de bits por muestra y la cantidad de muestras. La firma MD5 de los datos de audio sin comprimir también se escribe en el bloque . Esto es útil para comprobar todo el flujo después de que se haya transmitido.

Otros bloques están diseñados para reservar espacio, almacenar tablas de puntos de búsqueda, etiquetas , una lista de diseños de CD de audio, así como datos para aplicaciones específicas. Las opciones para agregar bloques PADDING o puntos de búsqueda se enumeran a continuación. FLAC no necesita puntos de búsqueda, pero pueden aumentar considerablemente la velocidad de acceso y también se pueden usar para etiquetar en editores de audio.

Puede encontrar una descripción exacta de las estructuras de los bloques de construcción en el archivo format.h de la biblioteca libflac, disponible en el sitio format.

Datos de audio

Los metadatos son seguidos por los datos de audio comprimidos. Los metadatos y los datos de audio no se intercalan. Como la mayoría de los códecs , FLAC divide el flujo de entrada en bloques y los codifica de forma independiente. El bloque se enmarca y se agrega a la secuencia. El codificador básico usa bloques de tamaño constante para todo el flujo, pero el formato permite bloques de diferentes longitudes en el flujo.

Bloqueo

El tamaño del bloque es un parámetro muy importante para la codificación. Si es demasiado pequeño, habrá demasiados encabezados de fotogramas en la secuencia, lo que reducirá el nivel de compresión. Si el tamaño es grande, el codificador no podrá elegir un modelo de compresión efectivo. Comprender el proceso de modelado ayuda a aumentar el nivel de compresión para algunos tipos de entrada. Por lo general, cuando se usa predicción lineal en datos de audio con una frecuencia de muestreo de 44,1 kHz, el tamaño de bloque óptimo se encuentra en el rango de 2 a 6 mil muestras.

Decoración de canales cruzados

Si se ingresan datos de audio estéreo, pueden pasar por la etapa de descorrelación entre canales. Los canales derecho e izquierdo se convierten en promedio y diferencia según las fórmulas: promedio = (izquierda + derecha) / 2, diferencia = izquierda - derecha. A diferencia del estéreo conjunto que se usa en los codificadores con pérdida, este proceso no genera pérdida en la codificación sin pérdida. En el caso de datos de CD de audio, esto suele provocar un aumento significativo del nivel de compresión.

Modelado

En la siguiente etapa, el codificador intenta aproximar la señal con una función tal que el resultado obtenido después de restarla del original (llamado diferencia, residual, error) pueda codificarse con un número mínimo de bits. Los parámetros de función también deben registrarse, por lo que no deben ocupar mucho espacio. FLAC utiliza dos métodos para generar aproximaciones:

Primero, la predicción polinomial constante (-l 0) es significativamente más rápida pero menos precisa que LPC. Cuanto mayor sea el orden de LPC, más lento pero mejor será el modelo. Sin embargo, a medida que aumenta el orden, la ganancia será cada vez menos significativa. En algún momento (generalmente alrededor de 9), el procedimiento del codificador para determinar el mejor orden comienza a fallar y aumenta el tamaño de los cuadros recibidos. Para superar esto, se puede utilizar una búsqueda exhaustiva, lo que conducirá a un aumento significativo en el tiempo de codificación.

En segundo lugar, los parámetros de los predictores constantes se pueden describir mediante tres bits, mientras que los parámetros del modelo LPC dependen del número de bits por muestra y del orden de LPC. Esto significa que el tamaño del encabezado del marco depende del método y el orden elegidos y puede afectar el tamaño óptimo del bloque.

Codificación residual

Cuando se ajusta el modelo, el codificador resta la aproximación del original para obtener una señal residual (errónea), que luego se codifica sin pérdidas. Esto utiliza el hecho de que la señal de diferencia generalmente tiene una distribución de Laplace y hay un conjunto de códigos de entropía, llamados códigos de Rice, que le permite codificar estas señales de manera eficiente y rápida sin usar un diccionario.

La codificación Rice consiste en encontrar un solo parámetro correspondiente a la distribución de la señal y luego usarlo para componer códigos. Cuando cambia la distribución, también cambia el parámetro óptimo, por lo que existe un método que te permite recalcularlo si es necesario. El resto se puede dividir en contextos o secciones, cada uno con su propio parámetro Rice. FLAC le permite especificar cómo se debe realizar la división. El resto se puede dividir en 2n secciones.

Encuadre

Un cuadro de audio está precedido por un encabezado que comienza con un código de sincronización y contiene la información mínima que necesita un decodificador para reproducir la transmisión. El número de bloque o muestra y la suma de comprobación de ocho bits del propio encabezado también se escriben aquí. El código de sincronización, el encabezado de cuadro CRC y el número de bloque/muestra permiten volver a sincronizar y buscar incluso en ausencia de puntos de búsqueda. Al final de la trama, se escribe su suma de comprobación de dieciséis bits. Si el decodificador subyacente detecta un error, se generará un bloque de silencio.

Varios

Para admitir tipos de metadatos básicos, el decodificador central puede omitir las etiquetas ID3v1 e ID3v2 para que se puedan agregar libremente. Las etiquetas ID3v2 deben colocarse antes del marcador "fLaC" y las etiquetas ID3v1 deben colocarse al final del archivo.

Hay modificaciones del codificador FLAC: Codificador FLAC mejorado , Flake y FLACCL.

El 29 de enero de 2003, Xiphophorus (ahora llamada Xiph.Org Foundation) anunció la inclusión del formato FLAC en su línea de productos: Ogg Vorbis , Theora y Speex [6] .

Notas

  1. FLAC 1.4.2 lanzado
  2. El proyecto de código abierto flac en Open Hub: página de idiomas - 2006.
  3. https://xiph.org/flac/format.html
  4. FLAC 1.0 (20 de julio de 2001)
  5. Enlaces . FLAC. Consultado el 6 de octubre de 2015. Archivado desde el original el 28 de enero de 2017.
  6. ¡FLAC se une a Xiph!  (Inglés)  (enlace inaccesible) . Consultado el 30 de octubre de 2008. Archivado desde el original el 30 de junio de 2007.

Enlaces