docs(media): correct the audio claim — a video file's sound is silent, not loopback-carried

This commit is contained in:
2026-11-05 07:22:15 -08:00
parent db563c8644
commit 776f84fb88
5 changed files with 23 additions and 11 deletions
+3 -2
View File
@@ -799,8 +799,9 @@ Full suite 290/291 passing, the sole failure the pre-existing compositor pixel t
released (`GetActiveKeys`). Loop is a manager-level per-path answer: the ctor takes
`Func<string,bool>? loopProvider` (production: "any live media reference loops"), applied before
`StartAsync`, and `SetLooping(key, bool)` applies a live toggle. A file swap releases the old path after
the layer no longer references it. Volume stays unwired on purpose — sound rides the desktop loopback
(TRAX-style), so a per-file slider would be a control with no effect.
the layer no longer references it. **A video file's own soundtrack is silent today** — the decode pipe
is `-an`, so nothing plays it and the loopback has nothing to carry; wiring it (alert-style mixer feed
or TRAX-style local playback) is open, and no volume slider exists until then.
- **Social bar on the output (bar bug-fix branch):** the `FramePump` takes an optional
`socialBar: Func<(VideoFrame? Frame, SocialBarPosition Position)>?` seam, re-read **every frame** (so a
mid-stream position flip applies immediately). The strip is pre-rasterized by `Compositor/SocialBarRenderer.cs`
+3 -2
View File
@@ -99,8 +99,9 @@ published decisions (recorded in `TASKS/task-43-native-alerts.md`):
`RawVideoFrameReader` feed loop, same `IFrameRateProbe` + delay pacing, both behind
`IDecodeProcess`. What differs is ownership and role, not decoding: alerts are per-play
and disposed at drain, media is a refcounted per-path session; alerts also run an
`f32le` audio pipe into the mixer, media deliberately sends no audio (the desktop
loopback carries it, TRAX-style); alerts play once, media loops. A shared raw-video pump
`f32le` audio pipe into the mixer, media runs none at all (`-an`) — so a media file's
soundtrack is silent today, and task-21 item 10 holds the two routes for changing that;
alerts play once, media loops. A shared raw-video pump
is the obvious consolidation if a third consumer appears — do not do it for two.
Fades in/out via **`FadeDurationSeconds = 0.30`**
(`AlertOverlayLayer` const): fade-in by `elapsed` on straight-alpha frame copies;