Devlog #1: Construindo uma biblioteca de decodificador de áudio no moderno C23
Estamos começando o desenvolvimento de uma nova biblioteca de decodificação de áudio, construída sobre os padrões modernos do C23.
Batizada de Sonus, ou libsonus, a biblioteca nasce como uma reimplementação baseada nos fundamentos das bibliotecas dr_libs, desenvolvidas por mackron. A proposta, porém, vai além de uma simples continuação. Estamos reorganizando e reescrevendo partes importantes da base para criar uma estrutura mais moderna, segura e adequada às necessidades do projeto.
O desenvolvimento será inicialmente concentrado em Linux. Mais adiante, pretendemos disponibilizar builds oficiais para Microsoft Windows.
A decodificação de áudio será uma parte importante do que estamos construindo para o futuro da empresa e, principalmente, para ferramentas voltadas à indústria de jogos. Existe uma atenção especial aos desenvolvedores independentes, que muitas vezes precisam montar suas próprias soluções a partir de diferentes bibliotecas e ferramentas.
A ideia não termina na simples leitura de arquivos de áudio.
Estamos trabalhando em direção a um ecossistema que poderá incluir middleware, renderização e composição de áudio, permitindo construir ambientes sonoros completos e trabalhar com áudio espacial de maneira mais acessível.
Uma das ideias que queremos explorar é a possibilidade de transformar fontes estéreo convencionais em experiências espaciais mais imersivas, incluindo suporte a configurações 5.1 e 7.1 e diferentes formas de reprodução em headsets.
Isso também abre espaço para experimentar com obras e materiais mais antigos, trazendo novas possibilidades para conteúdos que originalmente não foram produzidos pensando nesses ambientes.
O ecossistema
O Sonus faz parte de um ecossistema maior que estamos planejando. A tecnologia será dividida em diferentes componentes que, juntos, formarão a base do sistema de áudio que queremos construir.
Por enquanto, o primeiro passo é a biblioteca de decodificação.
O que exatamente o Sonus fará?
O Sonus será composto por bibliotecas compartilhadas (.so) responsáveis por trabalhar com alguns dos formatos de áudio mais utilizados, especialmente no desenvolvimento independente.
Entre eles estão:
- FLAC.
- MP3.
- Opus.
- Vorbis.
- WAV.
A biblioteca será responsável por analisar os arquivos, extrair suas informações e disponibilizar os dados de áudio para outras partes do sistema.
Isso permitirá que o conteúdo seja utilizado por motores de áudio externos ou encaminhado diretamente para pipelines de áudio disponíveis no Linux, como ALSA, PulseAudio e PipeWire.
No início, apenas alguns formatos dentro dessas famílias serão suportados. Conforme o projeto evoluir, novos formatos poderão ser incorporados de acordo com as necessidades do ecossistema e com aquilo que fizer sentido para o desenvolvimento.
Não queremos simplesmente suportar tudo.
Queremos construir uma base que seja útil.
Por que C23?
C existe há décadas e continua evoluindo.
O C23 nos oferece uma oportunidade interessante de modernizar a forma como escrevemos essa biblioteca sem abandonar as características que tornam a linguagem particularmente adequada para software de baixo nível.
Grande parte da implementação original está sendo revisada, reescrita e reorganizada. Isso inclui mudanças na estrutura interna, nomenclatura e interfaces, sempre levando em consideração as necessidades que surgem durante o desenvolvimento.
Não estamos apenas atualizando código antigo. Estamos tentando descobrir qual deve ser a forma dessa biblioteca hoje.
Sobre o desenvolvimento
O Sonus ainda está em desenvolvimento ativo.
Ainda há bastante coisa para construir, testar e, inevitavelmente, refazer. Ao longo desse processo, vamos compartilhar novas decisões técnicas, problemas encontrados, experimentos, benchmarks e partes das implementações conforme elas fizerem sentido para serem apresentadas.
Quando o primeiro release oficial estiver pronto, o código será disponibilizado no GitHub.
A intenção é que as publicações não mostrem apenas o resultado final, mas também um pouco do caminho até ele. As coisas que funcionaram, as que não funcionaram, as decisões que mudaram no meio do caminho e aquilo que aprendemos enquanto construíamos.
Este é apenas o começo.
Mais novidades virão conforme o Sonus tomar forma.
Apoia-nos no Patreon · Assista no YouTube · Siga no Instagram