VDJPedia



 Plugins_GUID

List of GUID used for VirtualDJ plugins

DllGetClassObject(const GUID &rclsid, const GUID &riid, void** ppObject) function loads in VirtualDJ your plugin's class (by ppObject) according to the CLSID and IID used in your plugin.
In other words, VirtualDJ internally lists all the available GUID until it matches with your plugin.

For example in C++ (in the case of a DSP plugin):
// This is the standard DLL loader for COM object.
// The memcmp(a, b, sizeof(XXXX)) function returns 0 if a and b match.
// if the plugins returns CLASS_E_CLASSNOTAVAILABLE, it means the plugin is not compatible with the current VirtualDJ version

HRESULT VDJ_API DllGetClassObject(const GUID &rclsid,const GUID &riid,void** ppObject)
{

if (memcmp(&rclsid,&CLSID_VdjPlugin8,sizeof(GUID))==0 && memcmp(&riid,&IID_IVdjPluginDsp8,sizeof(GUID))==0)
{
*ppObject = new CVDJClass8();
}
else if (memcmp(&rclsid,&CLSID_VdjPlugin6,sizeof(GUID))==0 && memcmp(&riid,&IID_IVdjPluginDsp,sizeof(GUID))==0)
{
*ppObject = new CVDJClass6();
}
else
{
return CLASS_E_CLASSNOTAVAILABLE;
}

return NO_ERROR;
}

In this example CVDJClass8 will be called on VirtualDJ 8.x and CVDJClass6 will be called on VirtualDJ 7.x so you can keep a compatibility in each change of VirtualDJ SDK version.
If you plan to create a wrapper or an external tool to read a VirtualDJ plugin (dll), here is an example of code: Plugins_Wrapper


SDK v8:

CLSID_VdjPlugin8 = { 0xED8A8D87, 0xF4F9, 0x4DCD, { 0xBD, 0x24, 0x29, 0x14, 0x12, 0xE9, 0x3B, 0x60 } }
IID_IVdjPluginBasic8 = { 0xa1d90ea1, 0x4d0d, 0x42dd, { 0xa4, 0xd0, 0xb8, 0xf3, 0x37, 0xb3, 0x21, 0xf1 } }
IID_IVdjPluginDsp8 = { 0x7cfcf3f5, 0x6fb9, 0x434c, { 0xb6, 0x3, 0xd7, 0x3a, 0x88, 0xf6, 0x72, 0x26 } }
IID_IVdjPluginBuffer8 = { 0x1d00e65f, 0x44c7, 0x41bf, { 0xa3, 0x6b, 0x04, 0xda, 0xf2, 0x67, 0x3b, 0x98 } }
IID_IVdjPluginVideoFx8 = { 0xbf1876aa, 0x3cbd, 0x404a, { 0xbe, 0xab, 0x5f, 0x8b, 0x51, 0xe3, 0x90, 0xc0 } }
IID_IVdjPluginVideoTransition8 = { 0x28eda49e, 0x5440, 0x4970, { 0xbe, 0xcc, 0x6d, 0x8e, 0xba, 0xe9, 0x61, 0xe } }
IID_IVdjPluginVideoTransitionMultiDeck8 = { 0x3a04c2f9, 0x5dea, 0x4329, { 0x8b, 0xea, 0x75, 0xef, 0xf7, 0xc9, 0x62, 0xda } }

SDK v6:

CLSID_VdjPlugin6 = { 0x37db664a, 0x6cf1, 0x4768, { 0xbc, 0x69, 0x32, 0x68, 0x13, 0xbf, 0xb, 0xf4 } }
IID_IVdjPluginBasic = { 0x865a6bbe, 0xed4b, 0x4bd5, { 0x93, 0xfe, 0x25, 0xa6, 0x26, 0xe2, 0x56, 0x1f } }
IID_IVdjPluginDsp = { 0x41dbff5, 0x55d4, 0x47ee, { 0x9d, 0x32, 0xd3, 0xc8, 0xa2, 0x0, 0x61, 0xff } }
IID_IVdjPluginVideoFx = { 0x9ad1e934, 0x31ce, 0x4be8, { 0xb3, 0xee, 0x1e, 0x1f, 0x1c, 0x94, 0x55, 0x10 } }
IID_IVdjPluginVideoTransition = { 0x119f6f6a, 0x1a37, 0x4fe5, { 0x96, 0x53, 0x31, 0x20, 0x3a, 0xc9, 0x4e, 0x28 } }


SDK v5:

CLSID_VdjPlugin5 = { 0x2e1480fe, 0x4ff4, 0x4539, { 0x90, 0xb3, 0x64, 0x5f, 0x5d, 0x86, 0xf9, 0x3b } }
IID_IVdjPluginBasic = { 0x865a6bbe, 0xed4b, 0x4bd5, { 0x93, 0xfe, 0x25, 0xa6, 0x26, 0xe2, 0x56, 0x1f } }
IID_IVdjPluginDsp = { 0x41dbff5, 0x55d4, 0x47ee, { 0x9d, 0x32, 0xd3, 0xc8, 0xa2, 0x0, 0x61, 0xff } }
IID_IVdjPluginVideoFx = { 0x9ad1e934, 0x31ce, 0x4be8, { 0xb3, 0xee, 0x1e, 0x1f, 0x1c, 0x94, 0x55, 0x10 } }
IID_IVdjPluginVideoTransition = { 0x119f6f6a, 0x1a37, 0x4fe5, { 0x96, 0x53, 0x31, 0x20, 0x3a, 0xc9, 0x4e, 0x28 } }
IID_IVdjPluginDevice = { 0xc17ed55e, 0x76b2, 0x4fb7, { 0x99, 0x34, 0xbb, 0xb1, 0xaf, 0xcd, 0x8c, 0x7b } }
IID_IVdjPluginTimecodeEngine = { 0xcfca612a, 0xb5be, 0x40b6, { 0xa2, 0x18, 0xad, 0x24, 0x07, 0x12, 0x04, 0x90 } }
IID_IVdjPluginTimecodeSignal = { 0x6a208c33, 0x8415, 0x4afb, { 0xb9, 0x63, 0xdd, 0x76, 0xd6, 0x19, 0xbd, 0x1d } }


SDK v2:

CLSID_VdjPlugin2 = { 0xab7a7125, 0x5dec, 0x44bc, { 0xab, 0xa9, 0xd8, 0xb, 0x2, 0xb0, 0x25, 0x49 } };
IID_IVdjDspV1 = { 0x3936fd38, 0xec1e, 0x43d5, { 0x95, 0xc5, 0xf4, 0xa2, 0x23, 0x30, 0x35, 0x59 } }
IID_IVdjDspV2 = { 0xb93344ff, 0xf379, 0x49d7, { 0xae, 0xf5, 0xde, 0x45, 0x8f, 0x1, 0x7f, 0x3e } }

Back to Developer page

Wiki HOME