Wild Dragon Dev
|
b2c63de2fa
|
feat(framecache): phase 3 — decklink-bridge writes to shm
- services/capture/decklink-bridge/main.cpp: new C++ DeckLink bridge
- IDeckLinkInputCallback (VideoInputFrameArrived) writes UYVY422
frames to framecache slot via fc_writer_write()
- VideoInputFormatChanged reopens slot with new resolution/fps
- bmdVideoInputEnableFormatDetection: auto-detects signal format
- bmdFormat8BitYUV (UYVY422) — same pixel format as deltacast-bridge
- Audio written from callback to named FIFO (same pattern as deltacast)
- Silence thread keeps audio FIFO open between sessions
- slot_id: decklink-<NODE_ID>-<device_idx>
- Format JSON emitted on first frame (includes slot_id)
- LEGACY_FIFO compile flag mirrors deltacast-bridge
- --devices csv, --fc-url, --audio-pipe-dir, --signal-timeout args
- services/capture/decklink-bridge/CMakeLists.txt:
- Reuses fc_writer.c from deltacast-bridge (shared writer module)
- Links rt + dl + pthread; DeckLink SDK via dlopen at runtime
- LEGACY_FIFO option
- services/capture/Dockerfile:
- New decklink-bridge-builder stage (g++ + DeckLink SDK headers)
- Copies decklink-bridge binary to /usr/local/bin/decklink-bridge
- services/node-agent/index.js:
- FC_URL + FC_NODE_ID constants (from env vars, passed to all bridges)
- startDecklinkBridge(deviceIndices) / stopDecklinkBridge() functions
mirror deltacast bridge lifecycle management
- deltacast startDeltacastBridge: adds --fc-url arg + NODE_ID env
- sidecar start: injects FC_URL into all sidecar envs; sets IpcMode=host
for deltacast + blackmagic sidecars; starts decklink-bridge for sdi/
blackmagic source types; injects FC_SLOT_ID from fmt JSON
- sidecar stop: stopDecklinkBridge() when last blackmagic sidecar stops
|
2026-06-03 15:25:25 +00:00 |
|