[Sumover-dev] [svn commit] r4820 - in vic/branches/mpeg4: video

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Tue May 11 09:19:58 BST 2010


Author: douglask
Date: Tue May 11 09:19:57 2010
New Revision: 4820

Added:
   vic/branches/mpeg4/video/DeckLinkAPI_h.h
   vic/branches/mpeg4/video/DeckLinkAPI_i.c
Modified:
   vic/branches/mpeg4/vic.2008.vcproj
   vic/branches/mpeg4/vic.vcxproj
   vic/branches/mpeg4/vic.vcxproj.filters
   vic/branches/mpeg4/video/DeckLinkAPI.idl
   vic/branches/mpeg4/video/DeckLinkAPI_v7_3.idl

Log:
Updated DeckLink API IDL files to SDK 7.6

Added video\DeckLinkAPI_i.c & video\DeckLinkAPI_h.h for MinGW, they are generated with VS2008 or VS2010.


Modified: vic/branches/mpeg4/vic.2008.vcproj
==============================================================================
--- vic/branches/mpeg4/vic.2008.vcproj	(original)
+++ vic/branches/mpeg4/vic.2008.vcproj	Tue May 11 09:19:57 2010
@@ -2155,6 +2155,8 @@
 					>
 					<Tool
 						Name="VCMIDLTool"
+						GenerateTypeLibrary="false"
+						OutputDirectory="video"
 					/>
 				</FileConfiguration>
 				<FileConfiguration
@@ -2163,30 +2165,34 @@
 					>
 					<Tool
 						Name="VCMIDLTool"
+						GenerateTypeLibrary="false"
+						OutputDirectory="video"
 					/>
 				</FileConfiguration>
-			</File>
-			<File
-				RelativePath=".\DeckLinkAPI_i.c"
-				>
 				<FileConfiguration
-					Name="Debug (nonGPL)|Win32"
-					ExcludedFromBuild="true"
+					Name="Debug (GPL)|Win32"
 					>
 					<Tool
-						Name="VCCLCompilerTool"
+						Name="VCMIDLTool"
+						GenerateTypeLibrary="false"
+						OutputDirectory="video"
 					/>
 				</FileConfiguration>
 				<FileConfiguration
-					Name="Release (nonGPL)|Win32"
-					ExcludedFromBuild="true"
+					Name="Release (GPL)|Win32"
 					>
 					<Tool
-						Name="VCCLCompilerTool"
+						Name="VCMIDLTool"
+						GenerateTypeLibrary="false"
+						OutputDirectory="video"
 					/>
 				</FileConfiguration>
 			</File>
 			<File
+				RelativePath=".\video\DeckLinkAPI_i.c"
+				>
+			</File>
+			<File
 				RelativePath=".\video\deinterlace.cpp"
 				>
 				<FileConfiguration
@@ -2262,6 +2268,10 @@
 					>
 				</File>
 				<File
+					RelativePath=".\video\DeckLinkAPI_h.h"
+					>
+				</File>
+				<File
 					RelativePath=".\video\deinterlace.h"
 					>
 					<FileConfiguration

Modified: vic/branches/mpeg4/vic.vcxproj
==============================================================================
--- vic/branches/mpeg4/vic.vcxproj	(original)
+++ vic/branches/mpeg4/vic.vcxproj	Tue May 11 09:19:57 2010
@@ -425,10 +425,6 @@
     </ClCompile>
     <ClCompile Include="$(OutDir)version.c" />
     <ClCompile Include="$(OutDir)bv.c" />
-    <ClCompile Include="DeckLinkAPI_i.c">
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug (nonGPL)|Win32'">true</ExcludedFromBuild>
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release (nonGPL)|Win32'">true</ExcludedFromBuild>
-    </ClCompile>
     <ClCompile Include="getopt.c" />
     <ClCompile Include="idlecallback.cpp" />
     <ClCompile Include="iohandler.cpp" />
@@ -482,6 +478,7 @@
     <ClCompile Include="tkWinColor.c" />
     <ClCompile Include="video\assistor-list.cpp" />
     <ClCompile Include="video\crossbar.cpp" />
+    <ClCompile Include="video\DeckLinkAPI_i.c" />
     <ClCompile Include="video\deinterlace.cpp">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug (nonGPL)|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release (nonGPL)|Win32'">true</ExcludedFromBuild>
@@ -551,6 +548,7 @@
     <ClInclude Include="rtp\transmitter.h" />
     <ClInclude Include="video\assistor-list.h" />
     <ClInclude Include="video\crossbar.h" />
+    <ClInclude Include="video\DeckLinkAPI_h.h" />
     <ClInclude Include="video\deinterlace.h" />
     <ClInclude Include="video\grabber-win32DS.h" />
     <ClInclude Include="video\grabber.h" />
@@ -564,6 +562,14 @@
     <Midl Include="video\DeckLinkAPI.idl">
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug (nonGPL)|Win32'">true</ExcludedFromBuild>
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release (nonGPL)|Win32'">true</ExcludedFromBuild>
+      <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Debug (GPL)|Win32'">video</OutputDirectory>
+      <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Release (GPL)|Win32'">video</OutputDirectory>
+      <GenerateTypeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug (GPL)|Win32'">false</GenerateTypeLibrary>
+      <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Debug (nonGPL)|Win32'">video</OutputDirectory>
+      <GenerateTypeLibrary Condition="'$(Configuration)|$(Platform)'=='Debug (nonGPL)|Win32'">false</GenerateTypeLibrary>
+      <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Release (nonGPL)|Win32'">video</OutputDirectory>
+      <GenerateTypeLibrary Condition="'$(Configuration)|$(Platform)'=='Release (nonGPL)|Win32'">false</GenerateTypeLibrary>
+      <GenerateTypeLibrary Condition="'$(Configuration)|$(Platform)'=='Release (GPL)|Win32'">false</GenerateTypeLibrary>
     </Midl>
   </ItemGroup>
   <PropertyGroup Label="Globals">

Modified: vic/branches/mpeg4/vic.vcxproj.filters
==============================================================================
--- vic/branches/mpeg4/vic.vcxproj.filters	(original)
+++ vic/branches/mpeg4/vic.vcxproj.filters	Tue May 11 09:19:57 2010
@@ -409,15 +409,15 @@
     <ClCompile Include="$(OutDir)ui-windows.cpp">
       <Filter>tcl\Generated Source Files</Filter>
     </ClCompile>
-    <ClCompile Include="DeckLinkAPI_i.c">
-      <Filter>video</Filter>
-    </ClCompile>
     <ClCompile Include="$(OutDir)version.c">
       <Filter>vic common</Filter>
     </ClCompile>
     <ClCompile Include="$(OutDir)bv.c">
       <Filter>codec</Filter>
     </ClCompile>
+    <ClCompile Include="video\DeckLinkAPI_i.c">
+      <Filter>video</Filter>
+    </ClCompile>
   </ItemGroup>
   <ItemGroup>
     <ClInclude Include="codec\databuffer.h">
@@ -567,6 +567,9 @@
     <ClInclude Include="zvfs.h">
       <Filter>vic common\VIC Common Header Files</Filter>
     </ClInclude>
+    <ClInclude Include="video\DeckLinkAPI_h.h">
+      <Filter>video\Video Header Files</Filter>
+    </ClInclude>
   </ItemGroup>
   <ItemGroup>
     <CustomBuild Include="VERSION" />

Modified: vic/branches/mpeg4/video/DeckLinkAPI.idl
==============================================================================
--- vic/branches/mpeg4/video/DeckLinkAPI.idl	(original)
+++ vic/branches/mpeg4/video/DeckLinkAPI.idl	Tue May 11 09:19:57 2010
@@ -40,7 +40,6 @@
 typedef LONGLONG BMDTimeScale;
 typedef unsigned long BMDTimecodeBCD;
 
-/* End Type Declarations */
 
 /* Enumeration Mapping */
 
@@ -50,6 +49,8 @@
 cpp_quote("typedef unsigned long BMDDetectedVideoInputFormatFlags;")
 cpp_quote("typedef unsigned long BMDTimecodeFlags;")
 cpp_quote("typedef unsigned long BMDAnalogVideoFlags;")
+cpp_quote("typedef unsigned long BMDDeckControlStatusFlags;")
+cpp_quote("typedef unsigned long BMDDeckControlExportModeOpsFlags;")
 cpp_quote("#if 0")
 typedef enum _BMDFrameFlags BMDFrameFlags;
 typedef enum _BMDVideoInputFlags BMDVideoInputFlags;
