feat: signed A/V sync offset (−500..+500), negative advances by eating live stream head (OBS eat-head semantics)

Positive offsets still delay the whole mix via the delay line (lip-sync fix);
negative offsets now ARM once at StartLive and drop |N| ms off the pipe's write
head so audio events land earlier when audio runs BEHIND video. Slider relabeled
AUDIO SYNC, Min −500, locked while live/recording (IsEditMode). LayoutStore and
VM clamp to −500..500.

OBS reference for eat-the-head negative sync: https://obsproject.com/kb/obs-studio/buffering-time (negative sync values pull audio earlier by discarding buffered player audio).

Test: StartLive_NegativeOffset_AdvancesAudio_ByDroppingTheStreamHead (6x0.9 head
must be eaten before 0.2 bed reaches the wire).
This commit is contained in:
2026-09-14 12:30:44 -07:00
parent 11a7af2dc0
commit b22d08eca6
12 changed files with 219 additions and 144 deletions
+7
View File
@@ -7,3 +7,10 @@ separate devices. If iTunes audio appears on the mic meter, it is likely acousti
coupling — the mic picking up speaker/headphone output. Verify by muting the mic;
if the meter still shows levels, check Windows Sound settings for stereo mix or
"listen to this device" routing.
## Live recording ≠ "recording results" shown in Chat view (NOTE ONLY — no fix)
User note (2026-09-14): the recording produced while live is completely different
from the "recording results" surfaced in the Chat view. Do NOT attempt to fix or
reconcile them pre-1.0 — this entry exists so the discrepancy is never rediscovered
as a surprise. When the reconciliation work is eventually queued, start by mapping
both recording paths side by side.