BlackMagic DeckLink Capture v3

BlackMagic DeckLink Capture v3 input properties for Script Engine. Captures live video and audio from a Blackmagic DeckLink card connected over SDI or HDMI — cameras, switchers, players, or any other source the card can receive. Supports either stereo (2-channel) or multi-channel (8-channel) audio capture, useful for multi-language programmes, surround sound, and split-feed workflows. Pick the desired device, channel, and audio channel count, and the input feeds the source into Composer's pipeline. Includes auto-start on load, freeze-frame on pause or lost input, automatic black-video detection with a script callback, an on-board still store for reference frames or fallback graphics, and a rich set of capture statistics for diagnostics.

Property Type Access Description
ShowAdvancedOptions bool get/set Show or hide the input's advanced settings in the editor UI. [default=false].
DecklinkCaptureChannel DecklinkCaptureChannel get/set Which physical Decklink input port to capture from. Picks one of the Decklink input channels detected on the system. A card may expose multiple channels (e.g. SDI 1, SDI 2, HDMI), and only one input instance can capture from each channel at a time. Must be set before capture can start. If no Decklink card is found on startup, this is empty — make sure the BMD drivers are installed and the card is recognised by the system.
DeviceName string get Friendly name of the Decklink device currently in use (read-only). Reflects the model/identifier reported by the Decklink driver for the selected DecklinkCaptureChannel (for example "DeckLink 8K Pro (1)"). Useful from scripts to confirm the right card was picked when more than one Decklink device is installed.
AudioChannels AudioNumberOfChannels get/set Number of audio channels to capture from the source. [default=Two]. Two (stereo) is the standard choice for most workflows. Eight enables 8-channel capture, used for multi-language programmes (each language pair on its own channel pair), surround sound, or split-feed productions. The selected count must be supported by both the DeckLink card and the upstream source.
PlaybackState PlaybackState get Current playback state of the input (read-only). Reflects whether the input is Stopped, Running, Paused, or in an error state. Driven indirectly by StartCommand, StopCommand, PauseCommand, and by AutostartCapture at load time. Read this from a script to decide whether the source is live; the value also drives the running indicator and the enabled state of the capture buttons.
StartCommand Command get Start capturing from the selected Decklink input.
StopCommand Command get Stop capturing from the Decklink input.
PauseCommand Command get Pause or resume capture, freezing on the last frame while paused.
CapturedTimeCode TimeCode get Embedded timecode (RP188/VITC) read from the most recently captured frame, formatted "HH:MM:SS:FFf" (read-only). Null when the source carries no embedded timecode or no signal is present.
AutostartCapture bool get/set Whether capture starts automatically as soon as the project loads. [default=true]. When true, the input invokes its start logic immediately on load (equivalent to running StartCommand). Disable to require an explicit start, useful when the source should only come live on operator action or via a script trigger.
IsGenLockedToSyncSource bool get/set Whether the source is genlocked to a shared sync reference. [default=false]. In multi-camera productions where every camera is locked to a common sync generator (genlock), enabling this lets Composer take advantage of that shared timing for tighter inter-camera sync. Leave off when the source is free-running.
KeepLastFrameOnLostInput bool get/set Whether to keep showing the last good frame when the input signal is lost. [default=true]. When true, a dropped or disconnected source freezes the picture on the most recent frame instead of going black — useful for productions where a brief signal glitch shouldn't be visible on air. Disable to show a clear "no signal" indication instead.
FreezeFrameOnPause bool get/set Whether the picture freezes on the last frame when capture is paused. [default=true]. When true, PauseCommand holds the most recent frame on screen until capture resumes. Disable to go to black on pause instead.
DecklinkCaptureMode DecklinkCaptureMode get/set How captured frames are transferred from the card into the pipeline. [default=Optimized]. Optimized uses a zero-copy path that is lighter on memory and CPU and is the default. Classic uses a copy-based path that works reliably across every Desktop Video driver version — switch to it if the installed driver misbehaves with the zero-copy path (e.g. allocator pointer-mismatch warnings or dropped frames). Changing this takes effect on the next capture start.
UseSwrConverter bool get/set Whether to convert audio using the FFmpeg audio resampler. [default=false, debug]. Internal toggle that switches between the default audio converter and an alternative path. Leave off unless instructed otherwise during troubleshooting.
NumVideoTransferTargets int get/set Capacity of the retained capture queue and in-use frames. [min=5, max=64, default=10, debug]. Classic uses pinned host copies; Optimized retains SDK buffers from its pinned host allocator, which also reserves eight buffers of SDK headroom. This is not a count of GPU render targets.
CaptureBufferDepth DecklinkCaptureBufferDepth get/set How many captured frames to keep buffered ahead of the render loop when this input is NOT the sync source. The default (2 frames) keeps latency minimal; selecting 3 frames adds one frame of jitter tolerance, reducing frame duplication/skipping on systems where the capture timing varies (e.g. several Blackmagic inputs contending for CPU), at the cost of one extra frame of latency. Has no effect when this input is the sync source (it then renders 1:1).
ComponentLog ComponentLog get Recent log lines from the input — capture events and status messages (read-only). A short history of the most recent events, useful for diagnosing why capture failed to start, why the signal dropped, or why a black-video event fired.
BlackVideoDetectionAction BlackVideoDetectionAction get/set What to do when the captured picture is detected as black (more than 99% black pixels). Choose how Composer reacts to a fully black input — for example logging a warning, raising an error indicator, or doing nothing. Useful for catching a disconnected camera or a misrouted feed that's still sending a valid signal but no actual picture.
OnBlackVideoEventFunction string get/set Name of a Script Engine function to call when black video is detected or recovered. The function receives a single boolean argument — true when the picture has just gone black, false when a real picture has come back. Useful for triggering automatic follow-up actions (switch to a backup feed, send an alert, log the event). Leave blank to skip the callback.
BlackVideoActive bool get True while the captured picture is currently detected as black (read-only). true when more than 99% of the picture is black, false when a real picture is present. Useful from a script to react to the live state directly, in addition to or instead of OnBlackVideoEventFunction.
StillStoreMode BMDCaptureStillStoreMode get/set How the still store image is used in relation to the live capture. Choose between disabling the still store entirely, falling back to the still image only when input is lost, or always showing the still image instead of the live capture. Useful for keeping a clean reference frame on screen during cable swaps or rehearsals.
StillStoreInputSelector StringCollectionEnum get/set Picker for which Still Image input feeds the still store. Lists all Still Image inputs in the project plus a "None" option. Selecting one copies its image into the still store, where it's used according to StillStoreMode. Selecting "None" clears the still store input link.
StillStoreImageCount int get Number of snapshots currently saved in the still store on disk (read-only). Counts the saved images in the project's Snapshots folder. Increases each time StoreCommand runs.
NewestStillStoreImageString string get File name of the most recent snapshot saved to the still store (read-only).
LoadedStillStoreImageInfoString string get Information about the still store image currently loaded into memory (read-only). Typically the file name and basic dimensions. Useful for confirming which still image is actually being used right now.
StillStoreImageActive bool get True when the still store image is currently being shown instead of the live capture (read-only). Reflects the runtime effect of StillStoreMode — for example, true when the source has dropped and the still store is filling in. Useful from a script to react to fallback behaviour.
StoreCommand Command get Save the current captured frame as a snapshot in the still store. Writes the live frame to the project's Snapshots folder so it can be reused as a reference image or fallback graphic.
RefreshStillStoreInputCommand Command get Reload the still store image from the input selected in StillStoreInputSelector. Useful when the source still image has changed since it was last copied in.
Width int get Width of the video frames currently being captured, in pixels (read-only).
Height int get Height of the video frames currently being captured, in pixels (read-only).
CapturedFrames int get Total number of frames the input has captured since it was started (read-only). Should grow steadily at the source's frame rate during healthy capture. A counter that stops moving while the input is Running is a clear sign the source has gone silent or the cable has dropped.
LastFrameCaptureDateTime DateTime get Local timestamp of the most recently captured frame (read-only). Updates continuously during capture. Useful for detecting "no frames in N seconds" type stalls.
NumBlackPixels int get Number of black pixels detected in the most recently analysed frame (read-only, debug). Used internally by the black-video detection logic.
OnVideoFrameArriveCounter int get Total number of "frame arrived" events the Decklink card has fired (read-only, debug). Counts every video frame the card delivers to Composer, including frames discarded before reaching the rendered output.
PlaybackFrames int get Compatibility alias for LiveVideoRenderIterations, saturated at Int32.MaxValue. Now counts only newly selected live video; excludes still-store substitution, intentional holds and empty output, rather than counting calls that reach the end of rendering.
LastVideoFormatChange string get Description of the most recent automatic video-format change detected on the input (read-only, debug). Updated when the Decklink card detects that the source has switched resolution or frame rate. Useful for diagnosing surprise format changes mid-production.
AudioVideoQueueSize int get Compatibility alias for the current QueuedCaptureFrames value.
NumZeroDataFramesCaptured int get Number of frames the card delivered with no actual picture data (read-only, debug). A non-zero value usually indicates a problem at the source — for example a camera that dropped its signal mid-stream.
NumInputlessFramesCapturedWhileWaitingForCorrectFormat int get Number of frames received before the input had locked on to a stable video format (read-only, debug). Counts the warm-up frames before the card finalises the source format. Normal during startup; a growing count later indicates repeated format changes.
NumInputlessFramesCapturedWhileFormatDetected int get Number of empty frames received after the source format was locked in (read-only, debug). A growing value while the input is Running is a strong signal of source dropouts — the format is known but no real picture is arriving.
NumSyncEventsSkipped int get Number of frames skipped because the source frame rate didn't match the project's frame rate (read-only, debug). Composer expects the source frame rate to match the project's master frame rate; frames that don't fit are dropped. A non-zero value points to a frame-rate mismatch on the cable.
NumSampleZeroAudioFramesCaptured int get Number of audio frames received with zero samples (read-only, debug). Indicates moments where the card delivered an audio frame but it contained no samples — usually a sign of an upstream audio glitch.
NumSampleErrorCountAudioFramesCaptured int get Number of audio frames received with an unexpected sample count (read-only, debug). Indicates moments where the card delivered an audio frame whose sample count didn't match what was expected for the running frame rate.
NumAudioVideoFramesClearedOnFirstFrameRender int get Compatibility alias for startup/alignment discards; part of DiscardedVideoFrames.
CapturePerformance string get Time spent on the capture thread per frame, formatted as a millisecond string (read-only, debug). Shows how long the input takes to receive each frame from the card. Persistently high values indicate the system or driver is under pressure.
CaptureTimeDelta string get Time between successive captured frames on the capture thread, formatted as a millisecond string (read-only, debug). Should hover near the source's frame interval (e.g. ~20 ms at 50 fps). Spikes indicate the source is delivering frames irregularly.
CaptureTimeWarningThreshold int get How much capture-time variation, in milliseconds, counts as a warning. [default=2, debug]. When the actual CaptureTimeDelta differs from the expected frame interval by more than this many milliseconds, NumCaptureTimeWarnings is incremented. Read-only diagnostic.
NumCaptureTimeWarnings int get Number of capture-time deltas that exceeded CaptureTimeWarningThreshold (read-only, debug). A growing value indicates persistent capture-thread jitter.
ColorSpaceConversionPerformance string get Time spent converting captured frames to Composer's internal format, formatted as a millisecond string (read-only, debug). Should be a small fraction of the frame interval. Persistently high values indicate the conversion step is becoming a bottleneck.
NumAudioVideoFramesRepeated int get Compatibility alias for RepeatedVideoRenderIterations; intentional holds and empty output are excluded.
NumAudioVideoFramesFlushed int get Compatibility alias for DiscardedVideoFrames, saturated at Int32.MaxValue. Counts pictures, not flush operations.
TimeSinceStart string get Time elapsed since capture was last started, formatted "HH:MM:SS" (read-only, debug). Hours accumulate beyond 24 for long-running captures (e.g. "50:12:30"). Resets each time the input is started.
DuplicatedOrSkippedFramesPercent string get Legacy ratio retained for script compatibility. It combines different populations and may exceed 100 percent; use the separate discard and render-outcome counters instead.
FirstCorrectFrameArrived bool get True once the first valid captured frame has been rendered after starting (read-only, debug). Useful to gate behaviour that should only fire after the input has actually started producing real output.
Temperature int get Reported operating temperature of the Decklink card, in degrees Celsius (read-only, debug). Useful for monitoring long-running productions where thermal pressure can cause instability.
PciLinkWidth int get PCI Express link width the Decklink card is currently negotiated at (read-only, debug). Reflects the number of PCIe lanes in use (e.g. x4, x8, x16). A lower value than the card's maximum can indicate it's running below its rated bandwidth.
PciLinkSpeed int get PCI Express link speed the Decklink card is currently negotiated at (read-only, debug). Reflects the PCIe generation in use (1, 2, 3, 4). A lower value than the card's maximum can indicate motherboard or slot limitations.
DiscardedVideoFrames long get Actual captured pictures rejected or released without being selected as live video, since capture started. Includes startup, stop and intentional still-store discards.
RepeatedVideoRenderIterations long get Input render calls retaining an existing image without new live video, excluding intentional holds and calls with no image.
HeldVideoRenderIterations long get Input render calls using still-store or intentionally holding video while paused or rendering is disabled.
LiveVideoRenderIterations long get Input render calls that selected a newly captured live video image. Excludes still-store output.
VideoRenderIterations long get Calls to this input's rendering method, including every early return. Excludes worker iterations that never render inputs.
EmptyVideoRenderIterations long get Input render calls that finish without a video image; these are not repeated frames.
AdmittedVideoFrames long get Pictures successfully retained for playback. At rest, equals published pictures plus discarded retained pictures plus retained ownership.
RejectedVideoFrames long get Valid SDK pictures refused before gaining a retained lease; included in DiscardedVideoFrames.
PublishedVideoFrames long get Retired capture leases whose video was selected for live input output. Does not measure target presentation.
DiscardedVideoFramesByReason string get Breakdown of the discarded-video total. Recovery includes ordered-group capacity evictions and resets; ordinary capacity, startup and stop are separate reasons.

Inherits from: AbstractInput, AbstractAudioProcessing, AbstractAudioMetering, NamedModel.

See also: BlackMagic DeckLink Capture v3 in Inputs — user-facing introduction, screenshots, and section summaries.