[Sumover-dev] [svn commit] r4883 - vic/branches/mpeg4/video

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Tue Sep 7 05:22:51 BST 2010


Author: douglask
Date: Tue Sep  7 05:22:51 2010
New Revision: 4883

Added:
   vic/branches/mpeg4/video/DeckLinkAPI_v7_6.idl
Modified:
   vic/branches/mpeg4/video/DeckLinkAPI.idl
   vic/branches/mpeg4/video/DeckLinkAPI_h.h
   vic/branches/mpeg4/video/DeckLinkAPI_i.cpp
   vic/branches/mpeg4/video/DeckLinkAPI_v7_3.idl
   vic/branches/mpeg4/video/grabber-decklink.cpp

Log:
Blackmagic DeckLink SDK 7.8.1 related updates


Modified: vic/branches/mpeg4/video/DeckLinkAPI.idl
==============================================================================
--- vic/branches/mpeg4/video/DeckLinkAPI.idl	(original)
+++ vic/branches/mpeg4/video/DeckLinkAPI.idl	Tue Sep  7 05:22:51 2010
@@ -34,15 +34,17 @@
 library DeckLinkAPI
 {
 
-/* Type Declarations */
+// Type Declarations
 
 typedef LONGLONG BMDTimeValue;
 typedef LONGLONG BMDTimeScale;
 typedef unsigned long BMDTimecodeBCD;
+typedef unsigned long BMDTimecodeUserBits;
 
 
-/* Enumeration Mapping */
+// Enumeration Mapping
 
+cpp_quote("typedef unsigned long BMDDisplayModeFlags;")
 cpp_quote("typedef unsigned long BMDFrameFlags;")
 cpp_quote("typedef unsigned long BMDVideoInputFlags;")
 cpp_quote("typedef unsigned long BMDVideoInputFormatChangedEvents;")
@@ -52,6 +54,7 @@
 cpp_quote("typedef unsigned long BMDDeckControlStatusFlags;")
 cpp_quote("typedef unsigned long BMDDeckControlExportModeOpsFlags;")
 cpp_quote("#if 0")
+typedef enum _BMDDisplayModeFlags BMDDisplayModeFlags;
 typedef enum _BMDFrameFlags BMDFrameFlags;
 typedef enum _BMDVideoInputFlags BMDVideoInputFlags;
 typedef enum _BMDVideoInputFormatChangedEvents BMDVideoInputFormatChangedEvents;
@@ -66,6 +69,9 @@
 /* Enum BMDDisplayMode - Video display modes */
 
 typedef [v1_enum] enum	_BMDDisplayMode {
+
+    /* SD Modes */
+
     bmdModeNTSC                                        = /* 'ntsc' */ 0x6E747363,
     bmdModeNTSC2398                                    = /* 'nt23' */ 0x6E743233,	// 3:2 pulldown
     bmdModePAL                                         = /* 'pal ' */ 0x70616C20,
@@ -120,13 +126,23 @@
 } BMDPixelFormat;
 
 
+/* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */
+
+[v1_enum] enum	_BMDDisplayModeFlags {
+    bmdDisplayModeSupports3D                           = 1 << 0,
+    bmdDisplayModeColorspaceRec601                     = 1 << 1,
+    bmdDisplayModeColorspaceRec709                     = 1 << 2
+};
+
+
 /* Enum BMDVideoOutputFlags - Flags to control the output of ancillary data along with video. */
 
 typedef [v1_enum] enum	_BMDVideoOutputFlags {
     bmdVideoOutputFlagDefault                          = 0,
     bmdVideoOutputVANC                                 = 1 << 0,
     bmdVideoOutputVITC                                 = 1 << 1,
-    bmdVideoOutputRP188                                = 1 << 2
+    bmdVideoOutputRP188                                = 1 << 2,
+    bmdVideoOutputDualStream3D                         = 1 << 4
 } BMDVideoOutputFlags;
 
 
@@ -146,7 +162,8 @@
 
 [v1_enum] enum	_BMDVideoInputFlags {
     bmdVideoInputFlagDefault                           = 0,
-    bmdVideoInputEnableFormatDetection                 = 1 << 0
+    bmdVideoInputEnableFormatDetection                 = 1 << 0,
+    bmdVideoInputDualStream3D                          = 1 << 1
 };
 
 
@@ -177,6 +194,14 @@
 } BMDOutputFrameCompletionResult;
 
 
+/* Enum BMDReferenceStatus - GenLock input status */
+
+typedef [v1_enum] enum	_BMDReferenceStatus {
+    bmdReferenceNotSupportedByHardware                 = 1 << 0,
+    bmdReferenceLocked                                 = 1 << 1
+} BMDReferenceStatus;
+
+
 /* Enum BMDAudioSampleRate - Audio sample rates supported for output/input */
 
 typedef [v1_enum] enum	_BMDAudioSampleRate {
@@ -230,12 +255,12 @@
 /* Enum BMDVideoConnection - Video connection types */
 
 typedef [v1_enum] enum	_BMDVideoConnection {
-    bmdVideoConnectionSDI                              = /* 'sdi ' */ 0x73646920,
-    bmdVideoConnectionHDMI                             = /* 'hdmi' */ 0x68646D69,
-    bmdVideoConnectionOpticalSDI                       = /* 'opti' */ 0x6F707469,
-    bmdVideoConnectionComponent                        = /* 'cpnt' */ 0x63706E74,
-    bmdVideoConnectionComposite                        = /* 'cmst' */ 0x636D7374,
-    bmdVideoConnectionSVideo                           = /* 'svid' */ 0x73766964
+    bmdVideoConnectionSDI                              = 1 << 0,
+    bmdVideoConnectionHDMI                             = 1 << 1,
+    bmdVideoConnectionOpticalSDI                       = 1 << 2,
+    bmdVideoConnectionComponent                        = 1 << 3,
+    bmdVideoConnectionComposite                        = 1 << 4,
+    bmdVideoConnectionSVideo                           = 1 << 5
 } BMDVideoConnection;
 
 
@@ -256,6 +281,14 @@
 } BMDAudioConnection;
 
 
+/* Enum BMDAudioOutputAnalogAESSwitch - Audio output Analog/AESEBU switch */
+
+typedef [v1_enum] enum	_BMDAudioOutputAnalogAESSwitch {
+    bmdAudioOutputSwitchAESEBU                         = /* 'aes ' */ 0x61657320,
+    bmdAudioOutputSwitchAnalog                         = /* 'anlg' */ 0x616E6C67
+} BMDAudioOutputAnalogAESSwitch;
+
+
 /* Enum BMDVideoOutputConversionMode - Video/audio conversion mode */
 
 typedef [v1_enum] enum	_BMDVideoOutputConversionMode {
@@ -269,6 +302,8 @@
     bmdVideoOutputHardware720p1080pCrossconversion     = /* 'xcap' */ 0x78636170,
     bmdVideoOutputHardwareAnamorphic720pUpconversion   = /* 'ua7p' */ 0x75613770,
     bmdVideoOutputHardwareAnamorphic1080iUpconversion  = /* 'ua1i' */ 0x75613169,
+    bmdVideoOutputHardwareAnamorphic149To720pUpconversion = /* 'u47p' */ 0x75343770,
+    bmdVideoOutputHardwareAnamorphic149To1080iUpconversion = /* 'u41i' */ 0x75343169,
     bmdVideoOutputHardwarePillarbox720pUpconversion    = /* 'up7p' */ 0x75703770,
     bmdVideoOutputHardwarePillarbox1080iUpconversion   = /* 'up1i' */ 0x75703169
 } BMDVideoOutputConversionMode;
@@ -287,7 +322,86 @@
 } BMDVideoInputConversionMode;
 
 
-/* Enum BMDDeckLinkAttributeID - DeckLink Atribute ID */
+/* Enum BMDVideo3DPackingFormat - Video 3D packing format */
+
+typedef [v1_enum] enum	_BMDVideo3DPackingFormat {
+    bmdVideo3DPackingSidebySideHalf                    = /* 'sbsh' */ 0x73627368,
+    bmdVideo3DPackingLinebyLine                        = /* 'lbyl' */ 0x6C62796C,
+    bmdVideo3DPackingTopAndBottom                      = /* 'tabo' */ 0x7461626F,
+    bmdVideo3DPackingLeftOnly                          = /* 'left' */ 0x6C656674,
+    bmdVideo3DPackingRightOnly                         = /* 'righ' */ 0x72696768
+} BMDVideo3DPackingFormat;
+
+
+/* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
+
+typedef [v1_enum] enum	_BMDDeckLinkConfigurationID {
+
+    /* Video Input/Output Flags */
+
+    bmdDeckLinkConfigUse1080pNotPsF                    = /* 'fpro' */ 0x6670726F,
+
+    /* Video Input/Output Integers */
+
+    bmdDeckLinkConfigHDMI3DPackingFormat               = /* '3dpf' */ 0x33647066,
+
+    /* Audio Input/Output Flags */
+
+    bmdDeckLinkConfigAnalogAudioConsumerLevels         = /* 'aacl' */ 0x6161636C,
+
+    /* Video output flags */
+
+    bmdDeckLinkConfigFieldFlickerRemoval               = /* 'fdfr' */ 0x66646672,
+    bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion  = /* 'to59' */ 0x746F3539,
+    bmdDeckLinkConfig444SDIVideoOutput                 = /* '444o' */ 0x3434346F,
+    bmdDeckLinkConfig3GBpsVideoOutput                  = /* '3gbs' */ 0x33676273,
+    bmdDeckLinkConfigBlackVideoOutputDuringCapture     = /* 'bvoc' */ 0x62766F63,
+    bmdDeckLinkConfigLowLatencyVideoOutput             = /* 'llvo' */ 0x6C6C766F,
+
+    /* Video Output Integers */
+
+    bmdDeckLinkConfigVideoOutputConnection             = /* 'vocn' */ 0x766F636E,
+    bmdDeckLinkConfigVideoOutputConversionMode         = /* 'vocm' */ 0x766F636D,
+    bmdDeckLinkConfigAnalogVideoOutputFlags            = /* 'avof' */ 0x61766F66,
+    bmdDeckLinkConfigReferenceInputTimingOffset        = /* 'glot' */ 0x676C6F74,
+
+    /* Video Input Integers */
+
+    bmdDeckLinkConfigVideoInputConnection              = /* 'vicn' */ 0x7669636E,
+    bmdDeckLinkConfigAnalogVideoInputFlags             = /* 'avif' */ 0x61766966,
+    bmdDeckLinkConfigVideoInputConversionMode          = /* 'vicm' */ 0x7669636D,
+    bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame = /* 'pdif' */ 0x70646966,
+    bmdDeckLinkConfigVANCSourceLine1Mapping            = /* 'vsl1' */ 0x76736C31,
+    bmdDeckLinkConfigVANCSourceLine2Mapping            = /* 'vsl2' */ 0x76736C32,
+    bmdDeckLinkConfigVANCSourceLine3Mapping            = /* 'vsl3' */ 0x76736C33,
+
+    /* Audio Input Integers */
+
+    bmdDeckLinkConfigAudioInputConnection              = /* 'aicn' */ 0x6169636E,
+
+    /* Audio Input Floats */
+
+    bmdDeckLinkConfigAnalogAudioInputScaleChannel1     = /* 'ais1' */ 0x61697331,
+    bmdDeckLinkConfigAnalogAudioInputScaleChannel2     = /* 'ais2' */ 0x61697332,
+    bmdDeckLinkConfigAnalogAudioInputScaleChannel3     = /* 'ais3' */ 0x61697333,
+    bmdDeckLinkConfigAnalogAudioInputScaleChannel4     = /* 'ais4' */ 0x61697334,
+    bmdDeckLinkConfigDigitalAudioInputScale            = /* 'dais' */ 0x64616973,
+
+    /* Audio Output Integers */
+
+    bmdDeckLinkConfigAudioOutputAESAnalogSwitch        = /* 'aoaa' */ 0x616F6161,
+
+    /* Audio Output Floats */
+
+    bmdDeckLinkConfigAnalogAudioOutputScaleChannel1    = /* 'aos1' */ 0x616F7331,
+    bmdDeckLinkConfigAnalogAudioOutputScaleChannel2    = /* 'aos2' */ 0x616F7332,
+    bmdDeckLinkConfigAnalogAudioOutputScaleChannel3    = /* 'aos3' */ 0x616F7333,
+    bmdDeckLinkConfigAnalogAudioOutputScaleChannel4    = /* 'aos4' */ 0x616F7334,
+    bmdDeckLinkConfigDigitalAudioOutputScale           = /* 'daos' */ 0x64616F73
+} BMDDeckLinkConfigurationID;
+
+
+/* Enum BMDDeckLinkAttributeID - DeckLink Attribute ID */
 
 typedef [v1_enum] enum	_BMDDeckLinkAttributeID {
 
@@ -297,11 +411,16 @@
     BMDDeckLinkSupportsExternalKeying                  = /* 'keye' */ 0x6B657965,
     BMDDeckLinkSupportsHDKeying                        = /* 'keyh' */ 0x6B657968,
     BMDDeckLinkSupportsInputFormatDetection            = /* 'infd' */ 0x696E6664,
+    BMDDeckLinkHasReferenceInput                       = /* 'hrin' */ 0x6872696E,
     BMDDeckLinkHasSerialPort                           = /* 'hspt' */ 0x68737074,
 
     /* Integers */
 
     BMDDeckLinkMaximumAudioChannels                    = /* 'mach' */ 0x6D616368,
+    BMDDeckLinkNumberOfSubDevices                      = /* 'nsbd' */ 0x6E736264,
+    BMDDeckLinkSubDeviceIndex                          = /* 'subi' */ 0x73756269,
+    BMDDeckLinkVideoOutputConnections                  = /* 'vocn' */ 0x766F636E,
+    BMDDeckLinkVideoInputConnections                   = /* 'vicn' */ 0x7669636E,
 
     /* Strings */
 
@@ -408,7 +527,18 @@
 } BMDDeckControlError;
 
 
-/* Forward Declarations */
+/* Enum BMD3DPreviewFormat - Linked Frame preview format */
+
+typedef [v1_enum] enum	_BMD3DPreviewFormat {
+    bmd3DPreviewFormatDefault                          = /* 'defa' */ 0x64656661,
+    bmd3DPreviewFormatLeftOnly                         = /* 'left' */ 0x6C656674,
+    bmd3DPreviewFormatRightOnly                        = /* 'righ' */ 0x72696768,
+    bmd3DPreviewFormatSideBySide                       = /* 'side' */ 0x73696465,
+    bmd3DPreviewFormatTopBottom                        = /* 'topb' */ 0x746F7062
+} BMD3DPreviewFormat;
+
+
+// Forward Declarations
 
 interface IDeckLinkVideoOutputCallback;
 interface IDeckLinkInputCallback;
@@ -424,6 +554,7 @@
 interface IDeckLinkTimecode;
 interface IDeckLinkVideoFrame;
 interface IDeckLinkMutableVideoFrame;
+interface IDeckLinkVideoFrame3DExtensions;
 interface IDeckLinkVideoInputFrame;
 interface IDeckLinkVideoFrameAncillary;
 interface IDeckLinkAudioInputPacket;
@@ -441,7 +572,7 @@
 
 [
     object,
-    uuid(E763A626-4A3C-49D1-BF13-E7AD3692AE52),
+    uuid(20AA5225-1958-47CB-820B-80A8D521A6EE),
     helpstring("Frame completion callback.")
 ] interface IDeckLinkVideoOutputCallback : IUnknown
 {
@@ -454,7 +585,7 @@
 
 [
     object,
-    uuid(31D28EE7-88B6-4CB1-897A-CDBF79A26414),
+    uuid(DD04E5EC-7415-42AB-AE4A-E80C4DFC044A),
     helpstring("Frame arrival callback.")
 ] interface IDeckLinkInputCallback : IUnknown
 {
@@ -472,7 +603,7 @@
     helpstring("Memory allocator for video frames.")
 ] interface IDeckLinkMemoryAllocator : IUnknown
 {
-    HRESULT AllocateBuffer(unsigned long bufferSize, [out] void **allocatedBuffer);
+    HRESULT AllocateBuffer([in] unsigned long bufferSize, [out] void **allocatedBuffer);
     HRESULT ReleaseBuffer([in] void *buffer);
 
     HRESULT Commit(void);
@@ -489,7 +620,7 @@
     helpstring("Optional callback to allow audio samples to be pulled as required.")
 ] interface IDeckLinkAudioOutputCallback : IUnknown
 {
-    HRESULT RenderAudioSamples(BOOL preroll);
+    HRESULT RenderAudioSamples([in] BOOL preroll);
 };
 
 
@@ -524,7 +655,7 @@
 
 [
     object,
-    uuid(455D741F-1779-4800-86F5-0B5D13D79751),
+    uuid(9C88499F-F601-4021-B80B-032E4EB41C35),
     helpstring("enumerates over supported input/output display modes.")
 ] interface IDeckLinkDisplayModeIterator : IUnknown
 {
@@ -536,7 +667,7 @@
 
 [
     object,
-    uuid(87451E84-2B7E-439E-A629-4393EA4A8550),
+    uuid(3EB2C1AB-0A3D-4523-A3AD-F40D7FB14E78),
     helpstring("represents a display mode")
 ] interface IDeckLinkDisplayMode : IUnknown
 {
@@ -546,6 +677,7 @@
     long GetHeight(void);
     HRESULT GetFrameRate([out] BMDTimeValue *frameDuration, [out] BMDTimeScale *timeScale);
     BMDFieldDominance GetFieldDominance(void);
+    BMDDisplayModeFlags GetFlags(void);
 };
 
 
@@ -565,40 +697,40 @@
 
 [
     object,
-    uuid(29228142-EB8C-4141-A621-F74026450955),
+    uuid(A3EF0963-0862-44ED-92A9-EE89ABF431C7),
     local, 
     helpstring("Created by QueryInterface from IDeckLink.")
 ] interface IDeckLinkOutput : IUnknown
 {
-    HRESULT DoesSupportVideoMode(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
+    HRESULT DoesSupportVideoMode([in] BMDDisplayMode displayMode, [in] BMDPixelFormat pixelFormat, [in] BMDVideoOutputFlags flags, [out] BMDDisplayModeSupport *result, [out] IDeckLinkDisplayMode **resultDisplayMode);
     HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator **iterator);
 
     HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback);
 
     /* Video Output */
 
-    HRESULT EnableVideoOutput(BMDDisplayMode displayMode, BMDVideoOutputFlags flags);
+    HRESULT EnableVideoOutput([in] BMDDisplayMode displayMode, [in] BMDVideoOutputFlags flags);
     HRESULT DisableVideoOutput(void);
 
     HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);
-    HRESULT CreateVideoFrame(long width, long height, long rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame **outFrame);
-    HRESULT CreateAncillaryData(BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
+    HRESULT CreateVideoFrame([in] long width, [in] long height, [in] long rowBytes, [in] BMDPixelFormat pixelFormat, [in] BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame **outFrame);
+    HRESULT CreateAncillaryData([in] BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
 
     HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame *theFrame);
-    HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale);
+    HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, [in] BMDTimeValue displayTime, [in] BMDTimeValue displayDuration, [in] BMDTimeScale timeScale);
     HRESULT SetScheduledFrameCompletionCallback([in] IDeckLinkVideoOutputCallback *theCallback);
     HRESULT GetBufferedVideoFrameCount([out] unsigned long *bufferedFrameCount);
 
     /* Audio Output */
 
-    HRESULT EnableAudioOutput(BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned long channelCount, BMDAudioOutputStreamType streamType);
+    HRESULT EnableAudioOutput([in] BMDAudioSampleRate sampleRate, [in] BMDAudioSampleType sampleType, [in] unsigned long channelCount, [in] BMDAudioOutputStreamType streamType);
     HRESULT DisableAudioOutput(void);
 
-    HRESULT WriteAudioSamplesSync([in] void *buffer, unsigned long sampleFrameCount, [out] unsigned long *sampleFramesWritten);
+    HRESULT WriteAudioSamplesSync([in] void *buffer, [in] unsigned long sampleFrameCount, [out] unsigned long *sampleFramesWritten);
 
     HRESULT BeginAudioPreroll(void);
     HRESULT EndAudioPreroll(void);
-    HRESULT ScheduleAudioSamples([in] void *buffer, unsigned long sampleFrameCount, BMDTimeValue streamTime, BMDTimeScale timeScale, [out] unsigned long *sampleFramesWritten);
+    HRESULT ScheduleAudioSamples([in] void *buffer, [in] unsigned long sampleFrameCount, [in] BMDTimeValue streamTime, [in] BMDTimeScale timeScale, [out] unsigned long *sampleFramesWritten);
 
     HRESULT GetBufferedAudioSampleFrameCount([out] unsigned long *bufferedSampleFrameCount);
     HRESULT FlushBufferedAudioSamples(void);
@@ -607,14 +739,15 @@
 
     /* Output Control */
 
-    HRESULT StartScheduledPlayback(BMDTimeValue playbackStartTime, BMDTimeScale timeScale, double playbackSpeed);
-    HRESULT StopScheduledPlayback(BMDTimeValue stopPlaybackAtTime, [out] BMDTimeValue *actualStopTime, BMDTimeScale timeScale);
+    HRESULT StartScheduledPlayback([in] BMDTimeValue playbackStartTime, [in] BMDTimeScale timeScale, [in] double playbackSpeed);
+    HRESULT StopScheduledPlayback([in] BMDTimeValue stopPlaybackAtTime, [out] BMDTimeValue *actualStopTime, [in] BMDTimeScale timeScale);
     HRESULT IsScheduledPlaybackRunning([out] BOOL *active);
-    HRESULT GetScheduledStreamTime(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *streamTime, [out] double *playbackSpeed);
+    HRESULT GetScheduledStreamTime([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *streamTime, [out] double *playbackSpeed);
+    HRESULT GetReferenceStatus([out] BMDReferenceStatus *referenceStatus);
 
     /* Hardware Timing */
 
-    HRESULT GetHardwareReferenceClock(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);
+    HRESULT GetHardwareReferenceClock([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);
 };
 
 
@@ -622,24 +755,24 @@
 
 [
     object,
-    uuid(300C135A-9F43-48E2-9906-6D7911D93CF1),
+    uuid(6D40EF78-28B9-4E21-990D-95BB7750A04F),
     helpstring("Created by QueryInterface from IDeckLink.")
 ] interface IDeckLinkInput : IUnknown
 {
-    HRESULT DoesSupportVideoMode(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
+    HRESULT DoesSupportVideoMode([in] BMDDisplayMode displayMode, [in] BMDPixelFormat pixelFormat, [in] BMDVideoInputFlags flags, [out] BMDDisplayModeSupport *result, [out] IDeckLinkDisplayMode **resultDisplayMode);
     HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator **iterator);
 
     HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback);
 
     /* Video Input */
 
-    HRESULT EnableVideoInput(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDVideoInputFlags flags);
+    HRESULT EnableVideoInput([in] BMDDisplayMode displayMode, [in] BMDPixelFormat pixelFormat, [in] BMDVideoInputFlags flags);
     HRESULT DisableVideoInput(void);
     HRESULT GetAvailableVideoFrameCount([out] unsigned long *availableFrameCount);
 
     /* Audio Input */
 
-    HRESULT EnableAudioInput(BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned long channelCount);
+    HRESULT EnableAudioInput([in] BMDAudioSampleRate sampleRate, [in] BMDAudioSampleType sampleType, [in] unsigned long channelCount);
     HRESULT DisableAudioInput(void);
     HRESULT GetAvailableAudioSampleFrameCount([out] unsigned long *availableSampleFrameCount);
 
@@ -653,7 +786,7 @@
 
     /* Hardware Timing */
 
-    HRESULT GetHardwareReferenceClock(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);
+    HRESULT GetHardwareReferenceClock([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);
 };
 
 
@@ -661,7 +794,7 @@
 
 [
     object,
-    uuid(EFB9BCA6-A521-44F7-BD69-2332F24D9EE6),
+    uuid(BC6CFBD3-8317-4325-AC1C-1216391E9340),
     helpstring("Used for video frame timecode representation.")
 ] interface IDeckLinkTimecode : IUnknown
 {
@@ -669,6 +802,7 @@
     HRESULT GetComponents([out] unsigned char *hours, [out] unsigned char *minutes, [out] unsigned char *seconds, [out] unsigned char *frames);
     HRESULT GetString([out] BSTR *timecode);
     BMDTimecodeFlags GetFlags(void);
+    HRESULT GetTimecodeUserBits([out] BMDTimecodeUserBits *userBits);
 };
 
 
@@ -676,7 +810,7 @@
 
 [
     object,
-    uuid(A8D8238E-6B18-4196-99E1-5AF717B83D32),
+    uuid(3F716FE0-F023-4111-BE5D-EF4414C05B17),
     local, 
     helpstring("Interface to encapsulate a video frame; can be caller-implemented.")
 ] interface IDeckLinkVideoFrame : IUnknown
@@ -688,7 +822,7 @@
     BMDFrameFlags GetFlags(void);
     HRESULT GetBytes([out] void **buffer);
 
-    HRESULT GetTimecode(BMDTimecodeFormat format, [out] IDeckLinkTimecode **timecode);
+    HRESULT GetTimecode([in] BMDTimecodeFormat format, [out] IDeckLinkTimecode **timecode);
     HRESULT GetAncillaryData([out] IDeckLinkVideoFrameAncillary **ancillary);
 };
 
@@ -697,16 +831,31 @@
 
 [
     object,
-    uuid(46FCEE00-B4E6-43D0-91C0-023A7FCEB34F),
+    uuid(69E2639F-40DA-4E19-B6F2-20ACE815C390),
     local, 
     helpstring("Created by IDeckLinkOutput::CreateVideoFrame.")
 ] interface IDeckLinkMutableVideoFrame : IDeckLinkVideoFrame
 {
-    HRESULT SetFlags(BMDFrameFlags newFlags);
+    HRESULT SetFlags([in] BMDFrameFlags newFlags);
 
-    HRESULT SetTimecode(BMDTimecodeFormat format, [in] IDeckLinkTimecode *timecode);
-    HRESULT SetTimecodeFromComponents(BMDTimecodeFormat format, unsigned char hours, unsigned char minutes, unsigned char seconds, unsigned char frames, BMDTimecodeFlags flags);
+    HRESULT SetTimecode([in] BMDTimecodeFormat format, [in] IDeckLinkTimecode *timecode);
+    HRESULT SetTimecodeFromComponents([in] BMDTimecodeFormat format, [in] unsigned char hours, [in] unsigned char minutes, [in] unsigned char seconds, [in] unsigned char frames, [in] BMDTimecodeFlags flags);
     HRESULT SetAncillaryData([in] IDeckLinkVideoFrameAncillary *ancillary);
+    HRESULT SetTimecodeUserBits([in] BMDTimecodeFormat format, [in] BMDTimecodeUserBits userBits);
+};
+
+
+/* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */
+
+[
+    object,
+    uuid(DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7),
+    local, 
+    helpstring("Optional interface implemented on IDeckLinkVideoFrame to support 3D frames")
+] interface IDeckLinkVideoFrame3DExtensions : IUnknown
+{
+    BMDVideo3DPackingFormat Get3DPackingFormat(void);
+    HRESULT GetFrameForRightEye([in] IDeckLinkVideoFrame* *rightEyeFrame);
 };
 
 
