issues with New SDK / Drivers behavior on some interfaces

Ask software engineering and SDK questions for developers working on Mac OS X, Windows or Linux.
  • Author
  • Message
Offline

bvergili

  • Posts: 2
  • Joined: Mon Apr 21, 2025 7:36 pm
  • Real Name: Bruno Vergilio

issues with New SDK / Drivers behavior on some interfaces

PostMon Apr 21, 2025 10:27 pm

Hello everyone. It's my first post here, and I'm still somewhat new to BMD's sdk, but I hope I can get some help on some issues I'm having. I work for a company that uses BMD cards, and lately, we've been updating our systems to ensure new cards are working as expected with our current codebase, but we've run into some issues regarding BMD's behavior on certain calls. So I'm gonna try and list some of them. Before Going further, here's the device we're currently testing against:

BlackMagic Decklink Duo 2
Driver Version: 14.5

1) Right now, we use QueryInterface from an IDeckLinkInput to obtain a IDeckLinkConfiguration_v7_6 interface, and we do so in order to call SetAudioInputFormat(). Lately this call has failed, and I noticed that the flags enumeration used is of type BMDAudioConnection_v10_2, so I tried to acquire an interface for IDeckLinkConfiguration_v10_2 (and use SetInt() with the proper flag, bmdDeckLinkConfigAudioInputConnection, for the same approach), and it does work - problem is, I'd like some insight as to whether this is correct, and what the best option would be, so that we can still account for older systems with older cards and drivers, as well as new ones.

2) The DeckLink Duo card has 4 SDI slots, and previously, calling IDeckLinkInput::EnableVideoInput() wouldn't cause any issues, but now, unless all the slots are set as inputs, I just get an E_FAIL error, which doesn't help much, but again, I'd like to know if there's a way to check which SDI ports are set to input / output, or how to handle such a scenario.

3) If possible, I'd like to know if there're interfaces we should use / avoid when dealing with these new (and old) drivers, and for the issues above, what the best course of action would be. Is there a table or mapping between which interfaces should be supported by which SDKs and drivers? We want to know which version of the driver to recommend to customers to install. To do so, we need to be sure that the interfaces we coded to are supported by that driver.

Thank you all!
Offline

jomag7

  • Posts: 17
  • Joined: Fri Jan 10, 2025 4:44 pm
  • Real Name: Jonathan Weyer

Re: issues with New SDK / Drivers behavior on some interface

PostMon May 05, 2025 1:36 pm

You're not alone with this kind of frustration.

1)For the SetAudioInputFormat() issue: yeah, what you're doing sounds like the right move. The SDK has evolved, and using IDeckLinkConfiguration_v10_2 with SetInt() is the recommended approach now. It’s good practice to check for interface version support at runtime and fall back to older versions if needed. That way, you can maintain compatibility across driver versions and cards.

2)The behavior with the SDI ports on the Duo 2 has changed in recent driver versions. If any port is set as output, trying to enable video input on that same port seems to fail silently or throw E_FAIL. You can use the IDeckLinkProfileAttributes interface to query whether a port is configured as input/output, depending on your SDK version. It’s not super well-documented, but it's there.

3)Unfortunately, there’s no public-facing version-to-interface support matrix (at least none I’ve ever found). I’ve resorted to building a small internal chart based on which interface versions I was able to successfully query across driver versions. A lot of trial and error. If you're planning to support a range of environments, I'd recommend packaging that version logic in your code so it's adaptive.

Hope that helps! Let me know if you dig up anything else always learning new SDK edge cases here too.
Offline

bvergili

  • Posts: 2
  • Joined: Mon Apr 21, 2025 7:36 pm
  • Real Name: Bruno Vergilio

Re: issues with New SDK / Drivers behavior on some interface

PostWed May 07, 2025 6:47 pm

Jonathan,

Thank you so much for your reply, truly appreciate it. Yeah I figured I would've missed a few points in the docs, but it's good to know we can actually query for ports being set to input/output. It's a bit of a bummer not having a table/matrix with these interface and driver changes, but I'll do as you did and start planning our chart for this as well. Not sure if you can, but if yes, would you mind sharing this version-chart of yours? It's totally ok if not.

You've helped me a lot today; once again, thank you very much! Have a great day!

Return to Software Developers

Who is online

Users browsing this forum: No registered users and 9 guests