Blackmagic Decklink GraphicsOutput?

Hi! I am thinking on implementing SDI video output to my software with hardware like the Decklink Mini Monitor which is about $150 USD.

The SDK is pretty straight forward but they don’t have a python binding for output. I was thinking on building a binding but maybe is a good idea to integrate directly to Panda3d code?

Does it make sense? Is the GraphicsOutput a good area to introduce the:

deckLinkOutput->DisplayVideoFrameSync(playbackFrame);

from the decklink API?

Any thoughts would be appreciated.

Thanks all!

Charlie

Hi, first what OS you want to run on ?

Then i think all depends on framerate / framesize you need to reach and who’s doing the color conversions

i would first try to find the fastest method to copy a single targa ( for making a simple offline test from python) to the video display card with C.

Then head on Panda3D discord ( best on week ends ) with arms full of API documentation and a stock of patience.

That’s probably the right place to do it, but it’s hard to be sure without knowing more details. Are there usage examples for their API you can share?

Thanks so much for the prompt answer. This is the example from their API that is most straightforward and clear to apply. I already build it and adapted to my type of data. Pretty straight forward.

The full API is here:

After seeing how easy is to implement it, and how easy is to write a binding function with Python, I believe I will keep the control of the output card in the main Qt application. As I am already getting a buffer for the Qwidget I am using. That way I just recycle that frame/date and ship it to the C++ API for color conversion (and scaling if necesary).

I thought it would be good to have it in the engine as most of the engines have that kind of output for virtual production (through the Deckling card), but other side of me feels very happy leaving Panda as the frame generation and handle input and output from the main app.

Hope it makes sense!

My application is runing in MacOS, Windows and Ubuntu.

The offline test work great both in Python and directly in the API, so good that I believe I will keep it outside of Panda :slight_smile:
Thanks so much!

I found an OpenGL example… but they use glReadPixels to copy the data to RAM, so to do that in Panda you could also just use an offscreen window type with a copy-RAM texture attached to to base.win with addRenderTexture, and then use that texture data to copy to the DeckLink.

I’m not sure how that method differs from using DisplayVideoFrameSync.

Very interesting. I will definetly have a look. Thanks for sharing and looking for it!

Charlie