Developer Information
Blackmagic SDI Camera Control Protocol
Version 1.2
If you are a software developer you can use the SDI Camera 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 Blackmagic SDI Camera Control Protocol is used by ATEM switchers, Blackmagic 3G-SDI
Arduino Shield and Blackmagic Camera Remote to provide Camera Control functionality with
supported Blackmagic Design cameras. Please refer to the ‘Understanding Studio Camera
Control’ chapter section of this manual, or the ATEM Switchers Manual and SDK manual for
more information. These 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. The
video 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 prioritize 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.
220
220
Developer Information