@@ -57,15 +58,16 @@
 typedef enum _BMDDetectedVideoInputFormatFlags BMDDetectedVideoInputFormatFlags;
 typedef enum _BMDTimecodeFlags BMDTimecodeFlags;
 typedef enum _BMDAnalogVideoFlags BMDAnalogVideoFlags;
+typedef enum _BMDDeckControlStatusFlags BMDDeckControlStatusFlags;
+typedef enum _BMDDeckControlExportModeOpsFlags BMDDeckControlExportModeOpsFlags;
 cpp_quote("#endif")
 
-/* End Enumeration Mapping */
 
 /* Enum BMDDisplayMode - Video display modes */
 
 typedef [v1_enum] enum	_BMDDisplayMode {
     bmdModeNTSC                                        = /* 'ntsc' */ 0x6E747363,
-    bmdModeNTSC2398                                    = /* 'nt23' */ 0x6E743233, // 3:2 pulldown
+    bmdModeNTSC2398                                    = /* 'nt23' */ 0x6E743233,	// 3:2 pulldown
     bmdModePAL                                         = /* 'pal ' */ 0x70616C20,
 
     /* HD 1080 Modes */
@@ -77,10 +79,10 @@
     bmdModeHD1080p30                                   = /* 'Hp30' */ 0x48703330,
     bmdModeHD1080i50                                   = /* 'Hi50' */ 0x48693530,
     bmdModeHD1080i5994                                 = /* 'Hi59' */ 0x48693539,
-    bmdModeHD1080i6000                                 = /* 'Hi60' */ 0x48693630, // N.B. This _really_ is 60.00 Hz.
+    bmdModeHD1080i6000                                 = /* 'Hi60' */ 0x48693630,	// N.B. This _really_ is 60.00 Hz.
     bmdModeHD1080p50                                   = /* 'Hp50' */ 0x48703530,
     bmdModeHD1080p5994                                 = /* 'Hp59' */ 0x48703539,
-    bmdModeHD1080p6000                                 = /* 'Hp60' */ 0x48703630, // N.B. This _really_ is 60.00 Hz.
+    bmdModeHD1080p6000                                 = /* 'Hp60' */ 0x48703630,	// N.B. This _really_ is 60.00 Hz.
 
     /* HD 720 Modes */
 
@@ -95,7 +97,6 @@
     bmdMode2k25                                        = /* '2k25' */ 0x326B3235
 } BMDDisplayMode;
 
-/* End Enum BMDDisplayMode */
 
 /* Enum BMDFieldDominance - Video field dominance */
 
@@ -107,29 +108,27 @@
     bmdProgressiveSegmentedFrame                       = /* 'psf ' */ 0x70736620
 } BMDFieldDominance;
 
-/* End Enum BMDFieldDominance */
 
 /* Enum BMDPixelFormat - Video pixel formats supported for output/input */
 
 typedef [v1_enum] enum	_BMDPixelFormat {
     bmdFormat8BitYUV                                   = /* '2vuy' */ 0x32767579,
     bmdFormat10BitYUV                                  = /* 'v210' */ 0x76323130,
-    bmdFormat8BitARGB                                  = 0x20,
+    bmdFormat8BitARGB                                  = 32,
     bmdFormat8BitBGRA                                  = /* 'BGRA' */ 0x42475241,
-    bmdFormat10BitRGB                                  = /* 'r210' */ 0x72323130
+    bmdFormat10BitRGB                                  = /* 'r210' */ 0x72323130	// Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10
 } BMDPixelFormat;
 
-/* End Enum BMDPixelFormat */
 
 /* Enum BMDVideoOutputFlags - Flags to control the output of ancillary data along with video. */
 
 typedef [v1_enum] enum	_BMDVideoOutputFlags {
     bmdVideoOutputFlagDefault                          = 0,
-    bmdVideoOutputRP188                                = 1 << 0,
-    bmdVideoOutputVANC                                 = 1 << 1
+    bmdVideoOutputVANC                                 = 1 << 0,
+    bmdVideoOutputVITC                                 = 1 << 1,
+    bmdVideoOutputRP188                                = 1 << 2
 } BMDVideoOutputFlags;
 
-/* End Enum BMDVideoOutputFlags */
 
 /* Enum BMDFrameFlags - Frame flags */
 
@@ -137,12 +136,11 @@
     bmdFrameFlagDefault                                = 0,
     bmdFrameFlagFlipVertical                           = 1 << 0,
 
-    /* Flags that are valid only for frames returned through IDeckLinkInput */
+    /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
 
     bmdFrameHasNoInputSource                           = 1 << 31
 };
 
-/* End Enum BMDFrameFlags */
 
 /* Enum BMDVideoInputFlags - Flags applicable to video input */
 
@@ -151,7 +149,6 @@
     bmdVideoInputEnableFormatDetection                 = 1 << 0
 };
 
-/* End Enum BMDVideoInputFlags */
 
 /* Enum BMDVideoInputFormatChangedEvents - Bitmask passed to the VideoInputFormatChanged notification to identify the properties of the input signal that have changed */
 
@@ -161,7 +158,6 @@
     bmdVideoInputColorspaceChanged                     = 1 << 2
 };
 
-/* End Enum BMDVideoInputFormatChangedEvents */
 
 /* Enum BMDDetectedVideoInputFormatFlags - Flags passed to the VideoInputFormatChanged notification to describe the detected video input signal */
 
@@ -170,7 +166,6 @@
     bmdDetectedVideoInputRGB444                        = 1 << 1
 };
 
-/* End Enum BMDDetectedVideoInputFormatFlags */
 
 /* Enum BMDOutputFrameCompletionResult - Frame Completion Callback */
 
@@ -181,7 +176,6 @@
     bmdOutputFrameFlushed                             
 } BMDOutputFrameCompletionResult;
 
-/* End Enum BMDOutputFrameCompletionResult */
 
 /* Enum BMDAudioSampleRate - Audio sample rates supported for output/input */
 
@@ -189,7 +183,6 @@
     bmdAudioSampleRate48kHz                            = 48000
 } BMDAudioSampleRate;
 
-/* End Enum BMDAudioSampleRate */
 
 /* Enum BMDAudioSampleType - Audio sample sizes supported for output/input */
 
@@ -198,7 +191,6 @@
     bmdAudioSampleType32bitInteger                     = 32
 } BMDAudioSampleType;
 
-/* End Enum BMDAudioSampleType */
 
 /* Enum BMDAudioOutputStreamType - Audio output stream type */
 
@@ -208,7 +200,6 @@
     bmdAudioOutputStreamTimestamped                   
 } BMDAudioOutputStreamType;
 
-/* End Enum BMDAudioOutputStreamType */
 
 /* Enum BMDDisplayModeSupport - Output mode supported flags */
 
@@ -218,7 +209,6 @@
     bmdDisplayModeSupportedWithConversion             
 } BMDDisplayModeSupport;
 
-/* End Enum BMDDisplayModeSupport */
 
 /* Enum BMDTimecodeFormat - Timecode formats for frame metadata */
 
@@ -228,7 +218,6 @@
     bmdTimecodeSerial                                  = /* 'seri' */ 0x73657269
 } BMDTimecodeFormat;
 
-/* End Enum BMDTimecodeFormat */
 
 /* Enum BMDTimecodeFlags - Timecode flags */
 
@@ -237,7 +226,6 @@
     bmdTimecodeIsDropFrame                             = 1 << 0
 };
 
-/* End Enum BMDTimecodeFlags */
 
 /* Enum BMDVideoConnection - Video connection types */
 
@@ -250,7 +238,6 @@
     bmdVideoConnectionSVideo                           = /* 'svid' */ 0x73766964
 } BMDVideoConnection;
 
-/* End Enum BMDVideoConnection */
 
 /* Enum BMDAnalogVideoFlags - Analog video display flags */
 
@@ -259,7 +246,6 @@
     bmdAnalogVideoFlagComponentBetacamLevels           = 1 << 1
 };
 
-/* End Enum BMDAnalogVideoFlags */
 
 /* Enum BMDAudioConnection - Audio connection types */
 
@@ -269,21 +255,24 @@
     bmdAudioConnectionAnalog                           = /* 'anlg' */ 0x616E6C67
 } BMDAudioConnection;
 