@@ -714,13 +863,13 @@
 
 [
     object,
-    uuid(9A74FA41-AE9F-47AC-8CF4-01F42DD59965),
+    uuid(05CFE374-537C-4094-9A57-680525118F44),
     local, 
     helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")
 ] interface IDeckLinkVideoInputFrame : IDeckLinkVideoFrame
 {
-    HRESULT GetStreamTime([out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration, BMDTimeScale timeScale);
-    HRESULT GetHardwareReferenceTimestamp(BMDTimeScale timeScale, [out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration);
+    HRESULT GetStreamTime([out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration, [in] BMDTimeScale timeScale);
+    HRESULT GetHardwareReferenceTimestamp([in] BMDTimeScale timeScale, [out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration);
 };
 
 
@@ -734,7 +883,7 @@
 ] interface IDeckLinkVideoFrameAncillary : IUnknown
 {
 
-    HRESULT GetBufferForVerticalBlankingLine(unsigned long lineNumber, [out] void **buffer);
+    HRESULT GetBufferForVerticalBlankingLine([in] unsigned long lineNumber, [out] void **buffer);
     BMDPixelFormat GetPixelFormat(void);
     BMDDisplayMode GetDisplayMode(void);
 };
@@ -751,7 +900,7 @@
 {
     long GetSampleFrameCount(void);
     HRESULT GetBytes([out] void **buffer);
-    HRESULT GetPacketTime([out] BMDTimeValue *packetTime, BMDTimeScale timeScale);
+    HRESULT GetPacketTime([out] BMDTimeValue *packetTime, [in] BMDTimeScale timeScale);
 };
 
 
@@ -759,7 +908,7 @@
 
 [
     object,
-    uuid(373F499D-4B4D-4518-AD22-6354E5A5825E),
+    uuid(B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438),
     local, 
     helpstring("Screen preview callback")
 ] interface IDeckLinkScreenPreviewCallback : IUnknown
@@ -772,7 +921,7 @@
 
 [
     object,
-    uuid(BA575CD9-A15E-497B-B2C2-F9AFE7BE4EBA),
+    uuid(504E2209-CAC7-4C1A-9FB4-C5BB6274D22F),
     local, 
     helpstring("Created with CoCreateInstance().")
 ] interface IDeckLinkGLScreenPreviewHelper : IUnknown
@@ -783,64 +932,28 @@
     HRESULT InitializeGL(void);
     HRESULT PaintGL(void);
     HRESULT SetFrame([in] IDeckLinkVideoFrame *theFrame);
+    HRESULT Set3DPreviewFormat([in] BMD3DPreviewFormat previewFormat);
 };
 
 
-/* Interface IDeckLinkConfiguration - Created by QueryInterface from IDeckLink. */
+/* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
 
 [
     object,
-    uuid(B8EAD569-B764-47F0-A73F-AE40DF6CBF10),
-    helpstring("Created by QueryInterface from IDeckLink.")
+    uuid(C679A35B-610C-4D09-B748-1D0478100FC0),
+    local, 
+    helpstring("DeckLink Configuration interface")
 ] interface IDeckLinkConfiguration : IUnknown
 {
-    HRESULT GetConfigurationValidator([out] IDeckLinkConfiguration **configObject);
+    HRESULT SetFlag([in] BMDDeckLinkConfigurationID cfgID, [in] BOOL value);
+    HRESULT GetFlag([in] BMDDeckLinkConfigurationID cfgID, [out] BOOL *value);
+    HRESULT SetInt([in] BMDDeckLinkConfigurationID cfgID, [in] LONGLONG value);
+    HRESULT GetInt([in] BMDDeckLinkConfigurationID cfgID, [out] LONGLONG *value);
+    HRESULT SetFloat([in] BMDDeckLinkConfigurationID cfgID, [in] double value);
+    HRESULT GetFloat([in] BMDDeckLinkConfigurationID cfgID, [out] double *value);
+    HRESULT SetString([in] BMDDeckLinkConfigurationID cfgID, [in] BSTR value);
+    HRESULT GetString([in] BMDDeckLinkConfigurationID cfgID, [out] BSTR *value);
     HRESULT WriteConfigurationToPreferences(void);
-
-    /* Video Output Configuration */
-
-    HRESULT SetVideoOutputFormat(BMDVideoConnection videoOutputConnection);
-    HRESULT IsVideoOutputActive(BMDVideoConnection videoOutputConnection, [out] BOOL *active);
-
-    HRESULT SetAnalogVideoOutputFlags(BMDAnalogVideoFlags analogVideoFlags);
-    HRESULT GetAnalogVideoOutputFlags([out] BMDAnalogVideoFlags *analogVideoFlags);
-
-    HRESULT EnableFieldFlickerRemovalWhenPaused(BOOL enable);
-    HRESULT IsEnabledFieldFlickerRemovalWhenPaused([out] BOOL *enabled);
-
-    HRESULT Set444And3GBpsVideoOutput(BOOL enable444VideoOutput, BOOL enable3GbsOutput);
-    HRESULT Get444And3GBpsVideoOutput([out] BOOL *is444VideoOutputEnabled, [out] BOOL *threeGbsOutputEnabled);
-
-    HRESULT SetVideoOutputConversionMode(BMDVideoOutputConversionMode conversionMode);
-    HRESULT GetVideoOutputConversionMode([out] BMDVideoOutputConversionMode *conversionMode);
-
-    HRESULT Set_HD1080p24_to_HD1080i5994_Conversion(BOOL enable);
-    HRESULT Get_HD1080p24_to_HD1080i5994_Conversion([out] BOOL *enabled);
-
-    /* Video Input Configuration */
-
-    HRESULT SetVideoInputFormat(BMDVideoConnection videoInputFormat);
-    HRESULT GetVideoInputFormat([out] BMDVideoConnection *videoInputFormat);
-
-    HRESULT SetAnalogVideoInputFlags(BMDAnalogVideoFlags analogVideoFlags);
-    HRESULT GetAnalogVideoInputFlags([out] BMDAnalogVideoFlags *analogVideoFlags);
-
-    HRESULT SetVideoInputConversionMode(BMDVideoInputConversionMode conversionMode);
-    HRESULT GetVideoInputConversionMode([out] BMDVideoInputConversionMode *conversionMode);
-
-    HRESULT SetBlackVideoOutputDuringCapture(BOOL blackOutInCapture);
-    HRESULT GetBlackVideoOutputDuringCapture([out] BOOL *blackOutInCapture);
-
-    HRESULT Set32PulldownSequenceInitialTimecodeFrame(unsigned long aFrameTimecode);
-    HRESULT Get32PulldownSequenceInitialTimecodeFrame([out] unsigned long *aFrameTimecode);
-
-    HRESULT SetVancSourceLineMapping(unsigned long activeLine1VANCsource, unsigned long activeLine2VANCsource, unsigned long activeLine3VANCsource);
-    HRESULT GetVancSourceLineMapping([out] unsigned long *activeLine1VANCsource, [out] unsigned long *activeLine2VANCsource, [out] unsigned long *activeLine3VANCsource);
-
-    /* Audio Input Configuration */
-
-    HRESULT SetAudioInputFormat(BMDAudioConnection audioInputFormat);
-    HRESULT GetAudioInputFormat([out] BMDAudioConnection *audioInputFormat);
 };
 
 
@@ -881,7 +994,7 @@
 
 [
     object,
-    uuid(3EB504C9-F97D-40FE-A158-D407D48CB53B),
+    uuid(3BBCB8A2-DA2C-42D9-B5D8-88083644E99A),
     local, 
     helpstring("Created with CoCreateInstance().")
 ] interface IDeckLinkVideoConversion : IUnknown
@@ -961,7 +1074,7 @@
 };
 
 [
-    uuid(D398CEE7-4434-4CA3-9BA6-5AE34556B905),
+    uuid(F63E77C7-B655-4A4A-9AD0-3CA85D394343),
     helpstring("CDeckLinkGLScreenPreviewHelper Class")
 ] coclass CDeckLinkGLScreenPreviewHelper
 {
@@ -969,7 +1082,7 @@
 };
 
 [
-    uuid(FFA84F77-73BE-4FB7-B03E-B5E44B9F759B),
+    uuid(7DBBBB11-5B7B-467D-AEA4-CEA468FD368C),
     helpstring("CDeckLinkVideoConversion Class")
 ] coclass CDeckLinkVideoConversion
 {
@@ -978,6 +1091,7 @@
 
 
 // import deprecated interfaces
-#include "DeckLinkAPI_v7_1.idl"
+#include "DeckLinkAPI_v7_6.idl"
 #include "DeckLinkAPI_v7_3.idl"
+#include "DeckLinkAPI_v7_1.idl"
 };

Modified: vic/branches/mpeg4/video/DeckLinkAPI_h.h
==============================================================================
--- vic/branches/mpeg4/video/DeckLinkAPI_h.h	(original)
+++ vic/branches/mpeg4/video/DeckLinkAPI_h.h	Tue Sep  7 05:22:51 2010
@@ -3,18 +3,18 @@
 /* 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
+ /* File created by MIDL compiler version 7.00.0555 */
+/* at Tue Sep 07 12:31:45 2010
  */
-/* Compiler settings for .\video\DeckLinkAPI.idl:
-    Oicf, W1, Zp8, env=Win32 (32b run)
+/* Compiler settings for video\DeckLinkAPI.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
     protocol : dce , ms_ext, c_ext, robust
     error checks: allocation ref bounds_check enum stub_data 
     VC __declspec() decoration level: 
          __declspec(uuid()), __declspec(selectany), __declspec(novtable)
          DECLSPEC_UUID(), MIDL_INTERFACE()
 */
-//@@MIDL_FILE_HEADING(  )
+/* @@MIDL_FILE_HEADING(  ) */
 
 #pragma warning( disable: 4049 )  /* more than 64k source lines */
 
@@ -125,6 +125,12 @@
 #endif 	/* __IDeckLinkMutableVideoFrame_FWD_DEFINED__ */
 
 
+#ifndef __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__
+#define __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__
+typedef interface IDeckLinkVideoFrame3DExtensions IDeckLinkVideoFrame3DExtensions;
+#endif 	/* __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__ */
+
+
 #ifndef __IDeckLinkVideoInputFrame_FWD_DEFINED__
 #define __IDeckLinkVideoInputFrame_FWD_DEFINED__
 typedef interface IDeckLinkVideoInputFrame IDeckLinkVideoInputFrame;
@@ -227,6 +233,138 @@
 #endif 	/* __CDeckLinkVideoConversion_FWD_DEFINED__ */
 
 
+#ifndef __IDeckLinkDisplayModeIterator_v7_6_FWD_DEFINED__
+#define __IDeckLinkDisplayModeIterator_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkDisplayModeIterator_v7_6 IDeckLinkDisplayModeIterator_v7_6;
+#endif 	/* __IDeckLinkDisplayModeIterator_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayMode_v7_6_FWD_DEFINED__
+#define __IDeckLinkDisplayMode_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkDisplayMode_v7_6 IDeckLinkDisplayMode_v7_6;
+#endif 	/* __IDeckLinkDisplayMode_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_v7_6_FWD_DEFINED__
+#define __IDeckLinkOutput_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkOutput_v7_6 IDeckLinkOutput_v7_6;
+#endif 	/* __IDeckLinkOutput_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_v7_6_FWD_DEFINED__
+#define __IDeckLinkInput_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkInput_v7_6 IDeckLinkInput_v7_6;
+#endif 	/* __IDeckLinkInput_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkTimecode_v7_6_FWD_DEFINED__
+#define __IDeckLinkTimecode_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkTimecode_v7_6 IDeckLinkTimecode_v7_6;
+#endif 	/* __IDeckLinkTimecode_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrame_v7_6_FWD_DEFINED__
+#define __IDeckLinkVideoFrame_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkVideoFrame_v7_6 IDeckLinkVideoFrame_v7_6;
+#endif 	/* __IDeckLinkVideoFrame_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkMutableVideoFrame_v7_6_FWD_DEFINED__
+#define __IDeckLinkMutableVideoFrame_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkMutableVideoFrame_v7_6 IDeckLinkMutableVideoFrame_v7_6;
+#endif 	/* __IDeckLinkMutableVideoFrame_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_6_FWD_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkVideoInputFrame_v7_6 IDeckLinkVideoInputFrame_v7_6;
+#endif 	/* __IDeckLinkVideoInputFrame_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkScreenPreviewCallback_v7_6_FWD_DEFINED__
+#define __IDeckLinkScreenPreviewCallback_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkScreenPreviewCallback_v7_6 IDeckLinkScreenPreviewCallback_v7_6;
+#endif 	/* __IDeckLinkScreenPreviewCallback_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
+#define __IDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkGLScreenPreviewHelper_v7_6 IDeckLinkGLScreenPreviewHelper_v7_6;
+#endif 	/* __IDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoConversion_v7_6_FWD_DEFINED__
+#define __IDeckLinkVideoConversion_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkVideoConversion_v7_6 IDeckLinkVideoConversion_v7_6;
+#endif 	/* __IDeckLinkVideoConversion_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkConfiguration_v7_6_FWD_DEFINED__
+#define __IDeckLinkConfiguration_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkConfiguration_v7_6 IDeckLinkConfiguration_v7_6;
+#endif 	/* __IDeckLinkConfiguration_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoOutputCallback_v7_6_FWD_DEFINED__
+#define __IDeckLinkVideoOutputCallback_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkVideoOutputCallback_v7_6 IDeckLinkVideoOutputCallback_v7_6;
+#endif 	/* __IDeckLinkVideoOutputCallback_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInputCallback_v7_6_FWD_DEFINED__
+#define __IDeckLinkInputCallback_v7_6_FWD_DEFINED__
+typedef interface IDeckLinkInputCallback_v7_6 IDeckLinkInputCallback_v7_6;
+#endif 	/* __IDeckLinkInputCallback_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __CDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
+#define __CDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CDeckLinkGLScreenPreviewHelper_v7_6 CDeckLinkGLScreenPreviewHelper_v7_6;
+#else
+typedef struct CDeckLinkGLScreenPreviewHelper_v7_6 CDeckLinkGLScreenPreviewHelper_v7_6;
+#endif /* __cplusplus */
+
+#endif 	/* __CDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __CDeckLinkVideoConversion_v7_6_FWD_DEFINED__
+#define __CDeckLinkVideoConversion_v7_6_FWD_DEFINED__
+
+#ifdef __cplusplus
+typedef class CDeckLinkVideoConversion_v7_6 CDeckLinkVideoConversion_v7_6;
+#else
+typedef struct CDeckLinkVideoConversion_v7_6 CDeckLinkVideoConversion_v7_6;
+#endif /* __cplusplus */
+
+#endif 	/* __CDeckLinkVideoConversion_v7_6_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInputCallback_v7_3_FWD_DEFINED__
+#define __IDeckLinkInputCallback_v7_3_FWD_DEFINED__
+typedef interface IDeckLinkInputCallback_v7_3 IDeckLinkInputCallback_v7_3;
+#endif 	/* __IDeckLinkInputCallback_v7_3_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_v7_3_FWD_DEFINED__
+#define __IDeckLinkOutput_v7_3_FWD_DEFINED__
+typedef interface IDeckLinkOutput_v7_3 IDeckLinkOutput_v7_3;
+#endif 	/* __IDeckLinkOutput_v7_3_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_v7_3_FWD_DEFINED__
+#define __IDeckLinkInput_v7_3_FWD_DEFINED__
+typedef interface IDeckLinkInput_v7_3 IDeckLinkInput_v7_3;
+#endif 	/* __IDeckLinkInput_v7_3_FWD_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_3_FWD_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_3_FWD_DEFINED__
+typedef interface IDeckLinkVideoInputFrame_v7_3 IDeckLinkVideoInputFrame_v7_3;
+#endif 	/* __IDeckLinkVideoInputFrame_v7_3_FWD_DEFINED__ */
+
+
 #ifndef __IDeckLinkDisplayModeIterator_v7_1_FWD_DEFINED__
 #define __IDeckLinkDisplayModeIterator_v7_1_FWD_DEFINED__
 typedef interface IDeckLinkDisplayModeIterator_v7_1 IDeckLinkDisplayModeIterator_v7_1;
@@ -281,30 +419,6 @@
 #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"
 
@@ -326,6 +440,9 @@
 
 typedef unsigned long BMDTimecodeBCD;
 
+typedef unsigned long BMDTimecodeUserBits;
+
+typedef unsigned long BMDDisplayModeFlags;
 typedef unsigned long BMDFrameFlags;
 typedef unsigned long BMDVideoInputFlags;
 typedef unsigned long BMDVideoInputFormatChangedEvents;
@@ -335,6 +452,8 @@
 typedef unsigned long BMDDeckControlStatusFlags;
 typedef unsigned long BMDDeckControlExportModeOpsFlags;
 #if 0
+typedef enum _BMDDisplayModeFlags BMDDisplayModeFlags;
+
 typedef enum _BMDFrameFlags BMDFrameFlags;
 
 typedef enum _BMDVideoInputFlags BMDVideoInputFlags;
@@ -394,12 +513,19 @@
 	bmdFormat10BitRGB	= 0x72323130
     } 	BMDPixelFormat;
 
+/* [v1_enum] */ 
+enum _BMDDisplayModeFlags
+    {	bmdDisplayModeSupports3D	= ( 1 << 0 ) ,
+	bmdDisplayModeColorspaceRec601	= ( 1 << 1 ) ,
+	bmdDisplayModeColorspaceRec709	= ( 1 << 2 ) 
+    } ;
 typedef /* [v1_enum] */ 
 enum _BMDVideoOutputFlags
     {	bmdVideoOutputFlagDefault	= 0,
 	bmdVideoOutputVANC	= ( 1 << 0 ) ,
 	bmdVideoOutputVITC	= ( 1 << 1 ) ,
-	bmdVideoOutputRP188	= ( 1 << 2 ) 
+	bmdVideoOutputRP188	= ( 1 << 2 ) ,
+	bmdVideoOutputDualStream3D	= ( 1 << 4 ) 
     } 	BMDVideoOutputFlags;
 
 /* [v1_enum] */ 
@@ -411,7 +537,8 @@
 /* [v1_enum] */ 
 enum _BMDVideoInputFlags
     {	bmdVideoInputFlagDefault	= 0,
-	bmdVideoInputEnableFormatDetection	= ( 1 << 0 ) 
+	bmdVideoInputEnableFormatDetection	= ( 1 << 0 ) ,
+	bmdVideoInputDualStream3D	= ( 1 << 1 ) 
     } ;
 /* [v1_enum] */ 
 enum _BMDVideoInputFormatChangedEvents
@@ -433,6 +560,12 @@
     } 	BMDOutputFrameCompletionResult;
 
 typedef /* [v1_enum] */ 
+enum _BMDReferenceStatus
+    {	bmdReferenceNotSupportedByHardware	= ( 1 << 0 ) ,
+	bmdReferenceLocked	= ( 1 << 1 ) 
+    } 	BMDReferenceStatus;
+
+typedef /* [v1_enum] */ 
 enum _BMDAudioSampleRate
     {	bmdAudioSampleRate48kHz	= 48000
     } 	BMDAudioSampleRate;
@@ -471,12 +604,12 @@
     } ;
 typedef /* [v1_enum] */ 
 enum _BMDVideoConnection
-    {	bmdVideoConnectionSDI	= 0x73646920,
-	bmdVideoConnectionHDMI	= 0x68646d69,
-	bmdVideoConnectionOpticalSDI	= 0x6f707469,
-	bmdVideoConnectionComponent	= 0x63706e74,
-	bmdVideoConnectionComposite	= 0x636d7374,
-	bmdVideoConnectionSVideo	= 0x73766964
+    {	bmdVideoConnectionSDI	= ( 1 << 0 ) ,
+	bmdVideoConnectionHDMI	= ( 1 << 1 ) ,
+	bmdVideoConnectionOpticalSDI	= ( 1 << 2 ) ,
+	bmdVideoConnectionComponent	= ( 1 << 3 ) ,
+	bmdVideoConnectionComposite	= ( 1 << 4 ) ,
+	bmdVideoConnectionSVideo	= ( 1 << 5 ) 
     } 	BMDVideoConnection;
 
 /* [v1_enum] */ 
@@ -492,6 +625,12 @@
     } 	BMDAudioConnection;
 
 typedef /* [v1_enum] */ 
+enum _BMDAudioOutputAnalogAESSwitch
+    {	bmdAudioOutputSwitchAESEBU	= 0x61657320,
+	bmdAudioOutputSwitchAnalog	= 0x616e6c67
+    } 	BMDAudioOutputAnalogAESSwitch;
+
+typedef /* [v1_enum] */ 
 enum _BMDVideoOutputConversionMode
     {	bmdNoVideoOutputConversion	= 0x6e6f6e65,
 	bmdVideoOutputLetterboxDownconversion	= 0x6c746278,
@@ -503,6 +642,8 @@
 	bmdVideoOutputHardware720p1080pCrossconversion	= 0x78636170,
 	bmdVideoOutputHardwareAnamorphic720pUpconversion	= 0x75613770,
 	bmdVideoOutputHardwareAnamorphic1080iUpconversion	= 0x75613169,
+	bmdVideoOutputHardwareAnamorphic149To720pUpconversion	= 0x75343770,
+	bmdVideoOutputHardwareAnamorphic149To1080iUpconversion	= 0x75343169,
 	bmdVideoOutputHardwarePillarbox720pUpconversion	= 0x75703770,
 	bmdVideoOutputHardwarePillarbox1080iUpconversion	= 0x75703169
     } 	BMDVideoOutputConversionMode;
@@ -519,13 +660,63 @@
     } 	BMDVideoInputConversionMode;
 
 typedef /* [v1_enum] */ 
+enum _BMDVideo3DPackingFormat
+    {	bmdVideo3DPackingSidebySideHalf	= 0x73627368,
+	bmdVideo3DPackingLinebyLine	= 0x6c62796c,
+	bmdVideo3DPackingTopAndBottom	= 0x7461626f,
+	bmdVideo3DPackingLeftOnly	= 0x6c656674,
+	bmdVideo3DPackingRightOnly	= 0x72696768
+    } 	BMDVideo3DPackingFormat;
+
+typedef /* [v1_enum] */ 
+enum _BMDDeckLinkConfigurationID
+    {	bmdDeckLinkConfigUse1080pNotPsF	= 0x6670726f,
+	bmdDeckLinkConfigHDMI3DPackingFormat	= 0x33647066,
+	bmdDeckLinkConfigAnalogAudioConsumerLevels	= 0x6161636c,
+	bmdDeckLinkConfigFieldFlickerRemoval	= 0x66646672,
+	bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion	= 0x746f3539,
+	bmdDeckLinkConfig444SDIVideoOutput	= 0x3434346f,
+	bmdDeckLinkConfig3GBpsVideoOutput	= 0x33676273,
+	bmdDeckLinkConfigBlackVideoOutputDuringCapture	= 0x62766f63,
+	bmdDeckLinkConfigLowLatencyVideoOutput	= 0x6c6c766f,
+	bmdDeckLinkConfigVideoOutputConnection	= 0x766f636e,
+	bmdDeckLinkConfigVideoOutputConversionMode	= 0x766f636d,
+	bmdDeckLinkConfigAnalogVideoOutputFlags	= 0x61766f66,
+	bmdDeckLinkConfigReferenceInputTimingOffset	= 0x676c6f74,
+	bmdDeckLinkConfigVideoInputConnection	= 0x7669636e,
+	bmdDeckLinkConfigAnalogVideoInputFlags	= 0x61766966,
+	bmdDeckLinkConfigVideoInputConversionMode	= 0x7669636d,
+	bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame	= 0x70646966,
+	bmdDeckLinkConfigVANCSourceLine1Mapping	= 0x76736c31,
+	bmdDeckLinkConfigVANCSourceLine2Mapping	= 0x76736c32,
+	bmdDeckLinkConfigVANCSourceLine3Mapping	= 0x76736c33,
+	bmdDeckLinkConfigAudioInputConnection	= 0x6169636e,
+	bmdDeckLinkConfigAnalogAudioInputScaleChannel1	= 0x61697331,
+	bmdDeckLinkConfigAnalogAudioInputScaleChannel2	= 0x61697332,
+	bmdDeckLinkConfigAnalogAudioInputScaleChannel3	= 0x61697333,
+	bmdDeckLinkConfigAnalogAudioInputScaleChannel4	= 0x61697334,
+	bmdDeckLinkConfigDigitalAudioInputScale	= 0x64616973,
+	bmdDeckLinkConfigAudioOutputAESAnalogSwitch	= 0x616f6161,
+	bmdDeckLinkConfigAnalogAudioOutputScaleChannel1	= 0x616f7331,
+	bmdDeckLinkConfigAnalogAudioOutputScaleChannel2	= 0x616f7332,
+	bmdDeckLinkConfigAnalogAudioOutputScaleChannel3	= 0x616f7333,
+	bmdDeckLinkConfigAnalogAudioOutputScaleChannel4	= 0x616f7334,
+	bmdDeckLinkConfigDigitalAudioOutputScale	= 0x64616f73
+    } 	BMDDeckLinkConfigurationID;
+
+typedef /* [v1_enum] */ 
 enum _BMDDeckLinkAttributeID
     {	BMDDeckLinkSupportsInternalKeying	= 0x6b657969,
 	BMDDeckLinkSupportsExternalKeying	= 0x6b657965,
 	BMDDeckLinkSupportsHDKeying	= 0x6b657968,
 	BMDDeckLinkSupportsInputFormatDetection	= 0x696e6664,
+	BMDDeckLinkHasReferenceInput	= 0x6872696e,
 	BMDDeckLinkHasSerialPort	= 0x68737074,
 	BMDDeckLinkMaximumAudioChannels	= 0x6d616368,
+	BMDDeckLinkNumberOfSubDevices	= 0x6e736264,
+	BMDDeckLinkSubDeviceIndex	= 0x73756269,
+	BMDDeckLinkVideoOutputConnections	= 0x766f636e,
+	BMDDeckLinkVideoInputConnections	= 0x7669636e,
 	BMDDeckLinkSerialPortDeviceName	= 0x736c706e
     } 	BMDDeckLinkAttributeID;
 
@@ -606,6 +797,21 @@
 	bmdDeckControlUnknownError	= 0x756e6572
     } 	BMDDeckControlError;
 
+typedef /* [v1_enum] */ 
+enum _BMD3DPreviewFormat
+    {	bmd3DPreviewFormatDefault	= 0x64656661,
+	bmd3DPreviewFormatLeftOnly	= 0x6c656674,
+	bmd3DPreviewFormatRightOnly	= 0x72696768,
+	bmd3DPreviewFormatSideBySide	= 0x73696465,
+	bmd3DPreviewFormatTopBottom	= 0x746f7062
+    } 	BMD3DPreviewFormat;
+
+
+
+
+
+
+
 
 
 
@@ -626,6 +832,23 @@
 
 
 
+typedef /* [v1_enum] */ 
+enum _BMDVideoConnection_v7_6
+    {	bmdVideoConnectionSDI_v7_6	= 0x73646920,
+	bmdVideoConnectionHDMI_v7_6	= 0x68646d69,
+	bmdVideoConnectionOpticalSDI_v7_6	= 0x6f707469,
+	bmdVideoConnectionComponent_v7_6	= 0x63706e74,
+	bmdVideoConnectionComposite_v7_6	= 0x636d7374,
+	bmdVideoConnectionSVideo_v7_6	= 0x73766964
+    } 	BMDVideoConnection_v7_6;
+
+
+
+
+
+
+
+
 
 
 
@@ -654,7 +877,7 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("E763A626-4A3C-49D1-BF13-E7AD3692AE52")
+    MIDL_INTERFACE("20AA5225-1958-47CB-820B-80A8D521A6EE")
     IDeckLinkVideoOutputCallback : public IUnknown
     {
     public:
@@ -675,7 +898,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkVideoOutputCallback * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -743,7 +966,7 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("31D28EE7-88B6-4CB1-897A-CDBF79A26414")
+    MIDL_INTERFACE("DD04E5EC-7415-42AB-AE4A-E80C4DFC044A")
     IDeckLinkInputCallback : public IUnknown
     {
     public:
@@ -767,7 +990,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkInputCallback * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -843,7 +1066,7 @@
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE AllocateBuffer( 
-            unsigned long bufferSize,
+            /* [in] */ unsigned long bufferSize,
             /* [out] */ void **allocatedBuffer) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( 
@@ -864,7 +1087,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkMemoryAllocator * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -875,7 +1098,7 @@
         
         HRESULT ( STDMETHODCALLTYPE *AllocateBuffer )( 
             IDeckLinkMemoryAllocator * This,
-            unsigned long bufferSize,
+            /* [in] */ unsigned long bufferSize,
             /* [out] */ void **allocatedBuffer);
         
         HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( 
@@ -950,7 +1173,7 @@
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE RenderAudioSamples( 
-            BOOL preroll) = 0;
+            /* [in] */ BOOL preroll) = 0;
         
     };
     
@@ -963,7 +1186,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkAudioOutputCallback * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -974,7 +1197,7 @@
         
         HRESULT ( STDMETHODCALLTYPE *RenderAudioSamples )( 
             IDeckLinkAudioOutputCallback * This,
-            BOOL preroll);
+            /* [in] */ BOOL preroll);
         
         END_INTERFACE
     } IDeckLinkAudioOutputCallbackVtbl;
@@ -1042,7 +1265,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkIterator * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -1134,7 +1357,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkAPIInformation * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -1220,7 +1443,7 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("455D741F-1779-4800-86F5-0B5D13D79751")
+    MIDL_INTERFACE("9C88499F-F601-4021-B80B-032E4EB41C35")
     IDeckLinkDisplayModeIterator : public IUnknown
     {
     public:
@@ -1238,7 +1461,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkDisplayModeIterator * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -1299,7 +1522,7 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("87451E84-2B7E-439E-A629-4393EA4A8550")
+    MIDL_INTERFACE("3EB2C1AB-0A3D-4523-A3AD-F40D7FB14E78")
     IDeckLinkDisplayMode : public IUnknown
     {
     public:
@@ -1318,6 +1541,8 @@
         
         virtual BMDFieldDominance STDMETHODCALLTYPE GetFieldDominance( void) = 0;
         
+        virtual BMDDisplayModeFlags STDMETHODCALLTYPE GetFlags( void) = 0;
+        
     };
     
 #else 	/* C style interface */
@@ -1329,7 +1554,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkDisplayMode * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -1359,6 +1584,9 @@
         BMDFieldDominance ( STDMETHODCALLTYPE *GetFieldDominance )( 
             IDeckLinkDisplayMode * This);
         
+        BMDDisplayModeFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkDisplayMode * This);
+        
         END_INTERFACE
     } IDeckLinkDisplayModeVtbl;
 
@@ -1400,6 +1628,9 @@
 #define IDeckLinkDisplayMode_GetFieldDominance(This)	\
     ( (This)->lpVtbl -> GetFieldDominance(This) ) 
 
+#define IDeckLinkDisplayMode_GetFlags(This)	\
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
 #endif /* COBJMACROS */
 
 
@@ -1440,7 +1671,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLink * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -1501,14 +1732,16 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("29228142-EB8C-4141-A621-F74026450955")
+    MIDL_INTERFACE("A3EF0963-0862-44ED-92A9-EE89ABF431C7")
     IDeckLinkOutput : public IUnknown
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
-            BMDDisplayMode displayMode,
-            BMDPixelFormat pixelFormat,
-            /* [out] */ BMDDisplayModeSupport *result) = 0;
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoOutputFlags flags,
+            /* [out] */ BMDDisplayModeSupport *result,
+            /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
             /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0;
@@ -1517,8 +1750,8 @@
             /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( 
-            BMDDisplayMode displayMode,
-            BMDVideoOutputFlags flags) = 0;
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDVideoOutputFlags flags) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0;
         
@@ -1526,15 +1759,15 @@
             /* [in] */ IDeckLinkMemoryAllocator *theAllocator) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( 
-            long width,
-            long height,
-            long rowBytes,
-            BMDPixelFormat pixelFormat,
-            BMDFrameFlags flags,
+            /* [in] */ long width,
+            /* [in] */ long height,
+            /* [in] */ long rowBytes,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDFrameFlags flags,
             /* [out] */ IDeckLinkMutableVideoFrame **outFrame) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( 
-            BMDPixelFormat pixelFormat,
+            /* [in] */ BMDPixelFormat pixelFormat,
             /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( 
@@ -1542,9 +1775,9 @@
         
         virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( 
             /* [in] */ IDeckLinkVideoFrame *theFrame,
-            BMDTimeValue displayTime,
-            BMDTimeValue displayDuration,
-            BMDTimeScale timeScale) = 0;
+            /* [in] */ BMDTimeValue displayTime,
+            /* [in] */ BMDTimeValue displayDuration,
+            /* [in] */ BMDTimeScale timeScale) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( 
             /* [in] */ IDeckLinkVideoOutputCallback *theCallback) = 0;
@@ -1553,16 +1786,16 @@
             /* [out] */ unsigned long *bufferedFrameCount) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( 
-            BMDAudioSampleRate sampleRate,
-            BMDAudioSampleType sampleType,
-            unsigned long channelCount,
-            BMDAudioOutputStreamType streamType) = 0;
+            /* [in] */ BMDAudioSampleRate sampleRate,
+            /* [in] */ BMDAudioSampleType sampleType,
+            /* [in] */ unsigned long channelCount,
+            /* [in] */ BMDAudioOutputStreamType streamType) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( 
             /* [in] */ void *buffer,
-            unsigned long sampleFrameCount,
+            /* [in] */ unsigned long sampleFrameCount,
             /* [out] */ unsigned long *sampleFramesWritten) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0;
