Кодеки AJM
AJM декодирует ATRAC9, MP3, MPEG-4 AAC и Opus. У каждого экземпляра кодека своё состояние, а неизвестный кодек отвергается, вместо того чтобы сообщаться как тихий успех.
Заметки репозитория по 10 октября 2026 г.
Кодеки и форматы семплов
Кодек 0 — это MP3 через minimp3. Кодек 1 — это ATRAC9. Кодек 2 — это MPEG-4 AAC через FAAD2, для заданий ADTS, raw и SAF. Кодек 24 — это Opus через libopus. Выход ATRAC9 может быть знаковым 16-битным, знаковым 32-битным, float или планарным. Инициализация, сведения о кодеке, метаданные без разрыва, счётчики байтов потока, счётчики декодированных кадров и полные боковые полосы семплов сохраняются.
Задания могут использовать непрерывный буфер или разделённый буфер. Состояние экземпляра принадлежит своему декодеру, поэтому два потока не делят резервуар битов. Устаревший путь libSceAudiodec использует тот же бэкенд для ATRAC9, MP3 и AAC после собственных вызовов инициализации, создания, сброса и удаления.
Звук фильма и превью
Наблюдавшаяся многоканальная раскладка ATRAC9 PlayStation 5 декодируется как чередующиеся монопотоки. Звук фильма Ghost of Yōtei начинается в верной точке благодаря этой раскладке. Тактильная дорожка, которую несёт фильм, отмеряется тишиной. Вибрация контроллера из неё не синтезируется.
Запасные превью на FSB передискретизируются в микс 48 кГц, получают короткое затухание и осушаются один раз. В живой граф AudioOut они не подмешиваются, если не задано PS5_AUDIO_FALLBACK_MIX=1, потому что вторая копия того же клипа — это эхо.
Лицензии
ATRAC9, FAAD2, minimp3 и Opus — сторонние декодеры. Их лицензии поставляются в каталоге docs/licenses репозитория и с портативной сборкой. Собственный код эмулятора остаётся GPL-3.0-or-later.
Номер кодека вне четырёх реализованных значений — это ошибка. Возврат буфера нулей и кода успеха заставил бы игру поверить, что поток декодирован.
Что реализовано
- ATRAC9, MP3, MPEG-4 AAC и Opus, с состоянием декодера на экземпляр.
- Выход ATRAC9 как знаковый 16-битный, знаковый 32-битный, float или планарный PCM.
- Метаданные без разрыва и боковых полос, непрерывные и разделённые входные буферы.
- Общий бэкенд за libSceAudiodec.
Чего ещё нет
- Неизвестные номера кодеков AJM отвергаются.
- Тактильные дорожки остаются тихими. Вибрация из них не эмулируется.
- Запасное смешивание превью выключено, если не задано PS5_AUDIO_FALLBACK_MIX=1.
Связанные механизмы
Чему посвящены эти страницы