From b6240c17c55a928f4612a573a52d0c395e228e8f Mon Sep 17 00:00:00 2001 From: Mollusk Date: Sat, 4 Jul 2026 21:15:11 -0400 Subject: [PATCH] viewer: drop forced --hwdec=auto (froze video on frame 1) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The screen-share viewer ran mpv with --profile=low-latency (hwdec off by default) and then forced --hwdec=auto back on. On some drivers the HW H.264 decoder stalls mid-stream: a viewer receiving a software-x264 share froze on the first frame while audio kept playing (one MPEG-TS byte stream, so bytes were still flowing — the video decoder gave up, the audio decoder didn't). Screen-share H.264 at these bitrates decodes trivially in software, so leave hwdec at the low-latency default. Co-Authored-By: Claude Opus 4.8 --- src/interactive.rs | 4 +++- src/viewer/mod.rs | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/interactive.rs b/src/interactive.rs index 006b908..72f7d15 100644 --- a/src/interactive.rs +++ b/src/interactive.rs @@ -281,8 +281,10 @@ impl Player { &[ // No `--untimed`: it ignores audio timestamps and drifts a // shared video out of sync. Pacing to audio keeps A/V synced. + // Also leave hwdec at the `low-latency` default (software + // decode): forcing `--hwdec=auto` froze some viewers on + // frame 1 while audio kept playing. "--profile=low-latency", - "--hwdec=auto", "--audio-buffer=0.2", "--demuxer-max-bytes=2M", "--demuxer-readahead-secs=0.5", diff --git a/src/viewer/mod.rs b/src/viewer/mod.rs index 8876b27..c54476c 100644 --- a/src/viewer/mod.rs +++ b/src/viewer/mod.rs @@ -102,7 +102,7 @@ fn print_viewer_banner(url: &str) { eprintln!("│ Connected to host. Open the stream in your player:"); eprintln!("│"); eprintln!( - "│ mpv --profile=low-latency --hwdec=auto --audio-buffer=0.2 --demuxer-max-bytes=2M --demuxer-readahead-secs=0.5 {url}" + "│ mpv --profile=low-latency --audio-buffer=0.2 --demuxer-max-bytes=2M --demuxer-readahead-secs=0.5 {url}" ); eprintln!("│ vlc --network-caching=200 --live-caching=200 {url}"); eprintln!("│");