@@ -1571,9 +1804,9 @@
         
         virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( 
             /* [in] */ void *buffer,
-            unsigned long sampleFrameCount,
-            BMDTimeValue streamTime,
-            BMDTimeScale timeScale,
+            /* [in] */ unsigned long sampleFrameCount,
+            /* [in] */ BMDTimeValue streamTime,
+            /* [in] */ BMDTimeScale timeScale,
             /* [out] */ unsigned long *sampleFramesWritten) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( 
@@ -1585,25 +1818,28 @@
             /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( 
-            BMDTimeValue playbackStartTime,
-            BMDTimeScale timeScale,
-            double playbackSpeed) = 0;
+            /* [in] */ BMDTimeValue playbackStartTime,
+            /* [in] */ BMDTimeScale timeScale,
+            /* [in] */ double playbackSpeed) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( 
-            BMDTimeValue stopPlaybackAtTime,
+            /* [in] */ BMDTimeValue stopPlaybackAtTime,
             /* [out] */ BMDTimeValue *actualStopTime,
-            BMDTimeScale timeScale) = 0;
+            /* [in] */ BMDTimeScale timeScale) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( 
             /* [out] */ BOOL *active) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime( 
-            BMDTimeScale desiredTimeScale,
+            /* [in] */ BMDTimeScale desiredTimeScale,
             /* [out] */ BMDTimeValue *streamTime,
             /* [out] */ double *playbackSpeed) = 0;
         
+        virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus( 
+            /* [out] */ BMDReferenceStatus *referenceStatus) = 0;
+        
         virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
-            BMDTimeScale desiredTimeScale,
+            /* [in] */ BMDTimeScale desiredTimeScale,
             /* [out] */ BMDTimeValue *hardwareTime,
             /* [out] */ BMDTimeValue *timeInFrame,
             /* [out] */ BMDTimeValue *ticksPerFrame) = 0;
@@ -1619,7 +1855,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkOutput * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -1630,9 +1866,11 @@
         
         HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
             IDeckLinkOutput * This,
-            BMDDisplayMode displayMode,
-            BMDPixelFormat pixelFormat,
-            /* [out] */ BMDDisplayModeSupport *result);
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoOutputFlags flags,
+            /* [out] */ BMDDisplayModeSupport *result,
+            /* [out] */ IDeckLinkDisplayMode **resultDisplayMode);
         
         HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
             IDeckLinkOutput * This,
@@ -1644,8 +1882,8 @@
         
         HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( 
             IDeckLinkOutput * This,
-            BMDDisplayMode displayMode,
-            BMDVideoOutputFlags flags);
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDVideoOutputFlags flags);
         
         HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( 
             IDeckLinkOutput * This);
@@ -1656,16 +1894,16 @@
         
         HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( 
             IDeckLinkOutput * This,
-            long width,
-            long height,
-            long rowBytes,
-            BMDPixelFormat pixelFormat,
-            BMDFrameFlags flags,
+            /* [in] */ long width,
+            /* [in] */ long height,
+            /* [in] */ long rowBytes,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDFrameFlags flags,
             /* [out] */ IDeckLinkMutableVideoFrame **outFrame);
         
         HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( 
             IDeckLinkOutput * This,
-            BMDPixelFormat pixelFormat,
+            /* [in] */ BMDPixelFormat pixelFormat,
             /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer);
         
         HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( 
@@ -1675,9 +1913,9 @@
         HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( 
             IDeckLinkOutput * This,
             /* [in] */ IDeckLinkVideoFrame *theFrame,
-            BMDTimeValue displayTime,
-            BMDTimeValue displayDuration,
-            BMDTimeScale timeScale);
+            /* [in] */ BMDTimeValue displayTime,
+            /* [in] */ BMDTimeValue displayDuration,
+            /* [in] */ BMDTimeScale timeScale);
         
         HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( 
             IDeckLinkOutput * This,
@@ -1689,10 +1927,10 @@
         
         HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( 
             IDeckLinkOutput * This,
-            BMDAudioSampleRate sampleRate,
-            BMDAudioSampleType sampleType,
-            unsigned long channelCount,
-            BMDAudioOutputStreamType streamType);
+            /* [in] */ BMDAudioSampleRate sampleRate,
+            /* [in] */ BMDAudioSampleType sampleType,
+            /* [in] */ unsigned long channelCount,
+            /* [in] */ BMDAudioOutputStreamType streamType);
         
         HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( 
             IDeckLinkOutput * This);
@@ -1700,7 +1938,7 @@
         HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( 
             IDeckLinkOutput * This,
             /* [in] */ void *buffer,
-            unsigned long sampleFrameCount,
+            /* [in] */ unsigned long sampleFrameCount,
             /* [out] */ unsigned long *sampleFramesWritten);
         
         HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( 
@@ -1712,9 +1950,9 @@
         HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( 
             IDeckLinkOutput * This,
             /* [in] */ void *buffer,
-            unsigned long sampleFrameCount,
-            BMDTimeValue streamTime,
-            BMDTimeScale timeScale,
+            /* [in] */ unsigned long sampleFrameCount,
+            /* [in] */ BMDTimeValue streamTime,
+            /* [in] */ BMDTimeScale timeScale,
             /* [out] */ unsigned long *sampleFramesWritten);
         
         HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( 
@@ -1730,15 +1968,15 @@
         
         HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( 
             IDeckLinkOutput * This,
-            BMDTimeValue playbackStartTime,
-            BMDTimeScale timeScale,
-            double playbackSpeed);
+            /* [in] */ BMDTimeValue playbackStartTime,
+            /* [in] */ BMDTimeScale timeScale,
+            /* [in] */ double playbackSpeed);
         
         HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( 
             IDeckLinkOutput * This,
-            BMDTimeValue stopPlaybackAtTime,
+            /* [in] */ BMDTimeValue stopPlaybackAtTime,
             /* [out] */ BMDTimeValue *actualStopTime,
-            BMDTimeScale timeScale);
+            /* [in] */ BMDTimeScale timeScale);
         
         HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( 
             IDeckLinkOutput * This,
@@ -1746,13 +1984,17 @@
         
         HRESULT ( STDMETHODCALLTYPE *GetScheduledStreamTime )( 
             IDeckLinkOutput * This,
-            BMDTimeScale desiredTimeScale,
+            /* [in] */ BMDTimeScale desiredTimeScale,
             /* [out] */ BMDTimeValue *streamTime,
             /* [out] */ double *playbackSpeed);
         
+        HRESULT ( STDMETHODCALLTYPE *GetReferenceStatus )( 
+            IDeckLinkOutput * This,
+            /* [out] */ BMDReferenceStatus *referenceStatus);
+        
         HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
             IDeckLinkOutput * This,
-            BMDTimeScale desiredTimeScale,
+            /* [in] */ BMDTimeScale desiredTimeScale,
             /* [out] */ BMDTimeValue *hardwareTime,
             /* [out] */ BMDTimeValue *timeInFrame,
             /* [out] */ BMDTimeValue *ticksPerFrame);
@@ -1780,8 +2022,8 @@
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkOutput_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
-    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+#define IDeckLinkOutput_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode)	\
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) ) 
 
 #define IDeckLinkOutput_GetDisplayModeIterator(This,iterator)	\
     ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
@@ -1855,6 +2097,9 @@
 #define IDeckLinkOutput_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed)	\
     ( (This)->lpVtbl -> GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) ) 
 
+#define IDeckLinkOutput_GetReferenceStatus(This,referenceStatus)	\
+    ( (This)->lpVtbl -> GetReferenceStatus(This,referenceStatus) ) 
+
 #define IDeckLinkOutput_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)	\
     ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) 
 
@@ -1880,14 +2125,16 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("300C135A-9F43-48E2-9906-6D7911D93CF1")
+    MIDL_INTERFACE("6D40EF78-28B9-4E21-990D-95BB7750A04F")
     IDeckLinkInput : public IUnknown
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
-            BMDDisplayMode displayMode,
-            BMDPixelFormat pixelFormat,
-            /* [out] */ BMDDisplayModeSupport *result) = 0;
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags,
+            /* [out] */ BMDDisplayModeSupport *result,
+            /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
             /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0;
@@ -1896,9 +2143,9 @@
             /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( 
-            BMDDisplayMode displayMode,
-            BMDPixelFormat pixelFormat,
-            BMDVideoInputFlags flags) = 0;
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0;
         
@@ -1906,9 +2153,9 @@
             /* [out] */ unsigned long *availableFrameCount) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( 
-            BMDAudioSampleRate sampleRate,
-            BMDAudioSampleType sampleType,
-            unsigned long channelCount) = 0;
+            /* [in] */ BMDAudioSampleRate sampleRate,
+            /* [in] */ BMDAudioSampleType sampleType,
+            /* [in] */ unsigned long channelCount) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0;
         
@@ -1927,7 +2174,7 @@
             /* [in] */ IDeckLinkInputCallback *theCallback) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
-            BMDTimeScale desiredTimeScale,
+            /* [in] */ BMDTimeScale desiredTimeScale,
             /* [out] */ BMDTimeValue *hardwareTime,
             /* [out] */ BMDTimeValue *timeInFrame,
             /* [out] */ BMDTimeValue *ticksPerFrame) = 0;
@@ -1943,7 +2190,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkInput * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -1954,9 +2201,11 @@
         
         HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
             IDeckLinkInput * This,
-            BMDDisplayMode displayMode,
-            BMDPixelFormat pixelFormat,
-            /* [out] */ BMDDisplayModeSupport *result);
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags,
+            /* [out] */ BMDDisplayModeSupport *result,
+            /* [out] */ IDeckLinkDisplayMode **resultDisplayMode);
         
         HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
             IDeckLinkInput * This,
@@ -1968,9 +2217,9 @@
         
         HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( 
             IDeckLinkInput * This,
-            BMDDisplayMode displayMode,
-            BMDPixelFormat pixelFormat,
-            BMDVideoInputFlags flags);
+            /* [in] */ BMDDisplayMode displayMode,
+            /* [in] */ BMDPixelFormat pixelFormat,
+            /* [in] */ BMDVideoInputFlags flags);
         
         HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( 
             IDeckLinkInput * This);
@@ -1981,9 +2230,9 @@
         
         HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( 
             IDeckLinkInput * This,
-            BMDAudioSampleRate sampleRate,
-            BMDAudioSampleType sampleType,
-            unsigned long channelCount);
+            /* [in] */ BMDAudioSampleRate sampleRate,
+            /* [in] */ BMDAudioSampleType sampleType,
+            /* [in] */ unsigned long channelCount);
         
         HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( 
             IDeckLinkInput * This);
@@ -2010,7 +2259,7 @@
         
         HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
             IDeckLinkInput * This,
-            BMDTimeScale desiredTimeScale,
+            /* [in] */ BMDTimeScale desiredTimeScale,
             /* [out] */ BMDTimeValue *hardwareTime,
             /* [out] */ BMDTimeValue *timeInFrame,
             /* [out] */ BMDTimeValue *ticksPerFrame);
@@ -2038,8 +2287,8 @@
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkInput_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
-    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+#define IDeckLinkInput_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode)	\
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) ) 
 
 #define IDeckLinkInput_GetDisplayModeIterator(This,iterator)	\
     ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
@@ -2105,7 +2354,7 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("EFB9BCA6-A521-44F7-BD69-2332F24D9EE6")
+    MIDL_INTERFACE("BC6CFBD3-8317-4325-AC1C-1216391E9340")
     IDeckLinkTimecode : public IUnknown
     {
     public:
@@ -2122,6 +2371,9 @@
         
         virtual BMDTimecodeFlags STDMETHODCALLTYPE GetFlags( void) = 0;
         
+        virtual HRESULT STDMETHODCALLTYPE GetTimecodeUserBits( 
+            /* [out] */ BMDTimecodeUserBits *userBits) = 0;
+        
     };
     
 #else 	/* C style interface */
@@ -2133,7 +2385,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkTimecode * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -2159,6 +2411,10 @@
         BMDTimecodeFlags ( STDMETHODCALLTYPE *GetFlags )( 
             IDeckLinkTimecode * This);
         
+        HRESULT ( STDMETHODCALLTYPE *GetTimecodeUserBits )( 
+            IDeckLinkTimecode * This,
+            /* [out] */ BMDTimecodeUserBits *userBits);
+        
         END_INTERFACE
     } IDeckLinkTimecodeVtbl;
 
@@ -2194,6 +2450,9 @@
 #define IDeckLinkTimecode_GetFlags(This)	\
     ( (This)->lpVtbl -> GetFlags(This) ) 
 
+#define IDeckLinkTimecode_GetTimecodeUserBits(This,userBits)	\
+    ( (This)->lpVtbl -> GetTimecodeUserBits(This,userBits) ) 
+
 #endif /* COBJMACROS */
 
 
@@ -2216,7 +2475,7 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("A8D8238E-6B18-4196-99E1-5AF717B83D32")
+    MIDL_INTERFACE("3F716FE0-F023-4111-BE5D-EF4414C05B17")
     IDeckLinkVideoFrame : public IUnknown
     {
     public:
@@ -2234,7 +2493,7 @@
             /* [out] */ void **buffer) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetTimecode( 
-            BMDTimecodeFormat format,
+            /* [in] */ BMDTimecodeFormat format,
             /* [out] */ IDeckLinkTimecode **timecode) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetAncillaryData( 
@@ -2251,7 +2510,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkVideoFrame * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -2281,7 +2540,7 @@
         
         HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
             IDeckLinkVideoFrame * This,
-            BMDTimecodeFormat format,
+            /* [in] */ BMDTimecodeFormat format,
             /* [out] */ IDeckLinkTimecode **timecode);
         
         HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
@@ -2357,28 +2616,32 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("46FCEE00-B4E6-43D0-91C0-023A7FCEB34F")
+    MIDL_INTERFACE("69E2639F-40DA-4E19-B6F2-20ACE815C390")
     IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE SetFlags( 
-            BMDFrameFlags newFlags) = 0;
+            /* [in] */ BMDFrameFlags newFlags) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE SetTimecode( 
-            BMDTimecodeFormat format,
+            /* [in] */ 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;
+            /* [in] */ BMDTimecodeFormat format,
+            /* [in] */ unsigned char hours,
+            /* [in] */ unsigned char minutes,
+            /* [in] */ unsigned char seconds,
+            /* [in] */ unsigned char frames,
+            /* [in] */ BMDTimecodeFlags flags) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE SetAncillaryData( 
             /* [in] */ IDeckLinkVideoFrameAncillary *ancillary) = 0;
         
+        virtual HRESULT STDMETHODCALLTYPE SetTimecodeUserBits( 
+            /* [in] */ BMDTimecodeFormat format,
+            /* [in] */ BMDTimecodeUserBits userBits) = 0;
+        
     };
     
 #else 	/* C style interface */
@@ -2390,7 +2653,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkMutableVideoFrame * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -2420,7 +2683,7 @@
         
         HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
             IDeckLinkMutableVideoFrame * This,
-            BMDTimecodeFormat format,
+            /* [in] */ BMDTimecodeFormat format,
             /* [out] */ IDeckLinkTimecode **timecode);
         
         HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
@@ -2429,26 +2692,31 @@
         
         HRESULT ( STDMETHODCALLTYPE *SetFlags )( 
             IDeckLinkMutableVideoFrame * This,
-            BMDFrameFlags newFlags);
+            /* [in] */ BMDFrameFlags newFlags);
         
         HRESULT ( STDMETHODCALLTYPE *SetTimecode )( 
             IDeckLinkMutableVideoFrame * This,
-            BMDTimecodeFormat format,
+            /* [in] */ 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);
+            /* [in] */ BMDTimecodeFormat format,
+            /* [in] */ unsigned char hours,
+            /* [in] */ unsigned char minutes,
+            /* [in] */ unsigned char seconds,
+            /* [in] */ unsigned char frames,
+            /* [in] */ BMDTimecodeFlags flags);
         
         HRESULT ( STDMETHODCALLTYPE *SetAncillaryData )( 
             IDeckLinkMutableVideoFrame * This,
             /* [in] */ IDeckLinkVideoFrameAncillary *ancillary);
         
+        HRESULT ( STDMETHODCALLTYPE *SetTimecodeUserBits )( 
+            IDeckLinkMutableVideoFrame * This,
+            /* [in] */ BMDTimecodeFormat format,
+            /* [in] */ BMDTimecodeUserBits userBits);
+        
         END_INTERFACE
     } IDeckLinkMutableVideoFrameVtbl;
 
@@ -2509,6 +2777,9 @@
 #define IDeckLinkMutableVideoFrame_SetAncillaryData(This,ancillary)	\
     ( (This)->lpVtbl -> SetAncillaryData(This,ancillary) ) 
 
+#define IDeckLinkMutableVideoFrame_SetTimecodeUserBits(This,format,userBits)	\
+    ( (This)->lpVtbl -> SetTimecodeUserBits(This,format,userBits) ) 
+
 #endif /* COBJMACROS */
 
 
@@ -2520,28 +2791,115 @@
 #endif 	/* __IDeckLinkMutableVideoFrame_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__
-#define __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__
+#ifndef __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__
+#define __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__
 
-/* interface IDeckLinkVideoInputFrame */
+/* interface IDeckLinkVideoFrame3DExtensions */
 /* [helpstring][local][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkVideoInputFrame;
+EXTERN_C const IID IID_IDeckLinkVideoFrame3DExtensions;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("9A74FA41-AE9F-47AC-8CF4-01F42DD59965")
-    IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
+    MIDL_INTERFACE("DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7")
+    IDeckLinkVideoFrame3DExtensions : public IUnknown
+    {
+    public:
+        virtual BMDVideo3DPackingFormat STDMETHODCALLTYPE Get3DPackingFormat( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFrameForRightEye( 
+            /* [in] */ IDeckLinkVideoFrame **rightEyeFrame) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkVideoFrame3DExtensionsVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoFrame3DExtensions * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoFrame3DExtensions * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoFrame3DExtensions * This);
+        
+        BMDVideo3DPackingFormat ( STDMETHODCALLTYPE *Get3DPackingFormat )( 
+            IDeckLinkVideoFrame3DExtensions * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFrameForRightEye )( 
+            IDeckLinkVideoFrame3DExtensions * This,
+            /* [in] */ IDeckLinkVideoFrame **rightEyeFrame);
+        
+        END_INTERFACE
+    } IDeckLinkVideoFrame3DExtensionsVtbl;
+
+    interface IDeckLinkVideoFrame3DExtensions
+    {
+        CONST_VTBL struct IDeckLinkVideoFrame3DExtensionsVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoFrame3DExtensions_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoFrame3DExtensions_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoFrame3DExtensions_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoFrame3DExtensions_Get3DPackingFormat(This)	\
+    ( (This)->lpVtbl -> Get3DPackingFormat(This) ) 
+
+#define IDeckLinkVideoFrame3DExtensions_GetFrameForRightEye(This,rightEyeFrame)	\
+    ( (This)->lpVtbl -> GetFrameForRightEye(This,rightEyeFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__
+#define __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoInputFrame */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoInputFrame;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("05CFE374-537C-4094-9A57-680525118F44")
+    IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE GetStreamTime( 
             /* [out] */ BMDTimeValue *frameTime,
             /* [out] */ BMDTimeValue *frameDuration,
-            BMDTimeScale timeScale) = 0;
+            /* [in] */ BMDTimeScale timeScale) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceTimestamp( 
-            BMDTimeScale timeScale,
+            /* [in] */ BMDTimeScale timeScale,
             /* [out] */ BMDTimeValue *frameTime,
             /* [out] */ BMDTimeValue *frameDuration) = 0;
         
@@ -2556,7 +2914,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkVideoInputFrame * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -2586,7 +2944,7 @@
         
         HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
             IDeckLinkVideoInputFrame * This,
-            BMDTimecodeFormat format,
+            /* [in] */ BMDTimecodeFormat format,
             /* [out] */ IDeckLinkTimecode **timecode);
         
         HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
@@ -2597,11 +2955,11 @@
             IDeckLinkVideoInputFrame * This,
             /* [out] */ BMDTimeValue *frameTime,
             /* [out] */ BMDTimeValue *frameDuration,
-            BMDTimeScale timeScale);
+            /* [in] */ BMDTimeScale timeScale);
         
         HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceTimestamp )( 
             IDeckLinkVideoInputFrame * This,
-            BMDTimeScale timeScale,
+            /* [in] */ BMDTimeScale timeScale,
             /* [out] */ BMDTimeValue *frameTime,
             /* [out] */ BMDTimeValue *frameDuration);
         
@@ -2686,7 +3044,7 @@
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE GetBufferForVerticalBlankingLine( 
-            unsigned long lineNumber,
+            /* [in] */ unsigned long lineNumber,
             /* [out] */ void **buffer) = 0;
         
         virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0;
@@ -2704,7 +3062,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkVideoFrameAncillary * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -2715,7 +3073,7 @@
         
         HRESULT ( STDMETHODCALLTYPE *GetBufferForVerticalBlankingLine )( 
             IDeckLinkVideoFrameAncillary * This,
-            unsigned long lineNumber,
+            /* [in] */ unsigned long lineNumber,
             /* [out] */ void **buffer);
         
         BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
@@ -2789,7 +3147,7 @@
         
         virtual HRESULT STDMETHODCALLTYPE GetPacketTime( 
             /* [out] */ BMDTimeValue *packetTime,
-            BMDTimeScale timeScale) = 0;
+            /* [in] */ BMDTimeScale timeScale) = 0;
         
     };
     
@@ -2802,7 +3160,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkAudioInputPacket * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -2821,7 +3179,7 @@
         HRESULT ( STDMETHODCALLTYPE *GetPacketTime )( 
             IDeckLinkAudioInputPacket * This,
             /* [out] */ BMDTimeValue *packetTime,
-            BMDTimeScale timeScale);
+            /* [in] */ BMDTimeScale timeScale);
         
         END_INTERFACE
     } IDeckLinkAudioInputPacketVtbl;
@@ -2877,7 +3235,7 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("373F499D-4B4D-4518-AD22-6354E5A5825E")
+    MIDL_INTERFACE("B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438")
     IDeckLinkScreenPreviewCallback : public IUnknown
     {
     public:
@@ -2895,7 +3253,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkScreenPreviewCallback * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -2956,7 +3314,7 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("BA575CD9-A15E-497B-B2C2-F9AFE7BE4EBA")
+    MIDL_INTERFACE("504E2209-CAC7-4C1A-9FB4-C5BB6274D22F")
     IDeckLinkGLScreenPreviewHelper : public IUnknown
     {
     public:
@@ -2967,6 +3325,9 @@
         virtual HRESULT STDMETHODCALLTYPE SetFrame( 
             /* [in] */ IDeckLinkVideoFrame *theFrame) = 0;
         
+        virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat( 
+            /* [in] */ BMD3DPreviewFormat previewFormat) = 0;
+        
     };
     
 #else 	/* C style interface */
@@ -2978,7 +3339,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkGLScreenPreviewHelper * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -2997,6 +3358,10 @@
             IDeckLinkGLScreenPreviewHelper * This,
             /* [in] */ IDeckLinkVideoFrame *theFrame);
         
+        HRESULT ( STDMETHODCALLTYPE *Set3DPreviewFormat )( 
+            IDeckLinkGLScreenPreviewHelper * This,
+            /* [in] */ BMD3DPreviewFormat previewFormat);
+        
         END_INTERFACE
     } IDeckLinkGLScreenPreviewHelperVtbl;
 
@@ -3029,6 +3394,9 @@
 #define IDeckLinkGLScreenPreviewHelper_SetFrame(This,theFrame)	\
     ( (This)->lpVtbl -> SetFrame(This,theFrame) ) 
 
+#define IDeckLinkGLScreenPreviewHelper_Set3DPreviewFormat(This,previewFormat)	\
+    ( (This)->lpVtbl -> Set3DPreviewFormat(This,previewFormat) ) 
+
 #endif /* COBJMACROS */
 
 
@@ -3044,106 +3412,50 @@
 #define __IDeckLinkConfiguration_INTERFACE_DEFINED__
 
 /* interface IDeckLinkConfiguration */
-/* [helpstring][uuid][object] */ 
+/* [helpstring][local][uuid][object] */ 
 
 
 EXTERN_C const IID IID_IDeckLinkConfiguration;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("B8EAD569-B764-47F0-A73F-AE40DF6CBF10")
+    MIDL_INTERFACE("C679A35B-610C-4D09-B748-1D0478100FC0")
     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 SetFlag( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ BOOL value) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE SetBlackVideoOutputDuringCapture( 
-            BOOL blackOutInCapture) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetFlag( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ BOOL *value) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetBlackVideoOutputDuringCapture( 
-            /* [out] */ BOOL *blackOutInCapture) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetInt( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ LONGLONG value) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE Set32PulldownSequenceInitialTimecodeFrame( 
-            unsigned long aFrameTimecode) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetInt( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ LONGLONG *value) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE Get32PulldownSequenceInitialTimecodeFrame( 
-            /* [out] */ unsigned long *aFrameTimecode) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetFloat( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ double value) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE SetVancSourceLineMapping( 
-            unsigned long activeLine1VANCsource,
-            unsigned long activeLine2VANCsource,
-            unsigned long activeLine3VANCsource) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetFloat( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ double *value) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetVancSourceLineMapping( 
-            /* [out] */ unsigned long *activeLine1VANCsource,
-            /* [out] */ unsigned long *activeLine2VANCsource,
-            /* [out] */ unsigned long *activeLine3VANCsource) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetString( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ BSTR value) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE SetAudioInputFormat( 
-            BMDAudioConnection audioInputFormat) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetString( 
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ BSTR *value) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetAudioInputFormat( 
-            /* [out] */ BMDAudioConnection *audioInputFormat) = 0;
+        virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0;
         
     };
     
@@ -3156,7 +3468,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkConfiguration * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -3165,123 +3477,48 @@
         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 )( 
+        HRESULT ( STDMETHODCALLTYPE *SetFlag )( 
             IDeckLinkConfiguration * This,
-            /* [out] */ BMDVideoInputConversionMode *conversionMode);
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ BOOL value);
         
-        HRESULT ( STDMETHODCALLTYPE *SetBlackVideoOutputDuringCapture )( 
+        HRESULT ( STDMETHODCALLTYPE *GetFlag )( 
             IDeckLinkConfiguration * This,
-            BOOL blackOutInCapture);
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ BOOL *value);
         
-        HRESULT ( STDMETHODCALLTYPE *GetBlackVideoOutputDuringCapture )( 
+        HRESULT ( STDMETHODCALLTYPE *SetInt )( 
             IDeckLinkConfiguration * This,
-            /* [out] */ BOOL *blackOutInCapture);
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ LONGLONG value);
         
-        HRESULT ( STDMETHODCALLTYPE *Set32PulldownSequenceInitialTimecodeFrame )( 
+        HRESULT ( STDMETHODCALLTYPE *GetInt )( 
             IDeckLinkConfiguration * This,
-            unsigned long aFrameTimecode);
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ LONGLONG *value);
         
-        HRESULT ( STDMETHODCALLTYPE *Get32PulldownSequenceInitialTimecodeFrame )( 
+        HRESULT ( STDMETHODCALLTYPE *SetFloat )( 
             IDeckLinkConfiguration * This,
-            /* [out] */ unsigned long *aFrameTimecode);
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ double value);
         
-        HRESULT ( STDMETHODCALLTYPE *SetVancSourceLineMapping )( 
+        HRESULT ( STDMETHODCALLTYPE *GetFloat )( 
             IDeckLinkConfiguration * This,
-            unsigned long activeLine1VANCsource,
-            unsigned long activeLine2VANCsource,
-            unsigned long activeLine3VANCsource);
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ double *value);
         
-        HRESULT ( STDMETHODCALLTYPE *GetVancSourceLineMapping )( 
+        HRESULT ( STDMETHODCALLTYPE *SetString )( 
             IDeckLinkConfiguration * This,
-            /* [out] */ unsigned long *activeLine1VANCsource,
-            /* [out] */ unsigned long *activeLine2VANCsource,
-            /* [out] */ unsigned long *activeLine3VANCsource);
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [in] */ BSTR value);
         
-        HRESULT ( STDMETHODCALLTYPE *SetAudioInputFormat )( 
+        HRESULT ( STDMETHODCALLTYPE *GetString )( 
             IDeckLinkConfiguration * This,
-            BMDAudioConnection audioInputFormat);
+            /* [in] */ BMDDeckLinkConfigurationID cfgID,
+            /* [out] */ BSTR *value);
         
-        HRESULT ( STDMETHODCALLTYPE *GetAudioInputFormat )( 
-            IDeckLinkConfiguration * This,
-            /* [out] */ BMDAudioConnection *audioInputFormat);
+        HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( 
+            IDeckLinkConfiguration * This);
         
         END_INTERFACE
     } IDeckLinkConfigurationVtbl;
@@ -3306,89 +3543,32 @@
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkConfiguration_GetConfigurationValidator(This,configObject)	\
-    ( (This)->lpVtbl -> GetConfigurationValidator(This,configObject) ) 
+#define IDeckLinkConfiguration_SetFlag(This,cfgID,value)	\
+    ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) 
 
-#define IDeckLinkConfiguration_WriteConfigurationToPreferences(This)	\
-    ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) 
+#define IDeckLinkConfiguration_GetFlag(This,cfgID,value)	\
+    ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) 
 
-#define IDeckLinkConfiguration_SetVideoOutputFormat(This,videoOutputConnection)	\
-    ( (This)->lpVtbl -> SetVideoOutputFormat(This,videoOutputConnection) ) 
+#define IDeckLinkConfiguration_SetInt(This,cfgID,value)	\
+    ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) 
 
