]> git.sesse.net Git - casparcg/commitdiff
Updated the DeckLink API to compile using 4k* display modes.
authorPeter Karlsson <peter.p.karlsson@svt.se>
Thu, 4 Apr 2013 10:39:01 +0000 (12:39 +0200)
committerPeter Karlsson <peter.p.karlsson@svt.se>
Thu, 4 Apr 2013 10:39:01 +0000 (12:39 +0200)
13 files changed:
core/video_format.cpp
core/video_format.h
modules/decklink/DeckLinkAPI_h.h [new file with mode: 0644]
modules/decklink/decklink.vcxproj
modules/decklink/decklink.vcxproj.filters
modules/decklink/interop/DeckLinkAPI.idl [deleted file]
modules/decklink/interop/DeckLinkAPIVersion.h
modules/decklink/interop/DeckLinkAPI_v7_1.idl [deleted file]
modules/decklink/interop/DeckLinkAPI_v7_3.idl [deleted file]
modules/decklink/interop/DeckLinkAPI_v7_6.idl [deleted file]
modules/decklink/interop/DeckLinkAPI_v7_9.idl [deleted file]
modules/decklink/util/util.h
shell/casparcg.config

index 0674d693251d2dfede3da0a1e3f2bae9305acc8a..cdb40ba180e3bd9a6ff6f03a5f9509365decbda7 100644 (file)
@@ -75,6 +75,11 @@ const video_format_desc format_descs[video_format::count] =
        DEFINE_VIDEOFORMATDESC(video_format::x2k2398    ,2048, 1556, 2048, 1556, field_mode::progressive,        24000, 1001,    boost::assign::list_of(4004),                                                  L"2k2398"),\r
        DEFINE_VIDEOFORMATDESC(video_format::x2k2400    ,2048, 1556, 2048, 1556, field_mode::progressive,        24,    1,               boost::assign::list_of(4000),                                                  L"2k2400"),\r
        DEFINE_VIDEOFORMATDESC(video_format::x2k2500    ,2048, 1556, 2048, 1556, field_mode::progressive,        25,    1,               boost::assign::list_of(3840),                                                  L"2k2500"),\r
+       DEFINE_VIDEOFORMATDESC(video_format::x4k2398    ,3840, 2160, 3840, 2160, field_mode::progressive,        24000, 1001,    boost::assign::list_of(4004),                                                  L"4k2398"),\r
+       DEFINE_VIDEOFORMATDESC(video_format::x4k2400    ,3840, 2160, 3840, 2160, field_mode::progressive,        24,    1,               boost::assign::list_of(4000),                                                  L"4k2400"),\r
+       DEFINE_VIDEOFORMATDESC(video_format::x4k2500    ,3840, 2160, 3840, 2160, field_mode::progressive,        25,    1,               boost::assign::list_of(3840),                                                  L"4k2500"),\r
+       DEFINE_VIDEOFORMATDESC(video_format::x4k2997    ,3840, 2160, 3840, 2160, field_mode::progressive,        30000, 1001,    boost::assign::list_of(3204)(3202)(3204)(3202)(3204),  L"4k2398"),\r
+       DEFINE_VIDEOFORMATDESC(video_format::x4k3000    ,3840, 2160, 3840, 2160, field_mode::progressive,        30,    1,              boost::assign::list_of(3200),                                                   L"4k3000"),\r
        DEFINE_VIDEOFORMATDESC(video_format::invalid    ,0,             0,   0,         0,   field_mode::progressive,    1,             1,               boost::assign::list_of(1),                                                             L"invalid")\r
 };\r
 \r
index 60375ddbab55ccc243b302d705a54bdf5cd65bdc..6e3fd01db232b49078c520ad13234fafe6830f81 100644 (file)
@@ -55,6 +55,11 @@ struct video_format
                x2k2398,\r
                x2k2400,\r
                x2k2500,\r
+               x4k2398,\r
+               x4k2400,\r
+               x4k2500,\r
+               x4k2997,\r
+               x4k3000,\r
                invalid,\r
                count\r
        };\r
diff --git a/modules/decklink/DeckLinkAPI_h.h b/modules/decklink/DeckLinkAPI_h.h
new file mode 100644 (file)
index 0000000..c0a02a9
--- /dev/null
@@ -0,0 +1,12258 @@
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 7.00.0555 */
+/* at Thu Apr 04 12:23:58 2013
+ */
+/* Compiler settings for interop\DeckLinkAPI.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
+    protocol : dce , ms_ext, c_ext, robust
+    error checks: allocation ref bounds_check enum stub_data 
+    VC __declspec() decoration level: 
+         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
+         DECLSPEC_UUID(), MIDL_INTERFACE()
+*/
+/* @@MIDL_FILE_HEADING(  ) */
+
+#pragma warning( disable: 4049 )  /* more than 64k source lines */
+
+
+/* verify that the <rpcndr.h> version is high enough to compile this file*/
+#ifndef __REQUIRED_RPCNDR_H_VERSION__
+#define __REQUIRED_RPCNDR_H_VERSION__ 475
+#endif
+
+#include "rpc.h"
+#include "rpcndr.h"
+
+#ifndef __RPCNDR_H_VERSION__
+#error this stub requires an updated version of <rpcndr.h>
+#endif // __RPCNDR_H_VERSION__
+
+
+#ifndef __DeckLinkAPI_h_h__
+#define __DeckLinkAPI_h_h__
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1020)
+#pragma once
+#endif
+
+/* Forward Declarations */ 
+
+#ifndef __IDeckLinkTimecode_FWD_DEFINED__
+#define __IDeckLinkTimecode_FWD_DEFINED__
+typedef interface IDeckLinkTimecode IDeckLinkTimecode;
+#endif         /* __IDeckLinkTimecode_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayModeIterator_FWD_DEFINED__
+#define __IDeckLinkDisplayModeIterator_FWD_DEFINED__
+typedef interface IDeckLinkDisplayModeIterator IDeckLinkDisplayModeIterator;
+#endif         /* __IDeckLinkDisplayModeIterator_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayMode_FWD_DEFINED__
+#define __IDeckLinkDisplayMode_FWD_DEFINED__
+typedef interface IDeckLinkDisplayMode IDeckLinkDisplayMode;
+#endif         /* __IDeckLinkDisplayMode_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLink_FWD_DEFINED__
+#define __IDeckLink_FWD_DEFINED__
+typedef interface IDeckLink IDeckLink;
+#endif         /* __IDeckLink_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkConfiguration_FWD_DEFINED__
+#define __IDeckLinkConfiguration_FWD_DEFINED__
+typedef interface IDeckLinkConfiguration IDeckLinkConfiguration;
+#endif         /* __IDeckLinkConfiguration_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__
+#define __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__
+typedef interface IDeckLinkDeckControlStatusCallback IDeckLinkDeckControlStatusCallback;
+#endif         /* __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDeckControl_FWD_DEFINED__
+#define __IDeckLinkDeckControl_FWD_DEFINED__
+typedef interface IDeckLinkDeckControl IDeckLinkDeckControl;
+#endif         /* __IDeckLinkDeckControl_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingDeviceNotificationCallback_FWD_DEFINED__
+#define __IBMDStreamingDeviceNotificationCallback_FWD_DEFINED__
+typedef interface IBMDStreamingDeviceNotificationCallback IBMDStreamingDeviceNotificationCallback;
+#endif         /* __IBMDStreamingDeviceNotificationCallback_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingH264InputCallback_FWD_DEFINED__
+#define __IBMDStreamingH264InputCallback_FWD_DEFINED__
+typedef interface IBMDStreamingH264InputCallback IBMDStreamingH264InputCallback;
+#endif         /* __IBMDStreamingH264InputCallback_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingDiscovery_FWD_DEFINED__
+#define __IBMDStreamingDiscovery_FWD_DEFINED__
+typedef interface IBMDStreamingDiscovery IBMDStreamingDiscovery;
+#endif         /* __IBMDStreamingDiscovery_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingVideoEncodingMode_FWD_DEFINED__
+#define __IBMDStreamingVideoEncodingMode_FWD_DEFINED__
+typedef interface IBMDStreamingVideoEncodingMode IBMDStreamingVideoEncodingMode;
+#endif         /* __IBMDStreamingVideoEncodingMode_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingMutableVideoEncodingMode_FWD_DEFINED__
+#define __IBMDStreamingMutableVideoEncodingMode_FWD_DEFINED__
+typedef interface IBMDStreamingMutableVideoEncodingMode IBMDStreamingMutableVideoEncodingMode;
+#endif         /* __IBMDStreamingMutableVideoEncodingMode_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingVideoEncodingModePresetIterator_FWD_DEFINED__
+#define __IBMDStreamingVideoEncodingModePresetIterator_FWD_DEFINED__
+typedef interface IBMDStreamingVideoEncodingModePresetIterator IBMDStreamingVideoEncodingModePresetIterator;
+#endif         /* __IBMDStreamingVideoEncodingModePresetIterator_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingDeviceInput_FWD_DEFINED__
+#define __IBMDStreamingDeviceInput_FWD_DEFINED__
+typedef interface IBMDStreamingDeviceInput IBMDStreamingDeviceInput;
+#endif         /* __IBMDStreamingDeviceInput_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingH264NALPacket_FWD_DEFINED__
+#define __IBMDStreamingH264NALPacket_FWD_DEFINED__
+typedef interface IBMDStreamingH264NALPacket IBMDStreamingH264NALPacket;
+#endif         /* __IBMDStreamingH264NALPacket_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingAudioPacket_FWD_DEFINED__
+#define __IBMDStreamingAudioPacket_FWD_DEFINED__
+typedef interface IBMDStreamingAudioPacket IBMDStreamingAudioPacket;
+#endif         /* __IBMDStreamingAudioPacket_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingMPEG2TSPacket_FWD_DEFINED__
+#define __IBMDStreamingMPEG2TSPacket_FWD_DEFINED__
+typedef interface IBMDStreamingMPEG2TSPacket IBMDStreamingMPEG2TSPacket;
+#endif         /* __IBMDStreamingMPEG2TSPacket_FWD_DEFINED__ */
+
+
+#ifndef __IBMDStreamingH264NALParser_FWD_DEFINED__
+#define __IBMDStreamingH264NALParser_FWD_DEFINED__
+typedef interface IBMDStreamingH264NALParser IBMDStreamingH264NALParser;
+#endif         /* __IBMDStreamingH264NALParser_FWD_DEFINED__ */
+
+
+#ifndef __CBMDStreamingDiscovery_FWD_DEFINED__
+#define __CBMDStreamingDiscovery_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CBMDStreamingDiscovery CBMDStreamingDiscovery;
+#else
+typedef struct CBMDStreamingDiscovery CBMDStreamingDiscovery;
+#endif /* __cplusplus */
+
+#endif         /* __CBMDStreamingDiscovery_FWD_DEFINED__ */
+
+
+#ifndef __CBMDStreamingH264NALParser_FWD_DEFINED__
+#define __CBMDStreamingH264NALParser_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CBMDStreamingH264NALParser CBMDStreamingH264NALParser;
+#else
+typedef struct CBMDStreamingH264NALParser CBMDStreamingH264NALParser;
+#endif /* __cplusplus */
+
+#endif         /* __CBMDStreamingH264NALParser_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoOutputCallback_FWD_DEFINED__
+#define __IDeckLinkVideoOutputCallback_FWD_DEFINED__
+typedef interface IDeckLinkVideoOutputCallback IDeckLinkVideoOutputCallback;
+#endif         /* __IDeckLinkVideoOutputCallback_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInputCallback_FWD_DEFINED__
+#define __IDeckLinkInputCallback_FWD_DEFINED__
+typedef interface IDeckLinkInputCallback IDeckLinkInputCallback;
+#endif         /* __IDeckLinkInputCallback_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkMemoryAllocator_FWD_DEFINED__
+#define __IDeckLinkMemoryAllocator_FWD_DEFINED__
+typedef interface IDeckLinkMemoryAllocator IDeckLinkMemoryAllocator;
+#endif         /* __IDeckLinkMemoryAllocator_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkAudioOutputCallback_FWD_DEFINED__
+#define __IDeckLinkAudioOutputCallback_FWD_DEFINED__
+typedef interface IDeckLinkAudioOutputCallback IDeckLinkAudioOutputCallback;
+#endif         /* __IDeckLinkAudioOutputCallback_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkIterator_FWD_DEFINED__
+#define __IDeckLinkIterator_FWD_DEFINED__
+typedef interface IDeckLinkIterator IDeckLinkIterator;
+#endif         /* __IDeckLinkIterator_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkAPIInformation_FWD_DEFINED__
+#define __IDeckLinkAPIInformation_FWD_DEFINED__
+typedef interface IDeckLinkAPIInformation IDeckLinkAPIInformation;
+#endif         /* __IDeckLinkAPIInformation_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_FWD_DEFINED__
+#define __IDeckLinkOutput_FWD_DEFINED__
+typedef interface IDeckLinkOutput IDeckLinkOutput;
+#endif         /* __IDeckLinkOutput_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_FWD_DEFINED__
+#define __IDeckLinkInput_FWD_DEFINED__
+typedef interface IDeckLinkInput IDeckLinkInput;
+#endif         /* __IDeckLinkInput_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrame_FWD_DEFINED__
+#define __IDeckLinkVideoFrame_FWD_DEFINED__
+typedef interface IDeckLinkVideoFrame IDeckLinkVideoFrame;
+#endif         /* __IDeckLinkVideoFrame_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkMutableVideoFrame_FWD_DEFINED__
+#define __IDeckLinkMutableVideoFrame_FWD_DEFINED__
+typedef interface IDeckLinkMutableVideoFrame IDeckLinkMutableVideoFrame;
+#endif         /* __IDeckLinkMutableVideoFrame_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__
+#define __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__
+typedef interface IDeckLinkVideoFrame3DExtensions IDeckLinkVideoFrame3DExtensions;
+#endif         /* __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_FWD_DEFINED__
+#define __IDeckLinkVideoInputFrame_FWD_DEFINED__
+typedef interface IDeckLinkVideoInputFrame IDeckLinkVideoInputFrame;
+#endif         /* __IDeckLinkVideoInputFrame_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrameAncillary_FWD_DEFINED__
+#define __IDeckLinkVideoFrameAncillary_FWD_DEFINED__
+typedef interface IDeckLinkVideoFrameAncillary IDeckLinkVideoFrameAncillary;
+#endif         /* __IDeckLinkVideoFrameAncillary_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkAudioInputPacket_FWD_DEFINED__
+#define __IDeckLinkAudioInputPacket_FWD_DEFINED__
+typedef interface IDeckLinkAudioInputPacket IDeckLinkAudioInputPacket;
+#endif         /* __IDeckLinkAudioInputPacket_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkScreenPreviewCallback_FWD_DEFINED__
+#define __IDeckLinkScreenPreviewCallback_FWD_DEFINED__
+typedef interface IDeckLinkScreenPreviewCallback IDeckLinkScreenPreviewCallback;
+#endif         /* __IDeckLinkScreenPreviewCallback_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkGLScreenPreviewHelper_FWD_DEFINED__
+#define __IDeckLinkGLScreenPreviewHelper_FWD_DEFINED__
+typedef interface IDeckLinkGLScreenPreviewHelper IDeckLinkGLScreenPreviewHelper;
+#endif         /* __IDeckLinkGLScreenPreviewHelper_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__
+#define __IDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__
+typedef interface IDeckLinkDX9ScreenPreviewHelper IDeckLinkDX9ScreenPreviewHelper;
+#endif         /* __IDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkNotificationCallback_FWD_DEFINED__
+#define __IDeckLinkNotificationCallback_FWD_DEFINED__
+typedef interface IDeckLinkNotificationCallback IDeckLinkNotificationCallback;
+#endif         /* __IDeckLinkNotificationCallback_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkNotification_FWD_DEFINED__
+#define __IDeckLinkNotification_FWD_DEFINED__
+typedef interface IDeckLinkNotification IDeckLinkNotification;
+#endif         /* __IDeckLinkNotification_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkAttributes_FWD_DEFINED__
+#define __IDeckLinkAttributes_FWD_DEFINED__
+typedef interface IDeckLinkAttributes IDeckLinkAttributes;
+#endif         /* __IDeckLinkAttributes_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkKeyer_FWD_DEFINED__
+#define __IDeckLinkKeyer_FWD_DEFINED__
+typedef interface IDeckLinkKeyer IDeckLinkKeyer;
+#endif         /* __IDeckLinkKeyer_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoConversion_FWD_DEFINED__
+#define __IDeckLinkVideoConversion_FWD_DEFINED__
+typedef interface IDeckLinkVideoConversion IDeckLinkVideoConversion;
+#endif         /* __IDeckLinkVideoConversion_FWD_DEFINED__ */
+
+
+#ifndef __CDeckLinkIterator_FWD_DEFINED__
+#define __CDeckLinkIterator_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CDeckLinkIterator CDeckLinkIterator;
+#else
+typedef struct CDeckLinkIterator CDeckLinkIterator;
+#endif /* __cplusplus */
+
+#endif         /* __CDeckLinkIterator_FWD_DEFINED__ */
+
+
+#ifndef __CDeckLinkAPIInformation_FWD_DEFINED__
+#define __CDeckLinkAPIInformation_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CDeckLinkAPIInformation CDeckLinkAPIInformation;
+#else
+typedef struct CDeckLinkAPIInformation CDeckLinkAPIInformation;
+#endif /* __cplusplus */
+
+#endif         /* __CDeckLinkAPIInformation_FWD_DEFINED__ */
+
+
+#ifndef __CDeckLinkGLScreenPreviewHelper_FWD_DEFINED__
+#define __CDeckLinkGLScreenPreviewHelper_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CDeckLinkGLScreenPreviewHelper CDeckLinkGLScreenPreviewHelper;
+#else
+typedef struct CDeckLinkGLScreenPreviewHelper CDeckLinkGLScreenPreviewHelper;
+#endif /* __cplusplus */
+
+#endif         /* __CDeckLinkGLScreenPreviewHelper_FWD_DEFINED__ */
+
+
+#ifndef __CDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__
+#define __CDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CDeckLinkDX9ScreenPreviewHelper CDeckLinkDX9ScreenPreviewHelper;
+#else
+typedef struct CDeckLinkDX9ScreenPreviewHelper CDeckLinkDX9ScreenPreviewHelper;
+#endif /* __cplusplus */
+
+#endif         /* __CDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__ */
+
+
+#ifndef __CDeckLinkVideoConversion_FWD_DEFINED__
+#define __CDeckLinkVideoConversion_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CDeckLinkVideoConversion CDeckLinkVideoConversion;
+#else
+typedef struct CDeckLinkVideoConversion CDeckLinkVideoConversion;
+#endif /* __cplusplus */
+
+#endif         /* __CDeckLinkVideoConversion_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_v9_2_FWD_DEFINED__
+#define __IDeckLinkInput_v9_2_FWD_DEFINED__
+typedef interface IDeckLinkInput_v9_2 IDeckLinkInput_v9_2;
+#endif         /* __IDeckLinkInput_v9_2_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDeckControlStatusCallback_v8_1_FWD_DEFINED__
+#define __IDeckLinkDeckControlStatusCallback_v8_1_FWD_DEFINED__
+typedef interface IDeckLinkDeckControlStatusCallback_v8_1 IDeckLinkDeckControlStatusCallback_v8_1;
+#endif         /* __IDeckLinkDeckControlStatusCallback_v8_1_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDeckControl_v8_1_FWD_DEFINED__
+#define __IDeckLinkDeckControl_v8_1_FWD_DEFINED__
+typedef interface IDeckLinkDeckControl_v8_1 IDeckLinkDeckControl_v8_1;
+#endif         /* __IDeckLinkDeckControl_v8_1_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLink_v8_0_FWD_DEFINED__
+#define __IDeckLink_v8_0_FWD_DEFINED__
+typedef interface IDeckLink_v8_0 IDeckLink_v8_0;
+#endif         /* __IDeckLink_v8_0_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkIterator_v8_0_FWD_DEFINED__
+#define __IDeckLinkIterator_v8_0_FWD_DEFINED__
+typedef interface IDeckLinkIterator_v8_0 IDeckLinkIterator_v8_0;
+#endif         /* __IDeckLinkIterator_v8_0_FWD_DEFINED__ */
+
+
+#ifndef __CDeckLinkIterator_v8_0_FWD_DEFINED__
+#define __CDeckLinkIterator_v8_0_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CDeckLinkIterator_v8_0 CDeckLinkIterator_v8_0;
+#else
+typedef struct CDeckLinkIterator_v8_0 CDeckLinkIterator_v8_0;
+#endif /* __cplusplus */
+
+#endif         /* __CDeckLinkIterator_v8_0_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDeckControl_v7_9_FWD_DEFINED__
+#define __IDeckLinkDeckControl_v7_9_FWD_DEFINED__
+typedef interface IDeckLinkDeckControl_v7_9 IDeckLinkDeckControl_v7_9;
+#endif         /* __IDeckLinkDeckControl_v7_9_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayModeIterator_v7_6_FWD_DEFINED__
+#define __IDeckLinkDisplayModeIterator_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkDisplayModeIterator_v7_6 IDeckLinkDisplayModeIterator_v7_6;
+#endif         /* __IDeckLinkDisplayModeIterator_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayMode_v7_6_FWD_DEFINED__
+#define __IDeckLinkDisplayMode_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkDisplayMode_v7_6 IDeckLinkDisplayMode_v7_6;
+#endif         /* __IDeckLinkDisplayMode_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_v7_6_FWD_DEFINED__
+#define __IDeckLinkOutput_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkOutput_v7_6 IDeckLinkOutput_v7_6;
+#endif         /* __IDeckLinkOutput_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_v7_6_FWD_DEFINED__
+#define __IDeckLinkInput_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkInput_v7_6 IDeckLinkInput_v7_6;
+#endif         /* __IDeckLinkInput_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkTimecode_v7_6_FWD_DEFINED__
+#define __IDeckLinkTimecode_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkTimecode_v7_6 IDeckLinkTimecode_v7_6;
+#endif         /* __IDeckLinkTimecode_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrame_v7_6_FWD_DEFINED__
+#define __IDeckLinkVideoFrame_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkVideoFrame_v7_6 IDeckLinkVideoFrame_v7_6;
+#endif         /* __IDeckLinkVideoFrame_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkMutableVideoFrame_v7_6_FWD_DEFINED__
+#define __IDeckLinkMutableVideoFrame_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkMutableVideoFrame_v7_6 IDeckLinkMutableVideoFrame_v7_6;
+#endif         /* __IDeckLinkMutableVideoFrame_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_6_FWD_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkVideoInputFrame_v7_6 IDeckLinkVideoInputFrame_v7_6;
+#endif         /* __IDeckLinkVideoInputFrame_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkScreenPreviewCallback_v7_6_FWD_DEFINED__
+#define __IDeckLinkScreenPreviewCallback_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkScreenPreviewCallback_v7_6 IDeckLinkScreenPreviewCallback_v7_6;
+#endif         /* __IDeckLinkScreenPreviewCallback_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
+#define __IDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkGLScreenPreviewHelper_v7_6 IDeckLinkGLScreenPreviewHelper_v7_6;
+#endif         /* __IDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoConversion_v7_6_FWD_DEFINED__
+#define __IDeckLinkVideoConversion_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkVideoConversion_v7_6 IDeckLinkVideoConversion_v7_6;
+#endif         /* __IDeckLinkVideoConversion_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkConfiguration_v7_6_FWD_DEFINED__
+#define __IDeckLinkConfiguration_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkConfiguration_v7_6 IDeckLinkConfiguration_v7_6;
+#endif         /* __IDeckLinkConfiguration_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoOutputCallback_v7_6_FWD_DEFINED__
+#define __IDeckLinkVideoOutputCallback_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkVideoOutputCallback_v7_6 IDeckLinkVideoOutputCallback_v7_6;
+#endif         /* __IDeckLinkVideoOutputCallback_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInputCallback_v7_6_FWD_DEFINED__
+#define __IDeckLinkInputCallback_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkInputCallback_v7_6 IDeckLinkInputCallback_v7_6;
+#endif         /* __IDeckLinkInputCallback_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __CDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
+#define __CDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CDeckLinkGLScreenPreviewHelper_v7_6 CDeckLinkGLScreenPreviewHelper_v7_6;
+#else
+typedef struct CDeckLinkGLScreenPreviewHelper_v7_6 CDeckLinkGLScreenPreviewHelper_v7_6;
+#endif /* __cplusplus */
+
+#endif         /* __CDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __CDeckLinkVideoConversion_v7_6_FWD_DEFINED__
+#define __CDeckLinkVideoConversion_v7_6_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CDeckLinkVideoConversion_v7_6 CDeckLinkVideoConversion_v7_6;
+#else
+typedef struct CDeckLinkVideoConversion_v7_6 CDeckLinkVideoConversion_v7_6;
+#endif /* __cplusplus */
+
+#endif         /* __CDeckLinkVideoConversion_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInputCallback_v7_3_FWD_DEFINED__
+#define __IDeckLinkInputCallback_v7_3_FWD_DEFINED__
+typedef interface IDeckLinkInputCallback_v7_3 IDeckLinkInputCallback_v7_3;
+#endif         /* __IDeckLinkInputCallback_v7_3_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_v7_3_FWD_DEFINED__
+#define __IDeckLinkOutput_v7_3_FWD_DEFINED__
+typedef interface IDeckLinkOutput_v7_3 IDeckLinkOutput_v7_3;
+#endif         /* __IDeckLinkOutput_v7_3_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_v7_3_FWD_DEFINED__
+#define __IDeckLinkInput_v7_3_FWD_DEFINED__
+typedef interface IDeckLinkInput_v7_3 IDeckLinkInput_v7_3;
+#endif         /* __IDeckLinkInput_v7_3_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_3_FWD_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_3_FWD_DEFINED__
+typedef interface IDeckLinkVideoInputFrame_v7_3 IDeckLinkVideoInputFrame_v7_3;
+#endif         /* __IDeckLinkVideoInputFrame_v7_3_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayModeIterator_v7_1_FWD_DEFINED__
+#define __IDeckLinkDisplayModeIterator_v7_1_FWD_DEFINED__
+typedef interface IDeckLinkDisplayModeIterator_v7_1 IDeckLinkDisplayModeIterator_v7_1;
+#endif         /* __IDeckLinkDisplayModeIterator_v7_1_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayMode_v7_1_FWD_DEFINED__
+#define __IDeckLinkDisplayMode_v7_1_FWD_DEFINED__
+typedef interface IDeckLinkDisplayMode_v7_1 IDeckLinkDisplayMode_v7_1;
+#endif         /* __IDeckLinkDisplayMode_v7_1_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrame_v7_1_FWD_DEFINED__
+#define __IDeckLinkVideoFrame_v7_1_FWD_DEFINED__
+typedef interface IDeckLinkVideoFrame_v7_1 IDeckLinkVideoFrame_v7_1;
+#endif         /* __IDeckLinkVideoFrame_v7_1_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_1_FWD_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_1_FWD_DEFINED__
+typedef interface IDeckLinkVideoInputFrame_v7_1 IDeckLinkVideoInputFrame_v7_1;
+#endif         /* __IDeckLinkVideoInputFrame_v7_1_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkAudioInputPacket_v7_1_FWD_DEFINED__
+#define __IDeckLinkAudioInputPacket_v7_1_FWD_DEFINED__
+typedef interface IDeckLinkAudioInputPacket_v7_1 IDeckLinkAudioInputPacket_v7_1;
+#endif         /* __IDeckLinkAudioInputPacket_v7_1_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoOutputCallback_v7_1_FWD_DEFINED__
+#define __IDeckLinkVideoOutputCallback_v7_1_FWD_DEFINED__
+typedef interface IDeckLinkVideoOutputCallback_v7_1 IDeckLinkVideoOutputCallback_v7_1;
+#endif         /* __IDeckLinkVideoOutputCallback_v7_1_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInputCallback_v7_1_FWD_DEFINED__
+#define __IDeckLinkInputCallback_v7_1_FWD_DEFINED__
+typedef interface IDeckLinkInputCallback_v7_1 IDeckLinkInputCallback_v7_1;
+#endif         /* __IDeckLinkInputCallback_v7_1_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_v7_1_FWD_DEFINED__
+#define __IDeckLinkOutput_v7_1_FWD_DEFINED__
+typedef interface IDeckLinkOutput_v7_1 IDeckLinkOutput_v7_1;
+#endif         /* __IDeckLinkOutput_v7_1_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_v7_1_FWD_DEFINED__
+#define __IDeckLinkInput_v7_1_FWD_DEFINED__
+typedef interface IDeckLinkInput_v7_1 IDeckLinkInput_v7_1;
+#endif         /* __IDeckLinkInput_v7_1_FWD_DEFINED__ */
+
+
+/* header files for imported files */
+#include "unknwn.h"
+
+#ifdef __cplusplus
+extern "C"{
+#endif 
+
+
+
+#ifndef __DeckLinkAPI_LIBRARY_DEFINED__
+#define __DeckLinkAPI_LIBRARY_DEFINED__
+
+/* library DeckLinkAPI */
+/* [helpstring][version][uuid] */ 
+
+typedef LONGLONG BMDTimeValue;
+
+typedef LONGLONG BMDTimeScale;
+
+typedef unsigned long BMDTimecodeBCD;
+
+typedef unsigned long BMDTimecodeUserBits;
+
+typedef unsigned long BMDTimecodeFlags;
+#if 0
+typedef enum _BMDTimecodeFlags BMDTimecodeFlags;
+
+#endif
+/* [v1_enum] */ 
+enum _BMDTimecodeFlags
+    {  bmdTimecodeFlagDefault  = 0,
+       bmdTimecodeIsDropFrame  = ( 1 << 0 ) 
+    } ;
+typedef /* [v1_enum] */ 
+enum _BMDVideoConnection
+    {  bmdVideoConnectionSDI   = ( 1 << 0 ) ,
+       bmdVideoConnectionHDMI  = ( 1 << 1 ) ,
+       bmdVideoConnectionOpticalSDI    = ( 1 << 2 ) ,
+       bmdVideoConnectionComponent     = ( 1 << 3 ) ,
+       bmdVideoConnectionComposite     = ( 1 << 4 ) ,
+       bmdVideoConnectionSVideo        = ( 1 << 5 ) 
+    }  BMDVideoConnection;
+
+
+typedef unsigned long BMDDisplayModeFlags;
+#if 0
+typedef enum _BMDDisplayModeFlags BMDDisplayModeFlags;
+
+#endif
+typedef /* [v1_enum] */ 
+enum _BMDDisplayMode
+    {  bmdModeNTSC     = 0x6e747363,
+       bmdModeNTSC2398 = 0x6e743233,
+       bmdModePAL      = 0x70616c20,
+       bmdModeNTSCp    = 0x6e747370,
+       bmdModePALp     = 0x70616c70,
+       bmdModeHD1080p2398      = 0x32337073,
+       bmdModeHD1080p24        = 0x32347073,
+       bmdModeHD1080p25        = 0x48703235,
+       bmdModeHD1080p2997      = 0x48703239,
+       bmdModeHD1080p30        = 0x48703330,
+       bmdModeHD1080i50        = 0x48693530,
+       bmdModeHD1080i5994      = 0x48693539,
+       bmdModeHD1080i6000      = 0x48693630,
+       bmdModeHD1080p50        = 0x48703530,
+       bmdModeHD1080p5994      = 0x48703539,
+       bmdModeHD1080p6000      = 0x48703630,
+       bmdModeHD720p50 = 0x68703530,
+       bmdModeHD720p5994       = 0x68703539,
+       bmdModeHD720p60 = 0x68703630,
+       bmdMode2k2398   = 0x326b3233,
+       bmdMode2k24     = 0x326b3234,
+       bmdMode2k25     = 0x326b3235,
+       bmdMode4K2160p2398      = 0x346b3233,
+       bmdMode4K2160p24        = 0x346b3234,
+       bmdMode4K2160p25        = 0x346b3235,
+       bmdMode4K2160p2997      = 0x346b3239,
+       bmdMode4K2160p30        = 0x346b3330,
+       bmdModeUnknown  = 0x69756e6b
+    }  BMDDisplayMode;
+
+typedef /* [v1_enum] */ 
+enum _BMDFieldDominance
+    {  bmdUnknownFieldDominance        = 0,
+       bmdLowerFieldFirst      = 0x6c6f7772,
+       bmdUpperFieldFirst      = 0x75707072,
+       bmdProgressiveFrame     = 0x70726f67,
+       bmdProgressiveSegmentedFrame    = 0x70736620
+    }  BMDFieldDominance;
+
+typedef /* [v1_enum] */ 
+enum _BMDPixelFormat
+    {  bmdFormat8BitYUV        = 0x32767579,
+       bmdFormat10BitYUV       = 0x76323130,
+       bmdFormat8BitARGB       = 32,
+       bmdFormat8BitBGRA       = 0x42475241,
+       bmdFormat10BitRGB       = 0x72323130
+    }  BMDPixelFormat;
+
+/* [v1_enum] */ 
+enum _BMDDisplayModeFlags
+    {  bmdDisplayModeSupports3D        = ( 1 << 0 ) ,
+       bmdDisplayModeColorspaceRec601  = ( 1 << 1 ) ,
+       bmdDisplayModeColorspaceRec709  = ( 1 << 2 ) 
+    } ;
+
+
+#if 0
+#endif
+
+#if 0
+#endif
+typedef /* [v1_enum] */ 
+enum _BMDDeckLinkConfigurationID
+    {  bmdDeckLinkConfigSwapSerialRxTx = 0x73737274,
+       bmdDeckLinkConfigUse1080pNotPsF = 0x6670726f,
+       bmdDeckLinkConfigHDMI3DPackingFormat    = 0x33647066,
+       bmdDeckLinkConfigBypass = 0x62797073,
+       bmdDeckLinkConfigClockTimingAdjustment  = 0x63746164,
+       bmdDeckLinkConfigAnalogAudioConsumerLevels      = 0x6161636c,
+       bmdDeckLinkConfigFieldFlickerRemoval    = 0x66646672,
+       bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion       = 0x746f3539,
+       bmdDeckLinkConfig444SDIVideoOutput      = 0x3434346f,
+       bmdDeckLinkConfig3GBpsVideoOutput       = 0x33676273,
+       bmdDeckLinkConfigBlackVideoOutputDuringCapture  = 0x62766f63,
+       bmdDeckLinkConfigLowLatencyVideoOutput  = 0x6c6c766f,
+       bmdDeckLinkConfigVideoOutputConnection  = 0x766f636e,
+       bmdDeckLinkConfigVideoOutputConversionMode      = 0x766f636d,
+       bmdDeckLinkConfigAnalogVideoOutputFlags = 0x61766f66,
+       bmdDeckLinkConfigReferenceInputTimingOffset     = 0x676c6f74,
+       bmdDeckLinkConfigVideoOutputIdleOperation       = 0x766f696f,
+       bmdDeckLinkConfigDefaultVideoOutputMode = 0x64766f6d,
+       bmdDeckLinkConfigDefaultVideoOutputModeFlags    = 0x64766f66,
+       bmdDeckLinkConfigVideoOutputComponentLumaGain   = 0x6f636c67,
+       bmdDeckLinkConfigVideoOutputComponentChromaBlueGain     = 0x6f636362,
+       bmdDeckLinkConfigVideoOutputComponentChromaRedGain      = 0x6f636372,
+       bmdDeckLinkConfigVideoOutputCompositeLumaGain   = 0x6f696c67,
+       bmdDeckLinkConfigVideoOutputCompositeChromaGain = 0x6f696367,
+       bmdDeckLinkConfigVideoOutputSVideoLumaGain      = 0x6f736c67,
+       bmdDeckLinkConfigVideoOutputSVideoChromaGain    = 0x6f736367,
+       bmdDeckLinkConfigVideoInputScanning     = 0x76697363,
+       bmdDeckLinkConfigUseDedicatedLTCInput   = 0x646c7463,
+       bmdDeckLinkConfigVideoInputConnection   = 0x7669636e,
+       bmdDeckLinkConfigAnalogVideoInputFlags  = 0x61766966,
+       bmdDeckLinkConfigVideoInputConversionMode       = 0x7669636d,
+       bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame = 0x70646966,
+       bmdDeckLinkConfigVANCSourceLine1Mapping = 0x76736c31,
+       bmdDeckLinkConfigVANCSourceLine2Mapping = 0x76736c32,
+       bmdDeckLinkConfigVANCSourceLine3Mapping = 0x76736c33,
+       bmdDeckLinkConfigVideoInputComponentLumaGain    = 0x69636c67,
+       bmdDeckLinkConfigVideoInputComponentChromaBlueGain      = 0x69636362,
+       bmdDeckLinkConfigVideoInputComponentChromaRedGain       = 0x69636372,
+       bmdDeckLinkConfigVideoInputCompositeLumaGain    = 0x69696c67,
+       bmdDeckLinkConfigVideoInputCompositeChromaGain  = 0x69696367,
+       bmdDeckLinkConfigVideoInputSVideoLumaGain       = 0x69736c67,
+       bmdDeckLinkConfigVideoInputSVideoChromaGain     = 0x69736367,
+       bmdDeckLinkConfigAudioInputConnection   = 0x6169636e,
+       bmdDeckLinkConfigAnalogAudioInputScaleChannel1  = 0x61697331,
+       bmdDeckLinkConfigAnalogAudioInputScaleChannel2  = 0x61697332,
+       bmdDeckLinkConfigAnalogAudioInputScaleChannel3  = 0x61697333,
+       bmdDeckLinkConfigAnalogAudioInputScaleChannel4  = 0x61697334,
+       bmdDeckLinkConfigDigitalAudioInputScale = 0x64616973,
+       bmdDeckLinkConfigAudioOutputAESAnalogSwitch     = 0x616f6161,
+       bmdDeckLinkConfigAnalogAudioOutputScaleChannel1 = 0x616f7331,
+       bmdDeckLinkConfigAnalogAudioOutputScaleChannel2 = 0x616f7332,
+       bmdDeckLinkConfigAnalogAudioOutputScaleChannel3 = 0x616f7333,
+       bmdDeckLinkConfigAnalogAudioOutputScaleChannel4 = 0x616f7334,
+       bmdDeckLinkConfigDigitalAudioOutputScale        = 0x64616f73
+    }  BMDDeckLinkConfigurationID;
+
+
+typedef unsigned long BMDDeckControlStatusFlags;
+typedef unsigned long BMDDeckControlExportModeOpsFlags;
+#if 0
+typedef enum _BMDDeckControlStatusFlags BMDDeckControlStatusFlags;
+
+typedef enum _BMDDeckControlExportModeOpsFlags BMDDeckControlExportModeOpsFlags;
+
+#endif
+typedef /* [v1_enum] */ 
+enum _BMDDeckControlMode
+    {  bmdDeckControlNotOpened = 0x6e746f70,
+       bmdDeckControlVTRControlMode    = 0x76747263,
+       bmdDeckControlExportMode        = 0x6578706d,
+       bmdDeckControlCaptureMode       = 0x6361706d
+    }  BMDDeckControlMode;
+
+typedef /* [v1_enum] */ 
+enum _BMDDeckControlEvent
+    {  bmdDeckControlAbortedEvent      = 0x61627465,
+       bmdDeckControlPrepareForExportEvent     = 0x70666565,
+       bmdDeckControlExportCompleteEvent       = 0x65786365,
+       bmdDeckControlPrepareForCaptureEvent    = 0x70666365,
+       bmdDeckControlCaptureCompleteEvent      = 0x63636576
+    }  BMDDeckControlEvent;
+
+typedef /* [v1_enum] */ 
+enum _BMDDeckControlVTRControlState
+    {  bmdDeckControlNotInVTRControlMode       = 0x6e76636d,
+       bmdDeckControlVTRControlPlaying = 0x76747270,
+       bmdDeckControlVTRControlRecording       = 0x76747272,
+       bmdDeckControlVTRControlStill   = 0x76747261,
+       bmdDeckControlVTRControlShuttleForward  = 0x76747366,
+       bmdDeckControlVTRControlShuttleReverse  = 0x76747372,
+       bmdDeckControlVTRControlJogForward      = 0x76746a66,
+       bmdDeckControlVTRControlJogReverse      = 0x76746a72,
+       bmdDeckControlVTRControlStopped = 0x7674726f
+    }  BMDDeckControlVTRControlState;
+
+/* [v1_enum] */ 
+enum _BMDDeckControlStatusFlags
+    {  bmdDeckControlStatusDeckConnected       = ( 1 << 0 ) ,
+       bmdDeckControlStatusRemoteMode  = ( 1 << 1 ) ,
+       bmdDeckControlStatusRecordInhibited     = ( 1 << 2 ) ,
+       bmdDeckControlStatusCassetteOut = ( 1 << 3 ) 
+    } ;
+/* [v1_enum] */ 
+enum _BMDDeckControlExportModeOpsFlags
+    {  bmdDeckControlExportModeInsertVideo     = ( 1 << 0 ) ,
+       bmdDeckControlExportModeInsertAudio1    = ( 1 << 1 ) ,
+       bmdDeckControlExportModeInsertAudio2    = ( 1 << 2 ) ,
+       bmdDeckControlExportModeInsertAudio3    = ( 1 << 3 ) ,
+       bmdDeckControlExportModeInsertAudio4    = ( 1 << 4 ) ,
+       bmdDeckControlExportModeInsertAudio5    = ( 1 << 5 ) ,
+       bmdDeckControlExportModeInsertAudio6    = ( 1 << 6 ) ,
+       bmdDeckControlExportModeInsertAudio7    = ( 1 << 7 ) ,
+       bmdDeckControlExportModeInsertAudio8    = ( 1 << 8 ) ,
+       bmdDeckControlExportModeInsertAudio9    = ( 1 << 9 ) ,
+       bmdDeckControlExportModeInsertAudio10   = ( 1 << 10 ) ,
+       bmdDeckControlExportModeInsertAudio11   = ( 1 << 11 ) ,
+       bmdDeckControlExportModeInsertAudio12   = ( 1 << 12 ) ,
+       bmdDeckControlExportModeInsertTimeCode  = ( 1 << 13 ) ,
+       bmdDeckControlExportModeInsertAssemble  = ( 1 << 14 ) ,
+       bmdDeckControlExportModeInsertPreview   = ( 1 << 15 ) ,
+       bmdDeckControlUseManualExport   = ( 1 << 16 ) 
+    } ;
+typedef /* [v1_enum] */ 
+enum _BMDDeckControlError
+    {  bmdDeckControlNoError   = 0x6e6f6572,
+       bmdDeckControlModeError = 0x6d6f6572,
+       bmdDeckControlMissedInPointError        = 0x6d696572,
+       bmdDeckControlDeckTimeoutError  = 0x64746572,
+       bmdDeckControlCommandFailedError        = 0x63666572,
+       bmdDeckControlDeviceAlreadyOpenedError  = 0x64616c6f,
+       bmdDeckControlFailedToOpenDeviceError   = 0x66646572,
+       bmdDeckControlInLocalModeError  = 0x6c6d6572,
+       bmdDeckControlEndOfTapeError    = 0x65746572,
+       bmdDeckControlUserAbortError    = 0x75616572,
+       bmdDeckControlNoTapeInDeckError = 0x6e746572,
+       bmdDeckControlNoVideoFromCardError      = 0x6e766663,
+       bmdDeckControlNoCommunicationError      = 0x6e636f6d,
+       bmdDeckControlBufferTooSmallError       = 0x6274736d,
+       bmdDeckControlBadChecksumError  = 0x63686b73,
+       bmdDeckControlUnknownError      = 0x756e6572
+    }  BMDDeckControlError;
+
+
+
+#if 0
+#endif
+typedef /* [v1_enum] */ 
+enum _BMDStreamingDeviceMode
+    {  bmdStreamingDeviceIdle  = 0x69646c65,
+       bmdStreamingDeviceEncoding      = 0x656e636f,
+       bmdStreamingDeviceStopping      = 0x73746f70,
+       bmdStreamingDeviceUnknown       = 0x6d756e6b
+    }  BMDStreamingDeviceMode;
+
+typedef /* [v1_enum] */ 
+enum _BMDStreamingEncodingFrameRate
+    {  bmdStreamingEncodedFrameRate50i = 0x65353069,
+       bmdStreamingEncodedFrameRate5994i       = 0x65353969,
+       bmdStreamingEncodedFrameRate60i = 0x65363069,
+       bmdStreamingEncodedFrameRate2398p       = 0x65323370,
+       bmdStreamingEncodedFrameRate24p = 0x65323470,
+       bmdStreamingEncodedFrameRate25p = 0x65323570,
+       bmdStreamingEncodedFrameRate2997p       = 0x65323970,
+       bmdStreamingEncodedFrameRate30p = 0x65333070,
+       bmdStreamingEncodedFrameRate50p = 0x65353070,
+       bmdStreamingEncodedFrameRate5994p       = 0x65353970,
+       bmdStreamingEncodedFrameRate60p = 0x65363070
+    }  BMDStreamingEncodingFrameRate;
+
+typedef /* [v1_enum] */ 
+enum _BMDStreamingEncodingSupport
+    {  bmdStreamingEncodingModeNotSupported    = 0,
+       bmdStreamingEncodingModeSupported       = ( bmdStreamingEncodingModeNotSupported + 1 ) ,
+       bmdStreamingEncodingModeSupportedWithChanges    = ( bmdStreamingEncodingModeSupported + 1 ) 
+    }  BMDStreamingEncodingSupport;
+
+typedef /* [v1_enum] */ 
+enum _BMDStreamingVideoCodec
+    {  bmdStreamingVideoCodecH264      = 0x48323634
+    }  BMDStreamingVideoCodec;
+
+typedef /* [v1_enum] */ 
+enum _BMDStreamingH264Profile
+    {  bmdStreamingH264ProfileHigh     = 0x68696768,
+       bmdStreamingH264ProfileMain     = 0x6d61696e,
+       bmdStreamingH264ProfileBaseline = 0x62617365
+    }  BMDStreamingH264Profile;
+
+typedef /* [v1_enum] */ 
+enum _BMDStreamingH264Level
+    {  bmdStreamingH264Level12 = 0x6c763132,
+       bmdStreamingH264Level13 = 0x6c763133,
+       bmdStreamingH264Level2  = 0x6c763220,
+       bmdStreamingH264Level21 = 0x6c763231,
+       bmdStreamingH264Level22 = 0x6c763232,
+       bmdStreamingH264Level3  = 0x6c763320,
+       bmdStreamingH264Level31 = 0x6c763331,
+       bmdStreamingH264Level32 = 0x6c763332,
+       bmdStreamingH264Level4  = 0x6c763420,
+       bmdStreamingH264Level41 = 0x6c763431,
+       bmdStreamingH264Level42 = 0x6c763432
+    }  BMDStreamingH264Level;
+
+typedef /* [v1_enum] */ 
+enum _BMDStreamingH264EntropyCoding
+    {  bmdStreamingH264EntropyCodingCAVLC      = 0x45564c43,
+       bmdStreamingH264EntropyCodingCABAC      = 0x45424143
+    }  BMDStreamingH264EntropyCoding;
+
+typedef /* [v1_enum] */ 
+enum _BMDStreamingAudioCodec
+    {  bmdStreamingAudioCodecAAC       = 0x41414320
+    }  BMDStreamingAudioCodec;
+
+typedef /* [v1_enum] */ 
+enum _BMDStreamingEncodingModePropertyID
+    {  bmdStreamingEncodingPropertyVideoFrameRate      = 0x76667274,
+       bmdStreamingEncodingPropertyVideoBitRateKbps    = 0x76627274,
+       bmdStreamingEncodingPropertyH264Profile = 0x68707266,
+       bmdStreamingEncodingPropertyH264Level   = 0x686c766c,
+       bmdStreamingEncodingPropertyH264EntropyCoding   = 0x68656e74,
+       bmdStreamingEncodingPropertyH264HasBFrames      = 0x68426672,
+       bmdStreamingEncodingPropertyAudioCodec  = 0x61636463,
+       bmdStreamingEncodingPropertyAudioSampleRate     = 0x61737274,
+       bmdStreamingEncodingPropertyAudioChannelCount   = 0x61636863,
+       bmdStreamingEncodingPropertyAudioBitRateKbps    = 0x61627274
+    }  BMDStreamingEncodingModePropertyID;
+
+
+
+
+
+
+
+
+
+
+
+
+typedef unsigned long BMDFrameFlags;
+typedef unsigned long BMDVideoInputFlags;
+typedef unsigned long BMDVideoInputFormatChangedEvents;
+typedef unsigned long BMDDetectedVideoInputFormatFlags;
+typedef unsigned long BMDAnalogVideoFlags;
+typedef unsigned long BMDDeviceBusyState;
+#if 0
+typedef enum _BMDFrameFlags BMDFrameFlags;
+
+typedef enum _BMDVideoInputFlags BMDVideoInputFlags;
+
+typedef enum _BMDVideoInputFormatChangedEvents BMDVideoInputFormatChangedEvents;
+
+typedef enum _BMDDetectedVideoInputFormatFlags BMDDetectedVideoInputFormatFlags;
+
+typedef enum _BMDAnalogVideoFlags BMDAnalogVideoFlags;
+
+typedef enum _BMDDeviceBusyState BMDDeviceBusyState;
+
+#endif
+typedef /* [v1_enum] */ 
+enum _BMDVideoOutputFlags
+    {  bmdVideoOutputFlagDefault       = 0,
+       bmdVideoOutputVANC      = ( 1 << 0 ) ,
+       bmdVideoOutputVITC      = ( 1 << 1 ) ,
+       bmdVideoOutputRP188     = ( 1 << 2 ) ,
+       bmdVideoOutputDualStream3D      = ( 1 << 4 ) 
+    }  BMDVideoOutputFlags;
+
+/* [v1_enum] */ 
+enum _BMDFrameFlags
+    {  bmdFrameFlagDefault     = 0,
+       bmdFrameFlagFlipVertical        = ( 1 << 0 ) ,
+       bmdFrameHasNoInputSource        = ( 1 << 31 ) 
+    } ;
+/* [v1_enum] */ 
+enum _BMDVideoInputFlags
+    {  bmdVideoInputFlagDefault        = 0,
+       bmdVideoInputEnableFormatDetection      = ( 1 << 0 ) ,
+       bmdVideoInputDualStream3D       = ( 1 << 1 ) 
+    } ;
+/* [v1_enum] */ 
+enum _BMDVideoInputFormatChangedEvents
+    {  bmdVideoInputDisplayModeChanged = ( 1 << 0 ) ,
+       bmdVideoInputFieldDominanceChanged      = ( 1 << 1 ) ,
+       bmdVideoInputColorspaceChanged  = ( 1 << 2 ) 
+    } ;
+/* [v1_enum] */ 
+enum _BMDDetectedVideoInputFormatFlags
+    {  bmdDetectedVideoInputYCbCr422   = ( 1 << 0 ) ,
+       bmdDetectedVideoInputRGB444     = ( 1 << 1 ) 
+    } ;
+typedef /* [v1_enum] */ 
+enum _BMDOutputFrameCompletionResult
+    {  bmdOutputFrameCompleted = 0,
+       bmdOutputFrameDisplayedLate     = ( bmdOutputFrameCompleted + 1 ) ,
+       bmdOutputFrameDropped   = ( bmdOutputFrameDisplayedLate + 1 ) ,
+       bmdOutputFrameFlushed   = ( bmdOutputFrameDropped + 1 ) 
+    }  BMDOutputFrameCompletionResult;
+
+typedef /* [v1_enum] */ 
+enum _BMDReferenceStatus
+    {  bmdReferenceNotSupportedByHardware      = ( 1 << 0 ) ,
+       bmdReferenceLocked      = ( 1 << 1 ) 
+    }  BMDReferenceStatus;
+
+typedef /* [v1_enum] */ 
+enum _BMDAudioSampleRate
+    {  bmdAudioSampleRate48kHz = 48000
+    }  BMDAudioSampleRate;
+
+typedef /* [v1_enum] */ 
+enum _BMDAudioSampleType
+    {  bmdAudioSampleType16bitInteger  = 16,
+       bmdAudioSampleType32bitInteger  = 32
+    }  BMDAudioSampleType;
+
+typedef /* [v1_enum] */ 
+enum _BMDAudioOutputStreamType
+    {  bmdAudioOutputStreamContinuous  = 0,
+       bmdAudioOutputStreamContinuousDontResample      = ( bmdAudioOutputStreamContinuous + 1 ) ,
+       bmdAudioOutputStreamTimestamped = ( bmdAudioOutputStreamContinuousDontResample + 1 ) 
+    }  BMDAudioOutputStreamType;
+
+typedef /* [v1_enum] */ 
+enum _BMDDisplayModeSupport
+    {  bmdDisplayModeNotSupported      = 0,
+       bmdDisplayModeSupported = ( bmdDisplayModeNotSupported + 1 ) ,
+       bmdDisplayModeSupportedWithConversion   = ( bmdDisplayModeSupported + 1 ) 
+    }  BMDDisplayModeSupport;
+
+typedef /* [v1_enum] */ 
+enum _BMDTimecodeFormat
+    {  bmdTimecodeRP188VITC1   = 0x72707631,
+       bmdTimecodeRP188VITC2   = 0x72703132,
+       bmdTimecodeRP188LTC     = 0x72706c74,
+       bmdTimecodeRP188Any     = 0x72703138,
+       bmdTimecodeVITC = 0x76697463,
+       bmdTimecodeVITCField2   = 0x76697432,
+       bmdTimecodeSerial       = 0x73657269
+    }  BMDTimecodeFormat;
+
+/* [v1_enum] */ 
+enum _BMDAnalogVideoFlags
+    {  bmdAnalogVideoFlagCompositeSetup75      = ( 1 << 0 ) ,
+       bmdAnalogVideoFlagComponentBetacamLevels        = ( 1 << 1 ) 
+    } ;
+typedef /* [v1_enum] */ 
+enum _BMDAudioConnection
+    {  bmdAudioConnectionEmbedded      = 0x656d6264,
+       bmdAudioConnectionAESEBU        = 0x61657320,
+       bmdAudioConnectionAnalog        = 0x616e6c67,
+       bmdAudioConnectionAnalogXLR     = 0x61786c72,
+       bmdAudioConnectionAnalogRCA     = 0x61726361
+    }  BMDAudioConnection;
+
+typedef /* [v1_enum] */ 
+enum _BMDAudioOutputAnalogAESSwitch
+    {  bmdAudioOutputSwitchAESEBU      = 0x61657320,
+       bmdAudioOutputSwitchAnalog      = 0x616e6c67
+    }  BMDAudioOutputAnalogAESSwitch;
+
+typedef /* [v1_enum] */ 
+enum _BMDVideoOutputConversionMode
+    {  bmdNoVideoOutputConversion      = 0x6e6f6e65,
+       bmdVideoOutputLetterboxDownconversion   = 0x6c746278,
+       bmdVideoOutputAnamorphicDownconversion  = 0x616d7068,
+       bmdVideoOutputHD720toHD1080Conversion   = 0x37323063,
+       bmdVideoOutputHardwareLetterboxDownconversion   = 0x48576c62,
+       bmdVideoOutputHardwareAnamorphicDownconversion  = 0x4857616d,
+       bmdVideoOutputHardwareCenterCutDownconversion   = 0x48576363,
+       bmdVideoOutputHardware720p1080pCrossconversion  = 0x78636170,
+       bmdVideoOutputHardwareAnamorphic720pUpconversion        = 0x75613770,
+       bmdVideoOutputHardwareAnamorphic1080iUpconversion       = 0x75613169,
+       bmdVideoOutputHardwareAnamorphic149To720pUpconversion   = 0x75343770,
+       bmdVideoOutputHardwareAnamorphic149To1080iUpconversion  = 0x75343169,
+       bmdVideoOutputHardwarePillarbox720pUpconversion = 0x75703770,
+       bmdVideoOutputHardwarePillarbox1080iUpconversion        = 0x75703169
+    }  BMDVideoOutputConversionMode;
+
+typedef /* [v1_enum] */ 
+enum _BMDVideoInputConversionMode
+    {  bmdNoVideoInputConversion       = 0x6e6f6e65,
+       bmdVideoInputLetterboxDownconversionFromHD1080  = 0x31306c62,
+       bmdVideoInputAnamorphicDownconversionFromHD1080 = 0x3130616d,
+       bmdVideoInputLetterboxDownconversionFromHD720   = 0x37326c62,
+       bmdVideoInputAnamorphicDownconversionFromHD720  = 0x3732616d,
+       bmdVideoInputLetterboxUpconversion      = 0x6c627570,
+       bmdVideoInputAnamorphicUpconversion     = 0x616d7570
+    }  BMDVideoInputConversionMode;
+
+typedef /* [v1_enum] */ 
+enum _BMDVideo3DPackingFormat
+    {  bmdVideo3DPackingSidebySideHalf = 0x73627368,
+       bmdVideo3DPackingLinebyLine     = 0x6c62796c,
+       bmdVideo3DPackingTopAndBottom   = 0x7461626f,
+       bmdVideo3DPackingFramePacking   = 0x6672706b,
+       bmdVideo3DPackingLeftOnly       = 0x6c656674,
+       bmdVideo3DPackingRightOnly      = 0x72696768
+    }  BMDVideo3DPackingFormat;
+
+typedef /* [v1_enum] */ 
+enum _BMDIdleVideoOutputOperation
+    {  bmdIdleVideoOutputBlack = 0x626c6163,
+       bmdIdleVideoOutputLastFrame     = 0x6c616661,
+       bmdIdleVideoOutputDesktop       = 0x6465736b
+    }  BMDIdleVideoOutputOperation;
+
+typedef /* [v1_enum] */ 
+enum _BMDDeckLinkAttributeID
+    {  BMDDeckLinkSupportsInternalKeying       = 0x6b657969,
+       BMDDeckLinkSupportsExternalKeying       = 0x6b657965,
+       BMDDeckLinkSupportsHDKeying     = 0x6b657968,
+       BMDDeckLinkSupportsInputFormatDetection = 0x696e6664,
+       BMDDeckLinkHasReferenceInput    = 0x6872696e,
+       BMDDeckLinkHasSerialPort        = 0x68737074,
+       BMDDeckLinkHasAnalogVideoOutputGain     = 0x61766f67,
+       BMDDeckLinkCanOnlyAdjustOverallVideoOutputGain  = 0x6f766f67,
+       BMDDeckLinkHasVideoInputAntiAliasingFilter      = 0x6161666c,
+       BMDDeckLinkHasBypass    = 0x62797073,
+       BMDDeckLinkSupportsDesktopDisplay       = 0x65787464,
+       BMDDeckLinkSupportsClockTimingAdjustment        = 0x63746164,
+       BMDDeckLinkMaximumAudioChannels = 0x6d616368,
+       BMDDeckLinkNumberOfSubDevices   = 0x6e736264,
+       BMDDeckLinkSubDeviceIndex       = 0x73756269,
+       BMDDeckLinkVideoOutputConnections       = 0x766f636e,
+       BMDDeckLinkVideoInputConnections        = 0x7669636e,
+       BMDDeckLinkDeviceBusyState      = 0x64627374,
+       BMDDeckLinkVideoIOSupport       = 0x76696f73,
+       BMDDeckLinkVideoInputGainMinimum        = 0x7669676d,
+       BMDDeckLinkVideoInputGainMaximum        = 0x76696778,
+       BMDDeckLinkVideoOutputGainMinimum       = 0x766f676d,
+       BMDDeckLinkVideoOutputGainMaximum       = 0x766f6778,
+       BMDDeckLinkSerialPortDeviceName = 0x736c706e
+    }  BMDDeckLinkAttributeID;
+
+typedef /* [v1_enum] */ 
+enum _BMDDeckLinkAPIInformationID
+    {  BMDDeckLinkAPIVersion   = 0x76657273
+    }  BMDDeckLinkAPIInformationID;
+
+/* [v1_enum] */ 
+enum _BMDDeviceBusyState
+    {  bmdDeviceCaptureBusy    = ( 1 << 0 ) ,
+       bmdDevicePlaybackBusy   = ( 1 << 1 ) ,
+       bmdDeviceSerialPortBusy = ( 1 << 2 ) 
+    } ;
+typedef /* [v1_enum] */ 
+enum _BMDVideoIOSupport
+    {  bmdDeviceSupportsCapture        = ( 1 << 0 ) ,
+       bmdDeviceSupportsPlayback       = ( 1 << 1 ) 
+    }  BMDVideoIOSupport;
+
+typedef /* [v1_enum] */ 
+enum _BMD3DPreviewFormat
+    {  bmd3DPreviewFormatDefault       = 0x64656661,
+       bmd3DPreviewFormatLeftOnly      = 0x6c656674,
+       bmd3DPreviewFormatRightOnly     = 0x72696768,
+       bmd3DPreviewFormatSideBySide    = 0x73696465,
+       bmd3DPreviewFormatTopBottom     = 0x746f7062
+    }  BMD3DPreviewFormat;
+
+typedef /* [v1_enum] */ 
+enum _BMDNotifications
+    {  bmdPreferencesChanged   = 0x70726566
+    }  BMDNotifications;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+typedef /* [v1_enum] */ 
+enum _BMDDeckControlVTRControlState_v8_1
+    {  bmdDeckControlNotInVTRControlMode_v8_1  = 0x6e76636d,
+       bmdDeckControlVTRControlPlaying_v8_1    = 0x76747270,
+       bmdDeckControlVTRControlRecording_v8_1  = 0x76747272,
+       bmdDeckControlVTRControlStill_v8_1      = 0x76747261,
+       bmdDeckControlVTRControlSeeking_v8_1    = 0x76747273,
+       bmdDeckControlVTRControlStopped_v8_1    = 0x7674726f
+    }  BMDDeckControlVTRControlState_v8_1;
+
+
+
+typedef /* [v1_enum] */ 
+enum _BMDVideoConnection_v7_6
+    {  bmdVideoConnectionSDI_v7_6      = 0x73646920,
+       bmdVideoConnectionHDMI_v7_6     = 0x68646d69,
+       bmdVideoConnectionOpticalSDI_v7_6       = 0x6f707469,
+       bmdVideoConnectionComponent_v7_6        = 0x63706e74,
+       bmdVideoConnectionComposite_v7_6        = 0x636d7374,
+       bmdVideoConnectionSVideo_v7_6   = 0x73766964
+    }  BMDVideoConnection_v7_6;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+EXTERN_C const IID LIBID_DeckLinkAPI;
+
+#ifndef __IDeckLinkTimecode_INTERFACE_DEFINED__
+#define __IDeckLinkTimecode_INTERFACE_DEFINED__
+
+/* interface IDeckLinkTimecode */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkTimecode;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("BC6CFBD3-8317-4325-AC1C-1216391E9340")
+    IDeckLinkTimecode : public IUnknown
+    {
+    public:
+        virtual BMDTimecodeBCD STDMETHODCALLTYPE GetBCD( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetComponents( 
+            /* [out] */ unsigned char *hours,
+            /* [out] */ unsigned char *minutes,
+            /* [out] */ unsigned char *seconds,
+            /* [out] */ unsigned char *frames) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetString( 
+            /* [out] */ BSTR *timecode) = 0;
+        
+        virtual BMDTimecodeFlags STDMETHODCALLTYPE GetFlags( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecodeUserBits( 
+            /* [out] */ BMDTimecodeUserBits *userBits) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkTimecodeVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkTimecode * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkTimecode * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkTimecode * This);
+        
+        BMDTimecodeBCD ( STDMETHODCALLTYPE *GetBCD )( 
+            IDeckLinkTimecode * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetComponents )( 
+            IDeckLinkTimecode * This,
+            /* [out] */ unsigned char *hours,
+            /* [out] */ unsigned char *minutes,
+            /* [out] */ unsigned char *seconds,
+            /* [out] */ unsigned char *frames);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetString )( 
+            IDeckLinkTimecode * This,
+            /* [out] */ BSTR *timecode);
+        
+        BMDTimecodeFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkTimecode * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecodeUserBits )( 
+            IDeckLinkTimecode * This,
+            /* [out] */ BMDTimecodeUserBits *userBits);
+        
+        END_INTERFACE
+    } IDeckLinkTimecodeVtbl;
+
+    interface IDeckLinkTimecode
+    {
+        CONST_VTBL struct IDeckLinkTimecodeVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkTimecode_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkTimecode_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkTimecode_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkTimecode_GetBCD(This) \
+    ( (This)->lpVtbl -> GetBCD(This) ) 
+
+#define IDeckLinkTimecode_GetComponents(This,hours,minutes,seconds,frames)     \
+    ( (This)->lpVtbl -> GetComponents(This,hours,minutes,seconds,frames) ) 
+
+#define IDeckLinkTimecode_GetString(This,timecode)     \
+    ( (This)->lpVtbl -> GetString(This,timecode) ) 
+
+#define IDeckLinkTimecode_GetFlags(This)       \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkTimecode_GetTimecodeUserBits(This,userBits)   \
+    ( (This)->lpVtbl -> GetTimecodeUserBits(This,userBits) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkTimecode_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayModeIterator_INTERFACE_DEFINED__
+#define __IDeckLinkDisplayModeIterator_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDisplayModeIterator */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDisplayModeIterator;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("9C88499F-F601-4021-B80B-032E4EB41C35")
+    IDeckLinkDisplayModeIterator : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Next( 
+            /* [out] */ IDeckLinkDisplayMode **deckLinkDisplayMode) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDisplayModeIteratorVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDisplayModeIterator * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDisplayModeIterator * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDisplayModeIterator * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Next )( 
+            IDeckLinkDisplayModeIterator * This,
+            /* [out] */ IDeckLinkDisplayMode **deckLinkDisplayMode);
+        
+        END_INTERFACE
+    } IDeckLinkDisplayModeIteratorVtbl;
+
+    interface IDeckLinkDisplayModeIterator
+    {
+        CONST_VTBL struct IDeckLinkDisplayModeIteratorVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDisplayModeIterator_QueryInterface(This,riid,ppvObject)       \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDisplayModeIterator_AddRef(This)      \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDisplayModeIterator_Release(This)     \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDisplayModeIterator_Next(This,deckLinkDisplayMode)    \
+    ( (This)->lpVtbl -> Next(This,deckLinkDisplayMode) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDisplayModeIterator_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayMode_INTERFACE_DEFINED__
+#define __IDeckLinkDisplayMode_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDisplayMode */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDisplayMode;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("3EB2C1AB-0A3D-4523-A3AD-F40D7FB14E78")
+    IDeckLinkDisplayMode : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetName( 
+            /* [out] */ BSTR *name) = 0;
+        
+        virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetWidth( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetHeight( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFrameRate( 
+            /* [out] */ BMDTimeValue *frameDuration,
+            /* [out] */ BMDTimeScale *timeScale) = 0;
+        
+        virtual BMDFieldDominance STDMETHODCALLTYPE GetFieldDominance( void) = 0;
+        
+        virtual BMDDisplayModeFlags STDMETHODCALLTYPE GetFlags( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDisplayModeVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDisplayMode * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDisplayMode * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDisplayMode * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetName )( 
+            IDeckLinkDisplayMode * This,
+            /* [out] */ BSTR *name);
+        
+        BMDDisplayMode ( STDMETHODCALLTYPE *GetDisplayMode )( 
+            IDeckLinkDisplayMode * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkDisplayMode * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkDisplayMode * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFrameRate )( 
+            IDeckLinkDisplayMode * This,
+            /* [out] */ BMDTimeValue *frameDuration,
+            /* [out] */ BMDTimeScale *timeScale);
+        
+        BMDFieldDominance ( STDMETHODCALLTYPE *GetFieldDominance )( 
+            IDeckLinkDisplayMode * This);
+        
+        BMDDisplayModeFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkDisplayMode * This);
+        
+        END_INTERFACE
+    } IDeckLinkDisplayModeVtbl;
+
+    interface IDeckLinkDisplayMode
+    {
+        CONST_VTBL struct IDeckLinkDisplayModeVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDisplayMode_QueryInterface(This,riid,ppvObject)       \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDisplayMode_AddRef(This)      \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDisplayMode_Release(This)     \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDisplayMode_GetName(This,name)        \
+    ( (This)->lpVtbl -> GetName(This,name) ) 
+
+#define IDeckLinkDisplayMode_GetDisplayMode(This)      \
+    ( (This)->lpVtbl -> GetDisplayMode(This) ) 
+
+#define IDeckLinkDisplayMode_GetWidth(This)    \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkDisplayMode_GetHeight(This)   \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkDisplayMode_GetFrameRate(This,frameDuration,timeScale)        \
+    ( (This)->lpVtbl -> GetFrameRate(This,frameDuration,timeScale) ) 
+
+#define IDeckLinkDisplayMode_GetFieldDominance(This)   \
+    ( (This)->lpVtbl -> GetFieldDominance(This) ) 
+
+#define IDeckLinkDisplayMode_GetFlags(This)    \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDisplayMode_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLink_INTERFACE_DEFINED__
+#define __IDeckLink_INTERFACE_DEFINED__
+
+/* interface IDeckLink */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLink;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("C418FBDD-0587-48ED-8FE5-640F0A14AF91")
+    IDeckLink : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetModelName( 
+            /* [out] */ BSTR *modelName) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayName( 
+            /* [out] */ BSTR *displayName) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLink * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLink * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLink * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetModelName )( 
+            IDeckLink * This,
+            /* [out] */ BSTR *modelName);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayName )( 
+            IDeckLink * This,
+            /* [out] */ BSTR *displayName);
+        
+        END_INTERFACE
+    } IDeckLinkVtbl;
+
+    interface IDeckLink
+    {
+        CONST_VTBL struct IDeckLinkVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLink_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLink_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLink_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLink_GetModelName(This,modelName) \
+    ( (This)->lpVtbl -> GetModelName(This,modelName) ) 
+
+#define IDeckLink_GetDisplayName(This,displayName)     \
+    ( (This)->lpVtbl -> GetDisplayName(This,displayName) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLink_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkConfiguration_INTERFACE_DEFINED__
+#define __IDeckLinkConfiguration_INTERFACE_DEFINED__
+
+/* interface IDeckLinkConfiguration */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkConfiguration;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("C679A35B-610C-4D09-B748-1D0478100FC0")
+    IDeckLinkConfiguration : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE SetFlag( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ BOOL value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFlag( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ BOOL *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetInt( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ LONGLONG value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetInt( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ LONGLONG *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetFloat( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ double value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFloat( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ double *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetString( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ BSTR value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetString( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ BSTR *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkConfigurationVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkConfiguration * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkConfiguration * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkConfiguration * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFlag )( 
+            IDeckLinkConfiguration * This,
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ BOOL value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFlag )( 
+            IDeckLinkConfiguration * This,
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ BOOL *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetInt )( 
+            IDeckLinkConfiguration * This,
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ LONGLONG value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetInt )( 
+            IDeckLinkConfiguration * This,
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ LONGLONG *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFloat )( 
+            IDeckLinkConfiguration * This,
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ double value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFloat )( 
+            IDeckLinkConfiguration * This,
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ double *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetString )( 
+            IDeckLinkConfiguration * This,
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ BSTR value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetString )( 
+            IDeckLinkConfiguration * This,
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ BSTR *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( 
+            IDeckLinkConfiguration * This);
+        
+        END_INTERFACE
+    } IDeckLinkConfigurationVtbl;
+
+    interface IDeckLinkConfiguration
+    {
+        CONST_VTBL struct IDeckLinkConfigurationVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkConfiguration_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkConfiguration_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkConfiguration_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkConfiguration_SetFlag(This,cfgID,value)       \
+    ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) 
+
+#define IDeckLinkConfiguration_GetFlag(This,cfgID,value)       \
+    ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) 
+
+#define IDeckLinkConfiguration_SetInt(This,cfgID,value)        \
+    ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) 
+
+#define IDeckLinkConfiguration_GetInt(This,cfgID,value)        \
+    ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) 
+
+#define IDeckLinkConfiguration_SetFloat(This,cfgID,value)      \
+    ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) 
+
+#define IDeckLinkConfiguration_GetFloat(This,cfgID,value)      \
+    ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) 
+
+#define IDeckLinkConfiguration_SetString(This,cfgID,value)     \
+    ( (This)->lpVtbl -> SetString(This,cfgID,value) ) 
+
+#define IDeckLinkConfiguration_GetString(This,cfgID,value)     \
+    ( (This)->lpVtbl -> GetString(This,cfgID,value) ) 
+
+#define IDeckLinkConfiguration_WriteConfigurationToPreferences(This)   \
+    ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkConfiguration_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDeckControlStatusCallback_INTERFACE_DEFINED__
+#define __IDeckLinkDeckControlStatusCallback_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDeckControlStatusCallback */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDeckControlStatusCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("53436FFB-B434-4906-BADC-AE3060FFE8EF")
+    IDeckLinkDeckControlStatusCallback : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE TimecodeUpdate( 
+            /* [in] */ BMDTimecodeBCD currentTimecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE VTRControlStateChanged( 
+            /* [in] */ BMDDeckControlVTRControlState newState,
+            /* [in] */ BMDDeckControlError error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DeckControlEventReceived( 
+            /* [in] */ BMDDeckControlEvent event,
+            /* [in] */ BMDDeckControlError error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DeckControlStatusChanged( 
+            /* [in] */ BMDDeckControlStatusFlags flags,
+            /* [in] */ unsigned long mask) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDeckControlStatusCallbackVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDeckControlStatusCallback * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDeckControlStatusCallback * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDeckControlStatusCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *TimecodeUpdate )( 
+            IDeckLinkDeckControlStatusCallback * This,
+            /* [in] */ BMDTimecodeBCD currentTimecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *VTRControlStateChanged )( 
+            IDeckLinkDeckControlStatusCallback * This,
+            /* [in] */ BMDDeckControlVTRControlState newState,
+            /* [in] */ BMDDeckControlError error);
+        
+        HRESULT ( STDMETHODCALLTYPE *DeckControlEventReceived )( 
+            IDeckLinkDeckControlStatusCallback * This,
+            /* [in] */ BMDDeckControlEvent event,
+            /* [in] */ BMDDeckControlError error);
+        
+        HRESULT ( STDMETHODCALLTYPE *DeckControlStatusChanged )( 
+            IDeckLinkDeckControlStatusCallback * This,
+            /* [in] */ BMDDeckControlStatusFlags flags,
+            /* [in] */ unsigned long mask);
+        
+        END_INTERFACE
+    } IDeckLinkDeckControlStatusCallbackVtbl;
+
+    interface IDeckLinkDeckControlStatusCallback
+    {
+        CONST_VTBL struct IDeckLinkDeckControlStatusCallbackVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDeckControlStatusCallback_QueryInterface(This,riid,ppvObject) \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDeckControlStatusCallback_AddRef(This)        \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDeckControlStatusCallback_Release(This)       \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDeckControlStatusCallback_TimecodeUpdate(This,currentTimecode)        \
+    ( (This)->lpVtbl -> TimecodeUpdate(This,currentTimecode) ) 
+
+#define IDeckLinkDeckControlStatusCallback_VTRControlStateChanged(This,newState,error) \
+    ( (This)->lpVtbl -> VTRControlStateChanged(This,newState,error) ) 
+
+#define IDeckLinkDeckControlStatusCallback_DeckControlEventReceived(This,event,error)  \
+    ( (This)->lpVtbl -> DeckControlEventReceived(This,event,error) ) 
+
+#define IDeckLinkDeckControlStatusCallback_DeckControlStatusChanged(This,flags,mask)   \
+    ( (This)->lpVtbl -> DeckControlStatusChanged(This,flags,mask) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDeckControlStatusCallback_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDeckControl_INTERFACE_DEFINED__
+#define __IDeckLinkDeckControl_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDeckControl */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDeckControl;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("8E1C3ACE-19C7-4E00-8B92-D80431D958BE")
+    IDeckLinkDeckControl : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Open( 
+            /* [in] */ BMDTimeScale timeScale,
+            /* [in] */ BMDTimeValue timeValue,
+            /* [in] */ BOOL timecodeIsDropFrame,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Close( 
+            /* [in] */ BOOL standbyOn) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCurrentState( 
+            /* [out] */ BMDDeckControlMode *mode,
+            /* [out] */ BMDDeckControlVTRControlState *vtrControlState,
+            /* [out] */ BMDDeckControlStatusFlags *flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetStandby( 
+            /* [in] */ BOOL standbyOn) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SendCommand( 
+            /* [in] */ unsigned char *inBuffer,
+            /* [in] */ unsigned long inBufferSize,
+            /* [out] */ unsigned char *outBuffer,
+            /* [out] */ unsigned long *outDataSize,
+            /* [in] */ unsigned long outBufferSize,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Play( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Stop( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE TogglePlayStop( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Eject( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GoToTimecode( 
+            /* [in] */ BMDTimecodeBCD timecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FastForward( 
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Rewind( 
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StepForward( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StepBack( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Jog( 
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Shuttle( 
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecodeString( 
+            /* [out] */ BSTR *currentTimeCode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecode( 
+            /* [out] */ IDeckLinkTimecode **currentTimecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecodeBCD( 
+            /* [out] */ BMDTimecodeBCD *currentTimecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetPreroll( 
+            /* [in] */ unsigned long prerollSeconds) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetPreroll( 
+            /* [out] */ unsigned long *prerollSeconds) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetExportOffset( 
+            /* [in] */ long exportOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetExportOffset( 
+            /* [out] */ long *exportOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetManualExportOffset( 
+            /* [out] */ long *deckManualExportOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCaptureOffset( 
+            /* [in] */ long captureOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCaptureOffset( 
+            /* [out] */ long *captureOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartExport( 
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [in] */ BMDDeckControlExportModeOpsFlags exportModeOps,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartCapture( 
+            /* [in] */ BOOL useVITC,
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDeviceID( 
+            /* [out] */ unsigned short *deviceId,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CrashRecordStart( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CrashRecordStop( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IDeckLinkDeckControlStatusCallback *callback) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDeckControlVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDeckControl * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDeckControl * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Open )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ BMDTimeScale timeScale,
+            /* [in] */ BMDTimeValue timeValue,
+            /* [in] */ BOOL timecodeIsDropFrame,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Close )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ BOOL standbyOn);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCurrentState )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BMDDeckControlMode *mode,
+            /* [out] */ BMDDeckControlVTRControlState *vtrControlState,
+            /* [out] */ BMDDeckControlStatusFlags *flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetStandby )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ BOOL standbyOn);
+        
+        HRESULT ( STDMETHODCALLTYPE *SendCommand )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ unsigned char *inBuffer,
+            /* [in] */ unsigned long inBufferSize,
+            /* [out] */ unsigned char *outBuffer,
+            /* [out] */ unsigned long *outDataSize,
+            /* [in] */ unsigned long outBufferSize,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Play )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Stop )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *TogglePlayStop )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Eject )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GoToTimecode )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ BMDTimecodeBCD timecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *FastForward )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Rewind )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *StepForward )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *StepBack )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Jog )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Shuttle )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecodeString )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BSTR *currentTimeCode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ IDeckLinkTimecode **currentTimecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecodeBCD )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BMDTimecodeBCD *currentTimecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetPreroll )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ unsigned long prerollSeconds);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetPreroll )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ unsigned long *prerollSeconds);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetExportOffset )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ long exportOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetExportOffset )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ long *exportOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetManualExportOffset )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ long *deckManualExportOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCaptureOffset )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ long captureOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCaptureOffset )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ long *captureOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartExport )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [in] */ BMDDeckControlExportModeOpsFlags exportModeOps,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartCapture )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ BOOL useVITC,
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDeviceID )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ unsigned short *deviceId,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Abort )( 
+            IDeckLinkDeckControl * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *CrashRecordStart )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *CrashRecordStop )( 
+            IDeckLinkDeckControl * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IDeckLinkDeckControl * This,
+            /* [in] */ IDeckLinkDeckControlStatusCallback *callback);
+        
+        END_INTERFACE
+    } IDeckLinkDeckControlVtbl;
+
+    interface IDeckLinkDeckControl
+    {
+        CONST_VTBL struct IDeckLinkDeckControlVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDeckControl_QueryInterface(This,riid,ppvObject)       \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDeckControl_AddRef(This)      \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDeckControl_Release(This)     \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDeckControl_Open(This,timeScale,timeValue,timecodeIsDropFrame,error)  \
+    ( (This)->lpVtbl -> Open(This,timeScale,timeValue,timecodeIsDropFrame,error) ) 
+
+#define IDeckLinkDeckControl_Close(This,standbyOn)     \
+    ( (This)->lpVtbl -> Close(This,standbyOn) ) 
+
+#define IDeckLinkDeckControl_GetCurrentState(This,mode,vtrControlState,flags)  \
+    ( (This)->lpVtbl -> GetCurrentState(This,mode,vtrControlState,flags) ) 
+
+#define IDeckLinkDeckControl_SetStandby(This,standbyOn)        \
+    ( (This)->lpVtbl -> SetStandby(This,standbyOn) ) 
+
+#define IDeckLinkDeckControl_SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error) \
+    ( (This)->lpVtbl -> SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error) ) 
+
+#define IDeckLinkDeckControl_Play(This,error)  \
+    ( (This)->lpVtbl -> Play(This,error) ) 
+
+#define IDeckLinkDeckControl_Stop(This,error)  \
+    ( (This)->lpVtbl -> Stop(This,error) ) 
+
+#define IDeckLinkDeckControl_TogglePlayStop(This,error)        \
+    ( (This)->lpVtbl -> TogglePlayStop(This,error) ) 
+
+#define IDeckLinkDeckControl_Eject(This,error) \
+    ( (This)->lpVtbl -> Eject(This,error) ) 
+
+#define IDeckLinkDeckControl_GoToTimecode(This,timecode,error) \
+    ( (This)->lpVtbl -> GoToTimecode(This,timecode,error) ) 
+
+#define IDeckLinkDeckControl_FastForward(This,viewTape,error)  \
+    ( (This)->lpVtbl -> FastForward(This,viewTape,error) ) 
+
+#define IDeckLinkDeckControl_Rewind(This,viewTape,error)       \
+    ( (This)->lpVtbl -> Rewind(This,viewTape,error) ) 
+
+#define IDeckLinkDeckControl_StepForward(This,error)   \
+    ( (This)->lpVtbl -> StepForward(This,error) ) 
+
+#define IDeckLinkDeckControl_StepBack(This,error)      \
+    ( (This)->lpVtbl -> StepBack(This,error) ) 
+
+#define IDeckLinkDeckControl_Jog(This,rate,error)      \
+    ( (This)->lpVtbl -> Jog(This,rate,error) ) 
+
+#define IDeckLinkDeckControl_Shuttle(This,rate,error)  \
+    ( (This)->lpVtbl -> Shuttle(This,rate,error) ) 
+
+#define IDeckLinkDeckControl_GetTimecodeString(This,currentTimeCode,error)     \
+    ( (This)->lpVtbl -> GetTimecodeString(This,currentTimeCode,error) ) 
+
+#define IDeckLinkDeckControl_GetTimecode(This,currentTimecode,error)   \
+    ( (This)->lpVtbl -> GetTimecode(This,currentTimecode,error) ) 
+
+#define IDeckLinkDeckControl_GetTimecodeBCD(This,currentTimecode,error)        \
+    ( (This)->lpVtbl -> GetTimecodeBCD(This,currentTimecode,error) ) 
+
+#define IDeckLinkDeckControl_SetPreroll(This,prerollSeconds)   \
+    ( (This)->lpVtbl -> SetPreroll(This,prerollSeconds) ) 
+
+#define IDeckLinkDeckControl_GetPreroll(This,prerollSeconds)   \
+    ( (This)->lpVtbl -> GetPreroll(This,prerollSeconds) ) 
+
+#define IDeckLinkDeckControl_SetExportOffset(This,exportOffsetFields)  \
+    ( (This)->lpVtbl -> SetExportOffset(This,exportOffsetFields) ) 
+
+#define IDeckLinkDeckControl_GetExportOffset(This,exportOffsetFields)  \
+    ( (This)->lpVtbl -> GetExportOffset(This,exportOffsetFields) ) 
+
+#define IDeckLinkDeckControl_GetManualExportOffset(This,deckManualExportOffsetFields)  \
+    ( (This)->lpVtbl -> GetManualExportOffset(This,deckManualExportOffsetFields) ) 
+
+#define IDeckLinkDeckControl_SetCaptureOffset(This,captureOffsetFields)        \
+    ( (This)->lpVtbl -> SetCaptureOffset(This,captureOffsetFields) ) 
+
+#define IDeckLinkDeckControl_GetCaptureOffset(This,captureOffsetFields)        \
+    ( (This)->lpVtbl -> GetCaptureOffset(This,captureOffsetFields) ) 
+
+#define IDeckLinkDeckControl_StartExport(This,inTimecode,outTimecode,exportModeOps,error)      \
+    ( (This)->lpVtbl -> StartExport(This,inTimecode,outTimecode,exportModeOps,error) ) 
+
+#define IDeckLinkDeckControl_StartCapture(This,useVITC,inTimecode,outTimecode,error)   \
+    ( (This)->lpVtbl -> StartCapture(This,useVITC,inTimecode,outTimecode,error) ) 
+
+#define IDeckLinkDeckControl_GetDeviceID(This,deviceId,error)  \
+    ( (This)->lpVtbl -> GetDeviceID(This,deviceId,error) ) 
+
+#define IDeckLinkDeckControl_Abort(This)       \
+    ( (This)->lpVtbl -> Abort(This) ) 
+
+#define IDeckLinkDeckControl_CrashRecordStart(This,error)      \
+    ( (This)->lpVtbl -> CrashRecordStart(This,error) ) 
+
+#define IDeckLinkDeckControl_CrashRecordStop(This,error)       \
+    ( (This)->lpVtbl -> CrashRecordStop(This,error) ) 
+
+#define IDeckLinkDeckControl_SetCallback(This,callback)        \
+    ( (This)->lpVtbl -> SetCallback(This,callback) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDeckControl_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingDeviceNotificationCallback_INTERFACE_DEFINED__
+#define __IBMDStreamingDeviceNotificationCallback_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingDeviceNotificationCallback */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingDeviceNotificationCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("F9531D64-3305-4B29-A387-7F74BB0D0E84")
+    IBMDStreamingDeviceNotificationCallback : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE StreamingDeviceArrived( 
+            /* [in] */ IDeckLink *device) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StreamingDeviceRemoved( 
+            /* [in] */ IDeckLink *device) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StreamingDeviceModeChanged( 
+            /* [in] */ IDeckLink *device,
+            /* [in] */ BMDStreamingDeviceMode mode) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingDeviceNotificationCallbackVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingDeviceNotificationCallback * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingDeviceNotificationCallback * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingDeviceNotificationCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *StreamingDeviceArrived )( 
+            IBMDStreamingDeviceNotificationCallback * This,
+            /* [in] */ IDeckLink *device);
+        
+        HRESULT ( STDMETHODCALLTYPE *StreamingDeviceRemoved )( 
+            IBMDStreamingDeviceNotificationCallback * This,
+            /* [in] */ IDeckLink *device);
+        
+        HRESULT ( STDMETHODCALLTYPE *StreamingDeviceModeChanged )( 
+            IBMDStreamingDeviceNotificationCallback * This,
+            /* [in] */ IDeckLink *device,
+            /* [in] */ BMDStreamingDeviceMode mode);
+        
+        END_INTERFACE
+    } IBMDStreamingDeviceNotificationCallbackVtbl;
+
+    interface IBMDStreamingDeviceNotificationCallback
+    {
+        CONST_VTBL struct IBMDStreamingDeviceNotificationCallbackVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingDeviceNotificationCallback_QueryInterface(This,riid,ppvObject)    \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingDeviceNotificationCallback_AddRef(This)   \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingDeviceNotificationCallback_Release(This)  \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingDeviceNotificationCallback_StreamingDeviceArrived(This,device)    \
+    ( (This)->lpVtbl -> StreamingDeviceArrived(This,device) ) 
+
+#define IBMDStreamingDeviceNotificationCallback_StreamingDeviceRemoved(This,device)    \
+    ( (This)->lpVtbl -> StreamingDeviceRemoved(This,device) ) 
+
+#define IBMDStreamingDeviceNotificationCallback_StreamingDeviceModeChanged(This,device,mode)   \
+    ( (This)->lpVtbl -> StreamingDeviceModeChanged(This,device,mode) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingDeviceNotificationCallback_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingH264InputCallback_INTERFACE_DEFINED__
+#define __IBMDStreamingH264InputCallback_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingH264InputCallback */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingH264InputCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("823C475F-55AE-46F9-890C-537CC5CEDCCA")
+    IBMDStreamingH264InputCallback : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE H264NALPacketArrived( 
+            /* [in] */ IBMDStreamingH264NALPacket *nalPacket) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE H264AudioPacketArrived( 
+            /* [in] */ IBMDStreamingAudioPacket *audioPacket) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE MPEG2TSPacketArrived( 
+            /* [in] */ IBMDStreamingMPEG2TSPacket *tsPacket) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE H264VideoInputConnectorScanningChanged( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE H264VideoInputConnectorChanged( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE H264VideoInputModeChanged( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingH264InputCallbackVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingH264InputCallback * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingH264InputCallback * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingH264InputCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *H264NALPacketArrived )( 
+            IBMDStreamingH264InputCallback * This,
+            /* [in] */ IBMDStreamingH264NALPacket *nalPacket);
+        
+        HRESULT ( STDMETHODCALLTYPE *H264AudioPacketArrived )( 
+            IBMDStreamingH264InputCallback * This,
+            /* [in] */ IBMDStreamingAudioPacket *audioPacket);
+        
+        HRESULT ( STDMETHODCALLTYPE *MPEG2TSPacketArrived )( 
+            IBMDStreamingH264InputCallback * This,
+            /* [in] */ IBMDStreamingMPEG2TSPacket *tsPacket);
+        
+        HRESULT ( STDMETHODCALLTYPE *H264VideoInputConnectorScanningChanged )( 
+            IBMDStreamingH264InputCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *H264VideoInputConnectorChanged )( 
+            IBMDStreamingH264InputCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *H264VideoInputModeChanged )( 
+            IBMDStreamingH264InputCallback * This);
+        
+        END_INTERFACE
+    } IBMDStreamingH264InputCallbackVtbl;
+
+    interface IBMDStreamingH264InputCallback
+    {
+        CONST_VTBL struct IBMDStreamingH264InputCallbackVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingH264InputCallback_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingH264InputCallback_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingH264InputCallback_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingH264InputCallback_H264NALPacketArrived(This,nalPacket)    \
+    ( (This)->lpVtbl -> H264NALPacketArrived(This,nalPacket) ) 
+
+#define IBMDStreamingH264InputCallback_H264AudioPacketArrived(This,audioPacket)        \
+    ( (This)->lpVtbl -> H264AudioPacketArrived(This,audioPacket) ) 
+
+#define IBMDStreamingH264InputCallback_MPEG2TSPacketArrived(This,tsPacket)     \
+    ( (This)->lpVtbl -> MPEG2TSPacketArrived(This,tsPacket) ) 
+
+#define IBMDStreamingH264InputCallback_H264VideoInputConnectorScanningChanged(This)    \
+    ( (This)->lpVtbl -> H264VideoInputConnectorScanningChanged(This) ) 
+
+#define IBMDStreamingH264InputCallback_H264VideoInputConnectorChanged(This)    \
+    ( (This)->lpVtbl -> H264VideoInputConnectorChanged(This) ) 
+
+#define IBMDStreamingH264InputCallback_H264VideoInputModeChanged(This) \
+    ( (This)->lpVtbl -> H264VideoInputModeChanged(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingH264InputCallback_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingDiscovery_INTERFACE_DEFINED__
+#define __IBMDStreamingDiscovery_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingDiscovery */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingDiscovery;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("2C837444-F989-4D87-901A-47C8A36D096D")
+    IBMDStreamingDiscovery : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE InstallDeviceNotifications( 
+            /* [in] */ IBMDStreamingDeviceNotificationCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE UninstallDeviceNotifications( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingDiscoveryVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingDiscovery * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingDiscovery * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingDiscovery * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *InstallDeviceNotifications )( 
+            IBMDStreamingDiscovery * This,
+            /* [in] */ IBMDStreamingDeviceNotificationCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *UninstallDeviceNotifications )( 
+            IBMDStreamingDiscovery * This);
+        
+        END_INTERFACE
+    } IBMDStreamingDiscoveryVtbl;
+
+    interface IBMDStreamingDiscovery
+    {
+        CONST_VTBL struct IBMDStreamingDiscoveryVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingDiscovery_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingDiscovery_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingDiscovery_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingDiscovery_InstallDeviceNotifications(This,theCallback)    \
+    ( (This)->lpVtbl -> InstallDeviceNotifications(This,theCallback) ) 
+
+#define IBMDStreamingDiscovery_UninstallDeviceNotifications(This)      \
+    ( (This)->lpVtbl -> UninstallDeviceNotifications(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingDiscovery_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingVideoEncodingMode_INTERFACE_DEFINED__
+#define __IBMDStreamingVideoEncodingMode_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingVideoEncodingMode */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingVideoEncodingMode;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("1AB8035B-CD13-458D-B6DF-5E8F7C2141D9")
+    IBMDStreamingVideoEncodingMode : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetName( 
+            /* [out] */ BSTR *name) = 0;
+        
+        virtual unsigned int STDMETHODCALLTYPE GetPresetID( void) = 0;
+        
+        virtual unsigned int STDMETHODCALLTYPE GetSourcePositionX( void) = 0;
+        
+        virtual unsigned int STDMETHODCALLTYPE GetSourcePositionY( void) = 0;
+        
+        virtual unsigned int STDMETHODCALLTYPE GetSourceWidth( void) = 0;
+        
+        virtual unsigned int STDMETHODCALLTYPE GetSourceHeight( void) = 0;
+        
+        virtual unsigned int STDMETHODCALLTYPE GetDestWidth( void) = 0;
+        
+        virtual unsigned int STDMETHODCALLTYPE GetDestHeight( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFlag( 
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ BOOL *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetInt( 
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ LONGLONG *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFloat( 
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ double *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetString( 
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ BSTR *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateMutableVideoEncodingMode( 
+            /* [out] */ IBMDStreamingMutableVideoEncodingMode **newEncodingMode) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingVideoEncodingModeVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingVideoEncodingMode * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingVideoEncodingMode * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingVideoEncodingMode * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetName )( 
+            IBMDStreamingVideoEncodingMode * This,
+            /* [out] */ BSTR *name);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetPresetID )( 
+            IBMDStreamingVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetSourcePositionX )( 
+            IBMDStreamingVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetSourcePositionY )( 
+            IBMDStreamingVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetSourceWidth )( 
+            IBMDStreamingVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetSourceHeight )( 
+            IBMDStreamingVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetDestWidth )( 
+            IBMDStreamingVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetDestHeight )( 
+            IBMDStreamingVideoEncodingMode * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFlag )( 
+            IBMDStreamingVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ BOOL *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetInt )( 
+            IBMDStreamingVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ LONGLONG *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFloat )( 
+            IBMDStreamingVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ double *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetString )( 
+            IBMDStreamingVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ BSTR *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateMutableVideoEncodingMode )( 
+            IBMDStreamingVideoEncodingMode * This,
+            /* [out] */ IBMDStreamingMutableVideoEncodingMode **newEncodingMode);
+        
+        END_INTERFACE
+    } IBMDStreamingVideoEncodingModeVtbl;
+
+    interface IBMDStreamingVideoEncodingMode
+    {
+        CONST_VTBL struct IBMDStreamingVideoEncodingModeVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingVideoEncodingMode_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingVideoEncodingMode_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingVideoEncodingMode_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingVideoEncodingMode_GetName(This,name)      \
+    ( (This)->lpVtbl -> GetName(This,name) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetPresetID(This)       \
+    ( (This)->lpVtbl -> GetPresetID(This) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetSourcePositionX(This)        \
+    ( (This)->lpVtbl -> GetSourcePositionX(This) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetSourcePositionY(This)        \
+    ( (This)->lpVtbl -> GetSourcePositionY(This) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetSourceWidth(This)    \
+    ( (This)->lpVtbl -> GetSourceWidth(This) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetSourceHeight(This)   \
+    ( (This)->lpVtbl -> GetSourceHeight(This) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetDestWidth(This)      \
+    ( (This)->lpVtbl -> GetDestWidth(This) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetDestHeight(This)     \
+    ( (This)->lpVtbl -> GetDestHeight(This) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetFlag(This,cfgID,value)       \
+    ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetInt(This,cfgID,value)        \
+    ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetFloat(This,cfgID,value)      \
+    ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) 
+
+#define IBMDStreamingVideoEncodingMode_GetString(This,cfgID,value)     \
+    ( (This)->lpVtbl -> GetString(This,cfgID,value) ) 
+
+#define IBMDStreamingVideoEncodingMode_CreateMutableVideoEncodingMode(This,newEncodingMode)    \
+    ( (This)->lpVtbl -> CreateMutableVideoEncodingMode(This,newEncodingMode) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingVideoEncodingMode_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingMutableVideoEncodingMode_INTERFACE_DEFINED__
+#define __IBMDStreamingMutableVideoEncodingMode_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingMutableVideoEncodingMode */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingMutableVideoEncodingMode;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("19BF7D90-1E0A-400D-B2C6-FFC4E78AD49D")
+    IBMDStreamingMutableVideoEncodingMode : public IBMDStreamingVideoEncodingMode
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE SetSourceRect( 
+            /* [in] */ unsigned long posX,
+            /* [in] */ unsigned long posY,
+            /* [in] */ unsigned long width,
+            /* [in] */ unsigned long height) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetDestSize( 
+            /* [in] */ unsigned long width,
+            /* [in] */ unsigned long height) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetFlag( 
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [in] */ BOOL value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetInt( 
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [in] */ LONGLONG value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetFloat( 
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [in] */ double value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetString( 
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [in] */ BSTR value) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingMutableVideoEncodingModeVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingMutableVideoEncodingMode * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingMutableVideoEncodingMode * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetName )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [out] */ BSTR *name);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetPresetID )( 
+            IBMDStreamingMutableVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetSourcePositionX )( 
+            IBMDStreamingMutableVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetSourcePositionY )( 
+            IBMDStreamingMutableVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetSourceWidth )( 
+            IBMDStreamingMutableVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetSourceHeight )( 
+            IBMDStreamingMutableVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetDestWidth )( 
+            IBMDStreamingMutableVideoEncodingMode * This);
+        
+        unsigned int ( STDMETHODCALLTYPE *GetDestHeight )( 
+            IBMDStreamingMutableVideoEncodingMode * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFlag )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ BOOL *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetInt )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ LONGLONG *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFloat )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ double *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetString )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [out] */ BSTR *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateMutableVideoEncodingMode )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [out] */ IBMDStreamingMutableVideoEncodingMode **newEncodingMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetSourceRect )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ unsigned long posX,
+            /* [in] */ unsigned long posY,
+            /* [in] */ unsigned long width,
+            /* [in] */ unsigned long height);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetDestSize )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ unsigned long width,
+            /* [in] */ unsigned long height);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFlag )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [in] */ BOOL value);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetInt )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [in] */ LONGLONG value);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFloat )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [in] */ double value);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetString )( 
+            IBMDStreamingMutableVideoEncodingMode * This,
+            /* [in] */ BMDStreamingEncodingModePropertyID cfgID,
+            /* [in] */ BSTR value);
+        
+        END_INTERFACE
+    } IBMDStreamingMutableVideoEncodingModeVtbl;
+
+    interface IBMDStreamingMutableVideoEncodingMode
+    {
+        CONST_VTBL struct IBMDStreamingMutableVideoEncodingModeVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingMutableVideoEncodingMode_QueryInterface(This,riid,ppvObject)      \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_AddRef(This)     \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_Release(This)    \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingMutableVideoEncodingMode_GetName(This,name)       \
+    ( (This)->lpVtbl -> GetName(This,name) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetPresetID(This)        \
+    ( (This)->lpVtbl -> GetPresetID(This) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetSourcePositionX(This) \
+    ( (This)->lpVtbl -> GetSourcePositionX(This) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetSourcePositionY(This) \
+    ( (This)->lpVtbl -> GetSourcePositionY(This) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetSourceWidth(This)     \
+    ( (This)->lpVtbl -> GetSourceWidth(This) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetSourceHeight(This)    \
+    ( (This)->lpVtbl -> GetSourceHeight(This) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetDestWidth(This)       \
+    ( (This)->lpVtbl -> GetDestWidth(This) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetDestHeight(This)      \
+    ( (This)->lpVtbl -> GetDestHeight(This) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetFlag(This,cfgID,value)        \
+    ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetInt(This,cfgID,value) \
+    ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetFloat(This,cfgID,value)       \
+    ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_GetString(This,cfgID,value)      \
+    ( (This)->lpVtbl -> GetString(This,cfgID,value) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_CreateMutableVideoEncodingMode(This,newEncodingMode)     \
+    ( (This)->lpVtbl -> CreateMutableVideoEncodingMode(This,newEncodingMode) ) 
+
+
+#define IBMDStreamingMutableVideoEncodingMode_SetSourceRect(This,posX,posY,width,height)       \
+    ( (This)->lpVtbl -> SetSourceRect(This,posX,posY,width,height) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_SetDestSize(This,width,height)   \
+    ( (This)->lpVtbl -> SetDestSize(This,width,height) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_SetFlag(This,cfgID,value)        \
+    ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_SetInt(This,cfgID,value) \
+    ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_SetFloat(This,cfgID,value)       \
+    ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) 
+
+#define IBMDStreamingMutableVideoEncodingMode_SetString(This,cfgID,value)      \
+    ( (This)->lpVtbl -> SetString(This,cfgID,value) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingMutableVideoEncodingMode_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingVideoEncodingModePresetIterator_INTERFACE_DEFINED__
+#define __IBMDStreamingVideoEncodingModePresetIterator_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingVideoEncodingModePresetIterator */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingVideoEncodingModePresetIterator;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("7AC731A3-C950-4AD0-804A-8377AA51C6C4")
+    IBMDStreamingVideoEncodingModePresetIterator : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Next( 
+            /* [out] */ IBMDStreamingVideoEncodingMode **videoEncodingMode) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingVideoEncodingModePresetIteratorVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingVideoEncodingModePresetIterator * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingVideoEncodingModePresetIterator * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingVideoEncodingModePresetIterator * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Next )( 
+            IBMDStreamingVideoEncodingModePresetIterator * This,
+            /* [out] */ IBMDStreamingVideoEncodingMode **videoEncodingMode);
+        
+        END_INTERFACE
+    } IBMDStreamingVideoEncodingModePresetIteratorVtbl;
+
+    interface IBMDStreamingVideoEncodingModePresetIterator
+    {
+        CONST_VTBL struct IBMDStreamingVideoEncodingModePresetIteratorVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingVideoEncodingModePresetIterator_QueryInterface(This,riid,ppvObject)       \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingVideoEncodingModePresetIterator_AddRef(This)      \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingVideoEncodingModePresetIterator_Release(This)     \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingVideoEncodingModePresetIterator_Next(This,videoEncodingMode)      \
+    ( (This)->lpVtbl -> Next(This,videoEncodingMode) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingVideoEncodingModePresetIterator_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingDeviceInput_INTERFACE_DEFINED__
+#define __IBMDStreamingDeviceInput_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingDeviceInput */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingDeviceInput;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("24B6B6EC-1727-44BB-9818-34FF086ACF98")
+    IBMDStreamingDeviceInput : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoInputMode( 
+            /* [in] */ BMDDisplayMode inputMode,
+            /* [out] */ BOOL *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoInputModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoInputMode( 
+            /* [in] */ BMDDisplayMode inputMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCurrentDetectedVideoInputMode( 
+            /* [out] */ BMDDisplayMode *detectedMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoEncodingMode( 
+            /* [out] */ IBMDStreamingVideoEncodingMode **encodingMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoEncodingModePresetIterator( 
+            /* [in] */ BMDDisplayMode inputMode,
+            /* [out] */ IBMDStreamingVideoEncodingModePresetIterator **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoEncodingMode( 
+            /* [in] */ BMDDisplayMode inputMode,
+            /* [in] */ IBMDStreamingVideoEncodingMode *encodingMode,
+            /* [out] */ BMDStreamingEncodingSupport *result,
+            /* [out] */ IBMDStreamingVideoEncodingMode **changedEncodingMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoEncodingMode( 
+            /* [in] */ IBMDStreamingVideoEncodingMode *encodingMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartCapture( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopCapture( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IUnknown *theCallback) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingDeviceInputVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingDeviceInput * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingDeviceInput * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingDeviceInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoInputMode )( 
+            IBMDStreamingDeviceInput * This,
+            /* [in] */ BMDDisplayMode inputMode,
+            /* [out] */ BOOL *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoInputModeIterator )( 
+            IBMDStreamingDeviceInput * This,
+            /* [out] */ IDeckLinkDisplayModeIterator **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoInputMode )( 
+            IBMDStreamingDeviceInput * This,
+            /* [in] */ BMDDisplayMode inputMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCurrentDetectedVideoInputMode )( 
+            IBMDStreamingDeviceInput * This,
+            /* [out] */ BMDDisplayMode *detectedMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoEncodingMode )( 
+            IBMDStreamingDeviceInput * This,
+            /* [out] */ IBMDStreamingVideoEncodingMode **encodingMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoEncodingModePresetIterator )( 
+            IBMDStreamingDeviceInput * This,
+            /* [in] */ BMDDisplayMode inputMode,
+            /* [out] */ IBMDStreamingVideoEncodingModePresetIterator **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoEncodingMode )( 
+            IBMDStreamingDeviceInput * This,
+            /* [in] */ BMDDisplayMode inputMode,
+            /* [in] */ IBMDStreamingVideoEncodingMode *encodingMode,
+            /* [out] */ BMDStreamingEncodingSupport *result,
+            /* [out] */ IBMDStreamingVideoEncodingMode **changedEncodingMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoEncodingMode )( 
+            IBMDStreamingDeviceInput * This,
+            /* [in] */ IBMDStreamingVideoEncodingMode *encodingMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartCapture )( 
+            IBMDStreamingDeviceInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopCapture )( 
+            IBMDStreamingDeviceInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IBMDStreamingDeviceInput * This,
+            /* [in] */ IUnknown *theCallback);
+        
+        END_INTERFACE
+    } IBMDStreamingDeviceInputVtbl;
+
+    interface IBMDStreamingDeviceInput
+    {
+        CONST_VTBL struct IBMDStreamingDeviceInputVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingDeviceInput_QueryInterface(This,riid,ppvObject)   \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingDeviceInput_AddRef(This)  \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingDeviceInput_Release(This) \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingDeviceInput_DoesSupportVideoInputMode(This,inputMode,result)      \
+    ( (This)->lpVtbl -> DoesSupportVideoInputMode(This,inputMode,result) ) 
+
+#define IBMDStreamingDeviceInput_GetVideoInputModeIterator(This,iterator)      \
+    ( (This)->lpVtbl -> GetVideoInputModeIterator(This,iterator) ) 
+
+#define IBMDStreamingDeviceInput_SetVideoInputMode(This,inputMode)     \
+    ( (This)->lpVtbl -> SetVideoInputMode(This,inputMode) ) 
+
+#define IBMDStreamingDeviceInput_GetCurrentDetectedVideoInputMode(This,detectedMode)   \
+    ( (This)->lpVtbl -> GetCurrentDetectedVideoInputMode(This,detectedMode) ) 
+
+#define IBMDStreamingDeviceInput_GetVideoEncodingMode(This,encodingMode)       \
+    ( (This)->lpVtbl -> GetVideoEncodingMode(This,encodingMode) ) 
+
+#define IBMDStreamingDeviceInput_GetVideoEncodingModePresetIterator(This,inputMode,iterator)   \
+    ( (This)->lpVtbl -> GetVideoEncodingModePresetIterator(This,inputMode,iterator) ) 
+
+#define IBMDStreamingDeviceInput_DoesSupportVideoEncodingMode(This,inputMode,encodingMode,result,changedEncodingMode)  \
+    ( (This)->lpVtbl -> DoesSupportVideoEncodingMode(This,inputMode,encodingMode,result,changedEncodingMode) ) 
+
+#define IBMDStreamingDeviceInput_SetVideoEncodingMode(This,encodingMode)       \
+    ( (This)->lpVtbl -> SetVideoEncodingMode(This,encodingMode) ) 
+
+#define IBMDStreamingDeviceInput_StartCapture(This)    \
+    ( (This)->lpVtbl -> StartCapture(This) ) 
+
+#define IBMDStreamingDeviceInput_StopCapture(This)     \
+    ( (This)->lpVtbl -> StopCapture(This) ) 
+
+#define IBMDStreamingDeviceInput_SetCallback(This,theCallback) \
+    ( (This)->lpVtbl -> SetCallback(This,theCallback) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingDeviceInput_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingH264NALPacket_INTERFACE_DEFINED__
+#define __IBMDStreamingH264NALPacket_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingH264NALPacket */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingH264NALPacket;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("E260E955-14BE-4395-9775-9F02CC0A9D89")
+    IBMDStreamingH264NALPacket : public IUnknown
+    {
+    public:
+        virtual long STDMETHODCALLTYPE GetPayloadSize( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            /* [out] */ void **buffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytesWithSizePrefix( 
+            /* [out] */ void **buffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayTime( 
+            /* [in] */ ULONGLONG requestedTimeScale,
+            /* [out] */ ULONGLONG *displayTime) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetPacketIndex( 
+            /* [out] */ unsigned long *packetIndex) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingH264NALPacketVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingH264NALPacket * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingH264NALPacket * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingH264NALPacket * This);
+        
+        long ( STDMETHODCALLTYPE *GetPayloadSize )( 
+            IBMDStreamingH264NALPacket * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IBMDStreamingH264NALPacket * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytesWithSizePrefix )( 
+            IBMDStreamingH264NALPacket * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayTime )( 
+            IBMDStreamingH264NALPacket * This,
+            /* [in] */ ULONGLONG requestedTimeScale,
+            /* [out] */ ULONGLONG *displayTime);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetPacketIndex )( 
+            IBMDStreamingH264NALPacket * This,
+            /* [out] */ unsigned long *packetIndex);
+        
+        END_INTERFACE
+    } IBMDStreamingH264NALPacketVtbl;
+
+    interface IBMDStreamingH264NALPacket
+    {
+        CONST_VTBL struct IBMDStreamingH264NALPacketVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingH264NALPacket_QueryInterface(This,riid,ppvObject) \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingH264NALPacket_AddRef(This)        \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingH264NALPacket_Release(This)       \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingH264NALPacket_GetPayloadSize(This)        \
+    ( (This)->lpVtbl -> GetPayloadSize(This) ) 
+
+#define IBMDStreamingH264NALPacket_GetBytes(This,buffer)       \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IBMDStreamingH264NALPacket_GetBytesWithSizePrefix(This,buffer) \
+    ( (This)->lpVtbl -> GetBytesWithSizePrefix(This,buffer) ) 
+
+#define IBMDStreamingH264NALPacket_GetDisplayTime(This,requestedTimeScale,displayTime) \
+    ( (This)->lpVtbl -> GetDisplayTime(This,requestedTimeScale,displayTime) ) 
+
+#define IBMDStreamingH264NALPacket_GetPacketIndex(This,packetIndex)    \
+    ( (This)->lpVtbl -> GetPacketIndex(This,packetIndex) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingH264NALPacket_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingAudioPacket_INTERFACE_DEFINED__
+#define __IBMDStreamingAudioPacket_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingAudioPacket */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingAudioPacket;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("D9EB5902-1AD2-43F4-9E2C-3CFA50B5EE19")
+    IBMDStreamingAudioPacket : public IUnknown
+    {
+    public:
+        virtual BMDStreamingAudioCodec STDMETHODCALLTYPE GetCodec( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetPayloadSize( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            /* [out] */ void **buffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetPlayTime( 
+            /* [in] */ ULONGLONG requestedTimeScale,
+            /* [out] */ ULONGLONG *playTime) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetPacketIndex( 
+            /* [out] */ unsigned long *packetIndex) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingAudioPacketVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingAudioPacket * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingAudioPacket * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingAudioPacket * This);
+        
+        BMDStreamingAudioCodec ( STDMETHODCALLTYPE *GetCodec )( 
+            IBMDStreamingAudioPacket * This);
+        
+        long ( STDMETHODCALLTYPE *GetPayloadSize )( 
+            IBMDStreamingAudioPacket * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IBMDStreamingAudioPacket * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetPlayTime )( 
+            IBMDStreamingAudioPacket * This,
+            /* [in] */ ULONGLONG requestedTimeScale,
+            /* [out] */ ULONGLONG *playTime);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetPacketIndex )( 
+            IBMDStreamingAudioPacket * This,
+            /* [out] */ unsigned long *packetIndex);
+        
+        END_INTERFACE
+    } IBMDStreamingAudioPacketVtbl;
+
+    interface IBMDStreamingAudioPacket
+    {
+        CONST_VTBL struct IBMDStreamingAudioPacketVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingAudioPacket_QueryInterface(This,riid,ppvObject)   \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingAudioPacket_AddRef(This)  \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingAudioPacket_Release(This) \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingAudioPacket_GetCodec(This)        \
+    ( (This)->lpVtbl -> GetCodec(This) ) 
+
+#define IBMDStreamingAudioPacket_GetPayloadSize(This)  \
+    ( (This)->lpVtbl -> GetPayloadSize(This) ) 
+
+#define IBMDStreamingAudioPacket_GetBytes(This,buffer) \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IBMDStreamingAudioPacket_GetPlayTime(This,requestedTimeScale,playTime) \
+    ( (This)->lpVtbl -> GetPlayTime(This,requestedTimeScale,playTime) ) 
+
+#define IBMDStreamingAudioPacket_GetPacketIndex(This,packetIndex)      \
+    ( (This)->lpVtbl -> GetPacketIndex(This,packetIndex) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingAudioPacket_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingMPEG2TSPacket_INTERFACE_DEFINED__
+#define __IBMDStreamingMPEG2TSPacket_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingMPEG2TSPacket */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingMPEG2TSPacket;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("91810D1C-4FB3-4AAA-AE56-FA301D3DFA4C")
+    IBMDStreamingMPEG2TSPacket : public IUnknown
+    {
+    public:
+        virtual long STDMETHODCALLTYPE GetPayloadSize( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            /* [out] */ void **buffer) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingMPEG2TSPacketVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingMPEG2TSPacket * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingMPEG2TSPacket * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingMPEG2TSPacket * This);
+        
+        long ( STDMETHODCALLTYPE *GetPayloadSize )( 
+            IBMDStreamingMPEG2TSPacket * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IBMDStreamingMPEG2TSPacket * This,
+            /* [out] */ void **buffer);
+        
+        END_INTERFACE
+    } IBMDStreamingMPEG2TSPacketVtbl;
+
+    interface IBMDStreamingMPEG2TSPacket
+    {
+        CONST_VTBL struct IBMDStreamingMPEG2TSPacketVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingMPEG2TSPacket_QueryInterface(This,riid,ppvObject) \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingMPEG2TSPacket_AddRef(This)        \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingMPEG2TSPacket_Release(This)       \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingMPEG2TSPacket_GetPayloadSize(This)        \
+    ( (This)->lpVtbl -> GetPayloadSize(This) ) 
+
+#define IBMDStreamingMPEG2TSPacket_GetBytes(This,buffer)       \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingMPEG2TSPacket_INTERFACE_DEFINED__ */
+
+
+#ifndef __IBMDStreamingH264NALParser_INTERFACE_DEFINED__
+#define __IBMDStreamingH264NALParser_INTERFACE_DEFINED__
+
+/* interface IBMDStreamingH264NALParser */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IBMDStreamingH264NALParser;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("5867F18C-5BFA-4CCC-B2A7-9DFD140417D2")
+    IBMDStreamingH264NALParser : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE IsNALSequenceParameterSet( 
+            /* [in] */ IBMDStreamingH264NALPacket *nal) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsNALPictureParameterSet( 
+            /* [in] */ IBMDStreamingH264NALPacket *nal) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetProfileAndLevelFromSPS( 
+            /* [in] */ IBMDStreamingH264NALPacket *nal,
+            /* [out] */ unsigned long *profileIdc,
+            /* [out] */ unsigned long *profileCompatability,
+            /* [out] */ unsigned long *levelIdc) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IBMDStreamingH264NALParserVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IBMDStreamingH264NALParser * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IBMDStreamingH264NALParser * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IBMDStreamingH264NALParser * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsNALSequenceParameterSet )( 
+            IBMDStreamingH264NALParser * This,
+            /* [in] */ IBMDStreamingH264NALPacket *nal);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsNALPictureParameterSet )( 
+            IBMDStreamingH264NALParser * This,
+            /* [in] */ IBMDStreamingH264NALPacket *nal);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetProfileAndLevelFromSPS )( 
+            IBMDStreamingH264NALParser * This,
+            /* [in] */ IBMDStreamingH264NALPacket *nal,
+            /* [out] */ unsigned long *profileIdc,
+            /* [out] */ unsigned long *profileCompatability,
+            /* [out] */ unsigned long *levelIdc);
+        
+        END_INTERFACE
+    } IBMDStreamingH264NALParserVtbl;
+
+    interface IBMDStreamingH264NALParser
+    {
+        CONST_VTBL struct IBMDStreamingH264NALParserVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IBMDStreamingH264NALParser_QueryInterface(This,riid,ppvObject) \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IBMDStreamingH264NALParser_AddRef(This)        \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IBMDStreamingH264NALParser_Release(This)       \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IBMDStreamingH264NALParser_IsNALSequenceParameterSet(This,nal) \
+    ( (This)->lpVtbl -> IsNALSequenceParameterSet(This,nal) ) 
+
+#define IBMDStreamingH264NALParser_IsNALPictureParameterSet(This,nal)  \
+    ( (This)->lpVtbl -> IsNALPictureParameterSet(This,nal) ) 
+
+#define IBMDStreamingH264NALParser_GetProfileAndLevelFromSPS(This,nal,profileIdc,profileCompatability,levelIdc)        \
+    ( (This)->lpVtbl -> GetProfileAndLevelFromSPS(This,nal,profileIdc,profileCompatability,levelIdc) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IBMDStreamingH264NALParser_INTERFACE_DEFINED__ */
+
+
+EXTERN_C const CLSID CLSID_CBMDStreamingDiscovery;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("0CAA31F6-8A26-40B0-86A4-BF58DCCA710C")
+CBMDStreamingDiscovery;
+#endif
+
+EXTERN_C const CLSID CLSID_CBMDStreamingH264NALParser;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("7753EFBD-951C-407C-97A5-23C737B73B52")
+CBMDStreamingH264NALParser;
+#endif
+
+#ifndef __IDeckLinkVideoOutputCallback_INTERFACE_DEFINED__
+#define __IDeckLinkVideoOutputCallback_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoOutputCallback */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoOutputCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("20AA5225-1958-47CB-820B-80A8D521A6EE")
+    IDeckLinkVideoOutputCallback : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted( 
+            /* [in] */ IDeckLinkVideoFrame *completedFrame,
+            /* [in] */ BMDOutputFrameCompletionResult result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduledPlaybackHasStopped( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoOutputCallbackVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoOutputCallback * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoOutputCallback * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoOutputCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduledFrameCompleted )( 
+            IDeckLinkVideoOutputCallback * This,
+            /* [in] */ IDeckLinkVideoFrame *completedFrame,
+            /* [in] */ BMDOutputFrameCompletionResult result);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduledPlaybackHasStopped )( 
+            IDeckLinkVideoOutputCallback * This);
+        
+        END_INTERFACE
+    } IDeckLinkVideoOutputCallbackVtbl;
+
+    interface IDeckLinkVideoOutputCallback
+    {
+        CONST_VTBL struct IDeckLinkVideoOutputCallbackVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoOutputCallback_QueryInterface(This,riid,ppvObject)       \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoOutputCallback_AddRef(This)      \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoOutputCallback_Release(This)     \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoOutputCallback_ScheduledFrameCompleted(This,completedFrame,result)       \
+    ( (This)->lpVtbl -> ScheduledFrameCompleted(This,completedFrame,result) ) 
+
+#define IDeckLinkVideoOutputCallback_ScheduledPlaybackHasStopped(This) \
+    ( (This)->lpVtbl -> ScheduledPlaybackHasStopped(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoOutputCallback_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkInputCallback_INTERFACE_DEFINED__
+#define __IDeckLinkInputCallback_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInputCallback */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInputCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("DD04E5EC-7415-42AB-AE4A-E80C4DFC044A")
+    IDeckLinkInputCallback : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged( 
+            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
+            /* [in] */ IDeckLinkDisplayMode *newDisplayMode,
+            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived( 
+            /* [in] */ IDeckLinkVideoInputFrame *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket *audioPacket) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkInputCallbackVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInputCallback * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInputCallback * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInputCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFormatChanged )( 
+            IDeckLinkInputCallback * This,
+            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
+            /* [in] */ IDeckLinkDisplayMode *newDisplayMode,
+            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( 
+            IDeckLinkInputCallback * This,
+            /* [in] */ IDeckLinkVideoInputFrame *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket *audioPacket);
+        
+        END_INTERFACE
+    } IDeckLinkInputCallbackVtbl;
+
+    interface IDeckLinkInputCallback
+    {
+        CONST_VTBL struct IDeckLinkInputCallbackVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInputCallback_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInputCallback_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInputCallback_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInputCallback_VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags)     \
+    ( (This)->lpVtbl -> VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) ) 
+
+#define IDeckLinkInputCallback_VideoInputFrameArrived(This,videoFrame,audioPacket)     \
+    ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkInputCallback_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkMemoryAllocator_INTERFACE_DEFINED__
+#define __IDeckLinkMemoryAllocator_INTERFACE_DEFINED__
+
+/* interface IDeckLinkMemoryAllocator */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkMemoryAllocator;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("B36EB6E7-9D29-4AA8-92EF-843B87A289E8")
+    IDeckLinkMemoryAllocator : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE AllocateBuffer( 
+            /* [in] */ unsigned long bufferSize,
+            /* [out] */ void **allocatedBuffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( 
+            /* [in] */ void *buffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Decommit( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkMemoryAllocatorVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkMemoryAllocator * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkMemoryAllocator * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkMemoryAllocator * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *AllocateBuffer )( 
+            IDeckLinkMemoryAllocator * This,
+            /* [in] */ unsigned long bufferSize,
+            /* [out] */ void **allocatedBuffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( 
+            IDeckLinkMemoryAllocator * This,
+            /* [in] */ void *buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *Commit )( 
+            IDeckLinkMemoryAllocator * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Decommit )( 
+            IDeckLinkMemoryAllocator * This);
+        
+        END_INTERFACE
+    } IDeckLinkMemoryAllocatorVtbl;
+
+    interface IDeckLinkMemoryAllocator
+    {
+        CONST_VTBL struct IDeckLinkMemoryAllocatorVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkMemoryAllocator_QueryInterface(This,riid,ppvObject)   \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkMemoryAllocator_AddRef(This)  \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkMemoryAllocator_Release(This) \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkMemoryAllocator_AllocateBuffer(This,bufferSize,allocatedBuffer)       \
+    ( (This)->lpVtbl -> AllocateBuffer(This,bufferSize,allocatedBuffer) ) 
+
+#define IDeckLinkMemoryAllocator_ReleaseBuffer(This,buffer)    \
+    ( (This)->lpVtbl -> ReleaseBuffer(This,buffer) ) 
+
+#define IDeckLinkMemoryAllocator_Commit(This)  \
+    ( (This)->lpVtbl -> Commit(This) ) 
+
+#define IDeckLinkMemoryAllocator_Decommit(This)        \
+    ( (This)->lpVtbl -> Decommit(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkMemoryAllocator_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkAudioOutputCallback_INTERFACE_DEFINED__
+#define __IDeckLinkAudioOutputCallback_INTERFACE_DEFINED__
+
+/* interface IDeckLinkAudioOutputCallback */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkAudioOutputCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("403C681B-7F46-4A12-B993-2BB127084EE6")
+    IDeckLinkAudioOutputCallback : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE RenderAudioSamples( 
+            /* [in] */ BOOL preroll) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkAudioOutputCallbackVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkAudioOutputCallback * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkAudioOutputCallback * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkAudioOutputCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *RenderAudioSamples )( 
+            IDeckLinkAudioOutputCallback * This,
+            /* [in] */ BOOL preroll);
+        
+        END_INTERFACE
+    } IDeckLinkAudioOutputCallbackVtbl;
+
+    interface IDeckLinkAudioOutputCallback
+    {
+        CONST_VTBL struct IDeckLinkAudioOutputCallbackVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkAudioOutputCallback_QueryInterface(This,riid,ppvObject)       \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkAudioOutputCallback_AddRef(This)      \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkAudioOutputCallback_Release(This)     \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkAudioOutputCallback_RenderAudioSamples(This,preroll)  \
+    ( (This)->lpVtbl -> RenderAudioSamples(This,preroll) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkAudioOutputCallback_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkIterator_INTERFACE_DEFINED__
+#define __IDeckLinkIterator_INTERFACE_DEFINED__
+
+/* interface IDeckLinkIterator */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkIterator;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("50FB36CD-3063-4B73-BDBB-958087F2D8BA")
+    IDeckLinkIterator : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Next( 
+            /* [out] */ IDeckLink **deckLinkInstance) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkIteratorVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkIterator * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkIterator * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkIterator * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Next )( 
+            IDeckLinkIterator * This,
+            /* [out] */ IDeckLink **deckLinkInstance);
+        
+        END_INTERFACE
+    } IDeckLinkIteratorVtbl;
+
+    interface IDeckLinkIterator
+    {
+        CONST_VTBL struct IDeckLinkIteratorVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkIterator_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkIterator_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkIterator_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkIterator_Next(This,deckLinkInstance)  \
+    ( (This)->lpVtbl -> Next(This,deckLinkInstance) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkIterator_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkAPIInformation_INTERFACE_DEFINED__
+#define __IDeckLinkAPIInformation_INTERFACE_DEFINED__
+
+/* interface IDeckLinkAPIInformation */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkAPIInformation;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("7BEA3C68-730D-4322-AF34-8A7152B532A4")
+    IDeckLinkAPIInformation : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetFlag( 
+            /* [in] */ BMDDeckLinkAPIInformationID cfgID,
+            /* [out] */ BOOL *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetInt( 
+            /* [in] */ BMDDeckLinkAPIInformationID cfgID,
+            /* [out] */ LONGLONG *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFloat( 
+            /* [in] */ BMDDeckLinkAPIInformationID cfgID,
+            /* [out] */ double *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetString( 
+            /* [in] */ BMDDeckLinkAPIInformationID cfgID,
+            /* [out] */ BSTR *value) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkAPIInformationVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkAPIInformation * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkAPIInformation * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkAPIInformation * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFlag )( 
+            IDeckLinkAPIInformation * This,
+            /* [in] */ BMDDeckLinkAPIInformationID cfgID,
+            /* [out] */ BOOL *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetInt )( 
+            IDeckLinkAPIInformation * This,
+            /* [in] */ BMDDeckLinkAPIInformationID cfgID,
+            /* [out] */ LONGLONG *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFloat )( 
+            IDeckLinkAPIInformation * This,
+            /* [in] */ BMDDeckLinkAPIInformationID cfgID,
+            /* [out] */ double *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetString )( 
+            IDeckLinkAPIInformation * This,
+            /* [in] */ BMDDeckLinkAPIInformationID cfgID,
+            /* [out] */ BSTR *value);
+        
+        END_INTERFACE
+    } IDeckLinkAPIInformationVtbl;
+
+    interface IDeckLinkAPIInformation
+    {
+        CONST_VTBL struct IDeckLinkAPIInformationVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkAPIInformation_QueryInterface(This,riid,ppvObject)    \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkAPIInformation_AddRef(This)   \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkAPIInformation_Release(This)  \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkAPIInformation_GetFlag(This,cfgID,value)      \
+    ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) 
+
+#define IDeckLinkAPIInformation_GetInt(This,cfgID,value)       \
+    ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) 
+
+#define IDeckLinkAPIInformation_GetFloat(This,cfgID,value)     \
+    ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) 
+
+#define IDeckLinkAPIInformation_GetString(This,cfgID,value)    \
+    ( (This)->lpVtbl -> GetString(This,cfgID,value) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkAPIInformation_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_INTERFACE_DEFINED__
+#define __IDeckLinkOutput_INTERFACE_DEFINED__
+
+/* interface IDeckLinkOutput */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkOutput;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("A3EF0963-0862-44ED-92A9-EE89ABF431C7")
+    IDeckLinkOutput : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoOutputFlags flags,
+            /* [out] */ BMDDisplayModeSupport *result,
+            /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( 
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDVideoOutputFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator( 
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( 
+            /* [in] */ long width,
+            /* [in] */ long height,
+            /* [in] */ long rowBytes,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame **outFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( 
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( 
+            /* [in] */ IDeckLinkVideoFrame *theFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( 
+            /* [in] */ IDeckLinkVideoFrame *theFrame,
+            /* [in] */ BMDTimeValue displayTime,
+            /* [in] */ BMDTimeValue displayDuration,
+            /* [in] */ BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( 
+            /* [in] */ IDeckLinkVideoOutputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount( 
+            /* [out] */ unsigned long *bufferedFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( 
+            /* [in] */ BMDAudioSampleRate sampleRate,
+            /* [in] */ BMDAudioSampleType sampleType,
+            /* [in] */ unsigned long channelCount,
+            /* [in] */ BMDAudioOutputStreamType streamType) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( 
+            /* [in] */ void *buffer,
+            /* [in] */ unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( 
+            /* [in] */ void *buffer,
+            /* [in] */ unsigned long sampleFrameCount,
+            /* [in] */ BMDTimeValue streamTime,
+            /* [in] */ BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( 
+            /* [out] */ unsigned long *bufferedSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( 
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( 
+            /* [in] */ BMDTimeValue playbackStartTime,
+            /* [in] */ BMDTimeScale timeScale,
+            /* [in] */ double playbackSpeed) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( 
+            /* [in] */ BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
+            /* [in] */ BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( 
+            /* [out] */ BOOL *active) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime( 
+            /* [in] */ BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *streamTime,
+            /* [out] */ double *playbackSpeed) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus( 
+            /* [out] */ BMDReferenceStatus *referenceStatus) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            /* [in] */ BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkOutputVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkOutput * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkOutput * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkOutput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkOutput * This,
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoOutputFlags flags,
+            /* [out] */ BMDDisplayModeSupport *result,
+            /* [out] */ IDeckLinkDisplayMode **resultDisplayMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkOutput * This,
+            /* [out] */ IDeckLinkDisplayModeIterator **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( 
+            IDeckLinkOutput * This,
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDVideoOutputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( 
+            IDeckLinkOutput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( 
+            IDeckLinkOutput * This,
+            /* [in] */ long width,
+            /* [in] */ long height,
+            /* [in] */ long rowBytes,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame **outFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( 
+            IDeckLinkOutput * This,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkVideoFrame *theFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkVideoFrame *theFrame,
+            /* [in] */ BMDTimeValue displayTime,
+            /* [in] */ BMDTimeValue displayDuration,
+            /* [in] */ BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkVideoOutputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( 
+            IDeckLinkOutput * This,
+            /* [out] */ unsigned long *bufferedFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( 
+            IDeckLinkOutput * This,
+            /* [in] */ BMDAudioSampleRate sampleRate,
+            /* [in] */ BMDAudioSampleType sampleType,
+            /* [in] */ unsigned long channelCount,
+            /* [in] */ BMDAudioOutputStreamType streamType);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( 
+            IDeckLinkOutput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( 
+            IDeckLinkOutput * This,
+            /* [in] */ void *buffer,
+            /* [in] */ unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( 
+            IDeckLinkOutput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( 
+            IDeckLinkOutput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( 
+            IDeckLinkOutput * This,
+            /* [in] */ void *buffer,
+            /* [in] */ unsigned long sampleFrameCount,
+            /* [in] */ BMDTimeValue streamTime,
+            /* [in] */ BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( 
+            IDeckLinkOutput * This,
+            /* [out] */ unsigned long *bufferedSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( 
+            IDeckLinkOutput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( 
+            IDeckLinkOutput * This,
+            /* [in] */ BMDTimeValue playbackStartTime,
+            /* [in] */ BMDTimeScale timeScale,
+            /* [in] */ double playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( 
+            IDeckLinkOutput * This,
+            /* [in] */ BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
+            /* [in] */ BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( 
+            IDeckLinkOutput * This,
+            /* [out] */ BOOL *active);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetScheduledStreamTime )( 
+            IDeckLinkOutput * This,
+            /* [in] */ BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *streamTime,
+            /* [out] */ double *playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetReferenceStatus )( 
+            IDeckLinkOutput * This,
+            /* [out] */ BMDReferenceStatus *referenceStatus);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkOutput * This,
+            /* [in] */ BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame);
+        
+        END_INTERFACE
+    } IDeckLinkOutputVtbl;
+
+    interface IDeckLinkOutput
+    {
+        CONST_VTBL struct IDeckLinkOutputVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkOutput_QueryInterface(This,riid,ppvObject)    \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkOutput_AddRef(This)   \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkOutput_Release(This)  \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkOutput_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode)      \
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) ) 
+
+#define IDeckLinkOutput_GetDisplayModeIterator(This,iterator)  \
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkOutput_SetScreenPreviewCallback(This,previewCallback) \
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
+
+#define IDeckLinkOutput_EnableVideoOutput(This,displayMode,flags)      \
+    ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode,flags) ) 
+
+#define IDeckLinkOutput_DisableVideoOutput(This)       \
+    ( (This)->lpVtbl -> DisableVideoOutput(This) ) 
+
+#define IDeckLinkOutput_SetVideoOutputFrameMemoryAllocator(This,theAllocator)  \
+    ( (This)->lpVtbl -> SetVideoOutputFrameMemoryAllocator(This,theAllocator) ) 
+
+#define IDeckLinkOutput_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)        \
+    ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) 
+
+#define IDeckLinkOutput_CreateAncillaryData(This,pixelFormat,outBuffer)        \
+    ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) 
+
+#define IDeckLinkOutput_DisplayVideoFrameSync(This,theFrame)   \
+    ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) 
+
+#define IDeckLinkOutput_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)        \
+    ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) 
+
+#define IDeckLinkOutput_SetScheduledFrameCompletionCallback(This,theCallback)  \
+    ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_GetBufferedVideoFrameCount(This,bufferedFrameCount)    \
+    ( (This)->lpVtbl -> GetBufferedVideoFrameCount(This,bufferedFrameCount) ) 
+
+#define IDeckLinkOutput_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType)  \
+    ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) ) 
+
+#define IDeckLinkOutput_DisableAudioOutput(This)       \
+    ( (This)->lpVtbl -> DisableAudioOutput(This) ) 
+
+#define IDeckLinkOutput_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)        \
+    ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_BeginAudioPreroll(This)        \
+    ( (This)->lpVtbl -> BeginAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_EndAudioPreroll(This)  \
+    ( (This)->lpVtbl -> EndAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)    \
+    ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount)        \
+    ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) ) 
+
+#define IDeckLinkOutput_FlushBufferedAudioSamples(This)        \
+    ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) 
+
+#define IDeckLinkOutput_SetAudioCallback(This,theCallback)     \
+    ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) \
+    ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) 
+
+#define IDeckLinkOutput_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)        \
+    ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) 
+
+#define IDeckLinkOutput_IsScheduledPlaybackRunning(This,active)        \
+    ( (This)->lpVtbl -> IsScheduledPlaybackRunning(This,active) ) 
+
+#define IDeckLinkOutput_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) \
+    ( (This)->lpVtbl -> GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) ) 
+
+#define IDeckLinkOutput_GetReferenceStatus(This,referenceStatus)       \
+    ( (This)->lpVtbl -> GetReferenceStatus(This,referenceStatus) ) 
+
+#define IDeckLinkOutput_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)        \
+    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkOutput_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_INTERFACE_DEFINED__
+#define __IDeckLinkInput_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInput */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInput;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("AF22762B-DFAC-4846-AA79-FA8883560995")
+    IDeckLinkInput : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags,
+            /* [out] */ BMDDisplayModeSupport *result,
+            /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( 
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( 
+            /* [out] */ unsigned long *availableFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoInputFrameMemoryAllocator( 
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( 
+            /* [in] */ BMDAudioSampleRate sampleRate,
+            /* [in] */ BMDAudioSampleType sampleType,
+            /* [in] */ unsigned long channelCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( 
+            /* [out] */ unsigned long *availableSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IDeckLinkInputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            /* [in] */ BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkInputVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInput * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInput * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkInput * This,
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags,
+            /* [out] */ BMDDisplayModeSupport *result,
+            /* [out] */ IDeckLinkDisplayMode **resultDisplayMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkInput * This,
+            /* [out] */ IDeckLinkDisplayModeIterator **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkInput * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( 
+            IDeckLinkInput * This,
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( 
+            IDeckLinkInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( 
+            IDeckLinkInput * This,
+            /* [out] */ unsigned long *availableFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoInputFrameMemoryAllocator )( 
+            IDeckLinkInput * This,
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( 
+            IDeckLinkInput * This,
+            /* [in] */ BMDAudioSampleRate sampleRate,
+            /* [in] */ BMDAudioSampleType sampleType,
+            /* [in] */ unsigned long channelCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( 
+            IDeckLinkInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( 
+            IDeckLinkInput * This,
+            /* [out] */ unsigned long *availableSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartStreams )( 
+            IDeckLinkInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopStreams )( 
+            IDeckLinkInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *PauseStreams )( 
+            IDeckLinkInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushStreams )( 
+            IDeckLinkInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IDeckLinkInput * This,
+            /* [in] */ IDeckLinkInputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkInput * This,
+            /* [in] */ BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame);
+        
+        END_INTERFACE
+    } IDeckLinkInputVtbl;
+
+    interface IDeckLinkInput
+    {
+        CONST_VTBL struct IDeckLinkInputVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInput_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInput_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInput_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInput_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode)       \
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) ) 
+
+#define IDeckLinkInput_GetDisplayModeIterator(This,iterator)   \
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkInput_SetScreenPreviewCallback(This,previewCallback)  \
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
+
+#define IDeckLinkInput_EnableVideoInput(This,displayMode,pixelFormat,flags)    \
+    ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) 
+
+#define IDeckLinkInput_DisableVideoInput(This) \
+    ( (This)->lpVtbl -> DisableVideoInput(This) ) 
+
+#define IDeckLinkInput_GetAvailableVideoFrameCount(This,availableFrameCount)   \
+    ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) 
+
+#define IDeckLinkInput_SetVideoInputFrameMemoryAllocator(This,theAllocator)    \
+    ( (This)->lpVtbl -> SetVideoInputFrameMemoryAllocator(This,theAllocator) ) 
+
+#define IDeckLinkInput_EnableAudioInput(This,sampleRate,sampleType,channelCount)       \
+    ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) 
+
+#define IDeckLinkInput_DisableAudioInput(This) \
+    ( (This)->lpVtbl -> DisableAudioInput(This) ) 
+
+#define IDeckLinkInput_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)       \
+    ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) 
+
+#define IDeckLinkInput_StartStreams(This)      \
+    ( (This)->lpVtbl -> StartStreams(This) ) 
+
+#define IDeckLinkInput_StopStreams(This)       \
+    ( (This)->lpVtbl -> StopStreams(This) ) 
+
+#define IDeckLinkInput_PauseStreams(This)      \
+    ( (This)->lpVtbl -> PauseStreams(This) ) 
+
+#define IDeckLinkInput_FlushStreams(This)      \
+    ( (This)->lpVtbl -> FlushStreams(This) ) 
+
+#define IDeckLinkInput_SetCallback(This,theCallback)   \
+    ( (This)->lpVtbl -> SetCallback(This,theCallback) ) 
+
+#define IDeckLinkInput_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \
+    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkInput_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrame_INTERFACE_DEFINED__
+#define __IDeckLinkVideoFrame_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoFrame */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoFrame;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("3F716FE0-F023-4111-BE5D-EF4414C05B17")
+    IDeckLinkVideoFrame : public IUnknown
+    {
+    public:
+        virtual long STDMETHODCALLTYPE GetWidth( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetHeight( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetRowBytes( void) = 0;
+        
+        virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0;
+        
+        virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            /* [out] */ void **buffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecode( 
+            /* [in] */ BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode **timecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAncillaryData( 
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoFrameVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoFrame * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoFrame * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoFrame * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoFrame * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoFrame * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoFrame * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoFrame * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoFrame * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoFrame * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkVideoFrame * This,
+            /* [in] */ BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkVideoFrame * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        END_INTERFACE
+    } IDeckLinkVideoFrameVtbl;
+
+    interface IDeckLinkVideoFrame
+    {
+        CONST_VTBL struct IDeckLinkVideoFrameVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoFrame_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoFrame_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoFrame_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoFrame_GetWidth(This)     \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkVideoFrame_GetHeight(This)    \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoFrame_GetRowBytes(This)  \
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoFrame_GetPixelFormat(This)       \
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoFrame_GetFlags(This)     \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoFrame_GetBytes(This,buffer)      \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkVideoFrame_GetTimecode(This,format,timecode)  \
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkVideoFrame_GetAncillaryData(This,ancillary)   \
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoFrame_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkMutableVideoFrame_INTERFACE_DEFINED__
+#define __IDeckLinkMutableVideoFrame_INTERFACE_DEFINED__
+
+/* interface IDeckLinkMutableVideoFrame */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkMutableVideoFrame;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("69E2639F-40DA-4E19-B6F2-20ACE815C390")
+    IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE SetFlags( 
+            /* [in] */ BMDFrameFlags newFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetTimecode( 
+            /* [in] */ BMDTimecodeFormat format,
+            /* [in] */ IDeckLinkTimecode *timecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetTimecodeFromComponents( 
+            /* [in] */ BMDTimecodeFormat format,
+            /* [in] */ unsigned char hours,
+            /* [in] */ unsigned char minutes,
+            /* [in] */ unsigned char seconds,
+            /* [in] */ unsigned char frames,
+            /* [in] */ BMDTimecodeFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAncillaryData( 
+            /* [in] */ IDeckLinkVideoFrameAncillary *ancillary) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetTimecodeUserBits( 
+            /* [in] */ BMDTimecodeFormat format,
+            /* [in] */ BMDTimecodeUserBits userBits) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkMutableVideoFrameVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkMutableVideoFrame * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkMutableVideoFrame * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkMutableVideoFrame * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkMutableVideoFrame * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkMutableVideoFrame * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkMutableVideoFrame * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkMutableVideoFrame * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [in] */ BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFlags )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [in] */ BMDFrameFlags newFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetTimecode )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [in] */ BMDTimecodeFormat format,
+            /* [in] */ IDeckLinkTimecode *timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetTimecodeFromComponents )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [in] */ BMDTimecodeFormat format,
+            /* [in] */ unsigned char hours,
+            /* [in] */ unsigned char minutes,
+            /* [in] */ unsigned char seconds,
+            /* [in] */ unsigned char frames,
+            /* [in] */ BMDTimecodeFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAncillaryData )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [in] */ IDeckLinkVideoFrameAncillary *ancillary);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetTimecodeUserBits )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [in] */ BMDTimecodeFormat format,
+            /* [in] */ BMDTimecodeUserBits userBits);
+        
+        END_INTERFACE
+    } IDeckLinkMutableVideoFrameVtbl;
+
+    interface IDeckLinkMutableVideoFrame
+    {
+        CONST_VTBL struct IDeckLinkMutableVideoFrameVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkMutableVideoFrame_QueryInterface(This,riid,ppvObject) \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkMutableVideoFrame_AddRef(This)        \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkMutableVideoFrame_Release(This)       \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkMutableVideoFrame_GetWidth(This)      \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkMutableVideoFrame_GetHeight(This)     \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkMutableVideoFrame_GetRowBytes(This)   \
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkMutableVideoFrame_GetPixelFormat(This)        \
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkMutableVideoFrame_GetFlags(This)      \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkMutableVideoFrame_GetBytes(This,buffer)       \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkMutableVideoFrame_GetTimecode(This,format,timecode)   \
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkMutableVideoFrame_GetAncillaryData(This,ancillary)    \
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+
+#define IDeckLinkMutableVideoFrame_SetFlags(This,newFlags)     \
+    ( (This)->lpVtbl -> SetFlags(This,newFlags) ) 
+
+#define IDeckLinkMutableVideoFrame_SetTimecode(This,format,timecode)   \
+    ( (This)->lpVtbl -> SetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkMutableVideoFrame_SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags)   \
+    ( (This)->lpVtbl -> SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags) ) 
+
+#define IDeckLinkMutableVideoFrame_SetAncillaryData(This,ancillary)    \
+    ( (This)->lpVtbl -> SetAncillaryData(This,ancillary) ) 
+
+#define IDeckLinkMutableVideoFrame_SetTimecodeUserBits(This,format,userBits)   \
+    ( (This)->lpVtbl -> SetTimecodeUserBits(This,format,userBits) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkMutableVideoFrame_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__
+#define __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoFrame3DExtensions */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoFrame3DExtensions;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7")
+    IDeckLinkVideoFrame3DExtensions : public IUnknown
+    {
+    public:
+        virtual BMDVideo3DPackingFormat STDMETHODCALLTYPE Get3DPackingFormat( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFrameForRightEye( 
+            /* [out] */ IDeckLinkVideoFrame **rightEyeFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoFrame3DExtensionsVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoFrame3DExtensions * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoFrame3DExtensions * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoFrame3DExtensions * This);
+        
+        BMDVideo3DPackingFormat ( STDMETHODCALLTYPE *Get3DPackingFormat )( 
+            IDeckLinkVideoFrame3DExtensions * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFrameForRightEye )( 
+            IDeckLinkVideoFrame3DExtensions * This,
+            /* [out] */ IDeckLinkVideoFrame **rightEyeFrame);
+        
+        END_INTERFACE
+    } IDeckLinkVideoFrame3DExtensionsVtbl;
+
+    interface IDeckLinkVideoFrame3DExtensions
+    {
+        CONST_VTBL struct IDeckLinkVideoFrame3DExtensionsVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoFrame3DExtensions_QueryInterface(This,riid,ppvObject)    \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoFrame3DExtensions_AddRef(This)   \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoFrame3DExtensions_Release(This)  \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoFrame3DExtensions_Get3DPackingFormat(This)       \
+    ( (This)->lpVtbl -> Get3DPackingFormat(This) ) 
+
+#define IDeckLinkVideoFrame3DExtensions_GetFrameForRightEye(This,rightEyeFrame)        \
+    ( (This)->lpVtbl -> GetFrameForRightEye(This,rightEyeFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__
+#define __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoInputFrame */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoInputFrame;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("05CFE374-537C-4094-9A57-680525118F44")
+    IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetStreamTime( 
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            /* [in] */ BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceTimestamp( 
+            /* [in] */ BMDTimeScale timeScale,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoInputFrameVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoInputFrame * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoInputFrame * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoInputFrame * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoInputFrame * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoInputFrame * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoInputFrame * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoInputFrame * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoInputFrame * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoInputFrame * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkVideoInputFrame * This,
+            /* [in] */ BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkVideoInputFrame * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( 
+            IDeckLinkVideoInputFrame * This,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            /* [in] */ BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceTimestamp )( 
+            IDeckLinkVideoInputFrame * This,
+            /* [in] */ BMDTimeScale timeScale,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration);
+        
+        END_INTERFACE
+    } IDeckLinkVideoInputFrameVtbl;
+
+    interface IDeckLinkVideoInputFrame
+    {
+        CONST_VTBL struct IDeckLinkVideoInputFrameVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoInputFrame_QueryInterface(This,riid,ppvObject)   \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoInputFrame_AddRef(This)  \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoInputFrame_Release(This) \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoInputFrame_GetWidth(This)        \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkVideoInputFrame_GetHeight(This)       \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoInputFrame_GetRowBytes(This)     \
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoInputFrame_GetPixelFormat(This)  \
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoInputFrame_GetFlags(This)        \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoInputFrame_GetBytes(This,buffer) \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkVideoInputFrame_GetTimecode(This,format,timecode)     \
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkVideoInputFrame_GetAncillaryData(This,ancillary)      \
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+
+#define IDeckLinkVideoInputFrame_GetStreamTime(This,frameTime,frameDuration,timeScale) \
+    ( (This)->lpVtbl -> GetStreamTime(This,frameTime,frameDuration,timeScale) ) 
+
+#define IDeckLinkVideoInputFrame_GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) \
+    ( (This)->lpVtbl -> GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrameAncillary_INTERFACE_DEFINED__
+#define __IDeckLinkVideoFrameAncillary_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoFrameAncillary */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoFrameAncillary;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("732E723C-D1A4-4E29-9E8E-4A88797A0004")
+    IDeckLinkVideoFrameAncillary : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetBufferForVerticalBlankingLine( 
+            /* [in] */ unsigned long lineNumber,
+            /* [out] */ void **buffer) = 0;
+        
+        virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0;
+        
+        virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoFrameAncillaryVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoFrameAncillary * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoFrameAncillary * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoFrameAncillary * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferForVerticalBlankingLine )( 
+            IDeckLinkVideoFrameAncillary * This,
+            /* [in] */ unsigned long lineNumber,
+            /* [out] */ void **buffer);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoFrameAncillary * This);
+        
+        BMDDisplayMode ( STDMETHODCALLTYPE *GetDisplayMode )( 
+            IDeckLinkVideoFrameAncillary * This);
+        
+        END_INTERFACE
+    } IDeckLinkVideoFrameAncillaryVtbl;
+
+    interface IDeckLinkVideoFrameAncillary
+    {
+        CONST_VTBL struct IDeckLinkVideoFrameAncillaryVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoFrameAncillary_QueryInterface(This,riid,ppvObject)       \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoFrameAncillary_AddRef(This)      \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoFrameAncillary_Release(This)     \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoFrameAncillary_GetBufferForVerticalBlankingLine(This,lineNumber,buffer)  \
+    ( (This)->lpVtbl -> GetBufferForVerticalBlankingLine(This,lineNumber,buffer) ) 
+
+#define IDeckLinkVideoFrameAncillary_GetPixelFormat(This)      \
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoFrameAncillary_GetDisplayMode(This)      \
+    ( (This)->lpVtbl -> GetDisplayMode(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoFrameAncillary_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkAudioInputPacket_INTERFACE_DEFINED__
+#define __IDeckLinkAudioInputPacket_INTERFACE_DEFINED__
+
+/* interface IDeckLinkAudioInputPacket */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkAudioInputPacket;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("E43D5870-2894-11DE-8C30-0800200C9A66")
+    IDeckLinkAudioInputPacket : public IUnknown
+    {
+    public:
+        virtual long STDMETHODCALLTYPE GetSampleFrameCount( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            /* [out] */ void **buffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetPacketTime( 
+            /* [out] */ BMDTimeValue *packetTime,
+            /* [in] */ BMDTimeScale timeScale) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkAudioInputPacketVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkAudioInputPacket * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkAudioInputPacket * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkAudioInputPacket * This);
+        
+        long ( STDMETHODCALLTYPE *GetSampleFrameCount )( 
+            IDeckLinkAudioInputPacket * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkAudioInputPacket * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetPacketTime )( 
+            IDeckLinkAudioInputPacket * This,
+            /* [out] */ BMDTimeValue *packetTime,
+            /* [in] */ BMDTimeScale timeScale);
+        
+        END_INTERFACE
+    } IDeckLinkAudioInputPacketVtbl;
+
+    interface IDeckLinkAudioInputPacket
+    {
+        CONST_VTBL struct IDeckLinkAudioInputPacketVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkAudioInputPacket_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkAudioInputPacket_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkAudioInputPacket_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkAudioInputPacket_GetSampleFrameCount(This)    \
+    ( (This)->lpVtbl -> GetSampleFrameCount(This) ) 
+
+#define IDeckLinkAudioInputPacket_GetBytes(This,buffer)        \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkAudioInputPacket_GetPacketTime(This,packetTime,timeScale)     \
+    ( (This)->lpVtbl -> GetPacketTime(This,packetTime,timeScale) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkAudioInputPacket_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkScreenPreviewCallback_INTERFACE_DEFINED__
+#define __IDeckLinkScreenPreviewCallback_INTERFACE_DEFINED__
+
+/* interface IDeckLinkScreenPreviewCallback */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkScreenPreviewCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438")
+    IDeckLinkScreenPreviewCallback : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DrawFrame( 
+            /* [in] */ IDeckLinkVideoFrame *theFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkScreenPreviewCallbackVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkScreenPreviewCallback * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkScreenPreviewCallback * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkScreenPreviewCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DrawFrame )( 
+            IDeckLinkScreenPreviewCallback * This,
+            /* [in] */ IDeckLinkVideoFrame *theFrame);
+        
+        END_INTERFACE
+    } IDeckLinkScreenPreviewCallbackVtbl;
+
+    interface IDeckLinkScreenPreviewCallback
+    {
+        CONST_VTBL struct IDeckLinkScreenPreviewCallbackVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkScreenPreviewCallback_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkScreenPreviewCallback_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkScreenPreviewCallback_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkScreenPreviewCallback_DrawFrame(This,theFrame)        \
+    ( (This)->lpVtbl -> DrawFrame(This,theFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkScreenPreviewCallback_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkGLScreenPreviewHelper_INTERFACE_DEFINED__
+#define __IDeckLinkGLScreenPreviewHelper_INTERFACE_DEFINED__
+
+/* interface IDeckLinkGLScreenPreviewHelper */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkGLScreenPreviewHelper;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("504E2209-CAC7-4C1A-9FB4-C5BB6274D22F")
+    IDeckLinkGLScreenPreviewHelper : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE InitializeGL( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PaintGL( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetFrame( 
+            /* [in] */ IDeckLinkVideoFrame *theFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat( 
+            /* [in] */ BMD3DPreviewFormat previewFormat) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkGLScreenPreviewHelperVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkGLScreenPreviewHelper * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkGLScreenPreviewHelper * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkGLScreenPreviewHelper * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *InitializeGL )( 
+            IDeckLinkGLScreenPreviewHelper * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *PaintGL )( 
+            IDeckLinkGLScreenPreviewHelper * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFrame )( 
+            IDeckLinkGLScreenPreviewHelper * This,
+            /* [in] */ IDeckLinkVideoFrame *theFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set3DPreviewFormat )( 
+            IDeckLinkGLScreenPreviewHelper * This,
+            /* [in] */ BMD3DPreviewFormat previewFormat);
+        
+        END_INTERFACE
+    } IDeckLinkGLScreenPreviewHelperVtbl;
+
+    interface IDeckLinkGLScreenPreviewHelper
+    {
+        CONST_VTBL struct IDeckLinkGLScreenPreviewHelperVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkGLScreenPreviewHelper_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkGLScreenPreviewHelper_InitializeGL(This)      \
+    ( (This)->lpVtbl -> InitializeGL(This) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_PaintGL(This)   \
+    ( (This)->lpVtbl -> PaintGL(This) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_SetFrame(This,theFrame) \
+    ( (This)->lpVtbl -> SetFrame(This,theFrame) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_Set3DPreviewFormat(This,previewFormat)  \
+    ( (This)->lpVtbl -> Set3DPreviewFormat(This,previewFormat) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkGLScreenPreviewHelper_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDX9ScreenPreviewHelper_INTERFACE_DEFINED__
+#define __IDeckLinkDX9ScreenPreviewHelper_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDX9ScreenPreviewHelper */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDX9ScreenPreviewHelper;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("2094B522-D1A1-40C0-9AC7-1C012218EF02")
+    IDeckLinkDX9ScreenPreviewHelper : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Initialize( 
+            /* [in] */ void *device) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Render( 
+            /* [in] */ RECT *rc) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetFrame( 
+            /* [in] */ IDeckLinkVideoFrame *theFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat( 
+            /* [in] */ BMD3DPreviewFormat previewFormat) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDX9ScreenPreviewHelperVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDX9ScreenPreviewHelper * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDX9ScreenPreviewHelper * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDX9ScreenPreviewHelper * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Initialize )( 
+            IDeckLinkDX9ScreenPreviewHelper * This,
+            /* [in] */ void *device);
+        
+        HRESULT ( STDMETHODCALLTYPE *Render )( 
+            IDeckLinkDX9ScreenPreviewHelper * This,
+            /* [in] */ RECT *rc);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFrame )( 
+            IDeckLinkDX9ScreenPreviewHelper * This,
+            /* [in] */ IDeckLinkVideoFrame *theFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set3DPreviewFormat )( 
+            IDeckLinkDX9ScreenPreviewHelper * This,
+            /* [in] */ BMD3DPreviewFormat previewFormat);
+        
+        END_INTERFACE
+    } IDeckLinkDX9ScreenPreviewHelperVtbl;
+
+    interface IDeckLinkDX9ScreenPreviewHelper
+    {
+        CONST_VTBL struct IDeckLinkDX9ScreenPreviewHelperVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDX9ScreenPreviewHelper_QueryInterface(This,riid,ppvObject)    \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDX9ScreenPreviewHelper_AddRef(This)   \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDX9ScreenPreviewHelper_Release(This)  \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDX9ScreenPreviewHelper_Initialize(This,device)        \
+    ( (This)->lpVtbl -> Initialize(This,device) ) 
+
+#define IDeckLinkDX9ScreenPreviewHelper_Render(This,rc)        \
+    ( (This)->lpVtbl -> Render(This,rc) ) 
+
+#define IDeckLinkDX9ScreenPreviewHelper_SetFrame(This,theFrame)        \
+    ( (This)->lpVtbl -> SetFrame(This,theFrame) ) 
+
+#define IDeckLinkDX9ScreenPreviewHelper_Set3DPreviewFormat(This,previewFormat) \
+    ( (This)->lpVtbl -> Set3DPreviewFormat(This,previewFormat) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDX9ScreenPreviewHelper_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkNotificationCallback_INTERFACE_DEFINED__
+#define __IDeckLinkNotificationCallback_INTERFACE_DEFINED__
+
+/* interface IDeckLinkNotificationCallback */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkNotificationCallback;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("b002a1ec-070d-4288-8289-bd5d36e5ff0d")
+    IDeckLinkNotificationCallback : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Notify( 
+            /* [in] */ BMDNotifications topic,
+            /* [in] */ ULONGLONG param1,
+            /* [in] */ ULONGLONG param2) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkNotificationCallbackVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkNotificationCallback * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkNotificationCallback * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkNotificationCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Notify )( 
+            IDeckLinkNotificationCallback * This,
+            /* [in] */ BMDNotifications topic,
+            /* [in] */ ULONGLONG param1,
+            /* [in] */ ULONGLONG param2);
+        
+        END_INTERFACE
+    } IDeckLinkNotificationCallbackVtbl;
+
+    interface IDeckLinkNotificationCallback
+    {
+        CONST_VTBL struct IDeckLinkNotificationCallbackVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkNotificationCallback_QueryInterface(This,riid,ppvObject)      \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkNotificationCallback_AddRef(This)     \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkNotificationCallback_Release(This)    \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkNotificationCallback_Notify(This,topic,param1,param2) \
+    ( (This)->lpVtbl -> Notify(This,topic,param1,param2) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkNotificationCallback_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkNotification_INTERFACE_DEFINED__
+#define __IDeckLinkNotification_INTERFACE_DEFINED__
+
+/* interface IDeckLinkNotification */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkNotification;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("0a1fb207-e215-441b-9b19-6fa1575946c5")
+    IDeckLinkNotification : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Subscribe( 
+            /* [in] */ BMDNotifications topic,
+            /* [in] */ IDeckLinkNotificationCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Unsubscribe( 
+            /* [in] */ BMDNotifications topic,
+            /* [in] */ IDeckLinkNotificationCallback *theCallback) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkNotificationVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkNotification * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkNotification * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkNotification * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Subscribe )( 
+            IDeckLinkNotification * This,
+            /* [in] */ BMDNotifications topic,
+            /* [in] */ IDeckLinkNotificationCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *Unsubscribe )( 
+            IDeckLinkNotification * This,
+            /* [in] */ BMDNotifications topic,
+            /* [in] */ IDeckLinkNotificationCallback *theCallback);
+        
+        END_INTERFACE
+    } IDeckLinkNotificationVtbl;
+
+    interface IDeckLinkNotification
+    {
+        CONST_VTBL struct IDeckLinkNotificationVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkNotification_QueryInterface(This,riid,ppvObject)      \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkNotification_AddRef(This)     \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkNotification_Release(This)    \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkNotification_Subscribe(This,topic,theCallback)        \
+    ( (This)->lpVtbl -> Subscribe(This,topic,theCallback) ) 
+
+#define IDeckLinkNotification_Unsubscribe(This,topic,theCallback)      \
+    ( (This)->lpVtbl -> Unsubscribe(This,topic,theCallback) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkNotification_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkAttributes_INTERFACE_DEFINED__
+#define __IDeckLinkAttributes_INTERFACE_DEFINED__
+
+/* interface IDeckLinkAttributes */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkAttributes;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("ABC11843-D966-44CB-96E2-A1CB5D3135C4")
+    IDeckLinkAttributes : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetFlag( 
+            /* [in] */ BMDDeckLinkAttributeID cfgID,
+            /* [out] */ BOOL *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetInt( 
+            /* [in] */ BMDDeckLinkAttributeID cfgID,
+            /* [out] */ LONGLONG *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFloat( 
+            /* [in] */ BMDDeckLinkAttributeID cfgID,
+            /* [out] */ double *value) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetString( 
+            /* [in] */ BMDDeckLinkAttributeID cfgID,
+            /* [out] */ BSTR *value) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkAttributesVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkAttributes * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkAttributes * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkAttributes * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFlag )( 
+            IDeckLinkAttributes * This,
+            /* [in] */ BMDDeckLinkAttributeID cfgID,
+            /* [out] */ BOOL *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetInt )( 
+            IDeckLinkAttributes * This,
+            /* [in] */ BMDDeckLinkAttributeID cfgID,
+            /* [out] */ LONGLONG *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFloat )( 
+            IDeckLinkAttributes * This,
+            /* [in] */ BMDDeckLinkAttributeID cfgID,
+            /* [out] */ double *value);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetString )( 
+            IDeckLinkAttributes * This,
+            /* [in] */ BMDDeckLinkAttributeID cfgID,
+            /* [out] */ BSTR *value);
+        
+        END_INTERFACE
+    } IDeckLinkAttributesVtbl;
+
+    interface IDeckLinkAttributes
+    {
+        CONST_VTBL struct IDeckLinkAttributesVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkAttributes_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkAttributes_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkAttributes_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkAttributes_GetFlag(This,cfgID,value)  \
+    ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) 
+
+#define IDeckLinkAttributes_GetInt(This,cfgID,value)   \
+    ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) 
+
+#define IDeckLinkAttributes_GetFloat(This,cfgID,value) \
+    ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) 
+
+#define IDeckLinkAttributes_GetString(This,cfgID,value)        \
+    ( (This)->lpVtbl -> GetString(This,cfgID,value) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkAttributes_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkKeyer_INTERFACE_DEFINED__
+#define __IDeckLinkKeyer_INTERFACE_DEFINED__
+
+/* interface IDeckLinkKeyer */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkKeyer;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("89AFCAF5-65F8-421E-98F7-96FE5F5BFBA3")
+    IDeckLinkKeyer : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Enable( 
+            /* [in] */ BOOL isExternal) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetLevel( 
+            /* [in] */ unsigned char level) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE RampUp( 
+            /* [in] */ unsigned long numberOfFrames) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE RampDown( 
+            /* [in] */ unsigned long numberOfFrames) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Disable( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkKeyerVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkKeyer * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkKeyer * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkKeyer * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Enable )( 
+            IDeckLinkKeyer * This,
+            /* [in] */ BOOL isExternal);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetLevel )( 
+            IDeckLinkKeyer * This,
+            /* [in] */ unsigned char level);
+        
+        HRESULT ( STDMETHODCALLTYPE *RampUp )( 
+            IDeckLinkKeyer * This,
+            /* [in] */ unsigned long numberOfFrames);
+        
+        HRESULT ( STDMETHODCALLTYPE *RampDown )( 
+            IDeckLinkKeyer * This,
+            /* [in] */ unsigned long numberOfFrames);
+        
+        HRESULT ( STDMETHODCALLTYPE *Disable )( 
+            IDeckLinkKeyer * This);
+        
+        END_INTERFACE
+    } IDeckLinkKeyerVtbl;
+
+    interface IDeckLinkKeyer
+    {
+        CONST_VTBL struct IDeckLinkKeyerVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkKeyer_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkKeyer_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkKeyer_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkKeyer_Enable(This,isExternal) \
+    ( (This)->lpVtbl -> Enable(This,isExternal) ) 
+
+#define IDeckLinkKeyer_SetLevel(This,level)    \
+    ( (This)->lpVtbl -> SetLevel(This,level) ) 
+
+#define IDeckLinkKeyer_RampUp(This,numberOfFrames)     \
+    ( (This)->lpVtbl -> RampUp(This,numberOfFrames) ) 
+
+#define IDeckLinkKeyer_RampDown(This,numberOfFrames)   \
+    ( (This)->lpVtbl -> RampDown(This,numberOfFrames) ) 
+
+#define IDeckLinkKeyer_Disable(This)   \
+    ( (This)->lpVtbl -> Disable(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkKeyer_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoConversion_INTERFACE_DEFINED__
+#define __IDeckLinkVideoConversion_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoConversion */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoConversion;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("3BBCB8A2-DA2C-42D9-B5D8-88083644E99A")
+    IDeckLinkVideoConversion : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE ConvertFrame( 
+            /* [in] */ IDeckLinkVideoFrame *srcFrame,
+            /* [in] */ IDeckLinkVideoFrame *dstFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoConversionVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoConversion * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoConversion * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoConversion * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ConvertFrame )( 
+            IDeckLinkVideoConversion * This,
+            /* [in] */ IDeckLinkVideoFrame *srcFrame,
+            /* [in] */ IDeckLinkVideoFrame *dstFrame);
+        
+        END_INTERFACE
+    } IDeckLinkVideoConversionVtbl;
+
+    interface IDeckLinkVideoConversion
+    {
+        CONST_VTBL struct IDeckLinkVideoConversionVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoConversion_QueryInterface(This,riid,ppvObject)   \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoConversion_AddRef(This)  \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoConversion_Release(This) \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoConversion_ConvertFrame(This,srcFrame,dstFrame)  \
+    ( (This)->lpVtbl -> ConvertFrame(This,srcFrame,dstFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoConversion_INTERFACE_DEFINED__ */
+
+
+EXTERN_C const CLSID CLSID_CDeckLinkIterator;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("1F2E109A-8F4F-49E4-9203-135595CB6FA5")
+CDeckLinkIterator;
+#endif
+
+EXTERN_C const CLSID CLSID_CDeckLinkAPIInformation;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("263CA19F-ED09-482E-9F9D-84005783A237")
+CDeckLinkAPIInformation;
+#endif
+
+EXTERN_C const CLSID CLSID_CDeckLinkGLScreenPreviewHelper;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("F63E77C7-B655-4A4A-9AD0-3CA85D394343")
+CDeckLinkGLScreenPreviewHelper;
+#endif
+
+EXTERN_C const CLSID CLSID_CDeckLinkDX9ScreenPreviewHelper;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("CC010023-E01D-4525-9D59-80C8AB3DC7A0")
+CDeckLinkDX9ScreenPreviewHelper;
+#endif
+
+EXTERN_C const CLSID CLSID_CDeckLinkVideoConversion;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("7DBBBB11-5B7B-467D-AEA4-CEA468FD368C")
+CDeckLinkVideoConversion;
+#endif
+
+#ifndef __IDeckLinkInput_v9_2_INTERFACE_DEFINED__
+#define __IDeckLinkInput_v9_2_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInput_v9_2 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInput_v9_2;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("6D40EF78-28B9-4E21-990D-95BB7750A04F")
+    IDeckLinkInput_v9_2 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags,
+            /* [out] */ BMDDisplayModeSupport *result,
+            /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( 
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( 
+            /* [out] */ unsigned long *availableFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( 
+            /* [in] */ BMDAudioSampleRate sampleRate,
+            /* [in] */ BMDAudioSampleType sampleType,
+            /* [in] */ unsigned long channelCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( 
+            /* [out] */ unsigned long *availableSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IDeckLinkInputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            /* [in] */ BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkInput_v9_2Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInput_v9_2 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInput_v9_2 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInput_v9_2 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkInput_v9_2 * This,
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags,
+            /* [out] */ BMDDisplayModeSupport *result,
+            /* [out] */ IDeckLinkDisplayMode **resultDisplayMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkInput_v9_2 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkInput_v9_2 * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( 
+            IDeckLinkInput_v9_2 * This,
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( 
+            IDeckLinkInput_v9_2 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( 
+            IDeckLinkInput_v9_2 * This,
+            /* [out] */ unsigned long *availableFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( 
+            IDeckLinkInput_v9_2 * This,
+            /* [in] */ BMDAudioSampleRate sampleRate,
+            /* [in] */ BMDAudioSampleType sampleType,
+            /* [in] */ unsigned long channelCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( 
+            IDeckLinkInput_v9_2 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( 
+            IDeckLinkInput_v9_2 * This,
+            /* [out] */ unsigned long *availableSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartStreams )( 
+            IDeckLinkInput_v9_2 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopStreams )( 
+            IDeckLinkInput_v9_2 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *PauseStreams )( 
+            IDeckLinkInput_v9_2 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushStreams )( 
+            IDeckLinkInput_v9_2 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IDeckLinkInput_v9_2 * This,
+            /* [in] */ IDeckLinkInputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkInput_v9_2 * This,
+            /* [in] */ BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame);
+        
+        END_INTERFACE
+    } IDeckLinkInput_v9_2Vtbl;
+
+    interface IDeckLinkInput_v9_2
+    {
+        CONST_VTBL struct IDeckLinkInput_v9_2Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInput_v9_2_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInput_v9_2_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInput_v9_2_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInput_v9_2_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode)  \
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) ) 
+
+#define IDeckLinkInput_v9_2_GetDisplayModeIterator(This,iterator)      \
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkInput_v9_2_SetScreenPreviewCallback(This,previewCallback)     \
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
+
+#define IDeckLinkInput_v9_2_EnableVideoInput(This,displayMode,pixelFormat,flags)       \
+    ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) 
+
+#define IDeckLinkInput_v9_2_DisableVideoInput(This)    \
+    ( (This)->lpVtbl -> DisableVideoInput(This) ) 
+
+#define IDeckLinkInput_v9_2_GetAvailableVideoFrameCount(This,availableFrameCount)      \
+    ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) 
+
+#define IDeckLinkInput_v9_2_EnableAudioInput(This,sampleRate,sampleType,channelCount)  \
+    ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) 
+
+#define IDeckLinkInput_v9_2_DisableAudioInput(This)    \
+    ( (This)->lpVtbl -> DisableAudioInput(This) ) 
+
+#define IDeckLinkInput_v9_2_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)  \
+    ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) 
+
+#define IDeckLinkInput_v9_2_StartStreams(This) \
+    ( (This)->lpVtbl -> StartStreams(This) ) 
+
+#define IDeckLinkInput_v9_2_StopStreams(This)  \
+    ( (This)->lpVtbl -> StopStreams(This) ) 
+
+#define IDeckLinkInput_v9_2_PauseStreams(This) \
+    ( (This)->lpVtbl -> PauseStreams(This) ) 
+
+#define IDeckLinkInput_v9_2_FlushStreams(This) \
+    ( (This)->lpVtbl -> FlushStreams(This) ) 
+
+#define IDeckLinkInput_v9_2_SetCallback(This,theCallback)      \
+    ( (This)->lpVtbl -> SetCallback(This,theCallback) ) 
+
+#define IDeckLinkInput_v9_2_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)    \
+    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkInput_v9_2_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDeckControlStatusCallback_v8_1_INTERFACE_DEFINED__
+#define __IDeckLinkDeckControlStatusCallback_v8_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDeckControlStatusCallback_v8_1 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDeckControlStatusCallback_v8_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("E5F693C1-4283-4716-B18F-C1431521955B")
+    IDeckLinkDeckControlStatusCallback_v8_1 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE TimecodeUpdate( 
+            /* [in] */ BMDTimecodeBCD currentTimecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE VTRControlStateChanged( 
+            /* [in] */ BMDDeckControlVTRControlState_v8_1 newState,
+            /* [in] */ BMDDeckControlError error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DeckControlEventReceived( 
+            /* [in] */ BMDDeckControlEvent event,
+            /* [in] */ BMDDeckControlError error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DeckControlStatusChanged( 
+            /* [in] */ BMDDeckControlStatusFlags flags,
+            /* [in] */ unsigned long mask) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDeckControlStatusCallback_v8_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDeckControlStatusCallback_v8_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDeckControlStatusCallback_v8_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDeckControlStatusCallback_v8_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *TimecodeUpdate )( 
+            IDeckLinkDeckControlStatusCallback_v8_1 * This,
+            /* [in] */ BMDTimecodeBCD currentTimecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *VTRControlStateChanged )( 
+            IDeckLinkDeckControlStatusCallback_v8_1 * This,
+            /* [in] */ BMDDeckControlVTRControlState_v8_1 newState,
+            /* [in] */ BMDDeckControlError error);
+        
+        HRESULT ( STDMETHODCALLTYPE *DeckControlEventReceived )( 
+            IDeckLinkDeckControlStatusCallback_v8_1 * This,
+            /* [in] */ BMDDeckControlEvent event,
+            /* [in] */ BMDDeckControlError error);
+        
+        HRESULT ( STDMETHODCALLTYPE *DeckControlStatusChanged )( 
+            IDeckLinkDeckControlStatusCallback_v8_1 * This,
+            /* [in] */ BMDDeckControlStatusFlags flags,
+            /* [in] */ unsigned long mask);
+        
+        END_INTERFACE
+    } IDeckLinkDeckControlStatusCallback_v8_1Vtbl;
+
+    interface IDeckLinkDeckControlStatusCallback_v8_1
+    {
+        CONST_VTBL struct IDeckLinkDeckControlStatusCallback_v8_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDeckControlStatusCallback_v8_1_QueryInterface(This,riid,ppvObject)    \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDeckControlStatusCallback_v8_1_AddRef(This)   \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDeckControlStatusCallback_v8_1_Release(This)  \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDeckControlStatusCallback_v8_1_TimecodeUpdate(This,currentTimecode)   \
+    ( (This)->lpVtbl -> TimecodeUpdate(This,currentTimecode) ) 
+
+#define IDeckLinkDeckControlStatusCallback_v8_1_VTRControlStateChanged(This,newState,error)    \
+    ( (This)->lpVtbl -> VTRControlStateChanged(This,newState,error) ) 
+
+#define IDeckLinkDeckControlStatusCallback_v8_1_DeckControlEventReceived(This,event,error)     \
+    ( (This)->lpVtbl -> DeckControlEventReceived(This,event,error) ) 
+
+#define IDeckLinkDeckControlStatusCallback_v8_1_DeckControlStatusChanged(This,flags,mask)      \
+    ( (This)->lpVtbl -> DeckControlStatusChanged(This,flags,mask) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDeckControlStatusCallback_v8_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDeckControl_v8_1_INTERFACE_DEFINED__
+#define __IDeckLinkDeckControl_v8_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDeckControl_v8_1 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDeckControl_v8_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("522A9E39-0F3C-4742-94EE-D80DE335DA1D")
+    IDeckLinkDeckControl_v8_1 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Open( 
+            /* [in] */ BMDTimeScale timeScale,
+            /* [in] */ BMDTimeValue timeValue,
+            /* [in] */ BOOL timecodeIsDropFrame,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Close( 
+            /* [in] */ BOOL standbyOn) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCurrentState( 
+            /* [out] */ BMDDeckControlMode *mode,
+            /* [out] */ BMDDeckControlVTRControlState_v8_1 *vtrControlState,
+            /* [out] */ BMDDeckControlStatusFlags *flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetStandby( 
+            /* [in] */ BOOL standbyOn) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SendCommand( 
+            /* [in] */ unsigned char *inBuffer,
+            /* [in] */ unsigned long inBufferSize,
+            /* [out] */ unsigned char *outBuffer,
+            /* [out] */ unsigned long *outDataSize,
+            /* [in] */ unsigned long outBufferSize,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Play( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Stop( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE TogglePlayStop( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Eject( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GoToTimecode( 
+            /* [in] */ BMDTimecodeBCD timecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FastForward( 
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Rewind( 
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StepForward( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StepBack( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Jog( 
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Shuttle( 
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecodeString( 
+            /* [out] */ BSTR *currentTimeCode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecode( 
+            /* [out] */ IDeckLinkTimecode **currentTimecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecodeBCD( 
+            /* [out] */ BMDTimecodeBCD *currentTimecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetPreroll( 
+            /* [in] */ unsigned long prerollSeconds) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetPreroll( 
+            /* [out] */ unsigned long *prerollSeconds) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetExportOffset( 
+            /* [in] */ long exportOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetExportOffset( 
+            /* [out] */ long *exportOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetManualExportOffset( 
+            /* [out] */ long *deckManualExportOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCaptureOffset( 
+            /* [in] */ long captureOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCaptureOffset( 
+            /* [out] */ long *captureOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartExport( 
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [in] */ BMDDeckControlExportModeOpsFlags exportModeOps,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartCapture( 
+            /* [in] */ BOOL useVITC,
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDeviceID( 
+            /* [out] */ unsigned short *deviceId,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CrashRecordStart( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CrashRecordStop( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IDeckLinkDeckControlStatusCallback_v8_1 *callback) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDeckControl_v8_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDeckControl_v8_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDeckControl_v8_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Open )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ BMDTimeScale timeScale,
+            /* [in] */ BMDTimeValue timeValue,
+            /* [in] */ BOOL timecodeIsDropFrame,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Close )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ BOOL standbyOn);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCurrentState )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BMDDeckControlMode *mode,
+            /* [out] */ BMDDeckControlVTRControlState_v8_1 *vtrControlState,
+            /* [out] */ BMDDeckControlStatusFlags *flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetStandby )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ BOOL standbyOn);
+        
+        HRESULT ( STDMETHODCALLTYPE *SendCommand )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ unsigned char *inBuffer,
+            /* [in] */ unsigned long inBufferSize,
+            /* [out] */ unsigned char *outBuffer,
+            /* [out] */ unsigned long *outDataSize,
+            /* [in] */ unsigned long outBufferSize,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Play )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Stop )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *TogglePlayStop )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Eject )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GoToTimecode )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ BMDTimecodeBCD timecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *FastForward )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Rewind )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *StepForward )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *StepBack )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Jog )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Shuttle )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecodeString )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BSTR *currentTimeCode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ IDeckLinkTimecode **currentTimecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecodeBCD )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BMDTimecodeBCD *currentTimecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetPreroll )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ unsigned long prerollSeconds);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetPreroll )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ unsigned long *prerollSeconds);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetExportOffset )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ long exportOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetExportOffset )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ long *exportOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetManualExportOffset )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ long *deckManualExportOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCaptureOffset )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ long captureOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCaptureOffset )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ long *captureOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartExport )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [in] */ BMDDeckControlExportModeOpsFlags exportModeOps,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartCapture )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ BOOL useVITC,
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDeviceID )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ unsigned short *deviceId,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Abort )( 
+            IDeckLinkDeckControl_v8_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *CrashRecordStart )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *CrashRecordStop )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IDeckLinkDeckControl_v8_1 * This,
+            /* [in] */ IDeckLinkDeckControlStatusCallback_v8_1 *callback);
+        
+        END_INTERFACE
+    } IDeckLinkDeckControl_v8_1Vtbl;
+
+    interface IDeckLinkDeckControl_v8_1
+    {
+        CONST_VTBL struct IDeckLinkDeckControl_v8_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDeckControl_v8_1_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDeckControl_v8_1_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDeckControl_v8_1_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDeckControl_v8_1_Open(This,timeScale,timeValue,timecodeIsDropFrame,error)     \
+    ( (This)->lpVtbl -> Open(This,timeScale,timeValue,timecodeIsDropFrame,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_Close(This,standbyOn)        \
+    ( (This)->lpVtbl -> Close(This,standbyOn) ) 
+
+#define IDeckLinkDeckControl_v8_1_GetCurrentState(This,mode,vtrControlState,flags)     \
+    ( (This)->lpVtbl -> GetCurrentState(This,mode,vtrControlState,flags) ) 
+
+#define IDeckLinkDeckControl_v8_1_SetStandby(This,standbyOn)   \
+    ( (This)->lpVtbl -> SetStandby(This,standbyOn) ) 
+
+#define IDeckLinkDeckControl_v8_1_SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error)    \
+    ( (This)->lpVtbl -> SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_Play(This,error)     \
+    ( (This)->lpVtbl -> Play(This,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_Stop(This,error)     \
+    ( (This)->lpVtbl -> Stop(This,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_TogglePlayStop(This,error)   \
+    ( (This)->lpVtbl -> TogglePlayStop(This,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_Eject(This,error)    \
+    ( (This)->lpVtbl -> Eject(This,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_GoToTimecode(This,timecode,error)    \
+    ( (This)->lpVtbl -> GoToTimecode(This,timecode,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_FastForward(This,viewTape,error)     \
+    ( (This)->lpVtbl -> FastForward(This,viewTape,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_Rewind(This,viewTape,error)  \
+    ( (This)->lpVtbl -> Rewind(This,viewTape,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_StepForward(This,error)      \
+    ( (This)->lpVtbl -> StepForward(This,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_StepBack(This,error) \
+    ( (This)->lpVtbl -> StepBack(This,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_Jog(This,rate,error) \
+    ( (This)->lpVtbl -> Jog(This,rate,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_Shuttle(This,rate,error)     \
+    ( (This)->lpVtbl -> Shuttle(This,rate,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_GetTimecodeString(This,currentTimeCode,error)        \
+    ( (This)->lpVtbl -> GetTimecodeString(This,currentTimeCode,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_GetTimecode(This,currentTimecode,error)      \
+    ( (This)->lpVtbl -> GetTimecode(This,currentTimecode,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_GetTimecodeBCD(This,currentTimecode,error)   \
+    ( (This)->lpVtbl -> GetTimecodeBCD(This,currentTimecode,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_SetPreroll(This,prerollSeconds)      \
+    ( (This)->lpVtbl -> SetPreroll(This,prerollSeconds) ) 
+
+#define IDeckLinkDeckControl_v8_1_GetPreroll(This,prerollSeconds)      \
+    ( (This)->lpVtbl -> GetPreroll(This,prerollSeconds) ) 
+
+#define IDeckLinkDeckControl_v8_1_SetExportOffset(This,exportOffsetFields)     \
+    ( (This)->lpVtbl -> SetExportOffset(This,exportOffsetFields) ) 
+
+#define IDeckLinkDeckControl_v8_1_GetExportOffset(This,exportOffsetFields)     \
+    ( (This)->lpVtbl -> GetExportOffset(This,exportOffsetFields) ) 
+
+#define IDeckLinkDeckControl_v8_1_GetManualExportOffset(This,deckManualExportOffsetFields)     \
+    ( (This)->lpVtbl -> GetManualExportOffset(This,deckManualExportOffsetFields) ) 
+
+#define IDeckLinkDeckControl_v8_1_SetCaptureOffset(This,captureOffsetFields)   \
+    ( (This)->lpVtbl -> SetCaptureOffset(This,captureOffsetFields) ) 
+
+#define IDeckLinkDeckControl_v8_1_GetCaptureOffset(This,captureOffsetFields)   \
+    ( (This)->lpVtbl -> GetCaptureOffset(This,captureOffsetFields) ) 
+
+#define IDeckLinkDeckControl_v8_1_StartExport(This,inTimecode,outTimecode,exportModeOps,error) \
+    ( (This)->lpVtbl -> StartExport(This,inTimecode,outTimecode,exportModeOps,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_StartCapture(This,useVITC,inTimecode,outTimecode,error)      \
+    ( (This)->lpVtbl -> StartCapture(This,useVITC,inTimecode,outTimecode,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_GetDeviceID(This,deviceId,error)     \
+    ( (This)->lpVtbl -> GetDeviceID(This,deviceId,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_Abort(This)  \
+    ( (This)->lpVtbl -> Abort(This) ) 
+
+#define IDeckLinkDeckControl_v8_1_CrashRecordStart(This,error) \
+    ( (This)->lpVtbl -> CrashRecordStart(This,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_CrashRecordStop(This,error)  \
+    ( (This)->lpVtbl -> CrashRecordStop(This,error) ) 
+
+#define IDeckLinkDeckControl_v8_1_SetCallback(This,callback)   \
+    ( (This)->lpVtbl -> SetCallback(This,callback) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDeckControl_v8_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLink_v8_0_INTERFACE_DEFINED__
+#define __IDeckLink_v8_0_INTERFACE_DEFINED__
+
+/* interface IDeckLink_v8_0 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLink_v8_0;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("62BFF75D-6569-4E55-8D4D-66AA03829ABC")
+    IDeckLink_v8_0 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetModelName( 
+            /* [out] */ BSTR *modelName) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLink_v8_0Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLink_v8_0 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLink_v8_0 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLink_v8_0 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetModelName )( 
+            IDeckLink_v8_0 * This,
+            /* [out] */ BSTR *modelName);
+        
+        END_INTERFACE
+    } IDeckLink_v8_0Vtbl;
+
+    interface IDeckLink_v8_0
+    {
+        CONST_VTBL struct IDeckLink_v8_0Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLink_v8_0_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLink_v8_0_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLink_v8_0_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLink_v8_0_GetModelName(This,modelName)    \
+    ( (This)->lpVtbl -> GetModelName(This,modelName) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLink_v8_0_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkIterator_v8_0_INTERFACE_DEFINED__
+#define __IDeckLinkIterator_v8_0_INTERFACE_DEFINED__
+
+/* interface IDeckLinkIterator_v8_0 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkIterator_v8_0;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("74E936FC-CC28-4A67-81A0-1E94E52D4E69")
+    IDeckLinkIterator_v8_0 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Next( 
+            /* [out] */ IDeckLink_v8_0 **deckLinkInstance) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkIterator_v8_0Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkIterator_v8_0 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkIterator_v8_0 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkIterator_v8_0 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Next )( 
+            IDeckLinkIterator_v8_0 * This,
+            /* [out] */ IDeckLink_v8_0 **deckLinkInstance);
+        
+        END_INTERFACE
+    } IDeckLinkIterator_v8_0Vtbl;
+
+    interface IDeckLinkIterator_v8_0
+    {
+        CONST_VTBL struct IDeckLinkIterator_v8_0Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkIterator_v8_0_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkIterator_v8_0_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkIterator_v8_0_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkIterator_v8_0_Next(This,deckLinkInstance)     \
+    ( (This)->lpVtbl -> Next(This,deckLinkInstance) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkIterator_v8_0_INTERFACE_DEFINED__ */
+
+
+EXTERN_C const CLSID CLSID_CDeckLinkIterator_v8_0;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("D9EDA3B3-2887-41FA-B724-017CF1EB1D37")
+CDeckLinkIterator_v8_0;
+#endif
+
+#ifndef __IDeckLinkDeckControl_v7_9_INTERFACE_DEFINED__
+#define __IDeckLinkDeckControl_v7_9_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDeckControl_v7_9 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDeckControl_v7_9;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("A4D81043-0619-42B7-8ED6-602D29041DF7")
+    IDeckLinkDeckControl_v7_9 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Open( 
+            /* [in] */ BMDTimeScale timeScale,
+            /* [in] */ BMDTimeValue timeValue,
+            /* [in] */ BOOL timecodeIsDropFrame,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Close( 
+            /* [in] */ BOOL standbyOn) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCurrentState( 
+            /* [out] */ BMDDeckControlMode *mode,
+            /* [out] */ BMDDeckControlVTRControlState *vtrControlState,
+            /* [out] */ BMDDeckControlStatusFlags *flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetStandby( 
+            /* [in] */ BOOL standbyOn) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Play( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Stop( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE TogglePlayStop( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Eject( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GoToTimecode( 
+            /* [in] */ BMDTimecodeBCD timecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FastForward( 
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Rewind( 
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StepForward( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StepBack( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Jog( 
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Shuttle( 
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecodeString( 
+            /* [out] */ BSTR *currentTimeCode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecode( 
+            /* [out] */ IDeckLinkTimecode **currentTimecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecodeBCD( 
+            /* [out] */ BMDTimecodeBCD *currentTimecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetPreroll( 
+            /* [in] */ unsigned long prerollSeconds) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetPreroll( 
+            /* [out] */ unsigned long *prerollSeconds) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetExportOffset( 
+            /* [in] */ long exportOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetExportOffset( 
+            /* [out] */ long *exportOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetManualExportOffset( 
+            /* [out] */ long *deckManualExportOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCaptureOffset( 
+            /* [in] */ long captureOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCaptureOffset( 
+            /* [out] */ long *captureOffsetFields) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartExport( 
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [in] */ BMDDeckControlExportModeOpsFlags exportModeOps,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartCapture( 
+            /* [in] */ BOOL useVITC,
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDeviceID( 
+            /* [out] */ unsigned short *deviceId,
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CrashRecordStart( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CrashRecordStop( 
+            /* [out] */ BMDDeckControlError *error) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IDeckLinkDeckControlStatusCallback *callback) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDeckControl_v7_9Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDeckControl_v7_9 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDeckControl_v7_9 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Open )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ BMDTimeScale timeScale,
+            /* [in] */ BMDTimeValue timeValue,
+            /* [in] */ BOOL timecodeIsDropFrame,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Close )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ BOOL standbyOn);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCurrentState )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BMDDeckControlMode *mode,
+            /* [out] */ BMDDeckControlVTRControlState *vtrControlState,
+            /* [out] */ BMDDeckControlStatusFlags *flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetStandby )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ BOOL standbyOn);
+        
+        HRESULT ( STDMETHODCALLTYPE *Play )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Stop )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *TogglePlayStop )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Eject )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GoToTimecode )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ BMDTimecodeBCD timecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *FastForward )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Rewind )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ BOOL viewTape,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *StepForward )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *StepBack )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Jog )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Shuttle )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ double rate,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecodeString )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BSTR *currentTimeCode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ IDeckLinkTimecode **currentTimecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecodeBCD )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BMDTimecodeBCD *currentTimecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetPreroll )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ unsigned long prerollSeconds);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetPreroll )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ unsigned long *prerollSeconds);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetExportOffset )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ long exportOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetExportOffset )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ long *exportOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetManualExportOffset )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ long *deckManualExportOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCaptureOffset )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ long captureOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCaptureOffset )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ long *captureOffsetFields);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartExport )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [in] */ BMDDeckControlExportModeOpsFlags exportModeOps,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartCapture )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ BOOL useVITC,
+            /* [in] */ BMDTimecodeBCD inTimecode,
+            /* [in] */ BMDTimecodeBCD outTimecode,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDeviceID )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ unsigned short *deviceId,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *Abort )( 
+            IDeckLinkDeckControl_v7_9 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *CrashRecordStart )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *CrashRecordStop )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [out] */ BMDDeckControlError *error);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IDeckLinkDeckControl_v7_9 * This,
+            /* [in] */ IDeckLinkDeckControlStatusCallback *callback);
+        
+        END_INTERFACE
+    } IDeckLinkDeckControl_v7_9Vtbl;
+
+    interface IDeckLinkDeckControl_v7_9
+    {
+        CONST_VTBL struct IDeckLinkDeckControl_v7_9Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDeckControl_v7_9_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDeckControl_v7_9_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDeckControl_v7_9_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDeckControl_v7_9_Open(This,timeScale,timeValue,timecodeIsDropFrame,error)     \
+    ( (This)->lpVtbl -> Open(This,timeScale,timeValue,timecodeIsDropFrame,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_Close(This,standbyOn)        \
+    ( (This)->lpVtbl -> Close(This,standbyOn) ) 
+
+#define IDeckLinkDeckControl_v7_9_GetCurrentState(This,mode,vtrControlState,flags)     \
+    ( (This)->lpVtbl -> GetCurrentState(This,mode,vtrControlState,flags) ) 
+
+#define IDeckLinkDeckControl_v7_9_SetStandby(This,standbyOn)   \
+    ( (This)->lpVtbl -> SetStandby(This,standbyOn) ) 
+
+#define IDeckLinkDeckControl_v7_9_Play(This,error)     \
+    ( (This)->lpVtbl -> Play(This,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_Stop(This,error)     \
+    ( (This)->lpVtbl -> Stop(This,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_TogglePlayStop(This,error)   \
+    ( (This)->lpVtbl -> TogglePlayStop(This,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_Eject(This,error)    \
+    ( (This)->lpVtbl -> Eject(This,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_GoToTimecode(This,timecode,error)    \
+    ( (This)->lpVtbl -> GoToTimecode(This,timecode,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_FastForward(This,viewTape,error)     \
+    ( (This)->lpVtbl -> FastForward(This,viewTape,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_Rewind(This,viewTape,error)  \
+    ( (This)->lpVtbl -> Rewind(This,viewTape,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_StepForward(This,error)      \
+    ( (This)->lpVtbl -> StepForward(This,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_StepBack(This,error) \
+    ( (This)->lpVtbl -> StepBack(This,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_Jog(This,rate,error) \
+    ( (This)->lpVtbl -> Jog(This,rate,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_Shuttle(This,rate,error)     \
+    ( (This)->lpVtbl -> Shuttle(This,rate,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_GetTimecodeString(This,currentTimeCode,error)        \
+    ( (This)->lpVtbl -> GetTimecodeString(This,currentTimeCode,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_GetTimecode(This,currentTimecode,error)      \
+    ( (This)->lpVtbl -> GetTimecode(This,currentTimecode,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_GetTimecodeBCD(This,currentTimecode,error)   \
+    ( (This)->lpVtbl -> GetTimecodeBCD(This,currentTimecode,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_SetPreroll(This,prerollSeconds)      \
+    ( (This)->lpVtbl -> SetPreroll(This,prerollSeconds) ) 
+
+#define IDeckLinkDeckControl_v7_9_GetPreroll(This,prerollSeconds)      \
+    ( (This)->lpVtbl -> GetPreroll(This,prerollSeconds) ) 
+
+#define IDeckLinkDeckControl_v7_9_SetExportOffset(This,exportOffsetFields)     \
+    ( (This)->lpVtbl -> SetExportOffset(This,exportOffsetFields) ) 
+
+#define IDeckLinkDeckControl_v7_9_GetExportOffset(This,exportOffsetFields)     \
+    ( (This)->lpVtbl -> GetExportOffset(This,exportOffsetFields) ) 
+
+#define IDeckLinkDeckControl_v7_9_GetManualExportOffset(This,deckManualExportOffsetFields)     \
+    ( (This)->lpVtbl -> GetManualExportOffset(This,deckManualExportOffsetFields) ) 
+
+#define IDeckLinkDeckControl_v7_9_SetCaptureOffset(This,captureOffsetFields)   \
+    ( (This)->lpVtbl -> SetCaptureOffset(This,captureOffsetFields) ) 
+
+#define IDeckLinkDeckControl_v7_9_GetCaptureOffset(This,captureOffsetFields)   \
+    ( (This)->lpVtbl -> GetCaptureOffset(This,captureOffsetFields) ) 
+
+#define IDeckLinkDeckControl_v7_9_StartExport(This,inTimecode,outTimecode,exportModeOps,error) \
+    ( (This)->lpVtbl -> StartExport(This,inTimecode,outTimecode,exportModeOps,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_StartCapture(This,useVITC,inTimecode,outTimecode,error)      \
+    ( (This)->lpVtbl -> StartCapture(This,useVITC,inTimecode,outTimecode,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_GetDeviceID(This,deviceId,error)     \
+    ( (This)->lpVtbl -> GetDeviceID(This,deviceId,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_Abort(This)  \
+    ( (This)->lpVtbl -> Abort(This) ) 
+
+#define IDeckLinkDeckControl_v7_9_CrashRecordStart(This,error) \
+    ( (This)->lpVtbl -> CrashRecordStart(This,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_CrashRecordStop(This,error)  \
+    ( (This)->lpVtbl -> CrashRecordStop(This,error) ) 
+
+#define IDeckLinkDeckControl_v7_9_SetCallback(This,callback)   \
+    ( (This)->lpVtbl -> SetCallback(This,callback) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDeckControl_v7_9_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayModeIterator_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkDisplayModeIterator_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDisplayModeIterator_v7_6 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDisplayModeIterator_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("455D741F-1779-4800-86F5-0B5D13D79751")
+    IDeckLinkDisplayModeIterator_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Next( 
+            /* [out] */ IDeckLinkDisplayMode_v7_6 **deckLinkDisplayMode) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDisplayModeIterator_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDisplayModeIterator_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDisplayModeIterator_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDisplayModeIterator_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Next )( 
+            IDeckLinkDisplayModeIterator_v7_6 * This,
+            /* [out] */ IDeckLinkDisplayMode_v7_6 **deckLinkDisplayMode);
+        
+        END_INTERFACE
+    } IDeckLinkDisplayModeIterator_v7_6Vtbl;
+
+    interface IDeckLinkDisplayModeIterator_v7_6
+    {
+        CONST_VTBL struct IDeckLinkDisplayModeIterator_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDisplayModeIterator_v7_6_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDisplayModeIterator_v7_6_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDisplayModeIterator_v7_6_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDisplayModeIterator_v7_6_Next(This,deckLinkDisplayMode)       \
+    ( (This)->lpVtbl -> Next(This,deckLinkDisplayMode) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDisplayModeIterator_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayMode_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkDisplayMode_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDisplayMode_v7_6 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDisplayMode_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("87451E84-2B7E-439E-A629-4393EA4A8550")
+    IDeckLinkDisplayMode_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetName( 
+            /* [out] */ BSTR *name) = 0;
+        
+        virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetWidth( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetHeight( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFrameRate( 
+            /* [out] */ BMDTimeValue *frameDuration,
+            /* [out] */ BMDTimeScale *timeScale) = 0;
+        
+        virtual BMDFieldDominance STDMETHODCALLTYPE GetFieldDominance( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDisplayMode_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDisplayMode_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDisplayMode_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDisplayMode_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetName )( 
+            IDeckLinkDisplayMode_v7_6 * This,
+            /* [out] */ BSTR *name);
+        
+        BMDDisplayMode ( STDMETHODCALLTYPE *GetDisplayMode )( 
+            IDeckLinkDisplayMode_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkDisplayMode_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkDisplayMode_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFrameRate )( 
+            IDeckLinkDisplayMode_v7_6 * This,
+            /* [out] */ BMDTimeValue *frameDuration,
+            /* [out] */ BMDTimeScale *timeScale);
+        
+        BMDFieldDominance ( STDMETHODCALLTYPE *GetFieldDominance )( 
+            IDeckLinkDisplayMode_v7_6 * This);
+        
+        END_INTERFACE
+    } IDeckLinkDisplayMode_v7_6Vtbl;
+
+    interface IDeckLinkDisplayMode_v7_6
+    {
+        CONST_VTBL struct IDeckLinkDisplayMode_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDisplayMode_v7_6_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDisplayMode_v7_6_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDisplayMode_v7_6_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDisplayMode_v7_6_GetName(This,name)   \
+    ( (This)->lpVtbl -> GetName(This,name) ) 
+
+#define IDeckLinkDisplayMode_v7_6_GetDisplayMode(This) \
+    ( (This)->lpVtbl -> GetDisplayMode(This) ) 
+
+#define IDeckLinkDisplayMode_v7_6_GetWidth(This)       \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkDisplayMode_v7_6_GetHeight(This)      \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkDisplayMode_v7_6_GetFrameRate(This,frameDuration,timeScale)   \
+    ( (This)->lpVtbl -> GetFrameRate(This,frameDuration,timeScale) ) 
+
+#define IDeckLinkDisplayMode_v7_6_GetFieldDominance(This)      \
+    ( (This)->lpVtbl -> GetFieldDominance(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDisplayMode_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkOutput_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkOutput_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkOutput_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("29228142-EB8C-4141-A621-F74026450955")
+    IDeckLinkOutput_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback_v7_6 *previewCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( 
+            BMDDisplayMode displayMode,
+            BMDVideoOutputFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator( 
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( 
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame_v7_6 **outFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( 
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( 
+            /* [in] */ IDeckLinkVideoOutputCallback_v7_6 *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount( 
+            /* [out] */ unsigned long *bufferedFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( 
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount,
+            BMDAudioOutputStreamType streamType) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( 
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( 
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( 
+            /* [out] */ unsigned long *bufferedSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( 
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( 
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( 
+            BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( 
+            /* [out] */ BOOL *active) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime( 
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *streamTime,
+            /* [out] */ double *playbackSpeed) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkOutput_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkOutput_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkOutput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback_v7_6 *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDDisplayMode displayMode,
+            BMDVideoOutputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( 
+            IDeckLinkOutput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( 
+            IDeckLinkOutput_v7_6 * This,
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame_v7_6 **outFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkVideoOutputCallback_v7_6 *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [out] */ unsigned long *bufferedFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount,
+            BMDAudioOutputStreamType streamType);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( 
+            IDeckLinkOutput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( 
+            IDeckLinkOutput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( 
+            IDeckLinkOutput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [out] */ unsigned long *bufferedSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( 
+            IDeckLinkOutput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [out] */ BOOL *active);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetScheduledStreamTime )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *streamTime,
+            /* [out] */ double *playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame);
+        
+        END_INTERFACE
+    } IDeckLinkOutput_v7_6Vtbl;
+
+    interface IDeckLinkOutput_v7_6
+    {
+        CONST_VTBL struct IDeckLinkOutput_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkOutput_v7_6_QueryInterface(This,riid,ppvObject)       \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkOutput_v7_6_AddRef(This)      \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkOutput_v7_6_Release(This)     \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkOutput_v7_6_DoesSupportVideoMode(This,displayMode,pixelFormat,result) \
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+
+#define IDeckLinkOutput_v7_6_GetDisplayModeIterator(This,iterator)     \
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkOutput_v7_6_SetScreenPreviewCallback(This,previewCallback)    \
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
+
+#define IDeckLinkOutput_v7_6_EnableVideoOutput(This,displayMode,flags) \
+    ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode,flags) ) 
+
+#define IDeckLinkOutput_v7_6_DisableVideoOutput(This)  \
+    ( (This)->lpVtbl -> DisableVideoOutput(This) ) 
+
+#define IDeckLinkOutput_v7_6_SetVideoOutputFrameMemoryAllocator(This,theAllocator)     \
+    ( (This)->lpVtbl -> SetVideoOutputFrameMemoryAllocator(This,theAllocator) ) 
+
+#define IDeckLinkOutput_v7_6_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)   \
+    ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) 
+
+#define IDeckLinkOutput_v7_6_CreateAncillaryData(This,pixelFormat,outBuffer)   \
+    ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) 
+
+#define IDeckLinkOutput_v7_6_DisplayVideoFrameSync(This,theFrame)      \
+    ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) 
+
+#define IDeckLinkOutput_v7_6_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)   \
+    ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) 
+
+#define IDeckLinkOutput_v7_6_SetScheduledFrameCompletionCallback(This,theCallback)     \
+    ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_v7_6_GetBufferedVideoFrameCount(This,bufferedFrameCount)       \
+    ( (This)->lpVtbl -> GetBufferedVideoFrameCount(This,bufferedFrameCount) ) 
+
+#define IDeckLinkOutput_v7_6_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType)     \
+    ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) ) 
+
+#define IDeckLinkOutput_v7_6_DisableAudioOutput(This)  \
+    ( (This)->lpVtbl -> DisableAudioOutput(This) ) 
+
+#define IDeckLinkOutput_v7_6_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)   \
+    ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_v7_6_BeginAudioPreroll(This)   \
+    ( (This)->lpVtbl -> BeginAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_v7_6_EndAudioPreroll(This)     \
+    ( (This)->lpVtbl -> EndAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_v7_6_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)       \
+    ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_v7_6_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount)   \
+    ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) ) 
+
+#define IDeckLinkOutput_v7_6_FlushBufferedAudioSamples(This)   \
+    ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) 
+
+#define IDeckLinkOutput_v7_6_SetAudioCallback(This,theCallback)        \
+    ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_v7_6_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)    \
+    ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) 
+
+#define IDeckLinkOutput_v7_6_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)   \
+    ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) 
+
+#define IDeckLinkOutput_v7_6_IsScheduledPlaybackRunning(This,active)   \
+    ( (This)->lpVtbl -> IsScheduledPlaybackRunning(This,active) ) 
+
+#define IDeckLinkOutput_v7_6_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed)    \
+    ( (This)->lpVtbl -> GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) ) 
+
+#define IDeckLinkOutput_v7_6_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)   \
+    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkOutput_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkInput_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInput_v7_6 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInput_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("300C135A-9F43-48E2-9906-6D7911D93CF1")
+    IDeckLinkInput_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback_v7_6 *previewCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( 
+            /* [out] */ unsigned long *availableFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( 
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( 
+            /* [out] */ unsigned long *availableSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IDeckLinkInputCallback_v7_6 *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkInput_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkInput_v7_6 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback_v7_6 *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( 
+            IDeckLinkInput_v7_6 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [out] */ unsigned long *availableFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( 
+            IDeckLinkInput_v7_6 * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [out] */ unsigned long *availableSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartStreams )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopStreams )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *PauseStreams )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushStreams )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [in] */ IDeckLinkInputCallback_v7_6 *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkInput_v7_6 * This,
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame);
+        
+        END_INTERFACE
+    } IDeckLinkInput_v7_6Vtbl;
+
+    interface IDeckLinkInput_v7_6
+    {
+        CONST_VTBL struct IDeckLinkInput_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInput_v7_6_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInput_v7_6_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInput_v7_6_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInput_v7_6_DoesSupportVideoMode(This,displayMode,pixelFormat,result)  \
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+
+#define IDeckLinkInput_v7_6_GetDisplayModeIterator(This,iterator)      \
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkInput_v7_6_SetScreenPreviewCallback(This,previewCallback)     \
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
+
+#define IDeckLinkInput_v7_6_EnableVideoInput(This,displayMode,pixelFormat,flags)       \
+    ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) 
+
+#define IDeckLinkInput_v7_6_DisableVideoInput(This)    \
+    ( (This)->lpVtbl -> DisableVideoInput(This) ) 
+
+#define IDeckLinkInput_v7_6_GetAvailableVideoFrameCount(This,availableFrameCount)      \
+    ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) 
+
+#define IDeckLinkInput_v7_6_EnableAudioInput(This,sampleRate,sampleType,channelCount)  \
+    ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) 
+
+#define IDeckLinkInput_v7_6_DisableAudioInput(This)    \
+    ( (This)->lpVtbl -> DisableAudioInput(This) ) 
+
+#define IDeckLinkInput_v7_6_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)  \
+    ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) 
+
+#define IDeckLinkInput_v7_6_StartStreams(This) \
+    ( (This)->lpVtbl -> StartStreams(This) ) 
+
+#define IDeckLinkInput_v7_6_StopStreams(This)  \
+    ( (This)->lpVtbl -> StopStreams(This) ) 
+
+#define IDeckLinkInput_v7_6_PauseStreams(This) \
+    ( (This)->lpVtbl -> PauseStreams(This) ) 
+
+#define IDeckLinkInput_v7_6_FlushStreams(This) \
+    ( (This)->lpVtbl -> FlushStreams(This) ) 
+
+#define IDeckLinkInput_v7_6_SetCallback(This,theCallback)      \
+    ( (This)->lpVtbl -> SetCallback(This,theCallback) ) 
+
+#define IDeckLinkInput_v7_6_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)    \
+    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkInput_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkTimecode_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkTimecode_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkTimecode_v7_6 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkTimecode_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("EFB9BCA6-A521-44F7-BD69-2332F24D9EE6")
+    IDeckLinkTimecode_v7_6 : public IUnknown
+    {
+    public:
+        virtual BMDTimecodeBCD STDMETHODCALLTYPE GetBCD( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetComponents( 
+            /* [out] */ unsigned char *hours,
+            /* [out] */ unsigned char *minutes,
+            /* [out] */ unsigned char *seconds,
+            /* [out] */ unsigned char *frames) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetString( 
+            /* [out] */ BSTR *timecode) = 0;
+        
+        virtual BMDTimecodeFlags STDMETHODCALLTYPE GetFlags( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkTimecode_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkTimecode_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkTimecode_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkTimecode_v7_6 * This);
+        
+        BMDTimecodeBCD ( STDMETHODCALLTYPE *GetBCD )( 
+            IDeckLinkTimecode_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetComponents )( 
+            IDeckLinkTimecode_v7_6 * This,
+            /* [out] */ unsigned char *hours,
+            /* [out] */ unsigned char *minutes,
+            /* [out] */ unsigned char *seconds,
+            /* [out] */ unsigned char *frames);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetString )( 
+            IDeckLinkTimecode_v7_6 * This,
+            /* [out] */ BSTR *timecode);
+        
+        BMDTimecodeFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkTimecode_v7_6 * This);
+        
+        END_INTERFACE
+    } IDeckLinkTimecode_v7_6Vtbl;
+
+    interface IDeckLinkTimecode_v7_6
+    {
+        CONST_VTBL struct IDeckLinkTimecode_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkTimecode_v7_6_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkTimecode_v7_6_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkTimecode_v7_6_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkTimecode_v7_6_GetBCD(This)    \
+    ( (This)->lpVtbl -> GetBCD(This) ) 
+
+#define IDeckLinkTimecode_v7_6_GetComponents(This,hours,minutes,seconds,frames)        \
+    ( (This)->lpVtbl -> GetComponents(This,hours,minutes,seconds,frames) ) 
+
+#define IDeckLinkTimecode_v7_6_GetString(This,timecode)        \
+    ( (This)->lpVtbl -> GetString(This,timecode) ) 
+
+#define IDeckLinkTimecode_v7_6_GetFlags(This)  \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkTimecode_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrame_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkVideoFrame_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoFrame_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoFrame_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("A8D8238E-6B18-4196-99E1-5AF717B83D32")
+    IDeckLinkVideoFrame_v7_6 : public IUnknown
+    {
+    public:
+        virtual long STDMETHODCALLTYPE GetWidth( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetHeight( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetRowBytes( void) = 0;
+        
+        virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0;
+        
+        virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            /* [out] */ void **buffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecode( 
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode_v7_6 **timecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAncillaryData( 
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoFrame_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoFrame_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoFrame_v7_6 * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkVideoFrame_v7_6 * This,
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode_v7_6 **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkVideoFrame_v7_6 * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        END_INTERFACE
+    } IDeckLinkVideoFrame_v7_6Vtbl;
+
+    interface IDeckLinkVideoFrame_v7_6
+    {
+        CONST_VTBL struct IDeckLinkVideoFrame_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoFrame_v7_6_QueryInterface(This,riid,ppvObject)   \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoFrame_v7_6_AddRef(This)  \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoFrame_v7_6_Release(This) \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoFrame_v7_6_GetWidth(This)        \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetHeight(This)       \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetRowBytes(This)     \
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetPixelFormat(This)  \
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetFlags(This)        \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetBytes(This,buffer) \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetTimecode(This,format,timecode)     \
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetAncillaryData(This,ancillary)      \
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoFrame_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkMutableVideoFrame_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkMutableVideoFrame_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkMutableVideoFrame_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkMutableVideoFrame_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("46FCEE00-B4E6-43D0-91C0-023A7FCEB34F")
+    IDeckLinkMutableVideoFrame_v7_6 : public IDeckLinkVideoFrame_v7_6
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE SetFlags( 
+            BMDFrameFlags newFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetTimecode( 
+            BMDTimecodeFormat format,
+            /* [in] */ IDeckLinkTimecode_v7_6 *timecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetTimecodeFromComponents( 
+            BMDTimecodeFormat format,
+            unsigned char hours,
+            unsigned char minutes,
+            unsigned char seconds,
+            unsigned char frames,
+            BMDTimecodeFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAncillaryData( 
+            /* [in] */ IDeckLinkVideoFrameAncillary *ancillary) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkMutableVideoFrame_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode_v7_6 **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFlags )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            BMDFrameFlags newFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetTimecode )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            BMDTimecodeFormat format,
+            /* [in] */ IDeckLinkTimecode_v7_6 *timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetTimecodeFromComponents )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            BMDTimecodeFormat format,
+            unsigned char hours,
+            unsigned char minutes,
+            unsigned char seconds,
+            unsigned char frames,
+            BMDTimecodeFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAncillaryData )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrameAncillary *ancillary);
+        
+        END_INTERFACE
+    } IDeckLinkMutableVideoFrame_v7_6Vtbl;
+
+    interface IDeckLinkMutableVideoFrame_v7_6
+    {
+        CONST_VTBL struct IDeckLinkMutableVideoFrame_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkMutableVideoFrame_v7_6_QueryInterface(This,riid,ppvObject)    \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_AddRef(This)   \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_Release(This)  \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetWidth(This) \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetHeight(This)        \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetRowBytes(This)      \
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetPixelFormat(This)   \
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetFlags(This) \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetBytes(This,buffer)  \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetTimecode(This,format,timecode)      \
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetAncillaryData(This,ancillary)       \
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+
+#define IDeckLinkMutableVideoFrame_v7_6_SetFlags(This,newFlags)        \
+    ( (This)->lpVtbl -> SetFlags(This,newFlags) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_SetTimecode(This,format,timecode)      \
+    ( (This)->lpVtbl -> SetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags)      \
+    ( (This)->lpVtbl -> SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_SetAncillaryData(This,ancillary)       \
+    ( (This)->lpVtbl -> SetAncillaryData(This,ancillary) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkMutableVideoFrame_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoInputFrame_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoInputFrame_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("9A74FA41-AE9F-47AC-8CF4-01F42DD59965")
+    IDeckLinkVideoInputFrame_v7_6 : public IDeckLinkVideoFrame_v7_6
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetStreamTime( 
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceTimestamp( 
+            BMDTimeScale timeScale,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoInputFrame_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode_v7_6 **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceTimestamp )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            BMDTimeScale timeScale,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration);
+        
+        END_INTERFACE
+    } IDeckLinkVideoInputFrame_v7_6Vtbl;
+
+    interface IDeckLinkVideoInputFrame_v7_6
+    {
+        CONST_VTBL struct IDeckLinkVideoInputFrame_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoInputFrame_v7_6_QueryInterface(This,riid,ppvObject)      \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_AddRef(This)     \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_Release(This)    \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_6_GetWidth(This)   \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetHeight(This)  \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetRowBytes(This)        \
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetPixelFormat(This)     \
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetFlags(This)   \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetBytes(This,buffer)    \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetTimecode(This,format,timecode)        \
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetAncillaryData(This,ancillary) \
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_6_GetStreamTime(This,frameTime,frameDuration,timeScale)    \
+    ( (This)->lpVtbl -> GetStreamTime(This,frameTime,frameDuration,timeScale) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration)    \
+    ( (This)->lpVtbl -> GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoInputFrame_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkScreenPreviewCallback_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkScreenPreviewCallback_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkScreenPreviewCallback_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkScreenPreviewCallback_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("373F499D-4B4D-4518-AD22-6354E5A5825E")
+    IDeckLinkScreenPreviewCallback_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DrawFrame( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkScreenPreviewCallback_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkScreenPreviewCallback_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkScreenPreviewCallback_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkScreenPreviewCallback_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DrawFrame )( 
+            IDeckLinkScreenPreviewCallback_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame);
+        
+        END_INTERFACE
+    } IDeckLinkScreenPreviewCallback_v7_6Vtbl;
+
+    interface IDeckLinkScreenPreviewCallback_v7_6
+    {
+        CONST_VTBL struct IDeckLinkScreenPreviewCallback_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkScreenPreviewCallback_v7_6_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkScreenPreviewCallback_v7_6_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkScreenPreviewCallback_v7_6_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkScreenPreviewCallback_v7_6_DrawFrame(This,theFrame)   \
+    ( (This)->lpVtbl -> DrawFrame(This,theFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkScreenPreviewCallback_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkGLScreenPreviewHelper_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkGLScreenPreviewHelper_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkGLScreenPreviewHelper_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkGLScreenPreviewHelper_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("BA575CD9-A15E-497B-B2C2-F9AFE7BE4EBA")
+    IDeckLinkGLScreenPreviewHelper_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE InitializeGL( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PaintGL( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetFrame( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkGLScreenPreviewHelper_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *InitializeGL )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *PaintGL )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFrame )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame);
+        
+        END_INTERFACE
+    } IDeckLinkGLScreenPreviewHelper_v7_6Vtbl;
+
+    interface IDeckLinkGLScreenPreviewHelper_v7_6
+    {
+        CONST_VTBL struct IDeckLinkGLScreenPreviewHelper_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_InitializeGL(This) \
+    ( (This)->lpVtbl -> InitializeGL(This) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_PaintGL(This)      \
+    ( (This)->lpVtbl -> PaintGL(This) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_SetFrame(This,theFrame)    \
+    ( (This)->lpVtbl -> SetFrame(This,theFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkGLScreenPreviewHelper_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoConversion_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkVideoConversion_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoConversion_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoConversion_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("3EB504C9-F97D-40FE-A158-D407D48CB53B")
+    IDeckLinkVideoConversion_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE ConvertFrame( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *srcFrame,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *dstFrame) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoConversion_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoConversion_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoConversion_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoConversion_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ConvertFrame )( 
+            IDeckLinkVideoConversion_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *srcFrame,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *dstFrame);
+        
+        END_INTERFACE
+    } IDeckLinkVideoConversion_v7_6Vtbl;
+
+    interface IDeckLinkVideoConversion_v7_6
+    {
+        CONST_VTBL struct IDeckLinkVideoConversion_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoConversion_v7_6_QueryInterface(This,riid,ppvObject)      \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoConversion_v7_6_AddRef(This)     \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoConversion_v7_6_Release(This)    \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoConversion_v7_6_ConvertFrame(This,srcFrame,dstFrame)     \
+    ( (This)->lpVtbl -> ConvertFrame(This,srcFrame,dstFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoConversion_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkConfiguration_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkConfiguration_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkConfiguration_v7_6 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkConfiguration_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("B8EAD569-B764-47F0-A73F-AE40DF6CBF10")
+    IDeckLinkConfiguration_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetConfigurationValidator( 
+            /* [out] */ IDeckLinkConfiguration_v7_6 **configObject) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFormat( 
+            /* [in] */ BMDVideoConnection_v7_6 videoOutputConnection) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsVideoOutputActive( 
+            /* [in] */ BMDVideoConnection_v7_6 videoOutputConnection,
+            /* [out] */ BOOL *active) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAnalogVideoOutputFlags( 
+            /* [in] */ BMDAnalogVideoFlags analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAnalogVideoOutputFlags( 
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableFieldFlickerRemovalWhenPaused( 
+            /* [in] */ BOOL enable) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsEnabledFieldFlickerRemovalWhenPaused( 
+            /* [out] */ BOOL *enabled) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set444And3GBpsVideoOutput( 
+            /* [in] */ BOOL enable444VideoOutput,
+            /* [in] */ BOOL enable3GbsOutput) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Get444And3GBpsVideoOutput( 
+            /* [out] */ BOOL *is444VideoOutputEnabled,
+            /* [out] */ BOOL *threeGbsOutputEnabled) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputConversionMode( 
+            /* [in] */ BMDVideoOutputConversionMode conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoOutputConversionMode( 
+            /* [out] */ BMDVideoOutputConversionMode *conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set_HD1080p24_to_HD1080i5994_Conversion( 
+            /* [in] */ BOOL enable) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Get_HD1080p24_to_HD1080i5994_Conversion( 
+            /* [out] */ BOOL *enabled) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoInputFormat( 
+            /* [in] */ BMDVideoConnection_v7_6 videoInputFormat) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoInputFormat( 
+            /* [out] */ BMDVideoConnection_v7_6 *videoInputFormat) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAnalogVideoInputFlags( 
+            /* [in] */ BMDAnalogVideoFlags analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAnalogVideoInputFlags( 
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoInputConversionMode( 
+            /* [in] */ BMDVideoInputConversionMode conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoInputConversionMode( 
+            /* [out] */ BMDVideoInputConversionMode *conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetBlackVideoOutputDuringCapture( 
+            /* [in] */ BOOL blackOutInCapture) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBlackVideoOutputDuringCapture( 
+            /* [out] */ BOOL *blackOutInCapture) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set32PulldownSequenceInitialTimecodeFrame( 
+            /* [in] */ unsigned long aFrameTimecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Get32PulldownSequenceInitialTimecodeFrame( 
+            /* [out] */ unsigned long *aFrameTimecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVancSourceLineMapping( 
+            /* [in] */ unsigned long activeLine1VANCsource,
+            /* [in] */ unsigned long activeLine2VANCsource,
+            /* [in] */ unsigned long activeLine3VANCsource) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVancSourceLineMapping( 
+            /* [out] */ unsigned long *activeLine1VANCsource,
+            /* [out] */ unsigned long *activeLine2VANCsource,
+            /* [out] */ unsigned long *activeLine3VANCsource) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAudioInputFormat( 
+            /* [in] */ BMDAudioConnection audioInputFormat) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAudioInputFormat( 
+            /* [out] */ BMDAudioConnection *audioInputFormat) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkConfiguration_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkConfiguration_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkConfiguration_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetConfigurationValidator )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ IDeckLinkConfiguration_v7_6 **configObject);
+        
+        HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( 
+            IDeckLinkConfiguration_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFormat )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDVideoConnection_v7_6 videoOutputConnection);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsVideoOutputActive )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDVideoConnection_v7_6 videoOutputConnection,
+            /* [out] */ BOOL *active);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAnalogVideoOutputFlags )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDAnalogVideoFlags analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAnalogVideoOutputFlags )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableFieldFlickerRemovalWhenPaused )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BOOL enable);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsEnabledFieldFlickerRemovalWhenPaused )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BOOL *enabled);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set444And3GBpsVideoOutput )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BOOL enable444VideoOutput,
+            /* [in] */ BOOL enable3GbsOutput);
+        
+        HRESULT ( STDMETHODCALLTYPE *Get444And3GBpsVideoOutput )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BOOL *is444VideoOutputEnabled,
+            /* [out] */ BOOL *threeGbsOutputEnabled);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputConversionMode )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDVideoOutputConversionMode conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoOutputConversionMode )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDVideoOutputConversionMode *conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set_HD1080p24_to_HD1080i5994_Conversion )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BOOL enable);
+        
+        HRESULT ( STDMETHODCALLTYPE *Get_HD1080p24_to_HD1080i5994_Conversion )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BOOL *enabled);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoInputFormat )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDVideoConnection_v7_6 videoInputFormat);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoInputFormat )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDVideoConnection_v7_6 *videoInputFormat);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAnalogVideoInputFlags )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDAnalogVideoFlags analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAnalogVideoInputFlags )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoInputConversionMode )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDVideoInputConversionMode conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoInputConversionMode )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDVideoInputConversionMode *conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetBlackVideoOutputDuringCapture )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BOOL blackOutInCapture);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBlackVideoOutputDuringCapture )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BOOL *blackOutInCapture);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set32PulldownSequenceInitialTimecodeFrame )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ unsigned long aFrameTimecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *Get32PulldownSequenceInitialTimecodeFrame )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ unsigned long *aFrameTimecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVancSourceLineMapping )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ unsigned long activeLine1VANCsource,
+            /* [in] */ unsigned long activeLine2VANCsource,
+            /* [in] */ unsigned long activeLine3VANCsource);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVancSourceLineMapping )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ unsigned long *activeLine1VANCsource,
+            /* [out] */ unsigned long *activeLine2VANCsource,
+            /* [out] */ unsigned long *activeLine3VANCsource);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAudioInputFormat )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDAudioConnection audioInputFormat);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAudioInputFormat )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDAudioConnection *audioInputFormat);
+        
+        END_INTERFACE
+    } IDeckLinkConfiguration_v7_6Vtbl;
+
+    interface IDeckLinkConfiguration_v7_6
+    {
+        CONST_VTBL struct IDeckLinkConfiguration_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkConfiguration_v7_6_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkConfiguration_v7_6_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkConfiguration_v7_6_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkConfiguration_v7_6_GetConfigurationValidator(This,configObject)       \
+    ( (This)->lpVtbl -> GetConfigurationValidator(This,configObject) ) 
+
+#define IDeckLinkConfiguration_v7_6_WriteConfigurationToPreferences(This)      \
+    ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetVideoOutputFormat(This,videoOutputConnection)   \
+    ( (This)->lpVtbl -> SetVideoOutputFormat(This,videoOutputConnection) ) 
+
+#define IDeckLinkConfiguration_v7_6_IsVideoOutputActive(This,videoOutputConnection,active)     \
+    ( (This)->lpVtbl -> IsVideoOutputActive(This,videoOutputConnection,active) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetAnalogVideoOutputFlags(This,analogVideoFlags)   \
+    ( (This)->lpVtbl -> SetAnalogVideoOutputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetAnalogVideoOutputFlags(This,analogVideoFlags)   \
+    ( (This)->lpVtbl -> GetAnalogVideoOutputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_v7_6_EnableFieldFlickerRemovalWhenPaused(This,enable)   \
+    ( (This)->lpVtbl -> EnableFieldFlickerRemovalWhenPaused(This,enable) ) 
+
+#define IDeckLinkConfiguration_v7_6_IsEnabledFieldFlickerRemovalWhenPaused(This,enabled)       \
+    ( (This)->lpVtbl -> IsEnabledFieldFlickerRemovalWhenPaused(This,enabled) ) 
+
+#define IDeckLinkConfiguration_v7_6_Set444And3GBpsVideoOutput(This,enable444VideoOutput,enable3GbsOutput)      \
+    ( (This)->lpVtbl -> Set444And3GBpsVideoOutput(This,enable444VideoOutput,enable3GbsOutput) ) 
+
+#define IDeckLinkConfiguration_v7_6_Get444And3GBpsVideoOutput(This,is444VideoOutputEnabled,threeGbsOutputEnabled)      \
+    ( (This)->lpVtbl -> Get444And3GBpsVideoOutput(This,is444VideoOutputEnabled,threeGbsOutputEnabled) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetVideoOutputConversionMode(This,conversionMode)  \
+    ( (This)->lpVtbl -> SetVideoOutputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetVideoOutputConversionMode(This,conversionMode)  \
+    ( (This)->lpVtbl -> GetVideoOutputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_v7_6_Set_HD1080p24_to_HD1080i5994_Conversion(This,enable)       \
+    ( (This)->lpVtbl -> Set_HD1080p24_to_HD1080i5994_Conversion(This,enable) ) 
+
+#define IDeckLinkConfiguration_v7_6_Get_HD1080p24_to_HD1080i5994_Conversion(This,enabled)      \
+    ( (This)->lpVtbl -> Get_HD1080p24_to_HD1080i5994_Conversion(This,enabled) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetVideoInputFormat(This,videoInputFormat) \
+    ( (This)->lpVtbl -> SetVideoInputFormat(This,videoInputFormat) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetVideoInputFormat(This,videoInputFormat) \
+    ( (This)->lpVtbl -> GetVideoInputFormat(This,videoInputFormat) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetAnalogVideoInputFlags(This,analogVideoFlags)    \
+    ( (This)->lpVtbl -> SetAnalogVideoInputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetAnalogVideoInputFlags(This,analogVideoFlags)    \
+    ( (This)->lpVtbl -> GetAnalogVideoInputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetVideoInputConversionMode(This,conversionMode)   \
+    ( (This)->lpVtbl -> SetVideoInputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetVideoInputConversionMode(This,conversionMode)   \
+    ( (This)->lpVtbl -> GetVideoInputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetBlackVideoOutputDuringCapture(This,blackOutInCapture)   \
+    ( (This)->lpVtbl -> SetBlackVideoOutputDuringCapture(This,blackOutInCapture) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetBlackVideoOutputDuringCapture(This,blackOutInCapture)   \
+    ( (This)->lpVtbl -> GetBlackVideoOutputDuringCapture(This,blackOutInCapture) ) 
+
+#define IDeckLinkConfiguration_v7_6_Set32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode)     \
+    ( (This)->lpVtbl -> Set32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode) ) 
+
+#define IDeckLinkConfiguration_v7_6_Get32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode)     \
+    ( (This)->lpVtbl -> Get32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource)   \
+    ( (This)->lpVtbl -> SetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource)   \
+    ( (This)->lpVtbl -> GetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetAudioInputFormat(This,audioInputFormat) \
+    ( (This)->lpVtbl -> SetAudioInputFormat(This,audioInputFormat) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetAudioInputFormat(This,audioInputFormat) \
+    ( (This)->lpVtbl -> GetAudioInputFormat(This,audioInputFormat) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkConfiguration_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoOutputCallback_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkVideoOutputCallback_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoOutputCallback_v7_6 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoOutputCallback_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("E763A626-4A3C-49D1-BF13-E7AD3692AE52")
+    IDeckLinkVideoOutputCallback_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *completedFrame,
+            /* [in] */ BMDOutputFrameCompletionResult result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduledPlaybackHasStopped( void) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoOutputCallback_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoOutputCallback_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoOutputCallback_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoOutputCallback_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduledFrameCompleted )( 
+            IDeckLinkVideoOutputCallback_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *completedFrame,
+            /* [in] */ BMDOutputFrameCompletionResult result);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduledPlaybackHasStopped )( 
+            IDeckLinkVideoOutputCallback_v7_6 * This);
+        
+        END_INTERFACE
+    } IDeckLinkVideoOutputCallback_v7_6Vtbl;
+
+    interface IDeckLinkVideoOutputCallback_v7_6
+    {
+        CONST_VTBL struct IDeckLinkVideoOutputCallback_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoOutputCallback_v7_6_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoOutputCallback_v7_6_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoOutputCallback_v7_6_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoOutputCallback_v7_6_ScheduledFrameCompleted(This,completedFrame,result)  \
+    ( (This)->lpVtbl -> ScheduledFrameCompleted(This,completedFrame,result) ) 
+
+#define IDeckLinkVideoOutputCallback_v7_6_ScheduledPlaybackHasStopped(This)    \
+    ( (This)->lpVtbl -> ScheduledPlaybackHasStopped(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoOutputCallback_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkInputCallback_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkInputCallback_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInputCallback_v7_6 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInputCallback_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("31D28EE7-88B6-4CB1-897A-CDBF79A26414")
+    IDeckLinkInputCallback_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged( 
+            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
+            /* [in] */ IDeckLinkDisplayMode_v7_6 *newDisplayMode,
+            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived( 
+            /* [in] */ IDeckLinkVideoInputFrame_v7_6 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket *audioPacket) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkInputCallback_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInputCallback_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInputCallback_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInputCallback_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFormatChanged )( 
+            IDeckLinkInputCallback_v7_6 * This,
+            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
+            /* [in] */ IDeckLinkDisplayMode_v7_6 *newDisplayMode,
+            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( 
+            IDeckLinkInputCallback_v7_6 * This,
+            /* [in] */ IDeckLinkVideoInputFrame_v7_6 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket *audioPacket);
+        
+        END_INTERFACE
+    } IDeckLinkInputCallback_v7_6Vtbl;
+
+    interface IDeckLinkInputCallback_v7_6
+    {
+        CONST_VTBL struct IDeckLinkInputCallback_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInputCallback_v7_6_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInputCallback_v7_6_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInputCallback_v7_6_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInputCallback_v7_6_VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags)        \
+    ( (This)->lpVtbl -> VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) ) 
+
+#define IDeckLinkInputCallback_v7_6_VideoInputFrameArrived(This,videoFrame,audioPacket)        \
+    ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkInputCallback_v7_6_INTERFACE_DEFINED__ */
+
+
+EXTERN_C const CLSID CLSID_CDeckLinkGLScreenPreviewHelper_v7_6;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("D398CEE7-4434-4CA3-9BA6-5AE34556B905")
+CDeckLinkGLScreenPreviewHelper_v7_6;
+#endif
+
+EXTERN_C const CLSID CLSID_CDeckLinkVideoConversion_v7_6;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("FFA84F77-73BE-4FB7-B03E-B5E44B9F759B")
+CDeckLinkVideoConversion_v7_6;
+#endif
+
+#ifndef __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__
+#define __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInputCallback_v7_3 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInputCallback_v7_3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("FD6F311D-4D00-444B-9ED4-1F25B5730AD0")
+    IDeckLinkInputCallback_v7_3 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged( 
+            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
+            /* [in] */ IDeckLinkDisplayMode_v7_6 *newDisplayMode,
+            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived( 
+            /* [in] */ IDeckLinkVideoInputFrame_v7_3 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket *audioPacket) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkInputCallback_v7_3Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInputCallback_v7_3 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInputCallback_v7_3 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInputCallback_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFormatChanged )( 
+            IDeckLinkInputCallback_v7_3 * This,
+            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
+            /* [in] */ IDeckLinkDisplayMode_v7_6 *newDisplayMode,
+            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( 
+            IDeckLinkInputCallback_v7_3 * This,
+            /* [in] */ IDeckLinkVideoInputFrame_v7_3 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket *audioPacket);
+        
+        END_INTERFACE
+    } IDeckLinkInputCallback_v7_3Vtbl;
+
+    interface IDeckLinkInputCallback_v7_3
+    {
+        CONST_VTBL struct IDeckLinkInputCallback_v7_3Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInputCallback_v7_3_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInputCallback_v7_3_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInputCallback_v7_3_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInputCallback_v7_3_VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags)        \
+    ( (This)->lpVtbl -> VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) ) 
+
+#define IDeckLinkInputCallback_v7_3_VideoInputFrameArrived(This,videoFrame,audioPacket)        \
+    ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__
+#define __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__
+
+/* interface IDeckLinkOutput_v7_3 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkOutput_v7_3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("271C65E3-C323-4344-A30F-D908BCB20AA3")
+    IDeckLinkOutput_v7_3 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( 
+            BMDDisplayMode displayMode,
+            BMDVideoOutputFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator( 
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( 
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame_v7_6 **outFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( 
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( 
+            /* [in] */ IDeckLinkVideoOutputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount( 
+            /* [out] */ unsigned long *bufferedFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( 
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount,
+            BMDAudioOutputStreamType streamType) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( 
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( 
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( 
+            /* [out] */ unsigned long *bufferedSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( 
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( 
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( 
+            BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( 
+            /* [out] */ BOOL *active) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *elapsedTimeSinceSchedulerBegan) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkOutput_v7_3Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDDisplayMode displayMode,
+            BMDVideoOutputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( 
+            IDeckLinkOutput_v7_3 * This,
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame_v7_6 **outFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkVideoOutputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [out] */ unsigned long *bufferedFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount,
+            BMDAudioOutputStreamType streamType);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [out] */ unsigned long *bufferedSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [out] */ BOOL *active);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *elapsedTimeSinceSchedulerBegan);
+        
+        END_INTERFACE
+    } IDeckLinkOutput_v7_3Vtbl;
+
+    interface IDeckLinkOutput_v7_3
+    {
+        CONST_VTBL struct IDeckLinkOutput_v7_3Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkOutput_v7_3_QueryInterface(This,riid,ppvObject)       \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkOutput_v7_3_AddRef(This)      \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkOutput_v7_3_Release(This)     \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkOutput_v7_3_DoesSupportVideoMode(This,displayMode,pixelFormat,result) \
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+
+#define IDeckLinkOutput_v7_3_GetDisplayModeIterator(This,iterator)     \
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkOutput_v7_3_SetScreenPreviewCallback(This,previewCallback)    \
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
+
+#define IDeckLinkOutput_v7_3_EnableVideoOutput(This,displayMode,flags) \
+    ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode,flags) ) 
+
+#define IDeckLinkOutput_v7_3_DisableVideoOutput(This)  \
+    ( (This)->lpVtbl -> DisableVideoOutput(This) ) 
+
+#define IDeckLinkOutput_v7_3_SetVideoOutputFrameMemoryAllocator(This,theAllocator)     \
+    ( (This)->lpVtbl -> SetVideoOutputFrameMemoryAllocator(This,theAllocator) ) 
+
+#define IDeckLinkOutput_v7_3_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)   \
+    ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) 
+
+#define IDeckLinkOutput_v7_3_CreateAncillaryData(This,pixelFormat,outBuffer)   \
+    ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) 
+
+#define IDeckLinkOutput_v7_3_DisplayVideoFrameSync(This,theFrame)      \
+    ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) 
+
+#define IDeckLinkOutput_v7_3_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)   \
+    ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) 
+
+#define IDeckLinkOutput_v7_3_SetScheduledFrameCompletionCallback(This,theCallback)     \
+    ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_v7_3_GetBufferedVideoFrameCount(This,bufferedFrameCount)       \
+    ( (This)->lpVtbl -> GetBufferedVideoFrameCount(This,bufferedFrameCount) ) 
+
+#define IDeckLinkOutput_v7_3_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType)     \
+    ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) ) 
+
+#define IDeckLinkOutput_v7_3_DisableAudioOutput(This)  \
+    ( (This)->lpVtbl -> DisableAudioOutput(This) ) 
+
+#define IDeckLinkOutput_v7_3_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)   \
+    ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_v7_3_BeginAudioPreroll(This)   \
+    ( (This)->lpVtbl -> BeginAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_v7_3_EndAudioPreroll(This)     \
+    ( (This)->lpVtbl -> EndAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_v7_3_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)       \
+    ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_v7_3_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount)   \
+    ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) ) 
+
+#define IDeckLinkOutput_v7_3_FlushBufferedAudioSamples(This)   \
+    ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) 
+
+#define IDeckLinkOutput_v7_3_SetAudioCallback(This,theCallback)        \
+    ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_v7_3_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)    \
+    ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) 
+
+#define IDeckLinkOutput_v7_3_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)   \
+    ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) 
+
+#define IDeckLinkOutput_v7_3_IsScheduledPlaybackRunning(This,active)   \
+    ( (This)->lpVtbl -> IsScheduledPlaybackRunning(This,active) ) 
+
+#define IDeckLinkOutput_v7_3_GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan)   \
+    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_v7_3_INTERFACE_DEFINED__
+#define __IDeckLinkInput_v7_3_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInput_v7_3 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInput_v7_3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("4973F012-9925-458C-871C-18774CDBBECB")
+    IDeckLinkInput_v7_3 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( 
+            /* [out] */ unsigned long *availableFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( 
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( 
+            /* [out] */ unsigned long *availableSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IDeckLinkInputCallback_v7_3 *theCallback) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkInput_v7_3Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkInput_v7_3 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( 
+            IDeckLinkInput_v7_3 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [out] */ unsigned long *availableFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( 
+            IDeckLinkInput_v7_3 * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [out] */ unsigned long *availableSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartStreams )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopStreams )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *PauseStreams )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushStreams )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [in] */ IDeckLinkInputCallback_v7_3 *theCallback);
+        
+        END_INTERFACE
+    } IDeckLinkInput_v7_3Vtbl;
+
+    interface IDeckLinkInput_v7_3
+    {
+        CONST_VTBL struct IDeckLinkInput_v7_3Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInput_v7_3_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInput_v7_3_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInput_v7_3_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInput_v7_3_DoesSupportVideoMode(This,displayMode,pixelFormat,result)  \
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+
+#define IDeckLinkInput_v7_3_GetDisplayModeIterator(This,iterator)      \
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkInput_v7_3_SetScreenPreviewCallback(This,previewCallback)     \
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
+
+#define IDeckLinkInput_v7_3_EnableVideoInput(This,displayMode,pixelFormat,flags)       \
+    ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) 
+
+#define IDeckLinkInput_v7_3_DisableVideoInput(This)    \
+    ( (This)->lpVtbl -> DisableVideoInput(This) ) 
+
+#define IDeckLinkInput_v7_3_GetAvailableVideoFrameCount(This,availableFrameCount)      \
+    ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) 
+
+#define IDeckLinkInput_v7_3_EnableAudioInput(This,sampleRate,sampleType,channelCount)  \
+    ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) 
+
+#define IDeckLinkInput_v7_3_DisableAudioInput(This)    \
+    ( (This)->lpVtbl -> DisableAudioInput(This) ) 
+
+#define IDeckLinkInput_v7_3_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)  \
+    ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) 
+
+#define IDeckLinkInput_v7_3_StartStreams(This) \
+    ( (This)->lpVtbl -> StartStreams(This) ) 
+
+#define IDeckLinkInput_v7_3_StopStreams(This)  \
+    ( (This)->lpVtbl -> StopStreams(This) ) 
+
+#define IDeckLinkInput_v7_3_PauseStreams(This) \
+    ( (This)->lpVtbl -> PauseStreams(This) ) 
+
+#define IDeckLinkInput_v7_3_FlushStreams(This) \
+    ( (This)->lpVtbl -> FlushStreams(This) ) 
+
+#define IDeckLinkInput_v7_3_SetCallback(This,theCallback)      \
+    ( (This)->lpVtbl -> SetCallback(This,theCallback) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkInput_v7_3_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_3_INTERFACE_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_3_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoInputFrame_v7_3 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoInputFrame_v7_3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("CF317790-2894-11DE-8C30-0800200C9A66")
+    IDeckLinkVideoInputFrame_v7_3 : public IDeckLinkVideoFrame_v7_6
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetStreamTime( 
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoInputFrame_v7_3Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoInputFrame_v7_3 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoInputFrame_v7_3 * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkVideoInputFrame_v7_3 * This,
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode_v7_6 **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkVideoInputFrame_v7_3 * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( 
+            IDeckLinkVideoInputFrame_v7_3 * This,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale);
+        
+        END_INTERFACE
+    } IDeckLinkVideoInputFrame_v7_3Vtbl;
+
+    interface IDeckLinkVideoInputFrame_v7_3
+    {
+        CONST_VTBL struct IDeckLinkVideoInputFrame_v7_3Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoInputFrame_v7_3_QueryInterface(This,riid,ppvObject)      \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_AddRef(This)     \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_Release(This)    \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_3_GetWidth(This)   \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetHeight(This)  \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetRowBytes(This)        \
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetPixelFormat(This)     \
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetFlags(This)   \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetBytes(This,buffer)    \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetTimecode(This,format,timecode)        \
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetAncillaryData(This,ancillary) \
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_3_GetStreamTime(This,frameTime,frameDuration,timeScale)    \
+    ( (This)->lpVtbl -> GetStreamTime(This,frameTime,frameDuration,timeScale) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoInputFrame_v7_3_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDisplayModeIterator_v7_1 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDisplayModeIterator_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("B28131B6-59AC-4857-B5AC-CD75D5883E2F")
+    IDeckLinkDisplayModeIterator_v7_1 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Next( 
+            /* [out] */ IDeckLinkDisplayMode_v7_1 **deckLinkDisplayMode) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDisplayModeIterator_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDisplayModeIterator_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDisplayModeIterator_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDisplayModeIterator_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Next )( 
+            IDeckLinkDisplayModeIterator_v7_1 * This,
+            /* [out] */ IDeckLinkDisplayMode_v7_1 **deckLinkDisplayMode);
+        
+        END_INTERFACE
+    } IDeckLinkDisplayModeIterator_v7_1Vtbl;
+
+    interface IDeckLinkDisplayModeIterator_v7_1
+    {
+        CONST_VTBL struct IDeckLinkDisplayModeIterator_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDisplayModeIterator_v7_1_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDisplayModeIterator_v7_1_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDisplayModeIterator_v7_1_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDisplayModeIterator_v7_1_Next(This,deckLinkDisplayMode)       \
+    ( (This)->lpVtbl -> Next(This,deckLinkDisplayMode) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDisplayMode_v7_1 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDisplayMode_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("AF0CD6D5-8376-435E-8433-54F9DD530AC3")
+    IDeckLinkDisplayMode_v7_1 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetName( 
+            /* [out] */ BSTR *name) = 0;
+        
+        virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetWidth( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetHeight( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFrameRate( 
+            /* [out] */ BMDTimeValue *frameDuration,
+            /* [out] */ BMDTimeScale *timeScale) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkDisplayMode_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDisplayMode_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDisplayMode_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDisplayMode_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetName )( 
+            IDeckLinkDisplayMode_v7_1 * This,
+            /* [out] */ BSTR *name);
+        
+        BMDDisplayMode ( STDMETHODCALLTYPE *GetDisplayMode )( 
+            IDeckLinkDisplayMode_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkDisplayMode_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkDisplayMode_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFrameRate )( 
+            IDeckLinkDisplayMode_v7_1 * This,
+            /* [out] */ BMDTimeValue *frameDuration,
+            /* [out] */ BMDTimeScale *timeScale);
+        
+        END_INTERFACE
+    } IDeckLinkDisplayMode_v7_1Vtbl;
+
+    interface IDeckLinkDisplayMode_v7_1
+    {
+        CONST_VTBL struct IDeckLinkDisplayMode_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDisplayMode_v7_1_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDisplayMode_v7_1_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDisplayMode_v7_1_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDisplayMode_v7_1_GetName(This,name)   \
+    ( (This)->lpVtbl -> GetName(This,name) ) 
+
+#define IDeckLinkDisplayMode_v7_1_GetDisplayMode(This) \
+    ( (This)->lpVtbl -> GetDisplayMode(This) ) 
+
+#define IDeckLinkDisplayMode_v7_1_GetWidth(This)       \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkDisplayMode_v7_1_GetHeight(This)      \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkDisplayMode_v7_1_GetFrameRate(This,frameDuration,timeScale)   \
+    ( (This)->lpVtbl -> GetFrameRate(This,frameDuration,timeScale) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoFrame_v7_1 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoFrame_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("333F3A10-8C2D-43CF-B79D-46560FEEA1CE")
+    IDeckLinkVideoFrame_v7_1 : public IUnknown
+    {
+    public:
+        virtual long STDMETHODCALLTYPE GetWidth( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetHeight( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetRowBytes( void) = 0;
+        
+        virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0;
+        
+        virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            void **buffer) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoFrame_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoFrame_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoFrame_v7_1 * This,
+            void **buffer);
+        
+        END_INTERFACE
+    } IDeckLinkVideoFrame_v7_1Vtbl;
+
+    interface IDeckLinkVideoFrame_v7_1
+    {
+        CONST_VTBL struct IDeckLinkVideoFrame_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoFrame_v7_1_QueryInterface(This,riid,ppvObject)   \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoFrame_v7_1_AddRef(This)  \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoFrame_v7_1_Release(This) \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoFrame_v7_1_GetWidth(This)        \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkVideoFrame_v7_1_GetHeight(This)       \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoFrame_v7_1_GetRowBytes(This)     \
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoFrame_v7_1_GetPixelFormat(This)  \
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoFrame_v7_1_GetFlags(This)        \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoFrame_v7_1_GetBytes(This,buffer) \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoInputFrame_v7_1 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoInputFrame_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("C8B41D95-8848-40EE-9B37-6E3417FB114B")
+    IDeckLinkVideoInputFrame_v7_1 : public IDeckLinkVideoFrame_v7_1
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetFrameTime( 
+            BMDTimeValue *frameTime,
+            BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoInputFrame_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoInputFrame_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoInputFrame_v7_1 * This,
+            void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFrameTime )( 
+            IDeckLinkVideoInputFrame_v7_1 * This,
+            BMDTimeValue *frameTime,
+            BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale);
+        
+        END_INTERFACE
+    } IDeckLinkVideoInputFrame_v7_1Vtbl;
+
+    interface IDeckLinkVideoInputFrame_v7_1
+    {
+        CONST_VTBL struct IDeckLinkVideoInputFrame_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoInputFrame_v7_1_QueryInterface(This,riid,ppvObject)      \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_AddRef(This)     \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_Release(This)    \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_1_GetWidth(This)   \
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_GetHeight(This)  \
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_GetRowBytes(This)        \
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_GetPixelFormat(This)     \
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_GetFlags(This)   \
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_GetBytes(This,buffer)    \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_1_GetFrameTime(This,frameTime,frameDuration,timeScale)     \
+    ( (This)->lpVtbl -> GetFrameTime(This,frameTime,frameDuration,timeScale) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoInputFrame_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkAudioInputPacket_v7_1 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkAudioInputPacket_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("C86DE4F6-A29F-42E3-AB3A-1363E29F0788")
+    IDeckLinkAudioInputPacket_v7_1 : public IUnknown
+    {
+    public:
+        virtual long STDMETHODCALLTYPE GetSampleCount( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            void **buffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAudioPacketTime( 
+            BMDTimeValue *packetTime,
+            BMDTimeScale timeScale) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkAudioInputPacket_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkAudioInputPacket_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkAudioInputPacket_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkAudioInputPacket_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetSampleCount )( 
+            IDeckLinkAudioInputPacket_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkAudioInputPacket_v7_1 * This,
+            void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAudioPacketTime )( 
+            IDeckLinkAudioInputPacket_v7_1 * This,
+            BMDTimeValue *packetTime,
+            BMDTimeScale timeScale);
+        
+        END_INTERFACE
+    } IDeckLinkAudioInputPacket_v7_1Vtbl;
+
+    interface IDeckLinkAudioInputPacket_v7_1
+    {
+        CONST_VTBL struct IDeckLinkAudioInputPacket_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkAudioInputPacket_v7_1_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkAudioInputPacket_v7_1_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkAudioInputPacket_v7_1_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkAudioInputPacket_v7_1_GetSampleCount(This)    \
+    ( (This)->lpVtbl -> GetSampleCount(This) ) 
+
+#define IDeckLinkAudioInputPacket_v7_1_GetBytes(This,buffer)   \
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkAudioInputPacket_v7_1_GetAudioPacketTime(This,packetTime,timeScale)   \
+    ( (This)->lpVtbl -> GetAudioPacketTime(This,packetTime,timeScale) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoOutputCallback_v7_1 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoOutputCallback_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("EBD01AFA-E4B0-49C6-A01D-EDB9D1B55FD9")
+    IDeckLinkVideoOutputCallback_v7_1 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted( 
+            /* [in] */ IDeckLinkVideoFrame_v7_1 *completedFrame,
+            /* [in] */ BMDOutputFrameCompletionResult result) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkVideoOutputCallback_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoOutputCallback_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoOutputCallback_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoOutputCallback_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduledFrameCompleted )( 
+            IDeckLinkVideoOutputCallback_v7_1 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_1 *completedFrame,
+            /* [in] */ BMDOutputFrameCompletionResult result);
+        
+        END_INTERFACE
+    } IDeckLinkVideoOutputCallback_v7_1Vtbl;
+
+    interface IDeckLinkVideoOutputCallback_v7_1
+    {
+        CONST_VTBL struct IDeckLinkVideoOutputCallback_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoOutputCallback_v7_1_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoOutputCallback_v7_1_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoOutputCallback_v7_1_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoOutputCallback_v7_1_ScheduledFrameCompleted(This,completedFrame,result)  \
+    ( (This)->lpVtbl -> ScheduledFrameCompleted(This,completedFrame,result) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInputCallback_v7_1 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInputCallback_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("7F94F328-5ED4-4E9F-9729-76A86BDC99CC")
+    IDeckLinkInputCallback_v7_1 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived( 
+            /* [in] */ IDeckLinkVideoInputFrame_v7_1 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket_v7_1 *audioPacket) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkInputCallback_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInputCallback_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInputCallback_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInputCallback_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( 
+            IDeckLinkInputCallback_v7_1 * This,
+            /* [in] */ IDeckLinkVideoInputFrame_v7_1 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket_v7_1 *audioPacket);
+        
+        END_INTERFACE
+    } IDeckLinkInputCallback_v7_1Vtbl;
+
+    interface IDeckLinkInputCallback_v7_1
+    {
+        CONST_VTBL struct IDeckLinkInputCallback_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInputCallback_v7_1_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInputCallback_v7_1_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInputCallback_v7_1_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInputCallback_v7_1_VideoInputFrameArrived(This,videoFrame,audioPacket)        \
+    ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkOutput_v7_1 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkOutput_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("AE5B3E9B-4E1E-4535-B6E8-480FF52F6CE5")
+    IDeckLinkOutput_v7_1 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_1 **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( 
+            BMDDisplayMode displayMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator( 
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( 
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            IDeckLinkVideoFrame_v7_1 **outFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateVideoFrameFromBuffer( 
+            void *buffer,
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            IDeckLinkVideoFrame_v7_1 **outFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( 
+            IDeckLinkVideoFrame_v7_1 *theFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( 
+            IDeckLinkVideoFrame_v7_1 *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( 
+            /* [in] */ IDeckLinkVideoOutputCallback_v7_1 *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( 
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( 
+            void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( 
+            void *buffer,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( 
+            /* [out] */ unsigned long *bufferedSampleCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( 
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( 
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( 
+            BMDTimeValue stopPlaybackAtTime,
+            BMDTimeValue *actualStopTime,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            BMDTimeScale desiredTimeScale,
+            BMDTimeValue *elapsedTimeSinceSchedulerBegan) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkOutput_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkOutput_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkOutput_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkOutput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkOutput_v7_1 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkOutput_v7_1 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_1 **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( 
+            IDeckLinkOutput_v7_1 * This,
+            BMDDisplayMode displayMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( 
+            IDeckLinkOutput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( 
+            IDeckLinkOutput_v7_1 * This,
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( 
+            IDeckLinkOutput_v7_1 * This,
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            IDeckLinkVideoFrame_v7_1 **outFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateVideoFrameFromBuffer )( 
+            IDeckLinkOutput_v7_1 * This,
+            void *buffer,
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            IDeckLinkVideoFrame_v7_1 **outFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( 
+            IDeckLinkOutput_v7_1 * This,
+            IDeckLinkVideoFrame_v7_1 *theFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( 
+            IDeckLinkOutput_v7_1 * This,
+            IDeckLinkVideoFrame_v7_1 *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( 
+            IDeckLinkOutput_v7_1 * This,
+            /* [in] */ IDeckLinkVideoOutputCallback_v7_1 *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( 
+            IDeckLinkOutput_v7_1 * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( 
+            IDeckLinkOutput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( 
+            IDeckLinkOutput_v7_1 * This,
+            void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( 
+            IDeckLinkOutput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( 
+            IDeckLinkOutput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( 
+            IDeckLinkOutput_v7_1 * This,
+            void *buffer,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( 
+            IDeckLinkOutput_v7_1 * This,
+            /* [out] */ unsigned long *bufferedSampleCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( 
+            IDeckLinkOutput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( 
+            IDeckLinkOutput_v7_1 * This,
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( 
+            IDeckLinkOutput_v7_1 * This,
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( 
+            IDeckLinkOutput_v7_1 * This,
+            BMDTimeValue stopPlaybackAtTime,
+            BMDTimeValue *actualStopTime,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkOutput_v7_1 * This,
+            BMDTimeScale desiredTimeScale,
+            BMDTimeValue *elapsedTimeSinceSchedulerBegan);
+        
+        END_INTERFACE
+    } IDeckLinkOutput_v7_1Vtbl;
+
+    interface IDeckLinkOutput_v7_1
+    {
+        CONST_VTBL struct IDeckLinkOutput_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkOutput_v7_1_QueryInterface(This,riid,ppvObject)       \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkOutput_v7_1_AddRef(This)      \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkOutput_v7_1_Release(This)     \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkOutput_v7_1_DoesSupportVideoMode(This,displayMode,pixelFormat,result) \
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+
+#define IDeckLinkOutput_v7_1_GetDisplayModeIterator(This,iterator)     \
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkOutput_v7_1_EnableVideoOutput(This,displayMode)       \
+    ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode) ) 
+
+#define IDeckLinkOutput_v7_1_DisableVideoOutput(This)  \
+    ( (This)->lpVtbl -> DisableVideoOutput(This) ) 
+
+#define IDeckLinkOutput_v7_1_SetVideoOutputFrameMemoryAllocator(This,theAllocator)     \
+    ( (This)->lpVtbl -> SetVideoOutputFrameMemoryAllocator(This,theAllocator) ) 
+
+#define IDeckLinkOutput_v7_1_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)   \
+    ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) 
+
+#define IDeckLinkOutput_v7_1_CreateVideoFrameFromBuffer(This,buffer,width,height,rowBytes,pixelFormat,flags,outFrame)  \
+    ( (This)->lpVtbl -> CreateVideoFrameFromBuffer(This,buffer,width,height,rowBytes,pixelFormat,flags,outFrame) ) 
+
+#define IDeckLinkOutput_v7_1_DisplayVideoFrameSync(This,theFrame)      \
+    ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) 
+
+#define IDeckLinkOutput_v7_1_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)   \
+    ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) 
+
+#define IDeckLinkOutput_v7_1_SetScheduledFrameCompletionCallback(This,theCallback)     \
+    ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_v7_1_EnableAudioOutput(This,sampleRate,sampleType,channelCount)        \
+    ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount) ) 
+
+#define IDeckLinkOutput_v7_1_DisableAudioOutput(This)  \
+    ( (This)->lpVtbl -> DisableAudioOutput(This) ) 
+
+#define IDeckLinkOutput_v7_1_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)   \
+    ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_v7_1_BeginAudioPreroll(This)   \
+    ( (This)->lpVtbl -> BeginAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_v7_1_EndAudioPreroll(This)     \
+    ( (This)->lpVtbl -> EndAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_v7_1_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)       \
+    ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_v7_1_GetBufferedAudioSampleFrameCount(This,bufferedSampleCount)        \
+    ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleCount) ) 
+
+#define IDeckLinkOutput_v7_1_FlushBufferedAudioSamples(This)   \
+    ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) 
+
+#define IDeckLinkOutput_v7_1_SetAudioCallback(This,theCallback)        \
+    ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_v7_1_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)    \
+    ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) 
+
+#define IDeckLinkOutput_v7_1_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)   \
+    ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) 
+
+#define IDeckLinkOutput_v7_1_GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan)   \
+    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkInput_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInput_v7_1 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInput_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("2B54EDEF-5B32-429F-BA11-BB990596EACD")
+    IDeckLinkInput_v7_1 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_1 **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( 
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ReadAudioSamples( 
+            void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesRead,
+            /* [out] */ BMDTimeValue *audioPacketTime,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( 
+            /* [out] */ unsigned long *bufferedSampleCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IDeckLinkInputCallback_v7_1 *theCallback) = 0;
+        
+    };
+    
+#else  /* C style interface */
+
+    typedef struct IDeckLinkInput_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInput_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInput_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkInput_v7_1 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkInput_v7_1 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_1 **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( 
+            IDeckLinkInput_v7_1 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( 
+            IDeckLinkInput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( 
+            IDeckLinkInput_v7_1 * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( 
+            IDeckLinkInput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ReadAudioSamples )( 
+            IDeckLinkInput_v7_1 * This,
+            void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesRead,
+            /* [out] */ BMDTimeValue *audioPacketTime,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( 
+            IDeckLinkInput_v7_1 * This,
+            /* [out] */ unsigned long *bufferedSampleCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartStreams )( 
+            IDeckLinkInput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopStreams )( 
+            IDeckLinkInput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *PauseStreams )( 
+            IDeckLinkInput_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IDeckLinkInput_v7_1 * This,
+            /* [in] */ IDeckLinkInputCallback_v7_1 *theCallback);
+        
+        END_INTERFACE
+    } IDeckLinkInput_v7_1Vtbl;
+
+    interface IDeckLinkInput_v7_1
+    {
+        CONST_VTBL struct IDeckLinkInput_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInput_v7_1_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInput_v7_1_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInput_v7_1_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInput_v7_1_DoesSupportVideoMode(This,displayMode,pixelFormat,result)  \
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+
+#define IDeckLinkInput_v7_1_GetDisplayModeIterator(This,iterator)      \
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkInput_v7_1_EnableVideoInput(This,displayMode,pixelFormat,flags)       \
+    ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) 
+
+#define IDeckLinkInput_v7_1_DisableVideoInput(This)    \
+    ( (This)->lpVtbl -> DisableVideoInput(This) ) 
+
+#define IDeckLinkInput_v7_1_EnableAudioInput(This,sampleRate,sampleType,channelCount)  \
+    ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) 
+
+#define IDeckLinkInput_v7_1_DisableAudioInput(This)    \
+    ( (This)->lpVtbl -> DisableAudioInput(This) ) 
+
+#define IDeckLinkInput_v7_1_ReadAudioSamples(This,buffer,sampleFrameCount,sampleFramesRead,audioPacketTime,timeScale)  \
+    ( (This)->lpVtbl -> ReadAudioSamples(This,buffer,sampleFrameCount,sampleFramesRead,audioPacketTime,timeScale) ) 
+
+#define IDeckLinkInput_v7_1_GetBufferedAudioSampleFrameCount(This,bufferedSampleCount) \
+    ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleCount) ) 
+
+#define IDeckLinkInput_v7_1_StartStreams(This) \
+    ( (This)->lpVtbl -> StartStreams(This) ) 
+
+#define IDeckLinkInput_v7_1_StopStreams(This)  \
+    ( (This)->lpVtbl -> StopStreams(This) ) 
+
+#define IDeckLinkInput_v7_1_PauseStreams(This) \
+    ( (This)->lpVtbl -> PauseStreams(This) ) 
+
+#define IDeckLinkInput_v7_1_SetCallback(This,theCallback)      \
+    ( (This)->lpVtbl -> SetCallback(This,theCallback) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IDeckLinkInput_v7_1_INTERFACE_DEFINED__ */
+
+#endif /* __DeckLinkAPI_LIBRARY_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+
index 39c5353dac02a8741c133cd739b66e45b882b116..97b690840ce216d380904961c101e37fe53a034e 100644 (file)
     </ClCompile>\r
     <ClCompile Include="decklink.cpp" />\r
     <ClCompile Include="interop\DeckLinkAPI_i.c">\r
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>\r
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">NotUsing</PrecompiledHeader>\r
-      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">NotUsing</PrecompiledHeader>\r
       <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>\r
     </ClCompile>\r
     <ClCompile Include="producer\decklink_producer.cpp">\r
     <ClInclude Include="StdAfx.h" />\r
     <ClInclude Include="util\util.h" />\r
   </ItemGroup>\r
-  <ItemGroup>\r
-    <Midl Include="interop\DeckLinkAPI.idl">\r
-      <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">interop\</OutputDirectory>\r
-      <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">interop\</OutputDirectory>\r
-      <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">interop\</OutputDirectory>\r
-      <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">interop\</OutputDirectory>\r
-    </Midl>\r
-    <Midl Include="interop\DeckLinkAPI_v7_1.idl">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </Midl>\r
-    <Midl Include="interop\DeckLinkAPI_v7_3.idl">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </Midl>\r
-    <Midl Include="interop\DeckLinkAPI_v7_6.idl">\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-    </Midl>\r
-  </ItemGroup>\r
   <ItemGroup>\r
     <ProjectReference Include="..\..\common\common.vcxproj">\r
       <Project>{02308602-7fe0-4253-b96e-22134919f56a}</Project>\r
index 7a7b1d706a86905484db934783848eb71aab1caa..a194af36c3fee5855f6218bed9a291cd68597b30 100644 (file)
     <Filter Include="source\producer">\r
       <UniqueIdentifier>{d1c2b767-8787-4ba5-b141-0c17d030bfe0}</UniqueIdentifier>\r
     </Filter>\r
-    <Filter Include="source\interop">\r
-      <UniqueIdentifier>{8f268fa2-b236-4cb5-86dc-ca6612b251a5}</UniqueIdentifier>\r
-    </Filter>\r
     <Filter Include="source\consumer">\r
       <UniqueIdentifier>{681577c3-a264-4849-bdef-27fc1988e50f}</UniqueIdentifier>\r
     </Filter>\r
+    <Filter Include="source\interop">\r
+      <UniqueIdentifier>{31a4591f-510e-4594-9f79-e506cfcacee0}</UniqueIdentifier>\r
+    </Filter>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClCompile Include="consumer\decklink_consumer.cpp">\r
       <Filter>source\producer</Filter>\r
     </ClCompile>\r
     <ClCompile Include="StdAfx.cpp" />\r
-    <ClCompile Include="interop\DeckLinkAPI_i.c">\r
-      <Filter>source\interop</Filter>\r
-    </ClCompile>\r
     <ClCompile Include="decklink.cpp">\r
       <Filter>source</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="interop\DeckLinkAPI_i.c">\r
+      <Filter>source\interop</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="consumer\decklink_consumer.h">\r
     <ClInclude Include="util\util.h">\r
       <Filter>source\util</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="decklink.h">\r
+      <Filter>source</Filter>\r
+    </ClInclude>\r
     <ClInclude Include="interop\DeckLinkAPIVersion.h">\r
       <Filter>source\interop</Filter>\r
     </ClInclude>\r
     <ClInclude Include="interop\DeckLinkAPI_h.h">\r
       <Filter>source\interop</Filter>\r
     </ClInclude>\r
-    <ClInclude Include="decklink.h">\r
-      <Filter>source</Filter>\r
-    </ClInclude>\r
-  </ItemGroup>\r
-  <ItemGroup>\r
-    <Midl Include="interop\DeckLinkAPI_v7_1.idl">\r
-      <Filter>source\interop</Filter>\r
-    </Midl>\r
-    <Midl Include="interop\DeckLinkAPI_v7_3.idl">\r
-      <Filter>source\interop</Filter>\r
-    </Midl>\r
-    <Midl Include="interop\DeckLinkAPI_v7_6.idl">\r
-      <Filter>source\interop</Filter>\r
-    </Midl>\r
-    <Midl Include="interop\DeckLinkAPI.idl">\r
-      <Filter>source\interop</Filter>\r
-    </Midl>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file
diff --git a/modules/decklink/interop/DeckLinkAPI.idl b/modules/decklink/interop/DeckLinkAPI.idl
deleted file mode 100644 (file)
index abe5247..0000000
+++ /dev/null
@@ -1,1159 +0,0 @@
-/* -LICENSE-START-\r
-** Copyright (c) 2011 Blackmagic Design\r
-**\r
-** Permission is hereby granted, free of charge, to any person or organization\r
-** obtaining a copy of the software and accompanying documentation covered by\r
-** this license (the "Software") to use, reproduce, display, distribute,\r
-** execute, and transmit the Software, and to prepare derivative works of the\r
-** Software, and to permit third-parties to whom the Software is furnished to\r
-** do so, all subject to the following:\r
-** \r
-** The copyright notices in the Software and this entire statement, including\r
-** the above license grant, this restriction and the following disclaimer,\r
-** must be included in all copies of the Software, in whole or in part, and\r
-** all derivative works of the Software, unless such copies or derivative\r
-** works are solely in the form of machine-executable object code generated by\r
-** a source language processor.\r
-** \r
-** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT\r
-** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE\r
-** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,\r
-** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
-** DEALINGS IN THE SOFTWARE.\r
-** -LICENSE-END-\r
-*/\r
-\r
-/* DeckLinkAPI.idl */\r
-\r
-import "unknwn.idl";\r
-\r
-[uuid(D864517A-EDD5-466D-867D-C819F1C052BB),\r
-version(1.0), helpstring("DeckLink API Library")]\r
-library DeckLinkAPI\r
-{\r
-\r
-// Type Declarations\r
-\r
-typedef LONGLONG BMDTimeValue;\r
-typedef LONGLONG BMDTimeScale;\r
-typedef unsigned long BMDTimecodeBCD;\r
-typedef unsigned long BMDTimecodeUserBits;\r
-\r
-\r
-// Enumeration Mapping\r
-\r
-cpp_quote("typedef unsigned long BMDDisplayModeFlags;")\r
-cpp_quote("typedef unsigned long BMDFrameFlags;")\r
-cpp_quote("typedef unsigned long BMDVideoInputFlags;")\r
-cpp_quote("typedef unsigned long BMDVideoInputFormatChangedEvents;")\r
-cpp_quote("typedef unsigned long BMDDetectedVideoInputFormatFlags;")\r
-cpp_quote("typedef unsigned long BMDTimecodeFlags;")\r
-cpp_quote("typedef unsigned long BMDAnalogVideoFlags;")\r
-cpp_quote("typedef unsigned long BMDDeckControlStatusFlags;")\r
-cpp_quote("typedef unsigned long BMDDeckControlExportModeOpsFlags;")\r
-cpp_quote("#if 0")\r
-typedef enum _BMDDisplayModeFlags BMDDisplayModeFlags;\r
-typedef enum _BMDFrameFlags BMDFrameFlags;\r
-typedef enum _BMDVideoInputFlags BMDVideoInputFlags;\r
-typedef enum _BMDVideoInputFormatChangedEvents BMDVideoInputFormatChangedEvents;\r
-typedef enum _BMDDetectedVideoInputFormatFlags BMDDetectedVideoInputFormatFlags;\r
-typedef enum _BMDTimecodeFlags BMDTimecodeFlags;\r
-typedef enum _BMDAnalogVideoFlags BMDAnalogVideoFlags;\r
-typedef enum _BMDDeckControlStatusFlags BMDDeckControlStatusFlags;\r
-typedef enum _BMDDeckControlExportModeOpsFlags BMDDeckControlExportModeOpsFlags;\r
-cpp_quote("#endif")\r
-\r
-\r
-/* Enum BMDDisplayMode - Video display modes */\r
-\r
-typedef [v1_enum] enum _BMDDisplayMode {\r
-\r
-    /* SD Modes */\r
-\r
-    bmdModeNTSC                                        = /* 'ntsc' */ 0x6E747363,\r
-    bmdModeNTSC2398                                    = /* 'nt23' */ 0x6E743233,      // 3:2 pulldown\r
-    bmdModePAL                                         = /* 'pal ' */ 0x70616C20,\r
-    bmdModeNTSCp                                       = /* 'ntsp' */ 0x6E747370,\r
-    bmdModePALp                                        = /* 'palp' */ 0x70616C70,\r
-\r
-    /* HD 1080 Modes */\r
-\r
-    bmdModeHD1080p2398                                 = /* '23ps' */ 0x32337073,\r
-    bmdModeHD1080p24                                   = /* '24ps' */ 0x32347073,\r
-    bmdModeHD1080p25                                   = /* 'Hp25' */ 0x48703235,\r
-    bmdModeHD1080p2997                                 = /* 'Hp29' */ 0x48703239,\r
-    bmdModeHD1080p30                                   = /* 'Hp30' */ 0x48703330,\r
-    bmdModeHD1080i50                                   = /* 'Hi50' */ 0x48693530,\r
-    bmdModeHD1080i5994                                 = /* 'Hi59' */ 0x48693539,\r
-    bmdModeHD1080i6000                                 = /* 'Hi60' */ 0x48693630,      // N.B. This _really_ is 60.00 Hz.\r
-    bmdModeHD1080p50                                   = /* 'Hp50' */ 0x48703530,\r
-    bmdModeHD1080p5994                                 = /* 'Hp59' */ 0x48703539,\r
-    bmdModeHD1080p6000                                 = /* 'Hp60' */ 0x48703630,      // N.B. This _really_ is 60.00 Hz.\r
-\r
-    /* HD 720 Modes */\r
-\r
-    bmdModeHD720p50                                    = /* 'hp50' */ 0x68703530,\r
-    bmdModeHD720p5994                                  = /* 'hp59' */ 0x68703539,\r
-    bmdModeHD720p60                                    = /* 'hp60' */ 0x68703630,\r
-\r
-    /* 2k Modes */\r
-\r
-    bmdMode2k2398                                      = /* '2k23' */ 0x326B3233,\r
-    bmdMode2k24                                        = /* '2k24' */ 0x326B3234,\r
-    bmdMode2k25                                        = /* '2k25' */ 0x326B3235\r
-} BMDDisplayMode;\r
-\r
-\r
-/* Enum BMDFieldDominance - Video field dominance */\r
-\r
-typedef [v1_enum] enum _BMDFieldDominance {\r
-    bmdUnknownFieldDominance                           = 0,\r
-    bmdLowerFieldFirst                                 = /* 'lowr' */ 0x6C6F7772,\r
-    bmdUpperFieldFirst                                 = /* 'uppr' */ 0x75707072,\r
-    bmdProgressiveFrame                                = /* 'prog' */ 0x70726F67,\r
-    bmdProgressiveSegmentedFrame                       = /* 'psf ' */ 0x70736620\r
-} BMDFieldDominance;\r
-\r
-\r
-/* Enum BMDPixelFormat - Video pixel formats supported for output/input */\r
-\r
-typedef [v1_enum] enum _BMDPixelFormat {\r
-    bmdFormat8BitYUV                                   = /* '2vuy' */ 0x32767579,\r
-    bmdFormat10BitYUV                                  = /* 'v210' */ 0x76323130,\r
-    bmdFormat8BitARGB                                  = 32,\r
-    bmdFormat8BitBGRA                                  = /* 'BGRA' */ 0x42475241,\r
-    bmdFormat10BitRGB                                  = /* 'r210' */ 0x72323130       // Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10\r
-} BMDPixelFormat;\r
-\r
-\r
-/* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */\r
-\r
-[v1_enum] enum _BMDDisplayModeFlags {\r
-    bmdDisplayModeSupports3D                           = 1 << 0,\r
-    bmdDisplayModeColorspaceRec601                     = 1 << 1,\r
-    bmdDisplayModeColorspaceRec709                     = 1 << 2\r
-};\r
-\r
-\r
-/* Enum BMDVideoOutputFlags - Flags to control the output of ancillary data along with video. */\r
-\r
-typedef [v1_enum] enum _BMDVideoOutputFlags {\r
-    bmdVideoOutputFlagDefault                          = 0,\r
-    bmdVideoOutputVANC                                 = 1 << 0,\r
-    bmdVideoOutputVITC                                 = 1 << 1,\r
-    bmdVideoOutputRP188                                = 1 << 2,\r
-    bmdVideoOutputDualStream3D                         = 1 << 4\r
-} BMDVideoOutputFlags;\r
-\r
-\r
-/* Enum BMDFrameFlags - Frame flags */\r
-\r
-[v1_enum] enum _BMDFrameFlags {\r
-    bmdFrameFlagDefault                                = 0,\r
-    bmdFrameFlagFlipVertical                           = 1 << 0,\r
-\r
-    /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */\r
-\r
-    bmdFrameHasNoInputSource                           = 1 << 31\r
-};\r
-\r
-\r
-/* Enum BMDVideoInputFlags - Flags applicable to video input */\r
-\r
-[v1_enum] enum _BMDVideoInputFlags {\r
-    bmdVideoInputFlagDefault                           = 0,\r
-    bmdVideoInputEnableFormatDetection                 = 1 << 0,\r
-    bmdVideoInputDualStream3D                          = 1 << 1\r
-};\r
-\r
-\r
-/* Enum BMDVideoInputFormatChangedEvents - Bitmask passed to the VideoInputFormatChanged notification to identify the properties of the input signal that have changed */\r
-\r
-[v1_enum] enum _BMDVideoInputFormatChangedEvents {\r
-    bmdVideoInputDisplayModeChanged                    = 1 << 0,\r
-    bmdVideoInputFieldDominanceChanged                 = 1 << 1,\r
-    bmdVideoInputColorspaceChanged                     = 1 << 2\r
-};\r
-\r
-\r
-/* Enum BMDDetectedVideoInputFormatFlags - Flags passed to the VideoInputFormatChanged notification to describe the detected video input signal */\r
-\r
-[v1_enum] enum _BMDDetectedVideoInputFormatFlags {\r
-    bmdDetectedVideoInputYCbCr422                      = 1 << 0,\r
-    bmdDetectedVideoInputRGB444                        = 1 << 1\r
-};\r
-\r
-\r
-/* Enum BMDOutputFrameCompletionResult - Frame Completion Callback */\r
-\r
-typedef [v1_enum] enum _BMDOutputFrameCompletionResult {\r
-    bmdOutputFrameCompleted,                          \r
-    bmdOutputFrameDisplayedLate,                      \r
-    bmdOutputFrameDropped,                            \r
-    bmdOutputFrameFlushed                             \r
-} BMDOutputFrameCompletionResult;\r
-\r
-\r
-/* Enum BMDReferenceStatus - GenLock input status */\r
-\r
-typedef [v1_enum] enum _BMDReferenceStatus {\r
-    bmdReferenceNotSupportedByHardware                 = 1 << 0,\r
-    bmdReferenceLocked                                 = 1 << 1\r
-} BMDReferenceStatus;\r
-\r
-\r
-/* Enum BMDAudioSampleRate - Audio sample rates supported for output/input */\r
-\r
-typedef [v1_enum] enum _BMDAudioSampleRate {\r
-    bmdAudioSampleRate48kHz                            = 48000\r
-} BMDAudioSampleRate;\r
-\r
-\r
-/* Enum BMDAudioSampleType - Audio sample sizes supported for output/input */\r
-\r
-typedef [v1_enum] enum _BMDAudioSampleType {\r
-    bmdAudioSampleType16bitInteger                     = 16,\r
-    bmdAudioSampleType32bitInteger                     = 32\r
-} BMDAudioSampleType;\r
-\r
-\r
-/* Enum BMDAudioOutputStreamType - Audio output stream type */\r
-\r
-typedef [v1_enum] enum _BMDAudioOutputStreamType {\r
-    bmdAudioOutputStreamContinuous,                   \r
-    bmdAudioOutputStreamContinuousDontResample,       \r
-    bmdAudioOutputStreamTimestamped                   \r
-} BMDAudioOutputStreamType;\r
-\r
-\r
-/* Enum BMDDisplayModeSupport - Output mode supported flags */\r
-\r
-typedef [v1_enum] enum _BMDDisplayModeSupport {\r
-    bmdDisplayModeNotSupported                         = 0,\r
-    bmdDisplayModeSupported,                          \r
-    bmdDisplayModeSupportedWithConversion             \r
-} BMDDisplayModeSupport;\r
-\r
-\r
-/* Enum BMDTimecodeFormat - Timecode formats for frame metadata */\r
-\r
-typedef [v1_enum] enum _BMDTimecodeFormat {\r
-    bmdTimecodeRP188                                   = /* 'rp18' */ 0x72703138,\r
-    bmdTimecodeRP188Field2                             = /* 'rp12' */ 0x72703132,\r
-    bmdTimecodeVITC                                    = /* 'vitc' */ 0x76697463,\r
-    bmdTimecodeVITCField2                              = /* 'vit2' */ 0x76697432,\r
-    bmdTimecodeSerial                                  = /* 'seri' */ 0x73657269\r
-} BMDTimecodeFormat;\r
-\r
-\r
-/* Enum BMDTimecodeFlags - Timecode flags */\r
-\r
-[v1_enum] enum _BMDTimecodeFlags {\r
-    bmdTimecodeFlagDefault                             = 0,\r
-    bmdTimecodeIsDropFrame                             = 1 << 0\r
-};\r
-\r
-\r
-/* Enum BMDVideoConnection - Video connection types */\r
-\r
-typedef [v1_enum] enum _BMDVideoConnection {\r
-    bmdVideoConnectionSDI                              = 1 << 0,\r
-    bmdVideoConnectionHDMI                             = 1 << 1,\r
-    bmdVideoConnectionOpticalSDI                       = 1 << 2,\r
-    bmdVideoConnectionComponent                        = 1 << 3,\r
-    bmdVideoConnectionComposite                        = 1 << 4,\r
-    bmdVideoConnectionSVideo                           = 1 << 5\r
-} BMDVideoConnection;\r
-\r
-\r
-/* Enum BMDAnalogVideoFlags - Analog video display flags */\r
-\r
-[v1_enum] enum _BMDAnalogVideoFlags {\r
-    bmdAnalogVideoFlagCompositeSetup75                 = 1 << 0,\r
-    bmdAnalogVideoFlagComponentBetacamLevels           = 1 << 1\r
-};\r
-\r
-\r
-/* Enum BMDAudioConnection - Audio connection types */\r
-\r
-typedef [v1_enum] enum _BMDAudioConnection {\r
-    bmdAudioConnectionEmbedded                         = /* 'embd' */ 0x656D6264,\r
-    bmdAudioConnectionAESEBU                           = /* 'aes ' */ 0x61657320,\r
-    bmdAudioConnectionAnalog                           = /* 'anlg' */ 0x616E6C67\r
-} BMDAudioConnection;\r
-\r
-\r
-/* Enum BMDAudioOutputAnalogAESSwitch - Audio output Analog/AESEBU switch */\r
-\r
-typedef [v1_enum] enum _BMDAudioOutputAnalogAESSwitch {\r
-    bmdAudioOutputSwitchAESEBU                         = /* 'aes ' */ 0x61657320,\r
-    bmdAudioOutputSwitchAnalog                         = /* 'anlg' */ 0x616E6C67\r
-} BMDAudioOutputAnalogAESSwitch;\r
-\r
-\r
-/* Enum BMDVideoOutputConversionMode - Video/audio conversion mode */\r
-\r
-typedef [v1_enum] enum _BMDVideoOutputConversionMode {\r
-    bmdNoVideoOutputConversion                         = /* 'none' */ 0x6E6F6E65,\r
-    bmdVideoOutputLetterboxDownconversion              = /* 'ltbx' */ 0x6C746278,\r
-    bmdVideoOutputAnamorphicDownconversion             = /* 'amph' */ 0x616D7068,\r
-    bmdVideoOutputHD720toHD1080Conversion              = /* '720c' */ 0x37323063,\r
-    bmdVideoOutputHardwareLetterboxDownconversion      = /* 'HWlb' */ 0x48576C62,\r
-    bmdVideoOutputHardwareAnamorphicDownconversion     = /* 'HWam' */ 0x4857616D,\r
-    bmdVideoOutputHardwareCenterCutDownconversion      = /* 'HWcc' */ 0x48576363,\r
-    bmdVideoOutputHardware720p1080pCrossconversion     = /* 'xcap' */ 0x78636170,\r
-    bmdVideoOutputHardwareAnamorphic720pUpconversion   = /* 'ua7p' */ 0x75613770,\r
-    bmdVideoOutputHardwareAnamorphic1080iUpconversion  = /* 'ua1i' */ 0x75613169,\r
-    bmdVideoOutputHardwareAnamorphic149To720pUpconversion = /* 'u47p' */ 0x75343770,\r
-    bmdVideoOutputHardwareAnamorphic149To1080iUpconversion = /* 'u41i' */ 0x75343169,\r
-    bmdVideoOutputHardwarePillarbox720pUpconversion    = /* 'up7p' */ 0x75703770,\r
-    bmdVideoOutputHardwarePillarbox1080iUpconversion   = /* 'up1i' */ 0x75703169\r
-} BMDVideoOutputConversionMode;\r
-\r
-\r
-/* Enum BMDVideoInputConversionMode - Video input conversion mode */\r
-\r
-typedef [v1_enum] enum _BMDVideoInputConversionMode {\r
-    bmdNoVideoInputConversion                          = /* 'none' */ 0x6E6F6E65,\r
-    bmdVideoInputLetterboxDownconversionFromHD1080     = /* '10lb' */ 0x31306C62,\r
-    bmdVideoInputAnamorphicDownconversionFromHD1080    = /* '10am' */ 0x3130616D,\r
-    bmdVideoInputLetterboxDownconversionFromHD720      = /* '72lb' */ 0x37326C62,\r
-    bmdVideoInputAnamorphicDownconversionFromHD720     = /* '72am' */ 0x3732616D,\r
-    bmdVideoInputLetterboxUpconversion                 = /* 'lbup' */ 0x6C627570,\r
-    bmdVideoInputAnamorphicUpconversion                = /* 'amup' */ 0x616D7570\r
-} BMDVideoInputConversionMode;\r
-\r
-\r
-/* Enum BMDVideo3DPackingFormat - Video 3D packing format */\r
-\r
-typedef [v1_enum] enum _BMDVideo3DPackingFormat {\r
-    bmdVideo3DPackingSidebySideHalf                    = /* 'sbsh' */ 0x73627368,\r
-    bmdVideo3DPackingLinebyLine                        = /* 'lbyl' */ 0x6C62796C,\r
-    bmdVideo3DPackingTopAndBottom                      = /* 'tabo' */ 0x7461626F,\r
-    bmdVideo3DPackingFramePacking                      = /* 'frpk' */ 0x6672706B,\r
-    bmdVideo3DPackingLeftOnly                          = /* 'left' */ 0x6C656674,\r
-    bmdVideo3DPackingRightOnly                         = /* 'righ' */ 0x72696768\r
-} BMDVideo3DPackingFormat;\r
-\r
-\r
-/* Enum BMDIdleVideoOutputOperation - Video output operation when not playing video */\r
-\r
-typedef [v1_enum] enum _BMDIdleVideoOutputOperation {\r
-    bmdIdleVideoOutputBlack                            = /* 'blac' */ 0x626C6163,\r
-    bmdIdleVideoOutputLastFrame                        = /* 'lafa' */ 0x6C616661\r
-} BMDIdleVideoOutputOperation;\r
-\r
-\r
-/* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */\r
-\r
-typedef [v1_enum] enum _BMDDeckLinkConfigurationID {\r
-\r
-    /* Serial port Flags */\r
-\r
-    bmdDeckLinkConfigSwapSerialRxTx                    = /* 'ssrt' */ 0x73737274,\r
-\r
-    /* Video Input/Output Flags */\r
-\r
-    bmdDeckLinkConfigUse1080pNotPsF                    = /* 'fpro' */ 0x6670726F,\r
-\r
-    /* Video Input/Output Integers */\r
-\r
-    bmdDeckLinkConfigHDMI3DPackingFormat               = /* '3dpf' */ 0x33647066,\r
-    bmdDeckLinkConfigBypass                            = /* 'byps' */ 0x62797073,\r
-\r
-    /* Audio Input/Output Flags */\r
-\r
-    bmdDeckLinkConfigAnalogAudioConsumerLevels         = /* 'aacl' */ 0x6161636C,\r
-\r
-    /* Video output flags */\r
-\r
-    bmdDeckLinkConfigFieldFlickerRemoval               = /* 'fdfr' */ 0x66646672,\r
-    bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion  = /* 'to59' */ 0x746F3539,\r
-    bmdDeckLinkConfig444SDIVideoOutput                 = /* '444o' */ 0x3434346F,\r
-    bmdDeckLinkConfig3GBpsVideoOutput                  = /* '3gbs' */ 0x33676273,\r
-    bmdDeckLinkConfigBlackVideoOutputDuringCapture     = /* 'bvoc' */ 0x62766F63,\r
-    bmdDeckLinkConfigLowLatencyVideoOutput             = /* 'llvo' */ 0x6C6C766F,\r
-\r
-    /* Video Output Integers */\r
-\r
-    bmdDeckLinkConfigVideoOutputConnection             = /* 'vocn' */ 0x766F636E,\r
-    bmdDeckLinkConfigVideoOutputConversionMode         = /* 'vocm' */ 0x766F636D,\r
-    bmdDeckLinkConfigAnalogVideoOutputFlags            = /* 'avof' */ 0x61766F66,\r
-    bmdDeckLinkConfigReferenceInputTimingOffset        = /* 'glot' */ 0x676C6F74,\r
-    bmdDeckLinkConfigVideoOutputIdleOperation          = /* 'voio' */ 0x766F696F,\r
-\r
-    /* Video Output Floats */\r
-\r
-    bmdDeckLinkConfigVideoOutputComponentLumaGain      = /* 'oclg' */ 0x6F636C67,\r
-    bmdDeckLinkConfigVideoOutputComponentChromaBlueGain = /* 'occb' */ 0x6F636362,\r
-    bmdDeckLinkConfigVideoOutputComponentChromaRedGain = /* 'occr' */ 0x6F636372,\r
-    bmdDeckLinkConfigVideoOutputCompositeLumaGain      = /* 'oilg' */ 0x6F696C67,\r
-    bmdDeckLinkConfigVideoOutputCompositeChromaGain    = /* 'oicg' */ 0x6F696367,\r
-    bmdDeckLinkConfigVideoOutputSVideoLumaGain         = /* 'oslg' */ 0x6F736C67,\r
-    bmdDeckLinkConfigVideoOutputSVideoChromaGain       = /* 'oscg' */ 0x6F736367,\r
-\r
-    /* Video Input Integers */\r
-\r
-    bmdDeckLinkConfigVideoInputConnection              = /* 'vicn' */ 0x7669636E,\r
-    bmdDeckLinkConfigAnalogVideoInputFlags             = /* 'avif' */ 0x61766966,\r
-    bmdDeckLinkConfigVideoInputConversionMode          = /* 'vicm' */ 0x7669636D,\r
-    bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame = /* 'pdif' */ 0x70646966,\r
-    bmdDeckLinkConfigVANCSourceLine1Mapping            = /* 'vsl1' */ 0x76736C31,\r
-    bmdDeckLinkConfigVANCSourceLine2Mapping            = /* 'vsl2' */ 0x76736C32,\r
-    bmdDeckLinkConfigVANCSourceLine3Mapping            = /* 'vsl3' */ 0x76736C33,\r
-\r
-    /* Video Input Floats */\r
-\r
-    bmdDeckLinkConfigVideoInputComponentLumaGain       = /* 'iclg' */ 0x69636C67,\r
-    bmdDeckLinkConfigVideoInputComponentChromaBlueGain = /* 'iccb' */ 0x69636362,\r
-    bmdDeckLinkConfigVideoInputComponentChromaRedGain  = /* 'iccr' */ 0x69636372,\r
-    bmdDeckLinkConfigVideoInputCompositeLumaGain       = /* 'iilg' */ 0x69696C67,\r
-    bmdDeckLinkConfigVideoInputCompositeChromaGain     = /* 'iicg' */ 0x69696367,\r
-    bmdDeckLinkConfigVideoInputSVideoLumaGain          = /* 'islg' */ 0x69736C67,\r
-    bmdDeckLinkConfigVideoInputSVideoChromaGain        = /* 'iscg' */ 0x69736367,\r
-\r
-    /* Audio Input Integers */\r
-\r
-    bmdDeckLinkConfigAudioInputConnection              = /* 'aicn' */ 0x6169636E,\r
-\r
-    /* Audio Input Floats */\r
-\r
-    bmdDeckLinkConfigAnalogAudioInputScaleChannel1     = /* 'ais1' */ 0x61697331,\r
-    bmdDeckLinkConfigAnalogAudioInputScaleChannel2     = /* 'ais2' */ 0x61697332,\r
-    bmdDeckLinkConfigAnalogAudioInputScaleChannel3     = /* 'ais3' */ 0x61697333,\r
-    bmdDeckLinkConfigAnalogAudioInputScaleChannel4     = /* 'ais4' */ 0x61697334,\r
-    bmdDeckLinkConfigDigitalAudioInputScale            = /* 'dais' */ 0x64616973,\r
-\r
-    /* Audio Output Integers */\r
-\r
-    bmdDeckLinkConfigAudioOutputAESAnalogSwitch        = /* 'aoaa' */ 0x616F6161,\r
-\r
-    /* Audio Output Floats */\r
-\r
-    bmdDeckLinkConfigAnalogAudioOutputScaleChannel1    = /* 'aos1' */ 0x616F7331,\r
-    bmdDeckLinkConfigAnalogAudioOutputScaleChannel2    = /* 'aos2' */ 0x616F7332,\r
-    bmdDeckLinkConfigAnalogAudioOutputScaleChannel3    = /* 'aos3' */ 0x616F7333,\r
-    bmdDeckLinkConfigAnalogAudioOutputScaleChannel4    = /* 'aos4' */ 0x616F7334,\r
-    bmdDeckLinkConfigDigitalAudioOutputScale           = /* 'daos' */ 0x64616F73\r
-} BMDDeckLinkConfigurationID;\r
-\r
-\r
-/* Enum BMDDeckLinkAttributeID - DeckLink Attribute ID */\r
-\r
-typedef [v1_enum] enum _BMDDeckLinkAttributeID {\r
-\r
-    /* Flags */\r
-\r
-    BMDDeckLinkSupportsInternalKeying                  = /* 'keyi' */ 0x6B657969,\r
-    BMDDeckLinkSupportsExternalKeying                  = /* 'keye' */ 0x6B657965,\r
-    BMDDeckLinkSupportsHDKeying                        = /* 'keyh' */ 0x6B657968,\r
-    BMDDeckLinkSupportsInputFormatDetection            = /* 'infd' */ 0x696E6664,\r
-    BMDDeckLinkHasReferenceInput                       = /* 'hrin' */ 0x6872696E,\r
-    BMDDeckLinkHasSerialPort                           = /* 'hspt' */ 0x68737074,\r
-    BMDDeckLinkHasAnalogVideoOutputGain                = /* 'avog' */ 0x61766F67,\r
-    BMDDeckLinkCanOnlyAdjustOverallVideoOutputGain     = /* 'ovog' */ 0x6F766F67,\r
-    BMDDeckLinkHasVideoInputAntiAliasingFilter         = /* 'aafl' */ 0x6161666C,\r
-    BMDDeckLinkHasBypass                               = /* 'byps' */ 0x62797073,\r
-\r
-    /* Integers */\r
-\r
-    BMDDeckLinkMaximumAudioChannels                    = /* 'mach' */ 0x6D616368,\r
-    BMDDeckLinkNumberOfSubDevices                      = /* 'nsbd' */ 0x6E736264,\r
-    BMDDeckLinkSubDeviceIndex                          = /* 'subi' */ 0x73756269,\r
-    BMDDeckLinkVideoOutputConnections                  = /* 'vocn' */ 0x766F636E,\r
-    BMDDeckLinkVideoInputConnections                   = /* 'vicn' */ 0x7669636E,\r
-\r
-    /* Floats */\r
-\r
-    BMDDeckLinkVideoInputGainMinimum                   = /* 'vigm' */ 0x7669676D,\r
-    BMDDeckLinkVideoInputGainMaximum                   = /* 'vigx' */ 0x76696778,\r
-    BMDDeckLinkVideoOutputGainMinimum                  = /* 'vogm' */ 0x766F676D,\r
-    BMDDeckLinkVideoOutputGainMaximum                  = /* 'vogx' */ 0x766F6778,\r
-\r
-    /* Strings */\r
-\r
-    BMDDeckLinkSerialPortDeviceName                    = /* 'slpn' */ 0x736C706E\r
-} BMDDeckLinkAttributeID;\r
-\r
-\r
-/* Enum BMDDeckLinkAPIInformationID - DeckLinkAPI information ID */\r
-\r
-typedef [v1_enum] enum _BMDDeckLinkAPIInformationID {\r
-    BMDDeckLinkAPIVersion                              = /* 'vers' */ 0x76657273\r
-} BMDDeckLinkAPIInformationID;\r
-\r
-\r
-/* Enum BMDDeckControlMode - DeckControl mode */\r
-\r
-typedef [v1_enum] enum _BMDDeckControlMode {\r
-    bmdDeckControlNotOpened                            = /* 'ntop' */ 0x6E746F70,\r
-    bmdDeckControlVTRControlMode                       = /* 'vtrc' */ 0x76747263,\r
-    bmdDeckControlExportMode                           = /* 'expm' */ 0x6578706D,\r
-    bmdDeckControlCaptureMode                          = /* 'capm' */ 0x6361706D\r
-} BMDDeckControlMode;\r
-\r
-\r
-/* Enum BMDDeckControlEvent - DeckControl event */\r
-\r
-typedef [v1_enum] enum _BMDDeckControlEvent {\r
-    bmdDeckControlAbortedEvent                         = /* 'abte' */ 0x61627465,      // This event is triggered when a capture or edit-to-tape operation is aborted.\r
-\r
-    /* Export-To-Tape events */\r
-\r
-    bmdDeckControlPrepareForExportEvent                = /* 'pfee' */ 0x70666565,      // This event is triggered a few frames before reaching the in-point. IDeckLinkInput::StartScheduledPlayback() should be called at this point.\r
-    bmdDeckControlExportCompleteEvent                  = /* 'exce' */ 0x65786365,      // This event is triggered a few frames after reaching the out-point. At this point, it is safe to stop playback.\r
-\r
-    /* Capture events */\r
-\r
-    bmdDeckControlPrepareForCaptureEvent               = /* 'pfce' */ 0x70666365,      // This event is triggered a few frames before reaching the in-point. The serial timecode attached to IDeckLinkVideoInputFrames is now valid.\r
-    bmdDeckControlCaptureCompleteEvent                 = /* 'ccev' */ 0x63636576       // This event is triggered a few frames after reaching the out-point.\r
-} BMDDeckControlEvent;\r
-\r
-\r
-/* Enum BMDDeckControlVTRControlState - VTR Control state */\r
-\r
-typedef [v1_enum] enum _BMDDeckControlVTRControlState {\r
-    bmdDeckControlNotInVTRControlMode                  = /* 'nvcm' */ 0x6E76636D,\r
-    bmdDeckControlVTRControlPlaying                    = /* 'vtrp' */ 0x76747270,\r
-    bmdDeckControlVTRControlRecording                  = /* 'vtrr' */ 0x76747272,\r
-    bmdDeckControlVTRControlStill                      = /* 'vtra' */ 0x76747261,\r
-    bmdDeckControlVTRControlSeeking                    = /* 'vtrs' */ 0x76747273,\r
-    bmdDeckControlVTRControlStopped                    = /* 'vtro' */ 0x7674726F\r
-} BMDDeckControlVTRControlState;\r
-\r
-\r
-/* Enum BMDDeckControlStatusFlags - Deck Control status flags */\r
-\r
-[v1_enum] enum _BMDDeckControlStatusFlags {\r
-    bmdDeckControlStatusDeckConnected                  = 1 << 0,\r
-    bmdDeckControlStatusRemoteMode                     = 1 << 1,\r
-    bmdDeckControlStatusRecordInhibited                = 1 << 2,\r
-    bmdDeckControlStatusCassetteOut                    = 1 << 3\r
-};\r
-\r
-\r
-/* Enum BMDDeckControlExportModeOpsFlags - Export mode flags */\r
-\r
-[v1_enum] enum _BMDDeckControlExportModeOpsFlags {\r
-    bmdDeckControlExportModeInsertVideo                = 1 << 0,\r
-    bmdDeckControlExportModeInsertAudio1               = 1 << 1,\r
-    bmdDeckControlExportModeInsertAudio2               = 1 << 2,\r
-    bmdDeckControlExportModeInsertAudio3               = 1 << 3,\r
-    bmdDeckControlExportModeInsertAudio4               = 1 << 4,\r
-    bmdDeckControlExportModeInsertAudio5               = 1 << 5,\r
-    bmdDeckControlExportModeInsertAudio6               = 1 << 6,\r
-    bmdDeckControlExportModeInsertAudio7               = 1 << 7,\r
-    bmdDeckControlExportModeInsertAudio8               = 1 << 8,\r
-    bmdDeckControlExportModeInsertAudio9               = 1 << 9,\r
-    bmdDeckControlExportModeInsertAudio10              = 1 << 10,\r
-    bmdDeckControlExportModeInsertAudio11              = 1 << 11,\r
-    bmdDeckControlExportModeInsertAudio12              = 1 << 12,\r
-    bmdDeckControlExportModeInsertTimeCode             = 1 << 13,\r
-    bmdDeckControlExportModeInsertAssemble             = 1 << 14,\r
-    bmdDeckControlExportModeInsertPreview              = 1 << 15,\r
-    bmdDeckControlUseManualExport                      = 1 << 16\r
-};\r
-\r
-\r
-/* Enum BMDDeckControlError - Deck Control error */\r
-\r
-typedef [v1_enum] enum _BMDDeckControlError {\r
-    bmdDeckControlNoError                              = /* 'noer' */ 0x6E6F6572,\r
-    bmdDeckControlModeError                            = /* 'moer' */ 0x6D6F6572,\r
-    bmdDeckControlMissedInPointError                   = /* 'mier' */ 0x6D696572,\r
-    bmdDeckControlDeckTimeoutError                     = /* 'dter' */ 0x64746572,\r
-    bmdDeckControlCommandFailedError                   = /* 'cfer' */ 0x63666572,\r
-    bmdDeckControlDeviceAlreadyOpenedError             = /* 'dalo' */ 0x64616C6F,\r
-    bmdDeckControlFailedToOpenDeviceError              = /* 'fder' */ 0x66646572,\r
-    bmdDeckControlInLocalModeError                     = /* 'lmer' */ 0x6C6D6572,\r
-    bmdDeckControlEndOfTapeError                       = /* 'eter' */ 0x65746572,\r
-    bmdDeckControlUserAbortError                       = /* 'uaer' */ 0x75616572,\r
-    bmdDeckControlNoTapeInDeckError                    = /* 'nter' */ 0x6E746572,\r
-    bmdDeckControlNoVideoFromCardError                 = /* 'nvfc' */ 0x6E766663,\r
-    bmdDeckControlNoCommunicationError                 = /* 'ncom' */ 0x6E636F6D,\r
-    bmdDeckControlBufferTooSmallError                  = /* 'btsm' */ 0x6274736D,\r
-    bmdDeckControlBadChecksumError                     = /* 'chks' */ 0x63686B73,\r
-    bmdDeckControlUnknownError                         = /* 'uner' */ 0x756E6572\r
-} BMDDeckControlError;\r
-\r
-\r
-/* Enum BMD3DPreviewFormat - Linked Frame preview format */\r
-\r
-typedef [v1_enum] enum _BMD3DPreviewFormat {\r
-    bmd3DPreviewFormatDefault                          = /* 'defa' */ 0x64656661,\r
-    bmd3DPreviewFormatLeftOnly                         = /* 'left' */ 0x6C656674,\r
-    bmd3DPreviewFormatRightOnly                        = /* 'righ' */ 0x72696768,\r
-    bmd3DPreviewFormatSideBySide                       = /* 'side' */ 0x73696465,\r
-    bmd3DPreviewFormatTopBottom                        = /* 'topb' */ 0x746F7062\r
-} BMD3DPreviewFormat;\r
-\r
-\r
-// Forward Declarations\r
-\r
-interface IDeckLinkVideoOutputCallback;\r
-interface IDeckLinkInputCallback;\r
-interface IDeckLinkMemoryAllocator;\r
-interface IDeckLinkAudioOutputCallback;\r
-interface IDeckLinkIterator;\r
-interface IDeckLinkAPIInformation;\r
-interface IDeckLinkDisplayModeIterator;\r
-interface IDeckLinkDisplayMode;\r
-interface IDeckLink;\r
-interface IDeckLinkOutput;\r
-interface IDeckLinkInput;\r
-interface IDeckLinkTimecode;\r
-interface IDeckLinkVideoFrame;\r
-interface IDeckLinkMutableVideoFrame;\r
-interface IDeckLinkVideoFrame3DExtensions;\r
-interface IDeckLinkVideoInputFrame;\r
-interface IDeckLinkVideoFrameAncillary;\r
-interface IDeckLinkAudioInputPacket;\r
-interface IDeckLinkScreenPreviewCallback;\r
-interface IDeckLinkGLScreenPreviewHelper;\r
-interface IDeckLinkConfiguration;\r
-interface IDeckLinkAttributes;\r
-interface IDeckLinkKeyer;\r
-interface IDeckLinkVideoConversion;\r
-interface IDeckLinkDeckControlStatusCallback;\r
-interface IDeckLinkDeckControl;\r
-\r
-\r
-/* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */\r
-\r
-[\r
-    object,\r
-    uuid(20AA5225-1958-47CB-820B-80A8D521A6EE),\r
-    helpstring("Frame completion callback.")\r
-] interface IDeckLinkVideoOutputCallback : IUnknown\r
-{\r
-    HRESULT ScheduledFrameCompleted([in] IDeckLinkVideoFrame *completedFrame, [in] BMDOutputFrameCompletionResult result);\r
-    HRESULT ScheduledPlaybackHasStopped(void);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkInputCallback - Frame arrival callback. */\r
-\r
-[\r
-    object,\r
-    uuid(DD04E5EC-7415-42AB-AE4A-E80C4DFC044A),\r
-    helpstring("Frame arrival callback.")\r
-] interface IDeckLinkInputCallback : IUnknown\r
-{\r
-    HRESULT VideoInputFormatChanged([in] BMDVideoInputFormatChangedEvents notificationEvents, [in] IDeckLinkDisplayMode *newDisplayMode, [in] BMDDetectedVideoInputFormatFlags detectedSignalFlags);\r
-    HRESULT VideoInputFrameArrived([in] IDeckLinkVideoInputFrame* videoFrame, [in] IDeckLinkAudioInputPacket* audioPacket);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */\r
-\r
-[\r
-    object,\r
-    uuid(B36EB6E7-9D29-4AA8-92EF-843B87A289E8),\r
-    local, \r
-    helpstring("Memory allocator for video frames.")\r
-] interface IDeckLinkMemoryAllocator : IUnknown\r
-{\r
-    HRESULT AllocateBuffer([in] unsigned long bufferSize, [out] void **allocatedBuffer);\r
-    HRESULT ReleaseBuffer([in] void *buffer);\r
-\r
-    HRESULT Commit(void);\r
-    HRESULT Decommit(void);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkAudioOutputCallback - Optional callback to allow audio samples to be pulled as required. */\r
-\r
-[\r
-    object,\r
-    uuid(403C681B-7F46-4A12-B993-2BB127084EE6),\r
-    local, \r
-    helpstring("Optional callback to allow audio samples to be pulled as required.")\r
-] interface IDeckLinkAudioOutputCallback : IUnknown\r
-{\r
-    HRESULT RenderAudioSamples([in] BOOL preroll);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkIterator - enumerates installed DeckLink hardware */\r
-\r
-[\r
-    object,\r
-    uuid(74E936FC-CC28-4A67-81A0-1E94E52D4E69),\r
-    helpstring("enumerates installed DeckLink hardware")\r
-] interface IDeckLinkIterator : IUnknown\r
-{\r
-    HRESULT Next([out] IDeckLink **deckLinkInstance);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkAPIInformation - DeckLinkAPI attribute interface */\r
-\r
-[\r
-    object,\r
-    uuid(7BEA3C68-730D-4322-AF34-8A7152B532A4),\r
-    helpstring("DeckLinkAPI attribute interface")\r
-] interface IDeckLinkAPIInformation : IUnknown\r
-{\r
-    HRESULT GetFlag([in] BMDDeckLinkAPIInformationID cfgID, [out] BOOL *value);\r
-    HRESULT GetInt([in] BMDDeckLinkAPIInformationID cfgID, [out] LONGLONG *value);\r
-    HRESULT GetFloat([in] BMDDeckLinkAPIInformationID cfgID, [out] double *value);\r
-    HRESULT GetString([in] BMDDeckLinkAPIInformationID cfgID, [out] BSTR *value);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */\r
-\r
-[\r
-    object,\r
-    uuid(9C88499F-F601-4021-B80B-032E4EB41C35),\r
-    helpstring("enumerates over supported input/output display modes.")\r
-] interface IDeckLinkDisplayModeIterator : IUnknown\r
-{\r
-    HRESULT Next([out] IDeckLinkDisplayMode **deckLinkDisplayMode);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkDisplayMode - represents a display mode */\r
-\r
-[\r
-    object,\r
-    uuid(3EB2C1AB-0A3D-4523-A3AD-F40D7FB14E78),\r
-    helpstring("represents a display mode")\r
-] interface IDeckLinkDisplayMode : IUnknown\r
-{\r
-    HRESULT GetName([out] BSTR *name);\r
-    BMDDisplayMode GetDisplayMode(void);\r
-    long GetWidth(void);\r
-    long GetHeight(void);\r
-    HRESULT GetFrameRate([out] BMDTimeValue *frameDuration, [out] BMDTimeScale *timeScale);\r
-    BMDFieldDominance GetFieldDominance(void);\r
-    BMDDisplayModeFlags GetFlags(void);\r
-};\r
-\r
-\r
-/* Interface IDeckLink - represents a DeckLink device */\r
-\r
-[\r
-    object,\r
-    uuid(62BFF75D-6569-4E55-8D4D-66AA03829ABC),\r
-    helpstring("represents a DeckLink device")\r
-] interface IDeckLink : IUnknown\r
-{\r
-    HRESULT GetModelName([out] BSTR *modelName);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */\r
-\r
-[\r
-    object,\r
-    uuid(A3EF0963-0862-44ED-92A9-EE89ABF431C7),\r
-    local, \r
-    helpstring("Created by QueryInterface from IDeckLink.")\r
-] interface IDeckLinkOutput : IUnknown\r
-{\r
-    HRESULT DoesSupportVideoMode([in] BMDDisplayMode displayMode, [in] BMDPixelFormat pixelFormat, [in] BMDVideoOutputFlags flags, [out] BMDDisplayModeSupport *result, [out] IDeckLinkDisplayMode **resultDisplayMode);\r
-    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator **iterator);\r
-\r
-    HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback);\r
-\r
-    /* Video Output */\r
-\r
-    HRESULT EnableVideoOutput([in] BMDDisplayMode displayMode, [in] BMDVideoOutputFlags flags);\r
-    HRESULT DisableVideoOutput(void);\r
-\r
-    HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);\r
-    HRESULT CreateVideoFrame([in] long width, [in] long height, [in] long rowBytes, [in] BMDPixelFormat pixelFormat, [in] BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame **outFrame);\r
-    HRESULT CreateAncillaryData([in] BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);\r
-\r
-    HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame *theFrame);\r
-    HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, [in] BMDTimeValue displayTime, [in] BMDTimeValue displayDuration, [in] BMDTimeScale timeScale);\r
-    HRESULT SetScheduledFrameCompletionCallback([in] IDeckLinkVideoOutputCallback *theCallback);\r
-    HRESULT GetBufferedVideoFrameCount([out] unsigned long *bufferedFrameCount);\r
-\r
-    /* Audio Output */\r
-\r
-    HRESULT EnableAudioOutput([in] BMDAudioSampleRate sampleRate, [in] BMDAudioSampleType sampleType, [in] unsigned long channelCount, [in] BMDAudioOutputStreamType streamType);\r
-    HRESULT DisableAudioOutput(void);\r
-\r
-    HRESULT WriteAudioSamplesSync([in] void *buffer, [in] unsigned long sampleFrameCount, [out] unsigned long *sampleFramesWritten);\r
-\r
-    HRESULT BeginAudioPreroll(void);\r
-    HRESULT EndAudioPreroll(void);\r
-    HRESULT ScheduleAudioSamples([in] void *buffer, [in] unsigned long sampleFrameCount, [in] BMDTimeValue streamTime, [in] BMDTimeScale timeScale, [out] unsigned long *sampleFramesWritten);\r
-\r
-    HRESULT GetBufferedAudioSampleFrameCount([out] unsigned long *bufferedSampleFrameCount);\r
-    HRESULT FlushBufferedAudioSamples(void);\r
-\r
-    HRESULT SetAudioCallback([in] IDeckLinkAudioOutputCallback *theCallback);\r
-\r
-    /* Output Control */\r
-\r
-    HRESULT StartScheduledPlayback([in] BMDTimeValue playbackStartTime, [in] BMDTimeScale timeScale, [in] double playbackSpeed);\r
-    HRESULT StopScheduledPlayback([in] BMDTimeValue stopPlaybackAtTime, [out] BMDTimeValue *actualStopTime, [in] BMDTimeScale timeScale);\r
-    HRESULT IsScheduledPlaybackRunning([out] BOOL *active);\r
-    HRESULT GetScheduledStreamTime([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *streamTime, [out] double *playbackSpeed);\r
-    HRESULT GetReferenceStatus([out] BMDReferenceStatus *referenceStatus);\r
-\r
-    /* Hardware Timing */\r
-\r
-    HRESULT GetHardwareReferenceClock([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */\r
-\r
-[\r
-    object,\r
-    uuid(6D40EF78-28B9-4E21-990D-95BB7750A04F),\r
-    helpstring("Created by QueryInterface from IDeckLink.")\r
-] interface IDeckLinkInput : IUnknown\r
-{\r
-    HRESULT DoesSupportVideoMode([in] BMDDisplayMode displayMode, [in] BMDPixelFormat pixelFormat, [in] BMDVideoInputFlags flags, [out] BMDDisplayModeSupport *result, [out] IDeckLinkDisplayMode **resultDisplayMode);\r
-    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator **iterator);\r
-\r
-    HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback);\r
-\r
-    /* Video Input */\r
-\r
-    HRESULT EnableVideoInput([in] BMDDisplayMode displayMode, [in] BMDPixelFormat pixelFormat, [in] BMDVideoInputFlags flags);\r
-    HRESULT DisableVideoInput(void);\r
-    HRESULT GetAvailableVideoFrameCount([out] unsigned long *availableFrameCount);\r
-\r
-    /* Audio Input */\r
-\r
-    HRESULT EnableAudioInput([in] BMDAudioSampleRate sampleRate, [in] BMDAudioSampleType sampleType, [in] unsigned long channelCount);\r
-    HRESULT DisableAudioInput(void);\r
-    HRESULT GetAvailableAudioSampleFrameCount([out] unsigned long *availableSampleFrameCount);\r
-\r
-    /* Input Control */\r
-\r
-    HRESULT StartStreams(void);\r
-    HRESULT StopStreams(void);\r
-    HRESULT PauseStreams(void);\r
-    HRESULT FlushStreams(void);\r
-    HRESULT SetCallback([in] IDeckLinkInputCallback *theCallback);\r
-\r
-    /* Hardware Timing */\r
-\r
-    HRESULT GetHardwareReferenceClock([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkTimecode - Used for video frame timecode representation. */\r
-\r
-[\r
-    object,\r
-    uuid(BC6CFBD3-8317-4325-AC1C-1216391E9340),\r
-    helpstring("Used for video frame timecode representation.")\r
-] interface IDeckLinkTimecode : IUnknown\r
-{\r
-    BMDTimecodeBCD GetBCD(void);\r
-    HRESULT GetComponents([out] unsigned char *hours, [out] unsigned char *minutes, [out] unsigned char *seconds, [out] unsigned char *frames);\r
-    HRESULT GetString([out] BSTR *timecode);\r
-    BMDTimecodeFlags GetFlags(void);\r
-    HRESULT GetTimecodeUserBits([out] BMDTimecodeUserBits *userBits);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */\r
-\r
-[\r
-    object,\r
-    uuid(3F716FE0-F023-4111-BE5D-EF4414C05B17),\r
-    local, \r
-    helpstring("Interface to encapsulate a video frame; can be caller-implemented.")\r
-] interface IDeckLinkVideoFrame : IUnknown\r
-{\r
-    long GetWidth(void);\r
-    long GetHeight(void);\r
-    long GetRowBytes(void);\r
-    BMDPixelFormat GetPixelFormat(void);\r
-    BMDFrameFlags GetFlags(void);\r
-    HRESULT GetBytes([out] void **buffer);\r
-\r
-    HRESULT GetTimecode([in] BMDTimecodeFormat format, [out] IDeckLinkTimecode **timecode);\r
-    HRESULT GetAncillaryData([out] IDeckLinkVideoFrameAncillary **ancillary);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */\r
-\r
-[\r
-    object,\r
-    uuid(69E2639F-40DA-4E19-B6F2-20ACE815C390),\r
-    local, \r
-    helpstring("Created by IDeckLinkOutput::CreateVideoFrame.")\r
-] interface IDeckLinkMutableVideoFrame : IDeckLinkVideoFrame\r
-{\r
-    HRESULT SetFlags([in] BMDFrameFlags newFlags);\r
-\r
-    HRESULT SetTimecode([in] BMDTimecodeFormat format, [in] IDeckLinkTimecode *timecode);\r
-    HRESULT SetTimecodeFromComponents([in] BMDTimecodeFormat format, [in] unsigned char hours, [in] unsigned char minutes, [in] unsigned char seconds, [in] unsigned char frames, [in] BMDTimecodeFlags flags);\r
-    HRESULT SetAncillaryData([in] IDeckLinkVideoFrameAncillary *ancillary);\r
-    HRESULT SetTimecodeUserBits([in] BMDTimecodeFormat format, [in] BMDTimecodeUserBits userBits);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */\r
-\r
-[\r
-    object,\r
-    uuid(DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7),\r
-    local, \r
-    helpstring("Optional interface implemented on IDeckLinkVideoFrame to support 3D frames")\r
-] interface IDeckLinkVideoFrame3DExtensions : IUnknown\r
-{\r
-    BMDVideo3DPackingFormat Get3DPackingFormat(void);\r
-    HRESULT GetFrameForRightEye([out] IDeckLinkVideoFrame* *rightEyeFrame);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */\r
-\r
-[\r
-    object,\r
-    uuid(05CFE374-537C-4094-9A57-680525118F44),\r
-    local, \r
-    helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")\r
-] interface IDeckLinkVideoInputFrame : IDeckLinkVideoFrame\r
-{\r
-    HRESULT GetStreamTime([out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration, [in] BMDTimeScale timeScale);\r
-    HRESULT GetHardwareReferenceTimestamp([in] BMDTimeScale timeScale, [out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkVideoFrameAncillary - Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */\r
-\r
-[\r
-    object,\r
-    uuid(732E723C-D1A4-4E29-9E8E-4A88797A0004),\r
-    local, \r
-    helpstring("Obtained through QueryInterface() on an IDeckLinkVideoFrame object.")\r
-] interface IDeckLinkVideoFrameAncillary : IUnknown\r
-{\r
-\r
-    HRESULT GetBufferForVerticalBlankingLine([in] unsigned long lineNumber, [out] void **buffer);\r
-    BMDPixelFormat GetPixelFormat(void);\r
-    BMDDisplayMode GetDisplayMode(void);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */\r
-\r
-[\r
-    object,\r
-    uuid(E43D5870-2894-11DE-8C30-0800200C9A66),\r
-    local, \r
-    helpstring("Provided by the IDeckLinkInput callback.")\r
-] interface IDeckLinkAudioInputPacket : IUnknown\r
-{\r
-    long GetSampleFrameCount(void);\r
-    HRESULT GetBytes([out] void **buffer);\r
-    HRESULT GetPacketTime([out] BMDTimeValue *packetTime, [in] BMDTimeScale timeScale);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */\r
-\r
-[\r
-    object,\r
-    uuid(B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438),\r
-    local, \r
-    helpstring("Screen preview callback")\r
-] interface IDeckLinkScreenPreviewCallback : IUnknown\r
-{\r
-    HRESULT DrawFrame([in] IDeckLinkVideoFrame *theFrame);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */\r
-\r
-[\r
-    object,\r
-    uuid(504E2209-CAC7-4C1A-9FB4-C5BB6274D22F),\r
-    local, \r
-    helpstring("Created with CoCreateInstance().")\r
-] interface IDeckLinkGLScreenPreviewHelper : IUnknown\r
-{\r
-\r
-    /* Methods must be called with OpenGL context set */\r
-\r
-    HRESULT InitializeGL(void);\r
-    HRESULT PaintGL(void);\r
-    HRESULT SetFrame([in] IDeckLinkVideoFrame *theFrame);\r
-    HRESULT Set3DPreviewFormat([in] BMD3DPreviewFormat previewFormat);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkConfiguration - DeckLink Configuration interface */\r
-\r
-[\r
-    object,\r
-    uuid(C679A35B-610C-4D09-B748-1D0478100FC0),\r
-    local, \r
-    helpstring("DeckLink Configuration interface")\r
-] interface IDeckLinkConfiguration : IUnknown\r
-{\r
-    HRESULT SetFlag([in] BMDDeckLinkConfigurationID cfgID, [in] BOOL value);\r
-    HRESULT GetFlag([in] BMDDeckLinkConfigurationID cfgID, [out] BOOL *value);\r
-    HRESULT SetInt([in] BMDDeckLinkConfigurationID cfgID, [in] LONGLONG value);\r
-    HRESULT GetInt([in] BMDDeckLinkConfigurationID cfgID, [out] LONGLONG *value);\r
-    HRESULT SetFloat([in] BMDDeckLinkConfigurationID cfgID, [in] double value);\r
-    HRESULT GetFloat([in] BMDDeckLinkConfigurationID cfgID, [out] double *value);\r
-    HRESULT SetString([in] BMDDeckLinkConfigurationID cfgID, [in] BSTR value);\r
-    HRESULT GetString([in] BMDDeckLinkConfigurationID cfgID, [out] BSTR *value);\r
-    HRESULT WriteConfigurationToPreferences(void);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkAttributes - DeckLink Attribute interface */\r
-\r
-[\r
-    object,\r
-    uuid(ABC11843-D966-44CB-96E2-A1CB5D3135C4),\r
-    local, \r
-    helpstring("DeckLink Attribute interface")\r
-] interface IDeckLinkAttributes : IUnknown\r
-{\r
-    HRESULT GetFlag([in] BMDDeckLinkAttributeID cfgID, [out] BOOL *value);\r
-    HRESULT GetInt([in] BMDDeckLinkAttributeID cfgID, [out] LONGLONG *value);\r
-    HRESULT GetFloat([in] BMDDeckLinkAttributeID cfgID, [out] double *value);\r
-    HRESULT GetString([in] BMDDeckLinkAttributeID cfgID, [out] BSTR *value);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkKeyer - DeckLink Keyer interface */\r
-\r
-[\r
-    object,\r
-    uuid(89AFCAF5-65F8-421E-98F7-96FE5F5BFBA3),\r
-    local, \r
-    helpstring("DeckLink Keyer interface")\r
-] interface IDeckLinkKeyer : IUnknown\r
-{\r
-    HRESULT Enable([in] BOOL isExternal);\r
-    HRESULT SetLevel([in] unsigned char level);\r
-    HRESULT RampUp([in] unsigned long numberOfFrames);\r
-    HRESULT RampDown([in] unsigned long numberOfFrames);\r
-    HRESULT Disable(void);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */\r
-\r
-[\r
-    object,\r
-    uuid(3BBCB8A2-DA2C-42D9-B5D8-88083644E99A),\r
-    local, \r
-    helpstring("Created with CoCreateInstance().")\r
-] interface IDeckLinkVideoConversion : IUnknown\r
-{\r
-    HRESULT ConvertFrame([in] IDeckLinkVideoFrame* srcFrame, [in] IDeckLinkVideoFrame* dstFrame);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkDeckControlStatusCallback - Deck control state change callback. */\r
-\r
-[\r
-    object,\r
-    uuid(E5F693C1-4283-4716-B18F-C1431521955B),\r
-    helpstring("Deck control state change callback.")\r
-] interface IDeckLinkDeckControlStatusCallback : IUnknown\r
-{\r
-    HRESULT TimecodeUpdate([in] BMDTimecodeBCD currentTimecode);\r
-    HRESULT VTRControlStateChanged([in] BMDDeckControlVTRControlState newState, [in] BMDDeckControlError error);\r
-    HRESULT DeckControlEventReceived([in] BMDDeckControlEvent event, [in] BMDDeckControlError error);\r
-    HRESULT DeckControlStatusChanged([in] BMDDeckControlStatusFlags flags, [in] unsigned long mask);\r
-};\r
-\r
-\r
-/* Interface IDeckLinkDeckControl - Deck Control main interface */\r
-\r
-[\r
-    object,\r
-    uuid(522A9E39-0F3C-4742-94EE-D80DE335DA1D),\r
-    helpstring("Deck Control main interface")\r
-] interface IDeckLinkDeckControl : IUnknown\r
-{\r
-    HRESULT Open([in] BMDTimeScale timeScale, [in] BMDTimeValue timeValue, [in] BOOL timecodeIsDropFrame, [out] BMDDeckControlError *error);\r
-    HRESULT Close([in] BOOL standbyOn);\r
-    HRESULT GetCurrentState([out] BMDDeckControlMode *mode, [out] BMDDeckControlVTRControlState *vtrControlState, [out] BMDDeckControlStatusFlags *flags);\r
-    HRESULT SetStandby([in] BOOL standbyOn);\r
-    HRESULT SendCommand([in] unsigned char *inBuffer, [in] unsigned long inBufferSize, [out] unsigned char *outBuffer, [out] unsigned long *outDataSize, [in] unsigned long outBufferSize, [out] BMDDeckControlError *error);\r
-    HRESULT Play([out] BMDDeckControlError *error);\r
-    HRESULT Stop([out] BMDDeckControlError *error);\r
-    HRESULT TogglePlayStop([out] BMDDeckControlError *error);\r
-    HRESULT Eject([out] BMDDeckControlError *error);\r
-    HRESULT GoToTimecode([in] BMDTimecodeBCD timecode, [out] BMDDeckControlError *error);\r
-    HRESULT FastForward([in] BOOL viewTape, [out] BMDDeckControlError *error);\r
-    HRESULT Rewind([in] BOOL viewTape, [out] BMDDeckControlError *error);\r
-    HRESULT StepForward([out] BMDDeckControlError *error);\r
-    HRESULT StepBack([out] BMDDeckControlError *error);\r
-    HRESULT Jog([in] double rate, [out] BMDDeckControlError *error);\r
-    HRESULT Shuttle([in] double rate, [out] BMDDeckControlError *error);\r
-    HRESULT GetTimecodeString([out] BSTR *currentTimeCode, [out] BMDDeckControlError *error);\r
-    HRESULT GetTimecode([out] IDeckLinkTimecode **currentTimecode, [out] BMDDeckControlError *error);\r
-    HRESULT GetTimecodeBCD([out] BMDTimecodeBCD *currentTimecode, [out] BMDDeckControlError *error);\r
-    HRESULT SetPreroll([in] unsigned long prerollSeconds);\r
-    HRESULT GetPreroll([out] unsigned long *prerollSeconds);\r
-    HRESULT SetExportOffset([in] long exportOffsetFields);\r
-    HRESULT GetExportOffset([out] long *exportOffsetFields);\r
-    HRESULT GetManualExportOffset([out] long *deckManualExportOffsetFields);\r
-    HRESULT SetCaptureOffset([in] long captureOffsetFields);\r
-    HRESULT GetCaptureOffset([out] long *captureOffsetFields);\r
-    HRESULT StartExport([in] BMDTimecodeBCD inTimecode, [in] BMDTimecodeBCD outTimecode, [in] BMDDeckControlExportModeOpsFlags exportModeOps, [out] BMDDeckControlError *error);\r
-    HRESULT StartCapture([in] BOOL useVITC, [in] BMDTimecodeBCD inTimecode, [in] BMDTimecodeBCD outTimecode, [out] BMDDeckControlError *error);\r
-    HRESULT GetDeviceID([out] unsigned short *deviceId, [out] BMDDeckControlError *error);\r
-    HRESULT Abort(void);\r
-    HRESULT CrashRecordStart([out] BMDDeckControlError *error);\r
-    HRESULT CrashRecordStop([out] BMDDeckControlError *error);\r
-    HRESULT SetCallback([in] IDeckLinkDeckControlStatusCallback *callback);\r
-};\r
-\r
-\r
-/* Coclasses */\r
-\r
-importlib("stdole2.tlb");\r
-\r
-[\r
-    uuid(D9EDA3B3-2887-41FA-B724-017CF1EB1D37),\r
-    helpstring("CDeckLinkIterator Class")\r
-] coclass CDeckLinkIterator\r
-{\r
-    [default] interface IDeckLinkIterator;\r
-};\r
-\r
-[\r
-    uuid(263CA19F-ED09-482E-9F9D-84005783A237),\r
-    helpstring("CDeckLinkAPIInformation Class")\r
-] coclass CDeckLinkAPIInformation\r
-{\r
-    [default] interface IDeckLinkAPIInformation;\r
-};\r
-\r
-[\r
-    uuid(F63E77C7-B655-4A4A-9AD0-3CA85D394343),\r
-    helpstring("CDeckLinkGLScreenPreviewHelper Class")\r
-] coclass CDeckLinkGLScreenPreviewHelper\r
-{\r
-    [default] interface IDeckLinkGLScreenPreviewHelper;\r
-};\r
-\r
-[\r
-    uuid(7DBBBB11-5B7B-467D-AEA4-CEA468FD368C),\r
-    helpstring("CDeckLinkVideoConversion Class")\r
-] coclass CDeckLinkVideoConversion\r
-{\r
-    [default] interface IDeckLinkVideoConversion;\r
-};\r
-\r
-\r
-// import deprecated interfaces\r
-#include "DeckLinkAPI_v7_9.idl"\r
-#include "DeckLinkAPI_v7_6.idl"\r
-#include "DeckLinkAPI_v7_3.idl"\r
-#include "DeckLinkAPI_v7_1.idl"\r
-};\r
index e79957064061655baa0c3f0693d09086ce9b668e..8c4c3eddf9f81087ff074da9cc1b0d0098f06c89 100644 (file)
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
- * ** Copyright (c) 2011 Blackmagic Design
+ * ** Copyright (c) 2013 Blackmagic Design
  * **
  * ** Permission is hereby granted, free of charge, to any person or organization
  * ** obtaining a copy of the software and accompanying documentation covered by
@@ -30,8 +30,8 @@
 #ifndef __DeckLink_API_Verison_h__
 #define __DeckLink_API_Version_h__
 
-#define BLACKMAGIC_DECKLINK_API_VERSION                                        0x08000000
-#define BLACKMAGIC_DECKLINK_API_VERSION_STRING                 "8.0"
+#define BLACKMAGIC_DECKLINK_API_VERSION                                        0x09070100
+#define BLACKMAGIC_DECKLINK_API_VERSION_STRING                 "9.7.1"
 
 #endif // __DeckLink_API_Version_h__
 
diff --git a/modules/decklink/interop/DeckLinkAPI_v7_1.idl b/modules/decklink/interop/DeckLinkAPI_v7_1.idl
deleted file mode 100644 (file)
index 20d4e5f..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-/* -LICENSE-START-\r
-** Copyright (c) 2009 Blackmagic Design\r
-**\r
-** Permission is hereby granted, free of charge, to any person or organization\r
-** obtaining a copy of the software and accompanying documentation covered by\r
-** this license (the "Software") to use, reproduce, display, distribute,\r
-** execute, and transmit the Software, and to prepare derivative works of the\r
-** Software, and to permit third-parties to whom the Software is furnished to\r
-** do so, all subject to the following:\r
-** \r
-** The copyright notices in the Software and this entire statement, including\r
-** the above license grant, this restriction and the following disclaimer,\r
-** must be included in all copies of the Software, in whole or in part, and\r
-** all derivative works of the Software, unless such copies or derivative\r
-** works are solely in the form of machine-executable object code generated by\r
-** a source language processor.\r
-** \r
-** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\r
-** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\r
-** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT\r
-** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE\r
-** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,\r
-** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER\r
-** DEALINGS IN THE SOFTWARE.\r
-** -LICENSE-END-\r
-*/\r
-/* DeckLinkAPI_v7_1.idl */\r
-\r
-       interface IDeckLinkDisplayModeIterator_v7_1;\r
-       interface IDeckLinkDisplayMode_v7_1;\r
-       interface IDeckLinkVideoFrame_v7_1;\r
-       interface IDeckLinkVideoInputFrame_v7_1;\r
-       interface IDeckLinkAudioInputPacket_v7_1;\r
-       \r
-       [object, uuid(B28131B6-59AC-4857-B5AC-CD75D5883E2F),\r
-        helpstring("IDeckLinkDisplayModeIterator_v7_1 enumerates over supported input/output display modes.")]\r
-       interface IDeckLinkDisplayModeIterator_v7_1 : IUnknown\r
-       {\r
-               HRESULT         Next ([out] IDeckLinkDisplayMode_v7_1** deckLinkDisplayMode);\r
-       };\r
-\r
-\r
-       [object, uuid(AF0CD6D5-8376-435E-8433-54F9DD530AC3),\r
-        helpstring("IDeckLinkDisplayMode_v7_1 represents a display mode")]\r
-       interface IDeckLinkDisplayMode_v7_1 : IUnknown\r
-       {\r
-               HRESULT                         GetName ([out] BSTR* name);\r
-               BMDDisplayMode          GetDisplayMode ();\r
-               long                            GetWidth ();\r
-               long                            GetHeight ();\r
-               HRESULT                         GetFrameRate ([out] BMDTimeValue *frameDuration, [out] BMDTimeScale *timeScale);\r
-       };\r
-       \r
-       [object, uuid(EBD01AFA-E4B0-49C6-A01D-EDB9D1B55FD9),\r
-     helpstring("IDeckLinkVideoOutputCallback. Frame completion callback.")]\r
-    interface IDeckLinkVideoOutputCallback_v7_1 : IUnknown\r
-    {\r
-        HRESULT                ScheduledFrameCompleted ([in] IDeckLinkVideoFrame_v7_1* completedFrame, [in] BMDOutputFrameCompletionResult result);\r
-    };\r
-       \r
-    [object, uuid(7F94F328-5ED4-4E9F-9729-76A86BDC99CC),\r
-     helpstring("IDeckLinkInputCallback_v7_1. Frame arrival callback.")]\r
-    interface IDeckLinkInputCallback_v7_1 : IUnknown\r
-    {\r
-        HRESULT                VideoInputFrameArrived ([in] IDeckLinkVideoInputFrame_v7_1* videoFrame, [in] IDeckLinkAudioInputPacket_v7_1* audioPacket);\r
-    };\r
-       \r
-\r
-    [object, uuid(AE5B3E9B-4E1E-4535-B6E8-480FF52F6CE5), local,\r
-     helpstring("IDeckLinkOutput_v7_1.  Created by QueryInterface from IDeckLink.")]\r
-    interface IDeckLinkOutput_v7_1 : IUnknown\r
-    {\r
-               HRESULT         DoesSupportVideoMode (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);\r
-               HRESULT         GetDisplayModeIterator ([out] IDeckLinkDisplayModeIterator_v7_1 **iterator);\r
-               \r
-               // Video output\r
-        HRESULT                EnableVideoOutput (BMDDisplayMode displayMode);\r
-        HRESULT                DisableVideoOutput ();\r
-               \r
-               HRESULT         SetVideoOutputFrameMemoryAllocator ([in] IDeckLinkMemoryAllocator* theAllocator);\r
-        HRESULT                CreateVideoFrame (long width, long height, long rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, IDeckLinkVideoFrame_v7_1** outFrame);\r
-        HRESULT                CreateVideoFrameFromBuffer (void* buffer, long width, long height, long rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, IDeckLinkVideoFrame_v7_1** outFrame);\r
-\r
-        HRESULT                DisplayVideoFrameSync (IDeckLinkVideoFrame_v7_1* theFrame);\r
-        HRESULT                ScheduleVideoFrame (IDeckLinkVideoFrame_v7_1* theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale);\r
-        HRESULT                SetScheduledFrameCompletionCallback ([in] IDeckLinkVideoOutputCallback_v7_1* theCallback);\r
-               \r
-               // Audio output\r
-               HRESULT         EnableAudioOutput (BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned long channelCount);\r
-               HRESULT         DisableAudioOutput ();\r
-               \r
-               HRESULT         WriteAudioSamplesSync (void* buffer, unsigned long sampleFrameCount, [out] unsigned long *sampleFramesWritten);\r
-               \r
-               HRESULT         BeginAudioPreroll ();\r
-               HRESULT         EndAudioPreroll ();\r
-               HRESULT         ScheduleAudioSamples (void* buffer, unsigned long sampleFrameCount, BMDTimeValue streamTime, BMDTimeScale timeScale, [out] unsigned long *sampleFramesWritten);\r
-               \r
-               HRESULT         GetBufferedAudioSampleFrameCount ( [out] unsigned long *bufferedSampleCount);\r
-               HRESULT         FlushBufferedAudioSamples ();\r
-               \r
-               HRESULT         SetAudioCallback ( [in] IDeckLinkAudioOutputCallback* theCallback);\r
-               \r
-               // Output control\r
-        HRESULT                StartScheduledPlayback (BMDTimeValue playbackStartTime, BMDTimeScale timeScale, double playbackSpeed);\r
-        HRESULT                StopScheduledPlayback (BMDTimeValue stopPlaybackAtTime, BMDTimeValue *actualStopTime, BMDTimeScale timeScale);\r
-        HRESULT                GetHardwareReferenceClock (BMDTimeScale desiredTimeScale, BMDTimeValue *elapsedTimeSinceSchedulerBegan);\r
-    };\r
-\r
-    [object, uuid(2B54EDEF-5B32-429F-BA11-BB990596EACD),\r
-     helpstring("IDeckLinkInput_v7_1.  Created by QueryInterface from IDeckLink.")]\r
-    interface IDeckLinkInput_v7_1 : IUnknown\r
-    {\r
-               HRESULT         DoesSupportVideoMode (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);\r
-               HRESULT         GetDisplayModeIterator ([out] IDeckLinkDisplayModeIterator_v7_1 **iterator);\r
-               \r
-               // Video input\r
-               HRESULT         EnableVideoInput (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDVideoInputFlags flags);\r
-               HRESULT         DisableVideoInput ();\r
-               \r
-               // Audio input\r
-               HRESULT         EnableAudioInput (BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned long channelCount);\r
-               HRESULT         DisableAudioInput ();\r
-               HRESULT         ReadAudioSamples (void* buffer, unsigned long sampleFrameCount, [out] unsigned long *sampleFramesRead, [out] BMDTimeValue *audioPacketTime, BMDTimeScale timeScale);\r
-               HRESULT         GetBufferedAudioSampleFrameCount ( [out] unsigned long *bufferedSampleCount);\r
-               \r
-               // Input control\r
-               HRESULT         StartStreams ();\r
-               HRESULT         StopStreams ();\r
-               HRESULT         PauseStreams ();\r
-               HRESULT         SetCallback ([in] IDeckLinkInputCallback_v7_1* theCallback);\r
-    };\r
-       \r
-       [object, uuid(333F3A10-8C2D-43CF-B79D-46560FEEA1CE), local,\r
-     helpstring("IDeckLinkVideoFrame_v7_1.  Created by IDeckLinkVideoOutput::CreateVideoFrame.")]\r
-    interface IDeckLinkVideoFrame_v7_1 : IUnknown\r
-    {\r
-        long                           GetWidth ();\r
-        long                           GetHeight ();\r
-        long                           GetRowBytes ();\r
-        BMDPixelFormat         GetPixelFormat ();\r
-        BMDFrameFlags          GetFlags ();\r
-        HRESULT                                GetBytes (void* *buffer);\r
-    };\r
-       \r
-       [object, uuid(C8B41D95-8848-40EE-9B37-6E3417FB114B), local,\r
-     helpstring("IDeckLinkVideoInputFrame_v7_1.  Provided by the IDeckLinkVideoInput frame arrival callback.")]\r
-    interface IDeckLinkVideoInputFrame_v7_1 : IDeckLinkVideoFrame_v7_1\r
-    {\r
-        HRESULT                                GetFrameTime (BMDTimeValue *frameTime, BMDTimeValue *frameDuration, BMDTimeScale timeScale);\r
-    };\r
-       \r
-       [object, uuid(C86DE4F6-A29F-42E3-AB3A-1363E29F0788), local,\r
-     helpstring("IDeckLinkAudioInputPacket_v7_1.  Provided by the IDeckLinkInput callback.")]\r
-    interface IDeckLinkAudioInputPacket_v7_1 : IUnknown\r
-    {\r
-               long                            GetSampleCount ();\r
-               HRESULT                         GetBytes (void* *buffer);\r
-               HRESULT                         GetAudioPacketTime (BMDTimeValue *packetTime, BMDTimeScale timeScale);\r
-    };\r
-       \r
diff --git a/modules/decklink/interop/DeckLinkAPI_v7_3.idl b/modules/decklink/interop/DeckLinkAPI_v7_3.idl
deleted file mode 100644 (file)
index da367d6..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-/* -LICENSE-START-
-** Copyright (c) 2009 Blackmagic Design
-**
-** Permission is hereby granted, free of charge, to any person or organization
-** obtaining a copy of the software and accompanying documentation covered by
-** this license (the "Software") to use, reproduce, display, distribute,
-** execute, and transmit the Software, and to prepare derivative works of the
-** Software, and to permit third-parties to whom the Software is furnished to
-** do so, all subject to the following:
-** 
-** The copyright notices in the Software and this entire statement, including
-** the above license grant, this restriction and the following disclaimer,
-** must be included in all copies of the Software, in whole or in part, and
-** all derivative works of the Software, unless such copies or derivative
-** works are solely in the form of machine-executable object code generated by
-** a source language processor.
-** 
-** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-** DEALINGS IN THE SOFTWARE.
-** -LICENSE-END-
-*/
-
-/* Forward Declarations */
-
-interface IDeckLinkInputCallback_v7_3;
-interface IDeckLinkOutput_v7_3;
-interface IDeckLinkInput_v7_3;
-interface IDeckLinkVideoInputFrame_v7_3;
-
-/* End Forward Declarations */
-
-
-/* Interface IDeckLinkInputCallback - Frame arrival callback. */
-
-[
-    object,
-    uuid(FD6F311D-4D00-444B-9ED4-1F25B5730AD0),
-    helpstring("Frame arrival callback.")
-] interface IDeckLinkInputCallback_v7_3 : IUnknown
-{
-    HRESULT VideoInputFormatChanged([in] BMDVideoInputFormatChangedEvents notificationEvents, [in] IDeckLinkDisplayMode_v7_6 *newDisplayMode, [in] BMDDetectedVideoInputFormatFlags detectedSignalFlags);
-    HRESULT VideoInputFrameArrived([in] IDeckLinkVideoInputFrame_v7_3 *videoFrame, [in] IDeckLinkAudioInputPacket *audioPacket);
-};
-
-/* End Interface IDeckLinkInputCallback */
-
-
-/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
-
-[
-    object,
-    uuid(271C65E3-C323-4344-A30F-D908BCB20AA3),
-    local, 
-    helpstring("Created by QueryInterface from IDeckLink.")
-] interface IDeckLinkOutput_v7_3 : IUnknown
-{
-    HRESULT DoesSupportVideoMode(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
-    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator_v7_6 **iterator);
-
-    HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback);
-
-    /* Video Output */
-
-    HRESULT EnableVideoOutput(BMDDisplayMode displayMode, BMDVideoOutputFlags flags);
-    HRESULT DisableVideoOutput(void);
-
-    HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);
-    HRESULT CreateVideoFrame(long width, long height, long rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame_v7_6 **outFrame);
-    HRESULT CreateAncillaryData(BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
-
-    HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame_v7_6 *theFrame);
-    HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame_v7_6 *theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale);
-    HRESULT SetScheduledFrameCompletionCallback([in] IDeckLinkVideoOutputCallback *theCallback);
-    HRESULT GetBufferedVideoFrameCount([out] unsigned long *bufferedFrameCount);
-
-    /* Audio Output */
-
-    HRESULT EnableAudioOutput(BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned long channelCount, BMDAudioOutputStreamType streamType);
-    HRESULT DisableAudioOutput(void);
-
-    HRESULT WriteAudioSamplesSync([in] void *buffer, unsigned long sampleFrameCount, [out] unsigned long *sampleFramesWritten);
-
-    HRESULT BeginAudioPreroll(void);
-    HRESULT EndAudioPreroll(void);
-    HRESULT ScheduleAudioSamples([in] void *buffer, unsigned long sampleFrameCount, BMDTimeValue streamTime, BMDTimeScale timeScale, [out] unsigned long *sampleFramesWritten);
-
-    HRESULT GetBufferedAudioSampleFrameCount([out] unsigned long *bufferedSampleFrameCount);
-    HRESULT FlushBufferedAudioSamples(void);
-
-    HRESULT SetAudioCallback([in] IDeckLinkAudioOutputCallback *theCallback);
-
-    /* Output Control */
-
-    HRESULT StartScheduledPlayback(BMDTimeValue playbackStartTime, BMDTimeScale timeScale, double playbackSpeed);
-    HRESULT StopScheduledPlayback(BMDTimeValue stopPlaybackAtTime, [out] BMDTimeValue *actualStopTime, BMDTimeScale timeScale);
-    HRESULT IsScheduledPlaybackRunning([out] BOOL *active);
-    HRESULT GetHardwareReferenceClock(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *elapsedTimeSinceSchedulerBegan);
-};
-
-/* End Interface IDeckLinkOutput */
-
-/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
-
-[
-    object,
-    uuid(4973F012-9925-458C-871C-18774CDBBECB),
-    helpstring("Created by QueryInterface from IDeckLink.")
-] interface IDeckLinkInput_v7_3 : IUnknown
-{
-    HRESULT DoesSupportVideoMode(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
-    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator_v7_6 **iterator);
-
-    HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback);
-
-    /* Video Input */
-
-    HRESULT EnableVideoInput(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDVideoInputFlags flags);
-    HRESULT DisableVideoInput(void);
-    HRESULT GetAvailableVideoFrameCount([out] unsigned long *availableFrameCount);
-
-    /* Audio Input */
-
-    HRESULT EnableAudioInput(BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned long channelCount);
-    HRESULT DisableAudioInput(void);
-    HRESULT GetAvailableAudioSampleFrameCount([out] unsigned long *availableSampleFrameCount);
-
-    /* Input Control */
-
-    HRESULT StartStreams(void);
-    HRESULT StopStreams(void);
-    HRESULT PauseStreams(void);
-    HRESULT FlushStreams(void);
-    HRESULT SetCallback([in] IDeckLinkInputCallback_v7_3 *theCallback);
-};
-
-/* End Interface IDeckLinkInput */
-
-
-/* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
-
-[
-    object,
-    uuid(CF317790-2894-11DE-8C30-0800200C9A66),
-    local, 
-    helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")
-] interface IDeckLinkVideoInputFrame_v7_3 : IDeckLinkVideoFrame_v7_6
-{
-    HRESULT GetStreamTime([out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration, BMDTimeScale timeScale);
-};
-
-/* End Interface IDeckLinkVideoInputFrame */
-
diff --git a/modules/decklink/interop/DeckLinkAPI_v7_6.idl b/modules/decklink/interop/DeckLinkAPI_v7_6.idl
deleted file mode 100644 (file)
index 271801c..0000000
+++ /dev/null
@@ -1,396 +0,0 @@
-/* -LICENSE-START-
-** Copyright (c) 2009 Blackmagic Design
-**
-** Permission is hereby granted, free of charge, to any person or organization
-** obtaining a copy of the software and accompanying documentation covered by
-** this license (the "Software") to use, reproduce, display, distribute,
-** execute, and transmit the Software, and to prepare derivative works of the
-** Software, and to permit third-parties to whom the Software is furnished to
-** do so, all subject to the following:
-** 
-** The copyright notices in the Software and this entire statement, including
-** the above license grant, this restriction and the following disclaimer,
-** must be included in all copies of the Software, in whole or in part, and
-** all derivative works of the Software, unless such copies or derivative
-** works are solely in the form of machine-executable object code generated by
-** a source language processor.
-** 
-** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-** DEALINGS IN THE SOFTWARE.
-** -LICENSE-END-
-*/
-
-/* Enum BMDVideoConnection - Video connection types */
-
-typedef [v1_enum] enum  _BMDVideoConnection_v7_6 {
-    bmdVideoConnectionSDI_v7_6                              = /* 'sdi ' */ 0x73646920,
-    bmdVideoConnectionHDMI_v7_6                             = /* 'hdmi' */ 0x68646D69,
-    bmdVideoConnectionOpticalSDI_v7_6                       = /* 'opti' */ 0x6F707469,
-    bmdVideoConnectionComponent_v7_6                        = /* 'cpnt' */ 0x63706E74,
-    bmdVideoConnectionComposite_v7_6                        = /* 'cmst' */ 0x636D7374,
-    bmdVideoConnectionSVideo_v7_6                           = /* 'svid' */ 0x73766964
-} BMDVideoConnection_v7_6;
-
-
-
-/* Forward Declarations */
-
-interface IDeckLinkDisplayModeIterator_v7_6;
-interface IDeckLinkDisplayMode_v7_6;
-interface IDeckLinkOutput_v7_6;
-interface IDeckLinkInput_v7_6;
-interface IDeckLinkTimecode_v7_6;
-interface IDeckLinkVideoFrame_v7_6;
-interface IDeckLinkMutableVideoFrame_v7_6;
-interface IDeckLinkVideoInputFrame_v7_6;
-interface IDeckLinkScreenPreviewCallback_v7_6;
-interface IDeckLinkGLScreenPreviewHelper_v7_6;
-interface IDeckLinkVideoConversion_v7_6;
-interface IDeckLinkConfiguration_v7_6;
-
-
-/* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
-
-[
-    object,
-    uuid(E763A626-4A3C-49D1-BF13-E7AD3692AE52),
-    helpstring("Frame completion callback.")
-] interface IDeckLinkVideoOutputCallback_v7_6 : IUnknown
-{
-    HRESULT ScheduledFrameCompleted([in] IDeckLinkVideoFrame_v7_6 *completedFrame, [in] BMDOutputFrameCompletionResult result);
-    HRESULT ScheduledPlaybackHasStopped(void);
-};
-
-
-/* Interface IDeckLinkInputCallback - Frame arrival callback. */
-
-[
-    object,
-    uuid(31D28EE7-88B6-4CB1-897A-CDBF79A26414),
-    helpstring("Frame arrival callback.")
-] interface IDeckLinkInputCallback_v7_6 : IUnknown
-{
-    HRESULT VideoInputFormatChanged([in] BMDVideoInputFormatChangedEvents notificationEvents, [in] IDeckLinkDisplayMode_v7_6 *newDisplayMode, [in] BMDDetectedVideoInputFormatFlags detectedSignalFlags);
-    HRESULT VideoInputFrameArrived([in] IDeckLinkVideoInputFrame_v7_6* videoFrame, [in] IDeckLinkAudioInputPacket* audioPacket);
-};
-
-
-/* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */
-
-[
-    object,
-    uuid(455D741F-1779-4800-86F5-0B5D13D79751),
-    helpstring("enumerates over supported input/output display modes.")
-] interface IDeckLinkDisplayModeIterator_v7_6 : IUnknown
-{
-    HRESULT Next([out] IDeckLinkDisplayMode_v7_6 **deckLinkDisplayMode);
-};
-
-
-/* Interface IDeckLinkDisplayMode - represents a display mode */
-
-[
-    object,
-    uuid(87451E84-2B7E-439E-A629-4393EA4A8550),
-    helpstring("represents a display mode")
-] interface IDeckLinkDisplayMode_v7_6 : IUnknown
-{
-    HRESULT GetName([out] BSTR *name);
-    BMDDisplayMode GetDisplayMode(void);
-    long GetWidth(void);
-    long GetHeight(void);
-    HRESULT GetFrameRate([out] BMDTimeValue *frameDuration, [out] BMDTimeScale *timeScale);
-    BMDFieldDominance GetFieldDominance(void);
-};
-
-
-/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
-
-[
-    object,
-    uuid(29228142-EB8C-4141-A621-F74026450955),
-    local, 
-    helpstring("Created by QueryInterface from IDeckLink.")
-] interface IDeckLinkOutput_v7_6 : IUnknown
-{
-    HRESULT DoesSupportVideoMode(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
-    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator_v7_6 **iterator);
-
-    HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback_v7_6 *previewCallback);
-
-    /* Video Output */
-
-    HRESULT EnableVideoOutput(BMDDisplayMode displayMode, BMDVideoOutputFlags flags);
-    HRESULT DisableVideoOutput(void);
-
-    HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);
-    HRESULT CreateVideoFrame(long width, long height, long rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame_v7_6 **outFrame);
-    HRESULT CreateAncillaryData(BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
-
-    HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame_v7_6 *theFrame);
-    HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame_v7_6 *theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale);
-    HRESULT SetScheduledFrameCompletionCallback([in] IDeckLinkVideoOutputCallback_v7_6 *theCallback);
-    HRESULT GetBufferedVideoFrameCount([out] unsigned long *bufferedFrameCount);
-
-    /* Audio Output */
-
-    HRESULT EnableAudioOutput(BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned long channelCount, BMDAudioOutputStreamType streamType);
-    HRESULT DisableAudioOutput(void);
-
-    HRESULT WriteAudioSamplesSync([in] void *buffer, unsigned long sampleFrameCount, [out] unsigned long *sampleFramesWritten);
-
-    HRESULT BeginAudioPreroll(void);
-    HRESULT EndAudioPreroll(void);
-    HRESULT ScheduleAudioSamples([in] void *buffer, unsigned long sampleFrameCount, BMDTimeValue streamTime, BMDTimeScale timeScale, [out] unsigned long *sampleFramesWritten);
-
-    HRESULT GetBufferedAudioSampleFrameCount([out] unsigned long *bufferedSampleFrameCount);
-    HRESULT FlushBufferedAudioSamples(void);
-
-    HRESULT SetAudioCallback([in] IDeckLinkAudioOutputCallback *theCallback);
-
-    /* Output Control */
-
-    HRESULT StartScheduledPlayback(BMDTimeValue playbackStartTime, BMDTimeScale timeScale, double playbackSpeed);
-    HRESULT StopScheduledPlayback(BMDTimeValue stopPlaybackAtTime, [out] BMDTimeValue *actualStopTime, BMDTimeScale timeScale);
-    HRESULT IsScheduledPlaybackRunning([out] BOOL *active);
-    HRESULT GetScheduledStreamTime(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *streamTime, [out] double *playbackSpeed);
-
-    /* Hardware Timing */
-
-    HRESULT GetHardwareReferenceClock(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);
-};
-
-
-/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
-
-[
-    object,
-    uuid(300C135A-9F43-48E2-9906-6D7911D93CF1),
-    helpstring("Created by QueryInterface from IDeckLink.")
-] interface IDeckLinkInput_v7_6 : IUnknown
-{
-    HRESULT DoesSupportVideoMode(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
-    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator_v7_6 **iterator);
-
-    HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback_v7_6 *previewCallback);
-
-    /* Video Input */
-
-    HRESULT EnableVideoInput(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDVideoInputFlags flags);
-    HRESULT DisableVideoInput(void);
-    HRESULT GetAvailableVideoFrameCount([out] unsigned long *availableFrameCount);
-
-    /* Audio Input */
-
-    HRESULT EnableAudioInput(BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned long channelCount);
-    HRESULT DisableAudioInput(void);
-    HRESULT GetAvailableAudioSampleFrameCount([out] unsigned long *availableSampleFrameCount);
-
-    /* Input Control */
-
-    HRESULT StartStreams(void);
-    HRESULT StopStreams(void);
-    HRESULT PauseStreams(void);
-    HRESULT FlushStreams(void);
-    HRESULT SetCallback([in] IDeckLinkInputCallback_v7_6 *theCallback);
-
-    /* Hardware Timing */
-
-    HRESULT GetHardwareReferenceClock(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);
-};
-
-
-/* Interface IDeckLinkTimecode_v7_6 - Used for video frame timecode representation. */
-
-[
-    object,
-    uuid(EFB9BCA6-A521-44F7-BD69-2332F24D9EE6),
-    helpstring("Used for video frame timecode representation.")
-] interface IDeckLinkTimecode_v7_6 : IUnknown
-{
-    BMDTimecodeBCD GetBCD(void);
-    HRESULT GetComponents([out] unsigned char *hours, [out] unsigned char *minutes, [out] unsigned char *seconds, [out] unsigned char *frames);
-    HRESULT GetString([out] BSTR *timecode);
-    BMDTimecodeFlags GetFlags(void);
-};
-
-
-/* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
-
-[
-    object,
-    uuid(A8D8238E-6B18-4196-99E1-5AF717B83D32),
-    local, 
-    helpstring("Interface to encapsulate a video frame; can be caller-implemented.")
-] interface IDeckLinkVideoFrame_v7_6 : IUnknown
-{
-    long GetWidth(void);
-    long GetHeight(void);
-    long GetRowBytes(void);
-    BMDPixelFormat GetPixelFormat(void);
-    BMDFrameFlags GetFlags(void);
-    HRESULT GetBytes([out] void **buffer);
-
-    HRESULT GetTimecode(BMDTimecodeFormat format, [out] IDeckLinkTimecode_v7_6 **timecode);
-    HRESULT GetAncillaryData([out] IDeckLinkVideoFrameAncillary **ancillary);
-};
-
-
-/* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
-
-[
-    object,
-    uuid(46FCEE00-B4E6-43D0-91C0-023A7FCEB34F),
-    local, 
-    helpstring("Created by IDeckLinkOutput::CreateVideoFrame.")
-] interface IDeckLinkMutableVideoFrame_v7_6 : IDeckLinkVideoFrame_v7_6
-{
-    HRESULT SetFlags(BMDFrameFlags newFlags);
-
-    HRESULT SetTimecode(BMDTimecodeFormat format, [in] IDeckLinkTimecode_v7_6 *timecode);
-    HRESULT SetTimecodeFromComponents(BMDTimecodeFormat format, unsigned char hours, unsigned char minutes, unsigned char seconds, unsigned char frames, BMDTimecodeFlags flags);
-    HRESULT SetAncillaryData([in] IDeckLinkVideoFrameAncillary *ancillary);
-};
-
-
-/* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
-
-[
-    object,
-    uuid(9A74FA41-AE9F-47AC-8CF4-01F42DD59965),
-    local, 
-    helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")
-] interface IDeckLinkVideoInputFrame_v7_6 : IDeckLinkVideoFrame_v7_6
-{
-    HRESULT GetStreamTime([out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration, BMDTimeScale timeScale);
-    HRESULT GetHardwareReferenceTimestamp(BMDTimeScale timeScale, [out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration);
-};
-
-
-/* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
-
-[
-    object,
-    uuid(373F499D-4B4D-4518-AD22-6354E5A5825E),
-    local, 
-    helpstring("Screen preview callback")
-] interface IDeckLinkScreenPreviewCallback_v7_6 : IUnknown
-{
-    HRESULT DrawFrame([in] IDeckLinkVideoFrame_v7_6 *theFrame);
-};
-
-
-/* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
-
-[
-    object,
-    uuid(BA575CD9-A15E-497B-B2C2-F9AFE7BE4EBA),
-    local, 
-    helpstring("Created with CoCreateInstance().")
-] interface IDeckLinkGLScreenPreviewHelper_v7_6 : IUnknown
-{
-
-    /* Methods must be called with OpenGL context set */
-
-    HRESULT InitializeGL(void);
-    HRESULT PaintGL(void);
-    HRESULT SetFrame([in] IDeckLinkVideoFrame_v7_6 *theFrame);
-};
-
-
-/* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
-
-[
-    object,
-    uuid(3EB504C9-F97D-40FE-A158-D407D48CB53B),
-    local, 
-    helpstring("Created with CoCreateInstance().")
-] interface IDeckLinkVideoConversion_v7_6 : IUnknown
-{
-    HRESULT ConvertFrame([in] IDeckLinkVideoFrame_v7_6* srcFrame, [in] IDeckLinkVideoFrame_v7_6* dstFrame);
-};
-
-/* Interface IDeckLinkConfiguration_v7_6 - Created by QueryInterface from IDeckLink. */
-
-[
-    object,
-    uuid(B8EAD569-B764-47F0-A73F-AE40DF6CBF10),
-    helpstring("Created by QueryInterface from IDeckLink.")
-] interface IDeckLinkConfiguration_v7_6 : IUnknown
-{
-    HRESULT GetConfigurationValidator([out] IDeckLinkConfiguration_v7_6 **configObject);
-    HRESULT WriteConfigurationToPreferences(void);
-
-    /* Video Output Configuration */
-
-    HRESULT SetVideoOutputFormat([in] BMDVideoConnection_v7_6 videoOutputConnection);
-    HRESULT IsVideoOutputActive([in] BMDVideoConnection_v7_6 videoOutputConnection, [out] BOOL *active);
-
-    HRESULT SetAnalogVideoOutputFlags([in] BMDAnalogVideoFlags analogVideoFlags);
-    HRESULT GetAnalogVideoOutputFlags([out] BMDAnalogVideoFlags *analogVideoFlags);
-
-    HRESULT EnableFieldFlickerRemovalWhenPaused([in] BOOL enable);
-    HRESULT IsEnabledFieldFlickerRemovalWhenPaused([out] BOOL *enabled);
-
-    HRESULT Set444And3GBpsVideoOutput([in] BOOL enable444VideoOutput, [in] BOOL enable3GbsOutput);
-    HRESULT Get444And3GBpsVideoOutput([out] BOOL *is444VideoOutputEnabled, [out] BOOL *threeGbsOutputEnabled);
-
-    HRESULT SetVideoOutputConversionMode([in] BMDVideoOutputConversionMode conversionMode);
-    HRESULT GetVideoOutputConversionMode([out] BMDVideoOutputConversionMode *conversionMode);
-
-    HRESULT Set_HD1080p24_to_HD1080i5994_Conversion([in] BOOL enable);
-    HRESULT Get_HD1080p24_to_HD1080i5994_Conversion([out] BOOL *enabled);
-
-    /* Video Input Configuration */
-
-    HRESULT SetVideoInputFormat([in] BMDVideoConnection_v7_6 videoInputFormat);
-    HRESULT GetVideoInputFormat([out] BMDVideoConnection_v7_6 *videoInputFormat);
-
-    HRESULT SetAnalogVideoInputFlags([in] BMDAnalogVideoFlags analogVideoFlags);
-    HRESULT GetAnalogVideoInputFlags([out] BMDAnalogVideoFlags *analogVideoFlags);
-
-    HRESULT SetVideoInputConversionMode([in] BMDVideoInputConversionMode conversionMode);
-    HRESULT GetVideoInputConversionMode([out] BMDVideoInputConversionMode *conversionMode);
-
-    HRESULT SetBlackVideoOutputDuringCapture([in] BOOL blackOutInCapture);
-    HRESULT GetBlackVideoOutputDuringCapture([out] BOOL *blackOutInCapture);
-
-    HRESULT Set32PulldownSequenceInitialTimecodeFrame([in] unsigned long aFrameTimecode);
-    HRESULT Get32PulldownSequenceInitialTimecodeFrame([out] unsigned long *aFrameTimecode);
-
-    HRESULT SetVancSourceLineMapping([in] unsigned long activeLine1VANCsource, [in] unsigned long activeLine2VANCsource, [in] unsigned long activeLine3VANCsource);
-    HRESULT GetVancSourceLineMapping([out] unsigned long *activeLine1VANCsource, [out] unsigned long *activeLine2VANCsource, [out] unsigned long *activeLine3VANCsource);
-
-    /* Audio Input Configuration */
-
-    HRESULT SetAudioInputFormat([in] BMDAudioConnection audioInputFormat);
-    HRESULT GetAudioInputFormat([out] BMDAudioConnection *audioInputFormat);
-};
-
-
-
-/* Coclasses */
-
-importlib("stdole2.tlb");
-
-[
-    uuid(D398CEE7-4434-4CA3-9BA6-5AE34556B905),
-    helpstring("CDeckLinkGLScreenPreviewHelper Class (DeckLink API v7.6)")
-] coclass CDeckLinkGLScreenPreviewHelper_v7_6
-{
-    [default] interface IDeckLinkGLScreenPreviewHelper_v7_6;
-};
-
-[
-    uuid(FFA84F77-73BE-4FB7-B03E-B5E44B9F759B),
-    helpstring("CDeckLinkVideoConversion Class (DeckLink API v7.6)")
-] coclass CDeckLinkVideoConversion_v7_6
-{
-    [default] interface IDeckLinkVideoConversion_v7_6;
-};
-
diff --git a/modules/decklink/interop/DeckLinkAPI_v7_9.idl b/modules/decklink/interop/DeckLinkAPI_v7_9.idl
deleted file mode 100644 (file)
index 5e57b14..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/* -LICENSE-START-
-** Copyright (c) 2010 Blackmagic Design
-**
-** Permission is hereby granted, free of charge, to any person or organization
-** obtaining a copy of the software and accompanying documentation covered by
-** this license (the "Software") to use, reproduce, display, distribute,
-** execute, and transmit the Software, and to prepare derivative works of the
-** Software, and to permit third-parties to whom the Software is furnished to
-** do so, all subject to the following:
-** 
-** The copyright notices in the Software and this entire statement, including
-** the above license grant, this restriction and the following disclaimer,
-** must be included in all copies of the Software, in whole or in part, and
-** all derivative works of the Software, unless such copies or derivative
-** works are solely in the form of machine-executable object code generated by
-** a source language processor.
-** 
-** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-** DEALINGS IN THE SOFTWARE.
-** -LICENSE-END-
-*/
-/* DeckLinkAPI_v7_9.idl */
-
-/* Interface IDeckLinkDeckControl_v7_9 - Deck Control main interface */
-
-[
-       object,
-       uuid(A4D81043-0619-42B7-8ED6-602D29041DF7),
-       helpstring("Deck Control main interface")
-] interface IDeckLinkDeckControl_v7_9 : IUnknown
-{
-       HRESULT Open([in] BMDTimeScale timeScale, [in] BMDTimeValue timeValue, [in] BOOL timecodeIsDropFrame, [out] BMDDeckControlError *error);
-       HRESULT Close([in] BOOL standbyOn);
-       HRESULT GetCurrentState([out] BMDDeckControlMode *mode, [out] BMDDeckControlVTRControlState *vtrControlState, [out] BMDDeckControlStatusFlags *flags);
-       HRESULT SetStandby([in] BOOL standbyOn);
-       HRESULT Play([out] BMDDeckControlError *error);
-       HRESULT Stop([out] BMDDeckControlError *error);
-       HRESULT TogglePlayStop([out] BMDDeckControlError *error);
-       HRESULT Eject([out] BMDDeckControlError *error);
-       HRESULT GoToTimecode([in] BMDTimecodeBCD timecode, [out] BMDDeckControlError *error);
-       HRESULT FastForward([in] BOOL viewTape, [out] BMDDeckControlError *error);
-       HRESULT Rewind([in] BOOL viewTape, [out] BMDDeckControlError *error);
-       HRESULT StepForward([out] BMDDeckControlError *error);
-       HRESULT StepBack([out] BMDDeckControlError *error);
-       HRESULT Jog([in] double rate, [out] BMDDeckControlError *error);
-       HRESULT Shuttle([in] double rate, [out] BMDDeckControlError *error);
-       HRESULT GetTimecodeString([out] BSTR *currentTimeCode, [out] BMDDeckControlError *error);
-       HRESULT GetTimecode([out] IDeckLinkTimecode **currentTimecode, [out] BMDDeckControlError *error);
-       HRESULT GetTimecodeBCD([out] BMDTimecodeBCD *currentTimecode, [out] BMDDeckControlError *error);
-       HRESULT SetPreroll([in] unsigned long prerollSeconds);
-       HRESULT GetPreroll([out] unsigned long *prerollSeconds);
-       HRESULT SetExportOffset([in] long exportOffsetFields);
-       HRESULT GetExportOffset([out] long *exportOffsetFields);
-       HRESULT GetManualExportOffset([out] long *deckManualExportOffsetFields);
-       HRESULT SetCaptureOffset([in] long captureOffsetFields);
-       HRESULT GetCaptureOffset([out] long *captureOffsetFields);
-       HRESULT StartExport([in] BMDTimecodeBCD inTimecode, [in] BMDTimecodeBCD outTimecode, [in] BMDDeckControlExportModeOpsFlags exportModeOps, [out] BMDDeckControlError *error);
-       HRESULT StartCapture([in] BOOL useVITC, [in] BMDTimecodeBCD inTimecode, [in] BMDTimecodeBCD outTimecode, [out] BMDDeckControlError *error);
-       HRESULT GetDeviceID([out] unsigned short *deviceId, [out] BMDDeckControlError *error);
-       HRESULT Abort(void);
-       HRESULT CrashRecordStart([out] BMDDeckControlError *error);
-       HRESULT CrashRecordStop([out] BMDDeckControlError *error);
-       HRESULT SetCallback([in] IDeckLinkDeckControlStatusCallback *callback);
-};
index 5373562a66f47da4ee25ed8fcc204bfe68bbb1bc..4138f58b8e0010c1a3f4a91c147ff48299e963dc 100644 (file)
@@ -64,6 +64,11 @@ static BMDDisplayMode get_decklink_video_format(core::video_format::type fmt)
        case core::video_format::x2k2398:               return bmdMode2k2398;\r
        case core::video_format::x2k2400:               return bmdMode2k24;\r
        case core::video_format::x2k2500:               return bmdMode2k25;\r
+       case core::video_format::x4k2398:               return bmdMode4K2160p2398;\r
+       case core::video_format::x4k2400:               return bmdMode4K2160p24;\r
+       case core::video_format::x4k2500:               return bmdMode4K2160p25;\r
+       case core::video_format::x4k2997:               return bmdMode4K2160p2997;\r
+       case core::video_format::x4k3000:               return bmdMode4K2160p30;\r
        default:                                                                return (BMDDisplayMode)ULONG_MAX;\r
        }\r
 }\r
@@ -91,6 +96,11 @@ static core::video_format::type get_caspar_video_format(BMDDisplayMode fmt)
        case bmdMode2k2398:                                             return core::video_format::x2k2398;     \r
        case bmdMode2k24:                                               return core::video_format::x2k2400;     \r
        case bmdMode2k25:                                               return core::video_format::x2k2500;     \r
+       case bmdMode4K2160p2398:                                return core::video_format::x4k2398;     \r
+       case bmdMode4K2160p24:                                  return core::video_format::x4k2400;     \r
+       case bmdMode4K2160p25:                                  return core::video_format::x4k2500;     \r
+       case bmdMode4K2160p2997:                                return core::video_format::x4k2997;     \r
+       case bmdMode4K2160p30:                                  return core::video_format::x4k3000;     \r
        default:                                                                return core::video_format::invalid;     \r
        }\r
 }\r
index 4c97187270f67408d928e21ebe12fc054dfb28c9..43c565767bac55f2d72ec769d2d3807c04476e0a 100644 (file)
@@ -9,7 +9,7 @@
   </paths>\r
   <channels>\r
     <channel>\r
-        <video-mode>2k2400</video-mode>\r
+        <video-mode>4k2400</video-mode>\r
         <consumers>\r
           <screen>\r
             <device>1</device>\r
@@ -55,7 +55,7 @@
 </thumbnails>\r
 <channels>\r
     <channel>\r
-        <video-mode> PAL [PAL|NTSC|576p2500|720p2398|720p2400|720p2500|720p5000|720p2997|720p5994|720p3000|720p6000|1080p2398|1080p2400|1080i5000|1080i5994|1080i6000|1080p2500|1080p2997|1080p3000|1080p5000|1080p5994|1080p6000|2k2398|2k2400|2k2500] </video-mode>\r
+        <video-mode> PAL [PAL|NTSC|576p2500|720p2398|720p2400|720p2500|720p5000|720p2997|720p5994|720p3000|720p6000|1080p2398|1080p2400|1080i5000|1080i5994|1080i6000|1080p2500|1080p2997|1080p3000|1080p5000|1080p5994|1080p6000|2k2398|2k2400|2k2500|4k2398|4k2400|4k2500|4k2997|4k3000] </video-mode>\r
         <consumers>\r
             <decklink>\r
                 <device>[1..]</device>\r