-/* End Enum BMDAudioConnection */
 
 /* Enum BMDVideoOutputConversionMode - Video/audio conversion mode */
 
 typedef [v1_enum] enum	_BMDVideoOutputConversionMode {
     bmdNoVideoOutputConversion                         = /* 'none' */ 0x6E6F6E65,
-    bmdVideoOutputLetterboxDownonversion               = /* 'ltbx' */ 0x6C746278,
-    bmdVideoOutputAnamorphicDownonversion              = /* 'amph' */ 0x616D7068,
+    bmdVideoOutputLetterboxDownconversion              = /* 'ltbx' */ 0x6C746278,
+    bmdVideoOutputAnamorphicDownconversion             = /* 'amph' */ 0x616D7068,
     bmdVideoOutputHD720toHD1080Conversion              = /* '720c' */ 0x37323063,
     bmdVideoOutputHardwareLetterboxDownconversion      = /* 'HWlb' */ 0x48576C62,
     bmdVideoOutputHardwareAnamorphicDownconversion     = /* 'HWam' */ 0x4857616D,
-    bmdVideoOutputHardwareCenterCutDownconversion      = /* 'HWcc' */ 0x48576363
+    bmdVideoOutputHardwareCenterCutDownconversion      = /* 'HWcc' */ 0x48576363,
+    bmdVideoOutputHardware720p1080pCrossconversion     = /* 'xcap' */ 0x78636170,
+    bmdVideoOutputHardwareAnamorphic720pUpconversion   = /* 'ua7p' */ 0x75613770,
+    bmdVideoOutputHardwareAnamorphic1080iUpconversion  = /* 'ua1i' */ 0x75613169,
+    bmdVideoOutputHardwarePillarbox720pUpconversion    = /* 'up7p' */ 0x75703770,
+    bmdVideoOutputHardwarePillarbox1080iUpconversion   = /* 'up1i' */ 0x75703169
 } BMDVideoOutputConversionMode;
 
-/* End Enum BMDVideoOutputConversionMode */
 
 /* Enum BMDVideoInputConversionMode - Video input conversion mode */
 
@@ -297,7 +286,6 @@
     bmdVideoInputAnamorphicUpconversion                = /* 'amup' */ 0x616D7570
 } BMDVideoInputConversionMode;
 
-/* End Enum BMDVideoInputConversionMode */
 
 /* Enum BMDDeckLinkAttributeID - DeckLink Atribute ID */
 
@@ -320,7 +308,6 @@
     BMDDeckLinkSerialPortDeviceName                    = /* 'slpn' */ 0x736C706E
 } BMDDeckLinkAttributeID;
 
-/* End Enum BMDDeckLinkAttributeID */
 
 /* Enum BMDDeckLinkAPIInformationID - DeckLinkAPI information ID */
 
@@ -328,7 +315,98 @@
     BMDDeckLinkAPIVersion                              = /* 'vers' */ 0x76657273
 } BMDDeckLinkAPIInformationID;
 
-/* End Enum BMDDeckLinkAPIInformationID */
+
+/* Enum BMDDeckControlMode - DeckControl mode */
+
+typedef [v1_enum] enum	_BMDDeckControlMode {
+    bmdDeckControlNotOpened                            = /* 'ntop' */ 0x6E746F70,
+    bmdDeckControlVTRControlMode                       = /* 'vtrc' */ 0x76747263,
+    bmdDeckControlExportMode                           = /* 'expm' */ 0x6578706D,
+    bmdDeckControlCaptureMode                          = /* 'capm' */ 0x6361706D
+} BMDDeckControlMode;
+
+
+/* Enum BMDDeckControlEvent - DeckControl event */
+
+typedef [v1_enum] enum	_BMDDeckControlEvent {
+    bmdDeckControlAbortedEvent                         = /* 'abte' */ 0x61627465,	// This event is triggered when a capture or edit-to-tape operation is aborted.
+
+    /* Export-To-Tape events */
+
+    bmdDeckControlPrepareForExportEvent                = /* 'pfee' */ 0x70666565,	// This event is triggered a few frames before reaching the in-point. IDeckLinkInput::StartScheduledPlayback() should be called at this point.
+    bmdDeckControlExportCompleteEvent                  = /* 'exce' */ 0x65786365,	// This event is triggered a few frames after reaching the out-point. At this point, it is safe to stop playback.
+
+    /* Capture events */
+
+    bmdDeckControlPrepareForCaptureEvent               = /* 'pfce' */ 0x70666365,	// This event is triggered a few frames before reaching the in-point. The serial timecode attached to IDeckLinkVideoInputFrames is now valid.
+    bmdDeckControlCaptureCompleteEvent                 = /* 'ccev' */ 0x63636576	// This event is triggered a few frames after reaching the out-point.
+} BMDDeckControlEvent;
+
+
+/* Enum BMDDeckControlVTRControlState - VTR Control state */
+
+typedef [v1_enum] enum	_BMDDeckControlVTRControlState {
+    bmdDeckControlNotInVTRControlMode                  = /* 'nvcm' */ 0x6E76636D,
+    bmdDeckControlVTRControlPlaying                    = /* 'vtrp' */ 0x76747270,
+    bmdDeckControlVTRControlRecording                  = /* 'vtrr' */ 0x76747272,
+    bmdDeckControlVTRControlStill                      = /* 'vtra' */ 0x76747261,
+    bmdDeckControlVTRControlSeeking                    = /* 'vtrs' */ 0x76747273,
+    bmdDeckControlVTRControlStopped                    = /* 'vtro' */ 0x7674726F
+} BMDDeckControlVTRControlState;
+
+
+/* Enum BMDDeckControlStatusFlags - Deck Control status flags */
+
+[v1_enum] enum	_BMDDeckControlStatusFlags {
+    bmdDeckControlStatusDeckConnected                  = 1 << 0,
+    bmdDeckControlStatusRemoteMode                     = 1 << 1,
+    bmdDeckControlStatusRecordInhibited                = 1 << 2,
+    bmdDeckControlStatusCassetteOut                    = 1 << 3
+};
+
+
+/* Enum BMDDeckControlExportModeOpsFlags - Export mode flags */
+
+[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
+};
+
+
+/* Enum BMDDeckControlError - Deck Control error */
+
+typedef [v1_enum] enum	_BMDDeckControlError {
+    bmdDeckControlNoError                              = /* 'noer' */ 0x6E6F6572,
+    bmdDeckControlModeError                            = /* 'moer' */ 0x6D6F6572,
+    bmdDeckControlMissedInPointError                   = /* 'mier' */ 0x6D696572,
+    bmdDeckControlDeckTimeoutError                     = /* 'dter' */ 0x64746572,
+    bmdDeckControlCommandFailedError                   = /* 'cfer' */ 0x63666572,
+    bmdDeckControlDeviceAlreadyOpenedError             = /* 'dalo' */ 0x64616C6F,
+    bmdDeckControlFailedToOpenDeviceError              = /* 'fder' */ 0x66646572,
+    bmdDeckControlInLocalModeError                     = /* 'lmer' */ 0x6C6D6572,
+    bmdDeckControlEndOfTapeError                       = /* 'eter' */ 0x65746572,
+    bmdDeckControlUserAbortError                       = /* 'uaer' */ 0x75616572,
+    bmdDeckControlNoTapeInDeckError                    = /* 'nter' */ 0x6E746572,
+    bmdDeckControlNoVideoFromCardError                 = /* 'nvfc' */ 0x6E766663,
+    bmdDeckControlNoCommunicationError                 = /* 'ncom' */ 0x6E636F6D,
+    bmdDeckControlUnknownError                         = /* 'uner' */ 0x756E6572
+} BMDDeckControlError;
+
 
 /* Forward Declarations */
 
@@ -354,8 +432,10 @@
 interface IDeckLinkConfiguration;
 interface IDeckLinkAttributes;
 interface IDeckLinkKeyer;
+interface IDeckLinkVideoConversion;
+interface IDeckLinkDeckControlStatusCallback;
+interface IDeckLinkDeckControl;
 
-/* End Forward Declarations */
 
 /* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
 
@@ -369,7 +449,6 @@
     HRESULT ScheduledPlaybackHasStopped(void);
 };
 
-/* End Interface IDeckLinkVideoOutputCallback */
 
 /* Interface IDeckLinkInputCallback - Frame arrival callback. */
 
@@ -380,10 +459,9 @@
 ] interface IDeckLinkInputCallback : IUnknown
 {
     HRESULT VideoInputFormatChanged([in] BMDVideoInputFormatChangedEvents notificationEvents, [in] IDeckLinkDisplayMode *newDisplayMode, [in] BMDDetectedVideoInputFormatFlags detectedSignalFlags);
-    HRESULT VideoInputFrameArrived([in] IDeckLinkVideoInputFrame *videoFrame, [in] IDeckLinkAudioInputPacket *audioPacket);
+    HRESULT VideoInputFrameArrived([in] IDeckLinkVideoInputFrame* videoFrame, [in] IDeckLinkAudioInputPacket* audioPacket);
 };
 
