Blackmagic Decklink Target v4

Blackmagic Decklink Target v4 properties for Script Engine. Sends the composited scene's video and audio to a Blackmagic Decklink card for SDI / HDMI output to broadcast switchers, monitors, recorders, and other professional video equipment. Supports either stereo (2-channel) or multi-channel (8-channel) embedded audio output, useful for multi-language broadcasts, surround sound, and split-feed productions. Lets you pick which Decklink device and output channel to use, the display mode (resolution and frame rate) advertised on the cable, and the number of audio channels to send. Surfaces playback controls, the live device name, and a set of runtime statistics for diagnostics. Embeds a running RP188 LTC timecode (HH:MM:SS:FF) on the output, starting either at 00:00:00:00 or the wall-clock time of day (configurable) when playback starts, and drop-frame aware for 29.97 / 59.94.

Property Type Access Description
AutoStart bool get/set Whether the target starts automatically as soon as the project loads. [default=false]. When true, the target invokes its start logic immediately on load (equivalent to running StartCommand). Make sure DecklinkOutputChannel and DisplayMode are configured first — otherwise startup will fail and the target will sit idle.
DecklinkOutputChannel DecklinkCaptureChannel get/set Which physical Decklink output port to send video and audio to. Selects one of the available Decklink output channels detected on the system. A card may expose multiple channels (e.g. SDI 1, SDI 2, HDMI), and only one target instance can drive each channel at a time. Must be set before StartCommand will run; clearing this disables playback. Locked while playback is starting or running — stop the target before changing it.
DisplayMode StringCollectionEnum get/set Resolution and frame rate the target negotiates with the Decklink card. Selects the display mode advertised over SDI/HDMI — for example 1080p50, 1080i59.94, or 2160p30. The list contains only the modes that match both the selected DecklinkOutputChannel's capabilities and the current project frame rate. After changing the project frame rate (in Performance and project options), re-lock the frame rate to refresh this dropdown — until the lock is re-engaged it still shows the modes for the previous frame rate. Pick a mode that matches the downstream equipment (switcher, monitor, recorder) to avoid frame-rate conversion or "no signal" errors. Locked while playback is starting or running.
AudioChannels AudioNumberOfChannels get/set Number of audio channels to embed alongside the video signal. [default=Two]. Two (stereo) is the standard choice for most workflows. Eight enables 8-channel embedded audio output, used for multi-language broadcasts (each language pair on its own channel pair), surround sound, or split-feed productions. The selected value must be supported by the chosen output channel and respected by downstream equipment. Locked while playback is starting or running.
PlaybackMethod DecklinkPlaybackMethod get/set How each frame's picture and sound are handed to the card. [default=Synchronous]. Synchronous sends each frame the moment it is rendered, for the lowest delay. When the project runs on the system clock, the computer's clock and the card's never run at exactly the same rate, and over time the sound can drift behind or ahead of the picture. Scheduled hands picture and sound to the card together, ScheduledBufferFrames ahead, and plays them from the card's own clock so the sound does not drift against the picture. It adds about that many frames of delay, and absorbs the difference between the two clocks by now and then skipping or repeating a whole frame, picture and sound together. Locked while playback is starting or running.
ScheduledBufferFrames int get/set How many frames ahead of the card a Scheduled output keeps its picture and sound. [min=2, max=8, default=3]. This is the delay Scheduled playback adds: at 25 fps, 3 frames is 120 ms. Fewer frames means less delay but less room to ride out a moment when rendering falls behind; when it does, the output skips ahead to catch up rather than drifting. Has no effect when PlaybackMethod is Synchronous. Locked while playback is starting or running.
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 DecklinkOutputChannel (for example "DeckLink 8K Pro (1)"). Useful from scripts to confirm the right card was picked when more than one Decklink device is installed, or to surface the device label in a status overlay.
TimecodeStartTime TimecodeStartMode get/set Where the embedded RP188 LTC output timecode starts counting from. [default=00:00:00:00]. 00:00:00:00 resets the timecode to zero each time playback starts and counts up by frame. Time of day latches the wall-clock time of day when playback starts and then counts up by frame from there (genlocked to the output, not re-read each frame). Drop-frame is applied automatically for 29.97 / 59.94. How closely Time of day then keeps up with the clock depends on the display mode's frame rate: at 24 / 25 / 30 / 50 / 60 it is exact; at 29.97 / 59.94 it is correct to within about 70 ms, because drop-frame counting corrects in two-frame steps once a minute; at 23.98 it cannot track the clock at all and runs about 0.1% slow (roughly 43 seconds behind by midday, 86 seconds by the end of the day), because timecode labels 24 frames per second of 23.98 material and SMPTE defines no drop-frame scheme for that rate. At 23.98 the value is a running counter, not a clock reading. Locked while playback is starting or running.
PlaybackState PlaybackState get Current playback state of the target (read-only). Reflects whether the target is Stopped, Starting, Running, Stopping, or Restarting. Driven indirectly by StartCommand / StopCommand, by AutoStart at load time, and by internal restart logic on configuration changes. Scripts should read this to decide whether the SDI/HDMI signal is live; the value also drives the running indicator and the enabled state of the Start/Stop buttons.
StartCommand Command get Begin sending video and audio to the selected Decklink output. Invokable command. Opens the chosen DecklinkOutputChannel at the configured DisplayMode and AudioChannels, locks those settings, and starts streaming the scene to the card. Disabled until a valid output channel is selected. No-op if the target is already starting or running.
StopCommand Command get Stop sending video and audio to the Decklink output. Invokable command. Tears down the active output, releases the Decklink channel back to the system, and unlocks DecklinkOutputChannel, DisplayMode, and AudioChannels so they can be reconfigured. No-op if the target is already stopped.
OutputTimeCode TimeCode get RP188 LTC timecode currently embedded on the Decklink output (read-only). Starts from the configured TimecodeStartTime (00:00:00:00 or time of day) when playback starts and advances at the negotiated display mode's frame rate. Auto-detects drop-frame for 29.97 / 59.94 and uses non-drop for 24 / 25 / 30 / 50 / 60. Useful for slating recordings or driving downstream automation that expects RP188.
ComponentLog ComponentLog get Per-component log buffer — recent info/warning/error messages emitted by the target (start, stop, configuration changes, playback errors).
VideoWidth int get Width of the video signal currently sent to the Decklink output, in pixels (read-only). Reflects the resolution implied by the negotiated DisplayMode (e.g. 1920 for 1080p, 3840 for 2160p). 0 while playback is stopped. Useful from scripts to confirm the card opened at the expected resolution before driving downstream behaviour.
VideoHeight int get Height of the video signal currently sent to the Decklink output, in pixels (read-only). Reflects the vertical resolution implied by the negotiated DisplayMode (e.g. 1080 for 1080p, 2160 for 2160p). 0 while playback is stopped.
CopyPerformanceTime string get Time spent copying each frame to the Decklink card, formatted as a millisecond string (read-only, debug). Diagnostic timing of the per-frame copy step. Should stay well below the frame interval (e.g. <20 ms at 50 fps) for the target to keep up. Persistent spikes indicate the system bus or driver is under pressure.
KernelPerformanceTime string get Time spent converting each frame to the Decklink output format, formatted as a millisecond string (read-only, debug). Diagnostic timing of the per-frame colour-space / pixel-format conversion step that prepares each frame for the card. Sits alongside CopyPerformanceTime to characterise the total per-frame work performed by the target.
FramesDisplayed int get Total number of frames the target has sent to the Decklink output (read-only, debug). Increments each time a frame is successfully scheduled on the card. Combined with the expected frame rate, this is the easiest way to detect whether playback is actually running — a counter that stops moving while PlaybackState is Running is a clear sign of a stall.
AudioVideoQueueSize int get Number of frames currently waiting to be sent to the Decklink card (read-only, debug). Depth of the internal video/audio queue feeding the output worker. Should sit close to zero on a healthy system — a growing queue means the card is consuming frames more slowly than the scene is producing them, which will eventually cause dropped frames or visible stalls.
WorkerTimeDelta string get Time between successive output worker iterations, formatted as a millisecond string (read-only, debug). Reports how regularly the output worker is producing frames. Should hover near the expected frame interval (e.g. ~20 ms at 50 fps, ~16.7 ms at 60 fps). Spikes or drift indicate the scene is producing frames irregularly or the worker is being starved.
SynchronousPlayoutTime string get Time spent in the synchronous Decklink playout call per frame, formatted as a millisecond string (read-only, debug). Measures the wall-clock time the target waits for the Decklink driver to accept each frame. A persistently high value indicates the card is back-pressuring the pipeline (slow consumer) and is the most direct signal that the chosen DisplayMode is too demanding for the installed hardware.
ScheduledFramesAhead string get How far ahead of the card's playback a Scheduled output currently is, in frames (read-only, debug). Sits close to ScheduledBufferFrames on a healthy system. Empty with Synchronous playback.
ScheduledFramesSkipped int get Frames a Scheduled output has skipped, picture and sound together, because rendering ran ahead of the card's clock (read-only, debug).
ScheduledFramesRepeated int get Frames a Scheduled output has repeated, picture and sound together, because rendering fell behind the card's clock (read-only, debug).
ScheduledCatchUps int get Times a Scheduled output fell so far behind that it skipped ahead to catch up with the card (read-only, debug). Each one is a short stall in rendering longer than the scheduled buffer could cover.
ScheduledFramesLateOrDropped int get Frames the card reported as shown late or dropped with Scheduled playback (read-only, debug).
ScheduledAudioSamplesDropped int get Samples of sound a Scheduled output could not get the card to take in time (read-only, debug). Each is a moment of silence; the sound after it stays on its picture. Zero on a healthy system.
ScheduledCompletionsUnmatched int get Completions the card reported with Scheduled playback for a frame this output was not tracking, or from an earlier run (read-only, debug). They are ignored, so no picture buffer still on the card is reused. Zero on a healthy system.

Inherits from: AbstractTarget, NamedModel.

See also: Blackmagic Decklink Target v4 in Targets — user-facing introduction, screenshots, and section summaries.