-#define IDeckLinkConfiguration_IsVideoOutputActive(This,videoOutputConnection,active)	\
-    ( (This)->lpVtbl -> IsVideoOutputActive(This,videoOutputConnection,active) ) 
+#define IDeckLinkConfiguration_GetInt(This,cfgID,value)	\
+    ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) 
 
-#define IDeckLinkConfiguration_SetAnalogVideoOutputFlags(This,analogVideoFlags)	\
-    ( (This)->lpVtbl -> SetAnalogVideoOutputFlags(This,analogVideoFlags) ) 
+#define IDeckLinkConfiguration_SetFloat(This,cfgID,value)	\
+    ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) 
 
-#define IDeckLinkConfiguration_GetAnalogVideoOutputFlags(This,analogVideoFlags)	\
-    ( (This)->lpVtbl -> GetAnalogVideoOutputFlags(This,analogVideoFlags) ) 
+#define IDeckLinkConfiguration_GetFloat(This,cfgID,value)	\
+    ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) 
 
-#define IDeckLinkConfiguration_EnableFieldFlickerRemovalWhenPaused(This,enable)	\
-    ( (This)->lpVtbl -> EnableFieldFlickerRemovalWhenPaused(This,enable) ) 
+#define IDeckLinkConfiguration_SetString(This,cfgID,value)	\
+    ( (This)->lpVtbl -> SetString(This,cfgID,value) ) 
 
-#define IDeckLinkConfiguration_IsEnabledFieldFlickerRemovalWhenPaused(This,enabled)	\
-    ( (This)->lpVtbl -> IsEnabledFieldFlickerRemovalWhenPaused(This,enabled) ) 
+#define IDeckLinkConfiguration_GetString(This,cfgID,value)	\
+    ( (This)->lpVtbl -> GetString(This,cfgID,value) ) 
 
-#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) ) 
+#define IDeckLinkConfiguration_WriteConfigurationToPreferences(This)	\
+    ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) 
 
 #endif /* COBJMACROS */
 
@@ -3443,7 +3623,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkAttributes * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -3558,7 +3738,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkKeyer * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -3646,7 +3826,7 @@
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("3EB504C9-F97D-40FE-A158-D407D48CB53B")
+    MIDL_INTERFACE("3BBCB8A2-DA2C-42D9-B5D8-88083644E99A")
     IDeckLinkVideoConversion : public IUnknown
     {
     public:
@@ -3665,7 +3845,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkVideoConversion * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -3757,7 +3937,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkDeckControlStatusCallback * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -3972,7 +4152,7 @@
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
             IDeckLinkDeckControl * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
@@ -4270,7 +4450,7 @@
 
 #ifdef __cplusplus
 
-class DECLSPEC_UUID("D398CEE7-4434-4CA3-9BA6-5AE34556B905")
+class DECLSPEC_UUID("F63E77C7-B655-4A4A-9AD0-3CA85D394343")
 CDeckLinkGLScreenPreviewHelper;
 #endif
 
@@ -4278,58 +4458,58 @@
 
 #ifdef __cplusplus
 
-class DECLSPEC_UUID("FFA84F77-73BE-4FB7-B03E-B5E44B9F759B")
+class DECLSPEC_UUID("7DBBBB11-5B7B-467D-AEA4-CEA468FD368C")
 CDeckLinkVideoConversion;
 #endif
 
-#ifndef __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__
-#define __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__
+#ifndef __IDeckLinkDisplayModeIterator_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkDisplayModeIterator_v7_6_INTERFACE_DEFINED__
 
-/* interface IDeckLinkDisplayModeIterator_v7_1 */
+/* interface IDeckLinkDisplayModeIterator_v7_6 */
 /* [helpstring][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkDisplayModeIterator_v7_1;
+EXTERN_C const IID IID_IDeckLinkDisplayModeIterator_v7_6;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("B28131B6-59AC-4857-B5AC-CD75D5883E2F")
-    IDeckLinkDisplayModeIterator_v7_1 : public IUnknown
+    MIDL_INTERFACE("455D741F-1779-4800-86F5-0B5D13D79751")
+    IDeckLinkDisplayModeIterator_v7_6 : public IUnknown
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE Next( 
-            /* [out] */ IDeckLinkDisplayMode_v7_1 **deckLinkDisplayMode) = 0;
+            /* [out] */ IDeckLinkDisplayMode_v7_6 **deckLinkDisplayMode) = 0;
         
     };
     
 #else 	/* C style interface */
 
-    typedef struct IDeckLinkDisplayModeIterator_v7_1Vtbl
+    typedef struct IDeckLinkDisplayModeIterator_v7_6Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkDisplayModeIterator_v7_1 * This,
+            IDeckLinkDisplayModeIterator_v7_6 * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkDisplayModeIterator_v7_1 * This);
+            IDeckLinkDisplayModeIterator_v7_6 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeckLinkDisplayModeIterator_v7_1 * This);
+            IDeckLinkDisplayModeIterator_v7_6 * This);
         
         HRESULT ( STDMETHODCALLTYPE *Next )( 
-            IDeckLinkDisplayModeIterator_v7_1 * This,
-            /* [out] */ IDeckLinkDisplayMode_v7_1 **deckLinkDisplayMode);
+            IDeckLinkDisplayModeIterator_v7_6 * This,
+            /* [out] */ IDeckLinkDisplayMode_v7_6 **deckLinkDisplayMode);
         
         END_INTERFACE
-    } IDeckLinkDisplayModeIterator_v7_1Vtbl;
+    } IDeckLinkDisplayModeIterator_v7_6Vtbl;
 
-    interface IDeckLinkDisplayModeIterator_v7_1
+    interface IDeckLinkDisplayModeIterator_v7_6
     {
-        CONST_VTBL struct IDeckLinkDisplayModeIterator_v7_1Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkDisplayModeIterator_v7_6Vtbl *lpVtbl;
     };
 
     
@@ -4337,17 +4517,17 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkDisplayModeIterator_v7_1_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkDisplayModeIterator_v7_6_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkDisplayModeIterator_v7_1_AddRef(This)	\
+#define IDeckLinkDisplayModeIterator_v7_6_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkDisplayModeIterator_v7_1_Release(This)	\
+#define IDeckLinkDisplayModeIterator_v7_6_Release(This)	\
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkDisplayModeIterator_v7_1_Next(This,deckLinkDisplayMode)	\
+#define IDeckLinkDisplayModeIterator_v7_6_Next(This,deckLinkDisplayMode)	\
     ( (This)->lpVtbl -> Next(This,deckLinkDisplayMode) ) 
 
 #endif /* COBJMACROS */
@@ -4358,22 +4538,22 @@
 
 
 
-#endif 	/* __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__ */
+#endif 	/* __IDeckLinkDisplayModeIterator_v7_6_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__
-#define __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__
+#ifndef __IDeckLinkDisplayMode_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkDisplayMode_v7_6_INTERFACE_DEFINED__
 
-/* interface IDeckLinkDisplayMode_v7_1 */
+/* interface IDeckLinkDisplayMode_v7_6 */
 /* [helpstring][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkDisplayMode_v7_1;
+EXTERN_C const IID IID_IDeckLinkDisplayMode_v7_6;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("AF0CD6D5-8376-435E-8433-54F9DD530AC3")
-    IDeckLinkDisplayMode_v7_1 : public IUnknown
+    MIDL_INTERFACE("87451E84-2B7E-439E-A629-4393EA4A8550")
+    IDeckLinkDisplayMode_v7_6 : public IUnknown
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE GetName( 
@@ -4389,50 +4569,55 @@
             /* [out] */ BMDTimeValue *frameDuration,
             /* [out] */ BMDTimeScale *timeScale) = 0;
         
+        virtual BMDFieldDominance STDMETHODCALLTYPE GetFieldDominance( void) = 0;
+        
     };
     
 #else 	/* C style interface */
 
-    typedef struct IDeckLinkDisplayMode_v7_1Vtbl
+    typedef struct IDeckLinkDisplayMode_v7_6Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkDisplayMode_v7_1 * This,
+            IDeckLinkDisplayMode_v7_6 * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkDisplayMode_v7_1 * This);
+            IDeckLinkDisplayMode_v7_6 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeckLinkDisplayMode_v7_1 * This);
+            IDeckLinkDisplayMode_v7_6 * This);
         
         HRESULT ( STDMETHODCALLTYPE *GetName )( 
-            IDeckLinkDisplayMode_v7_1 * This,
+            IDeckLinkDisplayMode_v7_6 * This,
             /* [out] */ BSTR *name);
         
         BMDDisplayMode ( STDMETHODCALLTYPE *GetDisplayMode )( 
-            IDeckLinkDisplayMode_v7_1 * This);
+            IDeckLinkDisplayMode_v7_6 * This);
         
         long ( STDMETHODCALLTYPE *GetWidth )( 
-            IDeckLinkDisplayMode_v7_1 * This);
+            IDeckLinkDisplayMode_v7_6 * This);
         
         long ( STDMETHODCALLTYPE *GetHeight )( 
-            IDeckLinkDisplayMode_v7_1 * This);
+            IDeckLinkDisplayMode_v7_6 * This);
         
         HRESULT ( STDMETHODCALLTYPE *GetFrameRate )( 
-            IDeckLinkDisplayMode_v7_1 * This,
+            IDeckLinkDisplayMode_v7_6 * This,
             /* [out] */ BMDTimeValue *frameDuration,
             /* [out] */ BMDTimeScale *timeScale);
         
+        BMDFieldDominance ( STDMETHODCALLTYPE *GetFieldDominance )( 
+            IDeckLinkDisplayMode_v7_6 * This);
+        
         END_INTERFACE
-    } IDeckLinkDisplayMode_v7_1Vtbl;
+    } IDeckLinkDisplayMode_v7_6Vtbl;
 
-    interface IDeckLinkDisplayMode_v7_1
+    interface IDeckLinkDisplayMode_v7_6
     {
-        CONST_VTBL struct IDeckLinkDisplayMode_v7_1Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkDisplayMode_v7_6Vtbl *lpVtbl;
     };
 
     
@@ -4440,31 +4625,34 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkDisplayMode_v7_1_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkDisplayMode_v7_6_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkDisplayMode_v7_1_AddRef(This)	\
+#define IDeckLinkDisplayMode_v7_6_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkDisplayMode_v7_1_Release(This)	\
+#define IDeckLinkDisplayMode_v7_6_Release(This)	\
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkDisplayMode_v7_1_GetName(This,name)	\
+#define IDeckLinkDisplayMode_v7_6_GetName(This,name)	\
     ( (This)->lpVtbl -> GetName(This,name) ) 
 
-#define IDeckLinkDisplayMode_v7_1_GetDisplayMode(This)	\
+#define IDeckLinkDisplayMode_v7_6_GetDisplayMode(This)	\
     ( (This)->lpVtbl -> GetDisplayMode(This) ) 
 
-#define IDeckLinkDisplayMode_v7_1_GetWidth(This)	\
+#define IDeckLinkDisplayMode_v7_6_GetWidth(This)	\
     ( (This)->lpVtbl -> GetWidth(This) ) 
 
-#define IDeckLinkDisplayMode_v7_1_GetHeight(This)	\
+#define IDeckLinkDisplayMode_v7_6_GetHeight(This)	\
     ( (This)->lpVtbl -> GetHeight(This) ) 
 
-#define IDeckLinkDisplayMode_v7_1_GetFrameRate(This,frameDuration,timeScale)	\
+#define IDeckLinkDisplayMode_v7_6_GetFrameRate(This,frameDuration,timeScale)	\
     ( (This)->lpVtbl -> GetFrameRate(This,frameDuration,timeScale) ) 
 
+#define IDeckLinkDisplayMode_v7_6_GetFieldDominance(This)	\
+    ( (This)->lpVtbl -> GetFieldDominance(This) ) 
+
 #endif /* COBJMACROS */
 
 
@@ -4473,199 +4661,282 @@
 
 
 
-#endif 	/* __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__ */
+#endif 	/* __IDeckLinkDisplayMode_v7_6_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__
-#define __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__
+#ifndef __IDeckLinkOutput_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkOutput_v7_6_INTERFACE_DEFINED__
 
-/* interface IDeckLinkVideoFrame_v7_1 */
+/* interface IDeckLinkOutput_v7_6 */
 /* [helpstring][local][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkVideoFrame_v7_1;
+EXTERN_C const IID IID_IDeckLinkOutput_v7_6;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("333F3A10-8C2D-43CF-B79D-46560FEEA1CE")
-    IDeckLinkVideoFrame_v7_1 : public IUnknown
+    MIDL_INTERFACE("29228142-EB8C-4141-A621-F74026450955")
+    IDeckLinkOutput_v7_6 : public IUnknown
     {
     public:
-        virtual long STDMETHODCALLTYPE GetWidth( void) = 0;
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
         
-        virtual long STDMETHODCALLTYPE GetHeight( void) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;
         
-        virtual long STDMETHODCALLTYPE GetRowBytes( void) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback_v7_6 *previewCallback) = 0;
         
-        virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0;
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( 
+            BMDDisplayMode displayMode,
+            BMDVideoOutputFlags flags) = 0;
         
-        virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags( void) = 0;
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
-            void **buffer) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator( 
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( 
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame_v7_6 **outFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( 
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( 
+            /* [in] */ IDeckLinkVideoOutputCallback_v7_6 *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount( 
+            /* [out] */ unsigned long *bufferedFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( 
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount,
+            BMDAudioOutputStreamType streamType) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( 
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( 
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( 
+            /* [out] */ unsigned long *bufferedSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( 
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( 
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( 
+            BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( 
+            /* [out] */ BOOL *active) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime( 
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *streamTime,
+            /* [out] */ double *playbackSpeed) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame) = 0;
         
     };
     
 #else 	/* C style interface */
 
-    typedef struct IDeckLinkVideoFrame_v7_1Vtbl
+    typedef struct IDeckLinkOutput_v7_6Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkVideoFrame_v7_1 * This,
+            IDeckLinkOutput_v7_6 * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkVideoFrame_v7_1 * This);
+            IDeckLinkOutput_v7_6 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeckLinkVideoFrame_v7_1 * This);
+            IDeckLinkOutput_v7_6 * This);
         
-        long ( STDMETHODCALLTYPE *GetWidth )( 
-            IDeckLinkVideoFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
         
-        long ( STDMETHODCALLTYPE *GetHeight )( 
-            IDeckLinkVideoFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator);
         
-        long ( STDMETHODCALLTYPE *GetRowBytes )( 
-            IDeckLinkVideoFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback_v7_6 *previewCallback);
         
-        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
-            IDeckLinkVideoFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDDisplayMode displayMode,
+            BMDVideoOutputFlags flags);
         
-        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
-            IDeckLinkVideoFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( 
+            IDeckLinkOutput_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
-            IDeckLinkVideoFrame_v7_1 * This,
-            void **buffer);
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator);
         
-        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;
+        HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( 
+            IDeckLinkOutput_v7_6 * This,
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame_v7_6 **outFrame);
         
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IDeckLinkVideoInputFrame_v7_1Vtbl
-    {
-        BEGIN_INTERFACE
+        HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer);
         
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkVideoInputFrame_v7_1 * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
+        HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame);
         
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkVideoInputFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale);
         
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeckLinkVideoInputFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkVideoOutputCallback_v7_6 *theCallback);
         
-        long ( STDMETHODCALLTYPE *GetWidth )( 
-            IDeckLinkVideoInputFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [out] */ unsigned long *bufferedFrameCount);
         
-        long ( STDMETHODCALLTYPE *GetHeight )( 
-            IDeckLinkVideoInputFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount,
+            BMDAudioOutputStreamType streamType);
         
-        long ( STDMETHODCALLTYPE *GetRowBytes )( 
-            IDeckLinkVideoInputFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( 
+            IDeckLinkOutput_v7_6 * This);
         
-        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
-            IDeckLinkVideoInputFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten);
         
-        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
-            IDeckLinkVideoInputFrame_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( 
+            IDeckLinkOutput_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
-            IDeckLinkVideoInputFrame_v7_1 * This,
-            void **buffer);
+        HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( 
+            IDeckLinkOutput_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *GetFrameTime )( 
-            IDeckLinkVideoInputFrame_v7_1 * This,
-            BMDTimeValue *frameTime,
-            BMDTimeValue *frameDuration,
+        HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [out] */ unsigned long *bufferedSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( 
+            IDeckLinkOutput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
             BMDTimeScale timeScale);
         
+        HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( 
+            IDeckLinkOutput_v7_6 * This,
+            /* [out] */ BOOL *active);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetScheduledStreamTime )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *streamTime,
+            /* [out] */ double *playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkOutput_v7_6 * This,
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame);
+        
         END_INTERFACE
-    } IDeckLinkVideoInputFrame_v7_1Vtbl;
+    } IDeckLinkOutput_v7_6Vtbl;
 
-    interface IDeckLinkVideoInputFrame_v7_1
+    interface IDeckLinkOutput_v7_6
     {
-        CONST_VTBL struct IDeckLinkVideoInputFrame_v7_1Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkOutput_v7_6Vtbl *lpVtbl;
     };
 
     
@@ -4673,37 +4944,93 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkVideoInputFrame_v7_1_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkOutput_v7_6_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkVideoInputFrame_v7_1_AddRef(This)	\
+#define IDeckLinkOutput_v7_6_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkVideoInputFrame_v7_1_Release(This)	\
+#define IDeckLinkOutput_v7_6_Release(This)	\
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkVideoInputFrame_v7_1_GetWidth(This)	\
-    ( (This)->lpVtbl -> GetWidth(This) ) 
+#define IDeckLinkOutput_v7_6_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
 
-#define IDeckLinkVideoInputFrame_v7_1_GetHeight(This)	\
-    ( (This)->lpVtbl -> GetHeight(This) ) 
+#define IDeckLinkOutput_v7_6_GetDisplayModeIterator(This,iterator)	\
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
 
-#define IDeckLinkVideoInputFrame_v7_1_GetRowBytes(This)	\
-    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+#define IDeckLinkOutput_v7_6_SetScreenPreviewCallback(This,previewCallback)	\
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
 
-#define IDeckLinkVideoInputFrame_v7_1_GetPixelFormat(This)	\
-    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+#define IDeckLinkOutput_v7_6_EnableVideoOutput(This,displayMode,flags)	\
+    ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode,flags) ) 
 
-#define IDeckLinkVideoInputFrame_v7_1_GetFlags(This)	\
-    ( (This)->lpVtbl -> GetFlags(This) ) 
+#define IDeckLinkOutput_v7_6_DisableVideoOutput(This)	\
+    ( (This)->lpVtbl -> DisableVideoOutput(This) ) 
 
-#define IDeckLinkVideoInputFrame_v7_1_GetBytes(This,buffer)	\
-    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+#define IDeckLinkOutput_v7_6_SetVideoOutputFrameMemoryAllocator(This,theAllocator)	\
+    ( (This)->lpVtbl -> SetVideoOutputFrameMemoryAllocator(This,theAllocator) ) 
+
+#define IDeckLinkOutput_v7_6_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)	\
+    ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) 
 
+#define IDeckLinkOutput_v7_6_CreateAncillaryData(This,pixelFormat,outBuffer)	\
+    ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) 
 
-#define IDeckLinkVideoInputFrame_v7_1_GetFrameTime(This,frameTime,frameDuration,timeScale)	\
-    ( (This)->lpVtbl -> GetFrameTime(This,frameTime,frameDuration,timeScale) ) 
+#define IDeckLinkOutput_v7_6_DisplayVideoFrameSync(This,theFrame)	\
+    ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) 
+
+#define IDeckLinkOutput_v7_6_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)	\
+    ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) 
+
+#define IDeckLinkOutput_v7_6_SetScheduledFrameCompletionCallback(This,theCallback)	\
+    ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_v7_6_GetBufferedVideoFrameCount(This,bufferedFrameCount)	\
+    ( (This)->lpVtbl -> GetBufferedVideoFrameCount(This,bufferedFrameCount) ) 
+
+#define IDeckLinkOutput_v7_6_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType)	\
+    ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) ) 
+
+#define IDeckLinkOutput_v7_6_DisableAudioOutput(This)	\
+    ( (This)->lpVtbl -> DisableAudioOutput(This) ) 
+
+#define IDeckLinkOutput_v7_6_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)	\
+    ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_v7_6_BeginAudioPreroll(This)	\
+    ( (This)->lpVtbl -> BeginAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_v7_6_EndAudioPreroll(This)	\
+    ( (This)->lpVtbl -> EndAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_v7_6_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)	\
+    ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_v7_6_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount)	\
+    ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) ) 
+
+#define IDeckLinkOutput_v7_6_FlushBufferedAudioSamples(This)	\
+    ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) 
+
+#define IDeckLinkOutput_v7_6_SetAudioCallback(This,theCallback)	\
+    ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_v7_6_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)	\
+    ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) 
+
+#define IDeckLinkOutput_v7_6_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)	\
+    ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) 
+
+#define IDeckLinkOutput_v7_6_IsScheduledPlaybackRunning(This,active)	\
+    ( (This)->lpVtbl -> IsScheduledPlaybackRunning(This,active) ) 
+
+#define IDeckLinkOutput_v7_6_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed)	\
+    ( (This)->lpVtbl -> GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) ) 
+
+#define IDeckLinkOutput_v7_6_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)	\
+    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) 
 
 #endif /* COBJMACROS */
 
@@ -4713,71 +5040,161 @@
 
 
 
-#endif 	/* __IDeckLinkVideoInputFrame_v7_1_INTERFACE_DEFINED__ */
+#endif 	/* __IDeckLinkOutput_v7_6_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__
-#define __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__
+#ifndef __IDeckLinkInput_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkInput_v7_6_INTERFACE_DEFINED__
 
-/* interface IDeckLinkAudioInputPacket_v7_1 */
-/* [helpstring][local][uuid][object] */ 
+/* interface IDeckLinkInput_v7_6 */
+/* [helpstring][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkAudioInputPacket_v7_1;
+EXTERN_C const IID IID_IDeckLinkInput_v7_6;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("C86DE4F6-A29F-42E3-AB3A-1363E29F0788")
-    IDeckLinkAudioInputPacket_v7_1 : public IUnknown
+    MIDL_INTERFACE("300C135A-9F43-48E2-9906-6D7911D93CF1")
+    IDeckLinkInput_v7_6 : public IUnknown
     {
     public:
-        virtual long STDMETHODCALLTYPE GetSampleCount( void) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
-            void **buffer) = 0;
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetAudioPacketTime( 
-            BMDTimeValue *packetTime,
-            BMDTimeScale timeScale) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;
         
-    };
-    
-#else 	/* C style interface */
-
-    typedef struct IDeckLinkAudioInputPacket_v7_1Vtbl
-    {
-        BEGIN_INTERFACE
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback_v7_6 *previewCallback) = 0;
         
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkAudioInputPacket_v7_1 * This,
-            /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
-            __RPC__deref_out  void **ppvObject);
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags) = 0;
         
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkAudioInputPacket_v7_1 * This);
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0;
         
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeckLinkAudioInputPacket_v7_1 * This);
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( 
+            /* [out] */ unsigned long *availableFrameCount) = 0;
         
-        long ( STDMETHODCALLTYPE *GetSampleCount )( 
-            IDeckLinkAudioInputPacket_v7_1 * This);
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( 
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount) = 0;
         
-        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
-            IDeckLinkAudioInputPacket_v7_1 * This,
-            void **buffer);
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0;
         
-        HRESULT ( STDMETHODCALLTYPE *GetAudioPacketTime )( 
-            IDeckLinkAudioInputPacket_v7_1 * This,
-            BMDTimeValue *packetTime,
-            BMDTimeScale timeScale);
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( 
+            /* [out] */ unsigned long *availableSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IDeckLinkInputCallback_v7_6 *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkInput_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkInput_v7_6 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback_v7_6 *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( 
+            IDeckLinkInput_v7_6 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [out] */ unsigned long *availableFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( 
+            IDeckLinkInput_v7_6 * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [out] */ unsigned long *availableSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartStreams )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopStreams )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *PauseStreams )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushStreams )( 
+            IDeckLinkInput_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IDeckLinkInput_v7_6 * This,
+            /* [in] */ IDeckLinkInputCallback_v7_6 *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkInput_v7_6 * This,
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *hardwareTime,
+            /* [out] */ BMDTimeValue *timeInFrame,
+            /* [out] */ BMDTimeValue *ticksPerFrame);
         
         END_INTERFACE
-    } IDeckLinkAudioInputPacket_v7_1Vtbl;
+    } IDeckLinkInput_v7_6Vtbl;
 
-    interface IDeckLinkAudioInputPacket_v7_1
+    interface IDeckLinkInput_v7_6
     {
-        CONST_VTBL struct IDeckLinkAudioInputPacket_v7_1Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkInput_v7_6Vtbl *lpVtbl;
     };
 
     
@@ -4785,24 +5202,60 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkAudioInputPacket_v7_1_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkInput_v7_6_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkAudioInputPacket_v7_1_AddRef(This)	\
+#define IDeckLinkInput_v7_6_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkAudioInputPacket_v7_1_Release(This)	\
+#define IDeckLinkInput_v7_6_Release(This)	\
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkAudioInputPacket_v7_1_GetSampleCount(This)	\
-    ( (This)->lpVtbl -> GetSampleCount(This) ) 
+#define IDeckLinkInput_v7_6_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
 
-#define IDeckLinkAudioInputPacket_v7_1_GetBytes(This,buffer)	\
-    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+#define IDeckLinkInput_v7_6_GetDisplayModeIterator(This,iterator)	\
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
 
-#define IDeckLinkAudioInputPacket_v7_1_GetAudioPacketTime(This,packetTime,timeScale)	\
-    ( (This)->lpVtbl -> GetAudioPacketTime(This,packetTime,timeScale) ) 
+#define IDeckLinkInput_v7_6_SetScreenPreviewCallback(This,previewCallback)	\
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
+
+#define IDeckLinkInput_v7_6_EnableVideoInput(This,displayMode,pixelFormat,flags)	\
+    ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) 
+
+#define IDeckLinkInput_v7_6_DisableVideoInput(This)	\
+    ( (This)->lpVtbl -> DisableVideoInput(This) ) 
+
+#define IDeckLinkInput_v7_6_GetAvailableVideoFrameCount(This,availableFrameCount)	\
+    ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) 
+
+#define IDeckLinkInput_v7_6_EnableAudioInput(This,sampleRate,sampleType,channelCount)	\
+    ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) 
+
+#define IDeckLinkInput_v7_6_DisableAudioInput(This)	\
+    ( (This)->lpVtbl -> DisableAudioInput(This) ) 
+
+#define IDeckLinkInput_v7_6_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)	\
+    ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) 
+
+#define IDeckLinkInput_v7_6_StartStreams(This)	\
+    ( (This)->lpVtbl -> StartStreams(This) ) 
+
+#define IDeckLinkInput_v7_6_StopStreams(This)	\
+    ( (This)->lpVtbl -> StopStreams(This) ) 
+
+#define IDeckLinkInput_v7_6_PauseStreams(This)	\
+    ( (This)->lpVtbl -> PauseStreams(This) ) 
+
+#define IDeckLinkInput_v7_6_FlushStreams(This)	\
+    ( (This)->lpVtbl -> FlushStreams(This) ) 
+
+#define IDeckLinkInput_v7_6_SetCallback(This,theCallback)	\
+    ( (This)->lpVtbl -> SetCallback(This,theCallback) ) 
+
+#define IDeckLinkInput_v7_6_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)	\
+    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) 
 
 #endif /* COBJMACROS */
 
@@ -4812,59 +5265,80 @@
 
 
 
-#endif 	/* __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__ */
+#endif 	/* __IDeckLinkInput_v7_6_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__
-#define __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__
+#ifndef __IDeckLinkTimecode_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkTimecode_v7_6_INTERFACE_DEFINED__
 
-/* interface IDeckLinkVideoOutputCallback_v7_1 */
+/* interface IDeckLinkTimecode_v7_6 */
 /* [helpstring][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkVideoOutputCallback_v7_1;
+EXTERN_C const IID IID_IDeckLinkTimecode_v7_6;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("EBD01AFA-E4B0-49C6-A01D-EDB9D1B55FD9")
-    IDeckLinkVideoOutputCallback_v7_1 : public IUnknown
+    MIDL_INTERFACE("EFB9BCA6-A521-44F7-BD69-2332F24D9EE6")
+    IDeckLinkTimecode_v7_6 : public IUnknown
     {
     public:
-        virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted( 
-            /* [in] */ IDeckLinkVideoFrame_v7_1 *completedFrame,
-            /* [in] */ BMDOutputFrameCompletionResult result) = 0;
+        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 IDeckLinkVideoOutputCallback_v7_1Vtbl
+    typedef struct IDeckLinkTimecode_v7_6Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkVideoOutputCallback_v7_1 * This,
+            IDeckLinkTimecode_v7_6 * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkVideoOutputCallback_v7_1 * This);
+            IDeckLinkTimecode_v7_6 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeckLinkVideoOutputCallback_v7_1 * This);
+            IDeckLinkTimecode_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *ScheduledFrameCompleted )( 
-            IDeckLinkVideoOutputCallback_v7_1 * This,
-            /* [in] */ IDeckLinkVideoFrame_v7_1 *completedFrame,
-            /* [in] */ BMDOutputFrameCompletionResult result);
+        BMDTimecodeBCD ( STDMETHODCALLTYPE *GetBCD )( 
+            IDeckLinkTimecode_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetComponents )( 
+            IDeckLinkTimecode_v7_6 * This,
+            /* [out] */ unsigned char *hours,
+            /* [out] */ unsigned char *minutes,
+            /* [out] */ unsigned char *seconds,
+            /* [out] */ unsigned char *frames);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetString )( 
+            IDeckLinkTimecode_v7_6 * This,
+            /* [out] */ BSTR *timecode);
+        
+        BMDTimecodeFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkTimecode_v7_6 * This);
         
         END_INTERFACE
-    } IDeckLinkVideoOutputCallback_v7_1Vtbl;
+    } IDeckLinkTimecode_v7_6Vtbl;
 
-    interface IDeckLinkVideoOutputCallback_v7_1
+    interface IDeckLinkTimecode_v7_6
     {
-        CONST_VTBL struct IDeckLinkVideoOutputCallback_v7_1Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkTimecode_v7_6Vtbl *lpVtbl;
     };
 
     