-/* End Interface IDeckLinkInputCallback */
 
 /* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */
 
@@ -401,7 +479,6 @@
     HRESULT Decommit(void);
 };
 
-/* End Interface IDeckLinkMemoryAllocator */
 
 /* Interface IDeckLinkAudioOutputCallback - Optional callback to allow audio samples to be pulled as required. */
 
@@ -415,7 +492,6 @@
     HRESULT RenderAudioSamples(BOOL preroll);
 };
 
-/* End Interface IDeckLinkAudioOutputCallback */
 
 /* Interface IDeckLinkIterator - enumerates installed DeckLink hardware */
 
@@ -428,7 +504,6 @@
     HRESULT Next([out] IDeckLink **deckLinkInstance);
 };
 
-/* End Interface IDeckLinkIterator */
 
 /* Interface IDeckLinkAPIInformation - DeckLinkAPI attribute interface */
 
@@ -444,7 +519,6 @@
     HRESULT GetString([in] BMDDeckLinkAPIInformationID cfgID, [out] BSTR *value);
 };
 
-/* End Interface IDeckLinkAPIInformation */
 
 /* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */
 
@@ -457,7 +531,6 @@
     HRESULT Next([out] IDeckLinkDisplayMode **deckLinkDisplayMode);
 };
 
-/* End Interface IDeckLinkDisplayModeIterator */
 
 /* Interface IDeckLinkDisplayMode - represents a display mode */
 
@@ -475,7 +548,6 @@
     BMDFieldDominance GetFieldDominance(void);
 };
 
-/* End Interface IDeckLinkDisplayMode */
 
 /* Interface IDeckLink - represents a DeckLink device */
 
@@ -488,7 +560,6 @@
     HRESULT GetModelName([out] BSTR *modelName);
 };
 
-/* End Interface IDeckLink */
 
 /* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
 
@@ -511,7 +582,7 @@
 
     HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);
     HRESULT CreateVideoFrame(long width, long height, long rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame **outFrame);
-    HRESULT CreateAncillaryData(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
+    HRESULT CreateAncillaryData(BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
 
     HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame *theFrame);
     HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale);
@@ -546,7 +617,6 @@
     HRESULT GetHardwareReferenceClock(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);
 };
 
-/* End Interface IDeckLinkOutput */
 
 /* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
 
@@ -586,7 +656,6 @@
     HRESULT GetHardwareReferenceClock(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);
 };
 
-/* End Interface IDeckLinkInput */
 
 /* Interface IDeckLinkTimecode - Used for video frame timecode representation. */
 
@@ -602,7 +671,6 @@
     BMDTimecodeFlags GetFlags(void);
 };
 
-/* End Interface IDeckLinkTimecode */
 
 /* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
 
@@ -624,7 +692,6 @@
     HRESULT GetAncillaryData([out] IDeckLinkVideoFrameAncillary **ancillary);
 };
 
-/* End Interface IDeckLinkVideoFrame */
 
 /* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
 
@@ -642,7 +709,6 @@
     HRESULT SetAncillaryData([in] IDeckLinkVideoFrameAncillary *ancillary);
 };
 
-/* End Interface IDeckLinkMutableVideoFrame */
 
 /* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
 
@@ -657,7 +723,6 @@
     HRESULT GetHardwareReferenceTimestamp(BMDTimeScale timeScale, [out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration);
 };
 
-/* End Interface IDeckLinkVideoInputFrame */
 
 /* Interface IDeckLinkVideoFrameAncillary - Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
 
@@ -674,7 +739,6 @@
     BMDDisplayMode GetDisplayMode(void);
 };
 
-/* End Interface IDeckLinkVideoFrameAncillary */
 
 /* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */
 
@@ -690,7 +754,6 @@
     HRESULT GetPacketTime([out] BMDTimeValue *packetTime, BMDTimeScale timeScale);
 };
 
-/* End Interface IDeckLinkAudioInputPacket */
 
 /* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
 
@@ -704,7 +767,6 @@
     HRESULT DrawFrame([in] IDeckLinkVideoFrame *theFrame);
 };
 
-/* End Interface IDeckLinkScreenPreviewCallback */
 
 /* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
 
@@ -723,7 +785,6 @@
     HRESULT SetFrame([in] IDeckLinkVideoFrame *theFrame);
 };
 
-/* End Interface IDeckLinkGLScreenPreviewHelper */
 
 /* Interface IDeckLinkConfiguration - Created by QueryInterface from IDeckLink. */
 
@@ -782,7 +843,6 @@
     HRESULT GetAudioInputFormat([out] BMDAudioConnection *audioInputFormat);
 };
 
-/* End Interface IDeckLinkConfiguration */
 
 /* Interface IDeckLinkAttributes - DeckLink Attribute interface */
 
@@ -799,7 +859,6 @@
     HRESULT GetString([in] BMDDeckLinkAttributeID cfgID, [out] BSTR *value);
 };
 
-/* End Interface IDeckLinkAttributes */
 
 /* Interface IDeckLinkKeyer - DeckLink Keyer interface */
 
@@ -817,7 +876,77 @@
     HRESULT Disable(void);
 };
 
-/* End Interface IDeckLinkKeyer */
+
+/* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
+
+[
+    object,
+    uuid(3EB504C9-F97D-40FE-A158-D407D48CB53B),
+    local, 
+    helpstring("Created with CoCreateInstance().")
+] interface IDeckLinkVideoConversion : IUnknown
+{
+    HRESULT ConvertFrame([in] IDeckLinkVideoFrame* srcFrame, [in] IDeckLinkVideoFrame* dstFrame);
+};
+
+
+/* Interface IDeckLinkDeckControlStatusCallback - Deck control state change callback. */
+
+[
+    object,
+    uuid(E5F693C1-4283-4716-B18F-C1431521955B),
+    helpstring("Deck control state change callback.")
+] interface IDeckLinkDeckControlStatusCallback : IUnknown
+{
+    HRESULT TimecodeUpdate([in] BMDTimecodeBCD currentTimecode);
+    HRESULT VTRControlStateChanged([in] BMDDeckControlVTRControlState newState, [in] BMDDeckControlError error);
+    HRESULT DeckControlEventReceived([in] BMDDeckControlEvent event, [in] BMDDeckControlError error);
+    HRESULT DeckControlStatusChanged([in] BMDDeckControlStatusFlags flags, [in] unsigned long mask);
+};
+
+
+/* Interface IDeckLinkDeckControl - Deck Control main interface */
+
+[
+    object,
+    uuid(A4D81043-0619-42B7-8ED6-602D29041DF7),
+    helpstring("Deck Control main interface")
+] interface IDeckLinkDeckControl : 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);
+};
+
 
 /* Coclasses */
 
@@ -839,7 +968,14 @@
     [default] interface IDeckLinkGLScreenPreviewHelper;
 };
 
-/* End Coclasses */
+[
+    uuid(FFA84F77-73BE-4FB7-B03E-B5E44B9F759B),
+    helpstring("CDeckLinkVideoConversion Class")
+] coclass CDeckLinkVideoConversion
+{
+    [default] interface IDeckLinkVideoConversion;
+};
+
 
 // import deprecated interfaces
 #include "DeckLinkAPI_v7_1.idl"

