screenshare: drop mpv --untimed so shared video stays A/V-synced
The viewer launched mpv with `--untimed`, which displays each video frame the instant it decodes and ignores audio timestamps. Sharing a desktop (no audio) that just minimizes latency, but sharing a *video* made its audio drift progressively out of sync — confirmed in a field test watching a video together. Remove the flag so mpv paces video to the audio clock; the remaining low-latency flags keep lag negligible for desktop pointing. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
+1
-1
@@ -1,7 +1,7 @@
|
|||||||
# Maintainer: mollusk <jitty+lc1iz0dc@protonmail.com>
|
# Maintainer: mollusk <jitty+lc1iz0dc@protonmail.com>
|
||||||
pkgname=peerspeak-git
|
pkgname=peerspeak-git
|
||||||
_pkgname=peerspeak
|
_pkgname=peerspeak
|
||||||
pkgver=0.6.1.r315.ga78860d
|
pkgver=0.6.2.r319.g8014edf
|
||||||
pkgrel=1
|
pkgrel=1
|
||||||
pkgdesc="Decentralized peer-to-peer voice chat (Rust/iroh/PipeWire/Opus/iced)"
|
pkgdesc="Decentralized peer-to-peer voice chat (Rust/iroh/PipeWire/Opus/iced)"
|
||||||
arch=('x86_64')
|
arch=('x86_64')
|
||||||
|
|||||||
+10
-4
@@ -547,13 +547,19 @@ fn event_for_log(ev: &PixelpassEvent) -> String {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Open the viewer stream URL in a media player. Mirrors pixelpass's own
|
/// Open the viewer stream URL in a media player, then fall back to vlc. The
|
||||||
/// low-latency mpv invocation; falls back to vlc. The player is reaped in a
|
/// player is reaped in a background task so it doesn't linger as a zombie when
|
||||||
/// background task so it doesn't linger as a zombie when its window closes.
|
/// its window closes.
|
||||||
|
///
|
||||||
|
/// The flags keep latency low while preserving A/V sync. We deliberately do
|
||||||
|
/// NOT pass mpv's `--untimed`: that displays each video frame the instant it
|
||||||
|
/// decodes, ignoring audio timestamps, which makes a shared *video* drift
|
||||||
|
/// progressively out of sync with its audio. Pacing to the audio clock costs a
|
||||||
|
/// little latency (negligible for pointing at a desktop) and keeps a shared
|
||||||
|
/// video in sync.
|
||||||
fn launch_player(url: &str) -> std::io::Result<()> {
|
fn launch_player(url: &str) -> std::io::Result<()> {
|
||||||
const MPV_ARGS: &[&str] = &[
|
const MPV_ARGS: &[&str] = &[
|
||||||
"--profile=low-latency",
|
"--profile=low-latency",
|
||||||
"--untimed",
|
|
||||||
"--hwdec=auto",
|
"--hwdec=auto",
|
||||||
"--audio-buffer=0.2",
|
"--audio-buffer=0.2",
|
||||||
"--demuxer-max-bytes=2M",
|
"--demuxer-max-bytes=2M",
|
||||||
|
|||||||
Reference in New Issue
Block a user