Sobre o projeto

Symphonia é uma biblioteca pura em Rust para decodificação de áudio e demuxing de mídia. É projetada para aplicações que precisam ler formatos comuns de contêineres de mídia, extrair metadados e tags, e decodificar fluxos de áudio sem depender de bibliotecas C. Os formatos de contêiner suportados incluem AIFF, CAF, ISO/MP4, MKV/WebM, OGG e Wave. Os codecs de áudio suportados incluem AAC-LC, ADPCM, ALAC, FLAC, MP1, MP2, MP3, PCM e Vorbis. Alguns codecs e formatos ainda estão em desenvolvimento, como Opus, WavPack e variantes de HE-AAC. O projeto usa crates separados para formatos e codecs individuais, e flags de recursos controlam quais componentes são compilados. Por padrão, apenas codecs e formatos abertos sem royalties são habilitados, mas uma flag de recurso `all` pode habilitar tudo. O suporte a metadados e tags cobre APEv1, APEv2, ID3v1, ID3v2, ISO/MP4, RIFF e comentários Vorbis em FLAC e OGG. A biblioteca também fornece primitivas básicas de áudio para manipular dados de áudio eficientemente. Symphonia enfatiza segurança e correção. É escrita em 100% Rust seguro, visa prevenir ataques de negação de serviço e é testada com fuzzing. O projeto também fornece ferramentas para depuração: `symphonia-play` para sondar, decodificar, validar e reproduzir fluxos de mídia, e `symphonia-check` para validar a saída decodificada contra outros decodificadores. A biblioteca é modular e permite o registro de demuxers e decodificadores de terceiros. Adaptadores de terceiros existentes incluem `symphonia-adapter-fdk-aac` para variantes de AAC via libfdk-aac e `symphonia-adapter-libopus` para Opus via libopus. Symphonia é licenciada sob MPL v2.0. A versão mínima suportada do Rust para lançamentos 0.6.x é 1.85. O autor principal é Philip Deljanov, e o projeto aceita contribuições.