FLAC é um software de código aberto que pode reduzir a quantidade de espaço de armazenamento necessário para armazenar sinais de áudio digital sem a necessidade de remover informações ao fazê-lo.
Os arquivos lidos e produzidos por este software são chamados de arquivos FLAC. Como esses arquivos (que seguem o formato FLAC) também podem ser lidos e gravados por outro software, esse software é frequentemente chamado de implementação de referência FLAC.
FLAC foi desenvolvido por voluntários. Se você quiser ajudar, consulte CONTRIBUTING.md para obter mais informações.
FLAC é composto por
flac
, um programa de linha de comando para codificação e decodificação de arquivosmetaflac
, um programa de linha de comando para visualizar e editar metadados FLACAs bibliotecas (libFLAC, libFLAC++) são licenciadas sob a licença semelhante a BSD do Xiph.org (consulte COPYING.Xiph). Todos os outros programas e plug-ins são licenciados sob a Licença Pública Geral GNU (consulte COPYING.GPL). A documentação está licenciada sob a GNU Free Documentation License (consulte COPYING.FDL).
Para documentação das ferramentas de linha de comando flac
e metaflac
, consulte o diretório man, que contém os arquivos flac.md e metaflac.md
A documentação da API está em html e é gerada pelo Doxygen. Ele pode ser encontrado no diretório doc/html/api. Ele está incluído em um tarball de lançamento e deve ser compilado com Doxygen quando a fonte é obtida diretamente do git.
Os exemplos de diretório contêm exemplos de código-fonte sobre o uso de libFLAC e libFLAC++.
A documentação relativa ao próprio formato FLAC (que pode ser usado para criar software de leitura e gravação de software FLAC independente de libFLAC) foi incluída em versões anteriores, mas agora pode ser encontrada em https://datatracker.ietf.org/doc/draft-ietf -cellar-flac/ Além disso, um conjunto de arquivos para testes de conformidade chamado testbench do decodificador FLAC pode ser encontrado em https://github.com/ietf-wg-cellar/flac-test-files
Se você tiver dúvidas sobre o FLAC que este documento não responde, envie-as no seguinte rastreador para que este documento possa ser melhorado:
https://github.com/xiph/flac/issues
Todos os componentes do projeto FLAC podem ser construídos com uma variedade de compiladores (incluindo GCC, Clang, Visual Studio, Intel C++ Compiler) em muitas arquiteturas (incluindo x86, x86_64, ARMv7, ARMv8 e PowerPC) para muitos sistemas operacionais diferentes.
Para fazer isso, o FLAC fornece dois sistemas de compilação: um usando autotools do GNU e outro com CMake. Ambos diferem ligeiramente nas opções de configuração, mas devem ser considerados equivalentes para a maioria dos casos de uso.
O FLAC costumava fornecer arquivos especificamente para construção com o Visual Studio, mas eles foram removidos em favor do uso do CMake.
CMake é um sistema de construção multiplataforma. FLAC pode ser construído em Windows, Linux, Mac OS X usando CMake.
Você pode usar a CLI ou GUI do CMake. Recomendamos que você tenha uma pasta de compilação separada fora do repositório para não estragá-lo com os arquivos gerados. No entanto, é possível fazer uma chamada construção em árvore, nesse caso /path/to/flac-build nos exemplos a seguir é igual a /path/to/flac-source.
Vá para a pasta build e execute algo assim:
/path/to/flac-build$ cmake /path/to/flac-source
ou, por exemplo, no shell do Windows
C:pathtoflac-build> cmake pathtoflac-source
(desde que cmake esteja na sua variável% PATH%)
Isso irá gerar scripts de construção para o sistema de construção padrão (por exemplo, Makefiles para UNIX). Depois disso, você começa a construir com um comando como este:
/path/to/flac-build$ make
E depois você pode executar testes ou instalar as bibliotecas e cabeçalhos construídos
/path/to/flac-build$ make test
/path/to/flac-build$ make install
Se você quiser usar um sistema de compilação diferente do padrão, adicione o sinalizador -G ao cmake, por exemplo:
/path/to/flac-build$ cmake /path/to/flac-source -GNinja
/path/to/flac-build$ ninja
ou:
/path/to/flac-build$ cmake /path/to/flac-source -GXcode
Use cmake --help para ver a lista de geradores disponíveis.
Por padrão, o CMake irá procurar por OGG. Se o CMake não conseguir encontrá-lo, você poderá ajudar o CMake especificando o caminho exato:
/path/to/flac-build$ cmake /path/to/flac-source -DOGG_ROOT=/path/to/ogg
Se você quiser que o CMake construa o OGG junto com o FLAC, você pode colocar as fontes ogg diretamente no diretório de origem flac como um subdiretório com o nome ogg, por exemplo:
/path/to/flac-source/ogg
Se você não quiser construir flac com suporte a OGG, você pode dizer ao CMake para não procurar por OGG:
/path/to/flac-build$ cmake /path/to/flac-source -DWITH_OGG=OFF
Outras opções do FLAC (por exemplo, construir lib C++ ou documentos) também podem ser colocadas em cmake através do sinalizador -D. Se você quiser saber quais opções estão disponíveis, use -LH:
/path/to/flac-build$ cmake /path/to/flac-source -LH
É provável que você prefira usar a GUI do CMake se usar o Visual Studio para criar FLAC. É essencialmente o mesmo processo de construção usando CLI.
Abra cmake-gui. Na janela selecione um diretório de origem (a raiz do repositório), um diretório de construção (algum outro diretório fora do repositório). Em seguida, pressione o botão "Configurar". O CMake perguntará qual sistema de compilação você prefere. Escolha a versão do Visual Studio que você possui em seu sistema, escolha se deseja compilar para Win32 ou x64. Pressione OK.
Após a conclusão do CMake você pode alterar a configuração ao seu gosto e se alterar alguma coisa, execute o Configure novamente. Com o botão “Gerar”, o CMake cria arquivos do Visual Studio, que podem ser abertos no Visual Studio. Com o botão “Abrir Projeto” o CMake irá iniciar o Visual Studio e abrir a solução gerada. Você pode usar os arquivos do projeto normalmente, mas lembre-se de que eles foram gerados pelo CMake. Isso significa que suas alterações (por exemplo, alguns sinalizadores de compilação adicionais) serão perdidas na próxima vez que você executar o CMake.
O CMake procura por OGG por padrão em seu sistema e retorna um erro se não conseguir encontrá-lo. Se você deseja construir o OGG junto com o FLAC, você pode baixar as fontes do OGG e extraí-las em um subdiretório do diretório de origem do FLAC com o nome ogg (ou seja, /caminho/para/flac-source/ogg) antes de executar o CMake. Se você não deseja construir FLAC com suporte OGG, desmarque a caixa após o sinalizador WITH_OGG na lista de variáveis na janela cmake-gui e execute "Configurar" novamente.
Se o CMake não conseguir encontrar o compilador MSVC, executar cmake-gui no prompt de comando do MS Developer deve ajudar.
FLAC usa autoconf e libtool para configuração e construção. Para configurar uma compilação, abra uma linha/terminal de comando e execute ./configure
Você pode fornecer opções para este comando, que são listadas executando ./configure --help
.
Caso o script de configuração não esteja presente (por exemplo, ao construir a partir do git e não de um tarball de lançamento), ele pode ser gerado executando ./autogen.sh
. Isso pode exigir um pacote de desenvolvimento libtool.
Após a configuração, construa com make
, verifique a compilação com make check
e instale com make install
. A instalação pode exigir privilégios de administrador, ou seja, sudo make install
.
A etapa 'fazer verificação' é opcional; omita-o para pular todos os testes, que podem levar cerca de uma hora para serem concluídos. Mesmo que ele pare com uma mensagem explícita em qualquer falha, ele imprime muitas coisas, então você pode querer capturar a saída em um arquivo se estiver tendo algum problema. Além disso, não execute 'make check' como root porque isso confunde alguns dos testes.
Resumindo:
./configure
make && make check
sudo make install
A libFLAC cresceu ao longo do tempo à medida que mais funcionalidades foram incluídas, mas muitas delas podem ser desnecessárias para uma implementação incorporada específica. Partes não utilizadas podem ser removidas por alguma edição simples de configure.ac e src/libFLAC/Makefile.am; o gráfico de dependência a seguir mostra quais módulos podem ser removidos sem detalhar ainda mais:
metadata.h
stream_decoder.h
format.h
stream_encoder.h
stream_decoder.h
format.h
stream_decoder.h
format.h
Em outras palavras, para aplicações de decodificação pura, tanto o codificador de fluxo quanto as interfaces de edição de metadados podem ser removidos com segurança. Observe que isso é específico para construir bibliotecas para uso incorporado. As ferramentas de linha de comando não fornecem tal compartimentação e requerem uma construção libFLAC completa para funcionar.
Há uma seção dedicada ao uso incorporado na documentação HTML da API libFLAC (consulte doc/html/api/index.html).
Além disso, existem vários locais no código libFLAC com comentários marcados com "OPT:" onde um #define pode ser alterado para permitir código que pode ser mais rápido em uma plataforma específica. Experimentar isso pode gerar binários mais rápidos.