docs(511): correct the stale "external logo URL can't drive the bug" claim + document the new limits #522

Closed
timothy wants to merge 1 commits from docs/511-external-logo-limits into main
2 changed files with 15 additions and 5 deletions
+14 -4
View File
@@ -164,10 +164,20 @@ the system channel templates it creates, so the library-to-lineup builder (which
are left alone, so builder-created and auto-tuned channels there inherit whatever the template
already specifies.
**Limitation:** a logo set via **External logo URL** cannot drive the bug. `WatermarkSelector`
resolves it to the URL and then `File.Exists`-checks it, which is never true, so the watermark is
silently dropped the URL wins for the guide listing but disables the on-screen bug. Tracked as
**#502**; the editor does not offer a bug preview in that case.
**External logo URLs drive the bug too, since #502.** `WatermarkSelector` used to resolve the URL
and then `File.Exists`-check it never true for an `http(s)` path — so the watermark was silently
dropped and the URL won only the guide listing. It now passes through to the graphics engine, which
fetches and composites it. (The editor still offers no bug preview in that case.)
**A remote logo is fetched under bounds, and exceeding any of them disables the bug rather than the
stream** (#511). The fetch gets a **10s** deadline covering headers *and* body, a **10 MiB** wire
cap, and at most **3 redirects**; the decode is capped at **50 MP total** (`width x height x
frames`) and **600 frames**, and the scaled frames retained for compositing at **200 MP**
(`frames x scaledWidth x scaledHeight`). A logo that busts a limit — or a host that is slow, dead or
serves a non-image — logs a warning and renders the channel with no bug; it never kills the stream.
Practical effects: an animated overlay scaled to full 1080p is limited to ~96 frames (~3.2s at
30fps), and an 8K still (~33 MP) is fine. The image is re-fetched per playout item, not cached; the
rationale for each limit is in `docs/decisions.md`.
Note: `ChannelLogoGenerator.GenerateChannelLogoUrl()` hardcodes `localhost` for watermark logo
fetching — see issue #1 for details.
+1 -1
View File
@@ -798,7 +798,7 @@ function BrandingPane({
logoBugTarget == null
? 'No logo-driven watermark preset exists yet.'
: externalUrlLogo
? 'An external logo URL cannot be used as the on-screen bug — upload an image instead.'
? 'Overlays this channels own logo on the stream. An external URL is fetched at render time, so no preview is shown here.'
: 'Overlays this channels own logo on the stream, using the shared presets position and size.'
}
label="Use logo as on-screen bug"