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)
|
||||
|
||||
# ── 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 \
|
||||
# build-essential cmake ca-certificates g++ \
|
||||
# && rm -rf /var/lib/apt/lists/*
|
||||
# # DeckLink SDK headers (for IDeckLinkInput etc.)
|
||||
# COPY services/capture/sdk/ /decklink-sdk/
|
||||
# # Shared fc_writer module from deltacast-bridge
|
||||
# COPY services/capture/deltacast-bridge/ /fc_writer/
|
||||
# # decklink-bridge source
|
||||
# COPY services/capture/decklink-bridge/ /decklink-bridge/
|
||||
# RUN rm -rf /decklink-bridge/build && cmake -S /decklink-bridge -B /decklink-bridge/build \
|
||||
# -DCMAKE_BUILD_TYPE=Release \
|
||||
# -DDECKLINK_SDK_DIR=/decklink-sdk \
|
||||
# -DDELTACAST_BRIDGE_DIR=/fc_writer \
|
||||
# && cmake --build /decklink-bridge/build -j$(nproc)
|
||||
FROM debian:bookworm AS decklink-bridge-builder
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential cmake ca-certificates g++ \
|
||||
&& rm -rf /var/lib/apt/lists/*
|
||||
# DeckLink SDK headers (for IDeckLinkInput etc.)
|
||||
COPY services/capture/sdk/ /decklink-sdk/
|
||||
# Shared fc_writer module from deltacast-bridge
|
||||
COPY services/capture/deltacast-bridge/ /fc_writer/
|
||||
# decklink-bridge source
|
||||
COPY services/capture/decklink-bridge/ /decklink-bridge/
|
||||
RUN rm -rf /decklink-bridge/build && cmake -S /decklink-bridge -B /decklink-bridge/build \
|
||||
-DCMAKE_BUILD_TYPE=Release \
|
||||
-DDECKLINK_SDK_DIR=/decklink-sdk \
|
||||
-DDELTACAST_BRIDGE_DIR=/fc_writer \
|
||||
&& cmake --build /decklink-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
|
||||
|
|
|
|||
|
|
@ -268,13 +268,16 @@ public:
|
|||
|
||||
/* ── Write video frame ──────────────────────────────────────── */
|
||||
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 expected = (uint32_t)m_ds->width * (uint32_t)m_ds->height * 2;
|
||||
if (sz != expected) {
|
||||
uint32_t frame_bytes_expected = (uint32_t)m_ds->width * (uint32_t)m_ds->height * 2;
|
||||
if (sz != frame_bytes_expected) {
|
||||
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;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue