# FLAC

FLAC (sigla en idioma inglés de Free Lossless Audio Codec, 'códec libre de audio sin pérdidas') es un códec de audio que permite que el audio digital sea comprimido sin pérdidas de tal manera que el tamaño del archivo de audio se reduce sin que se pierda ningún tipo de información. El tamaño del audio digital se puede reducir un 50 % o 60 % mediante el algoritmo de FLAC, y se descomprime en una copia idéntica de los datos de audio originales.
FLAC es un formato abierto con licencia libre de derechos de autor y una implementación de referencia la cual es software libre. FLAC cuenta con soporte para etiquetado de metadatos, inclusión de la portada del álbum, y la búsqueda rápida.
FLAC no puede almacenar datos de coma flotante y el soporte de reproducción en dispositivos portátiles de audio y sistemas de audio de alta calidad es limitado en comparación con formatos con pérdida como MP3 o PCM sin comprimir, aunque dentro de los formatos sin pérdida FLAC es uno de los mejor soportados tanto por hardware como por software, solo igualado por ALAC, y superando al resto.

## Historia

El proyecto fue iniciado y desarrollado por el programador Josh Colson. El formato de flujo de bits se congeló cuando FLAC entró en fase beta con el lanzamiento de la versión 0.5 de la implementación de referencia el 15 de enero de 2001. La versión 1.0 fue lanzada el 20 de julio de 2001.
El 29 de enero de 2003, la Fundación Xiph.Org y el proyecto FLAC anunciaron la incorporación de este codec bajo la bandera de Xiph.org. Xiph.org está detrás de otros formatos de compresión libres tales como Icecast, Vorbis, Theora y Speex.
La Versión 1.3.0 de FLAC fue lanzada el 26 de mayo de 2013. El desarrollo fue trasladado al repositorio de Xiph.org.

## El proyecto

El proyecto FLAC incluye:
* El códec con el cual deberá ser codificada la información de audio.
* El formato contenedor propiamente dicho.
* La biblioteca libFLAC, que permite programar compresores y reproductores, además incluye los metadatos de los archivos.
* LibFLAC++.
* Flac, Permite codificar y decodificar los FLAC streams por medio de la línea de comandos usando la biblioteca libFLAC.
* Metaflac, editor de metadatos para ficheros flac por medio de línea de comandos.
* Plugins para diferentes reproductores de audio como Winamp y Foobar2000, entre otros.

## Comparaciones

FLAC está diseñado para comprimir audio. Debido a ello, los archivos resultantes son reproducibles y útiles, además de ser más pequeños que si se hubiera aplicado directamente al archivo PCM un algoritmo de compresión estadística (como ZIP). Los algoritmos con pérdida pueden comprimir a más de 1/10 del tamaño inicial, a costa de descartar información; FLAC, en su lugar, usa la predicción lineal para convertir las muestras en series de pequeños números no correlativos (conocido como "residuos"), que se almacenan eficientemente usando la codificación Golomb-Rice. Además de esto, para aprovechar los silencios, donde los valores numéricos presentan mucha repetición, usa codificación por "longitud de pista" (RLE "Run-Length Encoding") para muestras idénticas.
RLE y RAE son conceptos provenientes de la lectura mecánica de los registros, y se corresponden a las lecturas con "Velocidad Lineal Constante" (CLV) que se emplea en las cintas magnetofónicas, y con "Velocidad Angular Constante" (CAV) que es característica de la grabación y reproducción de discos fonográficos. En los lectores de CD, se puede seleccionar un método u otro de reproducción, según los parámetros de grabación. El más común es CAV, pero el CLV permite una mayor linealidad en el registro; aunque requiere el concurso de servos para controlar la velocidad angular del rotor, según se acorta el radio de la pista.
FLAC se ha convertido en uno de los formatos preferidos para la venta de música por Internet, al igual que Monkey's Audio que funciona idénticamente bien. Además es usado en el intercambio de canciones por la red, como alternativa al MP3, cuando se desea obtener una mayor reducción del tamaño que en un archivo WAV-PCM, y no perder calidad de sonido. También es el formato ideal para realizar copias de seguridad de CD, ya que permite reproducir exactamente la información del original, y recuperarla en caso de problemas con este material.

### Diseño

