dragonflight/services/capture
Zac Gaetano c1512e29c5 feat(capture): true growing MXF via bmx/raw2bmx (Premiere edit-while-record)
ffmpeg's mxf muxer cannot write a growing file — its header/index duration
stays N/A until the footer at close (proven: file grows on disk but readable
duration never advances), so Premiere never sees growth. Replace the growing
master muxer with bmx/raw2bmx --growing-file, the reference growing-OP1a writer.

Capture image builds bmx (bbc/bmx v1.6) from source (bmxlib-tools absent in
bookworm). Growing pipeline: one ffmpeg decodes SDI -> split into MPEG-2 422
essence + PCM (to named FIFOs) + the H.264 HLS preview; raw2bmx muxes the
growing OP1a MXF to the share, updating IndexDuration incrementally. FIFO
open-order deadlock fixed by parent-priming both FIFOs. Stop forwards SIGINT
so ffmpeg EOFs and raw2bmx finalizes the footer; stop() awaits raw2bmx exit
before the promotion worker uploads. Raster/fps -> raw2bmx essence flag via
deriveGrowingRaster (default 1080i59.94).

Proven live (zampp2): IndexDuration grows 43->223->403 frames at 3/8/15s
mid-write (ffmpeg stayed N/A); finalized file valid; HLS preview intact.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-05-31 23:23:46 -04:00
..
sdk chore(capture): commit Blackmagic DeckLink SDK 16.0 Linux headers 2026-05-31 18:07:12 -04:00
src feat(capture): true growing MXF via bmx/raw2bmx (Premiere edit-while-record) 2026-05-31 23:23:46 -04:00
build-with-decklink.sh capture: custom FFmpeg 7.1 build with DeckLink + D-Bus mounts + SDI deinterlace 2026-05-22 00:01:43 +00:00
decklink-sdk16.patch fix(capture): proper SDK 16 patch via upstream FFmpeg master diff 2026-05-22 00:53:03 +00:00
Dockerfile feat(capture): true growing MXF via bmx/raw2bmx (Premiere edit-while-record) 2026-05-31 23:23:46 -04:00
package.json add services/capture/package.json 2026-04-07 21:58:29 -04:00
patch_decklink.py fix(capture): proper SDK 16 patch via upstream FFmpeg master diff 2026-05-22 00:53:03 +00:00