From de6e44b9910d2566d2e39b3a12e218dcc23a7ffa Mon Sep 17 00:00:00 2001 From: zgaetano Date: Mon, 1 Jun 2026 07:52:03 -0400 Subject: [PATCH] build(capture): add Deltacast SDK extraction and bridge build stages to Dockerfile Co-Authored-By: Claude Sonnet 4.6 --- services/capture/Dockerfile | 30 +++++++++++++++++++++++++++++- 1 file changed, 29 insertions(+), 1 deletion(-) diff --git a/services/capture/Dockerfile b/services/capture/Dockerfile index 1f94e4e..399ff14 100644 --- a/services/capture/Dockerfile +++ b/services/capture/Dockerfile @@ -1,4 +1,21 @@ -# ── Stage 1: Build FFmpeg with DeckLink + NVENC (HEVC/H264) support ───────── +# ── Stage 0: Extract Deltacast VideoMaster SDK ─────────────────────────── +FROM debian:bookworm AS sdk-extractor +COPY videomaster-linux.x64-6.34.1-dev.tar.gz /tmp/ +RUN mkdir -p /sdk && tar -xzf /tmp/videomaster-linux.x64-6.34.1-dev.tar.gz -C /sdk + +# ── Stage 1: Build deltacast-capture bridge binary ─────────────────────── +FROM debian:bookworm AS bridge-builder +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential cmake ca-certificates \ + && rm -rf /var/lib/apt/lists/* +COPY --from=sdk-extractor /sdk /sdk +COPY deltacast-bridge/ /bridge/ +RUN cmake -S /bridge -B /bridge/build \ + -DCMAKE_BUILD_TYPE=Release \ + -DSDK_ROOT=/sdk \ + && cmake --build /bridge/build -j$(nproc) + +# ── Stage 2: Build FFmpeg with DeckLink + NVENC (HEVC/H264) support ───────── # All-Intra HEVC NVENC is the master codec for growing-file ingest (see # docs/design/2026-05-29-all-intra-hevc-ingest.md). This stage gets the # nv-codec-headers (header-only, no driver / no full CUDA toolkit needed) @@ -83,6 +100,17 @@ COPY lib/libDeckLinkAPI.so /usr/lib/libDeckLinkAPI.so COPY lib/libDeckLinkPreviewAPI.so /usr/lib/libDeckLinkPreviewAPI.so RUN ldconfig +# Deltacast bridge binary + SDK runtime libs +COPY --from=bridge-builder /bridge/build/deltacast-capture /usr/local/bin/deltacast-capture +COPY --from=sdk-extractor /sdk/lib/libvideomasterhd.so.6.34.1 /usr/local/lib/deltacast/ +COPY --from=sdk-extractor /sdk/lib/libvideomasterhd_audio.so.6.34.1 /usr/local/lib/deltacast/ +RUN ln -sf libvideomasterhd.so.6.34.1 /usr/local/lib/deltacast/libvideomasterhd.so.6 \ + && ln -sf libvideomasterhd.so.6.34.1 /usr/local/lib/deltacast/libvideomasterhd.so \ + && ln -sf libvideomasterhd_audio.so.6.34.1 /usr/local/lib/deltacast/libvideomasterhd_audio.so.6 \ + && ln -sf libvideomasterhd_audio.so.6.34.1 /usr/local/lib/deltacast/libvideomasterhd_audio.so \ + && ldconfig /usr/local/lib/deltacast \ + && ldconfig + # Mount points the recorder lifecycle expects to exist. # /live — HLS preview output (bound from host LIVE_DIR by node-agent) # /growing — growing-file master output (bound from host /mnt/NVME/MAM/growing)