Phase 7 step 2
This commit is contained in:
@@ -9,13 +9,14 @@ Phase 5 clarified that live parameter layering stops at final render-state compo
|
||||
## Status
|
||||
|
||||
- Phase 7 design package: proposed.
|
||||
- Phase 7 implementation: Step 1 complete.
|
||||
- Phase 7 implementation: Step 2 complete.
|
||||
- Current alignment: `VideoBackend`, `VideoIODevice`, `DeckLinkSession`, `VideoBackendLifecycle`, and `VideoPlayoutScheduler` exist. Phase 4 removed callback-thread GL ownership, but the DeckLink completion path still waits for render-thread output production.
|
||||
|
||||
Current backend footholds:
|
||||
|
||||
- `VideoBackend` wraps device discovery/configuration, start/stop, input callback handling, output completion handling, and telemetry publication.
|
||||
- `DeckLinkSession` owns DeckLink device handles, frame pool creation, preroll, keyer configuration, and scheduled playback.
|
||||
- `VideoPlayoutPolicy` names current frame pool, preroll, ready-frame, underrun, and catch-up policy defaults.
|
||||
- `VideoPlayoutScheduler` owns basic schedule time generation and simple late/drop skip-ahead behavior.
|
||||
- `OpenGLVideoIOBridge` is the current adapter between `VideoBackend` and `RenderEngine`.
|
||||
- `HealthTelemetry` receives some signal, render, and pacing stats.
|
||||
@@ -223,9 +224,16 @@ Unify fixed constants and scheduler assumptions.
|
||||
|
||||
Initial target:
|
||||
|
||||
- frame pool size derives from policy
|
||||
- preroll count derives from policy
|
||||
- late/drop recovery reads policy
|
||||
- [x] frame pool size derives from policy
|
||||
- [x] preroll count derives from policy
|
||||
- [x] late/drop recovery reads policy
|
||||
|
||||
Current implementation:
|
||||
|
||||
- `VideoPlayoutPolicy` defines current output frame pool, preroll, ready-frame, spare-buffer, underrun, catch-up, and adaptive-headroom settings.
|
||||
- `DeckLinkSession` uses the policy for output frame pool creation and preroll count.
|
||||
- `VideoPlayoutScheduler` stores the policy and uses `lateOrDropCatchUpFrames` instead of a hard-coded `+2` recovery step.
|
||||
- `VideoPlayoutSchedulerTests` cover default compatibility behavior, policy-driven catch-up, and policy normalization.
|
||||
|
||||
### Step 3. Add Ready Output Queue
|
||||
|
||||
@@ -321,7 +329,7 @@ Backend lifecycle and playout queue are related, but either can grow large. Impl
|
||||
Phase 7 can be considered complete once the project can say:
|
||||
|
||||
- [x] backend lifecycle states and transitions are explicit
|
||||
- [ ] playout policy owns preroll, pool size, headroom, and underrun behavior
|
||||
- [x] playout policy owns preroll, pool size, headroom, and underrun behavior
|
||||
- [ ] output callbacks no longer synchronously wait for render production
|
||||
- [ ] render produces completed output frames into a bounded queue
|
||||
- [ ] underrun behavior is explicit and observable
|
||||
|
||||
Reference in New Issue
Block a user