AJM 编解码器
AJM 解码 ATRAC9、MP3、MPEG-4 AAC 和 Opus。每个编解码器实例保持自己的状态,未知编解码器会被拒绝,而不是被报告为静默的成功。
仓库笔记截至 2026年10月10日
编解码器与采样格式
编解码器 0 是 MP3,经由 minimp3。编解码器 1 是 ATRAC9。编解码器 2 是 MPEG-4 AAC,经由 FAAD2,用于 ADTS、原始和 SAF 作业。编解码器 24 是 Opus,经由 libopus。ATRAC9 输出可以是有符号 16 位、有符号 32 位、浮点或平面。初始化、编解码器信息、无缝元数据、流字节数、已解码帧数和总采样边带都予以保留。
作业可以使用连续缓冲区或分裂缓冲区。实例状态按解码器分开,因此两条流不共享比特水库。旧式 libSceAudiodec 路径在自己的初始化、创建、重置和删除调用之后,对 ATRAC9、MP3 和 AAC 使用同一个后端。
影片音频与预览
观察到的 PlayStation 5 多声道 ATRAC9 布局被解码为交错的单声道流。Ghost of Yōtei 的影片音频因此从正确的位置开始。影片所携带的触觉音轨用静音来计时。不会从它合成控制器振动。
由 FSB 支撑的回退预览会被重采样到 48 kHz 混音,加上一段短淡变,并排空一次。除非 PS5_AUDIO_FALLBACK_MIX=1,它们不会混进活动的 AudioOut 图,因为同一片段的第二份拷贝就是回声。
许可证
ATRAC9、FAAD2、minimp3 和 Opus 是第三方解码器。它们的许可证放在仓库的 docs/licenses 目录里,并随便携构建一起提供。模拟器自己的代码保持 GPL-3.0-or-later。
四个已实现数值之外的编解码器编号是错误。返回一块全零缓冲区再加一个成功码,会让游戏以为这条流已经被解码。
已经实现的部分
- ATRAC9、MP3、MPEG-4 AAC 和 Opus,每个实例有自己的解码器状态。
- ATRAC9 输出为有符号 16 位、有符号 32 位、浮点或平面 PCM。
- 无缝和边带元数据,以及连续和分裂的输入缓冲区。
- libSceAudiodec 背后的共享后端。
尚未实现的部分
- 未知的 AJM 编解码器编号会被拒绝。
- 触觉音轨保持静音。不会从它们模拟振动。
- 除非 PS5_AUDIO_FALLBACK_MIX=1,否则回退预览混音是关闭的。
相关机制
这些页面说明什么