# FLAC
FLAC (/ˈflæk/; Free Lossless Audio Codec) dijital sesin kayıpsız olarak sıkıştırılması için kullanılan bir ses kodlama formatıdır ve aynı zamanda referans kod çözümü uygulamasının adıdır. FLAC algoritması ile sıkıştırılmış sayısal ses orijinal boyutunun% 50-60'ına kadar indirgenebilir ve orijinal ses verilerinin özdeş bir kopyasına dek sıkıştırma yapabilir. Örneğin sıkıştırılmamış 1 dakikalık WAV dosyası boyutu yaklaşık 10 MB iken, FLAC dosyası 4,2-6,3 MB arasındadır.
FLAC, telif ücretsiz lisansına sahip ve ücretsiz yazılım olan referans uygulamasıyla açık bir formattır. FLAC, meta veri etiketleme, albüm kapak resmi ve hızlı arama desteği sunmaktadır. Günümüzde birçok taşınabilir aygıtın desteklediği biçim, popüler ortam oynatıcıları tarafından çalınabilmektedir.


## Tarihçe.
FLAC yazılım geliştirmesi, 2000 yılında Josh Coalson tarafından başlatıldı. FLAC, 15 Ocak 2001'de referans uygulamasının 0.5 sürümüyle birlikte beta aşamasına girdiğinde bit akışı biçimi dondurulmuştur. Sürüm 1.0, 20 Temmuz 2001'de yayımlanmıştır.
29 Ocak 2003 tarihinde, Xiph.Org Vakfı ve FLAC projesi, Xiph.org bayrağı altında birleşerek FLAC'ın kuruluşunu ilan etti. Xiph.org, Vorbis, Theora, Speex ve Opus gibi diğer ücretsiz sıkıştırma formatlarının arkasında yer alan bir vakıftır.
Sürüm 1.3.0, 26 Mayıs 2013'te yayınlandı ve bu noktadan sonra geliştirme ortamı, Xiph.org'un Git deposuna taşındı.


## Yapı.
FLAC projesi aşağıdakilerden oluşur:
  - Akış biçimleri
  - Akış için FLAC (veya Yerel FLAC) olarak da adlandırılan basit bir kapsayıcı biçimi,
  - LibFLAC, referans kodlayıcılar ve kod çözücülerin bir kütüphanesi ve bir meta veri arabirimi
  - LibFLAC++, libFLAC etrafında nesne yönelimli bir örtü 
  - flac, FLAC akışlarını kodlamak ve çözmek için libFLAC temelli bir komut satırı programı
  - metaflac, .flac dosyaları ve ReplayGain uygulamak için bir komut satırı meta veri düzenleyicisi
  - Çeşitli müzik çalarlar için giriş eklentileri (Winamp, XMMS, foobar2000, musikCube ve birçoğu)
  - Xiph.org kuruluşunda, akış için uygun Ogg konteyner biçimi ("Ogg FLAC" olarak da adlandırılır)
Akış formatının tanımlarını önceden izin alınmadan herkes tarafından uygulanabilir (Xiph.org, FLAC tanımlarını belirleme ve uygunluğunu onaylama hakkını saklı tutar) ve ne FLAC biçimi ne de uygulanan kodlama veya kod çözme yöntemlerinden hiçbiri herhangi bir patent kapsamına girmez. Referans uygulaması özgür bir yazılımdır. LibFLAC ve libFLAC++ için kaynak kodu BSD lisansı altındadır ve flac, metaflac ve eklentileri için kaynaklar GNU Genel Kamu Lisansı altındadır.
Belirtilen hedefler doğrultusunda, FLAC projesi geliştiricilerini her türlü kopyalama önleme özelliklerini (DRM) uygulamamaya teşvik etmektedir.


