Yeah man, I'll try to do that next week, sorry I can't do anything quicker, but as mentioned above it's a mini-pain-in-the-ar53.
As mentioned on the link on my previous post, due to the way BMD reuse names and some times GUIDs and/or the IDL files/headers/exports from the DLL - it's very tricky to have a single code base for old firmware and new firmware, such that someone with 6.3 can re-compile code written against 6.6 without making changes to code and/or project settings. Thus in order to do this I need to revert an ATEM, which I can't really do at the moment. I got bored trying to explain how much of a problem this is to Nick, and just gave up. (I
got the usual BMD response of "Deny and Deflect", which is always fun, but rarely useful!!! )
It'll only take you 10 minutes to change the code yourself.
Each compiler error will be complaining about an interface method not existing, simply swap it out for one of the old equivalents.
Quick explanation:
6.6 SDK IBMDSwitcherInputSo the code you can download from this topic is written against an interface called IBMDSwitcherInput and is defined as above in BMDs file ("%Program Files (x86)%\Blackmagic Design\Blackmagic ATEM Switchers\Developer SDK\Windows\includeBMDSwictherAPI.idl")
So one of the first errors you will be getting will be about calls to "GetPortType" because your "IBMDSwitcherInput" looks like this:
which is how BMD maintain backwards compatibility (kinda), so this interface is now called "IBMDSwitcherInput_v6_5_1", where you obtained the Port Type by calling "GetInt" and passing a "_BMDSwitcherInputPropertyId_v6_5_1" value. In the case of "GetPortType", that first parameter will be "bmdSwitcherInputPropertyIdPortType_v6_5_1" or 0x70727470, as with a 6.3 firmware this CONSTANT will actually just be called "bmdSwitcherInputPropertyIdPortType"
Hence if you change a call to GetPortType( value ) to GetInt( bmdSwitcherInputPropertyIdPortType, value), then that error will go away.
But I hope you see the problem, even if I had written the sample against the 6_5_1 (compatible with your 6.3 - generally speaking) GUIDS / SDK, you still wouldn't have been able to recompile it, as your IDLs won't have the "_V6_5_1" post-fixed to the ends of the names.
If you think this post is insane -
I totally agree. But..... just going through your compiler errors swapping calls is all you need to do, and all I'll be doing when I re-install 6.3 on a test ATEM.
BMD would put the following position: "Developers target a particular firmware release", which is of course beyond ridiculous; "Developers target a particular ATEM (the one they are working with) not a firmware version". They have also pointed out "you can download the SDKs separately from the main package", but this is too much trouble as you are required to enter serial numbers of devices, which are invariably out on jobs or buried in racks when you need a download. It would also mean you needed to maintain your own directory structure of IDLs, and setup projects that linked to specific directories, that would have to match between developers machines in order for them to easily exchange code. You'd need to add "LOTS" of compiler directives to switch which firmware release your project was targeting.
It's just... all..... way too much hassle!!Anyway..... apologies again for not being able to do a quick reply to this, I promise you..... It's way more infuriating for me than you, and encourage you to have a go at burning through the changes required yourself, the first few may take you a few minutes, but you WILL quickly catch onto the process and the act of doing it, will help you understand the SDK.
Cheers
John