Codecs AJM
O AJM decodifica ATRAC9, MP3, AAC MPEG-4 e Opus. Cada instância de codec guarda o próprio estado, e um codec desconhecido é rejeitado em vez de ser informado como sucesso silencioso.
Notas do repositório até 10 de outubro de 2026
Codecs e formatos de amostra
O codec 0 é MP3, por meio de minimp3. O codec 1 é ATRAC9. O codec 2 é AAC MPEG-4, por meio de FAAD2, para trabalhos ADTS, brutos e SAF. O codec 24 é Opus, por meio de libopus. A saída ATRAC9 pode ser de 16 bits com sinal, de 32 bits com sinal, float ou planar. São preservados a inicialização, a informação do codec, os metadados sem lacuna, as contagens de bytes do fluxo, as contagens de frames decodificados e as bandas laterais do total de amostras.
Os trabalhos podem usar um buffer contíguo ou um buffer dividido. O estado da instância é por decodificador, então dois fluxos não compartilham um reservatório de bits. O caminho legado da libSceAudiodec usa o mesmo backend para ATRAC9, MP3 e AAC, depois das próprias chamadas de init, create, reset e delete.
Áudio de filme e prévias
O layout multicanal de ATRAC9 de PlayStation 5 que foi observado é decodificado como fluxos mono intercalados. O áudio de filme de Ghost of Yōtei começa no ponto certo por causa desse layout. Uma faixa háptica que o filme carrega é temporizada com silêncio. A vibração do controle não é sintetizada a partir dela.
Prévias de reserva apoiadas em FSB são reamostradas para a mistura de 48 kHz, recebem um fade curto e são esvaziadas uma vez. Elas não entram na mistura do grafo AudioOut ao vivo, a menos que PS5_AUDIO_FALLBACK_MIX=1, porque uma segunda cópia do mesmo clipe é um eco.
Licenças
ATRAC9, FAAD2, minimp3 e Opus são decodificadores de terceiros. As licenças deles acompanham o diretório docs/licenses do repositório e a compilação portátil. O código do próprio emulador permanece GPL-3.0-or-later.
Um número de codec fora dos quatro valores implementados é um erro. Devolver um buffer de zeros e um código de sucesso faria um título acreditar que o fluxo tinha sido decodificado.
O que está implementado
- ATRAC9, MP3, AAC MPEG-4 e Opus, com estado de decodificador por instância.
- Saída ATRAC9 como PCM de 16 bits com sinal, de 32 bits com sinal, float ou planar.
- Metadados sem lacuna e de banda lateral, com buffers de entrada contíguos e divididos.
- O backend compartilhado por trás da libSceAudiodec.
O que ainda falta
- Números desconhecidos de codec AJM são rejeitados.
- Faixas hápticas permanecem em silêncio. A vibração não é emulada a partir delas.
- A mistura das prévias de reserva fica desligada, a menos que PS5_AUDIO_FALLBACK_MIX=1.
Mecanismos relacionados
O que estas páginas descrevem