Developer Information
Developer Information
Blackmagic Video Device Embedded Control Protocol
Version 1.0
If you are a software developer you can use the Video Device Embedded Control Protocol to
construct devices that integrate with our products. Here at Blackmagic Design our approach is
to open up our protocols and we eagerly look forward to seeing what you come up with!
Overview
The Video Device Embedded Control Protocol is used by ATEM switchers to provide
CameraControl functionality with supported Blackmagic Design cameras. Please refer to the
‘ATEMSoftware Control’ chapter, ‘camera control’ section of this manual, or the ATEM Switchers
SDKmanual for more information. The ATEM Switchers SDK manual can be downloaded at
www.blackmagicdesign.com/support.
This document describes an extensible protocol for sending a uni-directional stream of small
control messages embedded in the non-active picture region of a digital video stream.
Thevideo stream containing the protocol stream may be broadcast to a number of devices.
Device addressing is used to allow the sender to specify which device each message is
directed to.
Assumptions
Alignment and padding constraints are explicitly described in the protocol document. Bit fields
are packed from LSB first. Message groups, individual messages and command headers are
defined as, and can be assumed to be, 32 bit aligned.
Blanking Encoding
A message group is encoded into a SMPTE 291M packet with DID/SDID x51/x53 in the active
region of VANC line 16.
Message Grouping
Up to 32 messages may be concatenated and transmitted in one blanking packet up to a
maximum of 255 bytes payload. Under most circumstances, this should allow all messages to
be sent with a maximum of one frame latency.
If the transmitting device queues more bytes of message packets than can be sent in a single
frame, it should use heuristics to determine which packets to prioritise and send immediately.
Lower priority messages can be delayed to later frames, or dropped entirely as appropriate.
Abstract Message Packet Format
Every message packet consists of a three byte header followed by an optional variable length
data block. The maximum packet size is 64 bytes.
Destination device (uint8) Device addresses are represented as an 8 bit unsigned integer.
Individual devices are numbered 0 through 254 with the value 255
reserved to indicate a broadcast message to all devices.
Command length (uint8) The command length is an 8 bit unsigned integer which specifies the
length of the included command data. The length does NOT include the
length of the header or any trailing padding bytes.
215