@@ -4872,18 +5346,27 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkVideoOutputCallback_v7_1_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkTimecode_v7_6_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkVideoOutputCallback_v7_1_AddRef(This)	\
+#define IDeckLinkTimecode_v7_6_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkVideoOutputCallback_v7_1_Release(This)	\
+#define IDeckLinkTimecode_v7_6_Release(This)	\
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkVideoOutputCallback_v7_1_ScheduledFrameCompleted(This,completedFrame,result)	\
-    ( (This)->lpVtbl -> ScheduledFrameCompleted(This,completedFrame,result) ) 
+#define IDeckLinkTimecode_v7_6_GetBCD(This)	\
+    ( (This)->lpVtbl -> GetBCD(This) ) 
+
+#define IDeckLinkTimecode_v7_6_GetComponents(This,hours,minutes,seconds,frames)	\
+    ( (This)->lpVtbl -> GetComponents(This,hours,minutes,seconds,frames) ) 
+
+#define IDeckLinkTimecode_v7_6_GetString(This,timecode)	\
+    ( (This)->lpVtbl -> GetString(This,timecode) ) 
+
+#define IDeckLinkTimecode_v7_6_GetFlags(This)	\
+    ( (This)->lpVtbl -> GetFlags(This) ) 
 
 #endif /* COBJMACROS */
 
@@ -4893,59 +5376,98 @@
 
 
 
-#endif 	/* __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__ */
+#endif 	/* __IDeckLinkTimecode_v7_6_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__
-#define __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__
+#ifndef __IDeckLinkVideoFrame_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkVideoFrame_v7_6_INTERFACE_DEFINED__
 
-/* interface IDeckLinkInputCallback_v7_1 */
-/* [helpstring][uuid][object] */ 
+/* interface IDeckLinkVideoFrame_v7_6 */
+/* [helpstring][local][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkInputCallback_v7_1;
+EXTERN_C const IID IID_IDeckLinkVideoFrame_v7_6;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("7F94F328-5ED4-4E9F-9729-76A86BDC99CC")
-    IDeckLinkInputCallback_v7_1 : public IUnknown
+    MIDL_INTERFACE("A8D8238E-6B18-4196-99E1-5AF717B83D32")
+    IDeckLinkVideoFrame_v7_6 : public IUnknown
     {
     public:
-        virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived( 
-            /* [in] */ IDeckLinkVideoInputFrame_v7_1 *videoFrame,
-            /* [in] */ IDeckLinkAudioInputPacket_v7_1 *audioPacket) = 0;
+        virtual long STDMETHODCALLTYPE GetWidth( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetHeight( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetRowBytes( void) = 0;
+        
+        virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0;
+        
+        virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            /* [out] */ void **buffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetTimecode( 
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode_v7_6 **timecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAncillaryData( 
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary) = 0;
         
     };
     
 #else 	/* C style interface */
 
-    typedef struct IDeckLinkInputCallback_v7_1Vtbl
+    typedef struct IDeckLinkVideoFrame_v7_6Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkInputCallback_v7_1 * This,
+            IDeckLinkVideoFrame_v7_6 * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkInputCallback_v7_1 * This);
+            IDeckLinkVideoFrame_v7_6 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeckLinkInputCallback_v7_1 * This);
+            IDeckLinkVideoFrame_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( 
-            IDeckLinkInputCallback_v7_1 * This,
-            /* [in] */ IDeckLinkVideoInputFrame_v7_1 *videoFrame,
-            /* [in] */ IDeckLinkAudioInputPacket_v7_1 *audioPacket);
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoFrame_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoFrame_v7_6 * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkVideoFrame_v7_6 * This,
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode_v7_6 **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkVideoFrame_v7_6 * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
         
         END_INTERFACE
-    } IDeckLinkInputCallback_v7_1Vtbl;
+    } IDeckLinkVideoFrame_v7_6Vtbl;
 
-    interface IDeckLinkInputCallback_v7_1
+    interface IDeckLinkVideoFrame_v7_6
     {
-        CONST_VTBL struct IDeckLinkInputCallback_v7_1Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkVideoFrame_v7_6Vtbl *lpVtbl;
     };
 
     
@@ -4953,20 +5475,41 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkInputCallback_v7_1_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkVideoFrame_v7_6_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkInputCallback_v7_1_AddRef(This)	\
+#define IDeckLinkVideoFrame_v7_6_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkInputCallback_v7_1_Release(This)	\
+#define IDeckLinkVideoFrame_v7_6_Release(This)	\
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkInputCallback_v7_1_VideoInputFrameArrived(This,videoFrame,audioPacket)	\
-    ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) 
+#define IDeckLinkVideoFrame_v7_6_GetWidth(This)	\
+    ( (This)->lpVtbl -> GetWidth(This) ) 
 
-#endif /* COBJMACROS */
+#define IDeckLinkVideoFrame_v7_6_GetHeight(This)	\
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetRowBytes(This)	\
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetPixelFormat(This)	\
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetFlags(This)	\
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetBytes(This,buffer)	\
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetTimecode(This,format,timecode)	\
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkVideoFrame_v7_6_GetAncillaryData(This,ancillary)	\
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+#endif /* COBJMACROS */
 
 
 #endif 	/* C style interface */
@@ -4974,252 +5517,118 @@
 
 
 
-#endif 	/* __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__ */
+#endif 	/* __IDeckLinkVideoFrame_v7_6_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__
-#define __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__
+#ifndef __IDeckLinkMutableVideoFrame_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkMutableVideoFrame_v7_6_INTERFACE_DEFINED__
 
-/* interface IDeckLinkOutput_v7_1 */
+/* interface IDeckLinkMutableVideoFrame_v7_6 */
 /* [helpstring][local][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkOutput_v7_1;
+EXTERN_C const IID IID_IDeckLinkMutableVideoFrame_v7_6;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("AE5B3E9B-4E1E-4535-B6E8-480FF52F6CE5")
-    IDeckLinkOutput_v7_1 : public IUnknown
+    MIDL_INTERFACE("46FCEE00-B4E6-43D0-91C0-023A7FCEB34F")
+    IDeckLinkMutableVideoFrame_v7_6 : public IDeckLinkVideoFrame_v7_6
     {
     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 SetFlags( 
+            BMDFrameFlags newFlags) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( 
-            BMDTimeValue playbackStartTime,
-            BMDTimeScale timeScale,
-            double playbackSpeed) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetTimecode( 
+            BMDTimecodeFormat format,
+            /* [in] */ IDeckLinkTimecode_v7_6 *timecode) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( 
-            BMDTimeValue stopPlaybackAtTime,
-            BMDTimeValue *actualStopTime,
-            BMDTimeScale timeScale) = 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 GetHardwareReferenceClock( 
-            BMDTimeScale desiredTimeScale,
-            BMDTimeValue *elapsedTimeSinceSchedulerBegan) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetAncillaryData( 
+            /* [in] */ IDeckLinkVideoFrameAncillary *ancillary) = 0;
         
     };
     
 #else 	/* C style interface */
 
-    typedef struct IDeckLinkOutput_v7_1Vtbl
+    typedef struct IDeckLinkMutableVideoFrame_v7_6Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkOutput_v7_1 * This,
+            IDeckLinkMutableVideoFrame_v7_6 * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkOutput_v7_1 * This);
+            IDeckLinkMutableVideoFrame_v7_6 * 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);
+            IDeckLinkMutableVideoFrame_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( 
-            IDeckLinkOutput_v7_1 * This,
-            BMDAudioSampleRate sampleRate,
-            BMDAudioSampleType sampleType,
-            unsigned long channelCount);
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( 
-            IDeckLinkOutput_v7_1 * This);
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( 
-            IDeckLinkOutput_v7_1 * This,
-            void *buffer,
-            unsigned long sampleFrameCount,
-            /* [out] */ unsigned long *sampleFramesWritten);
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( 
-            IDeckLinkOutput_v7_1 * This);
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( 
-            IDeckLinkOutput_v7_1 * This);
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( 
-            IDeckLinkOutput_v7_1 * This,
-            void *buffer,
-            unsigned long sampleFrameCount,
-            BMDTimeValue streamTime,
-            BMDTimeScale timeScale,
-            /* [out] */ unsigned long *sampleFramesWritten);
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            /* [out] */ void **buffer);
         
-        HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( 
-            IDeckLinkOutput_v7_1 * This,
-            /* [out] */ unsigned long *bufferedSampleCount);
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode_v7_6 **timecode);
         
-        HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( 
-            IDeckLinkOutput_v7_1 * This);
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
         
-        HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( 
-            IDeckLinkOutput_v7_1 * This,
-            /* [in] */ IDeckLinkAudioOutputCallback *theCallback);
+        HRESULT ( STDMETHODCALLTYPE *SetFlags )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            BMDFrameFlags newFlags);
         
-        HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( 
-            IDeckLinkOutput_v7_1 * This,
-            BMDTimeValue playbackStartTime,
-            BMDTimeScale timeScale,
-            double playbackSpeed);
+        HRESULT ( STDMETHODCALLTYPE *SetTimecode )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            BMDTimecodeFormat format,
+            /* [in] */ IDeckLinkTimecode_v7_6 *timecode);
         
-        HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( 
-            IDeckLinkOutput_v7_1 * This,
-            BMDTimeValue stopPlaybackAtTime,
-            BMDTimeValue *actualStopTime,
-            BMDTimeScale timeScale);
+        HRESULT ( STDMETHODCALLTYPE *SetTimecodeFromComponents )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            BMDTimecodeFormat format,
+            unsigned char hours,
+            unsigned char minutes,
+            unsigned char seconds,
+            unsigned char frames,
+            BMDTimecodeFlags flags);
         
-        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
-            IDeckLinkOutput_v7_1 * This,
-            BMDTimeScale desiredTimeScale,
-            BMDTimeValue *elapsedTimeSinceSchedulerBegan);
+        HRESULT ( STDMETHODCALLTYPE *SetAncillaryData )( 
+            IDeckLinkMutableVideoFrame_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrameAncillary *ancillary);
         
         END_INTERFACE
-    } IDeckLinkOutput_v7_1Vtbl;
+    } IDeckLinkMutableVideoFrame_v7_6Vtbl;
 
-    interface IDeckLinkOutput_v7_1
+    interface IDeckLinkMutableVideoFrame_v7_6
     {
-        CONST_VTBL struct IDeckLinkOutput_v7_1Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkMutableVideoFrame_v7_6Vtbl *lpVtbl;
     };
 
     
@@ -5227,81 +5636,2352 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkOutput_v7_1_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkMutableVideoFrame_v7_6_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkOutput_v7_1_AddRef(This)	\
+#define IDeckLinkMutableVideoFrame_v7_6_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkOutput_v7_1_Release(This)	\
+#define IDeckLinkMutableVideoFrame_v7_6_Release(This)	\
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkOutput_v7_1_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
+#define IDeckLinkMutableVideoFrame_v7_6_GetWidth(This)	\
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetHeight(This)	\
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetRowBytes(This)	\
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetPixelFormat(This)	\
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetFlags(This)	\
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetBytes(This,buffer)	\
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetTimecode(This,format,timecode)	\
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_GetAncillaryData(This,ancillary)	\
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+
+#define IDeckLinkMutableVideoFrame_v7_6_SetFlags(This,newFlags)	\
+    ( (This)->lpVtbl -> SetFlags(This,newFlags) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_SetTimecode(This,format,timecode)	\
+    ( (This)->lpVtbl -> SetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags)	\
+    ( (This)->lpVtbl -> SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags) ) 
+
+#define IDeckLinkMutableVideoFrame_v7_6_SetAncillaryData(This,ancillary)	\
+    ( (This)->lpVtbl -> SetAncillaryData(This,ancillary) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkMutableVideoFrame_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoInputFrame_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoInputFrame_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("9A74FA41-AE9F-47AC-8CF4-01F42DD59965")
+    IDeckLinkVideoInputFrame_v7_6 : public IDeckLinkVideoFrame_v7_6
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetStreamTime( 
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceTimestamp( 
+            BMDTimeScale timeScale,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkVideoInputFrame_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoInputFrame_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode_v7_6 **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceTimestamp )( 
+            IDeckLinkVideoInputFrame_v7_6 * This,
+            BMDTimeScale timeScale,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration);
+        
+        END_INTERFACE
+    } IDeckLinkVideoInputFrame_v7_6Vtbl;
+
+    interface IDeckLinkVideoInputFrame_v7_6
+    {
+        CONST_VTBL struct IDeckLinkVideoInputFrame_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoInputFrame_v7_6_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_6_GetWidth(This)	\
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetHeight(This)	\
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetRowBytes(This)	\
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetPixelFormat(This)	\
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetFlags(This)	\
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetBytes(This,buffer)	\
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetTimecode(This,format,timecode)	\
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetAncillaryData(This,ancillary)	\
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_6_GetStreamTime(This,frameTime,frameDuration,timeScale)	\
+    ( (This)->lpVtbl -> GetStreamTime(This,frameTime,frameDuration,timeScale) ) 
+
+#define IDeckLinkVideoInputFrame_v7_6_GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration)	\
+    ( (This)->lpVtbl -> GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkVideoInputFrame_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkScreenPreviewCallback_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkScreenPreviewCallback_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkScreenPreviewCallback_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkScreenPreviewCallback_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("373F499D-4B4D-4518-AD22-6354E5A5825E")
+    IDeckLinkScreenPreviewCallback_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DrawFrame( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkScreenPreviewCallback_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkScreenPreviewCallback_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkScreenPreviewCallback_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkScreenPreviewCallback_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DrawFrame )( 
+            IDeckLinkScreenPreviewCallback_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame);
+        
+        END_INTERFACE
+    } IDeckLinkScreenPreviewCallback_v7_6Vtbl;
+
+    interface IDeckLinkScreenPreviewCallback_v7_6
+    {
+        CONST_VTBL struct IDeckLinkScreenPreviewCallback_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkScreenPreviewCallback_v7_6_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkScreenPreviewCallback_v7_6_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkScreenPreviewCallback_v7_6_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkScreenPreviewCallback_v7_6_DrawFrame(This,theFrame)	\
+    ( (This)->lpVtbl -> DrawFrame(This,theFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkScreenPreviewCallback_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkGLScreenPreviewHelper_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkGLScreenPreviewHelper_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkGLScreenPreviewHelper_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkGLScreenPreviewHelper_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("BA575CD9-A15E-497B-B2C2-F9AFE7BE4EBA")
+    IDeckLinkGLScreenPreviewHelper_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE InitializeGL( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PaintGL( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetFrame( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkGLScreenPreviewHelper_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *InitializeGL )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *PaintGL )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFrame )( 
+            IDeckLinkGLScreenPreviewHelper_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame);
+        
+        END_INTERFACE
+    } IDeckLinkGLScreenPreviewHelper_v7_6Vtbl;
+
+    interface IDeckLinkGLScreenPreviewHelper_v7_6
+    {
+        CONST_VTBL struct IDeckLinkGLScreenPreviewHelper_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_InitializeGL(This)	\
+    ( (This)->lpVtbl -> InitializeGL(This) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_PaintGL(This)	\
+    ( (This)->lpVtbl -> PaintGL(This) ) 
+
+#define IDeckLinkGLScreenPreviewHelper_v7_6_SetFrame(This,theFrame)	\
+    ( (This)->lpVtbl -> SetFrame(This,theFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkGLScreenPreviewHelper_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoConversion_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkVideoConversion_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoConversion_v7_6 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoConversion_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("3EB504C9-F97D-40FE-A158-D407D48CB53B")
+    IDeckLinkVideoConversion_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE ConvertFrame( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *srcFrame,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *dstFrame) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkVideoConversion_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoConversion_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoConversion_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoConversion_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ConvertFrame )( 
+            IDeckLinkVideoConversion_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *srcFrame,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *dstFrame);
+        
+        END_INTERFACE
+    } IDeckLinkVideoConversion_v7_6Vtbl;
+
+    interface IDeckLinkVideoConversion_v7_6
+    {
+        CONST_VTBL struct IDeckLinkVideoConversion_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoConversion_v7_6_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoConversion_v7_6_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoConversion_v7_6_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoConversion_v7_6_ConvertFrame(This,srcFrame,dstFrame)	\
+    ( (This)->lpVtbl -> ConvertFrame(This,srcFrame,dstFrame) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkVideoConversion_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkConfiguration_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkConfiguration_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkConfiguration_v7_6 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkConfiguration_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("B8EAD569-B764-47F0-A73F-AE40DF6CBF10")
+    IDeckLinkConfiguration_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetConfigurationValidator( 
+            /* [out] */ IDeckLinkConfiguration_v7_6 **configObject) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFormat( 
+            /* [in] */ BMDVideoConnection_v7_6 videoOutputConnection) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsVideoOutputActive( 
+            /* [in] */ BMDVideoConnection_v7_6 videoOutputConnection,
+            /* [out] */ BOOL *active) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAnalogVideoOutputFlags( 
+            /* [in] */ BMDAnalogVideoFlags analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAnalogVideoOutputFlags( 
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableFieldFlickerRemovalWhenPaused( 
+            /* [in] */ BOOL enable) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsEnabledFieldFlickerRemovalWhenPaused( 
+            /* [out] */ BOOL *enabled) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set444And3GBpsVideoOutput( 
+            /* [in] */ BOOL enable444VideoOutput,
+            /* [in] */ BOOL enable3GbsOutput) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Get444And3GBpsVideoOutput( 
+            /* [out] */ BOOL *is444VideoOutputEnabled,
+            /* [out] */ BOOL *threeGbsOutputEnabled) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputConversionMode( 
+            /* [in] */ BMDVideoOutputConversionMode conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoOutputConversionMode( 
+            /* [out] */ BMDVideoOutputConversionMode *conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set_HD1080p24_to_HD1080i5994_Conversion( 
+            /* [in] */ BOOL enable) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Get_HD1080p24_to_HD1080i5994_Conversion( 
+            /* [out] */ BOOL *enabled) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoInputFormat( 
+            /* [in] */ BMDVideoConnection_v7_6 videoInputFormat) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoInputFormat( 
+            /* [out] */ BMDVideoConnection_v7_6 *videoInputFormat) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAnalogVideoInputFlags( 
+            /* [in] */ BMDAnalogVideoFlags analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAnalogVideoInputFlags( 
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoInputConversionMode( 
+            /* [in] */ BMDVideoInputConversionMode conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVideoInputConversionMode( 
+            /* [out] */ BMDVideoInputConversionMode *conversionMode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetBlackVideoOutputDuringCapture( 
+            /* [in] */ BOOL blackOutInCapture) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBlackVideoOutputDuringCapture( 
+            /* [out] */ BOOL *blackOutInCapture) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Set32PulldownSequenceInitialTimecodeFrame( 
+            /* [in] */ unsigned long aFrameTimecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Get32PulldownSequenceInitialTimecodeFrame( 
+            /* [out] */ unsigned long *aFrameTimecode) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVancSourceLineMapping( 
+            /* [in] */ unsigned long activeLine1VANCsource,
+            /* [in] */ unsigned long activeLine2VANCsource,
+            /* [in] */ unsigned long activeLine3VANCsource) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetVancSourceLineMapping( 
+            /* [out] */ unsigned long *activeLine1VANCsource,
+            /* [out] */ unsigned long *activeLine2VANCsource,
+            /* [out] */ unsigned long *activeLine3VANCsource) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAudioInputFormat( 
+            /* [in] */ BMDAudioConnection audioInputFormat) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAudioInputFormat( 
+            /* [out] */ BMDAudioConnection *audioInputFormat) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkConfiguration_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkConfiguration_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkConfiguration_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetConfigurationValidator )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ IDeckLinkConfiguration_v7_6 **configObject);
+        
+        HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( 
+            IDeckLinkConfiguration_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFormat )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDVideoConnection_v7_6 videoOutputConnection);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsVideoOutputActive )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDVideoConnection_v7_6 videoOutputConnection,
+            /* [out] */ BOOL *active);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAnalogVideoOutputFlags )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDAnalogVideoFlags analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAnalogVideoOutputFlags )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableFieldFlickerRemovalWhenPaused )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BOOL enable);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsEnabledFieldFlickerRemovalWhenPaused )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BOOL *enabled);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set444And3GBpsVideoOutput )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BOOL enable444VideoOutput,
+            /* [in] */ BOOL enable3GbsOutput);
+        
+        HRESULT ( STDMETHODCALLTYPE *Get444And3GBpsVideoOutput )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BOOL *is444VideoOutputEnabled,
+            /* [out] */ BOOL *threeGbsOutputEnabled);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputConversionMode )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDVideoOutputConversionMode conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoOutputConversionMode )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDVideoOutputConversionMode *conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set_HD1080p24_to_HD1080i5994_Conversion )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BOOL enable);
+        
+        HRESULT ( STDMETHODCALLTYPE *Get_HD1080p24_to_HD1080i5994_Conversion )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BOOL *enabled);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoInputFormat )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDVideoConnection_v7_6 videoInputFormat);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoInputFormat )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDVideoConnection_v7_6 *videoInputFormat);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAnalogVideoInputFlags )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDAnalogVideoFlags analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAnalogVideoInputFlags )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDAnalogVideoFlags *analogVideoFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoInputConversionMode )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDVideoInputConversionMode conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVideoInputConversionMode )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDVideoInputConversionMode *conversionMode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetBlackVideoOutputDuringCapture )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BOOL blackOutInCapture);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBlackVideoOutputDuringCapture )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BOOL *blackOutInCapture);
+        
+        HRESULT ( STDMETHODCALLTYPE *Set32PulldownSequenceInitialTimecodeFrame )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ unsigned long aFrameTimecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *Get32PulldownSequenceInitialTimecodeFrame )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ unsigned long *aFrameTimecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVancSourceLineMapping )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ unsigned long activeLine1VANCsource,
+            /* [in] */ unsigned long activeLine2VANCsource,
+            /* [in] */ unsigned long activeLine3VANCsource);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetVancSourceLineMapping )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ unsigned long *activeLine1VANCsource,
+            /* [out] */ unsigned long *activeLine2VANCsource,
+            /* [out] */ unsigned long *activeLine3VANCsource);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAudioInputFormat )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [in] */ BMDAudioConnection audioInputFormat);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAudioInputFormat )( 
+            IDeckLinkConfiguration_v7_6 * This,
+            /* [out] */ BMDAudioConnection *audioInputFormat);
+        
+        END_INTERFACE
+    } IDeckLinkConfiguration_v7_6Vtbl;
+
+    interface IDeckLinkConfiguration_v7_6
+    {
+        CONST_VTBL struct IDeckLinkConfiguration_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkConfiguration_v7_6_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkConfiguration_v7_6_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkConfiguration_v7_6_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkConfiguration_v7_6_GetConfigurationValidator(This,configObject)	\
+    ( (This)->lpVtbl -> GetConfigurationValidator(This,configObject) ) 
+
+#define IDeckLinkConfiguration_v7_6_WriteConfigurationToPreferences(This)	\
+    ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetVideoOutputFormat(This,videoOutputConnection)	\
+    ( (This)->lpVtbl -> SetVideoOutputFormat(This,videoOutputConnection) ) 
+
+#define IDeckLinkConfiguration_v7_6_IsVideoOutputActive(This,videoOutputConnection,active)	\
+    ( (This)->lpVtbl -> IsVideoOutputActive(This,videoOutputConnection,active) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetAnalogVideoOutputFlags(This,analogVideoFlags)	\
+    ( (This)->lpVtbl -> SetAnalogVideoOutputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetAnalogVideoOutputFlags(This,analogVideoFlags)	\
+    ( (This)->lpVtbl -> GetAnalogVideoOutputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_v7_6_EnableFieldFlickerRemovalWhenPaused(This,enable)	\
+    ( (This)->lpVtbl -> EnableFieldFlickerRemovalWhenPaused(This,enable) ) 
+
+#define IDeckLinkConfiguration_v7_6_IsEnabledFieldFlickerRemovalWhenPaused(This,enabled)	\
+    ( (This)->lpVtbl -> IsEnabledFieldFlickerRemovalWhenPaused(This,enabled) ) 
+
+#define IDeckLinkConfiguration_v7_6_Set444And3GBpsVideoOutput(This,enable444VideoOutput,enable3GbsOutput)	\
+    ( (This)->lpVtbl -> Set444And3GBpsVideoOutput(This,enable444VideoOutput,enable3GbsOutput) ) 
+
+#define IDeckLinkConfiguration_v7_6_Get444And3GBpsVideoOutput(This,is444VideoOutputEnabled,threeGbsOutputEnabled)	\
+    ( (This)->lpVtbl -> Get444And3GBpsVideoOutput(This,is444VideoOutputEnabled,threeGbsOutputEnabled) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetVideoOutputConversionMode(This,conversionMode)	\
+    ( (This)->lpVtbl -> SetVideoOutputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetVideoOutputConversionMode(This,conversionMode)	\
+    ( (This)->lpVtbl -> GetVideoOutputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_v7_6_Set_HD1080p24_to_HD1080i5994_Conversion(This,enable)	\
+    ( (This)->lpVtbl -> Set_HD1080p24_to_HD1080i5994_Conversion(This,enable) ) 
+
+#define IDeckLinkConfiguration_v7_6_Get_HD1080p24_to_HD1080i5994_Conversion(This,enabled)	\
+    ( (This)->lpVtbl -> Get_HD1080p24_to_HD1080i5994_Conversion(This,enabled) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetVideoInputFormat(This,videoInputFormat)	\
+    ( (This)->lpVtbl -> SetVideoInputFormat(This,videoInputFormat) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetVideoInputFormat(This,videoInputFormat)	\
+    ( (This)->lpVtbl -> GetVideoInputFormat(This,videoInputFormat) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetAnalogVideoInputFlags(This,analogVideoFlags)	\
+    ( (This)->lpVtbl -> SetAnalogVideoInputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetAnalogVideoInputFlags(This,analogVideoFlags)	\
+    ( (This)->lpVtbl -> GetAnalogVideoInputFlags(This,analogVideoFlags) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetVideoInputConversionMode(This,conversionMode)	\
+    ( (This)->lpVtbl -> SetVideoInputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetVideoInputConversionMode(This,conversionMode)	\
+    ( (This)->lpVtbl -> GetVideoInputConversionMode(This,conversionMode) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetBlackVideoOutputDuringCapture(This,blackOutInCapture)	\
+    ( (This)->lpVtbl -> SetBlackVideoOutputDuringCapture(This,blackOutInCapture) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetBlackVideoOutputDuringCapture(This,blackOutInCapture)	\
+    ( (This)->lpVtbl -> GetBlackVideoOutputDuringCapture(This,blackOutInCapture) ) 
+
+#define IDeckLinkConfiguration_v7_6_Set32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode)	\
+    ( (This)->lpVtbl -> Set32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode) ) 
+
+#define IDeckLinkConfiguration_v7_6_Get32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode)	\
+    ( (This)->lpVtbl -> Get32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource)	\
+    ( (This)->lpVtbl -> SetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource)	\
+    ( (This)->lpVtbl -> GetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource) ) 
+
+#define IDeckLinkConfiguration_v7_6_SetAudioInputFormat(This,audioInputFormat)	\
+    ( (This)->lpVtbl -> SetAudioInputFormat(This,audioInputFormat) ) 
+
+#define IDeckLinkConfiguration_v7_6_GetAudioInputFormat(This,audioInputFormat)	\
+    ( (This)->lpVtbl -> GetAudioInputFormat(This,audioInputFormat) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkConfiguration_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoOutputCallback_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkVideoOutputCallback_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoOutputCallback_v7_6 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoOutputCallback_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("E763A626-4A3C-49D1-BF13-E7AD3692AE52")
+    IDeckLinkVideoOutputCallback_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *completedFrame,
+            /* [in] */ BMDOutputFrameCompletionResult result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduledPlaybackHasStopped( void) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkVideoOutputCallback_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoOutputCallback_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoOutputCallback_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoOutputCallback_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduledFrameCompleted )( 
+            IDeckLinkVideoOutputCallback_v7_6 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *completedFrame,
+            /* [in] */ BMDOutputFrameCompletionResult result);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduledPlaybackHasStopped )( 
+            IDeckLinkVideoOutputCallback_v7_6 * This);
+        
+        END_INTERFACE
+    } IDeckLinkVideoOutputCallback_v7_6Vtbl;
+
+    interface IDeckLinkVideoOutputCallback_v7_6
+    {
+        CONST_VTBL struct IDeckLinkVideoOutputCallback_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoOutputCallback_v7_6_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoOutputCallback_v7_6_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoOutputCallback_v7_6_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoOutputCallback_v7_6_ScheduledFrameCompleted(This,completedFrame,result)	\
+    ( (This)->lpVtbl -> ScheduledFrameCompleted(This,completedFrame,result) ) 
+
+#define IDeckLinkVideoOutputCallback_v7_6_ScheduledPlaybackHasStopped(This)	\
+    ( (This)->lpVtbl -> ScheduledPlaybackHasStopped(This) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkVideoOutputCallback_v7_6_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkInputCallback_v7_6_INTERFACE_DEFINED__
+#define __IDeckLinkInputCallback_v7_6_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInputCallback_v7_6 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInputCallback_v7_6;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("31D28EE7-88B6-4CB1-897A-CDBF79A26414")
+    IDeckLinkInputCallback_v7_6 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged( 
+            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
+            /* [in] */ IDeckLinkDisplayMode_v7_6 *newDisplayMode,
+            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived( 
+            /* [in] */ IDeckLinkVideoInputFrame_v7_6 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket *audioPacket) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkInputCallback_v7_6Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInputCallback_v7_6 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInputCallback_v7_6 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInputCallback_v7_6 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFormatChanged )( 
+            IDeckLinkInputCallback_v7_6 * This,
+            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
+            /* [in] */ IDeckLinkDisplayMode_v7_6 *newDisplayMode,
+            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( 
+            IDeckLinkInputCallback_v7_6 * This,
+            /* [in] */ IDeckLinkVideoInputFrame_v7_6 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket *audioPacket);
+        
+        END_INTERFACE
+    } IDeckLinkInputCallback_v7_6Vtbl;
+
+    interface IDeckLinkInputCallback_v7_6
+    {
+        CONST_VTBL struct IDeckLinkInputCallback_v7_6Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInputCallback_v7_6_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInputCallback_v7_6_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInputCallback_v7_6_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInputCallback_v7_6_VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags)	\
+    ( (This)->lpVtbl -> VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) ) 
+
+#define IDeckLinkInputCallback_v7_6_VideoInputFrameArrived(This,videoFrame,audioPacket)	\
+    ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkInputCallback_v7_6_INTERFACE_DEFINED__ */
+
+
+EXTERN_C const CLSID CLSID_CDeckLinkGLScreenPreviewHelper_v7_6;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("D398CEE7-4434-4CA3-9BA6-5AE34556B905")
+CDeckLinkGLScreenPreviewHelper_v7_6;
+#endif
+
+EXTERN_C const CLSID CLSID_CDeckLinkVideoConversion_v7_6;
+
+#ifdef __cplusplus
+
+class DECLSPEC_UUID("FFA84F77-73BE-4FB7-B03E-B5E44B9F759B")
+CDeckLinkVideoConversion_v7_6;
+#endif
+
+#ifndef __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__
+#define __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInputCallback_v7_3 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInputCallback_v7_3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("FD6F311D-4D00-444B-9ED4-1F25B5730AD0")
+    IDeckLinkInputCallback_v7_3 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged( 
+            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
+            /* [in] */ IDeckLinkDisplayMode_v7_6 *newDisplayMode,
+            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived( 
+            /* [in] */ IDeckLinkVideoInputFrame_v7_3 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket *audioPacket) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkInputCallback_v7_3Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInputCallback_v7_3 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInputCallback_v7_3 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInputCallback_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFormatChanged )( 
+            IDeckLinkInputCallback_v7_3 * This,
+            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
+            /* [in] */ IDeckLinkDisplayMode_v7_6 *newDisplayMode,
+            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags);
+        
+        HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( 
+            IDeckLinkInputCallback_v7_3 * This,
+            /* [in] */ IDeckLinkVideoInputFrame_v7_3 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket *audioPacket);
+        
+        END_INTERFACE
+    } IDeckLinkInputCallback_v7_3Vtbl;
+
+    interface IDeckLinkInputCallback_v7_3
+    {
+        CONST_VTBL struct IDeckLinkInputCallback_v7_3Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInputCallback_v7_3_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInputCallback_v7_3_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInputCallback_v7_3_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInputCallback_v7_3_VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags)	\
+    ( (This)->lpVtbl -> VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) ) 
+
+#define IDeckLinkInputCallback_v7_3_VideoInputFrameArrived(This,videoFrame,audioPacket)	\
+    ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__
+#define __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__
+
+/* interface IDeckLinkOutput_v7_3 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkOutput_v7_3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("271C65E3-C323-4344-A30F-D908BCB20AA3")
+    IDeckLinkOutput_v7_3 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( 
+            BMDDisplayMode displayMode,
+            BMDVideoOutputFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator( 
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( 
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame_v7_6 **outFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( 
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( 
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( 
+            /* [in] */ IDeckLinkVideoOutputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount( 
+            /* [out] */ unsigned long *bufferedFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( 
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount,
+            BMDAudioOutputStreamType streamType) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( 
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( 
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( 
+            /* [out] */ unsigned long *bufferedSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( 
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( 
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( 
+            BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
+            BMDTimeScale timeScale) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( 
+            /* [out] */ BOOL *active) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *elapsedTimeSinceSchedulerBegan) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkOutput_v7_3Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDDisplayMode displayMode,
+            BMDVideoOutputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkMemoryAllocator *theAllocator);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( 
+            IDeckLinkOutput_v7_3 * This,
+            long width,
+            long height,
+            long rowBytes,
+            BMDPixelFormat pixelFormat,
+            BMDFrameFlags flags,
+            /* [out] */ IDeckLinkMutableVideoFrame_v7_6 **outFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_6 *theFrame,
+            BMDTimeValue displayTime,
+            BMDTimeValue displayDuration,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkVideoOutputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [out] */ unsigned long *bufferedFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount,
+            BMDAudioOutputStreamType streamType);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ void *buffer,
+            unsigned long sampleFrameCount,
+            BMDTimeValue streamTime,
+            BMDTimeScale timeScale,
+            /* [out] */ unsigned long *sampleFramesWritten);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [out] */ unsigned long *bufferedSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( 
+            IDeckLinkOutput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [in] */ IDeckLinkAudioOutputCallback *theCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDTimeValue playbackStartTime,
+            BMDTimeScale timeScale,
+            double playbackSpeed);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDTimeValue stopPlaybackAtTime,
+            /* [out] */ BMDTimeValue *actualStopTime,
+            BMDTimeScale timeScale);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( 
+            IDeckLinkOutput_v7_3 * This,
+            /* [out] */ BOOL *active);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
+            IDeckLinkOutput_v7_3 * This,
+            BMDTimeScale desiredTimeScale,
+            /* [out] */ BMDTimeValue *elapsedTimeSinceSchedulerBegan);
+        
+        END_INTERFACE
+    } IDeckLinkOutput_v7_3Vtbl;
+
+    interface IDeckLinkOutput_v7_3
+    {
+        CONST_VTBL struct IDeckLinkOutput_v7_3Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkOutput_v7_3_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkOutput_v7_3_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkOutput_v7_3_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkOutput_v7_3_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
+    ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
+
+#define IDeckLinkOutput_v7_3_GetDisplayModeIterator(This,iterator)	\
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkOutput_v7_3_SetScreenPreviewCallback(This,previewCallback)	\
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
+
+#define IDeckLinkOutput_v7_3_EnableVideoOutput(This,displayMode,flags)	\
+    ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode,flags) ) 
+
+#define IDeckLinkOutput_v7_3_DisableVideoOutput(This)	\
+    ( (This)->lpVtbl -> DisableVideoOutput(This) ) 
+
+#define IDeckLinkOutput_v7_3_SetVideoOutputFrameMemoryAllocator(This,theAllocator)	\
+    ( (This)->lpVtbl -> SetVideoOutputFrameMemoryAllocator(This,theAllocator) ) 
+
+#define IDeckLinkOutput_v7_3_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)	\
+    ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) 
+
+#define IDeckLinkOutput_v7_3_CreateAncillaryData(This,pixelFormat,outBuffer)	\
+    ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) 
+
+#define IDeckLinkOutput_v7_3_DisplayVideoFrameSync(This,theFrame)	\
+    ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) 
+
+#define IDeckLinkOutput_v7_3_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)	\
+    ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) 
+
+#define IDeckLinkOutput_v7_3_SetScheduledFrameCompletionCallback(This,theCallback)	\
+    ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_v7_3_GetBufferedVideoFrameCount(This,bufferedFrameCount)	\
+    ( (This)->lpVtbl -> GetBufferedVideoFrameCount(This,bufferedFrameCount) ) 
+
+#define IDeckLinkOutput_v7_3_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType)	\
+    ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) ) 
+
+#define IDeckLinkOutput_v7_3_DisableAudioOutput(This)	\
+    ( (This)->lpVtbl -> DisableAudioOutput(This) ) 
+
+#define IDeckLinkOutput_v7_3_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)	\
+    ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_v7_3_BeginAudioPreroll(This)	\
+    ( (This)->lpVtbl -> BeginAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_v7_3_EndAudioPreroll(This)	\
+    ( (This)->lpVtbl -> EndAudioPreroll(This) ) 
+
+#define IDeckLinkOutput_v7_3_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)	\
+    ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) 
+
+#define IDeckLinkOutput_v7_3_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount)	\
+    ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) ) 
+
+#define IDeckLinkOutput_v7_3_FlushBufferedAudioSamples(This)	\
+    ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) 
+
+#define IDeckLinkOutput_v7_3_SetAudioCallback(This,theCallback)	\
+    ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) 
+
+#define IDeckLinkOutput_v7_3_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)	\
+    ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) 
+
+#define IDeckLinkOutput_v7_3_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)	\
+    ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) 
+
+#define IDeckLinkOutput_v7_3_IsScheduledPlaybackRunning(This,active)	\
+    ( (This)->lpVtbl -> IsScheduledPlaybackRunning(This,active) ) 
+
+#define IDeckLinkOutput_v7_3_GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan)	\
+    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkInput_v7_3_INTERFACE_DEFINED__
+#define __IDeckLinkInput_v7_3_INTERFACE_DEFINED__
+
+/* interface IDeckLinkInput_v7_3 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkInput_v7_3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("4973F012-9925-458C-871C-18774CDBBECB")
+    IDeckLinkInput_v7_3 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( 
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( 
+            /* [out] */ unsigned long *availableFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( 
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( 
+            /* [out] */ unsigned long *availableSampleFrameCount) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetCallback( 
+            /* [in] */ IDeckLinkInputCallback_v7_3 *theCallback) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkInput_v7_3Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
+            IDeckLinkInput_v7_3 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            /* [out] */ BMDDisplayModeSupport *result);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_6 **iterator);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( 
+            IDeckLinkInput_v7_3 * This,
+            BMDDisplayMode displayMode,
+            BMDPixelFormat pixelFormat,
+            BMDVideoInputFlags flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [out] */ unsigned long *availableFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( 
+            IDeckLinkInput_v7_3 * This,
+            BMDAudioSampleRate sampleRate,
+            BMDAudioSampleType sampleType,
+            unsigned long channelCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [out] */ unsigned long *availableSampleFrameCount);
+        
+        HRESULT ( STDMETHODCALLTYPE *StartStreams )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *StopStreams )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *PauseStreams )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *FlushStreams )( 
+            IDeckLinkInput_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
+            IDeckLinkInput_v7_3 * This,
+            /* [in] */ IDeckLinkInputCallback_v7_3 *theCallback);
+        
+        END_INTERFACE
+    } IDeckLinkInput_v7_3Vtbl;
+
+    interface IDeckLinkInput_v7_3
+    {
+        CONST_VTBL struct IDeckLinkInput_v7_3Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkInput_v7_3_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkInput_v7_3_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkInput_v7_3_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkInput_v7_3_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
     ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
 
-#define IDeckLinkOutput_v7_1_GetDisplayModeIterator(This,iterator)	\
-    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+#define IDeckLinkInput_v7_3_GetDisplayModeIterator(This,iterator)	\
+    ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) 
+
+#define IDeckLinkInput_v7_3_SetScreenPreviewCallback(This,previewCallback)	\
+    ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) 
+
+#define IDeckLinkInput_v7_3_EnableVideoInput(This,displayMode,pixelFormat,flags)	\
+    ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) 
+
+#define IDeckLinkInput_v7_3_DisableVideoInput(This)	\
+    ( (This)->lpVtbl -> DisableVideoInput(This) ) 
+
+#define IDeckLinkInput_v7_3_GetAvailableVideoFrameCount(This,availableFrameCount)	\
+    ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) 
+
+#define IDeckLinkInput_v7_3_EnableAudioInput(This,sampleRate,sampleType,channelCount)	\
+    ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) 
+
+#define IDeckLinkInput_v7_3_DisableAudioInput(This)	\
+    ( (This)->lpVtbl -> DisableAudioInput(This) ) 
+
+#define IDeckLinkInput_v7_3_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)	\
+    ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) 
+
+#define IDeckLinkInput_v7_3_StartStreams(This)	\
+    ( (This)->lpVtbl -> StartStreams(This) ) 
+
+#define IDeckLinkInput_v7_3_StopStreams(This)	\
+    ( (This)->lpVtbl -> StopStreams(This) ) 
+
+#define IDeckLinkInput_v7_3_PauseStreams(This)	\
+    ( (This)->lpVtbl -> PauseStreams(This) ) 
+
+#define IDeckLinkInput_v7_3_FlushStreams(This)	\
+    ( (This)->lpVtbl -> FlushStreams(This) ) 
+
+#define IDeckLinkInput_v7_3_SetCallback(This,theCallback)	\
+    ( (This)->lpVtbl -> SetCallback(This,theCallback) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkInput_v7_3_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_3_INTERFACE_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_3_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoInputFrame_v7_3 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoInputFrame_v7_3;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("CF317790-2894-11DE-8C30-0800200C9A66")
+    IDeckLinkVideoInputFrame_v7_3 : public IDeckLinkVideoFrame_v7_6
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetStreamTime( 
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkVideoInputFrame_v7_3Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoInputFrame_v7_3 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoInputFrame_v7_3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoInputFrame_v7_3 * This,
+            /* [out] */ void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTimecode )( 
+            IDeckLinkVideoInputFrame_v7_3 * This,
+            BMDTimecodeFormat format,
+            /* [out] */ IDeckLinkTimecode_v7_6 **timecode);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( 
+            IDeckLinkVideoInputFrame_v7_3 * This,
+            /* [out] */ IDeckLinkVideoFrameAncillary **ancillary);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( 
+            IDeckLinkVideoInputFrame_v7_3 * This,
+            /* [out] */ BMDTimeValue *frameTime,
+            /* [out] */ BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale);
+        
+        END_INTERFACE
+    } IDeckLinkVideoInputFrame_v7_3Vtbl;
+
+    interface IDeckLinkVideoInputFrame_v7_3
+    {
+        CONST_VTBL struct IDeckLinkVideoInputFrame_v7_3Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoInputFrame_v7_3_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_3_GetWidth(This)	\
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetHeight(This)	\
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetRowBytes(This)	\
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetPixelFormat(This)	\
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetFlags(This)	\
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetBytes(This,buffer)	\
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetTimecode(This,format,timecode)	\
+    ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) 
+
+#define IDeckLinkVideoInputFrame_v7_3_GetAncillaryData(This,ancillary)	\
+    ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_3_GetStreamTime(This,frameTime,frameDuration,timeScale)	\
+    ( (This)->lpVtbl -> GetStreamTime(This,frameTime,frameDuration,timeScale) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkVideoInputFrame_v7_3_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDisplayModeIterator_v7_1 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDisplayModeIterator_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("B28131B6-59AC-4857-B5AC-CD75D5883E2F")
+    IDeckLinkDisplayModeIterator_v7_1 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Next( 
+            /* [out] */ IDeckLinkDisplayMode_v7_1 **deckLinkDisplayMode) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkDisplayModeIterator_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDisplayModeIterator_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDisplayModeIterator_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDisplayModeIterator_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Next )( 
+            IDeckLinkDisplayModeIterator_v7_1 * This,
+            /* [out] */ IDeckLinkDisplayMode_v7_1 **deckLinkDisplayMode);
+        
+        END_INTERFACE
+    } IDeckLinkDisplayModeIterator_v7_1Vtbl;
+
+    interface IDeckLinkDisplayModeIterator_v7_1
+    {
+        CONST_VTBL struct IDeckLinkDisplayModeIterator_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDisplayModeIterator_v7_1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDisplayModeIterator_v7_1_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDisplayModeIterator_v7_1_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDisplayModeIterator_v7_1_Next(This,deckLinkDisplayMode)	\
+    ( (This)->lpVtbl -> Next(This,deckLinkDisplayMode) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkDisplayMode_v7_1 */
+/* [helpstring][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkDisplayMode_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("AF0CD6D5-8376-435E-8433-54F9DD530AC3")
+    IDeckLinkDisplayMode_v7_1 : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetName( 
+            /* [out] */ BSTR *name) = 0;
+        
+        virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetWidth( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetHeight( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFrameRate( 
+            /* [out] */ BMDTimeValue *frameDuration,
+            /* [out] */ BMDTimeScale *timeScale) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkDisplayMode_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkDisplayMode_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkDisplayMode_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkDisplayMode_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetName )( 
+            IDeckLinkDisplayMode_v7_1 * This,
+            /* [out] */ BSTR *name);
+        
+        BMDDisplayMode ( STDMETHODCALLTYPE *GetDisplayMode )( 
+            IDeckLinkDisplayMode_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkDisplayMode_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkDisplayMode_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFrameRate )( 
+            IDeckLinkDisplayMode_v7_1 * This,
+            /* [out] */ BMDTimeValue *frameDuration,
+            /* [out] */ BMDTimeScale *timeScale);
+        
+        END_INTERFACE
+    } IDeckLinkDisplayMode_v7_1Vtbl;
+
+    interface IDeckLinkDisplayMode_v7_1
+    {
+        CONST_VTBL struct IDeckLinkDisplayMode_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkDisplayMode_v7_1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkDisplayMode_v7_1_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkDisplayMode_v7_1_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkDisplayMode_v7_1_GetName(This,name)	\
+    ( (This)->lpVtbl -> GetName(This,name) ) 
+
+#define IDeckLinkDisplayMode_v7_1_GetDisplayMode(This)	\
+    ( (This)->lpVtbl -> GetDisplayMode(This) ) 
+
+#define IDeckLinkDisplayMode_v7_1_GetWidth(This)	\
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkDisplayMode_v7_1_GetHeight(This)	\
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkDisplayMode_v7_1_GetFrameRate(This,frameDuration,timeScale)	\
+    ( (This)->lpVtbl -> GetFrameRate(This,frameDuration,timeScale) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoFrame_v7_1 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoFrame_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("333F3A10-8C2D-43CF-B79D-46560FEEA1CE")
+    IDeckLinkVideoFrame_v7_1 : public IUnknown
+    {
+    public:
+        virtual long STDMETHODCALLTYPE GetWidth( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetHeight( void) = 0;
+        
+        virtual long STDMETHODCALLTYPE GetRowBytes( void) = 0;
+        
+        virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0;
+        
+        virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            void **buffer) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkVideoFrame_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoFrame_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoFrame_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoFrame_v7_1 * This,
+            void **buffer);
+        
+        END_INTERFACE
+    } IDeckLinkVideoFrame_v7_1Vtbl;
+
+    interface IDeckLinkVideoFrame_v7_1
+    {
+        CONST_VTBL struct IDeckLinkVideoFrame_v7_1Vtbl *lpVtbl;
+    };
 
-#define IDeckLinkOutput_v7_1_EnableVideoOutput(This,displayMode)	\
-    ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode) ) 
+    
 