Added: vic/branches/mpeg4/video/DeckLinkAPI_h.h
==============================================================================
--- (empty file)
+++ vic/branches/mpeg4/video/DeckLinkAPI_h.h	Tue May 11 09:19:57 2010
@@ -0,0 +1,6328 @@
+
+
+/* this ALWAYS GENERATED file contains the definitions for the interfaces */
+
+
+ /* File created by MIDL compiler version 7.00.0500 */
+/* at Tue May 11 18:13:54 2010
+ */
+/* Compiler settings for .\video\DeckLinkAPI.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run)
+    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 __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 __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 __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 __IDeckLinkTimecode_FWD_DEFINED__
+#define __IDeckLinkTimecode_FWD_DEFINED__
+typedef interface IDeckLinkTimecode IDeckLinkTimecode;
+#endif 	/* __IDeckLinkTimecode_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 __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 __IDeckLinkConfiguration_FWD_DEFINED__
+#define __IDeckLinkConfiguration_FWD_DEFINED__
+typedef interface IDeckLinkConfiguration IDeckLinkConfiguration;
+#endif 	/* __IDeckLinkConfiguration_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 __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 __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 __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 __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 __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__ */
+
+
+#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__ */
+
+
+/* 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 BMDFrameFlags;
+typedef unsigned long BMDVideoInputFlags;
+typedef unsigned long BMDVideoInputFormatChangedEvents;
+typedef unsigned long BMDDetectedVideoInputFormatFlags;
+typedef unsigned long BMDTimecodeFlags;
+typedef unsigned long BMDAnalogVideoFlags;
+typedef unsigned long BMDDeckControlStatusFlags;
+typedef unsigned long BMDDeckControlExportModeOpsFlags;
+#if 0
+typedef enum _BMDFrameFlags BMDFrameFlags;
+
+typedef enum _BMDVideoInputFlags BMDVideoInputFlags;
+
+typedef enum _BMDVideoInputFormatChangedEvents BMDVideoInputFormatChangedEvents;
+
+typedef enum _BMDDetectedVideoInputFormatFlags BMDDetectedVideoInputFormatFlags;
+
+typedef enum _BMDTimecodeFlags BMDTimecodeFlags;
+
+typedef enum _BMDAnalogVideoFlags BMDAnalogVideoFlags;
+
+typedef enum _BMDDeckControlStatusFlags BMDDeckControlStatusFlags;
+
+typedef enum _BMDDeckControlExportModeOpsFlags BMDDeckControlExportModeOpsFlags;
+
+#endif
+typedef /* [v1_enum] */ 
+enum _BMDDisplayMode
+    {	bmdModeNTSC	= 0x6e747363,
+	bmdModeNTSC2398	= 0x6e743233,
+	bmdModePAL	= 0x70616c20,
+	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
+    } 	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;
+
+typedef /* [v1_enum] */ 
+enum _BMDVideoOutputFlags
+    {	bmdVideoOutputFlagDefault	= 0,
+	bmdVideoOutputVANC	= ( 1 << 0 ) ,
+	bmdVideoOutputVITC	= ( 1 << 1 ) ,
+	bmdVideoOutputRP188	= ( 1 << 2 ) 
+    } 	BMDVideoOutputFlags;
+
+/* [v1_enum] */ 
+enum _BMDFrameFlags
+    {	bmdFrameFlagDefault	= 0,
+	bmdFrameFlagFlipVertical	= ( 1 << 0 ) ,
+	bmdFrameHasNoInputSource	= ( 1 << 31 ) 
+    } ;
+/* [v1_enum] */ 
+enum _BMDVideoInputFlags
+    {	bmdVideoInputFlagDefault	= 0,
+	bmdVideoInputEnableFormatDetection	= ( 1 << 0 ) 
+    } ;
+/* [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 _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
+    {	bmdTimecodeRP188	= 0x72703138,
+	bmdTimecodeVITC	= 0x76697463,
+	bmdTimecodeSerial	= 0x73657269
+    } 	BMDTimecodeFormat;
+
+/* [v1_enum] */ 
+enum _BMDTimecodeFlags
+    {	bmdTimecodeFlagDefault	= 0,
+	bmdTimecodeIsDropFrame	= ( 1 << 0 ) 
+    } ;
+typedef /* [v1_enum] */ 
+enum _BMDVideoConnection
+    {	bmdVideoConnectionSDI	= 0x73646920,
+	bmdVideoConnectionHDMI	= 0x68646d69,
+	bmdVideoConnectionOpticalSDI	= 0x6f707469,
+	bmdVideoConnectionComponent	= 0x63706e74,
+	bmdVideoConnectionComposite	= 0x636d7374,
+	bmdVideoConnectionSVideo	= 0x73766964
+    } 	BMDVideoConnection;
+
+/* [v1_enum] */ 
+enum _BMDAnalogVideoFlags
+    {	bmdAnalogVideoFlagCompositeSetup75	= ( 1 << 0 ) ,
+	bmdAnalogVideoFlagComponentBetacamLevels	= ( 1 << 1 ) 
+    } ;
+typedef /* [v1_enum] */ 
+enum _BMDAudioConnection
+    {	bmdAudioConnectionEmbedded	= 0x656d6264,
+	bmdAudioConnectionAESEBU	= 0x61657320,
+	bmdAudioConnectionAnalog	= 0x616e6c67
+    } 	BMDAudioConnection;
+
+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,
+	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 _BMDDeckLinkAttributeID
+    {	BMDDeckLinkSupportsInternalKeying	= 0x6b657969,
+	BMDDeckLinkSupportsExternalKeying	= 0x6b657965,
+	BMDDeckLinkSupportsHDKeying	= 0x6b657968,
+	BMDDeckLinkSupportsInputFormatDetection	= 0x696e6664,
+	BMDDeckLinkHasSerialPort	= 0x68737074,
+	BMDDeckLinkMaximumAudioChannels	= 0x6d616368,
+	BMDDeckLinkSerialPortDeviceName	= 0x736c706e
+    } 	BMDDeckLinkAttributeID;
+
+typedef /* [v1_enum] */ 
+enum _BMDDeckLinkAPIInformationID
+    {	BMDDeckLinkAPIVersion	= 0x76657273
+    } 	BMDDeckLinkAPIInformationID;
+
+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,
+	bmdDeckControlVTRControlSeeking	= 0x76747273,
+	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,
+	bmdDeckControlUnknownError	= 0x756e6572
+    } 	BMDDeckControlError;
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+EXTERN_C const IID LIBID_DeckLinkAPI;
+
+#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("E763A626-4A3C-49D1-BF13-E7AD3692AE52")
+    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,
+            /* [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("31D28EE7-88B6-4CB1-897A-CDBF79A26414")
+    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,
+            /* [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( 
+            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,
+            /* [iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkMemoryAllocator * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkMemoryAllocator * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *AllocateBuffer )( 
+            IDeckLinkMemoryAllocator * This,
+            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( 
+            BOOL preroll) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkAudioOutputCallbackVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkAudioOutputCallback * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkAudioOutputCallback * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkAudioOutputCallback * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *RenderAudioSamples )( 
+            IDeckLinkAudioOutputCallback * This,
+            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("74E936FC-CC28-4A67-81A0-1E94E52D4E69")
+    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,
+            /* [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,
+            /* [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 __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("455D741F-1779-4800-86F5-0B5D13D79751")
+    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,
+            /* [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("87451E84-2B7E-439E-A629-4393EA4A8550")
+    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;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkDisplayModeVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDisplayMode * This,
+            /* [in] */ REFIID riid,
+            /* [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);
+        
+        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) ) 
+
+#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("62BFF75D-6569-4E55-8D4D-66AA03829ABC")
+    IDeckLink : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetModelName( 
+            /* [out] */ BSTR *modelName) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLink * This,
+            /* [in] */ REFIID riid,
+            /* [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);
+        
+        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) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLink_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("29228142-EB8C-4141-A621-F74026450955")
+    IDeckLinkOutput : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator **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 **outFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( 
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( 
+            /* [in] */ IDeckLinkVideoFrame *theFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( 
+            /* [in] */ IDeckLinkVideoFrame *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 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 IDeckLinkOutputVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkOutput * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkOutput * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkOutput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkOutput * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkOutput * This,
+            /* [out] */ IDeckLinkDisplayModeIterator **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( 
+            IDeckLinkOutput * This,
+            BMDDisplayMode displayMode,
+            BMDVideoOutputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( 
+            IDeckLinkOutput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( 
+            IDeckLinkOutput * This,
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame **outFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( 
+            IDeckLinkOutput * This,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkVideoFrame *theFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkVideoFrame *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( 
+            IDeckLinkOutput * This,
+            /* [in] */ IDeckLinkVideoOutputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( 
+            IDeckLinkOutput * This,
+            /* [out] */ unsigned long *bufferedFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( 
+            IDeckLinkOutput * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount,
+            BMDAudioOutputStreamType streamType);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( 
+            IDeckLinkOutput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( 
+            IDeckLinkOutput * This,
+            /* [in] */ void *buffer,
+            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,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            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,
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( 
+            IDeckLinkOutput * This,
+            BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( 
+            IDeckLinkOutput * This,
+            /* [out] */ BOOL *active);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetScheduledStreamTime )( 
+            IDeckLinkOutput * This,
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *streamTime,
+            /* [out] */ double *playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkOutput * This,
+            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,result)	\
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+
+#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_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("300C135A-9F43-48E2-9906-6D7911D93CF1")
+    IDeckLinkInput : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator **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 *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            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,
+            /* [iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInput * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkInput * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkInput * This,
+            /* [out] */ IDeckLinkDisplayModeIterator **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkInput * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( 
+            IDeckLinkInput * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( 
+            IDeckLinkInput * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( 
+            IDeckLinkInput * This,
+            /* [out] */ unsigned long *availableFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( 
+            IDeckLinkInput * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            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,
+            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,result)	\
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+
+#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_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 __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("EFB9BCA6-A521-44F7-BD69-2332F24D9EE6")
+    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;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkTimecodeVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkTimecode * This,
+            /* [in] */ REFIID riid,
+            /* [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);
+        
+        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) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkTimecode_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("A8D8238E-6B18-4196-99E1-5AF717B83D32")
+    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( 
+            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,
+            /* [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,
+            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("46FCEE00-B4E6-43D0-91C0-023A7FCEB34F")
+    IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE SetFlags( 
+            BMDFrameFlags newFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetTimecode( 
+            BMDTimecodeFormat format,
+            /* [in] */ IDeckLinkTimecode *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 IDeckLinkMutableVideoFrameVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [in] */ REFIID riid,
+            /* [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,
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFlags )( 
+            IDeckLinkMutableVideoFrame * This,
+            BMDFrameFlags newFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetTimecode )( 
+            IDeckLinkMutableVideoFrame * This,
+            BMDTimecodeFormat format,
+            /* [in] */ IDeckLinkTimecode *timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetTimecodeFromComponents )( 
+            IDeckLinkMutableVideoFrame * This,
+            BMDTimecodeFormat format,
+            unsigned char hours,
+            unsigned char minutes,
+            unsigned char seconds,
+            unsigned char frames,
+            BMDTimecodeFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAncillaryData )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [in] */ IDeckLinkVideoFrameAncillary *ancillary);
+        
+        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) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkMutableVideoFrame_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("9A74FA41-AE9F-47AC-8CF4-01F42DD59965")
+    IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
+    {
+    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 IDeckLinkVideoInputFrameVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoInputFrame * This,
+            /* [in] */ REFIID riid,
+            /* [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,
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkVideoInputFrame * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( 
+            IDeckLinkVideoInputFrame * This,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceTimestamp )( 
+            IDeckLinkVideoInputFrame * This,
+            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( 
+            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,
+            /* [iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoFrameAncillary * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoFrameAncillary * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferForVerticalBlankingLine )( 
+            IDeckLinkVideoFrameAncillary * This,
+            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,
+            BMDTimeScale timeScale) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkAudioInputPacketVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkAudioInputPacket * This,
+            /* [in] */ REFIID riid,
+            /* [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,
+            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("373F499D-4B4D-4518-AD22-6354E5A5825E")
+    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,
+            /* [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("BA575CD9-A15E-497B-B2C2-F9AFE7BE4EBA")
+    IDeckLinkGLScreenPreviewHelper : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE InitializeGL( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PaintGL( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetFrame( 
+            /* [in] */ IDeckLinkVideoFrame *theFrame) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkGLScreenPreviewHelperVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkGLScreenPreviewHelper * This,
+            /* [in] */ REFIID riid,
+            /* [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);
+        
+        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) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkGLScreenPreviewHelper_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkConfiguration_INTERFACE_DEFINED__
+#define __IDeckLinkConfiguration_INTERFACE_DEFINED__
+
+/* interface IDeckLinkConfiguration */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkConfiguration;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("B8EAD569-B764-47F0-A73F-AE40DF6CBF10")
+    IDeckLinkConfiguration : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetConfigurationValidator( 
+            /* [out] */ IDeckLinkConfiguration **configObject) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFormat( 
+            BMDVideoConnection videoOutputConnection) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsVideoOutputActive( 
+            BMDVideoConnection videoOutputConnection,
+            /* [out] */ BOOL *active) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAnalogVideoOutputFlags( 
+            BMDAnalogVideoFlags analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAnalogVideoOutputFlags( 
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableFieldFlickerRemovalWhenPaused( 
+            BOOL enable) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsEnabledFieldFlickerRemovalWhenPaused( 
+            /* [out] */ BOOL *enabled) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set444And3GBpsVideoOutput( 
+            BOOL enable444VideoOutput,
+            BOOL enable3GbsOutput) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Get444And3GBpsVideoOutput( 
+            /* [out] */ BOOL *is444VideoOutputEnabled,
+            /* [out] */ BOOL *threeGbsOutputEnabled) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputConversionMode( 
+            BMDVideoOutputConversionMode conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoOutputConversionMode( 
+            /* [out] */ BMDVideoOutputConversionMode *conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set_HD1080p24_to_HD1080i5994_Conversion( 
+            BOOL enable) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Get_HD1080p24_to_HD1080i5994_Conversion( 
+            /* [out] */ BOOL *enabled) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoInputFormat( 
+            BMDVideoConnection videoInputFormat) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoInputFormat( 
+            /* [out] */ BMDVideoConnection *videoInputFormat) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAnalogVideoInputFlags( 
+            BMDAnalogVideoFlags analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAnalogVideoInputFlags( 
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoInputConversionMode( 
+            BMDVideoInputConversionMode conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoInputConversionMode( 
+            /* [out] */ BMDVideoInputConversionMode *conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetBlackVideoOutputDuringCapture( 
+            BOOL blackOutInCapture) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBlackVideoOutputDuringCapture( 
+            /* [out] */ BOOL *blackOutInCapture) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set32PulldownSequenceInitialTimecodeFrame( 
+            unsigned long aFrameTimecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Get32PulldownSequenceInitialTimecodeFrame( 
+            /* [out] */ unsigned long *aFrameTimecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVancSourceLineMapping( 
+            unsigned long activeLine1VANCsource,
+            unsigned long activeLine2VANCsource,
+            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( 
+            BMDAudioConnection audioInputFormat) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAudioInputFormat( 
+            /* [out] */ BMDAudioConnection *audioInputFormat) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkConfigurationVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkConfiguration * This,
+            /* [in] */ REFIID riid,
+            /* [iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkConfiguration * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkConfiguration * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetConfigurationValidator )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ IDeckLinkConfiguration **configObject);
+        
+        HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( 
+            IDeckLinkConfiguration * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFormat )( 
+            IDeckLinkConfiguration * This,
+            BMDVideoConnection videoOutputConnection);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsVideoOutputActive )( 
+            IDeckLinkConfiguration * This,
+            BMDVideoConnection videoOutputConnection,
+            /* [out] */ BOOL *active);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAnalogVideoOutputFlags )( 
+            IDeckLinkConfiguration * This,
+            BMDAnalogVideoFlags analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAnalogVideoOutputFlags )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableFieldFlickerRemovalWhenPaused )( 
+            IDeckLinkConfiguration * This,
+            BOOL enable);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsEnabledFieldFlickerRemovalWhenPaused )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ BOOL *enabled);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set444And3GBpsVideoOutput )( 
+            IDeckLinkConfiguration * This,
+            BOOL enable444VideoOutput,
+            BOOL enable3GbsOutput);
+        
+        HRESULT ( STDMETHODCALLTYPE *Get444And3GBpsVideoOutput )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ BOOL *is444VideoOutputEnabled,
+            /* [out] */ BOOL *threeGbsOutputEnabled);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputConversionMode )( 
+            IDeckLinkConfiguration * This,
+            BMDVideoOutputConversionMode conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoOutputConversionMode )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ BMDVideoOutputConversionMode *conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set_HD1080p24_to_HD1080i5994_Conversion )( 
+            IDeckLinkConfiguration * This,
+            BOOL enable);
+        
+        HRESULT ( STDMETHODCALLTYPE *Get_HD1080p24_to_HD1080i5994_Conversion )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ BOOL *enabled);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoInputFormat )( 
+            IDeckLinkConfiguration * This,
+            BMDVideoConnection videoInputFormat);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoInputFormat )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ BMDVideoConnection *videoInputFormat);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAnalogVideoInputFlags )( 
+            IDeckLinkConfiguration * This,
+            BMDAnalogVideoFlags analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAnalogVideoInputFlags )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoInputConversionMode )( 
+            IDeckLinkConfiguration * This,
+            BMDVideoInputConversionMode conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoInputConversionMode )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ BMDVideoInputConversionMode *conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetBlackVideoOutputDuringCapture )( 
+            IDeckLinkConfiguration * This,
+            BOOL blackOutInCapture);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBlackVideoOutputDuringCapture )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ BOOL *blackOutInCapture);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set32PulldownSequenceInitialTimecodeFrame )( 
+            IDeckLinkConfiguration * This,
+            unsigned long aFrameTimecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *Get32PulldownSequenceInitialTimecodeFrame )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ unsigned long *aFrameTimecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVancSourceLineMapping )( 
+            IDeckLinkConfiguration * This,
+            unsigned long activeLine1VANCsource,
+            unsigned long activeLine2VANCsource,
+            unsigned long activeLine3VANCsource);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVancSourceLineMapping )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ unsigned long *activeLine1VANCsource,
+            /* [out] */ unsigned long *activeLine2VANCsource,
+            /* [out] */ unsigned long *activeLine3VANCsource);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAudioInputFormat )( 
+            IDeckLinkConfiguration * This,
+            BMDAudioConnection audioInputFormat);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAudioInputFormat )( 
+            IDeckLinkConfiguration * This,
+            /* [out] */ BMDAudioConnection *audioInputFormat);
+        
+        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_GetConfigurationValidator(This,configObject)	\
+    ( (This)->lpVtbl -> GetConfigurationValidator(This,configObject) ) 
+
+#define IDeckLinkConfiguration_WriteConfigurationToPreferences(This)	\
+    ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) 
+
+#define IDeckLinkConfiguration_SetVideoOutputFormat(This,videoOutputConnection)	\
+    ( (This)->lpVtbl -> SetVideoOutputFormat(This,videoOutputConnection) ) 
+
+#define IDeckLinkConfiguration_IsVideoOutputActive(This,videoOutputConnection,active)	\
+    ( (This)->lpVtbl -> IsVideoOutputActive(This,videoOutputConnection,active) ) 
+
+#define IDeckLinkConfiguration_SetAnalogVideoOutputFlags(This,analogVideoFlags)	\
+    ( (This)->lpVtbl -> SetAnalogVideoOutputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_GetAnalogVideoOutputFlags(This,analogVideoFlags)	\
+    ( (This)->lpVtbl -> GetAnalogVideoOutputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_EnableFieldFlickerRemovalWhenPaused(This,enable)	\
+    ( (This)->lpVtbl -> EnableFieldFlickerRemovalWhenPaused(This,enable) ) 
+
+#define IDeckLinkConfiguration_IsEnabledFieldFlickerRemovalWhenPaused(This,enabled)	\
+    ( (This)->lpVtbl -> IsEnabledFieldFlickerRemovalWhenPaused(This,enabled) ) 
+
+#define IDeckLinkConfiguration_Set444And3GBpsVideoOutput(This,enable444VideoOutput,enable3GbsOutput)	\
+    ( (This)->lpVtbl -> Set444And3GBpsVideoOutput(This,enable444VideoOutput,enable3GbsOutput) ) 
+
+#define IDeckLinkConfiguration_Get444And3GBpsVideoOutput(This,is444VideoOutputEnabled,threeGbsOutputEnabled)	\
+    ( (This)->lpVtbl -> Get444And3GBpsVideoOutput(This,is444VideoOutputEnabled,threeGbsOutputEnabled) ) 
+
+#define IDeckLinkConfiguration_SetVideoOutputConversionMode(This,conversionMode)	\
+    ( (This)->lpVtbl -> SetVideoOutputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_GetVideoOutputConversionMode(This,conversionMode)	\
+    ( (This)->lpVtbl -> GetVideoOutputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_Set_HD1080p24_to_HD1080i5994_Conversion(This,enable)	\
+    ( (This)->lpVtbl -> Set_HD1080p24_to_HD1080i5994_Conversion(This,enable) ) 
+
+#define IDeckLinkConfiguration_Get_HD1080p24_to_HD1080i5994_Conversion(This,enabled)	\
+    ( (This)->lpVtbl -> Get_HD1080p24_to_HD1080i5994_Conversion(This,enabled) ) 
+
+#define IDeckLinkConfiguration_SetVideoInputFormat(This,videoInputFormat)	\
+    ( (This)->lpVtbl -> SetVideoInputFormat(This,videoInputFormat) ) 
+
+#define IDeckLinkConfiguration_GetVideoInputFormat(This,videoInputFormat)	\
+    ( (This)->lpVtbl -> GetVideoInputFormat(This,videoInputFormat) ) 
+
+#define IDeckLinkConfiguration_SetAnalogVideoInputFlags(This,analogVideoFlags)	\
+    ( (This)->lpVtbl -> SetAnalogVideoInputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_GetAnalogVideoInputFlags(This,analogVideoFlags)	\
+    ( (This)->lpVtbl -> GetAnalogVideoInputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_SetVideoInputConversionMode(This,conversionMode)	\
+    ( (This)->lpVtbl -> SetVideoInputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_GetVideoInputConversionMode(This,conversionMode)	\
+    ( (This)->lpVtbl -> GetVideoInputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_SetBlackVideoOutputDuringCapture(This,blackOutInCapture)	\
+    ( (This)->lpVtbl -> SetBlackVideoOutputDuringCapture(This,blackOutInCapture) ) 
+
+#define IDeckLinkConfiguration_GetBlackVideoOutputDuringCapture(This,blackOutInCapture)	\
+    ( (This)->lpVtbl -> GetBlackVideoOutputDuringCapture(This,blackOutInCapture) ) 
+
+#define IDeckLinkConfiguration_Set32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode)	\
+    ( (This)->lpVtbl -> Set32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode) ) 
+
+#define IDeckLinkConfiguration_Get32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode)	\
+    ( (This)->lpVtbl -> Get32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode) ) 
+
+#define IDeckLinkConfiguration_SetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource)	\
+    ( (This)->lpVtbl -> SetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource) ) 
+
+#define IDeckLinkConfiguration_GetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource)	\
+    ( (This)->lpVtbl -> GetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource) ) 
+
+#define IDeckLinkConfiguration_SetAudioInputFormat(This,audioInputFormat)	\
+    ( (This)->lpVtbl -> SetAudioInputFormat(This,audioInputFormat) ) 
+
+#define IDeckLinkConfiguration_GetAudioInputFormat(This,audioInputFormat)	\
+    ( (This)->lpVtbl -> GetAudioInputFormat(This,audioInputFormat) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkConfiguration_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,
+            /* [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,
+            /* [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("3EB504C9-F97D-40FE-A158-D407D48CB53B")
+    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,
+            /* [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__ */
+
+
+#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("E5F693C1-4283-4716-B18F-C1431521955B")
+    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,
+            /* [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("A4D81043-0619-42B7-8ED6-602D29041DF7")
+    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 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,
+            /* [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 *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_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__ */
+
+
+EXTERN_C const CLSID CLSID_CDeckLinkIterator;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("D9EDA3B3-2887-41FA-B724-017CF1EB1D37")
+CDeckLinkIterator;
+#endif
+
+EXTERN_C const CLSID CLSID_CDeckLinkGLScreenPreviewHelper;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("D398CEE7-4434-4CA3-9BA6-5AE34556B905")
+CDeckLinkGLScreenPreviewHelper;
+#endif
+
+EXTERN_C const CLSID CLSID_CDeckLinkVideoConversion;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("FFA84F77-73BE-4FB7-B03E-B5E44B9F759B")
+CDeckLinkVideoConversion;
+#endif
+
+#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,
+            /* [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,
+            /* [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,
+            /* [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,
+            /* [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,
+            /* [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,
+            /* [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,
+            /* [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,
+            /* [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,
+            /* [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__ */
+
+
+#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 *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,
+            /* [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 *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 **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 **outFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( 
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( 
+            /* [in] */ IDeckLinkVideoFrame *theFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( 
+            /* [in] */ IDeckLinkVideoFrame *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,
+            /* [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 **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 **outFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkVideoFrame *theFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkVideoFrame *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 **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,
+            /* [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 **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
+    {
+    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,
+            /* [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 **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__ */
+
+#endif /* __DeckLinkAPI_LIBRARY_DEFINED__ */
+
+/* Additional Prototypes for ALL interfaces */
+
+/* end of Additional Prototypes */
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif
+
+

Added: vic/branches/mpeg4/video/DeckLinkAPI_i.c
==============================================================================
--- (empty file)
+++ vic/branches/mpeg4/video/DeckLinkAPI_i.c	Tue May 11 09:19:57 2010
@@ -0,0 +1,202 @@
+
+
+/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
+
+/* link this file in with the server and any clients */
+
+
+ /* File created by MIDL compiler version 7.00.0500 */
+/* at Tue May 11 18:13:54 2010
+ */
+/* Compiler settings for .\video\DeckLinkAPI.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run)
+    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 */
+
+
+#ifdef __cplusplus
+extern "C"{
+#endif 
+
+
+#include <rpc.h>
+#include <rpcndr.h>
+
+#ifdef _MIDL_USE_GUIDDEF_
+
+#ifndef INITGUID
+#define INITGUID
+#include <guiddef.h>
+#undef INITGUID
+#else
+#include <guiddef.h>
+#endif
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+        DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8)
+
+#else // !_MIDL_USE_GUIDDEF_
+
+#ifndef __IID_DEFINED__
+#define __IID_DEFINED__
+
+typedef struct _IID
+{
+    unsigned long x;
+    unsigned short s1;
+    unsigned short s2;
+    unsigned char  c[8];
+} IID;
+
+#endif // __IID_DEFINED__
+
+#ifndef CLSID_DEFINED
+#define CLSID_DEFINED
+typedef IID CLSID;
+#endif // CLSID_DEFINED
+
+#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \
+        const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}}
+
+#endif !_MIDL_USE_GUIDDEF_
+
+MIDL_DEFINE_GUID(IID, LIBID_DeckLinkAPI,0xD864517A,0xEDD5,0x466D,0x86,0x7D,0xC8,0x19,0xF1,0xC0,0x52,0xBB);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoOutputCallback,0xE763A626,0x4A3C,0x49D1,0xBF,0x13,0xE7,0xAD,0x36,0x92,0xAE,0x52);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback,0x31D28EE7,0x88B6,0x4CB1,0x89,0x7A,0xCD,0xBF,0x79,0xA2,0x64,0x14);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkMemoryAllocator,0xB36EB6E7,0x9D29,0x4AA8,0x92,0xEF,0x84,0x3B,0x87,0xA2,0x89,0xE8);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkAudioOutputCallback,0x403C681B,0x7F46,0x4A12,0xB9,0x93,0x2B,0xB1,0x27,0x08,0x4E,0xE6);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkIterator,0x74E936FC,0xCC28,0x4A67,0x81,0xA0,0x1E,0x94,0xE5,0x2D,0x4E,0x69);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkAPIInformation,0x7BEA3C68,0x730D,0x4322,0xAF,0x34,0x8A,0x71,0x52,0xB5,0x32,0xA4);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayModeIterator,0x455D741F,0x1779,0x4800,0x86,0xF5,0x0B,0x5D,0x13,0xD7,0x97,0x51);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode,0x87451E84,0x2B7E,0x439E,0xA6,0x29,0x43,0x93,0xEA,0x4A,0x85,0x50);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLink,0x62BFF75D,0x6569,0x4E55,0x8D,0x4D,0x66,0xAA,0x03,0x82,0x9A,0xBC);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput,0x29228142,0xEB8C,0x4141,0xA6,0x21,0xF7,0x40,0x26,0x45,0x09,0x55);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput,0x300C135A,0x9F43,0x48E2,0x99,0x06,0x6D,0x79,0x11,0xD9,0x3C,0xF1);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkTimecode,0xEFB9BCA6,0xA521,0x44F7,0xBD,0x69,0x23,0x32,0xF2,0x4D,0x9E,0xE6);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame,0xA8D8238E,0x6B18,0x4196,0x99,0xE1,0x5A,0xF7,0x17,0xB8,0x3D,0x32);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkMutableVideoFrame,0x46FCEE00,0xB4E6,0x43D0,0x91,0xC0,0x02,0x3A,0x7F,0xCE,0xB3,0x4F);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame,0x9A74FA41,0xAE9F,0x47AC,0x8C,0xF4,0x01,0xF4,0x2D,0xD5,0x99,0x65);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameAncillary,0x732E723C,0xD1A4,0x4E29,0x9E,0x8E,0x4A,0x88,0x79,0x7A,0x00,0x04);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkAudioInputPacket,0xE43D5870,0x2894,0x11DE,0x8C,0x30,0x08,0x00,0x20,0x0C,0x9A,0x66);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkScreenPreviewCallback,0x373F499D,0x4B4D,0x4518,0xAD,0x22,0x63,0x54,0xE5,0xA5,0x82,0x5E);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkGLScreenPreviewHelper,0xBA575CD9,0xA15E,0x497B,0xB2,0xC2,0xF9,0xAF,0xE7,0xBE,0x4E,0xBA);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration,0xB8EAD569,0xB764,0x47F0,0xA7,0x3F,0xAE,0x40,0xDF,0x6C,0xBF,0x10);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkAttributes,0xABC11843,0xD966,0x44CB,0x96,0xE2,0xA1,0xCB,0x5D,0x31,0x35,0xC4);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkKeyer,0x89AFCAF5,0x65F8,0x421E,0x98,0xF7,0x96,0xFE,0x5F,0x5B,0xFB,0xA3);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoConversion,0x3EB504C9,0xF97D,0x40FE,0xA1,0x58,0xD4,0x07,0xD4,0x8C,0xB5,0x3B);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkDeckControlStatusCallback,0xE5F693C1,0x4283,0x4716,0xB1,0x8F,0xC1,0x43,0x15,0x21,0x95,0x5B);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkDeckControl,0xA4D81043,0x0619,0x42B7,0x8E,0xD6,0x60,0x2D,0x29,0x04,0x1D,0xF7);
+
+
+MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkIterator,0xD9EDA3B3,0x2887,0x41FA,0xB7,0x24,0x01,0x7C,0xF1,0xEB,0x1D,0x37);
+
+
+MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkGLScreenPreviewHelper,0xD398CEE7,0x4434,0x4CA3,0x9B,0xA6,0x5A,0xE3,0x45,0x56,0xB9,0x05);
+
+
+MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoConversion,0xFFA84F77,0x73BE,0x4FB7,0xB0,0x3E,0xB5,0xE4,0x4B,0x9F,0x75,0x9B);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayModeIterator_v7_1,0xB28131B6,0x59AC,0x4857,0xB5,0xAC,0xCD,0x75,0xD5,0x88,0x3E,0x2F);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode_v7_1,0xAF0CD6D5,0x8376,0x435E,0x84,0x33,0x54,0xF9,0xDD,0x53,0x0A,0xC3);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame_v7_1,0x333F3A10,0x8C2D,0x43CF,0xB7,0x9D,0x46,0x56,0x0F,0xEE,0xA1,0xCE);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame_v7_1,0xC8B41D95,0x8848,0x40EE,0x9B,0x37,0x6E,0x34,0x17,0xFB,0x11,0x4B);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkAudioInputPacket_v7_1,0xC86DE4F6,0xA29F,0x42E3,0xAB,0x3A,0x13,0x63,0xE2,0x9F,0x07,0x88);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoOutputCallback_v7_1,0xEBD01AFA,0xE4B0,0x49C6,0xA0,0x1D,0xED,0xB9,0xD1,0xB5,0x5F,0xD9);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback_v7_1,0x7F94F328,0x5ED4,0x4E9F,0x97,0x29,0x76,0xA8,0x6B,0xDC,0x99,0xCC);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v7_1,0xAE5B3E9B,0x4E1E,0x4535,0xB6,0xE8,0x48,0x0F,0xF5,0x2F,0x6C,0xE5);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v7_1,0x2B54EDEF,0x5B32,0x429F,0xBA,0x11,0xBB,0x99,0x05,0x96,0xEA,0xCD);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback_v7_3,0xFD6F311D,0x4D00,0x444B,0x9E,0xD4,0x1F,0x25,0xB5,0x73,0x0A,0xD0);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v7_3,0x271C65E3,0xC323,0x4344,0xA3,0x0F,0xD9,0x08,0xBC,0xB2,0x0A,0xA3);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v7_3,0x4973F012,0x9925,0x458C,0x87,0x1C,0x18,0x77,0x4C,0xDB,0xBE,0xCB);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame_v7_3,0xCF317790,0x2894,0x11DE,0x8C,0x30,0x08,0x00,0x20,0x0C,0x9A,0x66);
+
+#undef MIDL_DEFINE_GUID
+
+#ifdef __cplusplus
+}
+#endif
+
+
+

Modified: vic/branches/mpeg4/video/DeckLinkAPI_v7_3.idl
==============================================================================
--- vic/branches/mpeg4/video/DeckLinkAPI_v7_3.idl	(original)
+++ vic/branches/mpeg4/video/DeckLinkAPI_v7_3.idl	Tue May 11 09:19:57 2010
@@ -71,7 +71,7 @@
 
     HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);
     HRESULT CreateVideoFrame(long width, long height, long rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame **outFrame);
-    HRESULT CreateAncillaryData(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
+    HRESULT CreateAncillaryData(BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
 
     HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame *theFrame);
     HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale);



More information about the Sumover-dev mailing list