Feature: source-backend abstraction for capture (Deltacast / AJA) #168

Open
opened 2026-05-29 14:11:52 -04:00 by zgaetano · 0 comments
Owner

Context

Capture input is currently hard-wired to -f decklink. The roadmap (design doc §6) calls for Deltacast (VideoMaster) and AJA (libajantv2) SDI cards, neither of which has an upstream ffmpeg demuxer.

Proposal

Introduce a source-backend abstraction in capture-manager before that hardware lands:

  • Each backend returns { inputArgs, deviceDiscovery }; everything downstream (the HEVC-I NVENC encode + HLS stage) is shared.
  • blackmagic: -f decklink (current).
  • deltacast: shell VideoMaster SDK grabber → rawvideo into ffmpeg stdin.
  • aja: ntv2 capture tool → rawvideo into ffmpeg stdin.
  • node-agent already binds per-sourceType /dev nodes (decklink/deltacast); extend for AJA.

Why

Refactor now, while there's exactly one backend, so adding vendors is additive instead of a rewrite. Keeps the GPU encode path identical across all capture hardware.

## Context Capture input is currently hard-wired to `-f decklink`. The roadmap (design doc §6) calls for Deltacast (VideoMaster) and AJA (libajantv2) SDI cards, neither of which has an upstream ffmpeg demuxer. ## Proposal Introduce a **source-backend abstraction** in capture-manager before that hardware lands: - Each backend returns `{ inputArgs, deviceDiscovery }`; everything downstream (the HEVC-I NVENC encode + HLS stage) is shared. - `blackmagic`: `-f decklink` (current). - `deltacast`: shell VideoMaster SDK grabber → rawvideo into ffmpeg stdin. - `aja`: ntv2 capture tool → rawvideo into ffmpeg stdin. - node-agent already binds per-`sourceType` /dev nodes (decklink/deltacast); extend for AJA. ## Why Refactor now, while there's exactly one backend, so adding vendors is additive instead of a rewrite. Keeps the GPU encode path identical across all capture hardware.
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: WildDragonLLC/dragonflight#168
No description provided.