Unit 2 of slimming the mandatory read. Verbatim move again - the four capture blocks leave ai.md unchanged in content, and one stub carries the law. - docs/ai/capture.md: 'Screen backdrop capture', 'Webcam capture', 'Webcam background effects' and 'Vertical (9:16) tier camera placement', byte- identical, grouped under backdrop / webcam / vertical headings, with a 'Related in ai.md' footer. - ai.md stub keeps: the locked-Background model and NormalizeBackgrounds; ActiveBackgroundImage is fed by static art only (2026-08-23 regression); window:/picker: keys are session-scoped and a live pin beats auto-detect; the settled WinRT interop paths (TryGetDataUnsafe, from-DXGIDevice); the VideoFrame seam, own-catch subtype ladder and no fallback camera; one app- level webcam identity with live-lock attainability; CameraManager as the one effects processing point with per-session mask smoothing; geometry-only vertical tier and the model-level rect lock. - docs/ai/index.md gains the capture.md row; Services/index.md (2) and TASKS/task-38-window-backdrop.md repointed. ai.md 1,975 -> 1,558 lines. No source touched; no push.
20 lines
1.5 KiB
Markdown
20 lines
1.5 KiB
Markdown
# docs/ai — index
|
|
|
|
Subsystems split out of [`ai.md`](../../ai.md) (2026-10-26) so a session pays only for the
|
|
subsystem its task touches. The split is a **verbatim move**: history, traps and measurements are
|
|
unchanged, and `ai.md` keeps a short stub carrying the load-bearing invariants plus a link here, so
|
|
no rule is reachable only from a file you forgot to open.
|
|
|
|
Read the file whose row matches the task. There is no required reading order.
|
|
|
|
| File | Covers | Read when |
|
|
|------|--------|-----------|
|
|
| [`frame-pipeline.md`](frame-pipeline.md) | Render budget & measurement (`FrameCadence`, per-element composite timing, scene dump), `SceneCompositor` design + `StripPool`, and `FramePump` from scene snapshot to encoder (pacing, pool/paste caches, backpressure, teardown, health stats) | Touching the compositor, the render loop, per-frame cost, `Services/Encoder/*`, or debugging dropped/juddering frames |
|
|
| [`capture.md`](capture.md) | The locked Background layer (screen/game/window capture, WinRT GraphicsCapture interop), the webcam seam + `CameraManager` sessions, MediaPipe background effects, and the vertical 9:16 tier's per-scene camera placement | Touching any frame source, the Background row, camera acquisition/conflicts, background effects, or vertical-tier camera geometry |
|
|
|
|
## Split-out yet to come
|
|
|
|
The remaining `ai.md` blocks are being moved in staged units (capture, YouTube/alerts/auth, product,
|
|
UI patterns/theming, audio/recording/encoder). Add the row when the file lands; do not create empty
|
|
placeholders.
|