Phase 7 done
This commit is contained in:
@@ -9,8 +9,8 @@ Phase 5 clarified that live parameter layering stops at final render-state compo
|
||||
## Status
|
||||
|
||||
- Phase 7 design package: proposed.
|
||||
- Phase 7 implementation: Step 6 complete.
|
||||
- Current alignment: `VideoBackend`, `VideoIODevice`, `DeckLinkSession`, `VideoBackendLifecycle`, and `VideoPlayoutScheduler` exist. Phase 4 removed callback-thread GL ownership, Step 4 moved completion processing onto a backend worker, Step 5 uses `RenderOutputQueue` as the ready-frame handoff inside that worker, and Step 6 replaces fixed late/drop skip-ahead with measured recovery decisions.
|
||||
- Phase 7 implementation: complete.
|
||||
- Current alignment: `VideoBackend`, `VideoIODevice`, `DeckLinkSession`, `VideoBackendLifecycle`, and `VideoPlayoutScheduler` exist. Phase 4 removed callback-thread GL ownership, Step 4 moved completion processing onto a backend worker, Step 5 uses `RenderOutputQueue` as the ready-frame handoff inside that worker, Step 6 replaces fixed late/drop skip-ahead with measured recovery decisions, and Step 7 reports backend playout health through `HealthTelemetry`.
|
||||
|
||||
Current backend footholds:
|
||||
|
||||
@@ -20,7 +20,7 @@ Current backend footholds:
|
||||
- `RenderOutputQueue` names the future bounded ready-output-frame handoff and has pure queue tests.
|
||||
- `VideoPlayoutScheduler` owns schedule time generation, completion indexing, late/drop streaks, ready-queue pressure input, and measured recovery decisions.
|
||||
- `OpenGLVideoIOBridge` is the current adapter between `VideoBackend` and `RenderEngine`.
|
||||
- `HealthTelemetry` receives some signal, render, and pacing stats.
|
||||
- `HealthTelemetry` receives signal, render, pacing, lifecycle, queue, underrun, late/drop, and scheduler recovery observations.
|
||||
|
||||
## Why Phase 7 Exists
|
||||
|
||||
@@ -312,6 +312,20 @@ Current implementation:
|
||||
|
||||
Publish backend lifecycle, queue depth, underrun, late/drop, and degraded-state observations through `HealthTelemetry`.
|
||||
|
||||
Initial target:
|
||||
|
||||
- [x] backend lifecycle state is visible in health telemetry
|
||||
- [x] ready queue depth, capacity, drops, and underruns are visible
|
||||
- [x] late/drop streaks and scheduler recovery decisions are visible
|
||||
- [x] runtime-state JSON exposes the backend playout health snapshot
|
||||
|
||||
Current implementation:
|
||||
|
||||
- `HealthTelemetry::BackendPlayoutSnapshot` captures lifecycle state, completion result, ready queue metrics, scheduler indices, scheduled lead, measured lag, catch-up frames, late/drop streaks, aggregate late/drop/flushed counts, degraded state, and status message.
|
||||
- `VideoBackend::RecordBackendPlayoutHealth(...)` samples `RenderOutputQueue` metrics after each processed output completion and reports the latest scheduler recovery decision.
|
||||
- `RuntimeStatePresenter` publishes the snapshot as `backendPlayout`, including `readyQueue` and `recovery` sections.
|
||||
- `HealthTelemetryTests` cover backend playout health recording, try-record behavior, and inclusion in the full health snapshot.
|
||||
|
||||
## Testing Strategy
|
||||
|
||||
Recommended tests:
|
||||
@@ -365,8 +379,8 @@ Phase 7 can be considered complete once the project can say:
|
||||
- [x] render produces completed output frames into a bounded queue
|
||||
- [x] underrun behavior is explicit and observable
|
||||
- [x] late/drop recovery is measured rather than fixed skip-only
|
||||
- [ ] backend health reports lifecycle, queue, underrun, late, and dropped state
|
||||
- [ ] queue/lifecycle/scheduler behavior has non-DeckLink tests
|
||||
- [x] backend health reports lifecycle, queue, underrun, late, and dropped state
|
||||
- [x] queue/lifecycle/scheduler behavior has non-DeckLink tests
|
||||
|
||||
## Open Questions
|
||||
|
||||
|
||||
Reference in New Issue
Block a user