## Tasarım.
FLAC olarak kodlanmış ses kaynakları tipik olarak diğer kayıpsız biçime benzer şekilde orijinal boyutlarının % 50-60'ına indirgenir, ancak son boyut sıkıştırılacak müziğin yoğunluğuna ve hacmine bağlıdır ve bazı müziklerde dosya boyutu olabilir % 80 oranında azaltılır.


### Kaynak Kodlayıcı.
  - FLAC, yalnızca Kayan nokta olmayan sabit nokta örneklerini destekler. Her örnekte 4 ila 24 bitlik PCM bit çözünürlüğünü, 1 Hz'lik artışlarla 1 Hz'den 65,535 Hz'e, 10 Hz'lik artışlarla 10 Hz'den 655,350 Hz'e ve 1'den 8'e kadar herhangi bir sayıda kanaldan herhangi bir örnekleme hızı işleyebilir.
  - Kanallar, bazı durumlarda sıkıştırmayı artırmak için, stereo ve 5.1 kanal surround örneğindeki gibi, kanallar arası korelasyonlardan yararlanmak için gruplanabilir.
  - FLAC, akış protokolünde kullanıldığında bozuk kareleri tanımlamak için CRC sağlama toplamı kullanır ve aynı zamanda STREAMINFO meta veri başlığında ham PCM sesinin tam bir MD5 karmasını içerir. FLAC, 0 ile 16 arasında bir Rice parametresine izin verir.
  - FLAC, ses örneklerini dönüştürmek için doğrusal tahmini kullanır. Doğrusal tahminde iki adım vardır, öngörücü ve hata kodlaması. Tahminci, dört türden biri olabilir (Sıfır, Verbatim, Sabit Lineer ve FIR Lineer). Tahmini ve gerçek örnek verileri arasındaki fark hesaplanır ve kalıntı olarak bilinir. Kalıntı, Golomb-Rice kodlaması kullanılarak verimli bir şekilde saklanır.


### Meta Veri.
  - FLAC ReplayGain'i destekler.
  - Etiketleme için FLAC, Vorbis yorumlarıyla aynı sistemi kullanır.
  - LibFLAC API'leri, akışlar, aranabilir akışlar ve dosyalar (temel FLAC bit akışından artan soyutlanma sırasına göre listelenir) olarak düzenlenmiştir.
  - Çoğu FLAC uygulaması kendilerini genellikle dosya seviyesi arayüzünde libFLAC kullanarak kodlama / kod çözme yönünde kısıtlarlar.


### Sıkıştırma Seviyeleri.
LibFLAC seviyesi 0 (en hızlı) ile 8 (en yavaş) arasında değişen bir sıkıştırma parametresi kullanır. Sıkıştırılmış dosyalar her zaman orijinal verilerin mükemmel, kayıpsız gösterimleridir. Sıkıştırma işlemi hız ve boyut arasındaki dengeyi gerektirse de, şifre çözme işlemi her zaman epey hızlıdır ve sıkıştırma seviyesine çok bağımlı değildir.
Bir WAV dosyası kıyaslamasına göre, varsayılan seviyenin -5 sıkıştırma seçeneği ve üzerindeki daha yüksek oranları kullanmak, alan tasarrufunda gerçek kazanımlar olmadan kodlamak için çok daha fazla zaman alır.