FLAC no soporta muestras en coma flotante, sino en coma fija. Admite cualquier resolución PCM de 4 a 32 bits por muestra y cualquier tasa de muestreo desde 1 hasta 655350 Hz, en incrementos de 1 Hz, y cualquier número de canales de audio, desde 1 hasta 8.
Los canales pueden ser agrupados en casos como en estéreo y 5.1 canales de surround para aprovechar las correlaciones entre canales e incrementar la compresión. FLAC utiliza sumas de comprobación de redundancia cíclica para identificar tramas de datos corruptas cuando es usado en un protocolo de flujo de audio, y además tiene un cálculo hash de MD5 del audio raw PCM almacenado en la cabecera de metadatos STREAMINFO.
FLAC usa la predicción lineal para convertir las muestras de audio en una serie de números pequeños sin correlación (conocidos como números de residuo), los cuales son almacenados eficientemente mediante el uso de la Codificación Golomb-Rice. También usa codificación RLE para bloques de muestras idénticas, como en los momentos de silencio del audio. Para el etiquetado de los archivos FLAC usa el mismo sistema Vorbis comments. La API libFLAC está organizada en flujos, flujos de búsqueda y archivos, que figuran en orden creciente de abstracción del flujo de bits base de FLAC. La mayoría de las aplicaciones FLAC se suelen ceñir a la codificación/decodificación usando libFLAC en la interfaz de nivel de archivo.

### Niveles de Compresión

La biblioteca del formato, libFLAC, usa un parámetro de nivel de compresión que varía desde 0 (más rápido) a 8 (más lento). Los archivos comprimidos son siempre perfectos, representación de los datos originales con poca pérdida. A pesar de que el proceso de compresión envuelve una compensación entre velocidad y tamaño, el proceso de decodificación es siempre bastante rápido y no muy dependiente del nivel de compresión.
De acuerdo con la referencia WAV, usando las tasas más altas sobre el nivel -5, toma considerablemente más tiempo en codificar sin ganancias reales en ahorro en espacio.
| Opción de Compresión | Original | Comprimido | Duración | Razón | Tiempo de Codificación | Tasa de Codificación | Tiempo de Decodificación | Tasa de Decodificación |
| -0 | 2.030 GiB | 1.435 GiB | 03:18:21 | 70,67% | 01:29 | 134x | 01:24 | 141x |
| -5 | 2.030 GiB | 1.334 GiB | 03:18:21 | 65,72% (-4,95)% | 03:44 | 53x (2,5x más lento) | 01:36 | 124x |
| -6 | 2.030 GiB | 1.334 GiB | 03:18:21 | 65.71% (-4,96, -0.01)% | 03:51 | 52x (2,6x más lento) | 01:36 | 124x |
| -7 | 2.030 GiB | 1.333 GiB | 03:18:21 | 65,67% (-5, -0,04)% | 07:47 | 25x (5,3x más lento) | 01:36 | 123x |
| -8 | 2,030 GiB | 1.329 GiB | 03:18:21 | 65.47% (-5,2, -0,2)% | 10:17 | 19x (7x más lento) | 01:40 | 120x |
| -8 -Ax2 | 2.030 GiB | 1.328 GiB | 03:18:21 | 65.40% (-5,27, -0,07)% | 16:39 | 12x (11x más lento) | 01:35 | 125x |

## Tabla comparativa de funcionalidades

Habitualmente uno de los factores que más se tienen en cuenta a la hora de escoger este códec de audio es la compresión que aporta; sin embargo, dependiendo de cuál sea nuestra aplicación final y de si se consideran los medios de los que dispone el usuario, no siempre nos conviene ni el códec más rápido ni el que más comprima. En esta tabla queda demostrado que el FLAC es una buena opción en muchos de los distintos casos en los que un usuario se puede encontrar; aquí se comparan las funcionalidades más destacadas de este con las de otros códecs de audio sin pérdidas. Los códecs analizados son los siguientes:
* WavPack
* Apple Lossless (ALAC)
* FLAC
* Monkey's Audio
* OptimFROG
* Shorten
| Códec | Cod | Decod | Comp. | Flexible | Robustez error | Exp | Etiquetado | HW | SW | Híbrido/ C.Pérdidas | Streaming | Código Abierto | Multicanal | Alta resolución | SO |
| Wavpack | Muy rápido | Muy rápido | 58% | Muy Bueno | Sí | Sí | ID3/APE | Limitado | Bueno | Sí | Sí | Sí | Sí | Sí | Todos |
| ALAC | Mediana | Rápido | 58.5% | Malo | No | Sí | QT tags | Bueno | Malo | No | Sí | Sí(descodif) | Sí | Sí | Win/MAC/iPad/iPhone |
| FLAC | Rápido | Muy rápido | 58.7% | Muy Bueno | Sí | Sí | VorbisTag | Muy Bueno | Muy Bueno | No | Sí | Sí | Sí | Sí | Todos |
| Monkey's | Rápido | Mediano | 55,5% | Muy Bueno | No | Sí | ID3/APE | Limitado | Bueno | No | No | Sí | No | Sí | Todos |
| OptimFROG | Lento | Mediano | 54.7% | Muy Bueno | Sí | Sí | ID3/APE | No | Poco | Sí | Sí | No | No | Sí | Win/Mac /Linux |
| Shorten | Muy rápido | Muy rápido | 63.5% | Malo | No | Sí | No | Limitado | Muy Bueno | No | No | Sí | No | No | Todos |

