Clean up pass
This commit is contained in:
@@ -104,6 +104,13 @@ apps/RenderCadenceCompositor/
|
||||
RenderCadenceApp.h
|
||||
AppConfig.cpp
|
||||
AppConfig.h
|
||||
AppConfigProvider.cpp
|
||||
AppConfigProvider.h
|
||||
|
||||
control/
|
||||
HttpControlServer.cpp
|
||||
HttpControlServer.h
|
||||
RuntimeStateJson.h
|
||||
|
||||
platform/
|
||||
ComInit.cpp
|
||||
@@ -139,8 +146,16 @@ apps/RenderCadenceCompositor/
|
||||
telemetry/
|
||||
CadenceTelemetry.cpp
|
||||
CadenceTelemetry.h
|
||||
TelemetryPrinter.cpp
|
||||
TelemetryPrinter.h
|
||||
CadenceTelemetryJson.h
|
||||
TelemetryHealthMonitor.h
|
||||
|
||||
logging/
|
||||
Logger.cpp
|
||||
Logger.h
|
||||
|
||||
json/
|
||||
JsonWriter.cpp
|
||||
JsonWriter.h
|
||||
```
|
||||
|
||||
The new app can reuse selected existing source files from the current app at first:
|
||||
@@ -355,15 +370,17 @@ Initial counters:
|
||||
- free/rendering/completed/scheduled slot counts
|
||||
- actual DeckLink buffered frames
|
||||
|
||||
### `TelemetryPrinter`
|
||||
### `TelemetryHealthMonitor`
|
||||
|
||||
Prints one stable line per interval, matching the probe where possible.
|
||||
Samples cadence telemetry once per interval and logs only health events.
|
||||
|
||||
Example:
|
||||
Normal telemetry is available through the HTTP state endpoint. The console should not receive a healthy once-per-second cadence line.
|
||||
|
||||
```text
|
||||
renderFps=59.9 scheduleFps=59.9 free=7 completed=1 scheduled=4 drops=0 pboMiss=0 completions=119 late=0 dropped=0 decklinkBuffered=4
|
||||
```
|
||||
Health events:
|
||||
|
||||
- warning when DeckLink late/dropped-frame counters increase
|
||||
- warning when schedule failures increase
|
||||
- error when app/DeckLink output buffering is starved
|
||||
|
||||
## Startup Sequence
|
||||
|
||||
@@ -371,24 +388,28 @@ Target first-version startup:
|
||||
|
||||
```text
|
||||
main
|
||||
-> parse AppConfig
|
||||
-> load AppConfig through AppConfigProvider
|
||||
-> initialize COM
|
||||
-> DeckLinkOutput discover/select/configure output
|
||||
-> DeckLinkOutput prepare output schedule
|
||||
-> create SystemFrameExchange
|
||||
-> start RenderThread
|
||||
-> wait for completed frame warmup
|
||||
-> start DeckLinkOutputThread
|
||||
-> wait for scheduled depth warmup
|
||||
-> DeckLinkOutput start scheduled playback
|
||||
-> start TelemetryPrinter
|
||||
-> optionally discover/select/configure DeckLink output
|
||||
-> if DeckLink is available:
|
||||
-> start DeckLinkOutputThread
|
||||
-> wait for scheduled depth warmup
|
||||
-> DeckLinkOutput start scheduled playback
|
||||
-> if DeckLink is unavailable:
|
||||
-> continue without video output
|
||||
-> start TelemetryHealthMonitor
|
||||
-> start HttpControlServer
|
||||
-> wait for Enter
|
||||
```
|
||||
|
||||
Shutdown:
|
||||
|
||||
```text
|
||||
stop TelemetryPrinter
|
||||
stop HttpControlServer
|
||||
stop TelemetryHealthMonitor
|
||||
stop DeckLinkOutputThread
|
||||
DeckLinkOutput stop playback
|
||||
stop RenderThread
|
||||
|
||||
@@ -26,6 +26,7 @@ Not allowed on the render thread:
|
||||
- network/API/OSC handling
|
||||
- DeckLink scheduling
|
||||
- blocking console logging
|
||||
- config file discovery or parsing
|
||||
|
||||
If future GL preparation needs to happen off-thread, use an explicit shared-context GL prepare thread. Do not smuggle non-render work back into the cadence loop.
|
||||
|
||||
@@ -127,6 +128,10 @@ Preferred boundaries:
|
||||
- system-memory frame exchange
|
||||
- DeckLink output scheduling
|
||||
- telemetry
|
||||
- local control/API edge
|
||||
- config loading
|
||||
- JSON presentation/serialization
|
||||
- logging
|
||||
|
||||
If a file starts coordinating multiple subsystems and doing detailed work for each of them, split it before it becomes the new old app.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user