Hi Folks
I am creating an Avid Open I/O plug in, but the current sample code does not appear to be working.
On Windows, in VS2015 it fails to compile due to a batch file step at the end
On Mac, the project fails to build due to missing references, all around Ancilliary data.
Working around the mac issues, I can get it to compile, but then Media Composer does NOT recognise the plug in or call any of its methods.
The plug in sample code seems rather complex, and I am at a loss to know where to start.
Does anyone have a *working* sample project for an open I/O plug in?
Thanks !
The sample plug-in was built with older tools, so that may be an issue here. What version of Xcode were you using? Also, what version (timestamp) of the Open I/O SDK are you using? The most recent version should be 20151130.
Thanks,
Jeremy
I am using 20151130
On Mac I am using XCode 9.2 (the current version) although the issue is not about the version but about missing references in the code / XCode project which is more fundamental. It seems like new Ancilliary Data functionality was added to the code (probably in windows) but the appropriate support files were not added to the Mac XCode Project.
I wonder if I could ask you to simply download the Project and try to compile it with the current XCode on Mac. I am sure you will see the problem right away
Thanks
I've looked at the Mac plug-in and there are two changes required (with Xcode 7.3).
First, as you pointed out, you must add the SampleXADPPacket.cpp to the Xcode project to resolve the linker errors.
The second issue is that the plug-in has dependencies on the HWcommon_Basics.framework. You'd be expected to replace these simple utility functions with your own when you develop your own plug-in. I thought that adding the framework to the plug-in package would resolve the runtime errors but that wasn't working. Instead I had to add it to the Media Composer package to get Media Composer to load the plug-in. Placing it inside the frameworks folder in the Media Composer package should do it (/Applications/Avid Media Composer/AvidMediaComposer.app/Contents/Frameworks/HWcommon_Basics.framework).
I'm still looking at the Windows issues. It looks like it was last built with VS 2010, so there are project/solution changes that need to be made to it.
Some more information on the Windows build - if I load the Windows project with VS 2013 and click thru all the errors, switch it to the Debug x64 target and build it, it does build with a couple errors in the build scripts. But the plug-in does get built into C:\OpenIO SDK\20151130_HWSDK\HWSDK_Components\HWSDK_Plugins\Generic\proj\win\Debug\HWSDK_Generic.acf. I was able to move this plug-in to the AVX-2 plug-in directory (C:\Program Files\Avid\AVX2_Plug-Ins\) and the plug-in was loaded. There's clearly some SDK updating that needs to be done, but hopefully these steps will get you started.
Hi Jeremy
Many thanks for responding.
I followed the steps you detailed, and indeed this does yield a loaded plug in on mac.
In order to proceed, I have a couple of other questions.
1) Where is the source code for HWcommon_Basics.framework or a list of function stubs which a plug in must provide in order to eliminate dependancy on this framework ? There are 18 header files for that frameworks which appears fairly extensive.
2) The Plug in documentation stresses the importance of changing the 'UIDs' on the plug in sample, but it does not explain how or where to do that. From what I can see the UIDs detailed in the code are rather ambigious and complex.
For example how is one supposed to change this to properly override it ?
DEFINE_ACFUID(acfUID, ACFVendorID_HWSDK_Generic, 0x3bdba0da, 0x4363, 0x4288, 0x2b, 0xfd, 0x91, 0xb0, 0x59, 0x50, 0x5, 0x30);
Two good questions.
The sources for HWCommon_Basics are not publicly available, and you're correct that we don't explicitly publish the dependencies. My thought was to let the linker do the work so I removed HWCommon_Basica.framework and saw what failed to link. It looks like there are dependencies on the threads interface SubClassableWorkThread and the timer interface HWCommon_Timer. That should make it easier to isolate them.
As for the second question, ACF uses GUIDS to uniquely identify interfaces, plug-ins, components, etc. You would change 'ACFVendorID_HWSDK_Generic' to identify your plug-in, and then generate a new GUID. We use the GUID tool in Visual Studio but there are web-based GUID generators as well.
© Copyright 2011 Avid Technology, Inc. Terms of Use | Privacy Policy | Site Map | Find a Reseller