Phase 7.5 step 2
This commit is contained in:
@@ -7,7 +7,7 @@ Phase 7 made backend lifecycle, playout policy, ready-frame queueing, late/drop
|
||||
## Status
|
||||
|
||||
- Phase 7.5 design package: proposed.
|
||||
- Phase 7.5 implementation: Step 1 in progress.
|
||||
- Phase 7.5 implementation: Step 2 in progress.
|
||||
- Current alignment: Phase 7 is complete. `RenderOutputQueue`, `VideoPlayoutPolicy`, `VideoPlayoutScheduler`, `VideoBackendLifecycle`, and backend playout telemetry exist. The backend worker fills the ready queue on completion demand, but render production is not yet proactively driven by queue pressure or video cadence.
|
||||
|
||||
Current footholds:
|
||||
@@ -18,6 +18,7 @@ Current footholds:
|
||||
- `VideoPlayoutPolicy` names ready-frame headroom and catch-up policy.
|
||||
- `HealthTelemetry::BackendPlayoutSnapshot` exposes queue depth, underruns, late/drop streaks, and recovery decisions.
|
||||
- Step 1 adds baseline timing fields for ready-queue min/max/zero-depth samples and output render duration.
|
||||
- Step 2 adds a pure `OutputProductionController` for queue-pressure production decisions.
|
||||
|
||||
## Timing Review Findings
|
||||
|
||||
@@ -177,13 +178,20 @@ Introduce a pure policy helper for queue-pressure decisions.
|
||||
|
||||
Initial target:
|
||||
|
||||
- input: ready depth, capacity, target depth, late/drop streaks, underrun count
|
||||
- output: produce, wait, or throttle
|
||||
- tests cover low queue, full queue, late/drop pressure, and normalized policy values
|
||||
- [x] input: ready depth, capacity, target depth, late/drop streaks, underrun count
|
||||
- [x] output: produce, wait, or throttle
|
||||
- [x] tests cover low queue, full queue, late/drop pressure, and normalized policy values
|
||||
|
||||
Exit criteria:
|
||||
|
||||
- production cadence policy can evolve without touching DeckLink or GL code
|
||||
- [x] production cadence policy can evolve without touching DeckLink or GL code
|
||||
|
||||
Implementation notes:
|
||||
|
||||
- `OutputProductionController` lives in `videoio` and depends only on `VideoPlayoutPolicy`.
|
||||
- `OutputProductionPressure` carries ready-queue depth/capacity plus underrun and late/drop pressure.
|
||||
- `OutputProductionDecision` returns `Produce`, `Wait`, or `Throttle`, a requested frame count, effective target/max limits, and a reason string.
|
||||
- Step 2 is intentionally not wired into live playback yet. Step 3 should use this policy to drive the proactive producer loop.
|
||||
|
||||
### Step 3. Add A Proactive Producer Loop
|
||||
|
||||
|
||||
Reference in New Issue
Block a user