## Diğer formatlarla karşılaştırma.
FLAC, ZIP ve gzip'de kullanılan DEFLATE gibi genel amaçlı kayıpsız algoritmaların aksine, ses verilerini etkili bir şekilde paketlemek için özel olarak tasarlanmıştır. ZIP, bir CD kalitesinde ses dosyasının boyutunu % 10-20 azaltabilirken FLAC, ses özelliklerinden yararlanarak ses verisinin boyutunu % 40-50 azaltabilir.
FLAC'ın diğer kayıpsız formatlara kıyasla teknik güçlü yönleri, sıkıştırma seviyesinden bağımsız olarak hızlı bir şekilde akıp giden kod çözme yeteneğindedir.
FLAC kayıpsız bir şemadır çünkü, ses koleksiyonlarını korumak isteyen CD'ler ve diğer medya sahipleri için bir arşiv biçimi olarak uygundur. Orijinal medya kaybolursa, hasar görürse veya yıpranmışsa, ses parçalarının bir FLAC kopyasından orijinal verilerin tam bir kopyasını istediğiniz zaman kurtarmayı garantiler. Aynı verinin kayıplı bir arşivinden (ör. MP3) tam bir restorasyonunu yapmak imkânsızdır. FLAC'in kayıpsız olması, örneğin; Normal olarak ilişkili kod dönüştürme kalitesi kaybı olmaksızın, MP3'e dönüştürür. CD'yi kopyalarken CUE dosyası isteğe bağlı olarak oluşturulabilir. Bir CD okunur ve FLAC dosyalarına mükemmel şekilde söküldüyse, CUE dosyası daha sonra ses verilerinde özdeş olan bir ses CD'sinin orijinal CD'ye parça sırası ve pregap dahil olmak üzere, yazılmasına izin verir. Ancak CD-Metni ve şarkı sözleri ve CD + G grafikleri gibi diğer ek verileri yazılmaz.


## Tanınması ve Uygulanması.
FLAC'ın referans uygulaması libFLAC temel kodlayıcı ve kod çözücü kitaplığı olarak uygulanır, ana dağıtılabilir program FLAC libFLAC API'sinin referans uygulamasıdır. Bu ses çözücü API'si ayrıca C ++'da libFLAC ++ olarak mevcuttur. FLAC'ın referans uygulaması, çoğu Unix (Solaris, BSD gibi) ve Unix benzeri (Linux dahil), Microsoft Windows, BeOS ve OS / 2 gibi işletim sistemleri de dahil birçok platformda derlenir. Autoconf / automake, MSVC, Watcom C ve Xcode için yapı sistemleri var. Şu anda libFLAC'de çok çekirdekli işlemci yapısına destek yoktur.
Taşınabilir ses cihazlarında ve özel ses sistemlerinde FLAC oynatma desteği, MP3 veya sıkıştırılmamış PCM gibi formatlarla karşılaştırıldığında sınırlıdır. FLAC desteği varsayılan olarak Windows 10, Android, Linux ve Jolla aygıtlarında bulunur.
2014 yılında, mobil elektronik şirketlerinin birçoğu FLAC desteği içeren multimedya çözümlerini tanıttı. Bunlara örnek Pioneer Electronics'in NEX serisi ve Clarion'dan VX404 ve NX404 gibi cihazlardır.
Avrupa Yayın Birliği (EBU), Euroradio ağında yüksek kaliteli ses dağıtımı için FLAC formatını benimsemiştir. Windows işletim sistemi, Windows 10'u piyasaya sunduğundan beri yerel FLAC entegrasyonunu desteklemiştir. Android işletim sistemi, sürüm 3.1'den beri yerel FLAC oynatmayı destekledi.
Diğerlerinin müzik çalarların yanında Pono müzik çalar ve gerçek zamanlı ses aktarım hizmeti sunanlar FLAC formatını kullanmaktadırlar. Bandcamp, yükleme için kayıpsız bir format üzerinde ısrarcıdır ve bir indirme seçeneği olarak FLAC'e sahiptir. Wikimedia Vakfı, gerekli HTML5 özelliklerini destekleyen tarayıcılar için ücretsiz ve açık kaynak kodlu bir çevrimiçi ECMAScript FLAC aracına sponsorluk yapmıştır.
Çoklu kanal desteğiyle beraber CDDA dışında kullanımı da artan biçim, yedekleme amaçlı kullanımı dışında oynatma amaçlı ve stüdyo çalışmalarında da kullanılmaktadır. Birçok Dijital Ses İşleme İstasyonunun desteklemesi bu konuda kolaylık sağlamaktadır.