FLAC adalah perangkat lunak sumber terbuka yang dapat mengurangi jumlah ruang penyimpanan yang diperlukan untuk menyimpan sinyal audio digital tanpa perlu menghapus informasi saat melakukannya.
File yang dibaca dan dihasilkan oleh perangkat lunak ini disebut file FLAC. Karena file-file ini (yang mengikuti format FLAC) dapat dibaca dan ditulis oleh perangkat lunak lain juga, perangkat lunak ini sering disebut sebagai implementasi referensi FLAC.
FLAC telah dikembangkan oleh para sukarelawan. Jika Anda ingin membantu, lihat CONTRIBUTING.md untuk informasi lebih lanjut.
FLAC terdiri dari
flac
, program baris perintah untuk menyandikan dan mendekode filemetaflac
, program baris perintah untuk melihat dan mengedit metadata FLACPerpustakaan (libFLAC, libFLAC++) dilisensikan di bawah lisensi mirip BSD Xiph.org (lihat COPYING.Xiph). Semua program dan plugin lainnya dilisensikan di bawah Lisensi Publik Umum GNU (lihat COPYING.GPL). Dokumentasi ini dilisensikan di bawah Lisensi Dokumentasi Gratis GNU (lihat COPYING.FDL).
Untuk dokumentasi alat baris perintah flac
dan metaflac
, lihat direktori man, yang berisi file flac.md dan metaflac.md
Dokumentasi API dalam html dan dihasilkan oleh Doxygen. Itu dapat ditemukan di direktori doc/html/api. Ini termasuk dalam tarball rilis dan harus dibuat dengan Doxygen ketika sumbernya diambil langsung dari git.
Contoh direktori berisi contoh kode sumber tentang penggunaan libFLAC dan libFLAC++.
Dokumentasi mengenai format FLAC itu sendiri (yang dapat digunakan untuk membuat perangkat lunak membaca dan menulis perangkat lunak FLAC yang independen dari libFLAC) disertakan dalam rilis sebelumnya, tetapi sekarang dapat ditemukan di https://datatracker.ietf.org/doc/draft-ietf -cellar-flac/ Selain itu, sekumpulan file untuk pengujian kesesuaian yang disebut testbench dekoder FLAC dapat ditemukan di https://github.com/ietf-wg-cellar/flac-test-files
Jika Anda memiliki pertanyaan tentang FLAC yang tidak terjawab dalam dokumen ini, silakan kirimkan pada pelacak berikut agar dokumen ini dapat diperbaiki:
https://github.com/xiph/flac/issues
Semua komponen proyek FLAC dapat dibangun dengan berbagai kompiler (termasuk GCC, Clang, Visual Studio, Intel C++ Compiler) pada banyak arsitektur (termasuk x86, x86_64, ARMv7, ARMv8 dan PowerPC) untuk berbagai sistem operasi.
Untuk melakukan hal ini, FLAC menyediakan dua sistem pembangunan: satu menggunakan autotools GNU dan satu lagi dengan CMake. Keduanya sedikit berbeda dalam opsi konfigurasi, namun harus dianggap setara untuk sebagian besar kasus penggunaan.
FLAC dulunya menyediakan file khusus untuk pembuatan dengan Visual Studio, namun file ini telah dihapus dan mendukung penggunaan CMake.
CMake adalah sistem pembangunan lintas platform. FLAC dapat dibangun di Windows, Linux, Mac OS X menggunakan CMake.
Anda dapat menggunakan CLI atau GUI CMake. Kami menyarankan Anda untuk memiliki folder build terpisah di luar repositori agar tidak merusaknya dengan file yang dihasilkan. Namun dimungkinkan untuk melakukan apa yang disebut pembangunan in-tree, dalam hal ini /path/to/flac-build dalam contoh berikut sama dengan /path/to/flac-source.
Buka folder build Anda dan jalankan sesuatu seperti ini:
/path/to/flac-build$ cmake /path/to/flac-source
atau misalnya di shell Windows
C:pathtoflac-build> cmake pathtoflac-source
(asalkan cmake ada dalam variabel %PATH% Anda)
Itu akan menghasilkan skrip pembangunan untuk sistem pembangunan default (misalnya Makefiles untuk UNIX). Setelah itu Anda mulai membangun dengan perintah seperti ini:
/path/to/flac-build$ make
Dan setelahnya Anda dapat menjalankan tes atau menginstal perpustakaan dan header yang dibangun
/path/to/flac-build$ make test
/path/to/flac-build$ make install
Jika Anda ingin menggunakan sistem build selain default, tambahkan flag -G ke cmake, misalnya:
/path/to/flac-build$ cmake /path/to/flac-source -GNinja
/path/to/flac-build$ ninja
atau:
/path/to/flac-build$ cmake /path/to/flac-source -GXcode
Gunakan cmake --help untuk melihat daftar generator yang tersedia.
Secara default CMake akan mencari OGG. Jika CMake gagal menemukannya, Anda dapat membantu CMake dengan menentukan jalur yang tepat:
/path/to/flac-build$ cmake /path/to/flac-source -DOGG_ROOT=/path/to/ogg
Jika Anda ingin CMake membangun OGG bersama FLAC, Anda dapat menempatkan sumber ogg langsung di direktori sumber flac sebagai subdirektori dengan nama ogg, misalnya:
/path/to/flac-source/ogg
Jika Anda tidak ingin membuat flac dengan dukungan OGG, Anda dapat memberi tahu CMake untuk tidak mencari OGG:
/path/to/flac-build$ cmake /path/to/flac-source -DWITH_OGG=OFF
Opsi FLAC lainnya (misalnya membuat lib atau dokumen C++) juga dapat dimasukkan ke cmake melalui flag -D. Jika Anda ingin mengetahui opsi apa saja yang tersedia, gunakan -LH:
/path/to/flac-build$ cmake /path/to/flac-source -LH
Kemungkinan Anda lebih suka menggunakan CMake GUI jika Anda menggunakan Visual Studio untuk membangun FLAC. Pada dasarnya proses ini sama dengan membangun menggunakan CLI.
Buka cmake-gui. Di jendela pilih direktori sumber (root repositori), direktori build (direktori lain di luar repositori). Lalu tekan tombol "Konfigurasi". CMake akan menanyakan sistem build mana yang Anda sukai. Pilih versi Visual Studio yang Anda miliki di sistem Anda, pilih apakah Anda ingin membangun untuk Win32 atau x64. Tekan oke.
Setelah CMake selesai Anda dapat mengubah konfigurasi sesuai keinginan Anda dan jika ada yang berubah, jalankan Configure lagi. Dengan tombol "Hasilkan", CMake membuat file Visual Studio, yang dapat dibuka dari Visual Studio. Dengan tombol "Buka Proyek" CMake akan meluncurkan Visual Studio dan membuka solusi yang dihasilkan. Anda dapat menggunakan file proyek seperti biasa tetapi ingat bahwa file tersebut dibuat oleh CMake. Itu berarti bahwa perubahan Anda (misalnya beberapa tanda kompilasi tambahan) akan hilang saat Anda menjalankan CMake di lain waktu.
CMake mencari OGG secara default di sistem Anda dan mengembalikan kesalahan jika tidak dapat menemukannya. Jika Anda ingin membangun OGG bersama FLAC, Anda dapat mengunduh sumber OGG dan mengekstraknya di subdirektori direktori sumber FLAC dengan nama ogg (yaitu /path/to/flac-source/ogg) sebelum menjalankan CMake. Jika Anda tidak ingin membangun FLAC dengan dukungan OGG, hapus centang pada kotak setelah tanda WITH_OGG dalam daftar variabel di jendela cmake-gui dan jalankan "Konfigurasi" lagi.
Jika CMake gagal menemukan kompiler MSVC maka menjalankan cmake-gui dari perintah Pengembang MS akan membantu.
FLAC menggunakan autoconf dan libtool untuk mengonfigurasi dan membangun. Untuk mengonfigurasi build, buka baris perintah/terminal dan jalankan ./configure
Anda dapat memberikan opsi pada perintah ini, yang dicantumkan dengan menjalankan ./configure --help
.
Jika skrip konfigurasi tidak ada (misalnya saat membuat dari git dan bukan dari tarball rilis), skrip konfigurasi dapat dibuat dengan menjalankan ./autogen.sh
. Ini mungkin memerlukan paket pengembangan libtool.
Setelah konfigurasi, build dengan make
, verifikasi build dengan make check
dan instal dengan make install
. Instalasi mungkin memerlukan hak istimewa administrator, yaitu sudo make install
.
Langkah 'melakukan pengecekan' bersifat opsional; hilangkan untuk melewati semua tes, yang dapat memakan waktu sekitar satu jam untuk menyelesaikannya. Meskipun ia akan berhenti dengan pesan eksplisit tentang kegagalan apa pun, ia mencetak banyak hal sehingga Anda mungkin ingin menangkap hasilnya ke sebuah file jika Anda mengalami masalah. Selain itu, jangan jalankan 'make check' sebagai root karena akan membingungkan beberapa pengujian.
Meringkas:
./configure
make && make check
sudo make install
libFLAC telah berkembang lebih besar dari waktu ke waktu karena lebih banyak fungsi yang disertakan, namun sebagian besar mungkin tidak diperlukan untuk implementasi tertanam tertentu. Bagian yang tidak digunakan dapat dipangkas dengan beberapa pengeditan sederhana pada konfigurasi.ac dan src/libFLAC/Makefile.am; grafik ketergantungan berikut menunjukkan modul mana yang dapat dipangkas tanpa memecahnya lebih jauh:
metadata.h
stream_decoder.h
format.h
stream_encoder.h
stream_decoder.h
format.h
stream_decoder.h
format.h
Dengan kata lain, untuk aplikasi decoding murni, stream encoder dan antarmuka pengeditan metadata dapat dihapus dengan aman. Perhatikan bahwa ini khusus untuk membangun perpustakaan untuk penggunaan tertanam. Alat baris perintah tidak menyediakan kompartementalisasi seperti itu, dan memerlukan build libFLAC yang lengkap agar dapat berfungsi.
Ada bagian yang didedikasikan untuk penggunaan tertanam dalam dokumentasi HTML libFLAC API (lihat doc/html/api/index.html).
Selain itu, ada beberapa tempat di kode libFLAC dengan komentar yang ditandai dengan "OPT:" di mana #define dapat diubah untuk mengaktifkan kode yang mungkin lebih cepat pada platform tertentu. Bereksperimen dengan ini dapat menghasilkan biner yang lebih cepat.