## Características de los archivos

Los archivos FLAC suelen tener esta misma extensión (*.FLAC), aunque no es raro encontrarlos como *.FLA; son perfectamente reproducibles con gran cantidad reproductores, especialmente de gama media y alta; incluso en computadoras antiguas, ya que una de las características del proyecto es que los archivos se descodifiquen en modo sencillo. Además permiten usar la función de búsqueda. Estos archivos son de velocidad de bits variable, ya que no todas las partes de una misma pista de audio son igualmente comprimibles.
Otra característica es que, como todos los formatos sin pérdida, la relación de compresión final depende mucho del estilo musical, la variedad sonora (la presencia de ruido, típica de instrumentos como la guitarra eléctrica o la batería) añade información «extra» al espectro sonoro en casi todas las frecuencias-. Para música más «limpia», espectralmente hablando, como la mayoría de la música para instrumentos acústicos y/o voz, se obtienen relaciones de aproximadamente 1/2,2; en otros estilos, como el dance o el rock, con un espectro sonoro generalmente más poblado, los archivos pueden quedar en desde 2/3 hasta 4/5 del tamaño original en formato PCM. Otro factor de mucha importancia es la existencia de los silencios, ya que algunas pistas tienen varios segundos al principio o al final; en el caso de muchas piezas de música artística hay silencios en diversas partes de la pista sonora.

## Soporte Software

| Codificación GNU/Linux Audex Clementine GnomeBaker K3b FFmpeg VLC media player Ripperx Serpentine soundKonverter Mac OS X MacFLAC. Toast Titanium. xACT. X Lossless Decoder. Windows Burrn CUETools dBPowerAmp Music Converter Easy CD-DA Extractor. Easy Media Creator Flac Frontend. foobar2000 con plugin JetAudio MediaMonkey. Nero Burning ROM con plugin externo MediaGo VLC media player Winamp ahora incluye soporte nativo para FLAC Audio Converter Plus Sound Normalizer | Decodificación GNU/Linux Amarok Audacious Audacity Banshee Brasero Clementine FFmpeg GnomeBaker MediaPlayerDaemon(mpd). Mplayer Rhythmbox Songbird Totem VLC media player Xine XMMS Mac OS X Cog. Flac-Importer MacFLAC. Play. xACT X Lossless Decoder Windows AIMP ALTools-based ALSong Clementine foobar2000 Quintessential Player. MediaGo Renoise. Traktor 3. VLC media player Winamp Windows Media Player XMPlay con plugin adicional. Android Android 4.1 Versiones Posteriores | Ripeo GNU/Linux ABCDE Cdda2wav Cdparanoia fre:ac Mencoder GNOME Grip RipOff Rippex Sound Juicer KDE Audex KAudioCreator Konqueror K3b Mac OS X fre:ac Max — 10.4 Windows CDex u CUERipper DBpowerAMP con códec oficial Exact Audio Copy foobar2000 fre:ac MediaMonkey MediaGo MP3 Stream Editor Winamp PlexTools |

## Soporte hardware

* Cowon Systems
* Western Digital TV HD Media Player
* Hermstedt Hifidelio
* iAudio.
* Olive media servers (Symphony, Música, Opus)
* Rio Karma. Archivado el 12 de diciembre de 2007 en Wayback Machine.
* Squeezebox. Archivado el 30 de junio de 2007 en Wayback Machine.
* Sansa Fuze.
* Sonos
* Meizu M6. Archivado el 10 de diciembre de 2007 en Wayback Machine.
* Pixel Magic Systems' HD Mediabox (con un firmware superior a la versión 1.3.4)
* Embedded Waveplayer
* Teclast T29
* Trekstor Vibez.
* gemei x-750
* Samsung YP-U5
* TVIX HD M-6500
* TVIX HD N1 (cafe)
* TVIX HD M-6600A/N Plus
* TVIX HD M-7000
* Sony PSP (LightMP3 by Sakya)