fix(decklink): cast videoFrame to base type for GetBytes, re-enable build
This commit is contained in:
parent
522faacdcc
commit
ccaef50c09
2 changed files with 22 additions and 21 deletions
|
|
@ -29,23 +29,21 @@ RUN rm -rf /fc-src/build && cmake -S /fc-src -B /fc-src/build \
|
||||||
&& cmake --build /fc-src/build --target fc_pipe -j$(nproc)
|
&& cmake --build /fc-src/build --target fc_pipe -j$(nproc)
|
||||||
|
|
||||||
# ── Stage 1c: Build decklink-bridge binary ───────────────────────────────
|
# ── Stage 1c: Build decklink-bridge binary ───────────────────────────────
|
||||||
# DISABLED for now
|
FROM debian:bookworm AS decklink-bridge-builder
|
||||||
#
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
# FROM debian:bookworm AS decklink-bridge-builder
|
build-essential cmake ca-certificates g++ \
|
||||||
# RUN apt-get update && apt-get install -y --no-install-recommends \
|
&& rm -rf /var/lib/apt/lists/*
|
||||||
# build-essential cmake ca-certificates g++ \
|
# DeckLink SDK headers (for IDeckLinkInput etc.)
|
||||||
# && rm -rf /var/lib/apt/lists/*
|
COPY services/capture/sdk/ /decklink-sdk/
|
||||||
# # DeckLink SDK headers (for IDeckLinkInput etc.)
|
# Shared fc_writer module from deltacast-bridge
|
||||||
# COPY services/capture/sdk/ /decklink-sdk/
|
COPY services/capture/deltacast-bridge/ /fc_writer/
|
||||||
# # Shared fc_writer module from deltacast-bridge
|
# decklink-bridge source
|
||||||
# COPY services/capture/deltacast-bridge/ /fc_writer/
|
COPY services/capture/decklink-bridge/ /decklink-bridge/
|
||||||
# # decklink-bridge source
|
RUN rm -rf /decklink-bridge/build && cmake -S /decklink-bridge -B /decklink-bridge/build \
|
||||||
# COPY services/capture/decklink-bridge/ /decklink-bridge/
|
-DCMAKE_BUILD_TYPE=Release \
|
||||||
# RUN rm -rf /decklink-bridge/build && cmake -S /decklink-bridge -B /decklink-bridge/build \
|
-DDECKLINK_SDK_DIR=/decklink-sdk \
|
||||||
# -DCMAKE_BUILD_TYPE=Release \
|
-DDELTACAST_BRIDGE_DIR=/fc_writer \
|
||||||
# -DDECKLINK_SDK_DIR=/decklink-sdk \
|
&& cmake --build /decklink-bridge/build -j$(nproc)
|
||||||
# -DDELTACAST_BRIDGE_DIR=/fc_writer \
|
|
||||||
# && cmake --build /decklink-bridge/build -j$(nproc)
|
|
||||||
|
|
||||||
# ── Stage 2: Build FFmpeg with DeckLink + NVENC (HEVC/H264) support ─────────
|
# ── Stage 2: Build FFmpeg with DeckLink + NVENC (HEVC/H264) support ─────────
|
||||||
# All-Intra HEVC NVENC is the master codec for growing-file ingest (see
|
# All-Intra HEVC NVENC is the master codec for growing-file ingest (see
|
||||||
|
|
|
||||||
|
|
@ -268,13 +268,16 @@ public:
|
||||||
|
|
||||||
/* ── Write video frame ──────────────────────────────────────── */
|
/* ── Write video frame ──────────────────────────────────────── */
|
||||||
void *bytes = nullptr;
|
void *bytes = nullptr;
|
||||||
videoFrame->GetBytes(&bytes);
|
/* Some SDK versions require casting to the base IDeckLinkVideoFrame
|
||||||
|
* to access GetBytes() from an IDeckLinkVideoInputFrame. */
|
||||||
|
IDeckLinkVideoFrame *baseFrame = static_cast<IDeckLinkVideoFrame *>(videoFrame);
|
||||||
|
baseFrame->GetBytes(&bytes);
|
||||||
uint32_t sz = (uint32_t)(videoFrame->GetRowBytes() * videoFrame->GetHeight());
|
uint32_t sz = (uint32_t)(videoFrame->GetRowBytes() * videoFrame->GetHeight());
|
||||||
|
|
||||||
uint32_t expected = (uint32_t)m_ds->width * (uint32_t)m_ds->height * 2;
|
uint32_t frame_bytes_expected = (uint32_t)m_ds->width * (uint32_t)m_ds->height * 2;
|
||||||
if (sz != expected) {
|
if (sz != frame_bytes_expected) {
|
||||||
fprintf(stderr, "[decklink:%d] WARN: frame sz=%u != expected %u — skipping\n",
|
fprintf(stderr, "[decklink:%d] WARN: frame sz=%u != expected %u — skipping\n",
|
||||||
m_ds->device_idx, sz, expected);
|
m_ds->device_idx, sz, frame_bytes_expected);
|
||||||
return S_OK;
|
return S_OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue