AJM-Codecs
AJM dekodiert ATRAC9, MP3, MPEG-4 AAC und Opus. Jede Codec-Instanz behält ihren eigenen Zustand, und ein unbekannter Codec wird abgelehnt, statt als stiller Erfolg gemeldet zu werden.
Repository-Notizen bis 10. Oktober 2026
Codecs und Sampleformate
Codec 0 ist MP3, über minimp3. Codec 1 ist ATRAC9. Codec 2 ist MPEG-4 AAC, über FAAD2, für Aufträge in ADTS, roh und SAF. Codec 24 ist Opus, über libopus. Die Ausgabe von ATRAC9 kann vorzeichenbehaftete 16 Bit, vorzeichenbehaftete 32 Bit, Float oder planar sein. Initialisierung, Codec-Informationen, Gapless-Metadaten, Bytezahlen des Stroms, Zahlen dekodierter Frames und die gesamten Sample-Seitenbänder bleiben erhalten.
Aufträge dürfen einen zusammenhängenden Puffer oder einen geteilten Puffer nutzen. Der Instanzzustand gilt je Decoder, sodass zwei Ströme sich kein Bit-Reservoir teilen. Der ältere Pfad libSceAudiodec nutzt dasselbe Backend für ATRAC9, MP3 und AAC nach seinen eigenen Aufrufen für Init, Erzeugen, Zurücksetzen und Löschen.
Filmaudio und Vorschauen
Das beobachtete mehrkanalige ATRAC9-Layout der PlayStation 5 wird als verschachtelte Mono-Ströme dekodiert. Das Filmaudio von Ghost of Yōtei setzt deshalb an der richtigen Stelle ein. Eine Haptikspur, die der Film mitführt, wird zeitlich mitgeführt und bleibt stumm. Controller-Vibration wird daraus nicht synthetisiert.
FSB-gestützte Fallback-Vorschauen werden auf den Mix mit 48 kHz neu abgetastet, erhalten ein kurzes Fade und werden einmal geleert. Sie werden nicht in den lebenden AudioOut-Graphen gemischt, solange nicht PS5_AUDIO_FALLBACK_MIX=1 gesetzt ist, weil eine zweite Kopie desselben Clips ein Echo ist.
Lizenzen
ATRAC9, FAAD2, minimp3 und Opus sind Decoder von Drittanbietern. Ihre Lizenzen liegen im Verzeichnis docs/licenses des Repositorys und beim portablen Build. Der eigene Code des Emulators bleibt GPL-3.0-or-later.
Eine Codec-Nummer außerhalb der vier implementierten Werte ist ein Fehler. Einen Puffer aus Nullen und einen Erfolgscode zurückzugeben ließe einen Titel glauben, der Strom sei dekodiert worden.
Was umgesetzt ist
- ATRAC9, MP3, MPEG-4 AAC und Opus, mit Decoderzustand je Instanz.
- ATRAC9-Ausgabe als vorzeichenbehaftetes 16-Bit-, vorzeichenbehaftetes 32-Bit-, Float- oder planares PCM.
- Gapless- und Seitenband-Metadaten, zusammenhängende und geteilte Eingabepuffer.
- Das gemeinsame Backend hinter libSceAudiodec.
Was noch fehlt
- Unbekannte AJM-Codec-Nummern werden abgelehnt.
- Haptikspuren bleiben stumm. Vibration wird daraus nicht emuliert.
- Das Mischen der Fallback-Vorschau ist aus, solange nicht PS5_AUDIO_FALLBACK_MIX=1 gesetzt ist.
Verwandte Mechanismen
Worum es auf diesen Seiten geht