FLAC — это программное обеспечение с открытым исходным кодом, которое позволяет уменьшить объем памяти, необходимый для хранения цифровых аудиосигналов, без необходимости при этом удалять информацию.
Файлы, читаемые и создаваемые этим программным обеспечением, называются файлами FLAC. Поскольку эти файлы (соответствующие формату FLAC) могут быть прочитаны и записаны другим программным обеспечением, это программное обеспечение часто называют эталонной реализацией FLAC.
FLAC был разработан добровольцами. Если вы хотите помочь, посетите CONTRIBUTING.md для получения дополнительной информации.
FLAC состоит из
flac
— программа командной строки для кодирования и декодирования файлов.metaflac
— программа командной строки для просмотра и редактирования метаданных FLAC.Библиотеки (libFLAC, libFLAC++) лицензируются по лицензии BSD от Xiph.org (см. COPYING.Xiph). Все остальные программы и плагины лицензируются по лицензии GNU General Public License (см. COPYING.GPL). Документация распространяется по лицензии GNU Free Documentation License (см. COPYING.FDL).
Документацию по инструментам командной строки flac
и metaflac
см. в каталоге man, который содержит файлы flac.md и Metaflac.md.
Документация по API находится в формате html и создается Doxygen. Его можно найти в каталоге doc/html/api. Он включен в архив релиза и должен быть собран с помощью Doxygen, если исходный код взят непосредственно из git.
Каталог примеров содержит примеры исходного кода по использованию libFLAC и libFLAC++.
Документация, касающаяся самого формата FLAC (который можно использовать для создания программного обеспечения для чтения и записи FLAC, независимого от libFLAC), была включена в предыдущие выпуски, но теперь ее можно найти по адресу https://datatracker.ietf.org/doc/draft-ietf. -cellar-flac/ Кроме того, набор файлов для тестирования на соответствие, называемый тестовым стендом декодера FLAC, можно найти по адресу https://github.com/ietf-wg-cellar/flac-test-files
Если у вас есть вопросы о FLAC, на которые нет ответа в этом документе, отправьте их по следующему трекеру, чтобы этот документ можно было улучшить:
https://github.com/xiph/flac/issues
Все компоненты проекта FLAC можно собрать с помощью различных компиляторов (включая GCC, Clang, Visual Studio, компилятор Intel C++) на многих архитектурах (включая x86, x86_64, ARMv7, ARMv8 и PowerPC) для множества различных операционных систем.
Для этого FLAC предоставляет две системы сборки: одну с использованием автоинструментов GNU, а другую с помощью CMake. Оба варианта незначительно отличаются по параметрам конфигурации, но в большинстве случаев использования их следует считать эквивалентными.
FLAC раньше предоставлял файлы специально для сборки с помощью Visual Studio, но они были удалены в пользу использования CMake.
CMake — это кроссплатформенная система сборки. FLAC можно собрать в Windows, Linux, Mac OS X с помощью CMake.
Вы можете использовать либо CLI, либо графический интерфейс CMake. Мы рекомендуем вам завести отдельную папку сборки вне репозитория, чтобы не портить ее сгенерированными файлами. Однако можно выполнить так называемую сборку в дереве, в этом случае /path/to/flac-build в следующих примерах равен /path/to/flac-source.
Перейдите в папку сборки и запустите что-то вроде этого:
/path/to/flac-build$ cmake /path/to/flac-source
или, например, в оболочке Windows
C:pathtoflac-build> cmake pathtoflac-source
(при условии, что cmake находится в вашей переменной %PATH%)
Это создаст сценарии сборки для системы сборки по умолчанию (например, Makefiles для UNIX). После этого вы начинаете сборку с помощью такой команды:
/path/to/flac-build$ make
А после этого вы можете запускать тесты или устанавливать встроенные библиотеки и заголовки.
/path/to/flac-build$ make test
/path/to/flac-build$ make install
Если вы хотите использовать систему сборки, отличную от системы по умолчанию, добавьте флаг -G в cmake, например:
/path/to/flac-build$ cmake /path/to/flac-source -GNinja
/path/to/flac-build$ ninja
или:
/path/to/flac-build$ cmake /path/to/flac-source -GXcode
Используйте cmake --help, чтобы просмотреть список доступных генераторов.
По умолчанию CMake будет искать OGG. Если CMake не может его найти, вы можете помочь CMake, указав точный путь:
/path/to/flac-build$ cmake /path/to/flac-source -DOGG_ROOT=/path/to/ogg
Если вы хотите, чтобы CMake собирал OGG вместе с FLAC, вы можете поместить источники ogg непосредственно в каталог исходников flac в виде подкаталога с именем ogg, например:
/path/to/flac-source/ogg
Если вы не хотите создавать flac с поддержкой OGG, вы можете указать CMake не искать OGG:
/path/to/flac-build$ cmake /path/to/flac-source -DWITH_OGG=OFF
Другие параметры FLAC (например, создание библиотеки или документации C++) также можно использовать в cmake с помощью флага -D. Если вы хотите узнать, какие параметры доступны, используйте -LH:
/path/to/flac-build$ cmake /path/to/flac-source -LH
Вполне вероятно, что вы предпочтете использовать графический интерфейс CMake, если используете Visual Studio для сборки FLAC. По сути, это тот же процесс, что и сборка с использованием CLI.
Откройте cmake-gui. В окне выберите каталог исходников (корень репозитория), каталог сборки (другой каталог вне репозитория). Затем нажмите кнопку «Настроить». CMake спросит вас, какую систему сборки вы предпочитаете. Выберите ту версию Visual Studio, которая установлена в вашей системе, выберите, хотите ли вы собирать ее для Win32 или x64. Нажмите ОК.
После завершения работы CMake вы можете изменить конфигурацию по своему вкусу, а если вы что-то измените, запустите настройку еще раз. С помощью кнопки «Создать» CMake создает файлы Visual Studio, которые можно открыть из Visual Studio. При нажатии кнопки «Открыть проект» CMake запустит Visual Studio и откроет сгенерированное решение. Вы можете использовать файлы проекта как обычно, но помните, что они были созданы CMake. Это означает, что ваши изменения (например, некоторые дополнительные флаги компиляции) будут потеряны при следующем запуске CMake.
CMake по умолчанию ищет OGG в вашей системе и возвращает ошибку, если не может его найти. Если вы хотите собрать OGG вместе с FLAC, вы можете загрузить исходные коды OGG и извлечь их в подкаталог исходного каталога FLAC с именем ogg (т. е. /path/to/flac-source/ogg) перед запуском CMake. Если вы не хотите собирать FLAC с поддержкой OGG, снимите флажок рядом с флагом With_OGG в списке переменных в окне cmake-gui и снова запустите «Настроить».
Если CMake не может найти компилятор MSVC, то запуск cmake-gui из командной строки MS Developer должен помочь.
FLAC использует autoconf и libtool для настройки и сборки. Чтобы настроить сборку, откройте командную строку/терминал и запустите ./configure
Вы можете указать параметры этой команды, которые перечислены, запустив ./configure --help
.
Если сценарий настройки отсутствует (например, при сборке из git, а не из архива выпуска), его можно сгенерировать, запустив ./autogen.sh
. Однако для этого может потребоваться пакет разработки libtool.
После настройки выполните сборку с помощью make
, проверьте сборку с помощью make check
и установите с помощью make install
. Для установки могут потребоваться права администратора, т.е. sudo make install
.
Шаг «Проверить» не является обязательным; опустите его, чтобы пропустить все тесты, выполнение которых может занять около часа. Несмотря на то, что он останавливается с явным сообщением о любом сбое, он распечатывает много данных, поэтому вы можете захотеть записать вывод в файл, если у вас возникнут проблемы. Кроме того, не запускайте команду make check от имени пользователя root, поскольку это сбивает с толку некоторые тесты.
Подведение итогов:
./configure
make && make check
sudo make install
libFLAC со временем стал больше, поскольку было включено больше функций, но большая часть из них может быть ненужной для конкретной встроенной реализации. Неиспользуемые части можно удалить простым редактированием файлов configure.ac и src/libFLAC/Makefile.am; Следующий график зависимостей показывает, какие модули можно сократить без дальнейшего разбивки:
metadata.h
stream_decoder.h
format.h
stream_encoder.h
stream_decoder.h
format.h
stream_decoder.h
format.h
Другими словами, для приложений чистого декодирования можно безопасно удалить как потоковый кодер, так и интерфейсы редактирования метаданных. Обратите внимание, что это относится только к созданию библиотек для встроенного использования. Инструменты командной строки не обеспечивают такого разделения и для работы требуют полной сборки libFLAC.
В HTML-документации libFLAC API есть раздел, посвященный встроенному использованию (см. doc/html/api/index.html).
Кроме того, в коде libFLAC есть несколько мест с комментариями, отмеченными «OPT:», где #define можно изменить, чтобы включить код, который может работать быстрее на конкретной платформе. Экспериментируя с ними, можно получить более быстрые двоичные файлы.