docs(511): correct the stale "external logo URL can't drive the bug" claim + document the new limits #522
+14
-4
@@ -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.
|
||||
|
||||
@@ -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 channel’s own logo on the stream. An external URL is fetched at render time, so no preview is shown here.'
|
||||
: 'Overlays this channel’s own logo on the stream, using the shared preset’s position and size.'
|
||||
}
|
||||
label="Use logo as on-screen bug"
|
||||
|
||||
Reference in New Issue
Block a user