-#define IDeckLinkOutput_v7_1_DisableVideoOutput(This)	\
-    ( (This)->lpVtbl -> DisableVideoOutput(This) ) 
+#ifdef COBJMACROS
 
-#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 IDeckLinkVideoFrame_v7_1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#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 IDeckLinkVideoFrame_v7_1_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkOutput_v7_1_DisplayVideoFrameSync(This,theFrame)	\
-    ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) 
+#define IDeckLinkVideoFrame_v7_1_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
 
-#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 IDeckLinkVideoFrame_v7_1_GetWidth(This)	\
+    ( (This)->lpVtbl -> GetWidth(This) ) 
 
-#define IDeckLinkOutput_v7_1_EnableAudioOutput(This,sampleRate,sampleType,channelCount)	\
-    ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount) ) 
+#define IDeckLinkVideoFrame_v7_1_GetHeight(This)	\
+    ( (This)->lpVtbl -> GetHeight(This) ) 
 
-#define IDeckLinkOutput_v7_1_DisableAudioOutput(This)	\
-    ( (This)->lpVtbl -> DisableAudioOutput(This) ) 
+#define IDeckLinkVideoFrame_v7_1_GetRowBytes(This)	\
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
 
-#define IDeckLinkOutput_v7_1_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)	\
-    ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) 
+#define IDeckLinkVideoFrame_v7_1_GetPixelFormat(This)	\
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
 
-#define IDeckLinkOutput_v7_1_BeginAudioPreroll(This)	\
-    ( (This)->lpVtbl -> BeginAudioPreroll(This) ) 
+#define IDeckLinkVideoFrame_v7_1_GetFlags(This)	\
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoFrame_v7_1_GetBytes(This,buffer)	\
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkVideoInputFrame_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkVideoInputFrame_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkVideoInputFrame_v7_1 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkVideoInputFrame_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("C8B41D95-8848-40EE-9B37-6E3417FB114B")
+    IDeckLinkVideoInputFrame_v7_1 : public IDeckLinkVideoFrame_v7_1
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetFrameTime( 
+            BMDTimeValue *frameTime,
+            BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkVideoInputFrame_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkVideoInputFrame_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetWidth )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetHeight )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetRowBytes )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( 
+            IDeckLinkVideoInputFrame_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkVideoInputFrame_v7_1 * This,
+            void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFrameTime )( 
+            IDeckLinkVideoInputFrame_v7_1 * This,
+            BMDTimeValue *frameTime,
+            BMDTimeValue *frameDuration,
+            BMDTimeScale timeScale);
+        
+        END_INTERFACE
+    } IDeckLinkVideoInputFrame_v7_1Vtbl;
+
+    interface IDeckLinkVideoInputFrame_v7_1
+    {
+        CONST_VTBL struct IDeckLinkVideoInputFrame_v7_1Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IDeckLinkVideoInputFrame_v7_1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_1_GetWidth(This)	\
+    ( (This)->lpVtbl -> GetWidth(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_GetHeight(This)	\
+    ( (This)->lpVtbl -> GetHeight(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_GetRowBytes(This)	\
+    ( (This)->lpVtbl -> GetRowBytes(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_GetPixelFormat(This)	\
+    ( (This)->lpVtbl -> GetPixelFormat(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_GetFlags(This)	\
+    ( (This)->lpVtbl -> GetFlags(This) ) 
+
+#define IDeckLinkVideoInputFrame_v7_1_GetBytes(This,buffer)	\
+    ( (This)->lpVtbl -> GetBytes(This,buffer) ) 
+
+
+#define IDeckLinkVideoInputFrame_v7_1_GetFrameTime(This,frameTime,frameDuration,timeScale)	\
+    ( (This)->lpVtbl -> GetFrameTime(This,frameTime,frameDuration,timeScale) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif 	/* C style interface */
+
+
+
+
+#endif 	/* __IDeckLinkVideoInputFrame_v7_1_INTERFACE_DEFINED__ */
+
+
+#ifndef __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__
+
+/* interface IDeckLinkAudioInputPacket_v7_1 */
+/* [helpstring][local][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IDeckLinkAudioInputPacket_v7_1;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("C86DE4F6-A29F-42E3-AB3A-1363E29F0788")
+    IDeckLinkAudioInputPacket_v7_1 : public IUnknown
+    {
+    public:
+        virtual long STDMETHODCALLTYPE GetSampleCount( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBytes( 
+            void **buffer) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAudioPacketTime( 
+            BMDTimeValue *packetTime,
+            BMDTimeScale timeScale) = 0;
+        
+    };
+    
+#else 	/* C style interface */
+
+    typedef struct IDeckLinkAudioInputPacket_v7_1Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IDeckLinkAudioInputPacket_v7_1 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            __RPC__deref_out  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IDeckLinkAudioInputPacket_v7_1 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IDeckLinkAudioInputPacket_v7_1 * This);
+        
+        long ( STDMETHODCALLTYPE *GetSampleCount )( 
+            IDeckLinkAudioInputPacket_v7_1 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBytes )( 
+            IDeckLinkAudioInputPacket_v7_1 * This,
+            void **buffer);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAudioPacketTime )( 
+            IDeckLinkAudioInputPacket_v7_1 * This,
+            BMDTimeValue *packetTime,
+            BMDTimeScale timeScale);
+        
+        END_INTERFACE
+    } IDeckLinkAudioInputPacket_v7_1Vtbl;
+
+    interface IDeckLinkAudioInputPacket_v7_1
+    {
+        CONST_VTBL struct IDeckLinkAudioInputPacket_v7_1Vtbl *lpVtbl;
+    };
+
+    
 
-#define IDeckLinkOutput_v7_1_EndAudioPreroll(This)	\
-    ( (This)->lpVtbl -> EndAudioPreroll(This) ) 
+#ifdef COBJMACROS
 
-#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 IDeckLinkAudioInputPacket_v7_1_QueryInterface(This,riid,ppvObject)	\
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkOutput_v7_1_FlushBufferedAudioSamples(This)	\
-    ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) 
+#define IDeckLinkAudioInputPacket_v7_1_AddRef(This)	\
+    ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkOutput_v7_1_SetAudioCallback(This,theCallback)	\
-    ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) 
+#define IDeckLinkAudioInputPacket_v7_1_Release(This)	\
+    ( (This)->lpVtbl -> Release(This) ) 
 
-#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 IDeckLinkAudioInputPacket_v7_1_GetSampleCount(This)	\
+    ( (This)->lpVtbl -> GetSampleCount(This) ) 
 
-#define IDeckLinkOutput_v7_1_GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan)	\
-    ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan) ) 
+#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 */
 
@@ -5311,144 +7991,59 @@
 
 
 
-#endif 	/* __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__ */
+#endif 	/* __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkInput_v7_1_INTERFACE_DEFINED__
-#define __IDeckLinkInput_v7_1_INTERFACE_DEFINED__
+#ifndef __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__
 
-/* interface IDeckLinkInput_v7_1 */
+/* interface IDeckLinkVideoOutputCallback_v7_1 */
 /* [helpstring][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkInput_v7_1;
+EXTERN_C const IID IID_IDeckLinkVideoOutputCallback_v7_1;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("2B54EDEF-5B32-429F-BA11-BB990596EACD")
-    IDeckLinkInput_v7_1 : public IUnknown
+    MIDL_INTERFACE("EBD01AFA-E4B0-49C6-A01D-EDB9D1B55FD9")
+    IDeckLinkVideoOutputCallback_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;
+        virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted( 
+            /* [in] */ IDeckLinkVideoFrame_v7_1 *completedFrame,
+            /* [in] */ BMDOutputFrameCompletionResult result) = 0;
         
     };
     
 #else 	/* C style interface */
 
-    typedef struct IDeckLinkInput_v7_1Vtbl
+    typedef struct IDeckLinkVideoOutputCallback_v7_1Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkInput_v7_1 * This,
+            IDeckLinkVideoOutputCallback_v7_1 * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkInput_v7_1 * This);
+            IDeckLinkVideoOutputCallback_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);
+            IDeckLinkVideoOutputCallback_v7_1 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
-            IDeckLinkInput_v7_1 * This,
-            /* [in] */ IDeckLinkInputCallback_v7_1 *theCallback);
+        HRESULT ( STDMETHODCALLTYPE *ScheduledFrameCompleted )( 
+            IDeckLinkVideoOutputCallback_v7_1 * This,
+            /* [in] */ IDeckLinkVideoFrame_v7_1 *completedFrame,
+            /* [in] */ BMDOutputFrameCompletionResult result);
         
         END_INTERFACE
-    } IDeckLinkInput_v7_1Vtbl;
+    } IDeckLinkVideoOutputCallback_v7_1Vtbl;
 
-    interface IDeckLinkInput_v7_1
+    interface IDeckLinkVideoOutputCallback_v7_1
     {
-        CONST_VTBL struct IDeckLinkInput_v7_1Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkVideoOutputCallback_v7_1Vtbl *lpVtbl;
     };
 
     
@@ -5456,51 +8051,18 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkInput_v7_1_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkVideoOutputCallback_v7_1_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkInput_v7_1_AddRef(This)	\
+#define IDeckLinkVideoOutputCallback_v7_1_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkInput_v7_1_Release(This)	\
+#define IDeckLinkVideoOutputCallback_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) ) 
+#define IDeckLinkVideoOutputCallback_v7_1_ScheduledFrameCompleted(This,completedFrame,result)	\
+    ( (This)->lpVtbl -> ScheduledFrameCompleted(This,completedFrame,result) ) 
 
 #endif /* COBJMACROS */
 
@@ -5510,70 +8072,59 @@
 
 
 
-#endif 	/* __IDeckLinkInput_v7_1_INTERFACE_DEFINED__ */
+#endif 	/* __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__
-#define __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__
+#ifndef __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__
 
-/* interface IDeckLinkInputCallback_v7_3 */
+/* interface IDeckLinkInputCallback_v7_1 */
 /* [helpstring][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkInputCallback_v7_3;
+EXTERN_C const IID IID_IDeckLinkInputCallback_v7_1;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("FD6F311D-4D00-444B-9ED4-1F25B5730AD0")
-    IDeckLinkInputCallback_v7_3 : public IUnknown
+    MIDL_INTERFACE("7F94F328-5ED4-4E9F-9729-76A86BDC99CC")
+    IDeckLinkInputCallback_v7_1 : 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;
+            /* [in] */ IDeckLinkVideoInputFrame_v7_1 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket_v7_1 *audioPacket) = 0;
         
     };
     
 #else 	/* C style interface */
 
-    typedef struct IDeckLinkInputCallback_v7_3Vtbl
+    typedef struct IDeckLinkInputCallback_v7_1Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkInputCallback_v7_3 * This,
+            IDeckLinkInputCallback_v7_1 * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkInputCallback_v7_3 * This);
+            IDeckLinkInputCallback_v7_1 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeckLinkInputCallback_v7_3 * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *VideoInputFormatChanged )( 
-            IDeckLinkInputCallback_v7_3 * This,
-            /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents,
-            /* [in] */ IDeckLinkDisplayMode *newDisplayMode,
-            /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags);
+            IDeckLinkInputCallback_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( 
-            IDeckLinkInputCallback_v7_3 * This,
-            /* [in] */ IDeckLinkVideoInputFrame_v7_3 *videoFrame,
-            /* [in] */ IDeckLinkAudioInputPacket *audioPacket);
+            IDeckLinkInputCallback_v7_1 * This,
+            /* [in] */ IDeckLinkVideoInputFrame_v7_1 *videoFrame,
+            /* [in] */ IDeckLinkAudioInputPacket_v7_1 *audioPacket);
         
         END_INTERFACE
-    } IDeckLinkInputCallback_v7_3Vtbl;
+    } IDeckLinkInputCallback_v7_1Vtbl;
 
-    interface IDeckLinkInputCallback_v7_3
+    interface IDeckLinkInputCallback_v7_1
     {
-        CONST_VTBL struct IDeckLinkInputCallback_v7_3Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkInputCallback_v7_1Vtbl *lpVtbl;
     };
 
     
@@ -5581,20 +8132,17 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkInputCallback_v7_3_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkInputCallback_v7_1_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkInputCallback_v7_3_AddRef(This)	\
+#define IDeckLinkInputCallback_v7_1_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkInputCallback_v7_3_Release(This)	\
+#define IDeckLinkInputCallback_v7_1_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)	\
+#define IDeckLinkInputCallback_v7_1_VideoInputFrameArrived(This,videoFrame,audioPacket)	\
     ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) 
 
 #endif /* COBJMACROS */
