Meta-Data SDI Signal

Hi @ all,

i have a short question, i am reading in a video feed through HD-SDI, does anyone know a way of reading the meta-data from the incoming file in realtime? There are some interesting meta-tags like apperature or zoom, which i want to feed to my application as well.

thank you very much!!

Hey, I am also interested in this. I think we are talking about the same thing anyway, the ancillary data. This can contain a lot of information, depending on what gear it has passed through. Some ccu units send the aperture and zoom through SDI. This is what I am interested in, extracting and injecting these signals.

After some investigation I found the blackmagic decklink cards have this possibility and there is an ofxBlackmagic addon that is based on the SDK.

I have modified the update method to this

bool ofxBlackMagic::update() {
if(controller.buffer.swapFront()) {
	grayPixOld = true, colorPixOld = true;
	yuvTexOld = true, grayTexOld = true, colorTexOld = true;
      IDeckLinkVideoInputFrame *nFrame;
      IDeckLinkAudioInputPacket *aFrame;
      controller.VideoInputFrameArrived(nFrame,  aFrame);
      IDeckLinkVideoFrameAncillary *ancFromFrame;
      void *ancDataBuffer;
      ancFromFrame->GetBufferForVerticalBlankingLine(12, &ancDataBuffer);

} else {
	return false;


But I have a few problems, first, I have no idea about objective c, I was just guessing.

The second is a more specific question, I don’t understand how to deal with the void type to get the ancillary data out of the frame. I can make a void object and fill it with the data from a specific line in the frame but then…

Last, I dont really have anything at the moment that outputs this kind of data. I am trying to get it worked out for an upcoming project but I dont have the hardware yet.

Or maybe you came up with another solution altogether.

Hope it is not too old to post on.


Hi Fred,

I am looking to do a similar thing (get the zoom/aperture from an SDI feed) and I think that I have been trying similar things to you with no luck so far. Have you managed to figure it out? I read in the Decklink SDK that 10-bit images may be a requirement for this to work, so far I have only worked with 8-bit images. What sort of images have you been working with?

Here’s the section of the documentation that made me think that 10-bit images may be required:

“IDeckLinkVideoFrameAncillary Interface
The IDeckLinkVideoFrameAncillary object interface represents the ancillary data associated
with a video frame. CEA-708 closed-captions are encoded with data bits in the 2 leastsignficant-bits
of each 10 bit pixel component. These bits are not preserved when capturing
in an 8 bit pixel format. To capture or output CEA-708 captions, a 10 bit pixel format such as
bmdFormat10BitYUV must be used.”



I did not get to it, as before I still did not get a device that could send the embedded data to test.

In the ofxBlackmagic addon inside DecklinkCOntroller.cpp there is this line

	// Set the video input mode
if (deckLinkInput->EnableVideoInput(videoMode, bmdFormat8BitYUV, videoInputFlags) != S_OK) {
	ofLogError("DeckLinkController") << "This application was unable to select the chosen video mode. Perhaps, the selected device is currently in-use.";
	return false;

You can change this bmdFormat8BitYUV to bmdFormat10BitYUV

I am not sure if you need to then adjust the color conversion method.