Aurora 1.2.3
5.1 audio dropouts are fixed, Experimental/Host now show the settings that were previously unreachable, and there is a new V-Sync attempt that actually talks to NDL.
Audio — 5.1 dropouts (#66)
5.1 could go silent for a few seconds at 4K/high bitrate. The TV's Opus surround transcode was running on the RTP receive thread (CAPABILITY_DIRECT_SUBMIT), so a slow transcode starved the socket.
- Audio on webOS no longer uses direct submit — Limelight's decoder thread absorbs the transcode.
- The NDL 5.1 Opus transcode runs outside the NDL lock, at encoder complexity 0.
- Experimental → Decode 5.1 in the client (PCM) skips the TV transcode entirely if it still cuts out.
Frame pacing — another V-Sync attempt
Every previous pacing scheme (PTS grid, host PTS, presentation offset, panel-phase, holding Feed) changed when Aurora submits. NDL was still given PTS = now, so its render buffer stayed empty and it could not vsync.
Experimental → Frame pacing now places the PTS N frames in the future so the TV queues frames and releases them on its own V-Sync. Start with V-Sync, 3 frames (~25 ms extra at 120 fps). Turn Show logs on: after a session you should see Render pacing: … queue avg … starved ….
queue avgnear target,starvednear 0% → the TV is holding frames. If pans still judder, presentation is not the remaining problem.queue avg ~0,starved ~100%→ NDL ignores a future PTS. V-Sync is not possible through NDL.
Settings that were invisible
The compact Settings UI only instantiates Stream / Input / Host / Experimental. Video and Audio panes compiled but were never shown.
Now in Experimental:
- Frame pacing (V-Sync via render buffer)
- Full range YUV (SDR)
- Periodic decoder refresh (HEVC)
- Decode 5.1 in the client (PCM)
- Adaptive bitrate + mode
Now in Host:
- Quit the game when the stream ends
- Resume a running game automatically
Notes
video.pane.c/audio.pane.cwere deleted so this trap cannot repeat.- The old Feed-hold “V-Sync gate” was removed; it did not work.
- Config is preserved across TV updates (
moonlight.inirestore).