2.4.13 Synchronized Capture/Playback¶
Multiple DeckLink devices or sub-devices can be grouped to synchronously start and stop capture or playback.
2.4.13.1 Synchronized Capture¶
All sources providing the signal to the capture devices must have their clocks synchronized. This can be achieved by providing the sources with a common reference input. However it is not required that the reference input is proved to the DeckLink capture devices. All sources should be configured with the same frame rate.
An application performing synchronized capture should perform the following steps:
For each device to synchronize for capture:
Call
IDeckLinkProfileAttributes::GetFlag()with theBMDDeckLinkSupportsSynchronizeToCaptureGroupflag to check that the DeckLink hardware supports grouping for synchronized capture.Call
IDeckLinkConfiguration::SetInt()with thebmdDeckLinkConfigCaptureGroupconfiguration ID, along with a common integer value for the capture group. This setting is persistent until system reboot.Obtain an
IDeckLinkInputinterface object by callingIUnknown::QueryInterface()on theIDeckLinkobject with IID_IDeckLinkInput.Enable each input in the capture group by calling
IDeckLinkInput::EnableVideoInput(), with thebmdVideoInputSynchronizeToCaptureGroupflag.Call
IDeckLinkStatus::GetFlag()with thebmdDeckLinkStatusVideoInputSignalLockedstatus ID to ensure that the input is locked.To start the synchronized capture call
IDeckLinkInput::StartStreams()on any input device in the group.To stop synchronized capture, call
IDeckLinkInput::StopStreams()on any input device in the group.
2.4.13.2 Synchronized Playback¶
Each output device in the synchronized playback group requires a common reference. The exception is the DeckLink 8K Pro, where all sub-devices can synchronize to each other without needing a common reference input. All output devices should be configured with the same frame rate.
An application performing synchronized playback should perform the following steps
For each device to synchronize for playback:
Call
IDeckLinkProfileAttributes::GetFlag()with theBMDDeckLinkSupportsSynchronizeToPlaybackGroupflag to check that the DeckLink hardware supports grouping for synchronized playback.Call
IDeckLinkConfiguration::SetInt()with thebmdDeckLinkConfigPlaybackGroupconfiguration ID, along with a common integer value for the playback group. This setting is persistent until system reboot.Obtain an
IDeckLinkOutputinterface object by callingIUnknown::QueryInterface()on theIDeckLinkobject with IID_IDeckLinkOutput.IDeckLinkOutput::DoesSupportVideoMode()to check if the combination of the video mode and pixel format is supported.Enable each output in the playback group by calling
IDeckLinkOutput::EnableVideoOutput(), with thebmdVideoOutputSynchronizeToPlaybackGroupflag.If a common reference is required, for each output in the playback group, call
IDeckLinkStatus::GetFlag()with thebmdDeckLinkStatusReferenceSignalLockedstatus ID to ensure that the output is locked to the reference input.To start the synchronized playback call
IDeckLinkOutput::StartScheduledPlayback()on any output in the group.To stop synchronized playback, call
IDeckLinkOutput::StopScheduledPlayback()on any output in the group.