AudioOut
AudioOut plays guest PCM on a Windows device at 48 kHz. Legacy ports have their own streams and queues, so music and effects run together, and an underrun keeps sample order.
Repository notes through October 10, 2026
Ports and the host device
A title submits a buffer and expects the call to last about as long as the buffer sounds. That wait comes from the host device making room, not from a sleep that throws the samples away. AudioOut, AudioIn and AudioOut2 expose paced ports, queues, speaker metadata and connected-primary state. A batch validates every port and then submits the audible quantum once, so a silent auxiliary port does not multiply the duration.
Legacy AudioOut ports own separate Windows streams and PCM queues. Music and effects can play at the same time. The batch output submits each active port. After an underrun, the active ring keeps its sample order, and a short fade takes the click off the resume. The WinMM device pre-rolls real PCM and uses a one-millisecond timer period.
Latency
The ordinary reserve starts at 42 ms and grows in steps of four buffers, up to about 170 ms, only when the running title actually starves the device. The measured profile for PPSA25872 starts at 128 ms because its mixer can pause for roughly 100 to 120 ms during startup and scene work. That larger reserve is not imposed on other titles.
Non-finite samples are replaced before they reach the device. That sanitizer protects the speakers. It cannot repair a filter that has already stored a NaN. The ACM page describes the convolution bug that was producing those values in Subnautica.
Where output exists
Failure to open a device is not reported to the title. A missing sound card is a fact about the host. The caller falls back to a paced silent wait so the title's timing still advances. The same happens if the device dies mid-run. Output is implemented on Windows. Other builds keep the ports silent and correctly paced.
Direct fallback mixing of decoded preview clips is off by default. Playing a preview beside the title's own AudioOut mix is heard as an echo. PS5_AUDIO_FALLBACK_MIX=1 turns that mix on. The launcher can mute the device with its sound setting, which arrives as PS5_AUDIO_DISABLED.
What is implemented
- 48 kHz host playback with paced AudioOut, AudioIn and AudioOut2 ports.
- Separate Windows streams for legacy ports, so concurrent music and effects stay ordered.
- A reserve that starts at 42 ms and grows only when the device starves, up to about 170 ms.
- Replacement of non-finite samples, and a silent paced fallback when no device opens.
What is still missing
- Host output is Windows-only.
- Controller vibration is not driven from an audio haptics track.
- The sanitizer does not reconstruct a filter history that was already poisoned.
Related mechanisms
What these pages are