@@ -5605,22 +8153,22 @@
 
 
 
-#endif 	/* __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__ */
+#endif 	/* __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__
-#define __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__
+#ifndef __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__
 
-/* interface IDeckLinkOutput_v7_3 */
+/* interface IDeckLinkOutput_v7_1 */
 /* [helpstring][local][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkOutput_v7_3;
+EXTERN_C const IID IID_IDeckLinkOutput_v7_1;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("271C65E3-C323-4344-A30F-D908BCB20AA3")
-    IDeckLinkOutput_v7_3 : public IUnknown
+    MIDL_INTERFACE("AE5B3E9B-4E1E-4535-B6E8-480FF52F6CE5")
+    IDeckLinkOutput_v7_1 : public IUnknown
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
@@ -5629,14 +8177,10 @@
             /* [out] */ BMDDisplayModeSupport *result) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
-            /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
-            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_1 **iterator) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( 
-            BMDDisplayMode displayMode,
-            BMDVideoOutputFlags flags) = 0;
+            BMDDisplayMode displayMode) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0;
         
@@ -5649,37 +8193,38 @@
             long rowBytes,
             BMDPixelFormat pixelFormat,
             BMDFrameFlags flags,
-            /* [out] */ IDeckLinkMutableVideoFrame **outFrame) = 0;
+            IDeckLinkVideoFrame_v7_1 **outFrame) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( 
+        virtual HRESULT STDMETHODCALLTYPE CreateVideoFrameFromBuffer( 
+            void *buffer,
+            long width,
+            long height,
+            long rowBytes,
             BMDPixelFormat pixelFormat,
-            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
+            BMDFrameFlags flags,
+            IDeckLinkVideoFrame_v7_1 **outFrame) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( 
-            /* [in] */ IDeckLinkVideoFrame *theFrame) = 0;
+            IDeckLinkVideoFrame_v7_1 *theFrame) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( 
-            /* [in] */ IDeckLinkVideoFrame *theFrame,
+            IDeckLinkVideoFrame_v7_1 *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;
+            /* [in] */ IDeckLinkVideoOutputCallback_v7_1 *theCallback) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( 
             BMDAudioSampleRate sampleRate,
             BMDAudioSampleType sampleType,
-            unsigned long channelCount,
-            BMDAudioOutputStreamType streamType) = 0;
+            unsigned long channelCount) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( 
-            /* [in] */ void *buffer,
+            void *buffer,
             unsigned long sampleFrameCount,
             /* [out] */ unsigned long *sampleFramesWritten) = 0;
         
@@ -5688,14 +8233,14 @@
         virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( 
-            /* [in] */ void *buffer,
+            void *buffer,
             unsigned long sampleFrameCount,
             BMDTimeValue streamTime,
             BMDTimeScale timeScale,
             /* [out] */ unsigned long *sampleFramesWritten) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( 
-            /* [out] */ unsigned long *bufferedSampleFrameCount) = 0;
+            /* [out] */ unsigned long *bufferedSampleCount) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0;
         
@@ -5709,163 +8254,151 @@
         
         virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( 
             BMDTimeValue stopPlaybackAtTime,
-            /* [out] */ BMDTimeValue *actualStopTime,
+            BMDTimeValue *actualStopTime,
             BMDTimeScale timeScale) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( 
-            /* [out] */ BOOL *active) = 0;
-        
         virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( 
             BMDTimeScale desiredTimeScale,
-            /* [out] */ BMDTimeValue *elapsedTimeSinceSchedulerBegan) = 0;
+            BMDTimeValue *elapsedTimeSinceSchedulerBegan) = 0;
         
     };
     
 #else 	/* C style interface */
 
-    typedef struct IDeckLinkOutput_v7_3Vtbl
+    typedef struct IDeckLinkOutput_v7_1Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkOutput_v7_3 * This,
+            IDeckLinkOutput_v7_1 * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkOutput_v7_3 * This);
+            IDeckLinkOutput_v7_1 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeckLinkOutput_v7_3 * This);
+            IDeckLinkOutput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
-            IDeckLinkOutput_v7_3 * This,
+            IDeckLinkOutput_v7_1 * 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);
+            IDeckLinkOutput_v7_1 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_1 **iterator);
         
         HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( 
-            IDeckLinkOutput_v7_3 * This,
-            BMDDisplayMode displayMode,
-            BMDVideoOutputFlags flags);
+            IDeckLinkOutput_v7_1 * This,
+            BMDDisplayMode displayMode);
         
         HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( 
-            IDeckLinkOutput_v7_3 * This);
+            IDeckLinkOutput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( 
-            IDeckLinkOutput_v7_3 * This,
+            IDeckLinkOutput_v7_1 * This,
             /* [in] */ IDeckLinkMemoryAllocator *theAllocator);
         
         HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( 
-            IDeckLinkOutput_v7_3 * This,
+            IDeckLinkOutput_v7_1 * This,
             long width,
             long height,
             long rowBytes,
             BMDPixelFormat pixelFormat,
             BMDFrameFlags flags,
-            /* [out] */ IDeckLinkMutableVideoFrame **outFrame);
+            IDeckLinkVideoFrame_v7_1 **outFrame);
         
-        HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( 
-            IDeckLinkOutput_v7_3 * This,
+        HRESULT ( STDMETHODCALLTYPE *CreateVideoFrameFromBuffer )( 
+            IDeckLinkOutput_v7_1 * This,
+            void *buffer,
+            long width,
+            long height,
+            long rowBytes,
             BMDPixelFormat pixelFormat,
-            /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer);
+            BMDFrameFlags flags,
+            IDeckLinkVideoFrame_v7_1 **outFrame);
         
         HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( 
-            IDeckLinkOutput_v7_3 * This,
-            /* [in] */ IDeckLinkVideoFrame *theFrame);
+            IDeckLinkOutput_v7_1 * This,
+            IDeckLinkVideoFrame_v7_1 *theFrame);
         
         HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( 
-            IDeckLinkOutput_v7_3 * This,
-            /* [in] */ IDeckLinkVideoFrame *theFrame,
+            IDeckLinkOutput_v7_1 * This,
+            IDeckLinkVideoFrame_v7_1 *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);
+            IDeckLinkOutput_v7_1 * This,
+            /* [in] */ IDeckLinkVideoOutputCallback_v7_1 *theCallback);
         
         HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( 
-            IDeckLinkOutput_v7_3 * This,
+            IDeckLinkOutput_v7_1 * This,
             BMDAudioSampleRate sampleRate,
             BMDAudioSampleType sampleType,
-            unsigned long channelCount,
-            BMDAudioOutputStreamType streamType);
+            unsigned long channelCount);
         
         HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( 
-            IDeckLinkOutput_v7_3 * This);
+            IDeckLinkOutput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( 
-            IDeckLinkOutput_v7_3 * This,
-            /* [in] */ void *buffer,
+            IDeckLinkOutput_v7_1 * This,
+            void *buffer,
             unsigned long sampleFrameCount,
             /* [out] */ unsigned long *sampleFramesWritten);
         
         HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( 
-            IDeckLinkOutput_v7_3 * This);
+            IDeckLinkOutput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( 
-            IDeckLinkOutput_v7_3 * This);
+            IDeckLinkOutput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( 
-            IDeckLinkOutput_v7_3 * This,
-            /* [in] */ void *buffer,
+            IDeckLinkOutput_v7_1 * This,
+            void *buffer,
             unsigned long sampleFrameCount,
             BMDTimeValue streamTime,
             BMDTimeScale timeScale,
             /* [out] */ unsigned long *sampleFramesWritten);
         
         HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( 
-            IDeckLinkOutput_v7_3 * This,
-            /* [out] */ unsigned long *bufferedSampleFrameCount);
+            IDeckLinkOutput_v7_1 * This,
+            /* [out] */ unsigned long *bufferedSampleCount);
         
         HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( 
-            IDeckLinkOutput_v7_3 * This);
+            IDeckLinkOutput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( 
-            IDeckLinkOutput_v7_3 * This,
+            IDeckLinkOutput_v7_1 * This,
             /* [in] */ IDeckLinkAudioOutputCallback *theCallback);
         
         HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( 
-            IDeckLinkOutput_v7_3 * This,
+            IDeckLinkOutput_v7_1 * This,
             BMDTimeValue playbackStartTime,
             BMDTimeScale timeScale,
             double playbackSpeed);
         
         HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( 
-            IDeckLinkOutput_v7_3 * This,
+            IDeckLinkOutput_v7_1 * This,
             BMDTimeValue stopPlaybackAtTime,
-            /* [out] */ BMDTimeValue *actualStopTime,
+            BMDTimeValue *actualStopTime,
             BMDTimeScale timeScale);
         
-        HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( 
-            IDeckLinkOutput_v7_3 * This,
-            /* [out] */ BOOL *active);
-        
         HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( 
-            IDeckLinkOutput_v7_3 * This,
+            IDeckLinkOutput_v7_1 * This,
             BMDTimeScale desiredTimeScale,
-            /* [out] */ BMDTimeValue *elapsedTimeSinceSchedulerBegan);
+            BMDTimeValue *elapsedTimeSinceSchedulerBegan);
         
         END_INTERFACE
-    } IDeckLinkOutput_v7_3Vtbl;
+    } IDeckLinkOutput_v7_1Vtbl;
 
-    interface IDeckLinkOutput_v7_3
+    interface IDeckLinkOutput_v7_1
     {
-        CONST_VTBL struct IDeckLinkOutput_v7_3Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkOutput_v7_1Vtbl *lpVtbl;
     };
 
     
@@ -5873,89 +8406,80 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkOutput_v7_3_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkOutput_v7_1_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkOutput_v7_3_AddRef(This)	\
+#define IDeckLinkOutput_v7_1_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkOutput_v7_3_Release(This)	\
+#define IDeckLinkOutput_v7_1_Release(This)	\
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkOutput_v7_3_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
+#define IDeckLinkOutput_v7_1_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
     ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
 
-#define IDeckLinkOutput_v7_3_GetDisplayModeIterator(This,iterator)	\
+#define IDeckLinkOutput_v7_1_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_1_EnableVideoOutput(This,displayMode)	\
+    ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode) ) 
 
-#define IDeckLinkOutput_v7_3_DisableVideoOutput(This)	\
+#define IDeckLinkOutput_v7_1_DisableVideoOutput(This)	\
     ( (This)->lpVtbl -> DisableVideoOutput(This) ) 
 
-#define IDeckLinkOutput_v7_3_SetVideoOutputFrameMemoryAllocator(This,theAllocator)	\
+#define IDeckLinkOutput_v7_1_SetVideoOutputFrameMemoryAllocator(This,theAllocator)	\
     ( (This)->lpVtbl -> SetVideoOutputFrameMemoryAllocator(This,theAllocator) ) 
 
-#define IDeckLinkOutput_v7_3_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)	\
+#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_3_CreateAncillaryData(This,pixelFormat,outBuffer)	\
-    ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) 
+#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_3_DisplayVideoFrameSync(This,theFrame)	\
+#define IDeckLinkOutput_v7_1_DisplayVideoFrameSync(This,theFrame)	\
     ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) 
 
-#define IDeckLinkOutput_v7_3_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)	\
+#define IDeckLinkOutput_v7_1_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)	\
     ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) 
 
-#define IDeckLinkOutput_v7_3_SetScheduledFrameCompletionCallback(This,theCallback)	\
+#define IDeckLinkOutput_v7_1_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_1_EnableAudioOutput(This,sampleRate,sampleType,channelCount)	\
+    ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount) ) 
 
-#define IDeckLinkOutput_v7_3_DisableAudioOutput(This)	\
+#define IDeckLinkOutput_v7_1_DisableAudioOutput(This)	\
     ( (This)->lpVtbl -> DisableAudioOutput(This) ) 
 
-#define IDeckLinkOutput_v7_3_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)	\
+#define IDeckLinkOutput_v7_1_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)	\
     ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) 
 
-#define IDeckLinkOutput_v7_3_BeginAudioPreroll(This)	\
+#define IDeckLinkOutput_v7_1_BeginAudioPreroll(This)	\
     ( (This)->lpVtbl -> BeginAudioPreroll(This) ) 
 
-#define IDeckLinkOutput_v7_3_EndAudioPreroll(This)	\
+#define IDeckLinkOutput_v7_1_EndAudioPreroll(This)	\
     ( (This)->lpVtbl -> EndAudioPreroll(This) ) 
 
-#define IDeckLinkOutput_v7_3_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)	\
+#define IDeckLinkOutput_v7_1_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_1_GetBufferedAudioSampleFrameCount(This,bufferedSampleCount)	\
+    ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleCount) ) 
 
-#define IDeckLinkOutput_v7_3_FlushBufferedAudioSamples(This)	\
+#define IDeckLinkOutput_v7_1_FlushBufferedAudioSamples(This)	\
     ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) 
 
-#define IDeckLinkOutput_v7_3_SetAudioCallback(This,theCallback)	\
+#define IDeckLinkOutput_v7_1_SetAudioCallback(This,theCallback)	\
     ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) 
 
-#define IDeckLinkOutput_v7_3_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)	\
+#define IDeckLinkOutput_v7_1_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)	\
     ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) 
 
-#define IDeckLinkOutput_v7_3_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)	\
+#define IDeckLinkOutput_v7_1_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)	\
+#define IDeckLinkOutput_v7_1_GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan)	\
     ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan) ) 
 
 #endif /* COBJMACROS */
@@ -5966,22 +8490,22 @@
 
 
 
-#endif 	/* __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__ */
+#endif 	/* __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__ */
 
 
-#ifndef __IDeckLinkInput_v7_3_INTERFACE_DEFINED__
-#define __IDeckLinkInput_v7_3_INTERFACE_DEFINED__
+#ifndef __IDeckLinkInput_v7_1_INTERFACE_DEFINED__
+#define __IDeckLinkInput_v7_1_INTERFACE_DEFINED__
 
-/* interface IDeckLinkInput_v7_3 */
+/* interface IDeckLinkInput_v7_1 */
 /* [helpstring][uuid][object] */ 
 
 
-EXTERN_C const IID IID_IDeckLinkInput_v7_3;
+EXTERN_C const IID IID_IDeckLinkInput_v7_1;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("4973F012-9925-458C-871C-18774CDBBECB")
-    IDeckLinkInput_v7_3 : public IUnknown
+    MIDL_INTERFACE("2B54EDEF-5B32-429F-BA11-BB990596EACD")
+    IDeckLinkInput_v7_1 : public IUnknown
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( 
@@ -5990,10 +8514,7 @@
             /* [out] */ BMDDisplayModeSupport *result) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( 
-            /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( 
-            /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_1 **iterator) = 0;
         
         virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( 
             BMDDisplayMode displayMode,
@@ -6002,9 +8523,6 @@
         
         virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( 
-            /* [out] */ unsigned long *availableFrameCount) = 0;
-        
         virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( 
             BMDAudioSampleRate sampleRate,
             BMDAudioSampleType sampleType,
@@ -6012,8 +8530,15 @@
         
         virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( 
-            /* [out] */ unsigned long *availableSampleFrameCount) = 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;
         
@@ -6021,93 +8546,88 @@
         
         virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0;
-        
         virtual HRESULT STDMETHODCALLTYPE SetCallback( 
-            /* [in] */ IDeckLinkInputCallback_v7_3 *theCallback) = 0;
+            /* [in] */ IDeckLinkInputCallback_v7_1 *theCallback) = 0;
         
     };
     
 #else 	/* C style interface */
 
-    typedef struct IDeckLinkInput_v7_3Vtbl
+    typedef struct IDeckLinkInput_v7_1Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IDeckLinkInput_v7_3 * This,
+            IDeckLinkInput_v7_1 * This,
             /* [in] */ REFIID riid,
-            /* [iid_is][out] */ 
+            /* [annotation][iid_is][out] */ 
             __RPC__deref_out  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IDeckLinkInput_v7_3 * This);
+            IDeckLinkInput_v7_1 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            IDeckLinkInput_v7_3 * This);
+            IDeckLinkInput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( 
-            IDeckLinkInput_v7_3 * This,
+            IDeckLinkInput_v7_1 * 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);
+            IDeckLinkInput_v7_1 * This,
+            /* [out] */ IDeckLinkDisplayModeIterator_v7_1 **iterator);
         
         HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( 
-            IDeckLinkInput_v7_3 * This,
+            IDeckLinkInput_v7_1 * 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);
+            IDeckLinkInput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( 
-            IDeckLinkInput_v7_3 * This,
+            IDeckLinkInput_v7_1 * This,
             BMDAudioSampleRate sampleRate,
             BMDAudioSampleType sampleType,
             unsigned long channelCount);
         
         HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( 
-            IDeckLinkInput_v7_3 * This);
+            IDeckLinkInput_v7_1 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( 
-            IDeckLinkInput_v7_3 * This,
-            /* [out] */ unsigned long *availableSampleFrameCount);
+        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_3 * This);
+            IDeckLinkInput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *StopStreams )( 
-            IDeckLinkInput_v7_3 * This);
+            IDeckLinkInput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *PauseStreams )( 
-            IDeckLinkInput_v7_3 * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *FlushStreams )( 
-            IDeckLinkInput_v7_3 * This);
+            IDeckLinkInput_v7_1 * This);
         
         HRESULT ( STDMETHODCALLTYPE *SetCallback )( 
-            IDeckLinkInput_v7_3 * This,
-            /* [in] */ IDeckLinkInputCallback_v7_3 *theCallback);
+            IDeckLinkInput_v7_1 * This,
+            /* [in] */ IDeckLinkInputCallback_v7_1 *theCallback);
         
         END_INTERFACE
-    } IDeckLinkInput_v7_3Vtbl;
+    } IDeckLinkInput_v7_1Vtbl;
 
-    interface IDeckLinkInput_v7_3
+    interface IDeckLinkInput_v7_1
     {
-        CONST_VTBL struct IDeckLinkInput_v7_3Vtbl *lpVtbl;
+        CONST_VTBL struct IDeckLinkInput_v7_1Vtbl *lpVtbl;
     };
 
     
@@ -6115,56 +8635,50 @@
 #ifdef COBJMACROS
 
 
-#define IDeckLinkInput_v7_3_QueryInterface(This,riid,ppvObject)	\
+#define IDeckLinkInput_v7_1_QueryInterface(This,riid,ppvObject)	\
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define IDeckLinkInput_v7_3_AddRef(This)	\
+#define IDeckLinkInput_v7_1_AddRef(This)	\
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define IDeckLinkInput_v7_3_Release(This)	\
+#define IDeckLinkInput_v7_1_Release(This)	\
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define IDeckLinkInput_v7_3_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
+#define IDeckLinkInput_v7_1_DoesSupportVideoMode(This,displayMode,pixelFormat,result)	\
     ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,result) ) 
 
-#define IDeckLinkInput_v7_3_GetDisplayModeIterator(This,iterator)	\
+#define IDeckLinkInput_v7_1_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)	\
+#define IDeckLinkInput_v7_1_EnableVideoInput(This,displayMode,pixelFormat,flags)	\
     ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) 
 
-#define IDeckLinkInput_v7_3_DisableVideoInput(This)	\
+#define IDeckLinkInput_v7_1_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)	\
+#define IDeckLinkInput_v7_1_EnableAudioInput(This,sampleRate,sampleType,channelCount)	\
     ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) 
 
-#define IDeckLinkInput_v7_3_DisableAudioInput(This)	\
+#define IDeckLinkInput_v7_1_DisableAudioInput(This)	\
     ( (This)->lpVtbl -> DisableAudioInput(This) ) 
 
-#define IDeckLinkInput_v7_3_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)	\
-    ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) 
+#define IDeckLinkInput_v7_1_ReadAudioSamples(This,buffer,sampleFrameCount,sampleFramesRead,audioPacketTime,timeScale)	\
+    ( (This)->lpVtbl -> ReadAudioSamples(This,buffer,sampleFrameCount,sampleFramesRead,audioPacketTime,timeScale) ) 
 
-#define IDeckLinkInput_v7_3_StartStreams(This)	\
+#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_3_StopStreams(This)	\
+#define IDeckLinkInput_v7_1_StopStreams(This)	\
     ( (This)->lpVtbl -> StopStreams(This) ) 
 
-#define IDeckLinkInput_v7_3_PauseStreams(This)	\
+#define IDeckLinkInput_v7_1_PauseStreams(This)	\
     ( (This)->lpVtbl -> PauseStreams(This) ) 
 
-#define IDeckLinkInput_v7_3_FlushStreams(This)	\
-    ( (This)->lpVtbl -> FlushStreams(This) ) 
-
-#define IDeckLinkInput_v7_3_SetCallback(This,theCallback)	\
+#define IDeckLinkInput_v7_1_SetCallback(This,theCallback)	\
     ( (This)->lpVtbl -> SetCallback(This,theCallback) ) 
 
 #endif /* COBJMACROS */
@@ -6175,143 +8689,7 @@
 
 
 
-#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 	/* __IDeckLinkInput_v7_1_INTERFACE_DEFINED__ */
 
 #endif /* __DeckLinkAPI_LIBRARY_DEFINED__ */
 

Modified: vic/branches/mpeg4/video/DeckLinkAPI_i.cpp
==============================================================================
--- vic/branches/mpeg4/video/DeckLinkAPI_i.cpp	(original)
+++ vic/branches/mpeg4/video/DeckLinkAPI_i.cpp	Tue Sep  7 05:22:51 2010
@@ -5,21 +5,22 @@
 /* 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
+ /* File created by MIDL compiler version 7.00.0555 */
+/* at Tue Sep 07 12:00:00 2010
  */
-/* Compiler settings for .\video\DeckLinkAPI.idl:
-    Oicf, W1, Zp8, env=Win32 (32b run)
+/* Compiler settings for video\DeckLinkAPI.idl:
+    Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 
     protocol : dce , ms_ext, c_ext, robust
     error checks: allocation ref bounds_check enum stub_data 
     VC __declspec() decoration level: 
          __declspec(uuid()), __declspec(selectany), __declspec(novtable)
          DECLSPEC_UUID(), MIDL_INTERFACE()
 */
-//@@MIDL_FILE_HEADING(  )
+/* @@MIDL_FILE_HEADING(  ) */
 
 #pragma warning( disable: 4049 )  /* more than 64k source lines */
 
+
 #ifdef __cplusplus
 extern "C"{
 #endif 
@@ -69,10 +70,10 @@
 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_IDeckLinkVideoOutputCallback,0x20AA5225,0x1958,0x47CB,0x82,0x0B,0x80,0xA8,0xD5,0x21,0xA6,0xEE);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback,0x31D28EE7,0x88B6,0x4CB1,0x89,0x7A,0xCD,0xBF,0x79,0xA2,0x64,0x14);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback,0xDD04E5EC,0x7415,0x42AB,0xAE,0x4A,0xE8,0x0C,0x4D,0xFC,0x04,0x4A);
 
 
 MIDL_DEFINE_GUID(IID, IID_IDeckLinkMemoryAllocator,0xB36EB6E7,0x9D29,0x4AA8,0x92,0xEF,0x84,0x3B,0x87,0xA2,0x89,0xE8);
@@ -87,31 +88,34 @@
 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_IDeckLinkDisplayModeIterator,0x9C88499F,0xF601,0x4021,0xB8,0x0B,0x03,0x2E,0x4E,0xB4,0x1C,0x35);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode,0x87451E84,0x2B7E,0x439E,0xA6,0x29,0x43,0x93,0xEA,0x4A,0x85,0x50);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode,0x3EB2C1AB,0x0A3D,0x4523,0xA3,0xAD,0xF4,0x0D,0x7F,0xB1,0x4E,0x78);
 
 
 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_IDeckLinkOutput,0xA3EF0963,0x0862,0x44ED,0x92,0xA9,0xEE,0x89,0xAB,0xF4,0x31,0xC7);
+
 
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput,0x6D40EF78,0x28B9,0x4E21,0x99,0x0D,0x95,0xBB,0x77,0x50,0xA0,0x4F);
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput,0x300C135A,0x9F43,0x48E2,0x99,0x06,0x6D,0x79,0x11,0xD9,0x3C,0xF1);
 
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkTimecode,0xBC6CFBD3,0x8317,0x4325,0xAC,0x1C,0x12,0x16,0x39,0x1E,0x93,0x40);
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkTimecode,0xEFB9BCA6,0xA521,0x44F7,0xBD,0x69,0x23,0x32,0xF2,0x4D,0x9E,0xE6);
 
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame,0x3F716FE0,0xF023,0x4111,0xBE,0x5D,0xEF,0x44,0x14,0xC0,0x5B,0x17);
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame,0xA8D8238E,0x6B18,0x4196,0x99,0xE1,0x5A,0xF7,0x17,0xB8,0x3D,0x32);
 
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkMutableVideoFrame,0x69E2639F,0x40DA,0x4E19,0xB6,0xF2,0x20,0xAC,0xE8,0x15,0xC3,0x90);
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkMutableVideoFrame,0x46FCEE00,0xB4E6,0x43D0,0x91,0xC0,0x02,0x3A,0x7F,0xCE,0xB3,0x4F);
 
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame3DExtensions,0xDA0F7E4A,0xEDC7,0x48A8,0x9C,0xDD,0x2D,0xB5,0x1C,0x72,0x9C,0xD7);
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame,0x9A74FA41,0xAE9F,0x47AC,0x8C,0xF4,0x01,0xF4,0x2D,0xD5,0x99,0x65);
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame,0x05CFE374,0x537C,0x4094,0x9A,0x57,0x68,0x05,0x25,0x11,0x8F,0x44);
 
 
 MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameAncillary,0x732E723C,0xD1A4,0x4E29,0x9E,0x8E,0x4A,0x88,0x79,0x7A,0x00,0x04);
@@ -120,13 +124,13 @@
 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_IDeckLinkScreenPreviewCallback,0xB1D3F49A,0x85FE,0x4C5D,0x95,0xC8,0x0B,0x5D,0x5D,0xCC,0xD4,0x38);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkGLScreenPreviewHelper,0xBA575CD9,0xA15E,0x497B,0xB2,0xC2,0xF9,0xAF,0xE7,0xBE,0x4E,0xBA);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkGLScreenPreviewHelper,0x504E2209,0xCAC7,0x4C1A,0x9F,0xB4,0xC5,0xBB,0x62,0x74,0xD2,0x2F);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration,0xB8EAD569,0xB764,0x47F0,0xA7,0x3F,0xAE,0x40,0xDF,0x6C,0xBF,0x10);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration,0xC679A35B,0x610C,0x4D09,0xB7,0x48,0x1D,0x04,0x78,0x10,0x0F,0xC0);
 
 
 MIDL_DEFINE_GUID(IID, IID_IDeckLinkAttributes,0xABC11843,0xD966,0x44CB,0x96,0xE2,0xA1,0xCB,0x5D,0x31,0x35,0xC4);
@@ -135,7 +139,7 @@
 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_IDeckLinkVideoConversion,0x3BBCB8A2,0xDA2C,0x42D9,0xB5,0xD8,0x88,0x08,0x36,0x44,0xE9,0x9A);
 
 
 MIDL_DEFINE_GUID(IID, IID_IDeckLinkDeckControlStatusCallback,0xE5F693C1,0x4283,0x4716,0xB1,0x8F,0xC1,0x43,0x15,0x21,0x95,0x5B);
@@ -147,37 +151,58 @@
 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_CDeckLinkGLScreenPreviewHelper,0xF63E77C7,0xB655,0x4A4A,0x9A,0xD0,0x3C,0xA8,0x5D,0x39,0x43,0x43);
 
 
-MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoConversion,0xFFA84F77,0x73BE,0x4FB7,0xB0,0x3E,0xB5,0xE4,0x4B,0x9F,0x75,0x9B);
+MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoConversion,0x7DBBBB11,0x5B7B,0x467D,0xAE,0xA4,0xCE,0xA4,0x68,0xFD,0x36,0x8C);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayModeIterator_v7_1,0xB28131B6,0x59AC,0x4857,0xB5,0xAC,0xCD,0x75,0xD5,0x88,0x3E,0x2F);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayModeIterator_v7_6,0x455D741F,0x1779,0x4800,0x86,0xF5,0x0B,0x5D,0x13,0xD7,0x97,0x51);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode_v7_1,0xAF0CD6D5,0x8376,0x435E,0x84,0x33,0x54,0xF9,0xDD,0x53,0x0A,0xC3);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode_v7_6,0x87451E84,0x2B7E,0x439E,0xA6,0x29,0x43,0x93,0xEA,0x4A,0x85,0x50);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame_v7_1,0x333F3A10,0x8C2D,0x43CF,0xB7,0x9D,0x46,0x56,0x0F,0xEE,0xA1,0xCE);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v7_6,0x29228142,0xEB8C,0x4141,0xA6,0x21,0xF7,0x40,0x26,0x45,0x09,0x55);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame_v7_1,0xC8B41D95,0x8848,0x40EE,0x9B,0x37,0x6E,0x34,0x17,0xFB,0x11,0x4B);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v7_6,0x300C135A,0x9F43,0x48E2,0x99,0x06,0x6D,0x79,0x11,0xD9,0x3C,0xF1);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkAudioInputPacket_v7_1,0xC86DE4F6,0xA29F,0x42E3,0xAB,0x3A,0x13,0x63,0xE2,0x9F,0x07,0x88);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkTimecode_v7_6,0xEFB9BCA6,0xA521,0x44F7,0xBD,0x69,0x23,0x32,0xF2,0x4D,0x9E,0xE6);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoOutputCallback_v7_1,0xEBD01AFA,0xE4B0,0x49C6,0xA0,0x1D,0xED,0xB9,0xD1,0xB5,0x5F,0xD9);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame_v7_6,0xA8D8238E,0x6B18,0x4196,0x99,0xE1,0x5A,0xF7,0x17,0xB8,0x3D,0x32);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback_v7_1,0x7F94F328,0x5ED4,0x4E9F,0x97,0x29,0x76,0xA8,0x6B,0xDC,0x99,0xCC);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkMutableVideoFrame_v7_6,0x46FCEE00,0xB4E6,0x43D0,0x91,0xC0,0x02,0x3A,0x7F,0xCE,0xB3,0x4F);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v7_1,0xAE5B3E9B,0x4E1E,0x4535,0xB6,0xE8,0x48,0x0F,0xF5,0x2F,0x6C,0xE5);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame_v7_6,0x9A74FA41,0xAE9F,0x47AC,0x8C,0xF4,0x01,0xF4,0x2D,0xD5,0x99,0x65);
 
 
-MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v7_1,0x2B54EDEF,0x5B32,0x429F,0xBA,0x11,0xBB,0x99,0x05,0x96,0xEA,0xCD);
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkScreenPreviewCallback_v7_6,0x373F499D,0x4B4D,0x4518,0xAD,0x22,0x63,0x54,0xE5,0xA5,0x82,0x5E);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkGLScreenPreviewHelper_v7_6,0xBA575CD9,0xA15E,0x497B,0xB2,0xC2,0xF9,0xAF,0xE7,0xBE,0x4E,0xBA);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoConversion_v7_6,0x3EB504C9,0xF97D,0x40FE,0xA1,0x58,0xD4,0x07,0xD4,0x8C,0xB5,0x3B);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration_v7_6,0xB8EAD569,0xB764,0x47F0,0xA7,0x3F,0xAE,0x40,0xDF,0x6C,0xBF,0x10);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoOutputCallback_v7_6,0xE763A626,0x4A3C,0x49D1,0xBF,0x13,0xE7,0xAD,0x36,0x92,0xAE,0x52);
+
+
+MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback_v7_6,0x31D28EE7,0x88B6,0x4CB1,0x89,0x7A,0xCD,0xBF,0x79,0xA2,0x64,0x14);
+
+
+MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkGLScreenPreviewHelper_v7_6,0xD398CEE7,0x4434,0x4CA3,0x9B,0xA6,0x5A,0xE3,0x45,0x56,0xB9,0x05);
+
+
+MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoConversion_v7_6,0xFFA84F77,0x73BE,0x4FB7,0xB0,0x3E,0xB5,0xE4,0x4B,0x9F,0x75,0x9B);
 
 
 MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback_v7_3,0xFD6F311D,0x4D00,0x444B,0x9E,0xD4,0x1F,0x25,0xB5,0x73,0x0A,0xD0);
@@ -191,6 +216,33 @@
 
 MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame_v7_3,0xCF317790,0x2894,0x11DE,0x8C,0x30,0x08,0x00,0x20,0x0C,0x9A,0x66);
 
+
+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);
+
 #undef MIDL_DEFINE_GUID
 
 #ifdef __cplusplus

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 Sep  7 05:22:51 2010
@@ -43,7 +43,7 @@
     helpstring("Frame arrival callback.")
 ] interface IDeckLinkInputCallback_v7_3 : IUnknown
 {
-    HRESULT VideoInputFormatChanged([in] BMDVideoInputFormatChangedEvents notificationEvents, [in] IDeckLinkDisplayMode *newDisplayMode, [in] BMDDetectedVideoInputFormatFlags detectedSignalFlags);
+    HRESULT VideoInputFormatChanged([in] BMDVideoInputFormatChangedEvents notificationEvents, [in] IDeckLinkDisplayMode_v7_6 *newDisplayMode, [in] BMDDetectedVideoInputFormatFlags detectedSignalFlags);
     HRESULT VideoInputFrameArrived([in] IDeckLinkVideoInputFrame_v7_3 *videoFrame, [in] IDeckLinkAudioInputPacket *audioPacket);
 };
 
@@ -60,7 +60,7 @@
 ] interface IDeckLinkOutput_v7_3 : IUnknown
 {
     HRESULT DoesSupportVideoMode(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
-    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator **iterator);
+    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator_v7_6 **iterator);
 
     HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback);
 
@@ -70,11 +70,11 @@
     HRESULT DisableVideoOutput(void);
 
     HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);
-    HRESULT CreateVideoFrame(long width, long height, long rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame **outFrame);
+    HRESULT CreateVideoFrame(long width, long height, long rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame_v7_6 **outFrame);
     HRESULT CreateAncillaryData(BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
 
-    HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame *theFrame);
-    HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale);
+    HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame_v7_6 *theFrame);
+    HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame_v7_6 *theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale);
     HRESULT SetScheduledFrameCompletionCallback([in] IDeckLinkVideoOutputCallback *theCallback);
     HRESULT GetBufferedVideoFrameCount([out] unsigned long *bufferedFrameCount);
 
@@ -113,7 +113,7 @@
 ] interface IDeckLinkInput_v7_3 : IUnknown
 {
     HRESULT DoesSupportVideoMode(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
-    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator **iterator);
+    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator_v7_6 **iterator);
 
     HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback);
 
@@ -148,7 +148,7 @@
     uuid(CF317790-2894-11DE-8C30-0800200C9A66),
     local, 
     helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")
-] interface IDeckLinkVideoInputFrame_v7_3 : IDeckLinkVideoFrame
+] interface IDeckLinkVideoInputFrame_v7_3 : IDeckLinkVideoFrame_v7_6
 {
     HRESULT GetStreamTime([out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration, BMDTimeScale timeScale);
 };

Added: vic/branches/mpeg4/video/DeckLinkAPI_v7_6.idl
==============================================================================
--- (empty file)
+++ vic/branches/mpeg4/video/DeckLinkAPI_v7_6.idl	Tue Sep  7 05:22:51 2010
@@ -0,0 +1,396 @@
+/* -LICENSE-START-
+** Copyright (c) 2009 Blackmagic Design
+**
+** Permission is hereby granted, free of charge, to any person or organization
+** obtaining a copy of the software and accompanying documentation covered by
+** this license (the "Software") to use, reproduce, display, distribute,
+** execute, and transmit the Software, and to prepare derivative works of the
+** Software, and to permit third-parties to whom the Software is furnished to
+** do so, all subject to the following:
+** 
+** The copyright notices in the Software and this entire statement, including
+** the above license grant, this restriction and the following disclaimer,
+** must be included in all copies of the Software, in whole or in part, and
+** all derivative works of the Software, unless such copies or derivative
+** works are solely in the form of machine-executable object code generated by
+** a source language processor.
+** 
+** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
+** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
+** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
+** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
+** DEALINGS IN THE SOFTWARE.
+** -LICENSE-END-
+*/
+
+/* Enum BMDVideoConnection - Video connection types */
+
+typedef [v1_enum] enum  _BMDVideoConnection_v7_6 {
+    bmdVideoConnectionSDI_v7_6                              = /* 'sdi ' */ 0x73646920,
+    bmdVideoConnectionHDMI_v7_6                             = /* 'hdmi' */ 0x68646D69,
+    bmdVideoConnectionOpticalSDI_v7_6                       = /* 'opti' */ 0x6F707469,
+    bmdVideoConnectionComponent_v7_6                        = /* 'cpnt' */ 0x63706E74,
+    bmdVideoConnectionComposite_v7_6                        = /* 'cmst' */ 0x636D7374,
+    bmdVideoConnectionSVideo_v7_6                           = /* 'svid' */ 0x73766964
+} BMDVideoConnection_v7_6;
+
+
+
+/* Forward Declarations */
+
+interface IDeckLinkDisplayModeIterator_v7_6;
+interface IDeckLinkDisplayMode_v7_6;
+interface IDeckLinkOutput_v7_6;
+interface IDeckLinkInput_v7_6;
+interface IDeckLinkTimecode_v7_6;
+interface IDeckLinkVideoFrame_v7_6;
+interface IDeckLinkMutableVideoFrame_v7_6;
+interface IDeckLinkVideoInputFrame_v7_6;
+interface IDeckLinkScreenPreviewCallback_v7_6;
+interface IDeckLinkGLScreenPreviewHelper_v7_6;
+interface IDeckLinkVideoConversion_v7_6;
+interface IDeckLinkConfiguration_v7_6;
+
+
+/* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
+
+[
+    object,
+    uuid(E763A626-4A3C-49D1-BF13-E7AD3692AE52),
+    helpstring("Frame completion callback.")
+] interface IDeckLinkVideoOutputCallback_v7_6 : IUnknown
+{
+    HRESULT ScheduledFrameCompleted([in] IDeckLinkVideoFrame_v7_6 *completedFrame, [in] BMDOutputFrameCompletionResult result);
+    HRESULT ScheduledPlaybackHasStopped(void);
+};
+
+
+/* Interface IDeckLinkInputCallback - Frame arrival callback. */
+
+[
+    object,
+    uuid(31D28EE7-88B6-4CB1-897A-CDBF79A26414),
+    helpstring("Frame arrival callback.")
+] interface IDeckLinkInputCallback_v7_6 : IUnknown
+{
+    HRESULT VideoInputFormatChanged([in] BMDVideoInputFormatChangedEvents notificationEvents, [in] IDeckLinkDisplayMode_v7_6 *newDisplayMode, [in] BMDDetectedVideoInputFormatFlags detectedSignalFlags);
+    HRESULT VideoInputFrameArrived([in] IDeckLinkVideoInputFrame_v7_6* videoFrame, [in] IDeckLinkAudioInputPacket* audioPacket);
+};
+
+
+/* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */
+
+[
+    object,
+    uuid(455D741F-1779-4800-86F5-0B5D13D79751),
+    helpstring("enumerates over supported input/output display modes.")
+] interface IDeckLinkDisplayModeIterator_v7_6 : IUnknown
+{
+    HRESULT Next([out] IDeckLinkDisplayMode_v7_6 **deckLinkDisplayMode);
+};
+
+
+/* Interface IDeckLinkDisplayMode - represents a display mode */
+
+[
+    object,
+    uuid(87451E84-2B7E-439E-A629-4393EA4A8550),
+    helpstring("represents a display mode")
+] interface IDeckLinkDisplayMode_v7_6 : IUnknown
+{
+    HRESULT GetName([out] BSTR *name);
+    BMDDisplayMode GetDisplayMode(void);
+    long GetWidth(void);
+    long GetHeight(void);
+    HRESULT GetFrameRate([out] BMDTimeValue *frameDuration, [out] BMDTimeScale *timeScale);
+    BMDFieldDominance GetFieldDominance(void);
+};
+
+
+/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
+
+[
+    object,
+    uuid(29228142-EB8C-4141-A621-F74026450955),
+    local, 
+    helpstring("Created by QueryInterface from IDeckLink.")
+] interface IDeckLinkOutput_v7_6 : IUnknown
+{
+    HRESULT DoesSupportVideoMode(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
+    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator_v7_6 **iterator);
+
+    HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback_v7_6 *previewCallback);
+
+    /* Video Output */
+
+    HRESULT EnableVideoOutput(BMDDisplayMode displayMode, BMDVideoOutputFlags flags);
+    HRESULT DisableVideoOutput(void);
+
+    HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);
+    HRESULT CreateVideoFrame(long width, long height, long rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame_v7_6 **outFrame);
+    HRESULT CreateAncillaryData(BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
+
+    HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame_v7_6 *theFrame);
+    HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame_v7_6 *theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale);
+    HRESULT SetScheduledFrameCompletionCallback([in] IDeckLinkVideoOutputCallback_v7_6 *theCallback);
+    HRESULT GetBufferedVideoFrameCount([out] unsigned long *bufferedFrameCount);
+
+    /* Audio Output */
+
+    HRESULT EnableAudioOutput(BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned long channelCount, BMDAudioOutputStreamType streamType);
+    HRESULT DisableAudioOutput(void);
+
+    HRESULT WriteAudioSamplesSync([in] void *buffer, unsigned long sampleFrameCount, [out] unsigned long *sampleFramesWritten);
+
+    HRESULT BeginAudioPreroll(void);
+    HRESULT EndAudioPreroll(void);
+    HRESULT ScheduleAudioSamples([in] void *buffer, unsigned long sampleFrameCount, BMDTimeValue streamTime, BMDTimeScale timeScale, [out] unsigned long *sampleFramesWritten);
+
+    HRESULT GetBufferedAudioSampleFrameCount([out] unsigned long *bufferedSampleFrameCount);
+    HRESULT FlushBufferedAudioSamples(void);
+
+    HRESULT SetAudioCallback([in] IDeckLinkAudioOutputCallback *theCallback);
+
+    /* Output Control */
+
+    HRESULT StartScheduledPlayback(BMDTimeValue playbackStartTime, BMDTimeScale timeScale, double playbackSpeed);
+    HRESULT StopScheduledPlayback(BMDTimeValue stopPlaybackAtTime, [out] BMDTimeValue *actualStopTime, BMDTimeScale timeScale);
+    HRESULT IsScheduledPlaybackRunning([out] BOOL *active);
+    HRESULT GetScheduledStreamTime(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *streamTime, [out] double *playbackSpeed);
+
+    /* Hardware Timing */
+
+    HRESULT GetHardwareReferenceClock(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);
+};
+
+
+/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
+
+[
+    object,
+    uuid(300C135A-9F43-48E2-9906-6D7911D93CF1),
+    helpstring("Created by QueryInterface from IDeckLink.")
+] interface IDeckLinkInput_v7_6 : IUnknown
+{
+    HRESULT DoesSupportVideoMode(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
+    HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator_v7_6 **iterator);
+
+    HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback_v7_6 *previewCallback);
+
+    /* Video Input */
+
+    HRESULT EnableVideoInput(BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDVideoInputFlags flags);
+    HRESULT DisableVideoInput(void);
+    HRESULT GetAvailableVideoFrameCount([out] unsigned long *availableFrameCount);
+
+    /* Audio Input */
+
+    HRESULT EnableAudioInput(BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned long channelCount);
+    HRESULT DisableAudioInput(void);
+    HRESULT GetAvailableAudioSampleFrameCount([out] unsigned long *availableSampleFrameCount);
+
+    /* Input Control */
+
+    HRESULT StartStreams(void);
+    HRESULT StopStreams(void);
+    HRESULT PauseStreams(void);
+    HRESULT FlushStreams(void);
+    HRESULT SetCallback([in] IDeckLinkInputCallback_v7_6 *theCallback);
+
+    /* Hardware Timing */
+
+    HRESULT GetHardwareReferenceClock(BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame);
+};
+
+
+/* Interface IDeckLinkTimecode_v7_6 - Used for video frame timecode representation. */
+
+[
+    object,
+    uuid(EFB9BCA6-A521-44F7-BD69-2332F24D9EE6),
+    helpstring("Used for video frame timecode representation.")
+] interface IDeckLinkTimecode_v7_6 : IUnknown
+{
+    BMDTimecodeBCD GetBCD(void);
+    HRESULT GetComponents([out] unsigned char *hours, [out] unsigned char *minutes, [out] unsigned char *seconds, [out] unsigned char *frames);
+    HRESULT GetString([out] BSTR *timecode);
+    BMDTimecodeFlags GetFlags(void);
+};
+
+
+/* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
+
+[
+    object,
+    uuid(A8D8238E-6B18-4196-99E1-5AF717B83D32),
+    local, 
+    helpstring("Interface to encapsulate a video frame; can be caller-implemented.")
+] interface IDeckLinkVideoFrame_v7_6 : IUnknown
+{
+    long GetWidth(void);
+    long GetHeight(void);
+    long GetRowBytes(void);
+    BMDPixelFormat GetPixelFormat(void);
+    BMDFrameFlags GetFlags(void);
+    HRESULT GetBytes([out] void **buffer);
+
+    HRESULT GetTimecode(BMDTimecodeFormat format, [out] IDeckLinkTimecode_v7_6 **timecode);
+    HRESULT GetAncillaryData([out] IDeckLinkVideoFrameAncillary **ancillary);
+};
+
+
+/* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
+
+[
+    object,
+    uuid(46FCEE00-B4E6-43D0-91C0-023A7FCEB34F),
+    local, 
+    helpstring("Created by IDeckLinkOutput::CreateVideoFrame.")
+] interface IDeckLinkMutableVideoFrame_v7_6 : IDeckLinkVideoFrame_v7_6
+{
+    HRESULT SetFlags(BMDFrameFlags newFlags);
+
+    HRESULT SetTimecode(BMDTimecodeFormat format, [in] IDeckLinkTimecode_v7_6 *timecode);
+    HRESULT SetTimecodeFromComponents(BMDTimecodeFormat format, unsigned char hours, unsigned char minutes, unsigned char seconds, unsigned char frames, BMDTimecodeFlags flags);
+    HRESULT SetAncillaryData([in] IDeckLinkVideoFrameAncillary *ancillary);
+};
+
+
+/* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
+
+[
+    object,
+    uuid(9A74FA41-AE9F-47AC-8CF4-01F42DD59965),
+    local, 
+    helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")
+] interface IDeckLinkVideoInputFrame_v7_6 : IDeckLinkVideoFrame_v7_6
+{
+    HRESULT GetStreamTime([out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration, BMDTimeScale timeScale);
+    HRESULT GetHardwareReferenceTimestamp(BMDTimeScale timeScale, [out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration);
+};
+
+
+/* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
+
+[
+    object,
+    uuid(373F499D-4B4D-4518-AD22-6354E5A5825E),
+    local, 
+    helpstring("Screen preview callback")
+] interface IDeckLinkScreenPreviewCallback_v7_6 : IUnknown
+{
+    HRESULT DrawFrame([in] IDeckLinkVideoFrame_v7_6 *theFrame);
+};
+
+
+/* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
+
+[
+    object,
+    uuid(BA575CD9-A15E-497B-B2C2-F9AFE7BE4EBA),
+    local, 
+    helpstring("Created with CoCreateInstance().")
+] interface IDeckLinkGLScreenPreviewHelper_v7_6 : IUnknown
+{
+
+    /* Methods must be called with OpenGL context set */
+
+    HRESULT InitializeGL(void);
+    HRESULT PaintGL(void);
+    HRESULT SetFrame([in] IDeckLinkVideoFrame_v7_6 *theFrame);
+};
+
+
+/* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
+
+[
+    object,
+    uuid(3EB504C9-F97D-40FE-A158-D407D48CB53B),
+    local, 
+    helpstring("Created with CoCreateInstance().")
+] interface IDeckLinkVideoConversion_v7_6 : IUnknown
+{
+    HRESULT ConvertFrame([in] IDeckLinkVideoFrame_v7_6* srcFrame, [in] IDeckLinkVideoFrame_v7_6* dstFrame);
+};
+
+/* Interface IDeckLinkConfiguration_v7_6 - Created by QueryInterface from IDeckLink. */
+
+[
+    object,
+    uuid(B8EAD569-B764-47F0-A73F-AE40DF6CBF10),
+    helpstring("Created by QueryInterface from IDeckLink.")
+] interface IDeckLinkConfiguration_v7_6 : IUnknown
+{
+    HRESULT GetConfigurationValidator([out] IDeckLinkConfiguration_v7_6 **configObject);
+    HRESULT WriteConfigurationToPreferences(void);
+
+    /* Video Output Configuration */
+
+    HRESULT SetVideoOutputFormat([in] BMDVideoConnection_v7_6 videoOutputConnection);
+    HRESULT IsVideoOutputActive([in] BMDVideoConnection_v7_6 videoOutputConnection, [out] BOOL *active);
+
+    HRESULT SetAnalogVideoOutputFlags([in] BMDAnalogVideoFlags analogVideoFlags);
+    HRESULT GetAnalogVideoOutputFlags([out] BMDAnalogVideoFlags *analogVideoFlags);
+
+    HRESULT EnableFieldFlickerRemovalWhenPaused([in] BOOL enable);
+    HRESULT IsEnabledFieldFlickerRemovalWhenPaused([out] BOOL *enabled);
+
+    HRESULT Set444And3GBpsVideoOutput([in] BOOL enable444VideoOutput, [in] BOOL enable3GbsOutput);
+    HRESULT Get444And3GBpsVideoOutput([out] BOOL *is444VideoOutputEnabled, [out] BOOL *threeGbsOutputEnabled);
+
+    HRESULT SetVideoOutputConversionMode([in] BMDVideoOutputConversionMode conversionMode);
+    HRESULT GetVideoOutputConversionMode([out] BMDVideoOutputConversionMode *conversionMode);
+
+    HRESULT Set_HD1080p24_to_HD1080i5994_Conversion([in] BOOL enable);
+    HRESULT Get_HD1080p24_to_HD1080i5994_Conversion([out] BOOL *enabled);
+
+    /* Video Input Configuration */
+
+    HRESULT SetVideoInputFormat([in] BMDVideoConnection_v7_6 videoInputFormat);
+    HRESULT GetVideoInputFormat([out] BMDVideoConnection_v7_6 *videoInputFormat);
+
+    HRESULT SetAnalogVideoInputFlags([in] BMDAnalogVideoFlags analogVideoFlags);
+    HRESULT GetAnalogVideoInputFlags([out] BMDAnalogVideoFlags *analogVideoFlags);
+
+    HRESULT SetVideoInputConversionMode([in] BMDVideoInputConversionMode conversionMode);
+    HRESULT GetVideoInputConversionMode([out] BMDVideoInputConversionMode *conversionMode);
+
+    HRESULT SetBlackVideoOutputDuringCapture([in] BOOL blackOutInCapture);
+    HRESULT GetBlackVideoOutputDuringCapture([out] BOOL *blackOutInCapture);
+
+    HRESULT Set32PulldownSequenceInitialTimecodeFrame([in] unsigned long aFrameTimecode);
+    HRESULT Get32PulldownSequenceInitialTimecodeFrame([out] unsigned long *aFrameTimecode);
+
+    HRESULT SetVancSourceLineMapping([in] unsigned long activeLine1VANCsource, [in] unsigned long activeLine2VANCsource, [in] unsigned long activeLine3VANCsource);
+    HRESULT GetVancSourceLineMapping([out] unsigned long *activeLine1VANCsource, [out] unsigned long *activeLine2VANCsource, [out] unsigned long *activeLine3VANCsource);
+
+    /* Audio Input Configuration */
+
+    HRESULT SetAudioInputFormat([in] BMDAudioConnection audioInputFormat);
+    HRESULT GetAudioInputFormat([out] BMDAudioConnection *audioInputFormat);
+};
+
+
+
+/* Coclasses */
+
+importlib("stdole2.tlb");
+
+[
+    uuid(D398CEE7-4434-4CA3-9BA6-5AE34556B905),
+    helpstring("CDeckLinkGLScreenPreviewHelper Class (DeckLink API v7.6)")
+] coclass CDeckLinkGLScreenPreviewHelper_v7_6
+{
+    [default] interface IDeckLinkGLScreenPreviewHelper_v7_6;
+};
+
+[
+    uuid(FFA84F77-73BE-4FB7-B03E-B5E44B9F759B),
+    helpstring("CDeckLinkVideoConversion Class (DeckLink API v7.6)")
+] coclass CDeckLinkVideoConversion_v7_6
+{
+    [default] interface IDeckLinkVideoConversion_v7_6;
+};
+

Modified: vic/branches/mpeg4/video/grabber-decklink.cpp
==============================================================================
--- vic/branches/mpeg4/video/grabber-decklink.cpp	(original)
+++ vic/branches/mpeg4/video/grabber-decklink.cpp	Tue Sep  7 05:22:51 2010
@@ -285,7 +285,7 @@
     volatile int32_t mWriteIndex;
     static const int32_t mBufferSize = 4;
     volatile uint8_t *mBuffer[mBufferSize];
-    volatile int32_t mLastReadFrameNum;
+    volatile uint32_t mLastReadFrameNum;
     volatile int32_t mLastWriteFrameNum;
     volatile uint32_t mBufferFrameNum[mBufferSize];
 #ifdef HAVE_SWSCALE
@@ -445,24 +445,24 @@
 DeckLinkDevice::DeckLinkDevice(const char* name, IDeckLink* deckLink) : InputDevice(name), grabber_(0), deckLink_(deckLink)
 {
     char *attr = new char[512];
-    IDeckLinkConfiguration *deckLinkConfiguration = NULL;
-    IDeckLinkConfiguration *deckLinkValidator = NULL;
+    IDeckLinkAttributes *deckLinkAttributes = NULL;
     IDeckLinkInput *deckLinkInput = NULL;
     IDeckLinkDisplayModeIterator *displayModeIterator = NULL;
     IDeckLinkDisplayMode *displayMode = NULL;
+    int64_t ports;
 
     HRESULT result;
 
-    result = deckLink->QueryInterface(IID_IDeckLinkConfiguration, (void**)&deckLinkConfiguration);
+    result = deckLink->QueryInterface(IID_IDeckLinkAttributes, (void**)&deckLinkAttributes);
     if (result != S_OK) {
-        debug_msg("DecLinkDevice: Could not obtain the IDeckLinkConfiguration interface - %08x\n", result);
+        debug_msg("DeckLinkDevice: Could not obtain the IID_IDeckLinkAttributes interface - %08x\n", result);
         strcpy(attr,"disabled");
         return;
     }
 
-    result = deckLinkConfiguration->GetConfigurationValidator(&deckLinkValidator);
+    result = deckLinkAttributes->GetInt(BMDDeckLinkVideoInputConnections, &ports);
     if (result != S_OK) {
-        debug_msg("DecLinkDevice: Could not obtain the configuration validator interface\n");
+        debug_msg("DeckLinkDevice: Could not obtain the video input connection attributes\n");
         strcpy(attr,"disabled");
         return;
     }
@@ -472,36 +472,36 @@
 
     strcat(attr,"port { ");
 
-    if (deckLinkValidator->SetVideoInputFormat(bmdVideoConnectionSDI) == S_OK) {
+    if (ports & bmdVideoConnectionSDI) {
         strcat(attr,"SDI ");
     }
-    if (deckLinkValidator->SetVideoInputFormat(bmdVideoConnectionHDMI) == S_OK) {
+    if (ports & bmdVideoConnectionHDMI) {
         strcat(attr,"HDMI ");
     }
-    if (deckLinkValidator->SetVideoInputFormat(bmdVideoConnectionComponent) == S_OK) {
+    if (ports & bmdVideoConnectionComponent) {
         strcat(attr,"Component ");
     }
-    if (deckLinkValidator->SetVideoInputFormat(bmdVideoConnectionComposite) == S_OK) {
+    if (ports & bmdVideoConnectionComposite) {
         strcat(attr,"Composite ");
     }
-    if (deckLinkValidator->SetVideoInputFormat(bmdVideoConnectionSVideo) == S_OK) {
+    if (ports & bmdVideoConnectionSVideo) {
         strcat(attr,"S-Video ");
     }
-    if (deckLinkValidator->SetVideoInputFormat(bmdVideoConnectionOpticalSDI) == S_OK) {
+    if (ports & bmdVideoConnectionOpticalSDI) {
         strcat(attr,"Optical-SDI ");
     }
     strcat(attr,"} ");
 
     result = deckLink->QueryInterface(IID_IDeckLinkInput, (void**)&deckLinkInput);
     if (result != S_OK) {
-        debug_msg("DecLinkDevice: Could not obtain the IDeckLinkInput interface\n");
+        debug_msg("DeckLinkDevice: Could not obtain the IDeckLinkInput interface\n");
         strcpy(attr, "disabled");
         return;
     }
 
     result = deckLinkInput->GetDisplayModeIterator(&displayModeIterator);
     if (result != S_OK) {
-        debug_msg("DecLinkDevice: Could not obtain the video input display mode iterator\n");
+        debug_msg("DeckLinkDevice: Could not obtain the video input display mode iterator\n");
         strcpy(attr, "disabled");
         return;
     }
@@ -559,13 +559,10 @@
         deckLinkInput->Release();
     }
 
-    if (deckLinkValidator != NULL) {
-        deckLinkValidator->Release();
+    if (deckLinkAttributes != NULL) {
+        deckLinkAttributes->Release();
     }
 
-    if (deckLinkConfiguration != NULL) {
-        deckLinkConfiguration->Release();
-    }
 }
 
 int DeckLinkDevice::command(int argc, const char*const* argv)
@@ -601,7 +598,7 @@
 
     result = deckLink->QueryInterface(IID_IDeckLinkInput, (void**)&deckLinkInput_);
     if (result != S_OK) {
-        debug_msg("DecLinkDevice: Could not obtain the IDeckLinkInput interface\n");
+        debug_msg("DeckLinkDevice: Could not obtain the IDeckLinkInput interface\n");
     }
     running_  = 0;
     delegate_ = NULL;
@@ -626,7 +623,7 @@
             result = deckLink_->QueryInterface(IID_IDeckLinkConfiguration, (void**)&deckLinkConfiguration);
 
             if (result != S_OK) {
-                debug_msg("DecLinkGrabber: Could not obtain the IDeckLinkConfiguration interface\n");
+                debug_msg("DeckLinkGrabber: Could not obtain the IDeckLinkConfiguration interface\n");
                 return TCL_ERROR;
             }
 
@@ -649,10 +646,10 @@
                 bmdVideoConnection = bmdVideoConnectionOpticalSDI;
             }
 
-            result = deckLinkConfiguration->SetVideoInputFormat(bmdVideoConnection);
+            result = deckLinkConfiguration->SetInt(bmdDeckLinkConfigVideoInputConnection, bmdVideoConnection);
 
             if (result != S_OK) {
-                debug_msg("DecLinkGrabber: Could not set input video connection\n");
+                debug_msg("DeckLinkGrabber: Could not set video input connection\n");
                 return TCL_ERROR;
             }
 
@@ -667,7 +664,7 @@
             return (TCL_OK);
 
         } else if (strcmp(argv[1], "fps") == 0) {
-            debug_msg("DecLinkGrabber: fps %s\n",argv[2]);
+            debug_msg("DeckLinkGrabber: fps %s\n",argv[2]);
 
         } else if (strcmp(argv[1], "type") == 0 || strcmp(argv[1], "format") == 0) {
 
@@ -676,7 +673,7 @@
 
             result = deckLinkInput_->GetDisplayModeIterator(&displayModeIterator);
             if (result != S_OK) {
-                debug_msg("DecLinkDevice: Could not obtain the video input display mode iterator\n");
+                debug_msg("DeckLinkDevice: Could not obtain the video input display mode iterator\n");
                 return TCL_ERROR;
             }
 
@@ -808,7 +805,7 @@
 
     result = deckLinkInput_->EnableVideoInput(displayMode_, bmdFormat8BitYUV, 0);
     if (result != S_OK) {
-        debug_msg("DecLinkGrabber: Could not enable video input\n");
+        debug_msg("DeckLinkGrabber: Could not enable video input\n");
         return;
     }
 



More information about the Sumover-dev mailing list