/*** Autogenerated by WIDL 5.8 from DeckLinkAPI.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __decklinkapi_h__
#define __decklinkapi_h__

/* Forward declarations */

#ifndef __IDeckLinkTimecode_FWD_DEFINED__
#define __IDeckLinkTimecode_FWD_DEFINED__
typedef interface IDeckLinkTimecode IDeckLinkTimecode;
#ifdef __cplusplus
interface IDeckLinkTimecode;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDisplayModeIterator_FWD_DEFINED__
#define __IDeckLinkDisplayModeIterator_FWD_DEFINED__
typedef interface IDeckLinkDisplayModeIterator IDeckLinkDisplayModeIterator;
#ifdef __cplusplus
interface IDeckLinkDisplayModeIterator;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDisplayMode_FWD_DEFINED__
#define __IDeckLinkDisplayMode_FWD_DEFINED__
typedef interface IDeckLinkDisplayMode IDeckLinkDisplayMode;
#ifdef __cplusplus
interface IDeckLinkDisplayMode;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLink_FWD_DEFINED__
#define __IDeckLink_FWD_DEFINED__
typedef interface IDeckLink IDeckLink;
#ifdef __cplusplus
interface IDeckLink;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkConfiguration_FWD_DEFINED__
#define __IDeckLinkConfiguration_FWD_DEFINED__
typedef interface IDeckLinkConfiguration IDeckLinkConfiguration;
#ifdef __cplusplus
interface IDeckLinkConfiguration;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderConfiguration_FWD_DEFINED__
#define __IDeckLinkEncoderConfiguration_FWD_DEFINED__
typedef interface IDeckLinkEncoderConfiguration IDeckLinkEncoderConfiguration;
#ifdef __cplusplus
interface IDeckLinkEncoderConfiguration;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__
#define __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__
typedef interface IDeckLinkDeckControlStatusCallback IDeckLinkDeckControlStatusCallback;
#ifdef __cplusplus
interface IDeckLinkDeckControlStatusCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDeckControl_FWD_DEFINED__
#define __IDeckLinkDeckControl_FWD_DEFINED__
typedef interface IDeckLinkDeckControl IDeckLinkDeckControl;
#ifdef __cplusplus
interface IDeckLinkDeckControl;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingDeviceNotificationCallback_FWD_DEFINED__
#define __IBMDStreamingDeviceNotificationCallback_FWD_DEFINED__
typedef interface IBMDStreamingDeviceNotificationCallback IBMDStreamingDeviceNotificationCallback;
#ifdef __cplusplus
interface IBMDStreamingDeviceNotificationCallback;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingH264InputCallback_FWD_DEFINED__
#define __IBMDStreamingH264InputCallback_FWD_DEFINED__
typedef interface IBMDStreamingH264InputCallback IBMDStreamingH264InputCallback;
#ifdef __cplusplus
interface IBMDStreamingH264InputCallback;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingDiscovery_FWD_DEFINED__
#define __IBMDStreamingDiscovery_FWD_DEFINED__
typedef interface IBMDStreamingDiscovery IBMDStreamingDiscovery;
#ifdef __cplusplus
interface IBMDStreamingDiscovery;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingVideoEncodingMode_FWD_DEFINED__
#define __IBMDStreamingVideoEncodingMode_FWD_DEFINED__
typedef interface IBMDStreamingVideoEncodingMode IBMDStreamingVideoEncodingMode;
#ifdef __cplusplus
interface IBMDStreamingVideoEncodingMode;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingMutableVideoEncodingMode_FWD_DEFINED__
#define __IBMDStreamingMutableVideoEncodingMode_FWD_DEFINED__
typedef interface IBMDStreamingMutableVideoEncodingMode IBMDStreamingMutableVideoEncodingMode;
#ifdef __cplusplus
interface IBMDStreamingMutableVideoEncodingMode;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingVideoEncodingModePresetIterator_FWD_DEFINED__
#define __IBMDStreamingVideoEncodingModePresetIterator_FWD_DEFINED__
typedef interface IBMDStreamingVideoEncodingModePresetIterator IBMDStreamingVideoEncodingModePresetIterator;
#ifdef __cplusplus
interface IBMDStreamingVideoEncodingModePresetIterator;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingDeviceInput_FWD_DEFINED__
#define __IBMDStreamingDeviceInput_FWD_DEFINED__
typedef interface IBMDStreamingDeviceInput IBMDStreamingDeviceInput;
#ifdef __cplusplus
interface IBMDStreamingDeviceInput;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingH264NALPacket_FWD_DEFINED__
#define __IBMDStreamingH264NALPacket_FWD_DEFINED__
typedef interface IBMDStreamingH264NALPacket IBMDStreamingH264NALPacket;
#ifdef __cplusplus
interface IBMDStreamingH264NALPacket;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingAudioPacket_FWD_DEFINED__
#define __IBMDStreamingAudioPacket_FWD_DEFINED__
typedef interface IBMDStreamingAudioPacket IBMDStreamingAudioPacket;
#ifdef __cplusplus
interface IBMDStreamingAudioPacket;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingMPEG2TSPacket_FWD_DEFINED__
#define __IBMDStreamingMPEG2TSPacket_FWD_DEFINED__
typedef interface IBMDStreamingMPEG2TSPacket IBMDStreamingMPEG2TSPacket;
#ifdef __cplusplus
interface IBMDStreamingMPEG2TSPacket;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingH264NALParser_FWD_DEFINED__
#define __IBMDStreamingH264NALParser_FWD_DEFINED__
typedef interface IBMDStreamingH264NALParser IBMDStreamingH264NALParser;
#ifdef __cplusplus
interface IBMDStreamingH264NALParser;
#endif /* __cplusplus */
#endif

#ifndef __CBMDStreamingDiscovery_FWD_DEFINED__
#define __CBMDStreamingDiscovery_FWD_DEFINED__
#ifdef __cplusplus
typedef class CBMDStreamingDiscovery CBMDStreamingDiscovery;
#else
typedef struct CBMDStreamingDiscovery CBMDStreamingDiscovery;
#endif /* defined __cplusplus */
#endif /* defined __CBMDStreamingDiscovery_FWD_DEFINED__ */

#ifndef __CBMDStreamingH264NALParser_FWD_DEFINED__
#define __CBMDStreamingH264NALParser_FWD_DEFINED__
#ifdef __cplusplus
typedef class CBMDStreamingH264NALParser CBMDStreamingH264NALParser;
#else
typedef struct CBMDStreamingH264NALParser CBMDStreamingH264NALParser;
#endif /* defined __cplusplus */
#endif /* defined __CBMDStreamingH264NALParser_FWD_DEFINED__ */

#ifndef __IDeckLinkVideoOutputCallback_FWD_DEFINED__
#define __IDeckLinkVideoOutputCallback_FWD_DEFINED__
typedef interface IDeckLinkVideoOutputCallback IDeckLinkVideoOutputCallback;
#ifdef __cplusplus
interface IDeckLinkVideoOutputCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInputCallback_FWD_DEFINED__
#define __IDeckLinkInputCallback_FWD_DEFINED__
typedef interface IDeckLinkInputCallback IDeckLinkInputCallback;
#ifdef __cplusplus
interface IDeckLinkInputCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderInputCallback_FWD_DEFINED__
#define __IDeckLinkEncoderInputCallback_FWD_DEFINED__
typedef interface IDeckLinkEncoderInputCallback IDeckLinkEncoderInputCallback;
#ifdef __cplusplus
interface IDeckLinkEncoderInputCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkMemoryAllocator_FWD_DEFINED__
#define __IDeckLinkMemoryAllocator_FWD_DEFINED__
typedef interface IDeckLinkMemoryAllocator IDeckLinkMemoryAllocator;
#ifdef __cplusplus
interface IDeckLinkMemoryAllocator;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAudioOutputCallback_FWD_DEFINED__
#define __IDeckLinkAudioOutputCallback_FWD_DEFINED__
typedef interface IDeckLinkAudioOutputCallback IDeckLinkAudioOutputCallback;
#ifdef __cplusplus
interface IDeckLinkAudioOutputCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkIterator_FWD_DEFINED__
#define __IDeckLinkIterator_FWD_DEFINED__
typedef interface IDeckLinkIterator IDeckLinkIterator;
#ifdef __cplusplus
interface IDeckLinkIterator;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAPIInformation_FWD_DEFINED__
#define __IDeckLinkAPIInformation_FWD_DEFINED__
typedef interface IDeckLinkAPIInformation IDeckLinkAPIInformation;
#ifdef __cplusplus
interface IDeckLinkAPIInformation;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkOutput_FWD_DEFINED__
#define __IDeckLinkOutput_FWD_DEFINED__
typedef interface IDeckLinkOutput IDeckLinkOutput;
#ifdef __cplusplus
interface IDeckLinkOutput;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_FWD_DEFINED__
#define __IDeckLinkInput_FWD_DEFINED__
typedef interface IDeckLinkInput IDeckLinkInput;
#ifdef __cplusplus
interface IDeckLinkInput;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkHDMIInputEDID_FWD_DEFINED__
#define __IDeckLinkHDMIInputEDID_FWD_DEFINED__
typedef interface IDeckLinkHDMIInputEDID IDeckLinkHDMIInputEDID;
#ifdef __cplusplus
interface IDeckLinkHDMIInputEDID;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderInput_FWD_DEFINED__
#define __IDeckLinkEncoderInput_FWD_DEFINED__
typedef interface IDeckLinkEncoderInput IDeckLinkEncoderInput;
#ifdef __cplusplus
interface IDeckLinkEncoderInput;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrame_FWD_DEFINED__
#define __IDeckLinkVideoFrame_FWD_DEFINED__
typedef interface IDeckLinkVideoFrame IDeckLinkVideoFrame;
#ifdef __cplusplus
interface IDeckLinkVideoFrame;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkMutableVideoFrame_FWD_DEFINED__
#define __IDeckLinkMutableVideoFrame_FWD_DEFINED__
typedef interface IDeckLinkMutableVideoFrame IDeckLinkMutableVideoFrame;
#ifdef __cplusplus
interface IDeckLinkMutableVideoFrame;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__
#define __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__
typedef interface IDeckLinkVideoFrame3DExtensions IDeckLinkVideoFrame3DExtensions;
#ifdef __cplusplus
interface IDeckLinkVideoFrame3DExtensions;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrameMetadataExtensions_FWD_DEFINED__
#define __IDeckLinkVideoFrameMetadataExtensions_FWD_DEFINED__
typedef interface IDeckLinkVideoFrameMetadataExtensions IDeckLinkVideoFrameMetadataExtensions;
#ifdef __cplusplus
interface IDeckLinkVideoFrameMetadataExtensions;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoInputFrame_FWD_DEFINED__
#define __IDeckLinkVideoInputFrame_FWD_DEFINED__
typedef interface IDeckLinkVideoInputFrame IDeckLinkVideoInputFrame;
#ifdef __cplusplus
interface IDeckLinkVideoInputFrame;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAncillaryPacket_FWD_DEFINED__
#define __IDeckLinkAncillaryPacket_FWD_DEFINED__
typedef interface IDeckLinkAncillaryPacket IDeckLinkAncillaryPacket;
#ifdef __cplusplus
interface IDeckLinkAncillaryPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAncillaryPacketIterator_FWD_DEFINED__
#define __IDeckLinkAncillaryPacketIterator_FWD_DEFINED__
typedef interface IDeckLinkAncillaryPacketIterator IDeckLinkAncillaryPacketIterator;
#ifdef __cplusplus
interface IDeckLinkAncillaryPacketIterator;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__
#define __IDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__
typedef interface IDeckLinkVideoFrameAncillaryPackets IDeckLinkVideoFrameAncillaryPackets;
#ifdef __cplusplus
interface IDeckLinkVideoFrameAncillaryPackets;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrameAncillary_FWD_DEFINED__
#define __IDeckLinkVideoFrameAncillary_FWD_DEFINED__
typedef interface IDeckLinkVideoFrameAncillary IDeckLinkVideoFrameAncillary;
#ifdef __cplusplus
interface IDeckLinkVideoFrameAncillary;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderPacket_FWD_DEFINED__
#define __IDeckLinkEncoderPacket_FWD_DEFINED__
typedef interface IDeckLinkEncoderPacket IDeckLinkEncoderPacket;
#ifdef __cplusplus
interface IDeckLinkEncoderPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderVideoPacket_FWD_DEFINED__
#define __IDeckLinkEncoderVideoPacket_FWD_DEFINED__
typedef interface IDeckLinkEncoderVideoPacket IDeckLinkEncoderVideoPacket;
#ifdef __cplusplus
interface IDeckLinkEncoderVideoPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderAudioPacket_FWD_DEFINED__
#define __IDeckLinkEncoderAudioPacket_FWD_DEFINED__
typedef interface IDeckLinkEncoderAudioPacket IDeckLinkEncoderAudioPacket;
#ifdef __cplusplus
interface IDeckLinkEncoderAudioPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkH265NALPacket_FWD_DEFINED__
#define __IDeckLinkH265NALPacket_FWD_DEFINED__
typedef interface IDeckLinkH265NALPacket IDeckLinkH265NALPacket;
#ifdef __cplusplus
interface IDeckLinkH265NALPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAudioInputPacket_FWD_DEFINED__
#define __IDeckLinkAudioInputPacket_FWD_DEFINED__
typedef interface IDeckLinkAudioInputPacket IDeckLinkAudioInputPacket;
#ifdef __cplusplus
interface IDeckLinkAudioInputPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkScreenPreviewCallback_FWD_DEFINED__
#define __IDeckLinkScreenPreviewCallback_FWD_DEFINED__
typedef interface IDeckLinkScreenPreviewCallback IDeckLinkScreenPreviewCallback;
#ifdef __cplusplus
interface IDeckLinkScreenPreviewCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkGLScreenPreviewHelper_FWD_DEFINED__
#define __IDeckLinkGLScreenPreviewHelper_FWD_DEFINED__
typedef interface IDeckLinkGLScreenPreviewHelper IDeckLinkGLScreenPreviewHelper;
#ifdef __cplusplus
interface IDeckLinkGLScreenPreviewHelper;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__
#define __IDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__
typedef interface IDeckLinkDX9ScreenPreviewHelper IDeckLinkDX9ScreenPreviewHelper;
#ifdef __cplusplus
interface IDeckLinkDX9ScreenPreviewHelper;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkNotificationCallback_FWD_DEFINED__
#define __IDeckLinkNotificationCallback_FWD_DEFINED__
typedef interface IDeckLinkNotificationCallback IDeckLinkNotificationCallback;
#ifdef __cplusplus
interface IDeckLinkNotificationCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkNotification_FWD_DEFINED__
#define __IDeckLinkNotification_FWD_DEFINED__
typedef interface IDeckLinkNotification IDeckLinkNotification;
#ifdef __cplusplus
interface IDeckLinkNotification;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkProfileAttributes_FWD_DEFINED__
#define __IDeckLinkProfileAttributes_FWD_DEFINED__
typedef interface IDeckLinkProfileAttributes IDeckLinkProfileAttributes;
#ifdef __cplusplus
interface IDeckLinkProfileAttributes;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkProfileIterator_FWD_DEFINED__
#define __IDeckLinkProfileIterator_FWD_DEFINED__
typedef interface IDeckLinkProfileIterator IDeckLinkProfileIterator;
#ifdef __cplusplus
interface IDeckLinkProfileIterator;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkProfile_FWD_DEFINED__
#define __IDeckLinkProfile_FWD_DEFINED__
typedef interface IDeckLinkProfile IDeckLinkProfile;
#ifdef __cplusplus
interface IDeckLinkProfile;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkProfileCallback_FWD_DEFINED__
#define __IDeckLinkProfileCallback_FWD_DEFINED__
typedef interface IDeckLinkProfileCallback IDeckLinkProfileCallback;
#ifdef __cplusplus
interface IDeckLinkProfileCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkProfileManager_FWD_DEFINED__
#define __IDeckLinkProfileManager_FWD_DEFINED__
typedef interface IDeckLinkProfileManager IDeckLinkProfileManager;
#ifdef __cplusplus
interface IDeckLinkProfileManager;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkStatus_FWD_DEFINED__
#define __IDeckLinkStatus_FWD_DEFINED__
typedef interface IDeckLinkStatus IDeckLinkStatus;
#ifdef __cplusplus
interface IDeckLinkStatus;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkKeyer_FWD_DEFINED__
#define __IDeckLinkKeyer_FWD_DEFINED__
typedef interface IDeckLinkKeyer IDeckLinkKeyer;
#ifdef __cplusplus
interface IDeckLinkKeyer;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoConversion_FWD_DEFINED__
#define __IDeckLinkVideoConversion_FWD_DEFINED__
typedef interface IDeckLinkVideoConversion IDeckLinkVideoConversion;
#ifdef __cplusplus
interface IDeckLinkVideoConversion;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDeviceNotificationCallback_FWD_DEFINED__
#define __IDeckLinkDeviceNotificationCallback_FWD_DEFINED__
typedef interface IDeckLinkDeviceNotificationCallback IDeckLinkDeviceNotificationCallback;
#ifdef __cplusplus
interface IDeckLinkDeviceNotificationCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDiscovery_FWD_DEFINED__
#define __IDeckLinkDiscovery_FWD_DEFINED__
typedef interface IDeckLinkDiscovery IDeckLinkDiscovery;
#ifdef __cplusplus
interface IDeckLinkDiscovery;
#endif /* __cplusplus */
#endif

#ifndef __CDeckLinkIterator_FWD_DEFINED__
#define __CDeckLinkIterator_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkIterator CDeckLinkIterator;
#else
typedef struct CDeckLinkIterator CDeckLinkIterator;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkIterator_FWD_DEFINED__ */

#ifndef __CDeckLinkAPIInformation_FWD_DEFINED__
#define __CDeckLinkAPIInformation_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkAPIInformation CDeckLinkAPIInformation;
#else
typedef struct CDeckLinkAPIInformation CDeckLinkAPIInformation;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkAPIInformation_FWD_DEFINED__ */

#ifndef __CDeckLinkGLScreenPreviewHelper_FWD_DEFINED__
#define __CDeckLinkGLScreenPreviewHelper_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkGLScreenPreviewHelper CDeckLinkGLScreenPreviewHelper;
#else
typedef struct CDeckLinkGLScreenPreviewHelper CDeckLinkGLScreenPreviewHelper;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkGLScreenPreviewHelper_FWD_DEFINED__ */

#ifndef __CDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__
#define __CDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkDX9ScreenPreviewHelper CDeckLinkDX9ScreenPreviewHelper;
#else
typedef struct CDeckLinkDX9ScreenPreviewHelper CDeckLinkDX9ScreenPreviewHelper;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__ */

#ifndef __CDeckLinkVideoConversion_FWD_DEFINED__
#define __CDeckLinkVideoConversion_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkVideoConversion CDeckLinkVideoConversion;
#else
typedef struct CDeckLinkVideoConversion CDeckLinkVideoConversion;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkVideoConversion_FWD_DEFINED__ */

#ifndef __CDeckLinkDiscovery_FWD_DEFINED__
#define __CDeckLinkDiscovery_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkDiscovery CDeckLinkDiscovery;
#else
typedef struct CDeckLinkDiscovery CDeckLinkDiscovery;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkDiscovery_FWD_DEFINED__ */

#ifndef __CDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__
#define __CDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkVideoFrameAncillaryPackets CDeckLinkVideoFrameAncillaryPackets;
#else
typedef struct CDeckLinkVideoFrameAncillaryPackets CDeckLinkVideoFrameAncillaryPackets;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__ */

#ifndef __IDeckLinkOutput_v11_4_FWD_DEFINED__
#define __IDeckLinkOutput_v11_4_FWD_DEFINED__
typedef interface IDeckLinkOutput_v11_4 IDeckLinkOutput_v11_4;
#ifdef __cplusplus
interface IDeckLinkOutput_v11_4;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_v11_4_FWD_DEFINED__
#define __IDeckLinkInput_v11_4_FWD_DEFINED__
typedef interface IDeckLinkInput_v11_4 IDeckLinkInput_v11_4;
#ifdef __cplusplus
interface IDeckLinkInput_v11_4;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkConfiguration_v10_11_FWD_DEFINED__
#define __IDeckLinkConfiguration_v10_11_FWD_DEFINED__
typedef interface IDeckLinkConfiguration_v10_11 IDeckLinkConfiguration_v10_11;
#ifdef __cplusplus
interface IDeckLinkConfiguration_v10_11;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAttributes_v10_11_FWD_DEFINED__
#define __IDeckLinkAttributes_v10_11_FWD_DEFINED__
typedef interface IDeckLinkAttributes_v10_11 IDeckLinkAttributes_v10_11;
#ifdef __cplusplus
interface IDeckLinkAttributes_v10_11;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkOutput_v10_11_FWD_DEFINED__
#define __IDeckLinkOutput_v10_11_FWD_DEFINED__
typedef interface IDeckLinkOutput_v10_11 IDeckLinkOutput_v10_11;
#ifdef __cplusplus
interface IDeckLinkOutput_v10_11;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_v10_11_FWD_DEFINED__
#define __IDeckLinkInput_v10_11_FWD_DEFINED__
typedef interface IDeckLinkInput_v10_11 IDeckLinkInput_v10_11;
#ifdef __cplusplus
interface IDeckLinkInput_v10_11;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderInput_v10_11_FWD_DEFINED__
#define __IDeckLinkEncoderInput_v10_11_FWD_DEFINED__
typedef interface IDeckLinkEncoderInput_v10_11 IDeckLinkEncoderInput_v10_11;
#ifdef __cplusplus
interface IDeckLinkEncoderInput_v10_11;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkNotification_v10_11_FWD_DEFINED__
#define __IDeckLinkNotification_v10_11_FWD_DEFINED__
typedef interface IDeckLinkNotification_v10_11 IDeckLinkNotification_v10_11;
#ifdef __cplusplus
interface IDeckLinkNotification_v10_11;
#endif /* __cplusplus */
#endif

#ifndef __CDeckLinkIterator_v10_11_FWD_DEFINED__
#define __CDeckLinkIterator_v10_11_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkIterator_v10_11 CDeckLinkIterator_v10_11;
#else
typedef struct CDeckLinkIterator_v10_11 CDeckLinkIterator_v10_11;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkIterator_v10_11_FWD_DEFINED__ */

#ifndef __CDeckLinkDiscovery_v10_11_FWD_DEFINED__
#define __CDeckLinkDiscovery_v10_11_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkDiscovery_v10_11 CDeckLinkDiscovery_v10_11;
#else
typedef struct CDeckLinkDiscovery_v10_11 CDeckLinkDiscovery_v10_11;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkDiscovery_v10_11_FWD_DEFINED__ */

#ifndef __IDeckLinkInputCallback_v11_5_1_FWD_DEFINED__
#define __IDeckLinkInputCallback_v11_5_1_FWD_DEFINED__
typedef interface IDeckLinkInputCallback_v11_5_1 IDeckLinkInputCallback_v11_5_1;
#ifdef __cplusplus
interface IDeckLinkInputCallback_v11_5_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_v11_5_1_FWD_DEFINED__
#define __IDeckLinkInput_v11_5_1_FWD_DEFINED__
typedef interface IDeckLinkInput_v11_5_1 IDeckLinkInput_v11_5_1;
#ifdef __cplusplus
interface IDeckLinkInput_v11_5_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrameMetadataExtensions_v11_5_FWD_DEFINED__
#define __IDeckLinkVideoFrameMetadataExtensions_v11_5_FWD_DEFINED__
typedef interface IDeckLinkVideoFrameMetadataExtensions_v11_5 IDeckLinkVideoFrameMetadataExtensions_v11_5;
#ifdef __cplusplus
interface IDeckLinkVideoFrameMetadataExtensions_v11_5;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkConfiguration_v10_9_FWD_DEFINED__
#define __IDeckLinkConfiguration_v10_9_FWD_DEFINED__
typedef interface IDeckLinkConfiguration_v10_9 IDeckLinkConfiguration_v10_9;
#ifdef __cplusplus
interface IDeckLinkConfiguration_v10_9;
#endif /* __cplusplus */
#endif

#ifndef __CBMDStreamingDiscovery_v10_8_FWD_DEFINED__
#define __CBMDStreamingDiscovery_v10_8_FWD_DEFINED__
#ifdef __cplusplus
typedef class CBMDStreamingDiscovery_v10_8 CBMDStreamingDiscovery_v10_8;
#else
typedef struct CBMDStreamingDiscovery_v10_8 CBMDStreamingDiscovery_v10_8;
#endif /* defined __cplusplus */
#endif /* defined __CBMDStreamingDiscovery_v10_8_FWD_DEFINED__ */

#ifndef __CDeckLinkIterator_v10_8_FWD_DEFINED__
#define __CDeckLinkIterator_v10_8_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkIterator_v10_8 CDeckLinkIterator_v10_8;
#else
typedef struct CDeckLinkIterator_v10_8 CDeckLinkIterator_v10_8;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkIterator_v10_8_FWD_DEFINED__ */

#ifndef __CDeckLinkDiscovery_v10_8_FWD_DEFINED__
#define __CDeckLinkDiscovery_v10_8_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkDiscovery_v10_8 CDeckLinkDiscovery_v10_8;
#else
typedef struct CDeckLinkDiscovery_v10_8 CDeckLinkDiscovery_v10_8;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkDiscovery_v10_8_FWD_DEFINED__ */

#ifndef __IDeckLinkEncoderConfiguration_v10_5_FWD_DEFINED__
#define __IDeckLinkEncoderConfiguration_v10_5_FWD_DEFINED__
typedef interface IDeckLinkEncoderConfiguration_v10_5 IDeckLinkEncoderConfiguration_v10_5;
#ifdef __cplusplus
interface IDeckLinkEncoderConfiguration_v10_5;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkConfiguration_v10_4_FWD_DEFINED__
#define __IDeckLinkConfiguration_v10_4_FWD_DEFINED__
typedef interface IDeckLinkConfiguration_v10_4 IDeckLinkConfiguration_v10_4;
#ifdef __cplusplus
interface IDeckLinkConfiguration_v10_4;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkConfiguration_v10_2_FWD_DEFINED__
#define __IDeckLinkConfiguration_v10_2_FWD_DEFINED__
typedef interface IDeckLinkConfiguration_v10_2 IDeckLinkConfiguration_v10_2;
#ifdef __cplusplus
interface IDeckLinkConfiguration_v10_2;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkOutput_v9_9_FWD_DEFINED__
#define __IDeckLinkOutput_v9_9_FWD_DEFINED__
typedef interface IDeckLinkOutput_v9_9 IDeckLinkOutput_v9_9;
#ifdef __cplusplus
interface IDeckLinkOutput_v9_9;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_v9_2_FWD_DEFINED__
#define __IDeckLinkInput_v9_2_FWD_DEFINED__
typedef interface IDeckLinkInput_v9_2 IDeckLinkInput_v9_2;
#ifdef __cplusplus
interface IDeckLinkInput_v9_2;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDeckControlStatusCallback_v8_1_FWD_DEFINED__
#define __IDeckLinkDeckControlStatusCallback_v8_1_FWD_DEFINED__
typedef interface IDeckLinkDeckControlStatusCallback_v8_1 IDeckLinkDeckControlStatusCallback_v8_1;
#ifdef __cplusplus
interface IDeckLinkDeckControlStatusCallback_v8_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDeckControl_v8_1_FWD_DEFINED__
#define __IDeckLinkDeckControl_v8_1_FWD_DEFINED__
typedef interface IDeckLinkDeckControl_v8_1 IDeckLinkDeckControl_v8_1;
#ifdef __cplusplus
interface IDeckLinkDeckControl_v8_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLink_v8_0_FWD_DEFINED__
#define __IDeckLink_v8_0_FWD_DEFINED__
typedef interface IDeckLink_v8_0 IDeckLink_v8_0;
#ifdef __cplusplus
interface IDeckLink_v8_0;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkIterator_v8_0_FWD_DEFINED__
#define __IDeckLinkIterator_v8_0_FWD_DEFINED__
typedef interface IDeckLinkIterator_v8_0 IDeckLinkIterator_v8_0;
#ifdef __cplusplus
interface IDeckLinkIterator_v8_0;
#endif /* __cplusplus */
#endif

#ifndef __CDeckLinkIterator_v8_0_FWD_DEFINED__
#define __CDeckLinkIterator_v8_0_FWD_DEFINED__
#ifdef __cplusplus
typedef class CDeckLinkIterator_v8_0 CDeckLinkIterator_v8_0;
#else
typedef struct CDeckLinkIterator_v8_0 CDeckLinkIterator_v8_0;
#endif /* defined __cplusplus */
#endif /* defined __CDeckLinkIterator_v8_0_FWD_DEFINED__ */

#ifndef __IDeckLinkDeckControl_v7_9_FWD_DEFINED__
#define __IDeckLinkDeckControl_v7_9_FWD_DEFINED__
typedef interface IDeckLinkDeckControl_v7_9 IDeckLinkDeckControl_v7_9;
#ifdef __cplusplus
interface IDeckLinkDeckControl_v7_9;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoOutputCallback_v7_6_FWD_DEFINED__
#define __IDeckLinkVideoOutputCallback_v7_6_FWD_DEFINED__
typedef interface IDeckLinkVideoOutputCallback_v7_6 IDeckLinkVideoOutputCallback_v7_6;
#ifdef __cplusplus
interface IDeckLinkVideoOutputCallback_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInputCallback_v7_6_FWD_DEFINED__
#define __IDeckLinkInputCallback_v7_6_FWD_DEFINED__
typedef interface IDeckLinkInputCallback_v7_6 IDeckLinkInputCallback_v7_6;
#ifdef __cplusplus
interface IDeckLinkInputCallback_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDisplayModeIterator_v7_6_FWD_DEFINED__
#define __IDeckLinkDisplayModeIterator_v7_6_FWD_DEFINED__
typedef interface IDeckLinkDisplayModeIterator_v7_6 IDeckLinkDisplayModeIterator_v7_6;
#ifdef __cplusplus
interface IDeckLinkDisplayModeIterator_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDisplayMode_v7_6_FWD_DEFINED__
#define __IDeckLinkDisplayMode_v7_6_FWD_DEFINED__
typedef interface IDeckLinkDisplayMode_v7_6 IDeckLinkDisplayMode_v7_6;
#ifdef __cplusplus
interface IDeckLinkDisplayMode_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkOutput_v7_6_FWD_DEFINED__
#define __IDeckLinkOutput_v7_6_FWD_DEFINED__
typedef interface IDeckLinkOutput_v7_6 IDeckLinkOutput_v7_6;
#ifdef __cplusplus
interface IDeckLinkOutput_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_v7_6_FWD_DEFINED__
#define __IDeckLinkInput_v7_6_FWD_DEFINED__
typedef interface IDeckLinkInput_v7_6 IDeckLinkInput_v7_6;
#ifdef __cplusplus
interface IDeckLinkInput_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkTimecode_v7_6_FWD_DEFINED__
#define __IDeckLinkTimecode_v7_6_FWD_DEFINED__
typedef interface IDeckLinkTimecode_v7_6 IDeckLinkTimecode_v7_6;
#ifdef __cplusplus
interface IDeckLinkTimecode_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrame_v7_6_FWD_DEFINED__
#define __IDeckLinkVideoFrame_v7_6_FWD_DEFINED__
typedef interface IDeckLinkVideoFrame_v7_6 IDeckLinkVideoFrame_v7_6;
#ifdef __cplusplus
interface IDeckLinkVideoFrame_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkMutableVideoFrame_v7_6_FWD_DEFINED__
#define __IDeckLinkMutableVideoFrame_v7_6_FWD_DEFINED__
typedef interface IDeckLinkMutableVideoFrame_v7_6 IDeckLinkMutableVideoFrame_v7_6;
#ifdef __cplusplus
interface IDeckLinkMutableVideoFrame_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoInputFrame_v7_6_FWD_DEFINED__
#define __IDeckLinkVideoInputFrame_v7_6_FWD_DEFINED__
typedef interface IDeckLinkVideoInputFrame_v7_6 IDeckLinkVideoInputFrame_v7_6;
#ifdef __cplusplus
interface IDeckLinkVideoInputFrame_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkScreenPreviewCallback_v7_6_FWD_DEFINED__
#define __IDeckLinkScreenPreviewCallback_v7_6_FWD_DEFINED__
typedef interface IDeckLinkScreenPreviewCallback_v7_6 IDeckLinkScreenPreviewCallback_v7_6;
#ifdef __cplusplus
interface IDeckLinkScreenPreviewCallback_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
#define __IDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
typedef interface IDeckLinkGLScreenPreviewHelper_v7_6 IDeckLinkGLScreenPreviewHelper_v7_6;
#ifdef __cplusplus
interface IDeckLinkGLScreenPreviewHelper_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoConversion_v7_6_FWD_DEFINED__
#define __IDeckLinkVideoConversion_v7_6_FWD_DEFINED__
typedef interface IDeckLinkVideoConversion_v7_6 IDeckLinkVideoConversion_v7_6;
#ifdef __cplusplus
interface IDeckLinkVideoConversion_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkConfiguration_v7_6_FWD_DEFINED__
#define __IDeckLinkConfiguration_v7_6_FWD_DEFINED__
typedef interface IDeckLinkConfiguration_v7_6 IDeckLinkConfiguration_v7_6;
#ifdef __cplusplus
interface IDeckLinkConfiguration_v7_6;
#endif /* __cplusplus */
#endif

#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 /* defined __cplusplus */
#endif /* defined __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 /* defined __cplusplus */
#endif /* defined __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;
#ifdef __cplusplus
interface IDeckLinkInputCallback_v7_3;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkOutput_v7_3_FWD_DEFINED__
#define __IDeckLinkOutput_v7_3_FWD_DEFINED__
typedef interface IDeckLinkOutput_v7_3 IDeckLinkOutput_v7_3;
#ifdef __cplusplus
interface IDeckLinkOutput_v7_3;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_v7_3_FWD_DEFINED__
#define __IDeckLinkInput_v7_3_FWD_DEFINED__
typedef interface IDeckLinkInput_v7_3 IDeckLinkInput_v7_3;
#ifdef __cplusplus
interface IDeckLinkInput_v7_3;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoInputFrame_v7_3_FWD_DEFINED__
#define __IDeckLinkVideoInputFrame_v7_3_FWD_DEFINED__
typedef interface IDeckLinkVideoInputFrame_v7_3 IDeckLinkVideoInputFrame_v7_3;
#ifdef __cplusplus
interface IDeckLinkVideoInputFrame_v7_3;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDisplayModeIterator_v7_1_FWD_DEFINED__
#define __IDeckLinkDisplayModeIterator_v7_1_FWD_DEFINED__
typedef interface IDeckLinkDisplayModeIterator_v7_1 IDeckLinkDisplayModeIterator_v7_1;
#ifdef __cplusplus
interface IDeckLinkDisplayModeIterator_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDisplayMode_v7_1_FWD_DEFINED__
#define __IDeckLinkDisplayMode_v7_1_FWD_DEFINED__
typedef interface IDeckLinkDisplayMode_v7_1 IDeckLinkDisplayMode_v7_1;
#ifdef __cplusplus
interface IDeckLinkDisplayMode_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoOutputCallback_v7_1_FWD_DEFINED__
#define __IDeckLinkVideoOutputCallback_v7_1_FWD_DEFINED__
typedef interface IDeckLinkVideoOutputCallback_v7_1 IDeckLinkVideoOutputCallback_v7_1;
#ifdef __cplusplus
interface IDeckLinkVideoOutputCallback_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInputCallback_v7_1_FWD_DEFINED__
#define __IDeckLinkInputCallback_v7_1_FWD_DEFINED__
typedef interface IDeckLinkInputCallback_v7_1 IDeckLinkInputCallback_v7_1;
#ifdef __cplusplus
interface IDeckLinkInputCallback_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkOutput_v7_1_FWD_DEFINED__
#define __IDeckLinkOutput_v7_1_FWD_DEFINED__
typedef interface IDeckLinkOutput_v7_1 IDeckLinkOutput_v7_1;
#ifdef __cplusplus
interface IDeckLinkOutput_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_v7_1_FWD_DEFINED__
#define __IDeckLinkInput_v7_1_FWD_DEFINED__
typedef interface IDeckLinkInput_v7_1 IDeckLinkInput_v7_1;
#ifdef __cplusplus
interface IDeckLinkInput_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrame_v7_1_FWD_DEFINED__
#define __IDeckLinkVideoFrame_v7_1_FWD_DEFINED__
typedef interface IDeckLinkVideoFrame_v7_1 IDeckLinkVideoFrame_v7_1;
#ifdef __cplusplus
interface IDeckLinkVideoFrame_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoInputFrame_v7_1_FWD_DEFINED__
#define __IDeckLinkVideoInputFrame_v7_1_FWD_DEFINED__
typedef interface IDeckLinkVideoInputFrame_v7_1 IDeckLinkVideoInputFrame_v7_1;
#ifdef __cplusplus
interface IDeckLinkVideoInputFrame_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAudioInputPacket_v7_1_FWD_DEFINED__
#define __IDeckLinkAudioInputPacket_v7_1_FWD_DEFINED__
typedef interface IDeckLinkAudioInputPacket_v7_1 IDeckLinkAudioInputPacket_v7_1;
#ifdef __cplusplus
interface IDeckLinkAudioInputPacket_v7_1;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <unknwn.h>

#ifdef __cplusplus
extern "C" {
#endif


DEFINE_GUID(LIBID_DeckLinkAPI, 0xd864517a, 0xedd5, 0x466d, 0x86,0x7d, 0xc8,0x19,0xf1,0xc0,0x52,0xbb);

typedef LONGLONG BMDTimeValue;
typedef LONGLONG BMDTimeScale;
typedef unsigned int BMDTimecodeBCD;
typedef unsigned int BMDTimecodeUserBits;
typedef unsigned int BMDTimecodeFlags;
#if 0
typedef enum _BMDTimecodeFlags BMDTimecodeFlags;
#endif
enum _BMDTimecodeFlags {
    bmdTimecodeFlagDefault = 0,
    bmdTimecodeIsDropFrame = 1 << 0,
    bmdTimecodeFieldMark = 1 << 1,
    bmdTimecodeColorFrame = 1 << 2,
    bmdTimecodeEmbedRecordingTrigger = 1 << 3,
    bmdTimecodeRecordingTriggered = 1 << 4
};
typedef enum _BMDVideoConnection {
    bmdVideoConnectionUnspecified = 0,
    bmdVideoConnectionSDI = 1 << 0,
    bmdVideoConnectionHDMI = 1 << 1,
    bmdVideoConnectionOpticalSDI = 1 << 2,
    bmdVideoConnectionComponent = 1 << 3,
    bmdVideoConnectionComposite = 1 << 4,
    bmdVideoConnectionSVideo = 1 << 5
} BMDVideoConnection;
typedef enum _BMDAudioConnection {
    bmdAudioConnectionEmbedded = 1 << 0,
    bmdAudioConnectionAESEBU = 1 << 1,
    bmdAudioConnectionAnalog = 1 << 2,
    bmdAudioConnectionAnalogXLR = 1 << 3,
    bmdAudioConnectionAnalogRCA = 1 << 4,
    bmdAudioConnectionMicrophone = 1 << 5,
    bmdAudioConnectionHeadphones = 1 << 6
} BMDAudioConnection;
typedef enum _BMDDeckControlConnection {
    bmdDeckControlConnectionRS422Remote1 = 1 << 0,
    bmdDeckControlConnectionRS422Remote2 = 1 << 1
} BMDDeckControlConnection;
#ifndef __IDeckLinkTimecode_FWD_DEFINED__
#define __IDeckLinkTimecode_FWD_DEFINED__
typedef interface IDeckLinkTimecode IDeckLinkTimecode;
#ifdef __cplusplus
interface IDeckLinkTimecode;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkTimecode interface
 */
#ifndef __IDeckLinkTimecode_INTERFACE_DEFINED__
#define __IDeckLinkTimecode_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkTimecode, 0xbc6cfbd3, 0x8317, 0x4325, 0xac,0x1c, 0x12,0x16,0x39,0x1e,0x93,0x40);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("bc6cfbd3-8317-4325-ac1c-1216391e9340")
IDeckLinkTimecode : public IUnknown
{
    virtual BMDTimecodeBCD STDMETHODCALLTYPE GetBCD(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetComponents(
        unsigned char *hours,
        unsigned char *minutes,
        unsigned char *seconds,
        unsigned char *frames) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BSTR *timecode) = 0;

    virtual BMDTimecodeFlags STDMETHODCALLTYPE GetFlags(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecodeUserBits(
        BMDTimecodeUserBits *userBits) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkTimecode, 0xbc6cfbd3, 0x8317, 0x4325, 0xac,0x1c, 0x12,0x16,0x39,0x1e,0x93,0x40)
#endif
#else
typedef struct IDeckLinkTimecodeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkTimecode *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkTimecode *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkTimecode *This);

    /*** IDeckLinkTimecode methods ***/
    BMDTimecodeBCD (STDMETHODCALLTYPE *GetBCD)(
        IDeckLinkTimecode *This);

    HRESULT (STDMETHODCALLTYPE *GetComponents)(
        IDeckLinkTimecode *This,
        unsigned char *hours,
        unsigned char *minutes,
        unsigned char *seconds,
        unsigned char *frames);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkTimecode *This,
        BSTR *timecode);

    BMDTimecodeFlags (STDMETHODCALLTYPE *GetFlags)(
        IDeckLinkTimecode *This);

    HRESULT (STDMETHODCALLTYPE *GetTimecodeUserBits)(
        IDeckLinkTimecode *This,
        BMDTimecodeUserBits *userBits);

    END_INTERFACE
} IDeckLinkTimecodeVtbl;

interface IDeckLinkTimecode {
    CONST_VTBL IDeckLinkTimecodeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkTimecode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkTimecode_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkTimecode_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkTimecode methods ***/
#define IDeckLinkTimecode_GetBCD(This) (This)->lpVtbl->GetBCD(This)
#define IDeckLinkTimecode_GetComponents(This,hours,minutes,seconds,frames) (This)->lpVtbl->GetComponents(This,hours,minutes,seconds,frames)
#define IDeckLinkTimecode_GetString(This,timecode) (This)->lpVtbl->GetString(This,timecode)
#define IDeckLinkTimecode_GetFlags(This) (This)->lpVtbl->GetFlags(This)
#define IDeckLinkTimecode_GetTimecodeUserBits(This,userBits) (This)->lpVtbl->GetTimecodeUserBits(This,userBits)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkTimecode_QueryInterface(IDeckLinkTimecode* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkTimecode_AddRef(IDeckLinkTimecode* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkTimecode_Release(IDeckLinkTimecode* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkTimecode methods ***/
static FORCEINLINE BMDTimecodeBCD IDeckLinkTimecode_GetBCD(IDeckLinkTimecode* This) {
    return This->lpVtbl->GetBCD(This);
}
static FORCEINLINE HRESULT IDeckLinkTimecode_GetComponents(IDeckLinkTimecode* This,unsigned char *hours,unsigned char *minutes,unsigned char *seconds,unsigned char *frames) {
    return This->lpVtbl->GetComponents(This,hours,minutes,seconds,frames);
}
static FORCEINLINE HRESULT IDeckLinkTimecode_GetString(IDeckLinkTimecode* This,BSTR *timecode) {
    return This->lpVtbl->GetString(This,timecode);
}
static FORCEINLINE BMDTimecodeFlags IDeckLinkTimecode_GetFlags(IDeckLinkTimecode* This) {
    return This->lpVtbl->GetFlags(This);
}
static FORCEINLINE HRESULT IDeckLinkTimecode_GetTimecodeUserBits(IDeckLinkTimecode* This,BMDTimecodeUserBits *userBits) {
    return This->lpVtbl->GetTimecodeUserBits(This,userBits);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkTimecode_INTERFACE_DEFINED__ */

typedef unsigned int BMDDisplayModeFlags;
#if 0
typedef enum _BMDDisplayModeFlags BMDDisplayModeFlags;
#endif
typedef enum _BMDDisplayMode {
    bmdModeNTSC = 0x6e747363,
    bmdModeNTSC2398 = 0x6e743233,
    bmdModePAL = 0x70616c20,
    bmdModeNTSCp = 0x6e747370,
    bmdModePALp = 0x70616c70,
    bmdModeHD1080p2398 = 0x32337073,
    bmdModeHD1080p24 = 0x32347073,
    bmdModeHD1080p25 = 0x48703235,
    bmdModeHD1080p2997 = 0x48703239,
    bmdModeHD1080p30 = 0x48703330,
    bmdModeHD1080p4795 = 0x48703437,
    bmdModeHD1080p48 = 0x48703438,
    bmdModeHD1080p50 = 0x48703530,
    bmdModeHD1080p5994 = 0x48703539,
    bmdModeHD1080p6000 = 0x48703630,
    bmdModeHD1080p9590 = 0x48703935,
    bmdModeHD1080p96 = 0x48703936,
    bmdModeHD1080p100 = 0x48703130,
    bmdModeHD1080p11988 = 0x48703131,
    bmdModeHD1080p120 = 0x48703132,
    bmdModeHD1080i50 = 0x48693530,
    bmdModeHD1080i5994 = 0x48693539,
    bmdModeHD1080i6000 = 0x48693630,
    bmdModeHD720p50 = 0x68703530,
    bmdModeHD720p5994 = 0x68703539,
    bmdModeHD720p60 = 0x68703630,
    bmdMode2k2398 = 0x326b3233,
    bmdMode2k24 = 0x326b3234,
    bmdMode2k25 = 0x326b3235,
    bmdMode2kDCI2398 = 0x32643233,
    bmdMode2kDCI24 = 0x32643234,
    bmdMode2kDCI25 = 0x32643235,
    bmdMode2kDCI2997 = 0x32643239,
    bmdMode2kDCI30 = 0x32643330,
    bmdMode2kDCI4795 = 0x32643437,
    bmdMode2kDCI48 = 0x32643438,
    bmdMode2kDCI50 = 0x32643530,
    bmdMode2kDCI5994 = 0x32643539,
    bmdMode2kDCI60 = 0x32643630,
    bmdMode2kDCI9590 = 0x32643935,
    bmdMode2kDCI96 = 0x32643936,
    bmdMode2kDCI100 = 0x32643130,
    bmdMode2kDCI11988 = 0x32643131,
    bmdMode2kDCI120 = 0x32643132,
    bmdMode4K2160p2398 = 0x346b3233,
    bmdMode4K2160p24 = 0x346b3234,
    bmdMode4K2160p25 = 0x346b3235,
    bmdMode4K2160p2997 = 0x346b3239,
    bmdMode4K2160p30 = 0x346b3330,
    bmdMode4K2160p4795 = 0x346b3437,
    bmdMode4K2160p48 = 0x346b3438,
    bmdMode4K2160p50 = 0x346b3530,
    bmdMode4K2160p5994 = 0x346b3539,
    bmdMode4K2160p60 = 0x346b3630,
    bmdMode4K2160p9590 = 0x346b3935,
    bmdMode4K2160p96 = 0x346b3936,
    bmdMode4K2160p100 = 0x346b3130,
    bmdMode4K2160p11988 = 0x346b3131,
    bmdMode4K2160p120 = 0x346b3132,
    bmdMode4kDCI2398 = 0x34643233,
    bmdMode4kDCI24 = 0x34643234,
    bmdMode4kDCI25 = 0x34643235,
    bmdMode4kDCI2997 = 0x34643239,
    bmdMode4kDCI30 = 0x34643330,
    bmdMode4kDCI4795 = 0x34643437,
    bmdMode4kDCI48 = 0x34643438,
    bmdMode4kDCI50 = 0x34643530,
    bmdMode4kDCI5994 = 0x34643539,
    bmdMode4kDCI60 = 0x34643630,
    bmdMode4kDCI9590 = 0x34643935,
    bmdMode4kDCI96 = 0x34643936,
    bmdMode4kDCI100 = 0x34643130,
    bmdMode4kDCI11988 = 0x34643131,
    bmdMode4kDCI120 = 0x34643132,
    bmdMode8K4320p2398 = 0x386b3233,
    bmdMode8K4320p24 = 0x386b3234,
    bmdMode8K4320p25 = 0x386b3235,
    bmdMode8K4320p2997 = 0x386b3239,
    bmdMode8K4320p30 = 0x386b3330,
    bmdMode8K4320p4795 = 0x386b3437,
    bmdMode8K4320p48 = 0x386b3438,
    bmdMode8K4320p50 = 0x386b3530,
    bmdMode8K4320p5994 = 0x386b3539,
    bmdMode8K4320p60 = 0x386b3630,
    bmdMode8kDCI2398 = 0x38643233,
    bmdMode8kDCI24 = 0x38643234,
    bmdMode8kDCI25 = 0x38643235,
    bmdMode8kDCI2997 = 0x38643239,
    bmdMode8kDCI30 = 0x38643330,
    bmdMode8kDCI4795 = 0x38643437,
    bmdMode8kDCI48 = 0x38643438,
    bmdMode8kDCI50 = 0x38643530,
    bmdMode8kDCI5994 = 0x38643539,
    bmdMode8kDCI60 = 0x38643630,
    bmdMode640x480p60 = 0x76676136,
    bmdMode800x600p60 = 0x73766736,
    bmdMode1440x900p50 = 0x77786735,
    bmdMode1440x900p60 = 0x77786736,
    bmdMode1440x1080p50 = 0x73786735,
    bmdMode1440x1080p60 = 0x73786736,
    bmdMode1600x1200p50 = 0x75786735,
    bmdMode1600x1200p60 = 0x75786736,
    bmdMode1920x1200p50 = 0x77757835,
    bmdMode1920x1200p60 = 0x77757836,
    bmdMode1920x1440p50 = 0x31393435,
    bmdMode1920x1440p60 = 0x31393436,
    bmdMode2560x1440p50 = 0x77716835,
    bmdMode2560x1440p60 = 0x77716836,
    bmdMode2560x1600p50 = 0x77717835,
    bmdMode2560x1600p60 = 0x77717836,
    bmdModeUnknown = 0x69756e6b
} BMDDisplayMode;
typedef enum _BMDFieldDominance {
    bmdUnknownFieldDominance = 0,
    bmdLowerFieldFirst = 0x6c6f7772,
    bmdUpperFieldFirst = 0x75707072,
    bmdProgressiveFrame = 0x70726f67,
    bmdProgressiveSegmentedFrame = 0x70736620
} BMDFieldDominance;
typedef enum _BMDPixelFormat {
    bmdFormatUnspecified = 0,
    bmdFormat8BitYUV = 0x32767579,
    bmdFormat10BitYUV = 0x76323130,
    bmdFormat8BitARGB = 32,
    bmdFormat8BitBGRA = 0x42475241,
    bmdFormat10BitRGB = 0x72323130,
    bmdFormat12BitRGB = 0x52313242,
    bmdFormat12BitRGBLE = 0x5231324c,
    bmdFormat10BitRGBXLE = 0x5231306c,
    bmdFormat10BitRGBX = 0x52313062,
    bmdFormatH265 = 0x68657631,
    bmdFormatDNxHR = 0x41566468
} BMDPixelFormat;
enum _BMDDisplayModeFlags {
    bmdDisplayModeSupports3D = 1 << 0,
    bmdDisplayModeColorspaceRec601 = 1 << 1,
    bmdDisplayModeColorspaceRec709 = 1 << 2,
    bmdDisplayModeColorspaceRec2020 = 1 << 3
};
#ifndef __IDeckLinkDisplayModeIterator_FWD_DEFINED__
#define __IDeckLinkDisplayModeIterator_FWD_DEFINED__
typedef interface IDeckLinkDisplayModeIterator IDeckLinkDisplayModeIterator;
#ifdef __cplusplus
interface IDeckLinkDisplayModeIterator;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDisplayMode_FWD_DEFINED__
#define __IDeckLinkDisplayMode_FWD_DEFINED__
typedef interface IDeckLinkDisplayMode IDeckLinkDisplayMode;
#ifdef __cplusplus
interface IDeckLinkDisplayMode;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkDisplayModeIterator interface
 */
#ifndef __IDeckLinkDisplayModeIterator_INTERFACE_DEFINED__
#define __IDeckLinkDisplayModeIterator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDisplayModeIterator, 0x9c88499f, 0xf601, 0x4021, 0xb8,0x0b, 0x03,0x2e,0x4e,0xb4,0x1c,0x35);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9c88499f-f601-4021-b80b-032e4eb41c35")
IDeckLinkDisplayModeIterator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        IDeckLinkDisplayMode **deckLinkDisplayMode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDisplayModeIterator, 0x9c88499f, 0xf601, 0x4021, 0xb8,0x0b, 0x03,0x2e,0x4e,0xb4,0x1c,0x35)
#endif
#else
typedef struct IDeckLinkDisplayModeIteratorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDisplayModeIterator *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDisplayModeIterator *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDisplayModeIterator *This);

    /*** IDeckLinkDisplayModeIterator methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IDeckLinkDisplayModeIterator *This,
        IDeckLinkDisplayMode **deckLinkDisplayMode);

    END_INTERFACE
} IDeckLinkDisplayModeIteratorVtbl;

interface IDeckLinkDisplayModeIterator {
    CONST_VTBL IDeckLinkDisplayModeIteratorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDisplayModeIterator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDisplayModeIterator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDisplayModeIterator_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDisplayModeIterator methods ***/
#define IDeckLinkDisplayModeIterator_Next(This,deckLinkDisplayMode) (This)->lpVtbl->Next(This,deckLinkDisplayMode)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayModeIterator_QueryInterface(IDeckLinkDisplayModeIterator* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDisplayModeIterator_AddRef(IDeckLinkDisplayModeIterator* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDisplayModeIterator_Release(IDeckLinkDisplayModeIterator* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDisplayModeIterator methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayModeIterator_Next(IDeckLinkDisplayModeIterator* This,IDeckLinkDisplayMode **deckLinkDisplayMode) {
    return This->lpVtbl->Next(This,deckLinkDisplayMode);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDisplayModeIterator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkDisplayMode interface
 */
#ifndef __IDeckLinkDisplayMode_INTERFACE_DEFINED__
#define __IDeckLinkDisplayMode_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDisplayMode, 0x3eb2c1ab, 0x0a3d, 0x4523, 0xa3,0xad, 0xf4,0x0d,0x7f,0xb1,0x4e,0x78);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3eb2c1ab-0a3d-4523-a3ad-f40d7fb14e78")
IDeckLinkDisplayMode : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetName(
        BSTR *name) = 0;

    virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetWidth(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetHeight(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrameRate(
        BMDTimeValue *frameDuration,
        BMDTimeScale *timeScale) = 0;

    virtual BMDFieldDominance STDMETHODCALLTYPE GetFieldDominance(
        ) = 0;

    virtual BMDDisplayModeFlags STDMETHODCALLTYPE GetFlags(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDisplayMode, 0x3eb2c1ab, 0x0a3d, 0x4523, 0xa3,0xad, 0xf4,0x0d,0x7f,0xb1,0x4e,0x78)
#endif
#else
typedef struct IDeckLinkDisplayModeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDisplayMode *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDisplayMode *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDisplayMode *This);

    /*** IDeckLinkDisplayMode methods ***/
    HRESULT (STDMETHODCALLTYPE *GetName)(
        IDeckLinkDisplayMode *This,
        BSTR *name);

    BMDDisplayMode (STDMETHODCALLTYPE *GetDisplayMode)(
        IDeckLinkDisplayMode *This);

    LONG (STDMETHODCALLTYPE *GetWidth)(
        IDeckLinkDisplayMode *This);

    LONG (STDMETHODCALLTYPE *GetHeight)(
        IDeckLinkDisplayMode *This);

    HRESULT (STDMETHODCALLTYPE *GetFrameRate)(
        IDeckLinkDisplayMode *This,
        BMDTimeValue *frameDuration,
        BMDTimeScale *timeScale);

    BMDFieldDominance (STDMETHODCALLTYPE *GetFieldDominance)(
        IDeckLinkDisplayMode *This);

    BMDDisplayModeFlags (STDMETHODCALLTYPE *GetFlags)(
        IDeckLinkDisplayMode *This);

    END_INTERFACE
} IDeckLinkDisplayModeVtbl;

interface IDeckLinkDisplayMode {
    CONST_VTBL IDeckLinkDisplayModeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDisplayMode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDisplayMode_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDisplayMode_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDisplayMode methods ***/
#define IDeckLinkDisplayMode_GetName(This,name) (This)->lpVtbl->GetName(This,name)
#define IDeckLinkDisplayMode_GetDisplayMode(This) (This)->lpVtbl->GetDisplayMode(This)
#define IDeckLinkDisplayMode_GetWidth(This) (This)->lpVtbl->GetWidth(This)
#define IDeckLinkDisplayMode_GetHeight(This) (This)->lpVtbl->GetHeight(This)
#define IDeckLinkDisplayMode_GetFrameRate(This,frameDuration,timeScale) (This)->lpVtbl->GetFrameRate(This,frameDuration,timeScale)
#define IDeckLinkDisplayMode_GetFieldDominance(This) (This)->lpVtbl->GetFieldDominance(This)
#define IDeckLinkDisplayMode_GetFlags(This) (This)->lpVtbl->GetFlags(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayMode_QueryInterface(IDeckLinkDisplayMode* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDisplayMode_AddRef(IDeckLinkDisplayMode* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDisplayMode_Release(IDeckLinkDisplayMode* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDisplayMode methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayMode_GetName(IDeckLinkDisplayMode* This,BSTR *name) {
    return This->lpVtbl->GetName(This,name);
}
static FORCEINLINE BMDDisplayMode IDeckLinkDisplayMode_GetDisplayMode(IDeckLinkDisplayMode* This) {
    return This->lpVtbl->GetDisplayMode(This);
}
static FORCEINLINE LONG IDeckLinkDisplayMode_GetWidth(IDeckLinkDisplayMode* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkDisplayMode_GetHeight(IDeckLinkDisplayMode* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE HRESULT IDeckLinkDisplayMode_GetFrameRate(IDeckLinkDisplayMode* This,BMDTimeValue *frameDuration,BMDTimeScale *timeScale) {
    return This->lpVtbl->GetFrameRate(This,frameDuration,timeScale);
}
static FORCEINLINE BMDFieldDominance IDeckLinkDisplayMode_GetFieldDominance(IDeckLinkDisplayMode* This) {
    return This->lpVtbl->GetFieldDominance(This);
}
static FORCEINLINE BMDDisplayModeFlags IDeckLinkDisplayMode_GetFlags(IDeckLinkDisplayMode* This) {
    return This->lpVtbl->GetFlags(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDisplayMode_INTERFACE_DEFINED__ */

#if 0
#endif
#ifndef __IDeckLink_FWD_DEFINED__
#define __IDeckLink_FWD_DEFINED__
typedef interface IDeckLink IDeckLink;
#ifdef __cplusplus
interface IDeckLink;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLink interface
 */
#ifndef __IDeckLink_INTERFACE_DEFINED__
#define __IDeckLink_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLink, 0xc418fbdd, 0x0587, 0x48ed, 0x8f,0xe5, 0x64,0x0f,0x0a,0x14,0xaf,0x91);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c418fbdd-0587-48ed-8fe5-640f0a14af91")
IDeckLink : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetModelName(
        BSTR *modelName) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
        BSTR *displayName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLink, 0xc418fbdd, 0x0587, 0x48ed, 0x8f,0xe5, 0x64,0x0f,0x0a,0x14,0xaf,0x91)
#endif
#else
typedef struct IDeckLinkVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLink *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLink *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLink *This);

    /*** IDeckLink methods ***/
    HRESULT (STDMETHODCALLTYPE *GetModelName)(
        IDeckLink *This,
        BSTR *modelName);

    HRESULT (STDMETHODCALLTYPE *GetDisplayName)(
        IDeckLink *This,
        BSTR *displayName);

    END_INTERFACE
} IDeckLinkVtbl;

interface IDeckLink {
    CONST_VTBL IDeckLinkVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLink_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLink_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLink_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLink methods ***/
#define IDeckLink_GetModelName(This,modelName) (This)->lpVtbl->GetModelName(This,modelName)
#define IDeckLink_GetDisplayName(This,displayName) (This)->lpVtbl->GetDisplayName(This,displayName)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLink_QueryInterface(IDeckLink* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLink_AddRef(IDeckLink* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLink_Release(IDeckLink* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLink methods ***/
static FORCEINLINE HRESULT IDeckLink_GetModelName(IDeckLink* This,BSTR *modelName) {
    return This->lpVtbl->GetModelName(This,modelName);
}
static FORCEINLINE HRESULT IDeckLink_GetDisplayName(IDeckLink* This,BSTR *displayName) {
    return This->lpVtbl->GetDisplayName(This,displayName);
}
#endif
#endif

#endif


#endif  /* __IDeckLink_INTERFACE_DEFINED__ */

#if 0
#endif
typedef enum _BMDDeckLinkConfigurationID {
    bmdDeckLinkConfigSwapSerialRxTx = 0x73737274,
    bmdDeckLinkConfigHDMI3DPackingFormat = 0x33647066,
    bmdDeckLinkConfigBypass = 0x62797073,
    bmdDeckLinkConfigClockTimingAdjustment = 0x63746164,
    bmdDeckLinkConfigAnalogAudioConsumerLevels = 0x6161636c,
    bmdDeckLinkConfigSwapHDMICh3AndCh4OnInput = 0x68693334,
    bmdDeckLinkConfigSwapHDMICh3AndCh4OnOutput = 0x686f3334,
    bmdDeckLinkConfigFieldFlickerRemoval = 0x66646672,
    bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion = 0x746f3539,
    bmdDeckLinkConfig444SDIVideoOutput = 0x3434346f,
    bmdDeckLinkConfigBlackVideoOutputDuringCapture = 0x62766f63,
    bmdDeckLinkConfigLowLatencyVideoOutput = 0x6c6c766f,
    bmdDeckLinkConfigDownConversionOnAllAnalogOutput = 0x6361616f,
    bmdDeckLinkConfigSMPTELevelAOutput = 0x736d7461,
    bmdDeckLinkConfigRec2020Output = 0x72656332,
    bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit = 0x53445153,
    bmdDeckLinkConfigOutput1080pAsPsF = 0x70667072,
    bmdDeckLinkConfigVideoOutputConnection = 0x766f636e,
    bmdDeckLinkConfigVideoOutputConversionMode = 0x766f636d,
    bmdDeckLinkConfigAnalogVideoOutputFlags = 0x61766f66,
    bmdDeckLinkConfigReferenceInputTimingOffset = 0x676c6f74,
    bmdDeckLinkConfigVideoOutputIdleOperation = 0x766f696f,
    bmdDeckLinkConfigDefaultVideoOutputMode = 0x64766f6d,
    bmdDeckLinkConfigDefaultVideoOutputModeFlags = 0x64766f66,
    bmdDeckLinkConfigSDIOutputLinkConfiguration = 0x736f6c63,
    bmdDeckLinkConfigHDMITimecodePacking = 0x6874706b,
    bmdDeckLinkConfigPlaybackGroup = 0x706c6772,
    bmdDeckLinkConfigVideoOutputComponentLumaGain = 0x6f636c67,
    bmdDeckLinkConfigVideoOutputComponentChromaBlueGain = 0x6f636362,
    bmdDeckLinkConfigVideoOutputComponentChromaRedGain = 0x6f636372,
    bmdDeckLinkConfigVideoOutputCompositeLumaGain = 0x6f696c67,
    bmdDeckLinkConfigVideoOutputCompositeChromaGain = 0x6f696367,
    bmdDeckLinkConfigVideoOutputSVideoLumaGain = 0x6f736c67,
    bmdDeckLinkConfigVideoOutputSVideoChromaGain = 0x6f736367,
    bmdDeckLinkConfigVideoInputScanning = 0x76697363,
    bmdDeckLinkConfigUseDedicatedLTCInput = 0x646c7463,
    bmdDeckLinkConfigSDIInput3DPayloadOverride = 0x33646473,
    bmdDeckLinkConfigCapture1080pAsPsF = 0x63667072,
    bmdDeckLinkConfigVideoInputConnection = 0x7669636e,
    bmdDeckLinkConfigAnalogVideoInputFlags = 0x61766966,
    bmdDeckLinkConfigVideoInputConversionMode = 0x7669636d,
    bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame = 0x70646966,
    bmdDeckLinkConfigVANCSourceLine1Mapping = 0x76736c31,
    bmdDeckLinkConfigVANCSourceLine2Mapping = 0x76736c32,
    bmdDeckLinkConfigVANCSourceLine3Mapping = 0x76736c33,
    bmdDeckLinkConfigCapturePassThroughMode = 0x6370746d,
    bmdDeckLinkConfigCaptureGroup = 0x63706772,
    bmdDeckLinkConfigVideoInputComponentLumaGain = 0x69636c67,
    bmdDeckLinkConfigVideoInputComponentChromaBlueGain = 0x69636362,
    bmdDeckLinkConfigVideoInputComponentChromaRedGain = 0x69636372,
    bmdDeckLinkConfigVideoInputCompositeLumaGain = 0x69696c67,
    bmdDeckLinkConfigVideoInputCompositeChromaGain = 0x69696367,
    bmdDeckLinkConfigVideoInputSVideoLumaGain = 0x69736c67,
    bmdDeckLinkConfigVideoInputSVideoChromaGain = 0x69736367,
    bmdDeckLinkConfigInternalKeyingAncillaryDataSource = 0x696b6173,
    bmdDeckLinkConfigMicrophonePhantomPower = 0x6d706870,
    bmdDeckLinkConfigAudioInputConnection = 0x6169636e,
    bmdDeckLinkConfigAnalogAudioInputScaleChannel1 = 0x61697331,
    bmdDeckLinkConfigAnalogAudioInputScaleChannel2 = 0x61697332,
    bmdDeckLinkConfigAnalogAudioInputScaleChannel3 = 0x61697333,
    bmdDeckLinkConfigAnalogAudioInputScaleChannel4 = 0x61697334,
    bmdDeckLinkConfigDigitalAudioInputScale = 0x64616973,
    bmdDeckLinkConfigMicrophoneInputGain = 0x6d696367,
    bmdDeckLinkConfigAudioOutputAESAnalogSwitch = 0x616f6161,
    bmdDeckLinkConfigAnalogAudioOutputScaleChannel1 = 0x616f7331,
    bmdDeckLinkConfigAnalogAudioOutputScaleChannel2 = 0x616f7332,
    bmdDeckLinkConfigAnalogAudioOutputScaleChannel3 = 0x616f7333,
    bmdDeckLinkConfigAnalogAudioOutputScaleChannel4 = 0x616f7334,
    bmdDeckLinkConfigDigitalAudioOutputScale = 0x64616f73,
    bmdDeckLinkConfigHeadphoneVolume = 0x68766f6c,
    bmdDeckLinkConfigDeviceInformationLabel = 0x64696c61,
    bmdDeckLinkConfigDeviceInformationSerialNumber = 0x6469736e,
    bmdDeckLinkConfigDeviceInformationCompany = 0x6469636f,
    bmdDeckLinkConfigDeviceInformationPhone = 0x64697068,
    bmdDeckLinkConfigDeviceInformationEmail = 0x6469656d,
    bmdDeckLinkConfigDeviceInformationDate = 0x64696461,
    bmdDeckLinkConfigDeckControlConnection = 0x6463636f
} BMDDeckLinkConfigurationID;
typedef enum _BMDDeckLinkEncoderConfigurationID {
    bmdDeckLinkEncoderConfigPreferredBitDepth = 0x65706272,
    bmdDeckLinkEncoderConfigFrameCodingMode = 0x6566636d,
    bmdDeckLinkEncoderConfigH265TargetBitrate = 0x68746272,
    bmdDeckLinkEncoderConfigDNxHRCompressionID = 0x64636964,
    bmdDeckLinkEncoderConfigDNxHRLevel = 0x646c6576,
    bmdDeckLinkEncoderConfigMPEG4SampleDescription = 0x73747345,
    bmdDeckLinkEncoderConfigMPEG4CodecSpecificDesc = 0x65736473
} BMDDeckLinkEncoderConfigurationID;
#ifndef __IDeckLinkConfiguration_FWD_DEFINED__
#define __IDeckLinkConfiguration_FWD_DEFINED__
typedef interface IDeckLinkConfiguration IDeckLinkConfiguration;
#ifdef __cplusplus
interface IDeckLinkConfiguration;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderConfiguration_FWD_DEFINED__
#define __IDeckLinkEncoderConfiguration_FWD_DEFINED__
typedef interface IDeckLinkEncoderConfiguration IDeckLinkEncoderConfiguration;
#ifdef __cplusplus
interface IDeckLinkEncoderConfiguration;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkConfiguration interface
 */
#ifndef __IDeckLinkConfiguration_INTERFACE_DEFINED__
#define __IDeckLinkConfiguration_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkConfiguration, 0x912f634b, 0x2d4e, 0x40a4, 0x8a,0xab, 0x8d,0x80,0xb7,0x3f,0x12,0x89);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("912f634b-2d4e-40a4-8aab-8d80b73f1289")
IDeckLinkConfiguration : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFlag(
        BMDDeckLinkConfigurationID cfgID,
        BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkConfigurationID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInt(
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFloat(
        BMDDeckLinkConfigurationID cfgID,
        double value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkConfigurationID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetString(
        BMDDeckLinkConfigurationID cfgID,
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkConfigurationID cfgID,
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkConfiguration, 0x912f634b, 0x2d4e, 0x40a4, 0x8a,0xab, 0x8d,0x80,0xb7,0x3f,0x12,0x89)
#endif
#else
typedef struct IDeckLinkConfigurationVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkConfiguration *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkConfiguration *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkConfiguration *This);

    /*** IDeckLinkConfiguration methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlag)(
        IDeckLinkConfiguration *This,
        BMDDeckLinkConfigurationID cfgID,
        BOOL value);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkConfiguration *This,
        BMDDeckLinkConfigurationID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *SetInt)(
        IDeckLinkConfiguration *This,
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkConfiguration *This,
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *SetFloat)(
        IDeckLinkConfiguration *This,
        BMDDeckLinkConfigurationID cfgID,
        double value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkConfiguration *This,
        BMDDeckLinkConfigurationID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *SetString)(
        IDeckLinkConfiguration *This,
        BMDDeckLinkConfigurationID cfgID,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkConfiguration *This,
        BMDDeckLinkConfigurationID cfgID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *WriteConfigurationToPreferences)(
        IDeckLinkConfiguration *This);

    END_INTERFACE
} IDeckLinkConfigurationVtbl;

interface IDeckLinkConfiguration {
    CONST_VTBL IDeckLinkConfigurationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkConfiguration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkConfiguration_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkConfiguration_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkConfiguration methods ***/
#define IDeckLinkConfiguration_SetFlag(This,cfgID,value) (This)->lpVtbl->SetFlag(This,cfgID,value)
#define IDeckLinkConfiguration_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IDeckLinkConfiguration_SetInt(This,cfgID,value) (This)->lpVtbl->SetInt(This,cfgID,value)
#define IDeckLinkConfiguration_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkConfiguration_SetFloat(This,cfgID,value) (This)->lpVtbl->SetFloat(This,cfgID,value)
#define IDeckLinkConfiguration_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IDeckLinkConfiguration_SetString(This,cfgID,value) (This)->lpVtbl->SetString(This,cfgID,value)
#define IDeckLinkConfiguration_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#define IDeckLinkConfiguration_WriteConfigurationToPreferences(This) (This)->lpVtbl->WriteConfigurationToPreferences(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_QueryInterface(IDeckLinkConfiguration* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_AddRef(IDeckLinkConfiguration* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_Release(IDeckLinkConfiguration* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkConfiguration methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_SetFlag(IDeckLinkConfiguration* This,BMDDeckLinkConfigurationID cfgID,BOOL value) {
    return This->lpVtbl->SetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_GetFlag(IDeckLinkConfiguration* This,BMDDeckLinkConfigurationID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_SetInt(IDeckLinkConfiguration* This,BMDDeckLinkConfigurationID cfgID,LONGLONG value) {
    return This->lpVtbl->SetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_GetInt(IDeckLinkConfiguration* This,BMDDeckLinkConfigurationID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_SetFloat(IDeckLinkConfiguration* This,BMDDeckLinkConfigurationID cfgID,double value) {
    return This->lpVtbl->SetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_GetFloat(IDeckLinkConfiguration* This,BMDDeckLinkConfigurationID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_SetString(IDeckLinkConfiguration* This,BMDDeckLinkConfigurationID cfgID,BSTR value) {
    return This->lpVtbl->SetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_GetString(IDeckLinkConfiguration* This,BMDDeckLinkConfigurationID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_WriteConfigurationToPreferences(IDeckLinkConfiguration* This) {
    return This->lpVtbl->WriteConfigurationToPreferences(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkConfiguration_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkEncoderConfiguration interface
 */
#ifndef __IDeckLinkEncoderConfiguration_INTERFACE_DEFINED__
#define __IDeckLinkEncoderConfiguration_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkEncoderConfiguration, 0x138050e5, 0xc60a, 0x4552, 0xbf,0x3f, 0x0f,0x35,0x80,0x49,0x32,0x7e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("138050e5-c60a-4552-bf3f-0f358049327e")
IDeckLinkEncoderConfiguration : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFlag(
        BMDDeckLinkEncoderConfigurationID cfgID,
        BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkEncoderConfigurationID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInt(
        BMDDeckLinkEncoderConfigurationID cfgID,
        LONGLONG value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkEncoderConfigurationID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFloat(
        BMDDeckLinkEncoderConfigurationID cfgID,
        double value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkEncoderConfigurationID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetString(
        BMDDeckLinkEncoderConfigurationID cfgID,
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkEncoderConfigurationID cfgID,
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        BMDDeckLinkEncoderConfigurationID cfgID,
        void *buffer,
        unsigned int *bufferSize) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkEncoderConfiguration, 0x138050e5, 0xc60a, 0x4552, 0xbf,0x3f, 0x0f,0x35,0x80,0x49,0x32,0x7e)
#endif
#else
typedef struct IDeckLinkEncoderConfigurationVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkEncoderConfiguration *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkEncoderConfiguration *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkEncoderConfiguration *This);

    /*** IDeckLinkEncoderConfiguration methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlag)(
        IDeckLinkEncoderConfiguration *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        BOOL value);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkEncoderConfiguration *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *SetInt)(
        IDeckLinkEncoderConfiguration *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        LONGLONG value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkEncoderConfiguration *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *SetFloat)(
        IDeckLinkEncoderConfiguration *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        double value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkEncoderConfiguration *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *SetString)(
        IDeckLinkEncoderConfiguration *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkEncoderConfiguration *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkEncoderConfiguration *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        void *buffer,
        unsigned int *bufferSize);

    END_INTERFACE
} IDeckLinkEncoderConfigurationVtbl;

interface IDeckLinkEncoderConfiguration {
    CONST_VTBL IDeckLinkEncoderConfigurationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkEncoderConfiguration_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkEncoderConfiguration_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkEncoderConfiguration_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkEncoderConfiguration methods ***/
#define IDeckLinkEncoderConfiguration_SetFlag(This,cfgID,value) (This)->lpVtbl->SetFlag(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_SetInt(This,cfgID,value) (This)->lpVtbl->SetInt(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_SetFloat(This,cfgID,value) (This)->lpVtbl->SetFloat(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_SetString(This,cfgID,value) (This)->lpVtbl->SetString(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_GetBytes(This,cfgID,buffer,bufferSize) (This)->lpVtbl->GetBytes(This,cfgID,buffer,bufferSize)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_QueryInterface(IDeckLinkEncoderConfiguration* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkEncoderConfiguration_AddRef(IDeckLinkEncoderConfiguration* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkEncoderConfiguration_Release(IDeckLinkEncoderConfiguration* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkEncoderConfiguration methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_SetFlag(IDeckLinkEncoderConfiguration* This,BMDDeckLinkEncoderConfigurationID cfgID,BOOL value) {
    return This->lpVtbl->SetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_GetFlag(IDeckLinkEncoderConfiguration* This,BMDDeckLinkEncoderConfigurationID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_SetInt(IDeckLinkEncoderConfiguration* This,BMDDeckLinkEncoderConfigurationID cfgID,LONGLONG value) {
    return This->lpVtbl->SetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_GetInt(IDeckLinkEncoderConfiguration* This,BMDDeckLinkEncoderConfigurationID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_SetFloat(IDeckLinkEncoderConfiguration* This,BMDDeckLinkEncoderConfigurationID cfgID,double value) {
    return This->lpVtbl->SetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_GetFloat(IDeckLinkEncoderConfiguration* This,BMDDeckLinkEncoderConfigurationID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_SetString(IDeckLinkEncoderConfiguration* This,BMDDeckLinkEncoderConfigurationID cfgID,BSTR value) {
    return This->lpVtbl->SetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_GetString(IDeckLinkEncoderConfiguration* This,BMDDeckLinkEncoderConfigurationID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_GetBytes(IDeckLinkEncoderConfiguration* This,BMDDeckLinkEncoderConfigurationID cfgID,void *buffer,unsigned int *bufferSize) {
    return This->lpVtbl->GetBytes(This,cfgID,buffer,bufferSize);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkEncoderConfiguration_INTERFACE_DEFINED__ */

typedef unsigned int BMDDeckControlStatusFlags;
typedef unsigned int BMDDeckControlExportModeOpsFlags;
#if 0
typedef enum _BMDDeckControlStatusFlags BMDDeckControlStatusFlags;
typedef enum _BMDDeckControlExportModeOpsFlags BMDDeckControlExportModeOpsFlags;
#endif
typedef enum _BMDDeckControlMode {
    bmdDeckControlNotOpened = 0x6e746f70,
    bmdDeckControlVTRControlMode = 0x76747263,
    bmdDeckControlExportMode = 0x6578706d,
    bmdDeckControlCaptureMode = 0x6361706d
} BMDDeckControlMode;
typedef enum _BMDDeckControlEvent {
    bmdDeckControlAbortedEvent = 0x61627465,
    bmdDeckControlPrepareForExportEvent = 0x70666565,
    bmdDeckControlExportCompleteEvent = 0x65786365,
    bmdDeckControlPrepareForCaptureEvent = 0x70666365,
    bmdDeckControlCaptureCompleteEvent = 0x63636576
} BMDDeckControlEvent;
typedef enum _BMDDeckControlVTRControlState {
    bmdDeckControlNotInVTRControlMode = 0x6e76636d,
    bmdDeckControlVTRControlPlaying = 0x76747270,
    bmdDeckControlVTRControlRecording = 0x76747272,
    bmdDeckControlVTRControlStill = 0x76747261,
    bmdDeckControlVTRControlShuttleForward = 0x76747366,
    bmdDeckControlVTRControlShuttleReverse = 0x76747372,
    bmdDeckControlVTRControlJogForward = 0x76746a66,
    bmdDeckControlVTRControlJogReverse = 0x76746a72,
    bmdDeckControlVTRControlStopped = 0x7674726f
} BMDDeckControlVTRControlState;
enum _BMDDeckControlStatusFlags {
    bmdDeckControlStatusDeckConnected = 1 << 0,
    bmdDeckControlStatusRemoteMode = 1 << 1,
    bmdDeckControlStatusRecordInhibited = 1 << 2,
    bmdDeckControlStatusCassetteOut = 1 << 3
};
enum _BMDDeckControlExportModeOpsFlags {
    bmdDeckControlExportModeInsertVideo = 1 << 0,
    bmdDeckControlExportModeInsertAudio1 = 1 << 1,
    bmdDeckControlExportModeInsertAudio2 = 1 << 2,
    bmdDeckControlExportModeInsertAudio3 = 1 << 3,
    bmdDeckControlExportModeInsertAudio4 = 1 << 4,
    bmdDeckControlExportModeInsertAudio5 = 1 << 5,
    bmdDeckControlExportModeInsertAudio6 = 1 << 6,
    bmdDeckControlExportModeInsertAudio7 = 1 << 7,
    bmdDeckControlExportModeInsertAudio8 = 1 << 8,
    bmdDeckControlExportModeInsertAudio9 = 1 << 9,
    bmdDeckControlExportModeInsertAudio10 = 1 << 10,
    bmdDeckControlExportModeInsertAudio11 = 1 << 11,
    bmdDeckControlExportModeInsertAudio12 = 1 << 12,
    bmdDeckControlExportModeInsertTimeCode = 1 << 13,
    bmdDeckControlExportModeInsertAssemble = 1 << 14,
    bmdDeckControlExportModeInsertPreview = 1 << 15,
    bmdDeckControlUseManualExport = 1 << 16
};
typedef enum _BMDDeckControlError {
    bmdDeckControlNoError = 0x6e6f6572,
    bmdDeckControlModeError = 0x6d6f6572,
    bmdDeckControlMissedInPointError = 0x6d696572,
    bmdDeckControlDeckTimeoutError = 0x64746572,
    bmdDeckControlCommandFailedError = 0x63666572,
    bmdDeckControlDeviceAlreadyOpenedError = 0x64616c6f,
    bmdDeckControlFailedToOpenDeviceError = 0x66646572,
    bmdDeckControlInLocalModeError = 0x6c6d6572,
    bmdDeckControlEndOfTapeError = 0x65746572,
    bmdDeckControlUserAbortError = 0x75616572,
    bmdDeckControlNoTapeInDeckError = 0x6e746572,
    bmdDeckControlNoVideoFromCardError = 0x6e766663,
    bmdDeckControlNoCommunicationError = 0x6e636f6d,
    bmdDeckControlBufferTooSmallError = 0x6274736d,
    bmdDeckControlBadChecksumError = 0x63686b73,
    bmdDeckControlUnknownError = 0x756e6572
} BMDDeckControlError;
#ifndef __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__
#define __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__
typedef interface IDeckLinkDeckControlStatusCallback IDeckLinkDeckControlStatusCallback;
#ifdef __cplusplus
interface IDeckLinkDeckControlStatusCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDeckControl_FWD_DEFINED__
#define __IDeckLinkDeckControl_FWD_DEFINED__
typedef interface IDeckLinkDeckControl IDeckLinkDeckControl;
#ifdef __cplusplus
interface IDeckLinkDeckControl;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkDeckControlStatusCallback interface
 */
#ifndef __IDeckLinkDeckControlStatusCallback_INTERFACE_DEFINED__
#define __IDeckLinkDeckControlStatusCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDeckControlStatusCallback, 0x53436ffb, 0xb434, 0x4906, 0xba,0xdc, 0xae,0x30,0x60,0xff,0xe8,0xef);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("53436ffb-b434-4906-badc-ae3060ffe8ef")
IDeckLinkDeckControlStatusCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE TimecodeUpdate(
        BMDTimecodeBCD currentTimecode) = 0;

    virtual HRESULT STDMETHODCALLTYPE VTRControlStateChanged(
        BMDDeckControlVTRControlState newState,
        BMDDeckControlError error) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeckControlEventReceived(
        BMDDeckControlEvent event,
        BMDDeckControlError error) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeckControlStatusChanged(
        BMDDeckControlStatusFlags flags,
        unsigned int mask) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDeckControlStatusCallback, 0x53436ffb, 0xb434, 0x4906, 0xba,0xdc, 0xae,0x30,0x60,0xff,0xe8,0xef)
#endif
#else
typedef struct IDeckLinkDeckControlStatusCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDeckControlStatusCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDeckControlStatusCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDeckControlStatusCallback *This);

    /*** IDeckLinkDeckControlStatusCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *TimecodeUpdate)(
        IDeckLinkDeckControlStatusCallback *This,
        BMDTimecodeBCD currentTimecode);

    HRESULT (STDMETHODCALLTYPE *VTRControlStateChanged)(
        IDeckLinkDeckControlStatusCallback *This,
        BMDDeckControlVTRControlState newState,
        BMDDeckControlError error);

    HRESULT (STDMETHODCALLTYPE *DeckControlEventReceived)(
        IDeckLinkDeckControlStatusCallback *This,
        BMDDeckControlEvent event,
        BMDDeckControlError error);

    HRESULT (STDMETHODCALLTYPE *DeckControlStatusChanged)(
        IDeckLinkDeckControlStatusCallback *This,
        BMDDeckControlStatusFlags flags,
        unsigned int mask);

    END_INTERFACE
} IDeckLinkDeckControlStatusCallbackVtbl;

interface IDeckLinkDeckControlStatusCallback {
    CONST_VTBL IDeckLinkDeckControlStatusCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDeckControlStatusCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDeckControlStatusCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDeckControlStatusCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDeckControlStatusCallback methods ***/
#define IDeckLinkDeckControlStatusCallback_TimecodeUpdate(This,currentTimecode) (This)->lpVtbl->TimecodeUpdate(This,currentTimecode)
#define IDeckLinkDeckControlStatusCallback_VTRControlStateChanged(This,newState,error) (This)->lpVtbl->VTRControlStateChanged(This,newState,error)
#define IDeckLinkDeckControlStatusCallback_DeckControlEventReceived(This,event,error) (This)->lpVtbl->DeckControlEventReceived(This,event,error)
#define IDeckLinkDeckControlStatusCallback_DeckControlStatusChanged(This,flags,mask) (This)->lpVtbl->DeckControlStatusChanged(This,flags,mask)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDeckControlStatusCallback_QueryInterface(IDeckLinkDeckControlStatusCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDeckControlStatusCallback_AddRef(IDeckLinkDeckControlStatusCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDeckControlStatusCallback_Release(IDeckLinkDeckControlStatusCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDeckControlStatusCallback methods ***/
static FORCEINLINE HRESULT IDeckLinkDeckControlStatusCallback_TimecodeUpdate(IDeckLinkDeckControlStatusCallback* This,BMDTimecodeBCD currentTimecode) {
    return This->lpVtbl->TimecodeUpdate(This,currentTimecode);
}
static FORCEINLINE HRESULT IDeckLinkDeckControlStatusCallback_VTRControlStateChanged(IDeckLinkDeckControlStatusCallback* This,BMDDeckControlVTRControlState newState,BMDDeckControlError error) {
    return This->lpVtbl->VTRControlStateChanged(This,newState,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControlStatusCallback_DeckControlEventReceived(IDeckLinkDeckControlStatusCallback* This,BMDDeckControlEvent event,BMDDeckControlError error) {
    return This->lpVtbl->DeckControlEventReceived(This,event,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControlStatusCallback_DeckControlStatusChanged(IDeckLinkDeckControlStatusCallback* This,BMDDeckControlStatusFlags flags,unsigned int mask) {
    return This->lpVtbl->DeckControlStatusChanged(This,flags,mask);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDeckControlStatusCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkDeckControl interface
 */
#ifndef __IDeckLinkDeckControl_INTERFACE_DEFINED__
#define __IDeckLinkDeckControl_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDeckControl, 0x8e1c3ace, 0x19c7, 0x4e00, 0x8b,0x92, 0xd8,0x04,0x31,0xd9,0x58,0xbe);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8e1c3ace-19c7-4e00-8b92-d80431d958be")
IDeckLinkDeckControl : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Open(
        BMDTimeScale timeScale,
        BMDTimeValue timeValue,
        BOOL timecodeIsDropFrame,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        BOOL standbyOn) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentState(
        BMDDeckControlMode *mode,
        BMDDeckControlVTRControlState *vtrControlState,
        BMDDeckControlStatusFlags *flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStandby(
        BOOL standbyOn) = 0;

    virtual HRESULT STDMETHODCALLTYPE SendCommand(
        unsigned char *inBuffer,
        unsigned int inBufferSize,
        unsigned char *outBuffer,
        unsigned int *outDataSize,
        unsigned int outBufferSize,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Play(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Stop(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE TogglePlayStop(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Eject(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GoToTimecode(
        BMDTimecodeBCD timecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE FastForward(
        BOOL viewTape,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Rewind(
        BOOL viewTape,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE StepForward(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE StepBack(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Jog(
        double rate,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Shuttle(
        double rate,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecodeString(
        BSTR *currentTimeCode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecode(
        IDeckLinkTimecode **currentTimecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecodeBCD(
        BMDTimecodeBCD *currentTimecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPreroll(
        unsigned int prerollSeconds) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPreroll(
        unsigned int *prerollSeconds) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetExportOffset(
        int exportOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetExportOffset(
        int *exportOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetManualExportOffset(
        int *deckManualExportOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCaptureOffset(
        int captureOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCaptureOffset(
        int *captureOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartExport(
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlExportModeOpsFlags exportModeOps,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartCapture(
        BOOL useVITC,
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDeviceID(
        unsigned short *deviceId,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Abort(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CrashRecordStart(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE CrashRecordStop(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkDeckControlStatusCallback *callback) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDeckControl, 0x8e1c3ace, 0x19c7, 0x4e00, 0x8b,0x92, 0xd8,0x04,0x31,0xd9,0x58,0xbe)
#endif
#else
typedef struct IDeckLinkDeckControlVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDeckControl *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDeckControl *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDeckControl *This);

    /*** IDeckLinkDeckControl methods ***/
    HRESULT (STDMETHODCALLTYPE *Open)(
        IDeckLinkDeckControl *This,
        BMDTimeScale timeScale,
        BMDTimeValue timeValue,
        BOOL timecodeIsDropFrame,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Close)(
        IDeckLinkDeckControl *This,
        BOOL standbyOn);

    HRESULT (STDMETHODCALLTYPE *GetCurrentState)(
        IDeckLinkDeckControl *This,
        BMDDeckControlMode *mode,
        BMDDeckControlVTRControlState *vtrControlState,
        BMDDeckControlStatusFlags *flags);

    HRESULT (STDMETHODCALLTYPE *SetStandby)(
        IDeckLinkDeckControl *This,
        BOOL standbyOn);

    HRESULT (STDMETHODCALLTYPE *SendCommand)(
        IDeckLinkDeckControl *This,
        unsigned char *inBuffer,
        unsigned int inBufferSize,
        unsigned char *outBuffer,
        unsigned int *outDataSize,
        unsigned int outBufferSize,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Play)(
        IDeckLinkDeckControl *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Stop)(
        IDeckLinkDeckControl *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *TogglePlayStop)(
        IDeckLinkDeckControl *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Eject)(
        IDeckLinkDeckControl *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GoToTimecode)(
        IDeckLinkDeckControl *This,
        BMDTimecodeBCD timecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *FastForward)(
        IDeckLinkDeckControl *This,
        BOOL viewTape,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Rewind)(
        IDeckLinkDeckControl *This,
        BOOL viewTape,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *StepForward)(
        IDeckLinkDeckControl *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *StepBack)(
        IDeckLinkDeckControl *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Jog)(
        IDeckLinkDeckControl *This,
        double rate,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Shuttle)(
        IDeckLinkDeckControl *This,
        double rate,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetTimecodeString)(
        IDeckLinkDeckControl *This,
        BSTR *currentTimeCode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkDeckControl *This,
        IDeckLinkTimecode **currentTimecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetTimecodeBCD)(
        IDeckLinkDeckControl *This,
        BMDTimecodeBCD *currentTimecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *SetPreroll)(
        IDeckLinkDeckControl *This,
        unsigned int prerollSeconds);

    HRESULT (STDMETHODCALLTYPE *GetPreroll)(
        IDeckLinkDeckControl *This,
        unsigned int *prerollSeconds);

    HRESULT (STDMETHODCALLTYPE *SetExportOffset)(
        IDeckLinkDeckControl *This,
        int exportOffsetFields);

    HRESULT (STDMETHODCALLTYPE *GetExportOffset)(
        IDeckLinkDeckControl *This,
        int *exportOffsetFields);

    HRESULT (STDMETHODCALLTYPE *GetManualExportOffset)(
        IDeckLinkDeckControl *This,
        int *deckManualExportOffsetFields);

    HRESULT (STDMETHODCALLTYPE *SetCaptureOffset)(
        IDeckLinkDeckControl *This,
        int captureOffsetFields);

    HRESULT (STDMETHODCALLTYPE *GetCaptureOffset)(
        IDeckLinkDeckControl *This,
        int *captureOffsetFields);

    HRESULT (STDMETHODCALLTYPE *StartExport)(
        IDeckLinkDeckControl *This,
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlExportModeOpsFlags exportModeOps,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *StartCapture)(
        IDeckLinkDeckControl *This,
        BOOL useVITC,
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetDeviceID)(
        IDeckLinkDeckControl *This,
        unsigned short *deviceId,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        IDeckLinkDeckControl *This);

    HRESULT (STDMETHODCALLTYPE *CrashRecordStart)(
        IDeckLinkDeckControl *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *CrashRecordStop)(
        IDeckLinkDeckControl *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkDeckControl *This,
        IDeckLinkDeckControlStatusCallback *callback);

    END_INTERFACE
} IDeckLinkDeckControlVtbl;

interface IDeckLinkDeckControl {
    CONST_VTBL IDeckLinkDeckControlVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDeckControl_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDeckControl_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDeckControl_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDeckControl methods ***/
#define IDeckLinkDeckControl_Open(This,timeScale,timeValue,timecodeIsDropFrame,error) (This)->lpVtbl->Open(This,timeScale,timeValue,timecodeIsDropFrame,error)
#define IDeckLinkDeckControl_Close(This,standbyOn) (This)->lpVtbl->Close(This,standbyOn)
#define IDeckLinkDeckControl_GetCurrentState(This,mode,vtrControlState,flags) (This)->lpVtbl->GetCurrentState(This,mode,vtrControlState,flags)
#define IDeckLinkDeckControl_SetStandby(This,standbyOn) (This)->lpVtbl->SetStandby(This,standbyOn)
#define IDeckLinkDeckControl_SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error) (This)->lpVtbl->SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error)
#define IDeckLinkDeckControl_Play(This,error) (This)->lpVtbl->Play(This,error)
#define IDeckLinkDeckControl_Stop(This,error) (This)->lpVtbl->Stop(This,error)
#define IDeckLinkDeckControl_TogglePlayStop(This,error) (This)->lpVtbl->TogglePlayStop(This,error)
#define IDeckLinkDeckControl_Eject(This,error) (This)->lpVtbl->Eject(This,error)
#define IDeckLinkDeckControl_GoToTimecode(This,timecode,error) (This)->lpVtbl->GoToTimecode(This,timecode,error)
#define IDeckLinkDeckControl_FastForward(This,viewTape,error) (This)->lpVtbl->FastForward(This,viewTape,error)
#define IDeckLinkDeckControl_Rewind(This,viewTape,error) (This)->lpVtbl->Rewind(This,viewTape,error)
#define IDeckLinkDeckControl_StepForward(This,error) (This)->lpVtbl->StepForward(This,error)
#define IDeckLinkDeckControl_StepBack(This,error) (This)->lpVtbl->StepBack(This,error)
#define IDeckLinkDeckControl_Jog(This,rate,error) (This)->lpVtbl->Jog(This,rate,error)
#define IDeckLinkDeckControl_Shuttle(This,rate,error) (This)->lpVtbl->Shuttle(This,rate,error)
#define IDeckLinkDeckControl_GetTimecodeString(This,currentTimeCode,error) (This)->lpVtbl->GetTimecodeString(This,currentTimeCode,error)
#define IDeckLinkDeckControl_GetTimecode(This,currentTimecode,error) (This)->lpVtbl->GetTimecode(This,currentTimecode,error)
#define IDeckLinkDeckControl_GetTimecodeBCD(This,currentTimecode,error) (This)->lpVtbl->GetTimecodeBCD(This,currentTimecode,error)
#define IDeckLinkDeckControl_SetPreroll(This,prerollSeconds) (This)->lpVtbl->SetPreroll(This,prerollSeconds)
#define IDeckLinkDeckControl_GetPreroll(This,prerollSeconds) (This)->lpVtbl->GetPreroll(This,prerollSeconds)
#define IDeckLinkDeckControl_SetExportOffset(This,exportOffsetFields) (This)->lpVtbl->SetExportOffset(This,exportOffsetFields)
#define IDeckLinkDeckControl_GetExportOffset(This,exportOffsetFields) (This)->lpVtbl->GetExportOffset(This,exportOffsetFields)
#define IDeckLinkDeckControl_GetManualExportOffset(This,deckManualExportOffsetFields) (This)->lpVtbl->GetManualExportOffset(This,deckManualExportOffsetFields)
#define IDeckLinkDeckControl_SetCaptureOffset(This,captureOffsetFields) (This)->lpVtbl->SetCaptureOffset(This,captureOffsetFields)
#define IDeckLinkDeckControl_GetCaptureOffset(This,captureOffsetFields) (This)->lpVtbl->GetCaptureOffset(This,captureOffsetFields)
#define IDeckLinkDeckControl_StartExport(This,inTimecode,outTimecode,exportModeOps,error) (This)->lpVtbl->StartExport(This,inTimecode,outTimecode,exportModeOps,error)
#define IDeckLinkDeckControl_StartCapture(This,useVITC,inTimecode,outTimecode,error) (This)->lpVtbl->StartCapture(This,useVITC,inTimecode,outTimecode,error)
#define IDeckLinkDeckControl_GetDeviceID(This,deviceId,error) (This)->lpVtbl->GetDeviceID(This,deviceId,error)
#define IDeckLinkDeckControl_Abort(This) (This)->lpVtbl->Abort(This)
#define IDeckLinkDeckControl_CrashRecordStart(This,error) (This)->lpVtbl->CrashRecordStart(This,error)
#define IDeckLinkDeckControl_CrashRecordStop(This,error) (This)->lpVtbl->CrashRecordStop(This,error)
#define IDeckLinkDeckControl_SetCallback(This,callback) (This)->lpVtbl->SetCallback(This,callback)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDeckControl_QueryInterface(IDeckLinkDeckControl* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDeckControl_AddRef(IDeckLinkDeckControl* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDeckControl_Release(IDeckLinkDeckControl* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDeckControl methods ***/
static FORCEINLINE HRESULT IDeckLinkDeckControl_Open(IDeckLinkDeckControl* This,BMDTimeScale timeScale,BMDTimeValue timeValue,BOOL timecodeIsDropFrame,BMDDeckControlError *error) {
    return This->lpVtbl->Open(This,timeScale,timeValue,timecodeIsDropFrame,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_Close(IDeckLinkDeckControl* This,BOOL standbyOn) {
    return This->lpVtbl->Close(This,standbyOn);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_GetCurrentState(IDeckLinkDeckControl* This,BMDDeckControlMode *mode,BMDDeckControlVTRControlState *vtrControlState,BMDDeckControlStatusFlags *flags) {
    return This->lpVtbl->GetCurrentState(This,mode,vtrControlState,flags);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_SetStandby(IDeckLinkDeckControl* This,BOOL standbyOn) {
    return This->lpVtbl->SetStandby(This,standbyOn);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_SendCommand(IDeckLinkDeckControl* This,unsigned char *inBuffer,unsigned int inBufferSize,unsigned char *outBuffer,unsigned int *outDataSize,unsigned int outBufferSize,BMDDeckControlError *error) {
    return This->lpVtbl->SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_Play(IDeckLinkDeckControl* This,BMDDeckControlError *error) {
    return This->lpVtbl->Play(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_Stop(IDeckLinkDeckControl* This,BMDDeckControlError *error) {
    return This->lpVtbl->Stop(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_TogglePlayStop(IDeckLinkDeckControl* This,BMDDeckControlError *error) {
    return This->lpVtbl->TogglePlayStop(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_Eject(IDeckLinkDeckControl* This,BMDDeckControlError *error) {
    return This->lpVtbl->Eject(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_GoToTimecode(IDeckLinkDeckControl* This,BMDTimecodeBCD timecode,BMDDeckControlError *error) {
    return This->lpVtbl->GoToTimecode(This,timecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_FastForward(IDeckLinkDeckControl* This,BOOL viewTape,BMDDeckControlError *error) {
    return This->lpVtbl->FastForward(This,viewTape,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_Rewind(IDeckLinkDeckControl* This,BOOL viewTape,BMDDeckControlError *error) {
    return This->lpVtbl->Rewind(This,viewTape,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_StepForward(IDeckLinkDeckControl* This,BMDDeckControlError *error) {
    return This->lpVtbl->StepForward(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_StepBack(IDeckLinkDeckControl* This,BMDDeckControlError *error) {
    return This->lpVtbl->StepBack(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_Jog(IDeckLinkDeckControl* This,double rate,BMDDeckControlError *error) {
    return This->lpVtbl->Jog(This,rate,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_Shuttle(IDeckLinkDeckControl* This,double rate,BMDDeckControlError *error) {
    return This->lpVtbl->Shuttle(This,rate,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_GetTimecodeString(IDeckLinkDeckControl* This,BSTR *currentTimeCode,BMDDeckControlError *error) {
    return This->lpVtbl->GetTimecodeString(This,currentTimeCode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_GetTimecode(IDeckLinkDeckControl* This,IDeckLinkTimecode **currentTimecode,BMDDeckControlError *error) {
    return This->lpVtbl->GetTimecode(This,currentTimecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_GetTimecodeBCD(IDeckLinkDeckControl* This,BMDTimecodeBCD *currentTimecode,BMDDeckControlError *error) {
    return This->lpVtbl->GetTimecodeBCD(This,currentTimecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_SetPreroll(IDeckLinkDeckControl* This,unsigned int prerollSeconds) {
    return This->lpVtbl->SetPreroll(This,prerollSeconds);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_GetPreroll(IDeckLinkDeckControl* This,unsigned int *prerollSeconds) {
    return This->lpVtbl->GetPreroll(This,prerollSeconds);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_SetExportOffset(IDeckLinkDeckControl* This,int exportOffsetFields) {
    return This->lpVtbl->SetExportOffset(This,exportOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_GetExportOffset(IDeckLinkDeckControl* This,int *exportOffsetFields) {
    return This->lpVtbl->GetExportOffset(This,exportOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_GetManualExportOffset(IDeckLinkDeckControl* This,int *deckManualExportOffsetFields) {
    return This->lpVtbl->GetManualExportOffset(This,deckManualExportOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_SetCaptureOffset(IDeckLinkDeckControl* This,int captureOffsetFields) {
    return This->lpVtbl->SetCaptureOffset(This,captureOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_GetCaptureOffset(IDeckLinkDeckControl* This,int *captureOffsetFields) {
    return This->lpVtbl->GetCaptureOffset(This,captureOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_StartExport(IDeckLinkDeckControl* This,BMDTimecodeBCD inTimecode,BMDTimecodeBCD outTimecode,BMDDeckControlExportModeOpsFlags exportModeOps,BMDDeckControlError *error) {
    return This->lpVtbl->StartExport(This,inTimecode,outTimecode,exportModeOps,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_StartCapture(IDeckLinkDeckControl* This,BOOL useVITC,BMDTimecodeBCD inTimecode,BMDTimecodeBCD outTimecode,BMDDeckControlError *error) {
    return This->lpVtbl->StartCapture(This,useVITC,inTimecode,outTimecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_GetDeviceID(IDeckLinkDeckControl* This,unsigned short *deviceId,BMDDeckControlError *error) {
    return This->lpVtbl->GetDeviceID(This,deviceId,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_Abort(IDeckLinkDeckControl* This) {
    return This->lpVtbl->Abort(This);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_CrashRecordStart(IDeckLinkDeckControl* This,BMDDeckControlError *error) {
    return This->lpVtbl->CrashRecordStart(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_CrashRecordStop(IDeckLinkDeckControl* This,BMDDeckControlError *error) {
    return This->lpVtbl->CrashRecordStop(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_SetCallback(IDeckLinkDeckControl* This,IDeckLinkDeckControlStatusCallback *callback) {
    return This->lpVtbl->SetCallback(This,callback);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDeckControl_INTERFACE_DEFINED__ */

#if 0
#endif
typedef enum _BMDStreamingDeviceMode {
    bmdStreamingDeviceIdle = 0x69646c65,
    bmdStreamingDeviceEncoding = 0x656e636f,
    bmdStreamingDeviceStopping = 0x73746f70,
    bmdStreamingDeviceUnknown = 0x6d756e6b
} BMDStreamingDeviceMode;
typedef enum _BMDStreamingEncodingFrameRate {
    bmdStreamingEncodedFrameRate50i = 0x65353069,
    bmdStreamingEncodedFrameRate5994i = 0x65353969,
    bmdStreamingEncodedFrameRate60i = 0x65363069,
    bmdStreamingEncodedFrameRate2398p = 0x65323370,
    bmdStreamingEncodedFrameRate24p = 0x65323470,
    bmdStreamingEncodedFrameRate25p = 0x65323570,
    bmdStreamingEncodedFrameRate2997p = 0x65323970,
    bmdStreamingEncodedFrameRate30p = 0x65333070,
    bmdStreamingEncodedFrameRate50p = 0x65353070,
    bmdStreamingEncodedFrameRate5994p = 0x65353970,
    bmdStreamingEncodedFrameRate60p = 0x65363070
} BMDStreamingEncodingFrameRate;
typedef enum _BMDStreamingEncodingSupport {
    bmdStreamingEncodingModeNotSupported = 0,
    bmdStreamingEncodingModeSupported = 1,
    bmdStreamingEncodingModeSupportedWithChanges = 2
} BMDStreamingEncodingSupport;
typedef enum _BMDStreamingVideoCodec {
    bmdStreamingVideoCodecH264 = 0x48323634
} BMDStreamingVideoCodec;
typedef enum _BMDStreamingH264Profile {
    bmdStreamingH264ProfileHigh = 0x68696768,
    bmdStreamingH264ProfileMain = 0x6d61696e,
    bmdStreamingH264ProfileBaseline = 0x62617365
} BMDStreamingH264Profile;
typedef enum _BMDStreamingH264Level {
    bmdStreamingH264Level12 = 0x6c763132,
    bmdStreamingH264Level13 = 0x6c763133,
    bmdStreamingH264Level2 = 0x6c763220,
    bmdStreamingH264Level21 = 0x6c763231,
    bmdStreamingH264Level22 = 0x6c763232,
    bmdStreamingH264Level3 = 0x6c763320,
    bmdStreamingH264Level31 = 0x6c763331,
    bmdStreamingH264Level32 = 0x6c763332,
    bmdStreamingH264Level4 = 0x6c763420,
    bmdStreamingH264Level41 = 0x6c763431,
    bmdStreamingH264Level42 = 0x6c763432
} BMDStreamingH264Level;
typedef enum _BMDStreamingH264EntropyCoding {
    bmdStreamingH264EntropyCodingCAVLC = 0x45564c43,
    bmdStreamingH264EntropyCodingCABAC = 0x45424143
} BMDStreamingH264EntropyCoding;
typedef enum _BMDStreamingAudioCodec {
    bmdStreamingAudioCodecAAC = 0x41414320
} BMDStreamingAudioCodec;
typedef enum _BMDStreamingEncodingModePropertyID {
    bmdStreamingEncodingPropertyVideoFrameRate = 0x76667274,
    bmdStreamingEncodingPropertyVideoBitRateKbps = 0x76627274,
    bmdStreamingEncodingPropertyH264Profile = 0x68707266,
    bmdStreamingEncodingPropertyH264Level = 0x686c766c,
    bmdStreamingEncodingPropertyH264EntropyCoding = 0x68656e74,
    bmdStreamingEncodingPropertyH264HasBFrames = 0x68426672,
    bmdStreamingEncodingPropertyAudioCodec = 0x61636463,
    bmdStreamingEncodingPropertyAudioSampleRate = 0x61737274,
    bmdStreamingEncodingPropertyAudioChannelCount = 0x61636863,
    bmdStreamingEncodingPropertyAudioBitRateKbps = 0x61627274
} BMDStreamingEncodingModePropertyID;
#ifndef __IBMDStreamingDeviceNotificationCallback_FWD_DEFINED__
#define __IBMDStreamingDeviceNotificationCallback_FWD_DEFINED__
typedef interface IBMDStreamingDeviceNotificationCallback IBMDStreamingDeviceNotificationCallback;
#ifdef __cplusplus
interface IBMDStreamingDeviceNotificationCallback;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingH264InputCallback_FWD_DEFINED__
#define __IBMDStreamingH264InputCallback_FWD_DEFINED__
typedef interface IBMDStreamingH264InputCallback IBMDStreamingH264InputCallback;
#ifdef __cplusplus
interface IBMDStreamingH264InputCallback;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingDiscovery_FWD_DEFINED__
#define __IBMDStreamingDiscovery_FWD_DEFINED__
typedef interface IBMDStreamingDiscovery IBMDStreamingDiscovery;
#ifdef __cplusplus
interface IBMDStreamingDiscovery;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingVideoEncodingMode_FWD_DEFINED__
#define __IBMDStreamingVideoEncodingMode_FWD_DEFINED__
typedef interface IBMDStreamingVideoEncodingMode IBMDStreamingVideoEncodingMode;
#ifdef __cplusplus
interface IBMDStreamingVideoEncodingMode;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingMutableVideoEncodingMode_FWD_DEFINED__
#define __IBMDStreamingMutableVideoEncodingMode_FWD_DEFINED__
typedef interface IBMDStreamingMutableVideoEncodingMode IBMDStreamingMutableVideoEncodingMode;
#ifdef __cplusplus
interface IBMDStreamingMutableVideoEncodingMode;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingVideoEncodingModePresetIterator_FWD_DEFINED__
#define __IBMDStreamingVideoEncodingModePresetIterator_FWD_DEFINED__
typedef interface IBMDStreamingVideoEncodingModePresetIterator IBMDStreamingVideoEncodingModePresetIterator;
#ifdef __cplusplus
interface IBMDStreamingVideoEncodingModePresetIterator;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingDeviceInput_FWD_DEFINED__
#define __IBMDStreamingDeviceInput_FWD_DEFINED__
typedef interface IBMDStreamingDeviceInput IBMDStreamingDeviceInput;
#ifdef __cplusplus
interface IBMDStreamingDeviceInput;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingH264NALPacket_FWD_DEFINED__
#define __IBMDStreamingH264NALPacket_FWD_DEFINED__
typedef interface IBMDStreamingH264NALPacket IBMDStreamingH264NALPacket;
#ifdef __cplusplus
interface IBMDStreamingH264NALPacket;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingAudioPacket_FWD_DEFINED__
#define __IBMDStreamingAudioPacket_FWD_DEFINED__
typedef interface IBMDStreamingAudioPacket IBMDStreamingAudioPacket;
#ifdef __cplusplus
interface IBMDStreamingAudioPacket;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingMPEG2TSPacket_FWD_DEFINED__
#define __IBMDStreamingMPEG2TSPacket_FWD_DEFINED__
typedef interface IBMDStreamingMPEG2TSPacket IBMDStreamingMPEG2TSPacket;
#ifdef __cplusplus
interface IBMDStreamingMPEG2TSPacket;
#endif /* __cplusplus */
#endif

#ifndef __IBMDStreamingH264NALParser_FWD_DEFINED__
#define __IBMDStreamingH264NALParser_FWD_DEFINED__
typedef interface IBMDStreamingH264NALParser IBMDStreamingH264NALParser;
#ifdef __cplusplus
interface IBMDStreamingH264NALParser;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IBMDStreamingDeviceNotificationCallback interface
 */
#ifndef __IBMDStreamingDeviceNotificationCallback_INTERFACE_DEFINED__
#define __IBMDStreamingDeviceNotificationCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingDeviceNotificationCallback, 0xf9531d64, 0x3305, 0x4b29, 0xa3,0x87, 0x7f,0x74,0xbb,0x0d,0x0e,0x84);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f9531d64-3305-4b29-a387-7f74bb0d0e84")
IBMDStreamingDeviceNotificationCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE StreamingDeviceArrived(
        IDeckLink *device) = 0;

    virtual HRESULT STDMETHODCALLTYPE StreamingDeviceRemoved(
        IDeckLink *device) = 0;

    virtual HRESULT STDMETHODCALLTYPE StreamingDeviceModeChanged(
        IDeckLink *device,
        BMDStreamingDeviceMode mode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingDeviceNotificationCallback, 0xf9531d64, 0x3305, 0x4b29, 0xa3,0x87, 0x7f,0x74,0xbb,0x0d,0x0e,0x84)
#endif
#else
typedef struct IBMDStreamingDeviceNotificationCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingDeviceNotificationCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingDeviceNotificationCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingDeviceNotificationCallback *This);

    /*** IBMDStreamingDeviceNotificationCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *StreamingDeviceArrived)(
        IBMDStreamingDeviceNotificationCallback *This,
        IDeckLink *device);

    HRESULT (STDMETHODCALLTYPE *StreamingDeviceRemoved)(
        IBMDStreamingDeviceNotificationCallback *This,
        IDeckLink *device);

    HRESULT (STDMETHODCALLTYPE *StreamingDeviceModeChanged)(
        IBMDStreamingDeviceNotificationCallback *This,
        IDeckLink *device,
        BMDStreamingDeviceMode mode);

    END_INTERFACE
} IBMDStreamingDeviceNotificationCallbackVtbl;

interface IBMDStreamingDeviceNotificationCallback {
    CONST_VTBL IBMDStreamingDeviceNotificationCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingDeviceNotificationCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingDeviceNotificationCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingDeviceNotificationCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingDeviceNotificationCallback methods ***/
#define IBMDStreamingDeviceNotificationCallback_StreamingDeviceArrived(This,device) (This)->lpVtbl->StreamingDeviceArrived(This,device)
#define IBMDStreamingDeviceNotificationCallback_StreamingDeviceRemoved(This,device) (This)->lpVtbl->StreamingDeviceRemoved(This,device)
#define IBMDStreamingDeviceNotificationCallback_StreamingDeviceModeChanged(This,device,mode) (This)->lpVtbl->StreamingDeviceModeChanged(This,device,mode)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingDeviceNotificationCallback_QueryInterface(IBMDStreamingDeviceNotificationCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingDeviceNotificationCallback_AddRef(IBMDStreamingDeviceNotificationCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingDeviceNotificationCallback_Release(IBMDStreamingDeviceNotificationCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingDeviceNotificationCallback methods ***/
static FORCEINLINE HRESULT IBMDStreamingDeviceNotificationCallback_StreamingDeviceArrived(IBMDStreamingDeviceNotificationCallback* This,IDeckLink *device) {
    return This->lpVtbl->StreamingDeviceArrived(This,device);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceNotificationCallback_StreamingDeviceRemoved(IBMDStreamingDeviceNotificationCallback* This,IDeckLink *device) {
    return This->lpVtbl->StreamingDeviceRemoved(This,device);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceNotificationCallback_StreamingDeviceModeChanged(IBMDStreamingDeviceNotificationCallback* This,IDeckLink *device,BMDStreamingDeviceMode mode) {
    return This->lpVtbl->StreamingDeviceModeChanged(This,device,mode);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingDeviceNotificationCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBMDStreamingH264InputCallback interface
 */
#ifndef __IBMDStreamingH264InputCallback_INTERFACE_DEFINED__
#define __IBMDStreamingH264InputCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingH264InputCallback, 0x823c475f, 0x55ae, 0x46f9, 0x89,0x0c, 0x53,0x7c,0xc5,0xce,0xdc,0xca);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("823c475f-55ae-46f9-890c-537cc5cedcca")
IBMDStreamingH264InputCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE H264NALPacketArrived(
        IBMDStreamingH264NALPacket *nalPacket) = 0;

    virtual HRESULT STDMETHODCALLTYPE H264AudioPacketArrived(
        IBMDStreamingAudioPacket *audioPacket) = 0;

    virtual HRESULT STDMETHODCALLTYPE MPEG2TSPacketArrived(
        IBMDStreamingMPEG2TSPacket *tsPacket) = 0;

    virtual HRESULT STDMETHODCALLTYPE H264VideoInputConnectorScanningChanged(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE H264VideoInputConnectorChanged(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE H264VideoInputModeChanged(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingH264InputCallback, 0x823c475f, 0x55ae, 0x46f9, 0x89,0x0c, 0x53,0x7c,0xc5,0xce,0xdc,0xca)
#endif
#else
typedef struct IBMDStreamingH264InputCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingH264InputCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingH264InputCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingH264InputCallback *This);

    /*** IBMDStreamingH264InputCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *H264NALPacketArrived)(
        IBMDStreamingH264InputCallback *This,
        IBMDStreamingH264NALPacket *nalPacket);

    HRESULT (STDMETHODCALLTYPE *H264AudioPacketArrived)(
        IBMDStreamingH264InputCallback *This,
        IBMDStreamingAudioPacket *audioPacket);

    HRESULT (STDMETHODCALLTYPE *MPEG2TSPacketArrived)(
        IBMDStreamingH264InputCallback *This,
        IBMDStreamingMPEG2TSPacket *tsPacket);

    HRESULT (STDMETHODCALLTYPE *H264VideoInputConnectorScanningChanged)(
        IBMDStreamingH264InputCallback *This);

    HRESULT (STDMETHODCALLTYPE *H264VideoInputConnectorChanged)(
        IBMDStreamingH264InputCallback *This);

    HRESULT (STDMETHODCALLTYPE *H264VideoInputModeChanged)(
        IBMDStreamingH264InputCallback *This);

    END_INTERFACE
} IBMDStreamingH264InputCallbackVtbl;

interface IBMDStreamingH264InputCallback {
    CONST_VTBL IBMDStreamingH264InputCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingH264InputCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingH264InputCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingH264InputCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingH264InputCallback methods ***/
#define IBMDStreamingH264InputCallback_H264NALPacketArrived(This,nalPacket) (This)->lpVtbl->H264NALPacketArrived(This,nalPacket)
#define IBMDStreamingH264InputCallback_H264AudioPacketArrived(This,audioPacket) (This)->lpVtbl->H264AudioPacketArrived(This,audioPacket)
#define IBMDStreamingH264InputCallback_MPEG2TSPacketArrived(This,tsPacket) (This)->lpVtbl->MPEG2TSPacketArrived(This,tsPacket)
#define IBMDStreamingH264InputCallback_H264VideoInputConnectorScanningChanged(This) (This)->lpVtbl->H264VideoInputConnectorScanningChanged(This)
#define IBMDStreamingH264InputCallback_H264VideoInputConnectorChanged(This) (This)->lpVtbl->H264VideoInputConnectorChanged(This)
#define IBMDStreamingH264InputCallback_H264VideoInputModeChanged(This) (This)->lpVtbl->H264VideoInputModeChanged(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingH264InputCallback_QueryInterface(IBMDStreamingH264InputCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingH264InputCallback_AddRef(IBMDStreamingH264InputCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingH264InputCallback_Release(IBMDStreamingH264InputCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingH264InputCallback methods ***/
static FORCEINLINE HRESULT IBMDStreamingH264InputCallback_H264NALPacketArrived(IBMDStreamingH264InputCallback* This,IBMDStreamingH264NALPacket *nalPacket) {
    return This->lpVtbl->H264NALPacketArrived(This,nalPacket);
}
static FORCEINLINE HRESULT IBMDStreamingH264InputCallback_H264AudioPacketArrived(IBMDStreamingH264InputCallback* This,IBMDStreamingAudioPacket *audioPacket) {
    return This->lpVtbl->H264AudioPacketArrived(This,audioPacket);
}
static FORCEINLINE HRESULT IBMDStreamingH264InputCallback_MPEG2TSPacketArrived(IBMDStreamingH264InputCallback* This,IBMDStreamingMPEG2TSPacket *tsPacket) {
    return This->lpVtbl->MPEG2TSPacketArrived(This,tsPacket);
}
static FORCEINLINE HRESULT IBMDStreamingH264InputCallback_H264VideoInputConnectorScanningChanged(IBMDStreamingH264InputCallback* This) {
    return This->lpVtbl->H264VideoInputConnectorScanningChanged(This);
}
static FORCEINLINE HRESULT IBMDStreamingH264InputCallback_H264VideoInputConnectorChanged(IBMDStreamingH264InputCallback* This) {
    return This->lpVtbl->H264VideoInputConnectorChanged(This);
}
static FORCEINLINE HRESULT IBMDStreamingH264InputCallback_H264VideoInputModeChanged(IBMDStreamingH264InputCallback* This) {
    return This->lpVtbl->H264VideoInputModeChanged(This);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingH264InputCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBMDStreamingDiscovery interface
 */
#ifndef __IBMDStreamingDiscovery_INTERFACE_DEFINED__
#define __IBMDStreamingDiscovery_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingDiscovery, 0x2c837444, 0xf989, 0x4d87, 0x90,0x1a, 0x47,0xc8,0xa3,0x6d,0x09,0x6d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2c837444-f989-4d87-901a-47c8a36d096d")
IBMDStreamingDiscovery : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InstallDeviceNotifications(
        IBMDStreamingDeviceNotificationCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE UninstallDeviceNotifications(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingDiscovery, 0x2c837444, 0xf989, 0x4d87, 0x90,0x1a, 0x47,0xc8,0xa3,0x6d,0x09,0x6d)
#endif
#else
typedef struct IBMDStreamingDiscoveryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingDiscovery *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingDiscovery *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingDiscovery *This);

    /*** IBMDStreamingDiscovery methods ***/
    HRESULT (STDMETHODCALLTYPE *InstallDeviceNotifications)(
        IBMDStreamingDiscovery *This,
        IBMDStreamingDeviceNotificationCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *UninstallDeviceNotifications)(
        IBMDStreamingDiscovery *This);

    END_INTERFACE
} IBMDStreamingDiscoveryVtbl;

interface IBMDStreamingDiscovery {
    CONST_VTBL IBMDStreamingDiscoveryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingDiscovery_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingDiscovery_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingDiscovery_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingDiscovery methods ***/
#define IBMDStreamingDiscovery_InstallDeviceNotifications(This,theCallback) (This)->lpVtbl->InstallDeviceNotifications(This,theCallback)
#define IBMDStreamingDiscovery_UninstallDeviceNotifications(This) (This)->lpVtbl->UninstallDeviceNotifications(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingDiscovery_QueryInterface(IBMDStreamingDiscovery* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingDiscovery_AddRef(IBMDStreamingDiscovery* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingDiscovery_Release(IBMDStreamingDiscovery* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingDiscovery methods ***/
static FORCEINLINE HRESULT IBMDStreamingDiscovery_InstallDeviceNotifications(IBMDStreamingDiscovery* This,IBMDStreamingDeviceNotificationCallback *theCallback) {
    return This->lpVtbl->InstallDeviceNotifications(This,theCallback);
}
static FORCEINLINE HRESULT IBMDStreamingDiscovery_UninstallDeviceNotifications(IBMDStreamingDiscovery* This) {
    return This->lpVtbl->UninstallDeviceNotifications(This);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingDiscovery_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBMDStreamingVideoEncodingMode interface
 */
#ifndef __IBMDStreamingVideoEncodingMode_INTERFACE_DEFINED__
#define __IBMDStreamingVideoEncodingMode_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingVideoEncodingMode, 0x1ab8035b, 0xcd13, 0x458d, 0xb6,0xdf, 0x5e,0x8f,0x7c,0x21,0x41,0xd9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1ab8035b-cd13-458d-b6df-5e8f7c2141d9")
IBMDStreamingVideoEncodingMode : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetName(
        BSTR *name) = 0;

    virtual unsigned int STDMETHODCALLTYPE GetPresetID(
        ) = 0;

    virtual unsigned int STDMETHODCALLTYPE GetSourcePositionX(
        ) = 0;

    virtual unsigned int STDMETHODCALLTYPE GetSourcePositionY(
        ) = 0;

    virtual unsigned int STDMETHODCALLTYPE GetSourceWidth(
        ) = 0;

    virtual unsigned int STDMETHODCALLTYPE GetSourceHeight(
        ) = 0;

    virtual unsigned int STDMETHODCALLTYPE GetDestWidth(
        ) = 0;

    virtual unsigned int STDMETHODCALLTYPE GetDestHeight(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDStreamingEncodingModePropertyID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDStreamingEncodingModePropertyID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDStreamingEncodingModePropertyID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDStreamingEncodingModePropertyID cfgID,
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateMutableVideoEncodingMode(
        IBMDStreamingMutableVideoEncodingMode **newEncodingMode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingVideoEncodingMode, 0x1ab8035b, 0xcd13, 0x458d, 0xb6,0xdf, 0x5e,0x8f,0x7c,0x21,0x41,0xd9)
#endif
#else
typedef struct IBMDStreamingVideoEncodingModeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingVideoEncodingMode *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingVideoEncodingMode *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingVideoEncodingMode *This);

    /*** IBMDStreamingVideoEncodingMode methods ***/
    HRESULT (STDMETHODCALLTYPE *GetName)(
        IBMDStreamingVideoEncodingMode *This,
        BSTR *name);

    unsigned int (STDMETHODCALLTYPE *GetPresetID)(
        IBMDStreamingVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetSourcePositionX)(
        IBMDStreamingVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetSourcePositionY)(
        IBMDStreamingVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetSourceWidth)(
        IBMDStreamingVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetSourceHeight)(
        IBMDStreamingVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetDestWidth)(
        IBMDStreamingVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetDestHeight)(
        IBMDStreamingVideoEncodingMode *This);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IBMDStreamingVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IBMDStreamingVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IBMDStreamingVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IBMDStreamingVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *CreateMutableVideoEncodingMode)(
        IBMDStreamingVideoEncodingMode *This,
        IBMDStreamingMutableVideoEncodingMode **newEncodingMode);

    END_INTERFACE
} IBMDStreamingVideoEncodingModeVtbl;

interface IBMDStreamingVideoEncodingMode {
    CONST_VTBL IBMDStreamingVideoEncodingModeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingVideoEncodingMode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingVideoEncodingMode_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingVideoEncodingMode_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingVideoEncodingMode methods ***/
#define IBMDStreamingVideoEncodingMode_GetName(This,name) (This)->lpVtbl->GetName(This,name)
#define IBMDStreamingVideoEncodingMode_GetPresetID(This) (This)->lpVtbl->GetPresetID(This)
#define IBMDStreamingVideoEncodingMode_GetSourcePositionX(This) (This)->lpVtbl->GetSourcePositionX(This)
#define IBMDStreamingVideoEncodingMode_GetSourcePositionY(This) (This)->lpVtbl->GetSourcePositionY(This)
#define IBMDStreamingVideoEncodingMode_GetSourceWidth(This) (This)->lpVtbl->GetSourceWidth(This)
#define IBMDStreamingVideoEncodingMode_GetSourceHeight(This) (This)->lpVtbl->GetSourceHeight(This)
#define IBMDStreamingVideoEncodingMode_GetDestWidth(This) (This)->lpVtbl->GetDestWidth(This)
#define IBMDStreamingVideoEncodingMode_GetDestHeight(This) (This)->lpVtbl->GetDestHeight(This)
#define IBMDStreamingVideoEncodingMode_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IBMDStreamingVideoEncodingMode_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IBMDStreamingVideoEncodingMode_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IBMDStreamingVideoEncodingMode_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#define IBMDStreamingVideoEncodingMode_CreateMutableVideoEncodingMode(This,newEncodingMode) (This)->lpVtbl->CreateMutableVideoEncodingMode(This,newEncodingMode)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingVideoEncodingMode_QueryInterface(IBMDStreamingVideoEncodingMode* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingVideoEncodingMode_AddRef(IBMDStreamingVideoEncodingMode* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingVideoEncodingMode_Release(IBMDStreamingVideoEncodingMode* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingVideoEncodingMode methods ***/
static FORCEINLINE HRESULT IBMDStreamingVideoEncodingMode_GetName(IBMDStreamingVideoEncodingMode* This,BSTR *name) {
    return This->lpVtbl->GetName(This,name);
}
static FORCEINLINE unsigned int IBMDStreamingVideoEncodingMode_GetPresetID(IBMDStreamingVideoEncodingMode* This) {
    return This->lpVtbl->GetPresetID(This);
}
static FORCEINLINE unsigned int IBMDStreamingVideoEncodingMode_GetSourcePositionX(IBMDStreamingVideoEncodingMode* This) {
    return This->lpVtbl->GetSourcePositionX(This);
}
static FORCEINLINE unsigned int IBMDStreamingVideoEncodingMode_GetSourcePositionY(IBMDStreamingVideoEncodingMode* This) {
    return This->lpVtbl->GetSourcePositionY(This);
}
static FORCEINLINE unsigned int IBMDStreamingVideoEncodingMode_GetSourceWidth(IBMDStreamingVideoEncodingMode* This) {
    return This->lpVtbl->GetSourceWidth(This);
}
static FORCEINLINE unsigned int IBMDStreamingVideoEncodingMode_GetSourceHeight(IBMDStreamingVideoEncodingMode* This) {
    return This->lpVtbl->GetSourceHeight(This);
}
static FORCEINLINE unsigned int IBMDStreamingVideoEncodingMode_GetDestWidth(IBMDStreamingVideoEncodingMode* This) {
    return This->lpVtbl->GetDestWidth(This);
}
static FORCEINLINE unsigned int IBMDStreamingVideoEncodingMode_GetDestHeight(IBMDStreamingVideoEncodingMode* This) {
    return This->lpVtbl->GetDestHeight(This);
}
static FORCEINLINE HRESULT IBMDStreamingVideoEncodingMode_GetFlag(IBMDStreamingVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingVideoEncodingMode_GetInt(IBMDStreamingVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingVideoEncodingMode_GetFloat(IBMDStreamingVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingVideoEncodingMode_GetString(IBMDStreamingVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingVideoEncodingMode_CreateMutableVideoEncodingMode(IBMDStreamingVideoEncodingMode* This,IBMDStreamingMutableVideoEncodingMode **newEncodingMode) {
    return This->lpVtbl->CreateMutableVideoEncodingMode(This,newEncodingMode);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingVideoEncodingMode_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBMDStreamingMutableVideoEncodingMode interface
 */
#ifndef __IBMDStreamingMutableVideoEncodingMode_INTERFACE_DEFINED__
#define __IBMDStreamingMutableVideoEncodingMode_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingMutableVideoEncodingMode, 0x19bf7d90, 0x1e0a, 0x400d, 0xb2,0xc6, 0xff,0xc4,0xe7,0x8a,0xd4,0x9d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("19bf7d90-1e0a-400d-b2c6-ffc4e78ad49d")
IBMDStreamingMutableVideoEncodingMode : public IBMDStreamingVideoEncodingMode
{
    virtual HRESULT STDMETHODCALLTYPE SetSourceRect(
        unsigned int posX,
        unsigned int posY,
        unsigned int width,
        unsigned int height) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDestSize(
        unsigned int width,
        unsigned int height) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFlag(
        BMDStreamingEncodingModePropertyID cfgID,
        BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInt(
        BMDStreamingEncodingModePropertyID cfgID,
        LONGLONG value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFloat(
        BMDStreamingEncodingModePropertyID cfgID,
        double value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetString(
        BMDStreamingEncodingModePropertyID cfgID,
        BSTR value) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingMutableVideoEncodingMode, 0x19bf7d90, 0x1e0a, 0x400d, 0xb2,0xc6, 0xff,0xc4,0xe7,0x8a,0xd4,0x9d)
#endif
#else
typedef struct IBMDStreamingMutableVideoEncodingModeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingMutableVideoEncodingMode *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingMutableVideoEncodingMode *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingMutableVideoEncodingMode *This);

    /*** IBMDStreamingVideoEncodingMode methods ***/
    HRESULT (STDMETHODCALLTYPE *GetName)(
        IBMDStreamingMutableVideoEncodingMode *This,
        BSTR *name);

    unsigned int (STDMETHODCALLTYPE *GetPresetID)(
        IBMDStreamingMutableVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetSourcePositionX)(
        IBMDStreamingMutableVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetSourcePositionY)(
        IBMDStreamingMutableVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetSourceWidth)(
        IBMDStreamingMutableVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetSourceHeight)(
        IBMDStreamingMutableVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetDestWidth)(
        IBMDStreamingMutableVideoEncodingMode *This);

    unsigned int (STDMETHODCALLTYPE *GetDestHeight)(
        IBMDStreamingMutableVideoEncodingMode *This);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IBMDStreamingMutableVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IBMDStreamingMutableVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IBMDStreamingMutableVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IBMDStreamingMutableVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *CreateMutableVideoEncodingMode)(
        IBMDStreamingMutableVideoEncodingMode *This,
        IBMDStreamingMutableVideoEncodingMode **newEncodingMode);

    /*** IBMDStreamingMutableVideoEncodingMode methods ***/
    HRESULT (STDMETHODCALLTYPE *SetSourceRect)(
        IBMDStreamingMutableVideoEncodingMode *This,
        unsigned int posX,
        unsigned int posY,
        unsigned int width,
        unsigned int height);

    HRESULT (STDMETHODCALLTYPE *SetDestSize)(
        IBMDStreamingMutableVideoEncodingMode *This,
        unsigned int width,
        unsigned int height);

    HRESULT (STDMETHODCALLTYPE *SetFlag)(
        IBMDStreamingMutableVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        BOOL value);

    HRESULT (STDMETHODCALLTYPE *SetInt)(
        IBMDStreamingMutableVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        LONGLONG value);

    HRESULT (STDMETHODCALLTYPE *SetFloat)(
        IBMDStreamingMutableVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        double value);

    HRESULT (STDMETHODCALLTYPE *SetString)(
        IBMDStreamingMutableVideoEncodingMode *This,
        BMDStreamingEncodingModePropertyID cfgID,
        BSTR value);

    END_INTERFACE
} IBMDStreamingMutableVideoEncodingModeVtbl;

interface IBMDStreamingMutableVideoEncodingMode {
    CONST_VTBL IBMDStreamingMutableVideoEncodingModeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingMutableVideoEncodingMode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingMutableVideoEncodingMode_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingMutableVideoEncodingMode_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingVideoEncodingMode methods ***/
#define IBMDStreamingMutableVideoEncodingMode_GetName(This,name) (This)->lpVtbl->GetName(This,name)
#define IBMDStreamingMutableVideoEncodingMode_GetPresetID(This) (This)->lpVtbl->GetPresetID(This)
#define IBMDStreamingMutableVideoEncodingMode_GetSourcePositionX(This) (This)->lpVtbl->GetSourcePositionX(This)
#define IBMDStreamingMutableVideoEncodingMode_GetSourcePositionY(This) (This)->lpVtbl->GetSourcePositionY(This)
#define IBMDStreamingMutableVideoEncodingMode_GetSourceWidth(This) (This)->lpVtbl->GetSourceWidth(This)
#define IBMDStreamingMutableVideoEncodingMode_GetSourceHeight(This) (This)->lpVtbl->GetSourceHeight(This)
#define IBMDStreamingMutableVideoEncodingMode_GetDestWidth(This) (This)->lpVtbl->GetDestWidth(This)
#define IBMDStreamingMutableVideoEncodingMode_GetDestHeight(This) (This)->lpVtbl->GetDestHeight(This)
#define IBMDStreamingMutableVideoEncodingMode_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IBMDStreamingMutableVideoEncodingMode_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IBMDStreamingMutableVideoEncodingMode_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IBMDStreamingMutableVideoEncodingMode_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#define IBMDStreamingMutableVideoEncodingMode_CreateMutableVideoEncodingMode(This,newEncodingMode) (This)->lpVtbl->CreateMutableVideoEncodingMode(This,newEncodingMode)
/*** IBMDStreamingMutableVideoEncodingMode methods ***/
#define IBMDStreamingMutableVideoEncodingMode_SetSourceRect(This,posX,posY,width,height) (This)->lpVtbl->SetSourceRect(This,posX,posY,width,height)
#define IBMDStreamingMutableVideoEncodingMode_SetDestSize(This,width,height) (This)->lpVtbl->SetDestSize(This,width,height)
#define IBMDStreamingMutableVideoEncodingMode_SetFlag(This,cfgID,value) (This)->lpVtbl->SetFlag(This,cfgID,value)
#define IBMDStreamingMutableVideoEncodingMode_SetInt(This,cfgID,value) (This)->lpVtbl->SetInt(This,cfgID,value)
#define IBMDStreamingMutableVideoEncodingMode_SetFloat(This,cfgID,value) (This)->lpVtbl->SetFloat(This,cfgID,value)
#define IBMDStreamingMutableVideoEncodingMode_SetString(This,cfgID,value) (This)->lpVtbl->SetString(This,cfgID,value)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_QueryInterface(IBMDStreamingMutableVideoEncodingMode* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingMutableVideoEncodingMode_AddRef(IBMDStreamingMutableVideoEncodingMode* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingMutableVideoEncodingMode_Release(IBMDStreamingMutableVideoEncodingMode* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingVideoEncodingMode methods ***/
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_GetName(IBMDStreamingMutableVideoEncodingMode* This,BSTR *name) {
    return This->lpVtbl->GetName(This,name);
}
static FORCEINLINE unsigned int IBMDStreamingMutableVideoEncodingMode_GetPresetID(IBMDStreamingMutableVideoEncodingMode* This) {
    return This->lpVtbl->GetPresetID(This);
}
static FORCEINLINE unsigned int IBMDStreamingMutableVideoEncodingMode_GetSourcePositionX(IBMDStreamingMutableVideoEncodingMode* This) {
    return This->lpVtbl->GetSourcePositionX(This);
}
static FORCEINLINE unsigned int IBMDStreamingMutableVideoEncodingMode_GetSourcePositionY(IBMDStreamingMutableVideoEncodingMode* This) {
    return This->lpVtbl->GetSourcePositionY(This);
}
static FORCEINLINE unsigned int IBMDStreamingMutableVideoEncodingMode_GetSourceWidth(IBMDStreamingMutableVideoEncodingMode* This) {
    return This->lpVtbl->GetSourceWidth(This);
}
static FORCEINLINE unsigned int IBMDStreamingMutableVideoEncodingMode_GetSourceHeight(IBMDStreamingMutableVideoEncodingMode* This) {
    return This->lpVtbl->GetSourceHeight(This);
}
static FORCEINLINE unsigned int IBMDStreamingMutableVideoEncodingMode_GetDestWidth(IBMDStreamingMutableVideoEncodingMode* This) {
    return This->lpVtbl->GetDestWidth(This);
}
static FORCEINLINE unsigned int IBMDStreamingMutableVideoEncodingMode_GetDestHeight(IBMDStreamingMutableVideoEncodingMode* This) {
    return This->lpVtbl->GetDestHeight(This);
}
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_GetFlag(IBMDStreamingMutableVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_GetInt(IBMDStreamingMutableVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_GetFloat(IBMDStreamingMutableVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_GetString(IBMDStreamingMutableVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_CreateMutableVideoEncodingMode(IBMDStreamingMutableVideoEncodingMode* This,IBMDStreamingMutableVideoEncodingMode **newEncodingMode) {
    return This->lpVtbl->CreateMutableVideoEncodingMode(This,newEncodingMode);
}
/*** IBMDStreamingMutableVideoEncodingMode methods ***/
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_SetSourceRect(IBMDStreamingMutableVideoEncodingMode* This,unsigned int posX,unsigned int posY,unsigned int width,unsigned int height) {
    return This->lpVtbl->SetSourceRect(This,posX,posY,width,height);
}
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_SetDestSize(IBMDStreamingMutableVideoEncodingMode* This,unsigned int width,unsigned int height) {
    return This->lpVtbl->SetDestSize(This,width,height);
}
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_SetFlag(IBMDStreamingMutableVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,BOOL value) {
    return This->lpVtbl->SetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_SetInt(IBMDStreamingMutableVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,LONGLONG value) {
    return This->lpVtbl->SetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_SetFloat(IBMDStreamingMutableVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,double value) {
    return This->lpVtbl->SetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IBMDStreamingMutableVideoEncodingMode_SetString(IBMDStreamingMutableVideoEncodingMode* This,BMDStreamingEncodingModePropertyID cfgID,BSTR value) {
    return This->lpVtbl->SetString(This,cfgID,value);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingMutableVideoEncodingMode_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBMDStreamingVideoEncodingModePresetIterator interface
 */
#ifndef __IBMDStreamingVideoEncodingModePresetIterator_INTERFACE_DEFINED__
#define __IBMDStreamingVideoEncodingModePresetIterator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingVideoEncodingModePresetIterator, 0x7ac731a3, 0xc950, 0x4ad0, 0x80,0x4a, 0x83,0x77,0xaa,0x51,0xc6,0xc4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7ac731a3-c950-4ad0-804a-8377aa51c6c4")
IBMDStreamingVideoEncodingModePresetIterator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        IBMDStreamingVideoEncodingMode **videoEncodingMode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingVideoEncodingModePresetIterator, 0x7ac731a3, 0xc950, 0x4ad0, 0x80,0x4a, 0x83,0x77,0xaa,0x51,0xc6,0xc4)
#endif
#else
typedef struct IBMDStreamingVideoEncodingModePresetIteratorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingVideoEncodingModePresetIterator *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingVideoEncodingModePresetIterator *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingVideoEncodingModePresetIterator *This);

    /*** IBMDStreamingVideoEncodingModePresetIterator methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IBMDStreamingVideoEncodingModePresetIterator *This,
        IBMDStreamingVideoEncodingMode **videoEncodingMode);

    END_INTERFACE
} IBMDStreamingVideoEncodingModePresetIteratorVtbl;

interface IBMDStreamingVideoEncodingModePresetIterator {
    CONST_VTBL IBMDStreamingVideoEncodingModePresetIteratorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingVideoEncodingModePresetIterator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingVideoEncodingModePresetIterator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingVideoEncodingModePresetIterator_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingVideoEncodingModePresetIterator methods ***/
#define IBMDStreamingVideoEncodingModePresetIterator_Next(This,videoEncodingMode) (This)->lpVtbl->Next(This,videoEncodingMode)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingVideoEncodingModePresetIterator_QueryInterface(IBMDStreamingVideoEncodingModePresetIterator* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingVideoEncodingModePresetIterator_AddRef(IBMDStreamingVideoEncodingModePresetIterator* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingVideoEncodingModePresetIterator_Release(IBMDStreamingVideoEncodingModePresetIterator* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingVideoEncodingModePresetIterator methods ***/
static FORCEINLINE HRESULT IBMDStreamingVideoEncodingModePresetIterator_Next(IBMDStreamingVideoEncodingModePresetIterator* This,IBMDStreamingVideoEncodingMode **videoEncodingMode) {
    return This->lpVtbl->Next(This,videoEncodingMode);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingVideoEncodingModePresetIterator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBMDStreamingDeviceInput interface
 */
#ifndef __IBMDStreamingDeviceInput_INTERFACE_DEFINED__
#define __IBMDStreamingDeviceInput_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingDeviceInput, 0x24b6b6ec, 0x1727, 0x44bb, 0x98,0x18, 0x34,0xff,0x08,0x6a,0xcf,0x98);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("24b6b6ec-1727-44bb-9818-34ff086acf98")
IBMDStreamingDeviceInput : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoInputMode(
        BMDDisplayMode inputMode,
        BOOL *result) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVideoInputModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoInputMode(
        BMDDisplayMode inputMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentDetectedVideoInputMode(
        BMDDisplayMode *detectedMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVideoEncodingMode(
        IBMDStreamingVideoEncodingMode **encodingMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVideoEncodingModePresetIterator(
        BMDDisplayMode inputMode,
        IBMDStreamingVideoEncodingModePresetIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoEncodingMode(
        BMDDisplayMode inputMode,
        IBMDStreamingVideoEncodingMode *encodingMode,
        BMDStreamingEncodingSupport *result,
        IBMDStreamingVideoEncodingMode **changedEncodingMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoEncodingMode(
        IBMDStreamingVideoEncodingMode *encodingMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartCapture(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopCapture(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IUnknown *theCallback) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingDeviceInput, 0x24b6b6ec, 0x1727, 0x44bb, 0x98,0x18, 0x34,0xff,0x08,0x6a,0xcf,0x98)
#endif
#else
typedef struct IBMDStreamingDeviceInputVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingDeviceInput *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingDeviceInput *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingDeviceInput *This);

    /*** IBMDStreamingDeviceInput methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoInputMode)(
        IBMDStreamingDeviceInput *This,
        BMDDisplayMode inputMode,
        BOOL *result);

    HRESULT (STDMETHODCALLTYPE *GetVideoInputModeIterator)(
        IBMDStreamingDeviceInput *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *SetVideoInputMode)(
        IBMDStreamingDeviceInput *This,
        BMDDisplayMode inputMode);

    HRESULT (STDMETHODCALLTYPE *GetCurrentDetectedVideoInputMode)(
        IBMDStreamingDeviceInput *This,
        BMDDisplayMode *detectedMode);

    HRESULT (STDMETHODCALLTYPE *GetVideoEncodingMode)(
        IBMDStreamingDeviceInput *This,
        IBMDStreamingVideoEncodingMode **encodingMode);

    HRESULT (STDMETHODCALLTYPE *GetVideoEncodingModePresetIterator)(
        IBMDStreamingDeviceInput *This,
        BMDDisplayMode inputMode,
        IBMDStreamingVideoEncodingModePresetIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoEncodingMode)(
        IBMDStreamingDeviceInput *This,
        BMDDisplayMode inputMode,
        IBMDStreamingVideoEncodingMode *encodingMode,
        BMDStreamingEncodingSupport *result,
        IBMDStreamingVideoEncodingMode **changedEncodingMode);

    HRESULT (STDMETHODCALLTYPE *SetVideoEncodingMode)(
        IBMDStreamingDeviceInput *This,
        IBMDStreamingVideoEncodingMode *encodingMode);

    HRESULT (STDMETHODCALLTYPE *StartCapture)(
        IBMDStreamingDeviceInput *This);

    HRESULT (STDMETHODCALLTYPE *StopCapture)(
        IBMDStreamingDeviceInput *This);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IBMDStreamingDeviceInput *This,
        IUnknown *theCallback);

    END_INTERFACE
} IBMDStreamingDeviceInputVtbl;

interface IBMDStreamingDeviceInput {
    CONST_VTBL IBMDStreamingDeviceInputVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingDeviceInput_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingDeviceInput_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingDeviceInput_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingDeviceInput methods ***/
#define IBMDStreamingDeviceInput_DoesSupportVideoInputMode(This,inputMode,result) (This)->lpVtbl->DoesSupportVideoInputMode(This,inputMode,result)
#define IBMDStreamingDeviceInput_GetVideoInputModeIterator(This,iterator) (This)->lpVtbl->GetVideoInputModeIterator(This,iterator)
#define IBMDStreamingDeviceInput_SetVideoInputMode(This,inputMode) (This)->lpVtbl->SetVideoInputMode(This,inputMode)
#define IBMDStreamingDeviceInput_GetCurrentDetectedVideoInputMode(This,detectedMode) (This)->lpVtbl->GetCurrentDetectedVideoInputMode(This,detectedMode)
#define IBMDStreamingDeviceInput_GetVideoEncodingMode(This,encodingMode) (This)->lpVtbl->GetVideoEncodingMode(This,encodingMode)
#define IBMDStreamingDeviceInput_GetVideoEncodingModePresetIterator(This,inputMode,iterator) (This)->lpVtbl->GetVideoEncodingModePresetIterator(This,inputMode,iterator)
#define IBMDStreamingDeviceInput_DoesSupportVideoEncodingMode(This,inputMode,encodingMode,result,changedEncodingMode) (This)->lpVtbl->DoesSupportVideoEncodingMode(This,inputMode,encodingMode,result,changedEncodingMode)
#define IBMDStreamingDeviceInput_SetVideoEncodingMode(This,encodingMode) (This)->lpVtbl->SetVideoEncodingMode(This,encodingMode)
#define IBMDStreamingDeviceInput_StartCapture(This) (This)->lpVtbl->StartCapture(This)
#define IBMDStreamingDeviceInput_StopCapture(This) (This)->lpVtbl->StopCapture(This)
#define IBMDStreamingDeviceInput_SetCallback(This,theCallback) (This)->lpVtbl->SetCallback(This,theCallback)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_QueryInterface(IBMDStreamingDeviceInput* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingDeviceInput_AddRef(IBMDStreamingDeviceInput* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingDeviceInput_Release(IBMDStreamingDeviceInput* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingDeviceInput methods ***/
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_DoesSupportVideoInputMode(IBMDStreamingDeviceInput* This,BMDDisplayMode inputMode,BOOL *result) {
    return This->lpVtbl->DoesSupportVideoInputMode(This,inputMode,result);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_GetVideoInputModeIterator(IBMDStreamingDeviceInput* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetVideoInputModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_SetVideoInputMode(IBMDStreamingDeviceInput* This,BMDDisplayMode inputMode) {
    return This->lpVtbl->SetVideoInputMode(This,inputMode);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_GetCurrentDetectedVideoInputMode(IBMDStreamingDeviceInput* This,BMDDisplayMode *detectedMode) {
    return This->lpVtbl->GetCurrentDetectedVideoInputMode(This,detectedMode);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_GetVideoEncodingMode(IBMDStreamingDeviceInput* This,IBMDStreamingVideoEncodingMode **encodingMode) {
    return This->lpVtbl->GetVideoEncodingMode(This,encodingMode);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_GetVideoEncodingModePresetIterator(IBMDStreamingDeviceInput* This,BMDDisplayMode inputMode,IBMDStreamingVideoEncodingModePresetIterator **iterator) {
    return This->lpVtbl->GetVideoEncodingModePresetIterator(This,inputMode,iterator);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_DoesSupportVideoEncodingMode(IBMDStreamingDeviceInput* This,BMDDisplayMode inputMode,IBMDStreamingVideoEncodingMode *encodingMode,BMDStreamingEncodingSupport *result,IBMDStreamingVideoEncodingMode **changedEncodingMode) {
    return This->lpVtbl->DoesSupportVideoEncodingMode(This,inputMode,encodingMode,result,changedEncodingMode);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_SetVideoEncodingMode(IBMDStreamingDeviceInput* This,IBMDStreamingVideoEncodingMode *encodingMode) {
    return This->lpVtbl->SetVideoEncodingMode(This,encodingMode);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_StartCapture(IBMDStreamingDeviceInput* This) {
    return This->lpVtbl->StartCapture(This);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_StopCapture(IBMDStreamingDeviceInput* This) {
    return This->lpVtbl->StopCapture(This);
}
static FORCEINLINE HRESULT IBMDStreamingDeviceInput_SetCallback(IBMDStreamingDeviceInput* This,IUnknown *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingDeviceInput_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBMDStreamingH264NALPacket interface
 */
#ifndef __IBMDStreamingH264NALPacket_INTERFACE_DEFINED__
#define __IBMDStreamingH264NALPacket_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingH264NALPacket, 0xe260e955, 0x14be, 0x4395, 0x97,0x75, 0x9f,0x02,0xcc,0x0a,0x9d,0x89);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e260e955-14be-4395-9775-9f02cc0a9d89")
IBMDStreamingH264NALPacket : public IUnknown
{
    virtual LONG STDMETHODCALLTYPE GetPayloadSize(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        void **buffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytesWithSizePrefix(
        void **buffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayTime(
        ULONGLONG requestedTimeScale,
        ULONGLONG *displayTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPacketIndex(
        unsigned int *packetIndex) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingH264NALPacket, 0xe260e955, 0x14be, 0x4395, 0x97,0x75, 0x9f,0x02,0xcc,0x0a,0x9d,0x89)
#endif
#else
typedef struct IBMDStreamingH264NALPacketVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingH264NALPacket *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingH264NALPacket *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingH264NALPacket *This);

    /*** IBMDStreamingH264NALPacket methods ***/
    LONG (STDMETHODCALLTYPE *GetPayloadSize)(
        IBMDStreamingH264NALPacket *This);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IBMDStreamingH264NALPacket *This,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetBytesWithSizePrefix)(
        IBMDStreamingH264NALPacket *This,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetDisplayTime)(
        IBMDStreamingH264NALPacket *This,
        ULONGLONG requestedTimeScale,
        ULONGLONG *displayTime);

    HRESULT (STDMETHODCALLTYPE *GetPacketIndex)(
        IBMDStreamingH264NALPacket *This,
        unsigned int *packetIndex);

    END_INTERFACE
} IBMDStreamingH264NALPacketVtbl;

interface IBMDStreamingH264NALPacket {
    CONST_VTBL IBMDStreamingH264NALPacketVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingH264NALPacket_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingH264NALPacket_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingH264NALPacket_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingH264NALPacket methods ***/
#define IBMDStreamingH264NALPacket_GetPayloadSize(This) (This)->lpVtbl->GetPayloadSize(This)
#define IBMDStreamingH264NALPacket_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IBMDStreamingH264NALPacket_GetBytesWithSizePrefix(This,buffer) (This)->lpVtbl->GetBytesWithSizePrefix(This,buffer)
#define IBMDStreamingH264NALPacket_GetDisplayTime(This,requestedTimeScale,displayTime) (This)->lpVtbl->GetDisplayTime(This,requestedTimeScale,displayTime)
#define IBMDStreamingH264NALPacket_GetPacketIndex(This,packetIndex) (This)->lpVtbl->GetPacketIndex(This,packetIndex)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingH264NALPacket_QueryInterface(IBMDStreamingH264NALPacket* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingH264NALPacket_AddRef(IBMDStreamingH264NALPacket* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingH264NALPacket_Release(IBMDStreamingH264NALPacket* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingH264NALPacket methods ***/
static FORCEINLINE LONG IBMDStreamingH264NALPacket_GetPayloadSize(IBMDStreamingH264NALPacket* This) {
    return This->lpVtbl->GetPayloadSize(This);
}
static FORCEINLINE HRESULT IBMDStreamingH264NALPacket_GetBytes(IBMDStreamingH264NALPacket* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IBMDStreamingH264NALPacket_GetBytesWithSizePrefix(IBMDStreamingH264NALPacket* This,void **buffer) {
    return This->lpVtbl->GetBytesWithSizePrefix(This,buffer);
}
static FORCEINLINE HRESULT IBMDStreamingH264NALPacket_GetDisplayTime(IBMDStreamingH264NALPacket* This,ULONGLONG requestedTimeScale,ULONGLONG *displayTime) {
    return This->lpVtbl->GetDisplayTime(This,requestedTimeScale,displayTime);
}
static FORCEINLINE HRESULT IBMDStreamingH264NALPacket_GetPacketIndex(IBMDStreamingH264NALPacket* This,unsigned int *packetIndex) {
    return This->lpVtbl->GetPacketIndex(This,packetIndex);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingH264NALPacket_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBMDStreamingAudioPacket interface
 */
#ifndef __IBMDStreamingAudioPacket_INTERFACE_DEFINED__
#define __IBMDStreamingAudioPacket_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingAudioPacket, 0xd9eb5902, 0x1ad2, 0x43f4, 0x9e,0x2c, 0x3c,0xfa,0x50,0xb5,0xee,0x19);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d9eb5902-1ad2-43f4-9e2c-3cfa50b5ee19")
IBMDStreamingAudioPacket : public IUnknown
{
    virtual BMDStreamingAudioCodec STDMETHODCALLTYPE GetCodec(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetPayloadSize(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        void **buffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPlayTime(
        ULONGLONG requestedTimeScale,
        ULONGLONG *playTime) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPacketIndex(
        unsigned int *packetIndex) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingAudioPacket, 0xd9eb5902, 0x1ad2, 0x43f4, 0x9e,0x2c, 0x3c,0xfa,0x50,0xb5,0xee,0x19)
#endif
#else
typedef struct IBMDStreamingAudioPacketVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingAudioPacket *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingAudioPacket *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingAudioPacket *This);

    /*** IBMDStreamingAudioPacket methods ***/
    BMDStreamingAudioCodec (STDMETHODCALLTYPE *GetCodec)(
        IBMDStreamingAudioPacket *This);

    LONG (STDMETHODCALLTYPE *GetPayloadSize)(
        IBMDStreamingAudioPacket *This);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IBMDStreamingAudioPacket *This,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetPlayTime)(
        IBMDStreamingAudioPacket *This,
        ULONGLONG requestedTimeScale,
        ULONGLONG *playTime);

    HRESULT (STDMETHODCALLTYPE *GetPacketIndex)(
        IBMDStreamingAudioPacket *This,
        unsigned int *packetIndex);

    END_INTERFACE
} IBMDStreamingAudioPacketVtbl;

interface IBMDStreamingAudioPacket {
    CONST_VTBL IBMDStreamingAudioPacketVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingAudioPacket_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingAudioPacket_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingAudioPacket_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingAudioPacket methods ***/
#define IBMDStreamingAudioPacket_GetCodec(This) (This)->lpVtbl->GetCodec(This)
#define IBMDStreamingAudioPacket_GetPayloadSize(This) (This)->lpVtbl->GetPayloadSize(This)
#define IBMDStreamingAudioPacket_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IBMDStreamingAudioPacket_GetPlayTime(This,requestedTimeScale,playTime) (This)->lpVtbl->GetPlayTime(This,requestedTimeScale,playTime)
#define IBMDStreamingAudioPacket_GetPacketIndex(This,packetIndex) (This)->lpVtbl->GetPacketIndex(This,packetIndex)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingAudioPacket_QueryInterface(IBMDStreamingAudioPacket* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingAudioPacket_AddRef(IBMDStreamingAudioPacket* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingAudioPacket_Release(IBMDStreamingAudioPacket* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingAudioPacket methods ***/
static FORCEINLINE BMDStreamingAudioCodec IBMDStreamingAudioPacket_GetCodec(IBMDStreamingAudioPacket* This) {
    return This->lpVtbl->GetCodec(This);
}
static FORCEINLINE LONG IBMDStreamingAudioPacket_GetPayloadSize(IBMDStreamingAudioPacket* This) {
    return This->lpVtbl->GetPayloadSize(This);
}
static FORCEINLINE HRESULT IBMDStreamingAudioPacket_GetBytes(IBMDStreamingAudioPacket* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IBMDStreamingAudioPacket_GetPlayTime(IBMDStreamingAudioPacket* This,ULONGLONG requestedTimeScale,ULONGLONG *playTime) {
    return This->lpVtbl->GetPlayTime(This,requestedTimeScale,playTime);
}
static FORCEINLINE HRESULT IBMDStreamingAudioPacket_GetPacketIndex(IBMDStreamingAudioPacket* This,unsigned int *packetIndex) {
    return This->lpVtbl->GetPacketIndex(This,packetIndex);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingAudioPacket_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBMDStreamingMPEG2TSPacket interface
 */
#ifndef __IBMDStreamingMPEG2TSPacket_INTERFACE_DEFINED__
#define __IBMDStreamingMPEG2TSPacket_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingMPEG2TSPacket, 0x91810d1c, 0x4fb3, 0x4aaa, 0xae,0x56, 0xfa,0x30,0x1d,0x3d,0xfa,0x4c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("91810d1c-4fb3-4aaa-ae56-fa301d3dfa4c")
IBMDStreamingMPEG2TSPacket : public IUnknown
{
    virtual LONG STDMETHODCALLTYPE GetPayloadSize(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        void **buffer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingMPEG2TSPacket, 0x91810d1c, 0x4fb3, 0x4aaa, 0xae,0x56, 0xfa,0x30,0x1d,0x3d,0xfa,0x4c)
#endif
#else
typedef struct IBMDStreamingMPEG2TSPacketVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingMPEG2TSPacket *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingMPEG2TSPacket *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingMPEG2TSPacket *This);

    /*** IBMDStreamingMPEG2TSPacket methods ***/
    LONG (STDMETHODCALLTYPE *GetPayloadSize)(
        IBMDStreamingMPEG2TSPacket *This);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IBMDStreamingMPEG2TSPacket *This,
        void **buffer);

    END_INTERFACE
} IBMDStreamingMPEG2TSPacketVtbl;

interface IBMDStreamingMPEG2TSPacket {
    CONST_VTBL IBMDStreamingMPEG2TSPacketVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingMPEG2TSPacket_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingMPEG2TSPacket_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingMPEG2TSPacket_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingMPEG2TSPacket methods ***/
#define IBMDStreamingMPEG2TSPacket_GetPayloadSize(This) (This)->lpVtbl->GetPayloadSize(This)
#define IBMDStreamingMPEG2TSPacket_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingMPEG2TSPacket_QueryInterface(IBMDStreamingMPEG2TSPacket* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingMPEG2TSPacket_AddRef(IBMDStreamingMPEG2TSPacket* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingMPEG2TSPacket_Release(IBMDStreamingMPEG2TSPacket* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingMPEG2TSPacket methods ***/
static FORCEINLINE LONG IBMDStreamingMPEG2TSPacket_GetPayloadSize(IBMDStreamingMPEG2TSPacket* This) {
    return This->lpVtbl->GetPayloadSize(This);
}
static FORCEINLINE HRESULT IBMDStreamingMPEG2TSPacket_GetBytes(IBMDStreamingMPEG2TSPacket* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingMPEG2TSPacket_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IBMDStreamingH264NALParser interface
 */
#ifndef __IBMDStreamingH264NALParser_INTERFACE_DEFINED__
#define __IBMDStreamingH264NALParser_INTERFACE_DEFINED__

DEFINE_GUID(IID_IBMDStreamingH264NALParser, 0x5867f18c, 0x5bfa, 0x4ccc, 0xb2,0xa7, 0x9d,0xfd,0x14,0x04,0x17,0xd2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5867f18c-5bfa-4ccc-b2a7-9dfd140417d2")
IBMDStreamingH264NALParser : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE IsNALSequenceParameterSet(
        IBMDStreamingH264NALPacket *nal) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsNALPictureParameterSet(
        IBMDStreamingH264NALPacket *nal) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProfileAndLevelFromSPS(
        IBMDStreamingH264NALPacket *nal,
        unsigned int *profileIdc,
        unsigned int *profileCompatability,
        unsigned int *levelIdc) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IBMDStreamingH264NALParser, 0x5867f18c, 0x5bfa, 0x4ccc, 0xb2,0xa7, 0x9d,0xfd,0x14,0x04,0x17,0xd2)
#endif
#else
typedef struct IBMDStreamingH264NALParserVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IBMDStreamingH264NALParser *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IBMDStreamingH264NALParser *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IBMDStreamingH264NALParser *This);

    /*** IBMDStreamingH264NALParser methods ***/
    HRESULT (STDMETHODCALLTYPE *IsNALSequenceParameterSet)(
        IBMDStreamingH264NALParser *This,
        IBMDStreamingH264NALPacket *nal);

    HRESULT (STDMETHODCALLTYPE *IsNALPictureParameterSet)(
        IBMDStreamingH264NALParser *This,
        IBMDStreamingH264NALPacket *nal);

    HRESULT (STDMETHODCALLTYPE *GetProfileAndLevelFromSPS)(
        IBMDStreamingH264NALParser *This,
        IBMDStreamingH264NALPacket *nal,
        unsigned int *profileIdc,
        unsigned int *profileCompatability,
        unsigned int *levelIdc);

    END_INTERFACE
} IBMDStreamingH264NALParserVtbl;

interface IBMDStreamingH264NALParser {
    CONST_VTBL IBMDStreamingH264NALParserVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IBMDStreamingH264NALParser_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IBMDStreamingH264NALParser_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IBMDStreamingH264NALParser_Release(This) (This)->lpVtbl->Release(This)
/*** IBMDStreamingH264NALParser methods ***/
#define IBMDStreamingH264NALParser_IsNALSequenceParameterSet(This,nal) (This)->lpVtbl->IsNALSequenceParameterSet(This,nal)
#define IBMDStreamingH264NALParser_IsNALPictureParameterSet(This,nal) (This)->lpVtbl->IsNALPictureParameterSet(This,nal)
#define IBMDStreamingH264NALParser_GetProfileAndLevelFromSPS(This,nal,profileIdc,profileCompatability,levelIdc) (This)->lpVtbl->GetProfileAndLevelFromSPS(This,nal,profileIdc,profileCompatability,levelIdc)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IBMDStreamingH264NALParser_QueryInterface(IBMDStreamingH264NALParser* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IBMDStreamingH264NALParser_AddRef(IBMDStreamingH264NALParser* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IBMDStreamingH264NALParser_Release(IBMDStreamingH264NALParser* This) {
    return This->lpVtbl->Release(This);
}
/*** IBMDStreamingH264NALParser methods ***/
static FORCEINLINE HRESULT IBMDStreamingH264NALParser_IsNALSequenceParameterSet(IBMDStreamingH264NALParser* This,IBMDStreamingH264NALPacket *nal) {
    return This->lpVtbl->IsNALSequenceParameterSet(This,nal);
}
static FORCEINLINE HRESULT IBMDStreamingH264NALParser_IsNALPictureParameterSet(IBMDStreamingH264NALParser* This,IBMDStreamingH264NALPacket *nal) {
    return This->lpVtbl->IsNALPictureParameterSet(This,nal);
}
static FORCEINLINE HRESULT IBMDStreamingH264NALParser_GetProfileAndLevelFromSPS(IBMDStreamingH264NALParser* This,IBMDStreamingH264NALPacket *nal,unsigned int *profileIdc,unsigned int *profileCompatability,unsigned int *levelIdc) {
    return This->lpVtbl->GetProfileAndLevelFromSPS(This,nal,profileIdc,profileCompatability,levelIdc);
}
#endif
#endif

#endif


#endif  /* __IBMDStreamingH264NALParser_INTERFACE_DEFINED__ */

/*****************************************************************************
 * CBMDStreamingDiscovery coclass
 */

DEFINE_GUID(CLSID_CBMDStreamingDiscovery, 0x23a4edf5, 0xa0e5, 0x432c, 0x94,0xef, 0x3b,0xab,0xb5,0xf8,0x1c,0x82);

#ifdef __cplusplus
class DECLSPEC_UUID("23a4edf5-a0e5-432c-94ef-3babb5f81c82") CBMDStreamingDiscovery;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CBMDStreamingDiscovery, 0x23a4edf5, 0xa0e5, 0x432c, 0x94,0xef, 0x3b,0xab,0xb5,0xf8,0x1c,0x82)
#endif
#endif

/*****************************************************************************
 * CBMDStreamingH264NALParser coclass
 */

DEFINE_GUID(CLSID_CBMDStreamingH264NALParser, 0x7753efbd, 0x951c, 0x407c, 0x97,0xa5, 0x23,0xc7,0x37,0xb7,0x3b,0x52);

#ifdef __cplusplus
class DECLSPEC_UUID("7753efbd-951c-407c-97a5-23c737b73b52") CBMDStreamingH264NALParser;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CBMDStreamingH264NALParser, 0x7753efbd, 0x951c, 0x407c, 0x97,0xa5, 0x23,0xc7,0x37,0xb7,0x3b,0x52)
#endif
#endif

typedef unsigned int BMDFrameFlags;
typedef unsigned int BMDVideoInputFlags;
typedef unsigned int BMDVideoInputFormatChangedEvents;
typedef unsigned int BMDDetectedVideoInputFormatFlags;
typedef unsigned int BMDDeckLinkCapturePassthroughMode;
typedef unsigned int BMDAnalogVideoFlags;
typedef unsigned int BMDDeviceBusyState;
#if 0
typedef enum _BMDFrameFlags BMDFrameFlags;
typedef enum _BMDVideoInputFlags BMDVideoInputFlags;
typedef enum _BMDVideoInputFormatChangedEvents BMDVideoInputFormatChangedEvents;
typedef enum _BMDDetectedVideoInputFormatFlags BMDDetectedVideoInputFormatFlags;
typedef enum _BMDDeckLinkCapturePassthroughMode BMDDeckLinkCapturePassthroughMode;
typedef enum _BMDAnalogVideoFlags BMDAnalogVideoFlags;
typedef enum _BMDDeviceBusyState BMDDeviceBusyState;
#endif
typedef enum _BMDVideoOutputFlags {
    bmdVideoOutputFlagDefault = 0,
    bmdVideoOutputVANC = 1 << 0,
    bmdVideoOutputVITC = 1 << 1,
    bmdVideoOutputRP188 = 1 << 2,
    bmdVideoOutputDualStream3D = 1 << 4,
    bmdVideoOutputSynchronizeToPlaybackGroup = 1 << 6
} BMDVideoOutputFlags;
typedef enum _BMDSupportedVideoModeFlags {
    bmdSupportedVideoModeDefault = 0,
    bmdSupportedVideoModeKeying = 1 << 0,
    bmdSupportedVideoModeDualStream3D = 1 << 1,
    bmdSupportedVideoModeSDISingleLink = 1 << 2,
    bmdSupportedVideoModeSDIDualLink = 1 << 3,
    bmdSupportedVideoModeSDIQuadLink = 1 << 4,
    bmdSupportedVideoModeInAnyProfile = 1 << 5
} BMDSupportedVideoModeFlags;
typedef enum _BMDPacketType {
    bmdPacketTypeStreamInterruptedMarker = 0x73696e74,
    bmdPacketTypeStreamData = 0x73646174
} BMDPacketType;
enum _BMDFrameFlags {
    bmdFrameFlagDefault = 0,
    bmdFrameFlagFlipVertical = 1 << 0,
    bmdFrameContainsHDRMetadata = 1 << 1,
    bmdFrameCapturedAsPsF = 1 << 30,
    bmdFrameHasNoInputSource = 1 << 31
};
enum _BMDVideoInputFlags {
    bmdVideoInputFlagDefault = 0,
    bmdVideoInputEnableFormatDetection = 1 << 0,
    bmdVideoInputDualStream3D = 1 << 1,
    bmdVideoInputSynchronizeToCaptureGroup = 1 << 2
};
enum _BMDVideoInputFormatChangedEvents {
    bmdVideoInputDisplayModeChanged = 1 << 0,
    bmdVideoInputFieldDominanceChanged = 1 << 1,
    bmdVideoInputColorspaceChanged = 1 << 2
};
enum _BMDDetectedVideoInputFormatFlags {
    bmdDetectedVideoInputYCbCr422 = 1 << 0,
    bmdDetectedVideoInputRGB444 = 1 << 1,
    bmdDetectedVideoInputDualStream3D = 1 << 2,
    bmdDetectedVideoInput12BitDepth = 1 << 3,
    bmdDetectedVideoInput10BitDepth = 1 << 4,
    bmdDetectedVideoInput8BitDepth = 1 << 5
};
enum _BMDDeckLinkCapturePassthroughMode {
    bmdDeckLinkCapturePassthroughModeDisabled = 0x70646973,
    bmdDeckLinkCapturePassthroughModeDirect = 0x70646972,
    bmdDeckLinkCapturePassthroughModeCleanSwitch = 0x70636c6e
};
typedef enum _BMDOutputFrameCompletionResult {
    bmdOutputFrameCompleted = 0,
    bmdOutputFrameDisplayedLate = 1,
    bmdOutputFrameDropped = 2,
    bmdOutputFrameFlushed = 3
} BMDOutputFrameCompletionResult;
typedef enum _BMDReferenceStatus {
    bmdReferenceNotSupportedByHardware = 1 << 0,
    bmdReferenceLocked = 1 << 1
} BMDReferenceStatus;
typedef enum _BMDAudioFormat {
    bmdAudioFormatPCM = 0x6c70636d
} BMDAudioFormat;
typedef enum _BMDAudioSampleRate {
    bmdAudioSampleRate48kHz = 48000
} BMDAudioSampleRate;
typedef enum _BMDAudioSampleType {
    bmdAudioSampleType16bitInteger = 16,
    bmdAudioSampleType32bitInteger = 32
} BMDAudioSampleType;
typedef enum _BMDAudioOutputStreamType {
    bmdAudioOutputStreamContinuous = 0,
    bmdAudioOutputStreamContinuousDontResample = 1,
    bmdAudioOutputStreamTimestamped = 2
} BMDAudioOutputStreamType;
typedef enum _BMDAncillaryPacketFormat {
    bmdAncillaryPacketFormatUInt8 = 0x75693038,
    bmdAncillaryPacketFormatUInt16 = 0x75693136,
    bmdAncillaryPacketFormatYCbCr10 = 0x76323130
} BMDAncillaryPacketFormat;
typedef enum _BMDTimecodeFormat {
    bmdTimecodeRP188VITC1 = 0x72707631,
    bmdTimecodeRP188VITC2 = 0x72703132,
    bmdTimecodeRP188LTC = 0x72706c74,
    bmdTimecodeRP188HighFrameRate = 0x72706872,
    bmdTimecodeRP188Any = 0x72703138,
    bmdTimecodeVITC = 0x76697463,
    bmdTimecodeVITCField2 = 0x76697432,
    bmdTimecodeSerial = 0x73657269
} BMDTimecodeFormat;
enum _BMDAnalogVideoFlags {
    bmdAnalogVideoFlagCompositeSetup75 = 1 << 0,
    bmdAnalogVideoFlagComponentBetacamLevels = 1 << 1
};
typedef enum _BMDAudioOutputAnalogAESSwitch {
    bmdAudioOutputSwitchAESEBU = 0x61657320,
    bmdAudioOutputSwitchAnalog = 0x616e6c67
} BMDAudioOutputAnalogAESSwitch;
typedef enum _BMDVideoOutputConversionMode {
    bmdNoVideoOutputConversion = 0x6e6f6e65,
    bmdVideoOutputLetterboxDownconversion = 0x6c746278,
    bmdVideoOutputAnamorphicDownconversion = 0x616d7068,
    bmdVideoOutputHD720toHD1080Conversion = 0x37323063,
    bmdVideoOutputHardwareLetterboxDownconversion = 0x48576c62,
    bmdVideoOutputHardwareAnamorphicDownconversion = 0x4857616d,
    bmdVideoOutputHardwareCenterCutDownconversion = 0x48576363,
    bmdVideoOutputHardware720p1080pCrossconversion = 0x78636170,
    bmdVideoOutputHardwareAnamorphic720pUpconversion = 0x75613770,
    bmdVideoOutputHardwareAnamorphic1080iUpconversion = 0x75613169,
    bmdVideoOutputHardwareAnamorphic149To720pUpconversion = 0x75343770,
    bmdVideoOutputHardwareAnamorphic149To1080iUpconversion = 0x75343169,
    bmdVideoOutputHardwarePillarbox720pUpconversion = 0x75703770,
    bmdVideoOutputHardwarePillarbox1080iUpconversion = 0x75703169
} BMDVideoOutputConversionMode;
typedef enum _BMDVideoInputConversionMode {
    bmdNoVideoInputConversion = 0x6e6f6e65,
    bmdVideoInputLetterboxDownconversionFromHD1080 = 0x31306c62,
    bmdVideoInputAnamorphicDownconversionFromHD1080 = 0x3130616d,
    bmdVideoInputLetterboxDownconversionFromHD720 = 0x37326c62,
    bmdVideoInputAnamorphicDownconversionFromHD720 = 0x3732616d,
    bmdVideoInputLetterboxUpconversion = 0x6c627570,
    bmdVideoInputAnamorphicUpconversion = 0x616d7570
} BMDVideoInputConversionMode;
typedef enum _BMDVideo3DPackingFormat {
    bmdVideo3DPackingSidebySideHalf = 0x73627368,
    bmdVideo3DPackingLinebyLine = 0x6c62796c,
    bmdVideo3DPackingTopAndBottom = 0x7461626f,
    bmdVideo3DPackingFramePacking = 0x6672706b,
    bmdVideo3DPackingLeftOnly = 0x6c656674,
    bmdVideo3DPackingRightOnly = 0x72696768
} BMDVideo3DPackingFormat;
typedef enum _BMDIdleVideoOutputOperation {
    bmdIdleVideoOutputBlack = 0x626c6163,
    bmdIdleVideoOutputLastFrame = 0x6c616661
} BMDIdleVideoOutputOperation;
typedef enum _BMDVideoEncoderFrameCodingMode {
    bmdVideoEncoderFrameCodingModeInter = 0x696e7465,
    bmdVideoEncoderFrameCodingModeIntra = 0x696e7472
} BMDVideoEncoderFrameCodingMode;
typedef enum _BMDDNxHRLevel {
    bmdDNxHRLevelSQ = 0x646e7371,
    bmdDNxHRLevelLB = 0x646e6c62,
    bmdDNxHRLevelHQ = 0x646e6871,
    bmdDNxHRLevelHQX = 0x64687178,
    bmdDNxHRLevel444 = 0x64343434
} BMDDNxHRLevel;
typedef enum _BMDLinkConfiguration {
    bmdLinkConfigurationSingleLink = 0x6c63736c,
    bmdLinkConfigurationDualLink = 0x6c63646c,
    bmdLinkConfigurationQuadLink = 0x6c63716c
} BMDLinkConfiguration;
typedef enum _BMDDeviceInterface {
    bmdDeviceInterfacePCI = 0x70636920,
    bmdDeviceInterfaceUSB = 0x75736220,
    bmdDeviceInterfaceThunderbolt = 0x7468756e
} BMDDeviceInterface;
typedef enum _BMDColorspace {
    bmdColorspaceRec601 = 0x72363031,
    bmdColorspaceRec709 = 0x72373039,
    bmdColorspaceRec2020 = 0x32303230
} BMDColorspace;
typedef enum _BMDDynamicRange {
    bmdDynamicRangeSDR = 0,
    bmdDynamicRangeHDRStaticPQ = 1 << 29,
    bmdDynamicRangeHDRStaticHLG = 1 << 30
} BMDDynamicRange;
typedef enum _BMDDeckLinkHDMIInputEDIDID {
    bmdDeckLinkHDMIInputEDIDDynamicRange = 0x48494479
} BMDDeckLinkHDMIInputEDIDID;
typedef enum _BMDDeckLinkFrameMetadataID {
    bmdDeckLinkFrameMetadataColorspace = 0x63737063,
    bmdDeckLinkFrameMetadataHDRElectroOpticalTransferFunc = 0x656f7466,
    bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedX = 0x68647278,
    bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedY = 0x68647279,
    bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenX = 0x68646778,
    bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenY = 0x68646779,
    bmdDeckLinkFrameMetadataHDRDisplayPrimariesBlueX = 0x68646278,
    bmdDeckLinkFrameMetadataHDRDisplayPrimariesBlueY = 0x68646279,
    bmdDeckLinkFrameMetadataHDRWhitePointX = 0x68647778,
    bmdDeckLinkFrameMetadataHDRWhitePointY = 0x68647779,
    bmdDeckLinkFrameMetadataHDRMaxDisplayMasteringLuminance = 0x68646d6c,
    bmdDeckLinkFrameMetadataHDRMinDisplayMasteringLuminance = 0x686d696c,
    bmdDeckLinkFrameMetadataHDRMaximumContentLightLevel = 0x6d636c6c,
    bmdDeckLinkFrameMetadataHDRMaximumFrameAverageLightLevel = 0x66616c6c
} BMDDeckLinkFrameMetadataID;
typedef enum _BMDProfileID {
    bmdProfileOneSubDeviceFullDuplex = 0x31646664,
    bmdProfileOneSubDeviceHalfDuplex = 0x31646864,
    bmdProfileTwoSubDevicesFullDuplex = 0x32646664,
    bmdProfileTwoSubDevicesHalfDuplex = 0x32646864,
    bmdProfileFourSubDevicesHalfDuplex = 0x34646864
} BMDProfileID;
typedef enum _BMDHDMITimecodePacking {
    bmdHDMITimecodePackingIEEEOUI000085 = 0x8500,
    bmdHDMITimecodePackingIEEEOUI080046 = 0x8004601,
    bmdHDMITimecodePackingIEEEOUI5CF9F0 = 0x5cf9f003
} BMDHDMITimecodePacking;
typedef enum _BMDInternalKeyingAncillaryDataSource {
    bmdInternalKeyingUsesAncillaryDataFromInputSignal = 0x696b6169,
    bmdInternalKeyingUsesAncillaryDataFromKeyFrame = 0x696b616b
} BMDInternalKeyingAncillaryDataSource;
typedef enum _BMDDeckLinkAttributeID {
    BMDDeckLinkSupportsInternalKeying = 0x6b657969,
    BMDDeckLinkSupportsExternalKeying = 0x6b657965,
    BMDDeckLinkSupportsInputFormatDetection = 0x696e6664,
    BMDDeckLinkHasReferenceInput = 0x6872696e,
    BMDDeckLinkHasSerialPort = 0x68737074,
    BMDDeckLinkHasAnalogVideoOutputGain = 0x61766f67,
    BMDDeckLinkCanOnlyAdjustOverallVideoOutputGain = 0x6f766f67,
    BMDDeckLinkHasVideoInputAntiAliasingFilter = 0x6161666c,
    BMDDeckLinkHasBypass = 0x62797073,
    BMDDeckLinkSupportsClockTimingAdjustment = 0x63746164,
    BMDDeckLinkSupportsFullFrameReferenceInputTimingOffset = 0x6672696e,
    BMDDeckLinkSupportsSMPTELevelAOutput = 0x6c766c61,
    BMDDeckLinkSupportsAutoSwitchingPPsFOnInput = 0x61707366,
    BMDDeckLinkSupportsDualLinkSDI = 0x73646c73,
    BMDDeckLinkSupportsQuadLinkSDI = 0x73716c73,
    BMDDeckLinkSupportsIdleOutput = 0x69646f75,
    BMDDeckLinkVANCRequires10BitYUVVideoFrames = 0x76696f59,
    BMDDeckLinkHasLTCTimecodeInput = 0x686c7463,
    BMDDeckLinkSupportsHDRMetadata = 0x6864726d,
    BMDDeckLinkSupportsColorspaceMetadata = 0x636d6574,
    BMDDeckLinkSupportsHDMITimecode = 0x6874696d,
    BMDDeckLinkSupportsHighFrameRateTimecode = 0x48465254,
    BMDDeckLinkSupportsSynchronizeToCaptureGroup = 0x73746367,
    BMDDeckLinkSupportsSynchronizeToPlaybackGroup = 0x73747067,
    BMDDeckLinkMaximumAudioChannels = 0x6d616368,
    BMDDeckLinkMaximumAnalogAudioInputChannels = 0x69616368,
    BMDDeckLinkMaximumAnalogAudioOutputChannels = 0x61616368,
    BMDDeckLinkNumberOfSubDevices = 0x6e736264,
    BMDDeckLinkSubDeviceIndex = 0x73756269,
    BMDDeckLinkPersistentID = 0x70656964,
    BMDDeckLinkDeviceGroupID = 0x64676964,
    BMDDeckLinkTopologicalID = 0x746f6964,
    BMDDeckLinkVideoOutputConnections = 0x766f636e,
    BMDDeckLinkVideoInputConnections = 0x7669636e,
    BMDDeckLinkAudioOutputConnections = 0x616f636e,
    BMDDeckLinkAudioInputConnections = 0x6169636e,
    BMDDeckLinkVideoIOSupport = 0x76696f73,
    BMDDeckLinkDeckControlConnections = 0x6463636e,
    BMDDeckLinkDeviceInterface = 0x64627573,
    BMDDeckLinkAudioInputRCAChannelCount = 0x61697263,
    BMDDeckLinkAudioInputXLRChannelCount = 0x61697863,
    BMDDeckLinkAudioOutputRCAChannelCount = 0x616f7263,
    BMDDeckLinkAudioOutputXLRChannelCount = 0x616f7863,
    BMDDeckLinkProfileID = 0x70726964,
    BMDDeckLinkDuplex = 0x64757078,
    BMDDeckLinkMinimumPrerollFrames = 0x6d707266,
    BMDDeckLinkSupportedDynamicRange = 0x73756472,
    BMDDeckLinkVideoInputGainMinimum = 0x7669676d,
    BMDDeckLinkVideoInputGainMaximum = 0x76696778,
    BMDDeckLinkVideoOutputGainMinimum = 0x766f676d,
    BMDDeckLinkVideoOutputGainMaximum = 0x766f6778,
    BMDDeckLinkMicrophoneInputGainMinimum = 0x6d69676d,
    BMDDeckLinkMicrophoneInputGainMaximum = 0x6d696778,
    BMDDeckLinkSerialPortDeviceName = 0x736c706e,
    BMDDeckLinkVendorName = 0x766e6472,
    BMDDeckLinkDisplayName = 0x6473706e,
    BMDDeckLinkModelName = 0x6d646c6e,
    BMDDeckLinkDeviceHandle = 0x64657668
} BMDDeckLinkAttributeID;
typedef enum _BMDDeckLinkAPIInformationID {
    BMDDeckLinkAPIVersion = 0x76657273
} BMDDeckLinkAPIInformationID;
typedef enum _BMDDeckLinkStatusID {
    bmdDeckLinkStatusDetectedVideoInputMode = 0x6476696d,
    bmdDeckLinkStatusDetectedVideoInputFormatFlags = 0x64766666,
    bmdDeckLinkStatusDetectedVideoInputFieldDominance = 0x64766664,
    bmdDeckLinkStatusDetectedVideoInputColorspace = 0x6473636c,
    bmdDeckLinkStatusDetectedVideoInputDynamicRange = 0x64736472,
    bmdDeckLinkStatusDetectedSDILinkConfiguration = 0x64736c63,
    bmdDeckLinkStatusCurrentVideoInputMode = 0x6376696d,
    bmdDeckLinkStatusCurrentVideoInputPixelFormat = 0x63766970,
    bmdDeckLinkStatusCurrentVideoInputFlags = 0x63766966,
    bmdDeckLinkStatusCurrentVideoOutputMode = 0x63766f6d,
    bmdDeckLinkStatusCurrentVideoOutputFlags = 0x63766f66,
    bmdDeckLinkStatusPCIExpressLinkWidth = 0x70776964,
    bmdDeckLinkStatusPCIExpressLinkSpeed = 0x706c6e6b,
    bmdDeckLinkStatusLastVideoOutputPixelFormat = 0x6f706978,
    bmdDeckLinkStatusReferenceSignalMode = 0x7265666d,
    bmdDeckLinkStatusReferenceSignalFlags = 0x72656666,
    bmdDeckLinkStatusBusy = 0x62757379,
    bmdDeckLinkStatusInterchangeablePanelType = 0x69637074,
    bmdDeckLinkStatusDeviceTemperature = 0x64746d70,
    bmdDeckLinkStatusVideoInputSignalLocked = 0x7669736c,
    bmdDeckLinkStatusReferenceSignalLocked = 0x7265666c,
    bmdDeckLinkStatusReceivedEDID = 0x65646964
} BMDDeckLinkStatusID;
typedef enum _BMDDeckLinkVideoStatusFlags {
    bmdDeckLinkVideoStatusPsF = 1 << 0,
    bmdDeckLinkVideoStatusDualStream3D = 1 << 1
} BMDDeckLinkVideoStatusFlags;
typedef enum _BMDDuplexMode {
    bmdDuplexFull = 0x64786675,
    bmdDuplexHalf = 0x64786861,
    bmdDuplexSimplex = 0x64787370,
    bmdDuplexInactive = 0x6478696e
} BMDDuplexMode;
typedef enum _BMDPanelType {
    bmdPanelNotDetected = 0x6e706e6c,
    bmdPanelTeranexMiniSmartPanel = 0x746d736d
} BMDPanelType;
enum _BMDDeviceBusyState {
    bmdDeviceCaptureBusy = 1 << 0,
    bmdDevicePlaybackBusy = 1 << 1,
    bmdDeviceSerialPortBusy = 1 << 2
};
typedef enum _BMDVideoIOSupport {
    bmdDeviceSupportsCapture = 1 << 0,
    bmdDeviceSupportsPlayback = 1 << 1
} BMDVideoIOSupport;
typedef enum _BMD3DPreviewFormat {
    bmd3DPreviewFormatDefault = 0x64656661,
    bmd3DPreviewFormatLeftOnly = 0x6c656674,
    bmd3DPreviewFormatRightOnly = 0x72696768,
    bmd3DPreviewFormatSideBySide = 0x73696465,
    bmd3DPreviewFormatTopBottom = 0x746f7062
} BMD3DPreviewFormat;
typedef enum _BMDNotifications {
    bmdPreferencesChanged = 0x70726566,
    bmdStatusChanged = 0x73746174
} BMDNotifications;
#ifndef __IDeckLinkVideoOutputCallback_FWD_DEFINED__
#define __IDeckLinkVideoOutputCallback_FWD_DEFINED__
typedef interface IDeckLinkVideoOutputCallback IDeckLinkVideoOutputCallback;
#ifdef __cplusplus
interface IDeckLinkVideoOutputCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInputCallback_FWD_DEFINED__
#define __IDeckLinkInputCallback_FWD_DEFINED__
typedef interface IDeckLinkInputCallback IDeckLinkInputCallback;
#ifdef __cplusplus
interface IDeckLinkInputCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderInputCallback_FWD_DEFINED__
#define __IDeckLinkEncoderInputCallback_FWD_DEFINED__
typedef interface IDeckLinkEncoderInputCallback IDeckLinkEncoderInputCallback;
#ifdef __cplusplus
interface IDeckLinkEncoderInputCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkMemoryAllocator_FWD_DEFINED__
#define __IDeckLinkMemoryAllocator_FWD_DEFINED__
typedef interface IDeckLinkMemoryAllocator IDeckLinkMemoryAllocator;
#ifdef __cplusplus
interface IDeckLinkMemoryAllocator;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAudioOutputCallback_FWD_DEFINED__
#define __IDeckLinkAudioOutputCallback_FWD_DEFINED__
typedef interface IDeckLinkAudioOutputCallback IDeckLinkAudioOutputCallback;
#ifdef __cplusplus
interface IDeckLinkAudioOutputCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkIterator_FWD_DEFINED__
#define __IDeckLinkIterator_FWD_DEFINED__
typedef interface IDeckLinkIterator IDeckLinkIterator;
#ifdef __cplusplus
interface IDeckLinkIterator;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAPIInformation_FWD_DEFINED__
#define __IDeckLinkAPIInformation_FWD_DEFINED__
typedef interface IDeckLinkAPIInformation IDeckLinkAPIInformation;
#ifdef __cplusplus
interface IDeckLinkAPIInformation;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkOutput_FWD_DEFINED__
#define __IDeckLinkOutput_FWD_DEFINED__
typedef interface IDeckLinkOutput IDeckLinkOutput;
#ifdef __cplusplus
interface IDeckLinkOutput;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_FWD_DEFINED__
#define __IDeckLinkInput_FWD_DEFINED__
typedef interface IDeckLinkInput IDeckLinkInput;
#ifdef __cplusplus
interface IDeckLinkInput;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkHDMIInputEDID_FWD_DEFINED__
#define __IDeckLinkHDMIInputEDID_FWD_DEFINED__
typedef interface IDeckLinkHDMIInputEDID IDeckLinkHDMIInputEDID;
#ifdef __cplusplus
interface IDeckLinkHDMIInputEDID;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderInput_FWD_DEFINED__
#define __IDeckLinkEncoderInput_FWD_DEFINED__
typedef interface IDeckLinkEncoderInput IDeckLinkEncoderInput;
#ifdef __cplusplus
interface IDeckLinkEncoderInput;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrame_FWD_DEFINED__
#define __IDeckLinkVideoFrame_FWD_DEFINED__
typedef interface IDeckLinkVideoFrame IDeckLinkVideoFrame;
#ifdef __cplusplus
interface IDeckLinkVideoFrame;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkMutableVideoFrame_FWD_DEFINED__
#define __IDeckLinkMutableVideoFrame_FWD_DEFINED__
typedef interface IDeckLinkMutableVideoFrame IDeckLinkMutableVideoFrame;
#ifdef __cplusplus
interface IDeckLinkMutableVideoFrame;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__
#define __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__
typedef interface IDeckLinkVideoFrame3DExtensions IDeckLinkVideoFrame3DExtensions;
#ifdef __cplusplus
interface IDeckLinkVideoFrame3DExtensions;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrameMetadataExtensions_FWD_DEFINED__
#define __IDeckLinkVideoFrameMetadataExtensions_FWD_DEFINED__
typedef interface IDeckLinkVideoFrameMetadataExtensions IDeckLinkVideoFrameMetadataExtensions;
#ifdef __cplusplus
interface IDeckLinkVideoFrameMetadataExtensions;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoInputFrame_FWD_DEFINED__
#define __IDeckLinkVideoInputFrame_FWD_DEFINED__
typedef interface IDeckLinkVideoInputFrame IDeckLinkVideoInputFrame;
#ifdef __cplusplus
interface IDeckLinkVideoInputFrame;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAncillaryPacket_FWD_DEFINED__
#define __IDeckLinkAncillaryPacket_FWD_DEFINED__
typedef interface IDeckLinkAncillaryPacket IDeckLinkAncillaryPacket;
#ifdef __cplusplus
interface IDeckLinkAncillaryPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAncillaryPacketIterator_FWD_DEFINED__
#define __IDeckLinkAncillaryPacketIterator_FWD_DEFINED__
typedef interface IDeckLinkAncillaryPacketIterator IDeckLinkAncillaryPacketIterator;
#ifdef __cplusplus
interface IDeckLinkAncillaryPacketIterator;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__
#define __IDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__
typedef interface IDeckLinkVideoFrameAncillaryPackets IDeckLinkVideoFrameAncillaryPackets;
#ifdef __cplusplus
interface IDeckLinkVideoFrameAncillaryPackets;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrameAncillary_FWD_DEFINED__
#define __IDeckLinkVideoFrameAncillary_FWD_DEFINED__
typedef interface IDeckLinkVideoFrameAncillary IDeckLinkVideoFrameAncillary;
#ifdef __cplusplus
interface IDeckLinkVideoFrameAncillary;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderPacket_FWD_DEFINED__
#define __IDeckLinkEncoderPacket_FWD_DEFINED__
typedef interface IDeckLinkEncoderPacket IDeckLinkEncoderPacket;
#ifdef __cplusplus
interface IDeckLinkEncoderPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderVideoPacket_FWD_DEFINED__
#define __IDeckLinkEncoderVideoPacket_FWD_DEFINED__
typedef interface IDeckLinkEncoderVideoPacket IDeckLinkEncoderVideoPacket;
#ifdef __cplusplus
interface IDeckLinkEncoderVideoPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkEncoderAudioPacket_FWD_DEFINED__
#define __IDeckLinkEncoderAudioPacket_FWD_DEFINED__
typedef interface IDeckLinkEncoderAudioPacket IDeckLinkEncoderAudioPacket;
#ifdef __cplusplus
interface IDeckLinkEncoderAudioPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkH265NALPacket_FWD_DEFINED__
#define __IDeckLinkH265NALPacket_FWD_DEFINED__
typedef interface IDeckLinkH265NALPacket IDeckLinkH265NALPacket;
#ifdef __cplusplus
interface IDeckLinkH265NALPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAudioInputPacket_FWD_DEFINED__
#define __IDeckLinkAudioInputPacket_FWD_DEFINED__
typedef interface IDeckLinkAudioInputPacket IDeckLinkAudioInputPacket;
#ifdef __cplusplus
interface IDeckLinkAudioInputPacket;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkScreenPreviewCallback_FWD_DEFINED__
#define __IDeckLinkScreenPreviewCallback_FWD_DEFINED__
typedef interface IDeckLinkScreenPreviewCallback IDeckLinkScreenPreviewCallback;
#ifdef __cplusplus
interface IDeckLinkScreenPreviewCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkGLScreenPreviewHelper_FWD_DEFINED__
#define __IDeckLinkGLScreenPreviewHelper_FWD_DEFINED__
typedef interface IDeckLinkGLScreenPreviewHelper IDeckLinkGLScreenPreviewHelper;
#ifdef __cplusplus
interface IDeckLinkGLScreenPreviewHelper;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__
#define __IDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__
typedef interface IDeckLinkDX9ScreenPreviewHelper IDeckLinkDX9ScreenPreviewHelper;
#ifdef __cplusplus
interface IDeckLinkDX9ScreenPreviewHelper;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkNotificationCallback_FWD_DEFINED__
#define __IDeckLinkNotificationCallback_FWD_DEFINED__
typedef interface IDeckLinkNotificationCallback IDeckLinkNotificationCallback;
#ifdef __cplusplus
interface IDeckLinkNotificationCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkNotification_FWD_DEFINED__
#define __IDeckLinkNotification_FWD_DEFINED__
typedef interface IDeckLinkNotification IDeckLinkNotification;
#ifdef __cplusplus
interface IDeckLinkNotification;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkProfileAttributes_FWD_DEFINED__
#define __IDeckLinkProfileAttributes_FWD_DEFINED__
typedef interface IDeckLinkProfileAttributes IDeckLinkProfileAttributes;
#ifdef __cplusplus
interface IDeckLinkProfileAttributes;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkProfileIterator_FWD_DEFINED__
#define __IDeckLinkProfileIterator_FWD_DEFINED__
typedef interface IDeckLinkProfileIterator IDeckLinkProfileIterator;
#ifdef __cplusplus
interface IDeckLinkProfileIterator;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkProfile_FWD_DEFINED__
#define __IDeckLinkProfile_FWD_DEFINED__
typedef interface IDeckLinkProfile IDeckLinkProfile;
#ifdef __cplusplus
interface IDeckLinkProfile;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkProfileCallback_FWD_DEFINED__
#define __IDeckLinkProfileCallback_FWD_DEFINED__
typedef interface IDeckLinkProfileCallback IDeckLinkProfileCallback;
#ifdef __cplusplus
interface IDeckLinkProfileCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkProfileManager_FWD_DEFINED__
#define __IDeckLinkProfileManager_FWD_DEFINED__
typedef interface IDeckLinkProfileManager IDeckLinkProfileManager;
#ifdef __cplusplus
interface IDeckLinkProfileManager;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkStatus_FWD_DEFINED__
#define __IDeckLinkStatus_FWD_DEFINED__
typedef interface IDeckLinkStatus IDeckLinkStatus;
#ifdef __cplusplus
interface IDeckLinkStatus;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkKeyer_FWD_DEFINED__
#define __IDeckLinkKeyer_FWD_DEFINED__
typedef interface IDeckLinkKeyer IDeckLinkKeyer;
#ifdef __cplusplus
interface IDeckLinkKeyer;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoConversion_FWD_DEFINED__
#define __IDeckLinkVideoConversion_FWD_DEFINED__
typedef interface IDeckLinkVideoConversion IDeckLinkVideoConversion;
#ifdef __cplusplus
interface IDeckLinkVideoConversion;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDeviceNotificationCallback_FWD_DEFINED__
#define __IDeckLinkDeviceNotificationCallback_FWD_DEFINED__
typedef interface IDeckLinkDeviceNotificationCallback IDeckLinkDeviceNotificationCallback;
#ifdef __cplusplus
interface IDeckLinkDeviceNotificationCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDiscovery_FWD_DEFINED__
#define __IDeckLinkDiscovery_FWD_DEFINED__
typedef interface IDeckLinkDiscovery IDeckLinkDiscovery;
#ifdef __cplusplus
interface IDeckLinkDiscovery;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkVideoOutputCallback interface
 */
#ifndef __IDeckLinkVideoOutputCallback_INTERFACE_DEFINED__
#define __IDeckLinkVideoOutputCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoOutputCallback, 0x20aa5225, 0x1958, 0x47cb, 0x82,0x0b, 0x80,0xa8,0xd5,0x21,0xa6,0xee);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("20aa5225-1958-47cb-820b-80a8d521a6ee")
IDeckLinkVideoOutputCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted(
        IDeckLinkVideoFrame *completedFrame,
        BMDOutputFrameCompletionResult result) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduledPlaybackHasStopped(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoOutputCallback, 0x20aa5225, 0x1958, 0x47cb, 0x82,0x0b, 0x80,0xa8,0xd5,0x21,0xa6,0xee)
#endif
#else
typedef struct IDeckLinkVideoOutputCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoOutputCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoOutputCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoOutputCallback *This);

    /*** IDeckLinkVideoOutputCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *ScheduledFrameCompleted)(
        IDeckLinkVideoOutputCallback *This,
        IDeckLinkVideoFrame *completedFrame,
        BMDOutputFrameCompletionResult result);

    HRESULT (STDMETHODCALLTYPE *ScheduledPlaybackHasStopped)(
        IDeckLinkVideoOutputCallback *This);

    END_INTERFACE
} IDeckLinkVideoOutputCallbackVtbl;

interface IDeckLinkVideoOutputCallback {
    CONST_VTBL IDeckLinkVideoOutputCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkVideoOutputCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkVideoOutputCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkVideoOutputCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoOutputCallback methods ***/
#define IDeckLinkVideoOutputCallback_ScheduledFrameCompleted(This,completedFrame,result) (This)->lpVtbl->ScheduledFrameCompleted(This,completedFrame,result)
#define IDeckLinkVideoOutputCallback_ScheduledPlaybackHasStopped(This) (This)->lpVtbl->ScheduledPlaybackHasStopped(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoOutputCallback_QueryInterface(IDeckLinkVideoOutputCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoOutputCallback_AddRef(IDeckLinkVideoOutputCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoOutputCallback_Release(IDeckLinkVideoOutputCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoOutputCallback methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoOutputCallback_ScheduledFrameCompleted(IDeckLinkVideoOutputCallback* This,IDeckLinkVideoFrame *completedFrame,BMDOutputFrameCompletionResult result) {
    return This->lpVtbl->ScheduledFrameCompleted(This,completedFrame,result);
}
static FORCEINLINE HRESULT IDeckLinkVideoOutputCallback_ScheduledPlaybackHasStopped(IDeckLinkVideoOutputCallback* This) {
    return This->lpVtbl->ScheduledPlaybackHasStopped(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoOutputCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInputCallback interface
 */
#ifndef __IDeckLinkInputCallback_INTERFACE_DEFINED__
#define __IDeckLinkInputCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInputCallback, 0xc6fce4c9, 0xc4e4, 0x4047, 0x82,0xfb, 0x5d,0x23,0x82,0x32,0xa9,0x02);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c6fce4c9-c4e4-4047-82fb-5d238232a902")
IDeckLinkInputCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged(
        BMDVideoInputFormatChangedEvents notificationEvents,
        IDeckLinkDisplayMode *newDisplayMode,
        BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(
        IDeckLinkVideoInputFrame *videoFrame,
        IDeckLinkAudioInputPacket *audioPacket) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInputCallback, 0xc6fce4c9, 0xc4e4, 0x4047, 0x82,0xfb, 0x5d,0x23,0x82,0x32,0xa9,0x02)
#endif
#else
typedef struct IDeckLinkInputCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInputCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInputCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInputCallback *This);

    /*** IDeckLinkInputCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *VideoInputFormatChanged)(
        IDeckLinkInputCallback *This,
        BMDVideoInputFormatChangedEvents notificationEvents,
        IDeckLinkDisplayMode *newDisplayMode,
        BMDDetectedVideoInputFormatFlags detectedSignalFlags);

    HRESULT (STDMETHODCALLTYPE *VideoInputFrameArrived)(
        IDeckLinkInputCallback *This,
        IDeckLinkVideoInputFrame *videoFrame,
        IDeckLinkAudioInputPacket *audioPacket);

    END_INTERFACE
} IDeckLinkInputCallbackVtbl;

interface IDeckLinkInputCallback {
    CONST_VTBL IDeckLinkInputCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkInputCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkInputCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkInputCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkInputCallback methods ***/
#define IDeckLinkInputCallback_VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) (This)->lpVtbl->VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags)
#define IDeckLinkInputCallback_VideoInputFrameArrived(This,videoFrame,audioPacket) (This)->lpVtbl->VideoInputFrameArrived(This,videoFrame,audioPacket)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInputCallback_QueryInterface(IDeckLinkInputCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInputCallback_AddRef(IDeckLinkInputCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInputCallback_Release(IDeckLinkInputCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInputCallback methods ***/
static FORCEINLINE HRESULT IDeckLinkInputCallback_VideoInputFormatChanged(IDeckLinkInputCallback* This,BMDVideoInputFormatChangedEvents notificationEvents,IDeckLinkDisplayMode *newDisplayMode,BMDDetectedVideoInputFormatFlags detectedSignalFlags) {
    return This->lpVtbl->VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags);
}
static FORCEINLINE HRESULT IDeckLinkInputCallback_VideoInputFrameArrived(IDeckLinkInputCallback* This,IDeckLinkVideoInputFrame *videoFrame,IDeckLinkAudioInputPacket *audioPacket) {
    return This->lpVtbl->VideoInputFrameArrived(This,videoFrame,audioPacket);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInputCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkEncoderInputCallback interface
 */
#ifndef __IDeckLinkEncoderInputCallback_INTERFACE_DEFINED__
#define __IDeckLinkEncoderInputCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkEncoderInputCallback, 0xacf13e61, 0xf4a0, 0x4974, 0xa6,0xa7, 0x59,0xaf,0xf6,0x26,0x8b,0x31);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("acf13e61-f4a0-4974-a6a7-59aff6268b31")
IDeckLinkEncoderInputCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE VideoInputSignalChanged(
        BMDVideoInputFormatChangedEvents notificationEvents,
        IDeckLinkDisplayMode *newDisplayMode,
        BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE VideoPacketArrived(
        IDeckLinkEncoderVideoPacket *videoPacket) = 0;

    virtual HRESULT STDMETHODCALLTYPE AudioPacketArrived(
        IDeckLinkEncoderAudioPacket *audioPacket) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkEncoderInputCallback, 0xacf13e61, 0xf4a0, 0x4974, 0xa6,0xa7, 0x59,0xaf,0xf6,0x26,0x8b,0x31)
#endif
#else
typedef struct IDeckLinkEncoderInputCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkEncoderInputCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkEncoderInputCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkEncoderInputCallback *This);

    /*** IDeckLinkEncoderInputCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *VideoInputSignalChanged)(
        IDeckLinkEncoderInputCallback *This,
        BMDVideoInputFormatChangedEvents notificationEvents,
        IDeckLinkDisplayMode *newDisplayMode,
        BMDDetectedVideoInputFormatFlags detectedSignalFlags);

    HRESULT (STDMETHODCALLTYPE *VideoPacketArrived)(
        IDeckLinkEncoderInputCallback *This,
        IDeckLinkEncoderVideoPacket *videoPacket);

    HRESULT (STDMETHODCALLTYPE *AudioPacketArrived)(
        IDeckLinkEncoderInputCallback *This,
        IDeckLinkEncoderAudioPacket *audioPacket);

    END_INTERFACE
} IDeckLinkEncoderInputCallbackVtbl;

interface IDeckLinkEncoderInputCallback {
    CONST_VTBL IDeckLinkEncoderInputCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkEncoderInputCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkEncoderInputCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkEncoderInputCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkEncoderInputCallback methods ***/
#define IDeckLinkEncoderInputCallback_VideoInputSignalChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) (This)->lpVtbl->VideoInputSignalChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags)
#define IDeckLinkEncoderInputCallback_VideoPacketArrived(This,videoPacket) (This)->lpVtbl->VideoPacketArrived(This,videoPacket)
#define IDeckLinkEncoderInputCallback_AudioPacketArrived(This,audioPacket) (This)->lpVtbl->AudioPacketArrived(This,audioPacket)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderInputCallback_QueryInterface(IDeckLinkEncoderInputCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkEncoderInputCallback_AddRef(IDeckLinkEncoderInputCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkEncoderInputCallback_Release(IDeckLinkEncoderInputCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkEncoderInputCallback methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderInputCallback_VideoInputSignalChanged(IDeckLinkEncoderInputCallback* This,BMDVideoInputFormatChangedEvents notificationEvents,IDeckLinkDisplayMode *newDisplayMode,BMDDetectedVideoInputFormatFlags detectedSignalFlags) {
    return This->lpVtbl->VideoInputSignalChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInputCallback_VideoPacketArrived(IDeckLinkEncoderInputCallback* This,IDeckLinkEncoderVideoPacket *videoPacket) {
    return This->lpVtbl->VideoPacketArrived(This,videoPacket);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInputCallback_AudioPacketArrived(IDeckLinkEncoderInputCallback* This,IDeckLinkEncoderAudioPacket *audioPacket) {
    return This->lpVtbl->AudioPacketArrived(This,audioPacket);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkEncoderInputCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkMemoryAllocator interface
 */
#ifndef __IDeckLinkMemoryAllocator_INTERFACE_DEFINED__
#define __IDeckLinkMemoryAllocator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkMemoryAllocator, 0xb36eb6e7, 0x9d29, 0x4aa8, 0x92,0xef, 0x84,0x3b,0x87,0xa2,0x89,0xe8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b36eb6e7-9d29-4aa8-92ef-843b87a289e8")
IDeckLinkMemoryAllocator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE AllocateBuffer(
        unsigned int bufferSize,
        void **allocatedBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer(
        void *buffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE Commit(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Decommit(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkMemoryAllocator, 0xb36eb6e7, 0x9d29, 0x4aa8, 0x92,0xef, 0x84,0x3b,0x87,0xa2,0x89,0xe8)
#endif
#else
typedef struct IDeckLinkMemoryAllocatorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkMemoryAllocator *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkMemoryAllocator *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkMemoryAllocator *This);

    /*** IDeckLinkMemoryAllocator methods ***/
    HRESULT (STDMETHODCALLTYPE *AllocateBuffer)(
        IDeckLinkMemoryAllocator *This,
        unsigned int bufferSize,
        void **allocatedBuffer);

    HRESULT (STDMETHODCALLTYPE *ReleaseBuffer)(
        IDeckLinkMemoryAllocator *This,
        void *buffer);

    HRESULT (STDMETHODCALLTYPE *Commit)(
        IDeckLinkMemoryAllocator *This);

    HRESULT (STDMETHODCALLTYPE *Decommit)(
        IDeckLinkMemoryAllocator *This);

    END_INTERFACE
} IDeckLinkMemoryAllocatorVtbl;

interface IDeckLinkMemoryAllocator {
    CONST_VTBL IDeckLinkMemoryAllocatorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkMemoryAllocator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkMemoryAllocator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkMemoryAllocator_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkMemoryAllocator methods ***/
#define IDeckLinkMemoryAllocator_AllocateBuffer(This,bufferSize,allocatedBuffer) (This)->lpVtbl->AllocateBuffer(This,bufferSize,allocatedBuffer)
#define IDeckLinkMemoryAllocator_ReleaseBuffer(This,buffer) (This)->lpVtbl->ReleaseBuffer(This,buffer)
#define IDeckLinkMemoryAllocator_Commit(This) (This)->lpVtbl->Commit(This)
#define IDeckLinkMemoryAllocator_Decommit(This) (This)->lpVtbl->Decommit(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkMemoryAllocator_QueryInterface(IDeckLinkMemoryAllocator* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkMemoryAllocator_AddRef(IDeckLinkMemoryAllocator* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkMemoryAllocator_Release(IDeckLinkMemoryAllocator* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkMemoryAllocator methods ***/
static FORCEINLINE HRESULT IDeckLinkMemoryAllocator_AllocateBuffer(IDeckLinkMemoryAllocator* This,unsigned int bufferSize,void **allocatedBuffer) {
    return This->lpVtbl->AllocateBuffer(This,bufferSize,allocatedBuffer);
}
static FORCEINLINE HRESULT IDeckLinkMemoryAllocator_ReleaseBuffer(IDeckLinkMemoryAllocator* This,void *buffer) {
    return This->lpVtbl->ReleaseBuffer(This,buffer);
}
static FORCEINLINE HRESULT IDeckLinkMemoryAllocator_Commit(IDeckLinkMemoryAllocator* This) {
    return This->lpVtbl->Commit(This);
}
static FORCEINLINE HRESULT IDeckLinkMemoryAllocator_Decommit(IDeckLinkMemoryAllocator* This) {
    return This->lpVtbl->Decommit(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkMemoryAllocator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkAudioOutputCallback interface
 */
#ifndef __IDeckLinkAudioOutputCallback_INTERFACE_DEFINED__
#define __IDeckLinkAudioOutputCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkAudioOutputCallback, 0x403c681b, 0x7f46, 0x4a12, 0xb9,0x93, 0x2b,0xb1,0x27,0x08,0x4e,0xe6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("403c681b-7f46-4a12-b993-2bb127084ee6")
IDeckLinkAudioOutputCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE RenderAudioSamples(
        BOOL preroll) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkAudioOutputCallback, 0x403c681b, 0x7f46, 0x4a12, 0xb9,0x93, 0x2b,0xb1,0x27,0x08,0x4e,0xe6)
#endif
#else
typedef struct IDeckLinkAudioOutputCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkAudioOutputCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkAudioOutputCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkAudioOutputCallback *This);

    /*** IDeckLinkAudioOutputCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *RenderAudioSamples)(
        IDeckLinkAudioOutputCallback *This,
        BOOL preroll);

    END_INTERFACE
} IDeckLinkAudioOutputCallbackVtbl;

interface IDeckLinkAudioOutputCallback {
    CONST_VTBL IDeckLinkAudioOutputCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkAudioOutputCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkAudioOutputCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkAudioOutputCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkAudioOutputCallback methods ***/
#define IDeckLinkAudioOutputCallback_RenderAudioSamples(This,preroll) (This)->lpVtbl->RenderAudioSamples(This,preroll)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkAudioOutputCallback_QueryInterface(IDeckLinkAudioOutputCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkAudioOutputCallback_AddRef(IDeckLinkAudioOutputCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkAudioOutputCallback_Release(IDeckLinkAudioOutputCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkAudioOutputCallback methods ***/
static FORCEINLINE HRESULT IDeckLinkAudioOutputCallback_RenderAudioSamples(IDeckLinkAudioOutputCallback* This,BOOL preroll) {
    return This->lpVtbl->RenderAudioSamples(This,preroll);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkAudioOutputCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkIterator interface
 */
#ifndef __IDeckLinkIterator_INTERFACE_DEFINED__
#define __IDeckLinkIterator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkIterator, 0x50fb36cd, 0x3063, 0x4b73, 0xbd,0xbb, 0x95,0x80,0x87,0xf2,0xd8,0xba);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("50fb36cd-3063-4b73-bdbb-958087f2d8ba")
IDeckLinkIterator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        IDeckLink **deckLinkInstance) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkIterator, 0x50fb36cd, 0x3063, 0x4b73, 0xbd,0xbb, 0x95,0x80,0x87,0xf2,0xd8,0xba)
#endif
#else
typedef struct IDeckLinkIteratorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkIterator *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkIterator *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkIterator *This);

    /*** IDeckLinkIterator methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IDeckLinkIterator *This,
        IDeckLink **deckLinkInstance);

    END_INTERFACE
} IDeckLinkIteratorVtbl;

interface IDeckLinkIterator {
    CONST_VTBL IDeckLinkIteratorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkIterator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkIterator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkIterator_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkIterator methods ***/
#define IDeckLinkIterator_Next(This,deckLinkInstance) (This)->lpVtbl->Next(This,deckLinkInstance)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkIterator_QueryInterface(IDeckLinkIterator* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkIterator_AddRef(IDeckLinkIterator* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkIterator_Release(IDeckLinkIterator* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkIterator methods ***/
static FORCEINLINE HRESULT IDeckLinkIterator_Next(IDeckLinkIterator* This,IDeckLink **deckLinkInstance) {
    return This->lpVtbl->Next(This,deckLinkInstance);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkIterator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkAPIInformation interface
 */
#ifndef __IDeckLinkAPIInformation_INTERFACE_DEFINED__
#define __IDeckLinkAPIInformation_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkAPIInformation, 0x7bea3c68, 0x730d, 0x4322, 0xaf,0x34, 0x8a,0x71,0x52,0xb5,0x32,0xa4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7bea3c68-730d-4322-af34-8a7152b532a4")
IDeckLinkAPIInformation : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkAPIInformationID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkAPIInformationID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkAPIInformationID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkAPIInformationID cfgID,
        BSTR *value) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkAPIInformation, 0x7bea3c68, 0x730d, 0x4322, 0xaf,0x34, 0x8a,0x71,0x52,0xb5,0x32,0xa4)
#endif
#else
typedef struct IDeckLinkAPIInformationVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkAPIInformation *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkAPIInformation *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkAPIInformation *This);

    /*** IDeckLinkAPIInformation methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkAPIInformation *This,
        BMDDeckLinkAPIInformationID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkAPIInformation *This,
        BMDDeckLinkAPIInformationID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkAPIInformation *This,
        BMDDeckLinkAPIInformationID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkAPIInformation *This,
        BMDDeckLinkAPIInformationID cfgID,
        BSTR *value);

    END_INTERFACE
} IDeckLinkAPIInformationVtbl;

interface IDeckLinkAPIInformation {
    CONST_VTBL IDeckLinkAPIInformationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkAPIInformation_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkAPIInformation_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkAPIInformation_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkAPIInformation methods ***/
#define IDeckLinkAPIInformation_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IDeckLinkAPIInformation_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkAPIInformation_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IDeckLinkAPIInformation_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkAPIInformation_QueryInterface(IDeckLinkAPIInformation* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkAPIInformation_AddRef(IDeckLinkAPIInformation* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkAPIInformation_Release(IDeckLinkAPIInformation* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkAPIInformation methods ***/
static FORCEINLINE HRESULT IDeckLinkAPIInformation_GetFlag(IDeckLinkAPIInformation* This,BMDDeckLinkAPIInformationID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkAPIInformation_GetInt(IDeckLinkAPIInformation* This,BMDDeckLinkAPIInformationID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkAPIInformation_GetFloat(IDeckLinkAPIInformation* This,BMDDeckLinkAPIInformationID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkAPIInformation_GetString(IDeckLinkAPIInformation* This,BMDDeckLinkAPIInformationID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkAPIInformation_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkOutput interface
 */
#ifndef __IDeckLinkOutput_INTERFACE_DEFINED__
#define __IDeckLinkOutput_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkOutput, 0xbe2d9020, 0x461e, 0x442f, 0x84,0xb7, 0xe9,0x49,0xcb,0x95,0x3b,0x9d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("be2d9020-461e-442f-84b7-e949cb953b9d")
IDeckLinkOutput : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedPixelFormat,
        BMDVideoOutputConversionMode conversionMode,
        BMDSupportedVideoModeFlags flags,
        BMDDisplayMode *actualMode,
        BOOL *supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput(
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame(
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame **outFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData(
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync(
        IDeckLinkVideoFrame *theFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame(
        IDeckLinkVideoFrame *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback(
        IDeckLinkVideoOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount(
        unsigned int *bufferedFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync(
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples(
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount(
        unsigned int *bufferedSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAudioCallback(
        IDeckLinkAudioOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback(
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback(
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning(
        BOOL *active) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *streamTime,
        double *playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus(
        BMDReferenceStatus *referenceStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrameCompletionReferenceTimestamp(
        IDeckLinkVideoFrame *theFrame,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *frameCompletionTimestamp) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkOutput, 0xbe2d9020, 0x461e, 0x442f, 0x84,0xb7, 0xe9,0x49,0xcb,0x95,0x3b,0x9d)
#endif
#else
typedef struct IDeckLinkOutputVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkOutput *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkOutput *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkOutput *This);

    /*** IDeckLinkOutput methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkOutput *This,
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedPixelFormat,
        BMDVideoOutputConversionMode conversionMode,
        BMDSupportedVideoModeFlags flags,
        BMDDisplayMode *actualMode,
        BOOL *supported);

    HRESULT (STDMETHODCALLTYPE *GetDisplayMode)(
        IDeckLinkOutput *This,
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkOutput *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkOutput *This,
        IDeckLinkScreenPreviewCallback *previewCallback);

    HRESULT (STDMETHODCALLTYPE *EnableVideoOutput)(
        IDeckLinkOutput *This,
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoOutput)(
        IDeckLinkOutput *This);

    HRESULT (STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator)(
        IDeckLinkOutput *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *CreateVideoFrame)(
        IDeckLinkOutput *This,
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame **outFrame);

    HRESULT (STDMETHODCALLTYPE *CreateAncillaryData)(
        IDeckLinkOutput *This,
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer);

    HRESULT (STDMETHODCALLTYPE *DisplayVideoFrameSync)(
        IDeckLinkOutput *This,
        IDeckLinkVideoFrame *theFrame);

    HRESULT (STDMETHODCALLTYPE *ScheduleVideoFrame)(
        IDeckLinkOutput *This,
        IDeckLinkVideoFrame *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback)(
        IDeckLinkOutput *This,
        IDeckLinkVideoOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetBufferedVideoFrameCount)(
        IDeckLinkOutput *This,
        unsigned int *bufferedFrameCount);

    HRESULT (STDMETHODCALLTYPE *EnableAudioOutput)(
        IDeckLinkOutput *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType);

    HRESULT (STDMETHODCALLTYPE *DisableAudioOutput)(
        IDeckLinkOutput *This);

    HRESULT (STDMETHODCALLTYPE *WriteAudioSamplesSync)(
        IDeckLinkOutput *This,
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *BeginAudioPreroll)(
        IDeckLinkOutput *This);

    HRESULT (STDMETHODCALLTYPE *EndAudioPreroll)(
        IDeckLinkOutput *This);

    HRESULT (STDMETHODCALLTYPE *ScheduleAudioSamples)(
        IDeckLinkOutput *This,
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount)(
        IDeckLinkOutput *This,
        unsigned int *bufferedSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *FlushBufferedAudioSamples)(
        IDeckLinkOutput *This);

    HRESULT (STDMETHODCALLTYPE *SetAudioCallback)(
        IDeckLinkOutput *This,
        IDeckLinkAudioOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *StartScheduledPlayback)(
        IDeckLinkOutput *This,
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *StopScheduledPlayback)(
        IDeckLinkOutput *This,
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *IsScheduledPlaybackRunning)(
        IDeckLinkOutput *This,
        BOOL *active);

    HRESULT (STDMETHODCALLTYPE *GetScheduledStreamTime)(
        IDeckLinkOutput *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *streamTime,
        double *playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *GetReferenceStatus)(
        IDeckLinkOutput *This,
        BMDReferenceStatus *referenceStatus);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkOutput *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    HRESULT (STDMETHODCALLTYPE *GetFrameCompletionReferenceTimestamp)(
        IDeckLinkOutput *This,
        IDeckLinkVideoFrame *theFrame,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *frameCompletionTimestamp);

    END_INTERFACE
} IDeckLinkOutputVtbl;

interface IDeckLinkOutput {
    CONST_VTBL IDeckLinkOutputVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkOutput_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkOutput_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkOutput_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkOutput methods ***/
#define IDeckLinkOutput_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) (This)->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported)
#define IDeckLinkOutput_GetDisplayMode(This,displayMode,resultDisplayMode) (This)->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode)
#define IDeckLinkOutput_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkOutput_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkOutput_EnableVideoOutput(This,displayMode,flags) (This)->lpVtbl->EnableVideoOutput(This,displayMode,flags)
#define IDeckLinkOutput_DisableVideoOutput(This) (This)->lpVtbl->DisableVideoOutput(This)
#define IDeckLinkOutput_SetVideoOutputFrameMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator)
#define IDeckLinkOutput_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) (This)->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)
#define IDeckLinkOutput_CreateAncillaryData(This,pixelFormat,outBuffer) (This)->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer)
#define IDeckLinkOutput_DisplayVideoFrameSync(This,theFrame) (This)->lpVtbl->DisplayVideoFrameSync(This,theFrame)
#define IDeckLinkOutput_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) (This)->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)
#define IDeckLinkOutput_SetScheduledFrameCompletionCallback(This,theCallback) (This)->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback)
#define IDeckLinkOutput_GetBufferedVideoFrameCount(This,bufferedFrameCount) (This)->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount)
#define IDeckLinkOutput_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) (This)->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType)
#define IDeckLinkOutput_DisableAudioOutput(This) (This)->lpVtbl->DisableAudioOutput(This)
#define IDeckLinkOutput_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) (This)->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)
#define IDeckLinkOutput_BeginAudioPreroll(This) (This)->lpVtbl->BeginAudioPreroll(This)
#define IDeckLinkOutput_EndAudioPreroll(This) (This)->lpVtbl->EndAudioPreroll(This)
#define IDeckLinkOutput_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) (This)->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)
#define IDeckLinkOutput_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) (This)->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount)
#define IDeckLinkOutput_FlushBufferedAudioSamples(This) (This)->lpVtbl->FlushBufferedAudioSamples(This)
#define IDeckLinkOutput_SetAudioCallback(This,theCallback) (This)->lpVtbl->SetAudioCallback(This,theCallback)
#define IDeckLinkOutput_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) (This)->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)
#define IDeckLinkOutput_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) (This)->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)
#define IDeckLinkOutput_IsScheduledPlaybackRunning(This,active) (This)->lpVtbl->IsScheduledPlaybackRunning(This,active)
#define IDeckLinkOutput_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) (This)->lpVtbl->GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed)
#define IDeckLinkOutput_GetReferenceStatus(This,referenceStatus) (This)->lpVtbl->GetReferenceStatus(This,referenceStatus)
#define IDeckLinkOutput_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#define IDeckLinkOutput_GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) (This)->lpVtbl->GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_QueryInterface(IDeckLinkOutput* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkOutput_AddRef(IDeckLinkOutput* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkOutput_Release(IDeckLinkOutput* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkOutput methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_DoesSupportVideoMode(IDeckLinkOutput* This,BMDVideoConnection connection,BMDDisplayMode requestedMode,BMDPixelFormat requestedPixelFormat,BMDVideoOutputConversionMode conversionMode,BMDSupportedVideoModeFlags flags,BMDDisplayMode *actualMode,BOOL *supported) {
    return This->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported);
}
static FORCEINLINE HRESULT IDeckLinkOutput_GetDisplayMode(IDeckLinkOutput* This,BMDDisplayMode displayMode,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkOutput_GetDisplayModeIterator(IDeckLinkOutput* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_SetScreenPreviewCallback(IDeckLinkOutput* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_EnableVideoOutput(IDeckLinkOutput* This,BMDDisplayMode displayMode,BMDVideoOutputFlags flags) {
    return This->lpVtbl->EnableVideoOutput(This,displayMode,flags);
}
static FORCEINLINE HRESULT IDeckLinkOutput_DisableVideoOutput(IDeckLinkOutput* This) {
    return This->lpVtbl->DisableVideoOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_SetVideoOutputFrameMemoryAllocator(IDeckLinkOutput* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_CreateVideoFrame(IDeckLinkOutput* This,int width,int height,int rowBytes,BMDPixelFormat pixelFormat,BMDFrameFlags flags,IDeckLinkMutableVideoFrame **outFrame) {
    return This->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_CreateAncillaryData(IDeckLinkOutput* This,BMDPixelFormat pixelFormat,IDeckLinkVideoFrameAncillary **outBuffer) {
    return This->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer);
}
static FORCEINLINE HRESULT IDeckLinkOutput_DisplayVideoFrameSync(IDeckLinkOutput* This,IDeckLinkVideoFrame *theFrame) {
    return This->lpVtbl->DisplayVideoFrameSync(This,theFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_ScheduleVideoFrame(IDeckLinkOutput* This,IDeckLinkVideoFrame *theFrame,BMDTimeValue displayTime,BMDTimeValue displayDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_SetScheduledFrameCompletionCallback(IDeckLinkOutput* This,IDeckLinkVideoOutputCallback *theCallback) {
    return This->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_GetBufferedVideoFrameCount(IDeckLinkOutput* This,unsigned int *bufferedFrameCount) {
    return This->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_EnableAudioOutput(IDeckLinkOutput* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount,BMDAudioOutputStreamType streamType) {
    return This->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType);
}
static FORCEINLINE HRESULT IDeckLinkOutput_DisableAudioOutput(IDeckLinkOutput* This) {
    return This->lpVtbl->DisableAudioOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_WriteAudioSamplesSync(IDeckLinkOutput* This,void *buffer,unsigned int sampleFrameCount,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_BeginAudioPreroll(IDeckLinkOutput* This) {
    return This->lpVtbl->BeginAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_EndAudioPreroll(IDeckLinkOutput* This) {
    return This->lpVtbl->EndAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_ScheduleAudioSamples(IDeckLinkOutput* This,void *buffer,unsigned int sampleFrameCount,BMDTimeValue streamTime,BMDTimeScale timeScale,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_GetBufferedAudioSampleFrameCount(IDeckLinkOutput* This,unsigned int *bufferedSampleFrameCount) {
    return This->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_FlushBufferedAudioSamples(IDeckLinkOutput* This) {
    return This->lpVtbl->FlushBufferedAudioSamples(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_SetAudioCallback(IDeckLinkOutput* This,IDeckLinkAudioOutputCallback *theCallback) {
    return This->lpVtbl->SetAudioCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_StartScheduledPlayback(IDeckLinkOutput* This,BMDTimeValue playbackStartTime,BMDTimeScale timeScale,double playbackSpeed) {
    return This->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_StopScheduledPlayback(IDeckLinkOutput* This,BMDTimeValue stopPlaybackAtTime,BMDTimeValue *actualStopTime,BMDTimeScale timeScale) {
    return This->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_IsScheduledPlaybackRunning(IDeckLinkOutput* This,BOOL *active) {
    return This->lpVtbl->IsScheduledPlaybackRunning(This,active);
}
static FORCEINLINE HRESULT IDeckLinkOutput_GetScheduledStreamTime(IDeckLinkOutput* This,BMDTimeScale desiredTimeScale,BMDTimeValue *streamTime,double *playbackSpeed) {
    return This->lpVtbl->GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_GetReferenceStatus(IDeckLinkOutput* This,BMDReferenceStatus *referenceStatus) {
    return This->lpVtbl->GetReferenceStatus(This,referenceStatus);
}
static FORCEINLINE HRESULT IDeckLinkOutput_GetHardwareReferenceClock(IDeckLinkOutput* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_GetFrameCompletionReferenceTimestamp(IDeckLinkOutput* This,IDeckLinkVideoFrame *theFrame,BMDTimeScale desiredTimeScale,BMDTimeValue *frameCompletionTimestamp) {
    return This->lpVtbl->GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkOutput_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInput interface
 */
#ifndef __IDeckLinkInput_INTERFACE_DEFINED__
#define __IDeckLinkInput_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInput, 0xc21cdb6e, 0xf414, 0x46e4, 0xa6,0x36, 0x80,0xa5,0x66,0xe0,0xed,0x37);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c21cdb6e-f414-46e4-a636-80a566e0ed37")
IDeckLinkInput : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedPixelFormat,
        BMDVideoInputConversionMode conversionMode,
        BMDSupportedVideoModeFlags flags,
        BMDDisplayMode *actualMode,
        BOOL *supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoInput(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount(
        unsigned int *availableFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoInputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioInput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount(
        unsigned int *availableSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkInputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInput, 0xc21cdb6e, 0xf414, 0x46e4, 0xa6,0x36, 0x80,0xa5,0x66,0xe0,0xed,0x37)
#endif
#else
typedef struct IDeckLinkInputVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInput *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInput *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInput *This);

    /*** IDeckLinkInput methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkInput *This,
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedPixelFormat,
        BMDVideoInputConversionMode conversionMode,
        BMDSupportedVideoModeFlags flags,
        BMDDisplayMode *actualMode,
        BOOL *supported);

    HRESULT (STDMETHODCALLTYPE *GetDisplayMode)(
        IDeckLinkInput *This,
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkInput *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkInput *This,
        IDeckLinkScreenPreviewCallback *previewCallback);

    HRESULT (STDMETHODCALLTYPE *EnableVideoInput)(
        IDeckLinkInput *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoInput)(
        IDeckLinkInput *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableVideoFrameCount)(
        IDeckLinkInput *This,
        unsigned int *availableFrameCount);

    HRESULT (STDMETHODCALLTYPE *SetVideoInputFrameMemoryAllocator)(
        IDeckLinkInput *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *EnableAudioInput)(
        IDeckLinkInput *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioInput)(
        IDeckLinkInput *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount)(
        IDeckLinkInput *This,
        unsigned int *availableSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *StartStreams)(
        IDeckLinkInput *This);

    HRESULT (STDMETHODCALLTYPE *StopStreams)(
        IDeckLinkInput *This);

    HRESULT (STDMETHODCALLTYPE *PauseStreams)(
        IDeckLinkInput *This);

    HRESULT (STDMETHODCALLTYPE *FlushStreams)(
        IDeckLinkInput *This);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkInput *This,
        IDeckLinkInputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkInput *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    END_INTERFACE
} IDeckLinkInputVtbl;

interface IDeckLinkInput {
    CONST_VTBL IDeckLinkInputVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkInput_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkInput_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkInput_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkInput methods ***/
#define IDeckLinkInput_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) (This)->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported)
#define IDeckLinkInput_GetDisplayMode(This,displayMode,resultDisplayMode) (This)->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode)
#define IDeckLinkInput_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkInput_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkInput_EnableVideoInput(This,displayMode,pixelFormat,flags) (This)->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags)
#define IDeckLinkInput_DisableVideoInput(This) (This)->lpVtbl->DisableVideoInput(This)
#define IDeckLinkInput_GetAvailableVideoFrameCount(This,availableFrameCount) (This)->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount)
#define IDeckLinkInput_SetVideoInputFrameMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetVideoInputFrameMemoryAllocator(This,theAllocator)
#define IDeckLinkInput_EnableAudioInput(This,sampleRate,sampleType,channelCount) (This)->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount)
#define IDeckLinkInput_DisableAudioInput(This) (This)->lpVtbl->DisableAudioInput(This)
#define IDeckLinkInput_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) (This)->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)
#define IDeckLinkInput_StartStreams(This) (This)->lpVtbl->StartStreams(This)
#define IDeckLinkInput_StopStreams(This) (This)->lpVtbl->StopStreams(This)
#define IDeckLinkInput_PauseStreams(This) (This)->lpVtbl->PauseStreams(This)
#define IDeckLinkInput_FlushStreams(This) (This)->lpVtbl->FlushStreams(This)
#define IDeckLinkInput_SetCallback(This,theCallback) (This)->lpVtbl->SetCallback(This,theCallback)
#define IDeckLinkInput_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_QueryInterface(IDeckLinkInput* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInput_AddRef(IDeckLinkInput* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInput_Release(IDeckLinkInput* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInput methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_DoesSupportVideoMode(IDeckLinkInput* This,BMDVideoConnection connection,BMDDisplayMode requestedMode,BMDPixelFormat requestedPixelFormat,BMDVideoInputConversionMode conversionMode,BMDSupportedVideoModeFlags flags,BMDDisplayMode *actualMode,BOOL *supported) {
    return This->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported);
}
static FORCEINLINE HRESULT IDeckLinkInput_GetDisplayMode(IDeckLinkInput* This,BMDDisplayMode displayMode,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkInput_GetDisplayModeIterator(IDeckLinkInput* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkInput_SetScreenPreviewCallback(IDeckLinkInput* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_EnableVideoInput(IDeckLinkInput* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags) {
    return This->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags);
}
static FORCEINLINE HRESULT IDeckLinkInput_DisableVideoInput(IDeckLinkInput* This) {
    return This->lpVtbl->DisableVideoInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_GetAvailableVideoFrameCount(IDeckLinkInput* This,unsigned int *availableFrameCount) {
    return This->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_SetVideoInputFrameMemoryAllocator(IDeckLinkInput* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoInputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkInput_EnableAudioInput(IDeckLinkInput* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_DisableAudioInput(IDeckLinkInput* This) {
    return This->lpVtbl->DisableAudioInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_GetAvailableAudioSampleFrameCount(IDeckLinkInput* This,unsigned int *availableSampleFrameCount) {
    return This->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_StartStreams(IDeckLinkInput* This) {
    return This->lpVtbl->StartStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_StopStreams(IDeckLinkInput* This) {
    return This->lpVtbl->StopStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_PauseStreams(IDeckLinkInput* This) {
    return This->lpVtbl->PauseStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_FlushStreams(IDeckLinkInput* This) {
    return This->lpVtbl->FlushStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_SetCallback(IDeckLinkInput* This,IDeckLinkInputCallback *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_GetHardwareReferenceClock(IDeckLinkInput* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInput_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkHDMIInputEDID interface
 */
#ifndef __IDeckLinkHDMIInputEDID_INTERFACE_DEFINED__
#define __IDeckLinkHDMIInputEDID_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkHDMIInputEDID, 0xabbbacbc, 0x45bc, 0x4665, 0x9d,0x92, 0xac,0xe6,0xe5,0xa9,0x79,0x02);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("abbbacbc-45bc-4665-9d92-ace6e5a97902")
IDeckLinkHDMIInputEDID : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetInt(
        BMDDeckLinkHDMIInputEDIDID cfgID,
        LONGLONG value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkHDMIInputEDIDID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteToEDID(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkHDMIInputEDID, 0xabbbacbc, 0x45bc, 0x4665, 0x9d,0x92, 0xac,0xe6,0xe5,0xa9,0x79,0x02)
#endif
#else
typedef struct IDeckLinkHDMIInputEDIDVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkHDMIInputEDID *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkHDMIInputEDID *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkHDMIInputEDID *This);

    /*** IDeckLinkHDMIInputEDID methods ***/
    HRESULT (STDMETHODCALLTYPE *SetInt)(
        IDeckLinkHDMIInputEDID *This,
        BMDDeckLinkHDMIInputEDIDID cfgID,
        LONGLONG value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkHDMIInputEDID *This,
        BMDDeckLinkHDMIInputEDIDID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *WriteToEDID)(
        IDeckLinkHDMIInputEDID *This);

    END_INTERFACE
} IDeckLinkHDMIInputEDIDVtbl;

interface IDeckLinkHDMIInputEDID {
    CONST_VTBL IDeckLinkHDMIInputEDIDVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkHDMIInputEDID_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkHDMIInputEDID_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkHDMIInputEDID_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkHDMIInputEDID methods ***/
#define IDeckLinkHDMIInputEDID_SetInt(This,cfgID,value) (This)->lpVtbl->SetInt(This,cfgID,value)
#define IDeckLinkHDMIInputEDID_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkHDMIInputEDID_WriteToEDID(This) (This)->lpVtbl->WriteToEDID(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkHDMIInputEDID_QueryInterface(IDeckLinkHDMIInputEDID* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkHDMIInputEDID_AddRef(IDeckLinkHDMIInputEDID* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkHDMIInputEDID_Release(IDeckLinkHDMIInputEDID* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkHDMIInputEDID methods ***/
static FORCEINLINE HRESULT IDeckLinkHDMIInputEDID_SetInt(IDeckLinkHDMIInputEDID* This,BMDDeckLinkHDMIInputEDIDID cfgID,LONGLONG value) {
    return This->lpVtbl->SetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkHDMIInputEDID_GetInt(IDeckLinkHDMIInputEDID* This,BMDDeckLinkHDMIInputEDIDID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkHDMIInputEDID_WriteToEDID(IDeckLinkHDMIInputEDID* This) {
    return This->lpVtbl->WriteToEDID(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkHDMIInputEDID_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkEncoderInput interface
 */
#ifndef __IDeckLinkEncoderInput_INTERFACE_DEFINED__
#define __IDeckLinkEncoderInput_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkEncoderInput, 0xf222551d, 0x13df, 0x4fd8, 0xb5,0x87, 0x9d,0x4f,0x19,0xec,0x12,0xc9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f222551d-13df-4fd8-b587-9d4f19ec12c9")
IDeckLinkEncoderInput : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedCodec,
        unsigned int requestedCodecProfile,
        BMDSupportedVideoModeFlags flags,
        BOOL *supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoInput(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailablePacketsCount(
        unsigned int *availablePacketsCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioInput(
        BMDAudioFormat audioFormat,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount(
        unsigned int *availableSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkEncoderInputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkEncoderInput, 0xf222551d, 0x13df, 0x4fd8, 0xb5,0x87, 0x9d,0x4f,0x19,0xec,0x12,0xc9)
#endif
#else
typedef struct IDeckLinkEncoderInputVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkEncoderInput *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkEncoderInput *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkEncoderInput *This);

    /*** IDeckLinkEncoderInput methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkEncoderInput *This,
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedCodec,
        unsigned int requestedCodecProfile,
        BMDSupportedVideoModeFlags flags,
        BOOL *supported);

    HRESULT (STDMETHODCALLTYPE *GetDisplayMode)(
        IDeckLinkEncoderInput *This,
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkEncoderInput *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *EnableVideoInput)(
        IDeckLinkEncoderInput *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoInput)(
        IDeckLinkEncoderInput *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailablePacketsCount)(
        IDeckLinkEncoderInput *This,
        unsigned int *availablePacketsCount);

    HRESULT (STDMETHODCALLTYPE *SetMemoryAllocator)(
        IDeckLinkEncoderInput *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *EnableAudioInput)(
        IDeckLinkEncoderInput *This,
        BMDAudioFormat audioFormat,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioInput)(
        IDeckLinkEncoderInput *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount)(
        IDeckLinkEncoderInput *This,
        unsigned int *availableSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *StartStreams)(
        IDeckLinkEncoderInput *This);

    HRESULT (STDMETHODCALLTYPE *StopStreams)(
        IDeckLinkEncoderInput *This);

    HRESULT (STDMETHODCALLTYPE *PauseStreams)(
        IDeckLinkEncoderInput *This);

    HRESULT (STDMETHODCALLTYPE *FlushStreams)(
        IDeckLinkEncoderInput *This);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkEncoderInput *This,
        IDeckLinkEncoderInputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkEncoderInput *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    END_INTERFACE
} IDeckLinkEncoderInputVtbl;

interface IDeckLinkEncoderInput {
    CONST_VTBL IDeckLinkEncoderInputVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkEncoderInput_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkEncoderInput_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkEncoderInput_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkEncoderInput methods ***/
#define IDeckLinkEncoderInput_DoesSupportVideoMode(This,connection,requestedMode,requestedCodec,requestedCodecProfile,flags,supported) (This)->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedCodec,requestedCodecProfile,flags,supported)
#define IDeckLinkEncoderInput_GetDisplayMode(This,displayMode,resultDisplayMode) (This)->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode)
#define IDeckLinkEncoderInput_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkEncoderInput_EnableVideoInput(This,displayMode,pixelFormat,flags) (This)->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags)
#define IDeckLinkEncoderInput_DisableVideoInput(This) (This)->lpVtbl->DisableVideoInput(This)
#define IDeckLinkEncoderInput_GetAvailablePacketsCount(This,availablePacketsCount) (This)->lpVtbl->GetAvailablePacketsCount(This,availablePacketsCount)
#define IDeckLinkEncoderInput_SetMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetMemoryAllocator(This,theAllocator)
#define IDeckLinkEncoderInput_EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount) (This)->lpVtbl->EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount)
#define IDeckLinkEncoderInput_DisableAudioInput(This) (This)->lpVtbl->DisableAudioInput(This)
#define IDeckLinkEncoderInput_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) (This)->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)
#define IDeckLinkEncoderInput_StartStreams(This) (This)->lpVtbl->StartStreams(This)
#define IDeckLinkEncoderInput_StopStreams(This) (This)->lpVtbl->StopStreams(This)
#define IDeckLinkEncoderInput_PauseStreams(This) (This)->lpVtbl->PauseStreams(This)
#define IDeckLinkEncoderInput_FlushStreams(This) (This)->lpVtbl->FlushStreams(This)
#define IDeckLinkEncoderInput_SetCallback(This,theCallback) (This)->lpVtbl->SetCallback(This,theCallback)
#define IDeckLinkEncoderInput_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderInput_QueryInterface(IDeckLinkEncoderInput* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkEncoderInput_AddRef(IDeckLinkEncoderInput* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkEncoderInput_Release(IDeckLinkEncoderInput* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkEncoderInput methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderInput_DoesSupportVideoMode(IDeckLinkEncoderInput* This,BMDVideoConnection connection,BMDDisplayMode requestedMode,BMDPixelFormat requestedCodec,unsigned int requestedCodecProfile,BMDSupportedVideoModeFlags flags,BOOL *supported) {
    return This->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedCodec,requestedCodecProfile,flags,supported);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_GetDisplayMode(IDeckLinkEncoderInput* This,BMDDisplayMode displayMode,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_GetDisplayModeIterator(IDeckLinkEncoderInput* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_EnableVideoInput(IDeckLinkEncoderInput* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags) {
    return This->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_DisableVideoInput(IDeckLinkEncoderInput* This) {
    return This->lpVtbl->DisableVideoInput(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_GetAvailablePacketsCount(IDeckLinkEncoderInput* This,unsigned int *availablePacketsCount) {
    return This->lpVtbl->GetAvailablePacketsCount(This,availablePacketsCount);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_SetMemoryAllocator(IDeckLinkEncoderInput* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_EnableAudioInput(IDeckLinkEncoderInput* This,BMDAudioFormat audioFormat,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_DisableAudioInput(IDeckLinkEncoderInput* This) {
    return This->lpVtbl->DisableAudioInput(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_GetAvailableAudioSampleFrameCount(IDeckLinkEncoderInput* This,unsigned int *availableSampleFrameCount) {
    return This->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_StartStreams(IDeckLinkEncoderInput* This) {
    return This->lpVtbl->StartStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_StopStreams(IDeckLinkEncoderInput* This) {
    return This->lpVtbl->StopStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_PauseStreams(IDeckLinkEncoderInput* This) {
    return This->lpVtbl->PauseStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_FlushStreams(IDeckLinkEncoderInput* This) {
    return This->lpVtbl->FlushStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_SetCallback(IDeckLinkEncoderInput* This,IDeckLinkEncoderInputCallback *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_GetHardwareReferenceClock(IDeckLinkEncoderInput* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkEncoderInput_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoFrame interface
 */
#ifndef __IDeckLinkVideoFrame_INTERFACE_DEFINED__
#define __IDeckLinkVideoFrame_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoFrame, 0x3f716fe0, 0xf023, 0x4111, 0xbe,0x5d, 0xef,0x44,0x14,0xc0,0x5b,0x17);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3f716fe0-f023-4111-be5d-ef4414c05b17")
IDeckLinkVideoFrame : public IUnknown
{
    virtual LONG STDMETHODCALLTYPE GetWidth(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetHeight(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetRowBytes(
        ) = 0;

    virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat(
        ) = 0;

    virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        void **buffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecode(
        BMDTimecodeFormat format,
        IDeckLinkTimecode **timecode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAncillaryData(
        IDeckLinkVideoFrameAncillary **ancillary) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoFrame, 0x3f716fe0, 0xf023, 0x4111, 0xbe,0x5d, 0xef,0x44,0x14,0xc0,0x5b,0x17)
#endif
#else
typedef struct IDeckLinkVideoFrameVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoFrame *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoFrame *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoFrame *This);

    /*** IDeckLinkVideoFrame methods ***/
    LONG (STDMETHODCALLTYPE *GetWidth)(
        IDeckLinkVideoFrame *This);

    LONG (STDMETHODCALLTYPE *GetHeight)(
        IDeckLinkVideoFrame *This);

    LONG (STDMETHODCALLTYPE *GetRowBytes)(
        IDeckLinkVideoFrame *This);

    BMDPixelFormat (STDMETHODCALLTYPE *GetPixelFormat)(
        IDeckLinkVideoFrame *This);

    BMDFrameFlags (STDMETHODCALLTYPE *GetFlags)(
        IDeckLinkVideoFrame *This);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkVideoFrame *This,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkVideoFrame *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode **timecode);

    HRESULT (STDMETHODCALLTYPE *GetAncillaryData)(
        IDeckLinkVideoFrame *This,
        IDeckLinkVideoFrameAncillary **ancillary);

    END_INTERFACE
} IDeckLinkVideoFrameVtbl;

interface IDeckLinkVideoFrame {
    CONST_VTBL IDeckLinkVideoFrameVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkVideoFrame_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkVideoFrame_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkVideoFrame_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoFrame methods ***/
#define IDeckLinkVideoFrame_GetWidth(This) (This)->lpVtbl->GetWidth(This)
#define IDeckLinkVideoFrame_GetHeight(This) (This)->lpVtbl->GetHeight(This)
#define IDeckLinkVideoFrame_GetRowBytes(This) (This)->lpVtbl->GetRowBytes(This)
#define IDeckLinkVideoFrame_GetPixelFormat(This) (This)->lpVtbl->GetPixelFormat(This)
#define IDeckLinkVideoFrame_GetFlags(This) (This)->lpVtbl->GetFlags(This)
#define IDeckLinkVideoFrame_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IDeckLinkVideoFrame_GetTimecode(This,format,timecode) (This)->lpVtbl->GetTimecode(This,format,timecode)
#define IDeckLinkVideoFrame_GetAncillaryData(This,ancillary) (This)->lpVtbl->GetAncillaryData(This,ancillary)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrame_QueryInterface(IDeckLinkVideoFrame* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoFrame_AddRef(IDeckLinkVideoFrame* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoFrame_Release(IDeckLinkVideoFrame* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrame methods ***/
static FORCEINLINE LONG IDeckLinkVideoFrame_GetWidth(IDeckLinkVideoFrame* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkVideoFrame_GetHeight(IDeckLinkVideoFrame* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE LONG IDeckLinkVideoFrame_GetRowBytes(IDeckLinkVideoFrame* This) {
    return This->lpVtbl->GetRowBytes(This);
}
static FORCEINLINE BMDPixelFormat IDeckLinkVideoFrame_GetPixelFormat(IDeckLinkVideoFrame* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE BMDFrameFlags IDeckLinkVideoFrame_GetFlags(IDeckLinkVideoFrame* This) {
    return This->lpVtbl->GetFlags(This);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrame_GetBytes(IDeckLinkVideoFrame* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrame_GetTimecode(IDeckLinkVideoFrame* This,BMDTimecodeFormat format,IDeckLinkTimecode **timecode) {
    return This->lpVtbl->GetTimecode(This,format,timecode);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrame_GetAncillaryData(IDeckLinkVideoFrame* This,IDeckLinkVideoFrameAncillary **ancillary) {
    return This->lpVtbl->GetAncillaryData(This,ancillary);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoFrame_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkMutableVideoFrame interface
 */
#ifndef __IDeckLinkMutableVideoFrame_INTERFACE_DEFINED__
#define __IDeckLinkMutableVideoFrame_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkMutableVideoFrame, 0x69e2639f, 0x40da, 0x4e19, 0xb6,0xf2, 0x20,0xac,0xe8,0x15,0xc3,0x90);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("69e2639f-40da-4e19-b6f2-20ace815c390")
IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
{
    virtual HRESULT STDMETHODCALLTYPE SetFlags(
        BMDFrameFlags newFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTimecode(
        BMDTimecodeFormat format,
        IDeckLinkTimecode *timecode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTimecodeFromComponents(
        BMDTimecodeFormat format,
        unsigned char hours,
        unsigned char minutes,
        unsigned char seconds,
        unsigned char frames,
        BMDTimecodeFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAncillaryData(
        IDeckLinkVideoFrameAncillary *ancillary) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTimecodeUserBits(
        BMDTimecodeFormat format,
        BMDTimecodeUserBits userBits) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkMutableVideoFrame, 0x69e2639f, 0x40da, 0x4e19, 0xb6,0xf2, 0x20,0xac,0xe8,0x15,0xc3,0x90)
#endif
#else
typedef struct IDeckLinkMutableVideoFrameVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkMutableVideoFrame *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkMutableVideoFrame *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkMutableVideoFrame *This);

    /*** IDeckLinkVideoFrame methods ***/
    LONG (STDMETHODCALLTYPE *GetWidth)(
        IDeckLinkMutableVideoFrame *This);

    LONG (STDMETHODCALLTYPE *GetHeight)(
        IDeckLinkMutableVideoFrame *This);

    LONG (STDMETHODCALLTYPE *GetRowBytes)(
        IDeckLinkMutableVideoFrame *This);

    BMDPixelFormat (STDMETHODCALLTYPE *GetPixelFormat)(
        IDeckLinkMutableVideoFrame *This);

    BMDFrameFlags (STDMETHODCALLTYPE *GetFlags)(
        IDeckLinkMutableVideoFrame *This);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkMutableVideoFrame *This,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkMutableVideoFrame *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode **timecode);

    HRESULT (STDMETHODCALLTYPE *GetAncillaryData)(
        IDeckLinkMutableVideoFrame *This,
        IDeckLinkVideoFrameAncillary **ancillary);

    /*** IDeckLinkMutableVideoFrame methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        IDeckLinkMutableVideoFrame *This,
        BMDFrameFlags newFlags);

    HRESULT (STDMETHODCALLTYPE *SetTimecode)(
        IDeckLinkMutableVideoFrame *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode *timecode);

    HRESULT (STDMETHODCALLTYPE *SetTimecodeFromComponents)(
        IDeckLinkMutableVideoFrame *This,
        BMDTimecodeFormat format,
        unsigned char hours,
        unsigned char minutes,
        unsigned char seconds,
        unsigned char frames,
        BMDTimecodeFlags flags);

    HRESULT (STDMETHODCALLTYPE *SetAncillaryData)(
        IDeckLinkMutableVideoFrame *This,
        IDeckLinkVideoFrameAncillary *ancillary);

    HRESULT (STDMETHODCALLTYPE *SetTimecodeUserBits)(
        IDeckLinkMutableVideoFrame *This,
        BMDTimecodeFormat format,
        BMDTimecodeUserBits userBits);

    END_INTERFACE
} IDeckLinkMutableVideoFrameVtbl;

interface IDeckLinkMutableVideoFrame {
    CONST_VTBL IDeckLinkMutableVideoFrameVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkMutableVideoFrame_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkMutableVideoFrame_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkMutableVideoFrame_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoFrame methods ***/
#define IDeckLinkMutableVideoFrame_GetWidth(This) (This)->lpVtbl->GetWidth(This)
#define IDeckLinkMutableVideoFrame_GetHeight(This) (This)->lpVtbl->GetHeight(This)
#define IDeckLinkMutableVideoFrame_GetRowBytes(This) (This)->lpVtbl->GetRowBytes(This)
#define IDeckLinkMutableVideoFrame_GetPixelFormat(This) (This)->lpVtbl->GetPixelFormat(This)
#define IDeckLinkMutableVideoFrame_GetFlags(This) (This)->lpVtbl->GetFlags(This)
#define IDeckLinkMutableVideoFrame_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IDeckLinkMutableVideoFrame_GetTimecode(This,format,timecode) (This)->lpVtbl->GetTimecode(This,format,timecode)
#define IDeckLinkMutableVideoFrame_GetAncillaryData(This,ancillary) (This)->lpVtbl->GetAncillaryData(This,ancillary)
/*** IDeckLinkMutableVideoFrame methods ***/
#define IDeckLinkMutableVideoFrame_SetFlags(This,newFlags) (This)->lpVtbl->SetFlags(This,newFlags)
#define IDeckLinkMutableVideoFrame_SetTimecode(This,format,timecode) (This)->lpVtbl->SetTimecode(This,format,timecode)
#define IDeckLinkMutableVideoFrame_SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags) (This)->lpVtbl->SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags)
#define IDeckLinkMutableVideoFrame_SetAncillaryData(This,ancillary) (This)->lpVtbl->SetAncillaryData(This,ancillary)
#define IDeckLinkMutableVideoFrame_SetTimecodeUserBits(This,format,userBits) (This)->lpVtbl->SetTimecodeUserBits(This,format,userBits)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_QueryInterface(IDeckLinkMutableVideoFrame* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkMutableVideoFrame_AddRef(IDeckLinkMutableVideoFrame* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkMutableVideoFrame_Release(IDeckLinkMutableVideoFrame* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrame methods ***/
static FORCEINLINE LONG IDeckLinkMutableVideoFrame_GetWidth(IDeckLinkMutableVideoFrame* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkMutableVideoFrame_GetHeight(IDeckLinkMutableVideoFrame* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE LONG IDeckLinkMutableVideoFrame_GetRowBytes(IDeckLinkMutableVideoFrame* This) {
    return This->lpVtbl->GetRowBytes(This);
}
static FORCEINLINE BMDPixelFormat IDeckLinkMutableVideoFrame_GetPixelFormat(IDeckLinkMutableVideoFrame* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE BMDFrameFlags IDeckLinkMutableVideoFrame_GetFlags(IDeckLinkMutableVideoFrame* This) {
    return This->lpVtbl->GetFlags(This);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_GetBytes(IDeckLinkMutableVideoFrame* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_GetTimecode(IDeckLinkMutableVideoFrame* This,BMDTimecodeFormat format,IDeckLinkTimecode **timecode) {
    return This->lpVtbl->GetTimecode(This,format,timecode);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_GetAncillaryData(IDeckLinkMutableVideoFrame* This,IDeckLinkVideoFrameAncillary **ancillary) {
    return This->lpVtbl->GetAncillaryData(This,ancillary);
}
/*** IDeckLinkMutableVideoFrame methods ***/
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_SetFlags(IDeckLinkMutableVideoFrame* This,BMDFrameFlags newFlags) {
    return This->lpVtbl->SetFlags(This,newFlags);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_SetTimecode(IDeckLinkMutableVideoFrame* This,BMDTimecodeFormat format,IDeckLinkTimecode *timecode) {
    return This->lpVtbl->SetTimecode(This,format,timecode);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_SetTimecodeFromComponents(IDeckLinkMutableVideoFrame* This,BMDTimecodeFormat format,unsigned char hours,unsigned char minutes,unsigned char seconds,unsigned char frames,BMDTimecodeFlags flags) {
    return This->lpVtbl->SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_SetAncillaryData(IDeckLinkMutableVideoFrame* This,IDeckLinkVideoFrameAncillary *ancillary) {
    return This->lpVtbl->SetAncillaryData(This,ancillary);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_SetTimecodeUserBits(IDeckLinkMutableVideoFrame* This,BMDTimecodeFormat format,BMDTimecodeUserBits userBits) {
    return This->lpVtbl->SetTimecodeUserBits(This,format,userBits);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkMutableVideoFrame_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoFrame3DExtensions interface
 */
#ifndef __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__
#define __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoFrame3DExtensions, 0xda0f7e4a, 0xedc7, 0x48a8, 0x9c,0xdd, 0x2d,0xb5,0x1c,0x72,0x9c,0xd7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("da0f7e4a-edc7-48a8-9cdd-2db51c729cd7")
IDeckLinkVideoFrame3DExtensions : public IUnknown
{
    virtual BMDVideo3DPackingFormat STDMETHODCALLTYPE Get3DPackingFormat(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrameForRightEye(
        IDeckLinkVideoFrame **rightEyeFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoFrame3DExtensions, 0xda0f7e4a, 0xedc7, 0x48a8, 0x9c,0xdd, 0x2d,0xb5,0x1c,0x72,0x9c,0xd7)
#endif
#else
typedef struct IDeckLinkVideoFrame3DExtensionsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoFrame3DExtensions *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoFrame3DExtensions *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoFrame3DExtensions *This);

    /*** IDeckLinkVideoFrame3DExtensions methods ***/
    BMDVideo3DPackingFormat (STDMETHODCALLTYPE *Get3DPackingFormat)(
        IDeckLinkVideoFrame3DExtensions *This);

    HRESULT (STDMETHODCALLTYPE *GetFrameForRightEye)(
        IDeckLinkVideoFrame3DExtensions *This,
        IDeckLinkVideoFrame **rightEyeFrame);

    END_INTERFACE
} IDeckLinkVideoFrame3DExtensionsVtbl;

interface IDeckLinkVideoFrame3DExtensions {
    CONST_VTBL IDeckLinkVideoFrame3DExtensionsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkVideoFrame3DExtensions methods ***/
#define IDeckLinkVideoFrame3DExtensions_Get3DPackingFormat(This) (This)->lpVtbl->Get3DPackingFormat(This)
#define IDeckLinkVideoFrame3DExtensions_GetFrameForRightEye(This,rightEyeFrame) (This)->lpVtbl->GetFrameForRightEye(This,rightEyeFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrame3DExtensions_QueryInterface(IDeckLinkVideoFrame3DExtensions* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoFrame3DExtensions_AddRef(IDeckLinkVideoFrame3DExtensions* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoFrame3DExtensions_Release(IDeckLinkVideoFrame3DExtensions* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrame3DExtensions methods ***/
static FORCEINLINE BMDVideo3DPackingFormat IDeckLinkVideoFrame3DExtensions_Get3DPackingFormat(IDeckLinkVideoFrame3DExtensions* This) {
    return This->lpVtbl->Get3DPackingFormat(This);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrame3DExtensions_GetFrameForRightEye(IDeckLinkVideoFrame3DExtensions* This,IDeckLinkVideoFrame **rightEyeFrame) {
    return This->lpVtbl->GetFrameForRightEye(This,rightEyeFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoFrameMetadataExtensions interface
 */
#ifndef __IDeckLinkVideoFrameMetadataExtensions_INTERFACE_DEFINED__
#define __IDeckLinkVideoFrameMetadataExtensions_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoFrameMetadataExtensions, 0xe232a5b7, 0x4db4, 0x44c9, 0x91,0x52, 0xf4,0x7c,0x12,0xe5,0xf0,0x51);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e232a5b7-4db4-44c9-9152-f47c12e5f051")
IDeckLinkVideoFrameMetadataExtensions : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkFrameMetadataID metadataID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkFrameMetadataID metadataID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkFrameMetadataID metadataID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkFrameMetadataID metadataID,
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        BMDDeckLinkFrameMetadataID metadataID,
        void *buffer,
        unsigned int *bufferSize) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoFrameMetadataExtensions, 0xe232a5b7, 0x4db4, 0x44c9, 0x91,0x52, 0xf4,0x7c,0x12,0xe5,0xf0,0x51)
#endif
#else
typedef struct IDeckLinkVideoFrameMetadataExtensionsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoFrameMetadataExtensions *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoFrameMetadataExtensions *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoFrameMetadataExtensions *This);

    /*** IDeckLinkVideoFrameMetadataExtensions methods ***/
    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkVideoFrameMetadataExtensions *This,
        BMDDeckLinkFrameMetadataID metadataID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkVideoFrameMetadataExtensions *This,
        BMDDeckLinkFrameMetadataID metadataID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkVideoFrameMetadataExtensions *This,
        BMDDeckLinkFrameMetadataID metadataID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkVideoFrameMetadataExtensions *This,
        BMDDeckLinkFrameMetadataID metadataID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkVideoFrameMetadataExtensions *This,
        BMDDeckLinkFrameMetadataID metadataID,
        void *buffer,
        unsigned int *bufferSize);

    END_INTERFACE
} IDeckLinkVideoFrameMetadataExtensionsVtbl;

interface IDeckLinkVideoFrameMetadataExtensions {
    CONST_VTBL IDeckLinkVideoFrameMetadataExtensionsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkVideoFrameMetadataExtensions_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkVideoFrameMetadataExtensions_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkVideoFrameMetadataExtensions_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoFrameMetadataExtensions methods ***/
#define IDeckLinkVideoFrameMetadataExtensions_GetInt(This,metadataID,value) (This)->lpVtbl->GetInt(This,metadataID,value)
#define IDeckLinkVideoFrameMetadataExtensions_GetFloat(This,metadataID,value) (This)->lpVtbl->GetFloat(This,metadataID,value)
#define IDeckLinkVideoFrameMetadataExtensions_GetFlag(This,metadataID,value) (This)->lpVtbl->GetFlag(This,metadataID,value)
#define IDeckLinkVideoFrameMetadataExtensions_GetString(This,metadataID,value) (This)->lpVtbl->GetString(This,metadataID,value)
#define IDeckLinkVideoFrameMetadataExtensions_GetBytes(This,metadataID,buffer,bufferSize) (This)->lpVtbl->GetBytes(This,metadataID,buffer,bufferSize)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_QueryInterface(IDeckLinkVideoFrameMetadataExtensions* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoFrameMetadataExtensions_AddRef(IDeckLinkVideoFrameMetadataExtensions* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoFrameMetadataExtensions_Release(IDeckLinkVideoFrameMetadataExtensions* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrameMetadataExtensions methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_GetInt(IDeckLinkVideoFrameMetadataExtensions* This,BMDDeckLinkFrameMetadataID metadataID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,metadataID,value);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_GetFloat(IDeckLinkVideoFrameMetadataExtensions* This,BMDDeckLinkFrameMetadataID metadataID,double *value) {
    return This->lpVtbl->GetFloat(This,metadataID,value);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_GetFlag(IDeckLinkVideoFrameMetadataExtensions* This,BMDDeckLinkFrameMetadataID metadataID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,metadataID,value);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_GetString(IDeckLinkVideoFrameMetadataExtensions* This,BMDDeckLinkFrameMetadataID metadataID,BSTR *value) {
    return This->lpVtbl->GetString(This,metadataID,value);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_GetBytes(IDeckLinkVideoFrameMetadataExtensions* This,BMDDeckLinkFrameMetadataID metadataID,void *buffer,unsigned int *bufferSize) {
    return This->lpVtbl->GetBytes(This,metadataID,buffer,bufferSize);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoFrameMetadataExtensions_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoInputFrame interface
 */
#ifndef __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__
#define __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoInputFrame, 0x05cfe374, 0x537c, 0x4094, 0x9a,0x57, 0x68,0x05,0x25,0x11,0x8f,0x44);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("05cfe374-537c-4094-9a57-680525118f44")
IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
{
    virtual HRESULT STDMETHODCALLTYPE GetStreamTime(
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceTimestamp(
        BMDTimeScale timeScale,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoInputFrame, 0x05cfe374, 0x537c, 0x4094, 0x9a,0x57, 0x68,0x05,0x25,0x11,0x8f,0x44)
#endif
#else
typedef struct IDeckLinkVideoInputFrameVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoInputFrame *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoInputFrame *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoInputFrame *This);

    /*** IDeckLinkVideoFrame methods ***/
    LONG (STDMETHODCALLTYPE *GetWidth)(
        IDeckLinkVideoInputFrame *This);

    LONG (STDMETHODCALLTYPE *GetHeight)(
        IDeckLinkVideoInputFrame *This);

    LONG (STDMETHODCALLTYPE *GetRowBytes)(
        IDeckLinkVideoInputFrame *This);

    BMDPixelFormat (STDMETHODCALLTYPE *GetPixelFormat)(
        IDeckLinkVideoInputFrame *This);

    BMDFrameFlags (STDMETHODCALLTYPE *GetFlags)(
        IDeckLinkVideoInputFrame *This);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkVideoInputFrame *This,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkVideoInputFrame *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode **timecode);

    HRESULT (STDMETHODCALLTYPE *GetAncillaryData)(
        IDeckLinkVideoInputFrame *This,
        IDeckLinkVideoFrameAncillary **ancillary);

    /*** IDeckLinkVideoInputFrame methods ***/
    HRESULT (STDMETHODCALLTYPE *GetStreamTime)(
        IDeckLinkVideoInputFrame *This,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceTimestamp)(
        IDeckLinkVideoInputFrame *This,
        BMDTimeScale timeScale,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration);

    END_INTERFACE
} IDeckLinkVideoInputFrameVtbl;

interface IDeckLinkVideoInputFrame {
    CONST_VTBL IDeckLinkVideoInputFrameVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkVideoInputFrame_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkVideoInputFrame_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkVideoInputFrame_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoFrame methods ***/
#define IDeckLinkVideoInputFrame_GetWidth(This) (This)->lpVtbl->GetWidth(This)
#define IDeckLinkVideoInputFrame_GetHeight(This) (This)->lpVtbl->GetHeight(This)
#define IDeckLinkVideoInputFrame_GetRowBytes(This) (This)->lpVtbl->GetRowBytes(This)
#define IDeckLinkVideoInputFrame_GetPixelFormat(This) (This)->lpVtbl->GetPixelFormat(This)
#define IDeckLinkVideoInputFrame_GetFlags(This) (This)->lpVtbl->GetFlags(This)
#define IDeckLinkVideoInputFrame_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IDeckLinkVideoInputFrame_GetTimecode(This,format,timecode) (This)->lpVtbl->GetTimecode(This,format,timecode)
#define IDeckLinkVideoInputFrame_GetAncillaryData(This,ancillary) (This)->lpVtbl->GetAncillaryData(This,ancillary)
/*** IDeckLinkVideoInputFrame methods ***/
#define IDeckLinkVideoInputFrame_GetStreamTime(This,frameTime,frameDuration,timeScale) (This)->lpVtbl->GetStreamTime(This,frameTime,frameDuration,timeScale)
#define IDeckLinkVideoInputFrame_GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) (This)->lpVtbl->GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_QueryInterface(IDeckLinkVideoInputFrame* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoInputFrame_AddRef(IDeckLinkVideoInputFrame* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoInputFrame_Release(IDeckLinkVideoInputFrame* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrame methods ***/
static FORCEINLINE LONG IDeckLinkVideoInputFrame_GetWidth(IDeckLinkVideoInputFrame* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkVideoInputFrame_GetHeight(IDeckLinkVideoInputFrame* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE LONG IDeckLinkVideoInputFrame_GetRowBytes(IDeckLinkVideoInputFrame* This) {
    return This->lpVtbl->GetRowBytes(This);
}
static FORCEINLINE BMDPixelFormat IDeckLinkVideoInputFrame_GetPixelFormat(IDeckLinkVideoInputFrame* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE BMDFrameFlags IDeckLinkVideoInputFrame_GetFlags(IDeckLinkVideoInputFrame* This) {
    return This->lpVtbl->GetFlags(This);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_GetBytes(IDeckLinkVideoInputFrame* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_GetTimecode(IDeckLinkVideoInputFrame* This,BMDTimecodeFormat format,IDeckLinkTimecode **timecode) {
    return This->lpVtbl->GetTimecode(This,format,timecode);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_GetAncillaryData(IDeckLinkVideoInputFrame* This,IDeckLinkVideoFrameAncillary **ancillary) {
    return This->lpVtbl->GetAncillaryData(This,ancillary);
}
/*** IDeckLinkVideoInputFrame methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_GetStreamTime(IDeckLinkVideoInputFrame* This,BMDTimeValue *frameTime,BMDTimeValue *frameDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->GetStreamTime(This,frameTime,frameDuration,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_GetHardwareReferenceTimestamp(IDeckLinkVideoInputFrame* This,BMDTimeScale timeScale,BMDTimeValue *frameTime,BMDTimeValue *frameDuration) {
    return This->lpVtbl->GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkAncillaryPacket interface
 */
#ifndef __IDeckLinkAncillaryPacket_INTERFACE_DEFINED__
#define __IDeckLinkAncillaryPacket_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkAncillaryPacket, 0xcc5bbf7e, 0x029c, 0x4d3b, 0x91,0x58, 0x60,0x00,0xef,0x5e,0x36,0x70);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc5bbf7e-029c-4d3b-9158-6000ef5e3670")
IDeckLinkAncillaryPacket : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        BMDAncillaryPacketFormat format,
        const void **data,
        unsigned int *size) = 0;

    virtual unsigned char STDMETHODCALLTYPE GetDID(
        ) = 0;

    virtual unsigned char STDMETHODCALLTYPE GetSDID(
        ) = 0;

    virtual unsigned int STDMETHODCALLTYPE GetLineNumber(
        ) = 0;

    virtual unsigned char STDMETHODCALLTYPE GetDataStreamIndex(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkAncillaryPacket, 0xcc5bbf7e, 0x029c, 0x4d3b, 0x91,0x58, 0x60,0x00,0xef,0x5e,0x36,0x70)
#endif
#else
typedef struct IDeckLinkAncillaryPacketVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkAncillaryPacket *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkAncillaryPacket *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkAncillaryPacket *This);

    /*** IDeckLinkAncillaryPacket methods ***/
    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkAncillaryPacket *This,
        BMDAncillaryPacketFormat format,
        const void **data,
        unsigned int *size);

    unsigned char (STDMETHODCALLTYPE *GetDID)(
        IDeckLinkAncillaryPacket *This);

    unsigned char (STDMETHODCALLTYPE *GetSDID)(
        IDeckLinkAncillaryPacket *This);

    unsigned int (STDMETHODCALLTYPE *GetLineNumber)(
        IDeckLinkAncillaryPacket *This);

    unsigned char (STDMETHODCALLTYPE *GetDataStreamIndex)(
        IDeckLinkAncillaryPacket *This);

    END_INTERFACE
} IDeckLinkAncillaryPacketVtbl;

interface IDeckLinkAncillaryPacket {
    CONST_VTBL IDeckLinkAncillaryPacketVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkAncillaryPacket_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkAncillaryPacket_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkAncillaryPacket_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkAncillaryPacket methods ***/
#define IDeckLinkAncillaryPacket_GetBytes(This,format,data,size) (This)->lpVtbl->GetBytes(This,format,data,size)
#define IDeckLinkAncillaryPacket_GetDID(This) (This)->lpVtbl->GetDID(This)
#define IDeckLinkAncillaryPacket_GetSDID(This) (This)->lpVtbl->GetSDID(This)
#define IDeckLinkAncillaryPacket_GetLineNumber(This) (This)->lpVtbl->GetLineNumber(This)
#define IDeckLinkAncillaryPacket_GetDataStreamIndex(This) (This)->lpVtbl->GetDataStreamIndex(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkAncillaryPacket_QueryInterface(IDeckLinkAncillaryPacket* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkAncillaryPacket_AddRef(IDeckLinkAncillaryPacket* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkAncillaryPacket_Release(IDeckLinkAncillaryPacket* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkAncillaryPacket methods ***/
static FORCEINLINE HRESULT IDeckLinkAncillaryPacket_GetBytes(IDeckLinkAncillaryPacket* This,BMDAncillaryPacketFormat format,const void **data,unsigned int *size) {
    return This->lpVtbl->GetBytes(This,format,data,size);
}
static FORCEINLINE unsigned char IDeckLinkAncillaryPacket_GetDID(IDeckLinkAncillaryPacket* This) {
    return This->lpVtbl->GetDID(This);
}
static FORCEINLINE unsigned char IDeckLinkAncillaryPacket_GetSDID(IDeckLinkAncillaryPacket* This) {
    return This->lpVtbl->GetSDID(This);
}
static FORCEINLINE unsigned int IDeckLinkAncillaryPacket_GetLineNumber(IDeckLinkAncillaryPacket* This) {
    return This->lpVtbl->GetLineNumber(This);
}
static FORCEINLINE unsigned char IDeckLinkAncillaryPacket_GetDataStreamIndex(IDeckLinkAncillaryPacket* This) {
    return This->lpVtbl->GetDataStreamIndex(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkAncillaryPacket_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkAncillaryPacketIterator interface
 */
#ifndef __IDeckLinkAncillaryPacketIterator_INTERFACE_DEFINED__
#define __IDeckLinkAncillaryPacketIterator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkAncillaryPacketIterator, 0x3fc8994b, 0x88fb, 0x4c17, 0x96,0x8f, 0x9a,0xab,0x69,0xd9,0x64,0xa7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3fc8994b-88fb-4c17-968f-9aab69d964a7")
IDeckLinkAncillaryPacketIterator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        IDeckLinkAncillaryPacket **packet) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkAncillaryPacketIterator, 0x3fc8994b, 0x88fb, 0x4c17, 0x96,0x8f, 0x9a,0xab,0x69,0xd9,0x64,0xa7)
#endif
#else
typedef struct IDeckLinkAncillaryPacketIteratorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkAncillaryPacketIterator *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkAncillaryPacketIterator *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkAncillaryPacketIterator *This);

    /*** IDeckLinkAncillaryPacketIterator methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IDeckLinkAncillaryPacketIterator *This,
        IDeckLinkAncillaryPacket **packet);

    END_INTERFACE
} IDeckLinkAncillaryPacketIteratorVtbl;

interface IDeckLinkAncillaryPacketIterator {
    CONST_VTBL IDeckLinkAncillaryPacketIteratorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkAncillaryPacketIterator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkAncillaryPacketIterator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkAncillaryPacketIterator_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkAncillaryPacketIterator methods ***/
#define IDeckLinkAncillaryPacketIterator_Next(This,packet) (This)->lpVtbl->Next(This,packet)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkAncillaryPacketIterator_QueryInterface(IDeckLinkAncillaryPacketIterator* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkAncillaryPacketIterator_AddRef(IDeckLinkAncillaryPacketIterator* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkAncillaryPacketIterator_Release(IDeckLinkAncillaryPacketIterator* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkAncillaryPacketIterator methods ***/
static FORCEINLINE HRESULT IDeckLinkAncillaryPacketIterator_Next(IDeckLinkAncillaryPacketIterator* This,IDeckLinkAncillaryPacket **packet) {
    return This->lpVtbl->Next(This,packet);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkAncillaryPacketIterator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoFrameAncillaryPackets interface
 */
#ifndef __IDeckLinkVideoFrameAncillaryPackets_INTERFACE_DEFINED__
#define __IDeckLinkVideoFrameAncillaryPackets_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoFrameAncillaryPackets, 0x6c186c0f, 0x459e, 0x41d8, 0xae,0xe2, 0x48,0x12,0xd8,0x1a,0xee,0x68);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6c186c0f-459e-41d8-aee2-4812d81aee68")
IDeckLinkVideoFrameAncillaryPackets : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetPacketIterator(
        IDeckLinkAncillaryPacketIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFirstPacketByID(
        unsigned char DID,
        unsigned char SDID,
        IDeckLinkAncillaryPacket **packet) = 0;

    virtual HRESULT STDMETHODCALLTYPE AttachPacket(
        IDeckLinkAncillaryPacket *packet) = 0;

    virtual HRESULT STDMETHODCALLTYPE DetachPacket(
        IDeckLinkAncillaryPacket *packet) = 0;

    virtual HRESULT STDMETHODCALLTYPE DetachAllPackets(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoFrameAncillaryPackets, 0x6c186c0f, 0x459e, 0x41d8, 0xae,0xe2, 0x48,0x12,0xd8,0x1a,0xee,0x68)
#endif
#else
typedef struct IDeckLinkVideoFrameAncillaryPacketsVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoFrameAncillaryPackets *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoFrameAncillaryPackets *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoFrameAncillaryPackets *This);

    /*** IDeckLinkVideoFrameAncillaryPackets methods ***/
    HRESULT (STDMETHODCALLTYPE *GetPacketIterator)(
        IDeckLinkVideoFrameAncillaryPackets *This,
        IDeckLinkAncillaryPacketIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *GetFirstPacketByID)(
        IDeckLinkVideoFrameAncillaryPackets *This,
        unsigned char DID,
        unsigned char SDID,
        IDeckLinkAncillaryPacket **packet);

    HRESULT (STDMETHODCALLTYPE *AttachPacket)(
        IDeckLinkVideoFrameAncillaryPackets *This,
        IDeckLinkAncillaryPacket *packet);

    HRESULT (STDMETHODCALLTYPE *DetachPacket)(
        IDeckLinkVideoFrameAncillaryPackets *This,
        IDeckLinkAncillaryPacket *packet);

    HRESULT (STDMETHODCALLTYPE *DetachAllPackets)(
        IDeckLinkVideoFrameAncillaryPackets *This);

    END_INTERFACE
} IDeckLinkVideoFrameAncillaryPacketsVtbl;

interface IDeckLinkVideoFrameAncillaryPackets {
    CONST_VTBL IDeckLinkVideoFrameAncillaryPacketsVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkVideoFrameAncillaryPackets_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkVideoFrameAncillaryPackets_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkVideoFrameAncillaryPackets_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoFrameAncillaryPackets methods ***/
#define IDeckLinkVideoFrameAncillaryPackets_GetPacketIterator(This,iterator) (This)->lpVtbl->GetPacketIterator(This,iterator)
#define IDeckLinkVideoFrameAncillaryPackets_GetFirstPacketByID(This,DID,SDID,packet) (This)->lpVtbl->GetFirstPacketByID(This,DID,SDID,packet)
#define IDeckLinkVideoFrameAncillaryPackets_AttachPacket(This,packet) (This)->lpVtbl->AttachPacket(This,packet)
#define IDeckLinkVideoFrameAncillaryPackets_DetachPacket(This,packet) (This)->lpVtbl->DetachPacket(This,packet)
#define IDeckLinkVideoFrameAncillaryPackets_DetachAllPackets(This) (This)->lpVtbl->DetachAllPackets(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrameAncillaryPackets_QueryInterface(IDeckLinkVideoFrameAncillaryPackets* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoFrameAncillaryPackets_AddRef(IDeckLinkVideoFrameAncillaryPackets* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoFrameAncillaryPackets_Release(IDeckLinkVideoFrameAncillaryPackets* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrameAncillaryPackets methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrameAncillaryPackets_GetPacketIterator(IDeckLinkVideoFrameAncillaryPackets* This,IDeckLinkAncillaryPacketIterator **iterator) {
    return This->lpVtbl->GetPacketIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameAncillaryPackets_GetFirstPacketByID(IDeckLinkVideoFrameAncillaryPackets* This,unsigned char DID,unsigned char SDID,IDeckLinkAncillaryPacket **packet) {
    return This->lpVtbl->GetFirstPacketByID(This,DID,SDID,packet);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameAncillaryPackets_AttachPacket(IDeckLinkVideoFrameAncillaryPackets* This,IDeckLinkAncillaryPacket *packet) {
    return This->lpVtbl->AttachPacket(This,packet);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameAncillaryPackets_DetachPacket(IDeckLinkVideoFrameAncillaryPackets* This,IDeckLinkAncillaryPacket *packet) {
    return This->lpVtbl->DetachPacket(This,packet);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameAncillaryPackets_DetachAllPackets(IDeckLinkVideoFrameAncillaryPackets* This) {
    return This->lpVtbl->DetachAllPackets(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoFrameAncillaryPackets_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoFrameAncillary interface
 */
#ifndef __IDeckLinkVideoFrameAncillary_INTERFACE_DEFINED__
#define __IDeckLinkVideoFrameAncillary_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoFrameAncillary, 0x732e723c, 0xd1a4, 0x4e29, 0x9e,0x8e, 0x4a,0x88,0x79,0x7a,0x00,0x04);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("732e723c-d1a4-4e29-9e8e-4a88797a0004")
IDeckLinkVideoFrameAncillary : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetBufferForVerticalBlankingLine(
        unsigned int lineNumber,
        void **buffer) = 0;

    virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat(
        ) = 0;

    virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoFrameAncillary, 0x732e723c, 0xd1a4, 0x4e29, 0x9e,0x8e, 0x4a,0x88,0x79,0x7a,0x00,0x04)
#endif
#else
typedef struct IDeckLinkVideoFrameAncillaryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoFrameAncillary *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoFrameAncillary *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoFrameAncillary *This);

    /*** IDeckLinkVideoFrameAncillary methods ***/
    HRESULT (STDMETHODCALLTYPE *GetBufferForVerticalBlankingLine)(
        IDeckLinkVideoFrameAncillary *This,
        unsigned int lineNumber,
        void **buffer);

    BMDPixelFormat (STDMETHODCALLTYPE *GetPixelFormat)(
        IDeckLinkVideoFrameAncillary *This);

    BMDDisplayMode (STDMETHODCALLTYPE *GetDisplayMode)(
        IDeckLinkVideoFrameAncillary *This);

    END_INTERFACE
} IDeckLinkVideoFrameAncillaryVtbl;

interface IDeckLinkVideoFrameAncillary {
    CONST_VTBL IDeckLinkVideoFrameAncillaryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkVideoFrameAncillary_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkVideoFrameAncillary_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkVideoFrameAncillary_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoFrameAncillary methods ***/
#define IDeckLinkVideoFrameAncillary_GetBufferForVerticalBlankingLine(This,lineNumber,buffer) (This)->lpVtbl->GetBufferForVerticalBlankingLine(This,lineNumber,buffer)
#define IDeckLinkVideoFrameAncillary_GetPixelFormat(This) (This)->lpVtbl->GetPixelFormat(This)
#define IDeckLinkVideoFrameAncillary_GetDisplayMode(This) (This)->lpVtbl->GetDisplayMode(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrameAncillary_QueryInterface(IDeckLinkVideoFrameAncillary* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoFrameAncillary_AddRef(IDeckLinkVideoFrameAncillary* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoFrameAncillary_Release(IDeckLinkVideoFrameAncillary* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrameAncillary methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrameAncillary_GetBufferForVerticalBlankingLine(IDeckLinkVideoFrameAncillary* This,unsigned int lineNumber,void **buffer) {
    return This->lpVtbl->GetBufferForVerticalBlankingLine(This,lineNumber,buffer);
}
static FORCEINLINE BMDPixelFormat IDeckLinkVideoFrameAncillary_GetPixelFormat(IDeckLinkVideoFrameAncillary* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE BMDDisplayMode IDeckLinkVideoFrameAncillary_GetDisplayMode(IDeckLinkVideoFrameAncillary* This) {
    return This->lpVtbl->GetDisplayMode(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoFrameAncillary_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkEncoderPacket interface
 */
#ifndef __IDeckLinkEncoderPacket_INTERFACE_DEFINED__
#define __IDeckLinkEncoderPacket_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkEncoderPacket, 0xb693f36c, 0x316e, 0x4af1, 0xb6,0xc2, 0xf3,0x89,0xa4,0xbc,0xa6,0x20);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b693f36c-316e-4af1-b6c2-f389a4bca620")
IDeckLinkEncoderPacket : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        void **buffer) = 0;

    virtual LONG STDMETHODCALLTYPE GetSize(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStreamTime(
        BMDTimeValue *frameTime,
        BMDTimeScale timeScale) = 0;

    virtual BMDPacketType STDMETHODCALLTYPE GetPacketType(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkEncoderPacket, 0xb693f36c, 0x316e, 0x4af1, 0xb6,0xc2, 0xf3,0x89,0xa4,0xbc,0xa6,0x20)
#endif
#else
typedef struct IDeckLinkEncoderPacketVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkEncoderPacket *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkEncoderPacket *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkEncoderPacket *This);

    /*** IDeckLinkEncoderPacket methods ***/
    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkEncoderPacket *This,
        void **buffer);

    LONG (STDMETHODCALLTYPE *GetSize)(
        IDeckLinkEncoderPacket *This);

    HRESULT (STDMETHODCALLTYPE *GetStreamTime)(
        IDeckLinkEncoderPacket *This,
        BMDTimeValue *frameTime,
        BMDTimeScale timeScale);

    BMDPacketType (STDMETHODCALLTYPE *GetPacketType)(
        IDeckLinkEncoderPacket *This);

    END_INTERFACE
} IDeckLinkEncoderPacketVtbl;

interface IDeckLinkEncoderPacket {
    CONST_VTBL IDeckLinkEncoderPacketVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkEncoderPacket_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkEncoderPacket_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkEncoderPacket_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkEncoderPacket methods ***/
#define IDeckLinkEncoderPacket_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IDeckLinkEncoderPacket_GetSize(This) (This)->lpVtbl->GetSize(This)
#define IDeckLinkEncoderPacket_GetStreamTime(This,frameTime,timeScale) (This)->lpVtbl->GetStreamTime(This,frameTime,timeScale)
#define IDeckLinkEncoderPacket_GetPacketType(This) (This)->lpVtbl->GetPacketType(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderPacket_QueryInterface(IDeckLinkEncoderPacket* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkEncoderPacket_AddRef(IDeckLinkEncoderPacket* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkEncoderPacket_Release(IDeckLinkEncoderPacket* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkEncoderPacket methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderPacket_GetBytes(IDeckLinkEncoderPacket* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE LONG IDeckLinkEncoderPacket_GetSize(IDeckLinkEncoderPacket* This) {
    return This->lpVtbl->GetSize(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderPacket_GetStreamTime(IDeckLinkEncoderPacket* This,BMDTimeValue *frameTime,BMDTimeScale timeScale) {
    return This->lpVtbl->GetStreamTime(This,frameTime,timeScale);
}
static FORCEINLINE BMDPacketType IDeckLinkEncoderPacket_GetPacketType(IDeckLinkEncoderPacket* This) {
    return This->lpVtbl->GetPacketType(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkEncoderPacket_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkEncoderVideoPacket interface
 */
#ifndef __IDeckLinkEncoderVideoPacket_INTERFACE_DEFINED__
#define __IDeckLinkEncoderVideoPacket_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkEncoderVideoPacket, 0x4e7fd944, 0xe8c7, 0x4eac, 0xb8,0xc0, 0x7b,0x77,0xf8,0x0f,0x5a,0xe0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4e7fd944-e8c7-4eac-b8c0-7b77f80f5ae0")
IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
{
    virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceTimestamp(
        BMDTimeScale timeScale,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecode(
        BMDTimecodeFormat format,
        IDeckLinkTimecode **timecode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkEncoderVideoPacket, 0x4e7fd944, 0xe8c7, 0x4eac, 0xb8,0xc0, 0x7b,0x77,0xf8,0x0f,0x5a,0xe0)
#endif
#else
typedef struct IDeckLinkEncoderVideoPacketVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkEncoderVideoPacket *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkEncoderVideoPacket *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkEncoderVideoPacket *This);

    /*** IDeckLinkEncoderPacket methods ***/
    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkEncoderVideoPacket *This,
        void **buffer);

    LONG (STDMETHODCALLTYPE *GetSize)(
        IDeckLinkEncoderVideoPacket *This);

    HRESULT (STDMETHODCALLTYPE *GetStreamTime)(
        IDeckLinkEncoderVideoPacket *This,
        BMDTimeValue *frameTime,
        BMDTimeScale timeScale);

    BMDPacketType (STDMETHODCALLTYPE *GetPacketType)(
        IDeckLinkEncoderVideoPacket *This);

    /*** IDeckLinkEncoderVideoPacket methods ***/
    BMDPixelFormat (STDMETHODCALLTYPE *GetPixelFormat)(
        IDeckLinkEncoderVideoPacket *This);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceTimestamp)(
        IDeckLinkEncoderVideoPacket *This,
        BMDTimeScale timeScale,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkEncoderVideoPacket *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode **timecode);

    END_INTERFACE
} IDeckLinkEncoderVideoPacketVtbl;

interface IDeckLinkEncoderVideoPacket {
    CONST_VTBL IDeckLinkEncoderVideoPacketVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkEncoderVideoPacket_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkEncoderVideoPacket_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkEncoderVideoPacket_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkEncoderPacket methods ***/
#define IDeckLinkEncoderVideoPacket_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IDeckLinkEncoderVideoPacket_GetSize(This) (This)->lpVtbl->GetSize(This)
#define IDeckLinkEncoderVideoPacket_GetStreamTime(This,frameTime,timeScale) (This)->lpVtbl->GetStreamTime(This,frameTime,timeScale)
#define IDeckLinkEncoderVideoPacket_GetPacketType(This) (This)->lpVtbl->GetPacketType(This)
/*** IDeckLinkEncoderVideoPacket methods ***/
#define IDeckLinkEncoderVideoPacket_GetPixelFormat(This) (This)->lpVtbl->GetPixelFormat(This)
#define IDeckLinkEncoderVideoPacket_GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) (This)->lpVtbl->GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration)
#define IDeckLinkEncoderVideoPacket_GetTimecode(This,format,timecode) (This)->lpVtbl->GetTimecode(This,format,timecode)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderVideoPacket_QueryInterface(IDeckLinkEncoderVideoPacket* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkEncoderVideoPacket_AddRef(IDeckLinkEncoderVideoPacket* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkEncoderVideoPacket_Release(IDeckLinkEncoderVideoPacket* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkEncoderPacket methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderVideoPacket_GetBytes(IDeckLinkEncoderVideoPacket* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE LONG IDeckLinkEncoderVideoPacket_GetSize(IDeckLinkEncoderVideoPacket* This) {
    return This->lpVtbl->GetSize(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderVideoPacket_GetStreamTime(IDeckLinkEncoderVideoPacket* This,BMDTimeValue *frameTime,BMDTimeScale timeScale) {
    return This->lpVtbl->GetStreamTime(This,frameTime,timeScale);
}
static FORCEINLINE BMDPacketType IDeckLinkEncoderVideoPacket_GetPacketType(IDeckLinkEncoderVideoPacket* This) {
    return This->lpVtbl->GetPacketType(This);
}
/*** IDeckLinkEncoderVideoPacket methods ***/
static FORCEINLINE BMDPixelFormat IDeckLinkEncoderVideoPacket_GetPixelFormat(IDeckLinkEncoderVideoPacket* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderVideoPacket_GetHardwareReferenceTimestamp(IDeckLinkEncoderVideoPacket* This,BMDTimeScale timeScale,BMDTimeValue *frameTime,BMDTimeValue *frameDuration) {
    return This->lpVtbl->GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration);
}
static FORCEINLINE HRESULT IDeckLinkEncoderVideoPacket_GetTimecode(IDeckLinkEncoderVideoPacket* This,BMDTimecodeFormat format,IDeckLinkTimecode **timecode) {
    return This->lpVtbl->GetTimecode(This,format,timecode);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkEncoderVideoPacket_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkEncoderAudioPacket interface
 */
#ifndef __IDeckLinkEncoderAudioPacket_INTERFACE_DEFINED__
#define __IDeckLinkEncoderAudioPacket_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkEncoderAudioPacket, 0x49e8edc8, 0x693b, 0x4e14, 0x8e,0xf6, 0x12,0xc6,0x58,0xf5,0xa0,0x7a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("49e8edc8-693b-4e14-8ef6-12c658f5a07a")
IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
{
    virtual BMDAudioFormat STDMETHODCALLTYPE GetAudioFormat(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkEncoderAudioPacket, 0x49e8edc8, 0x693b, 0x4e14, 0x8e,0xf6, 0x12,0xc6,0x58,0xf5,0xa0,0x7a)
#endif
#else
typedef struct IDeckLinkEncoderAudioPacketVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkEncoderAudioPacket *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkEncoderAudioPacket *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkEncoderAudioPacket *This);

    /*** IDeckLinkEncoderPacket methods ***/
    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkEncoderAudioPacket *This,
        void **buffer);

    LONG (STDMETHODCALLTYPE *GetSize)(
        IDeckLinkEncoderAudioPacket *This);

    HRESULT (STDMETHODCALLTYPE *GetStreamTime)(
        IDeckLinkEncoderAudioPacket *This,
        BMDTimeValue *frameTime,
        BMDTimeScale timeScale);

    BMDPacketType (STDMETHODCALLTYPE *GetPacketType)(
        IDeckLinkEncoderAudioPacket *This);

    /*** IDeckLinkEncoderAudioPacket methods ***/
    BMDAudioFormat (STDMETHODCALLTYPE *GetAudioFormat)(
        IDeckLinkEncoderAudioPacket *This);

    END_INTERFACE
} IDeckLinkEncoderAudioPacketVtbl;

interface IDeckLinkEncoderAudioPacket {
    CONST_VTBL IDeckLinkEncoderAudioPacketVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkEncoderAudioPacket_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkEncoderAudioPacket_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkEncoderAudioPacket_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkEncoderPacket methods ***/
#define IDeckLinkEncoderAudioPacket_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IDeckLinkEncoderAudioPacket_GetSize(This) (This)->lpVtbl->GetSize(This)
#define IDeckLinkEncoderAudioPacket_GetStreamTime(This,frameTime,timeScale) (This)->lpVtbl->GetStreamTime(This,frameTime,timeScale)
#define IDeckLinkEncoderAudioPacket_GetPacketType(This) (This)->lpVtbl->GetPacketType(This)
/*** IDeckLinkEncoderAudioPacket methods ***/
#define IDeckLinkEncoderAudioPacket_GetAudioFormat(This) (This)->lpVtbl->GetAudioFormat(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderAudioPacket_QueryInterface(IDeckLinkEncoderAudioPacket* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkEncoderAudioPacket_AddRef(IDeckLinkEncoderAudioPacket* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkEncoderAudioPacket_Release(IDeckLinkEncoderAudioPacket* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkEncoderPacket methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderAudioPacket_GetBytes(IDeckLinkEncoderAudioPacket* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE LONG IDeckLinkEncoderAudioPacket_GetSize(IDeckLinkEncoderAudioPacket* This) {
    return This->lpVtbl->GetSize(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderAudioPacket_GetStreamTime(IDeckLinkEncoderAudioPacket* This,BMDTimeValue *frameTime,BMDTimeScale timeScale) {
    return This->lpVtbl->GetStreamTime(This,frameTime,timeScale);
}
static FORCEINLINE BMDPacketType IDeckLinkEncoderAudioPacket_GetPacketType(IDeckLinkEncoderAudioPacket* This) {
    return This->lpVtbl->GetPacketType(This);
}
/*** IDeckLinkEncoderAudioPacket methods ***/
static FORCEINLINE BMDAudioFormat IDeckLinkEncoderAudioPacket_GetAudioFormat(IDeckLinkEncoderAudioPacket* This) {
    return This->lpVtbl->GetAudioFormat(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkEncoderAudioPacket_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkH265NALPacket interface
 */
#ifndef __IDeckLinkH265NALPacket_INTERFACE_DEFINED__
#define __IDeckLinkH265NALPacket_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkH265NALPacket, 0x639c8e0b, 0x68d5, 0x4bde, 0xa6,0xd4, 0x95,0xf3,0xae,0xaf,0xf2,0xe7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("639c8e0b-68d5-4bde-a6d4-95f3aeaff2e7")
IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
{
    virtual HRESULT STDMETHODCALLTYPE GetUnitType(
        unsigned char *unitType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytesNoPrefix(
        void **buffer) = 0;

    virtual LONG STDMETHODCALLTYPE GetSizeNoPrefix(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkH265NALPacket, 0x639c8e0b, 0x68d5, 0x4bde, 0xa6,0xd4, 0x95,0xf3,0xae,0xaf,0xf2,0xe7)
#endif
#else
typedef struct IDeckLinkH265NALPacketVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkH265NALPacket *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkH265NALPacket *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkH265NALPacket *This);

    /*** IDeckLinkEncoderPacket methods ***/
    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkH265NALPacket *This,
        void **buffer);

    LONG (STDMETHODCALLTYPE *GetSize)(
        IDeckLinkH265NALPacket *This);

    HRESULT (STDMETHODCALLTYPE *GetStreamTime)(
        IDeckLinkH265NALPacket *This,
        BMDTimeValue *frameTime,
        BMDTimeScale timeScale);

    BMDPacketType (STDMETHODCALLTYPE *GetPacketType)(
        IDeckLinkH265NALPacket *This);

    /*** IDeckLinkEncoderVideoPacket methods ***/
    BMDPixelFormat (STDMETHODCALLTYPE *GetPixelFormat)(
        IDeckLinkH265NALPacket *This);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceTimestamp)(
        IDeckLinkH265NALPacket *This,
        BMDTimeScale timeScale,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkH265NALPacket *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode **timecode);

    /*** IDeckLinkH265NALPacket methods ***/
    HRESULT (STDMETHODCALLTYPE *GetUnitType)(
        IDeckLinkH265NALPacket *This,
        unsigned char *unitType);

    HRESULT (STDMETHODCALLTYPE *GetBytesNoPrefix)(
        IDeckLinkH265NALPacket *This,
        void **buffer);

    LONG (STDMETHODCALLTYPE *GetSizeNoPrefix)(
        IDeckLinkH265NALPacket *This);

    END_INTERFACE
} IDeckLinkH265NALPacketVtbl;

interface IDeckLinkH265NALPacket {
    CONST_VTBL IDeckLinkH265NALPacketVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkH265NALPacket_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkH265NALPacket_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkH265NALPacket_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkEncoderPacket methods ***/
#define IDeckLinkH265NALPacket_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IDeckLinkH265NALPacket_GetSize(This) (This)->lpVtbl->GetSize(This)
#define IDeckLinkH265NALPacket_GetStreamTime(This,frameTime,timeScale) (This)->lpVtbl->GetStreamTime(This,frameTime,timeScale)
#define IDeckLinkH265NALPacket_GetPacketType(This) (This)->lpVtbl->GetPacketType(This)
/*** IDeckLinkEncoderVideoPacket methods ***/
#define IDeckLinkH265NALPacket_GetPixelFormat(This) (This)->lpVtbl->GetPixelFormat(This)
#define IDeckLinkH265NALPacket_GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) (This)->lpVtbl->GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration)
#define IDeckLinkH265NALPacket_GetTimecode(This,format,timecode) (This)->lpVtbl->GetTimecode(This,format,timecode)
/*** IDeckLinkH265NALPacket methods ***/
#define IDeckLinkH265NALPacket_GetUnitType(This,unitType) (This)->lpVtbl->GetUnitType(This,unitType)
#define IDeckLinkH265NALPacket_GetBytesNoPrefix(This,buffer) (This)->lpVtbl->GetBytesNoPrefix(This,buffer)
#define IDeckLinkH265NALPacket_GetSizeNoPrefix(This) (This)->lpVtbl->GetSizeNoPrefix(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkH265NALPacket_QueryInterface(IDeckLinkH265NALPacket* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkH265NALPacket_AddRef(IDeckLinkH265NALPacket* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkH265NALPacket_Release(IDeckLinkH265NALPacket* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkEncoderPacket methods ***/
static FORCEINLINE HRESULT IDeckLinkH265NALPacket_GetBytes(IDeckLinkH265NALPacket* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE LONG IDeckLinkH265NALPacket_GetSize(IDeckLinkH265NALPacket* This) {
    return This->lpVtbl->GetSize(This);
}
static FORCEINLINE HRESULT IDeckLinkH265NALPacket_GetStreamTime(IDeckLinkH265NALPacket* This,BMDTimeValue *frameTime,BMDTimeScale timeScale) {
    return This->lpVtbl->GetStreamTime(This,frameTime,timeScale);
}
static FORCEINLINE BMDPacketType IDeckLinkH265NALPacket_GetPacketType(IDeckLinkH265NALPacket* This) {
    return This->lpVtbl->GetPacketType(This);
}
/*** IDeckLinkEncoderVideoPacket methods ***/
static FORCEINLINE BMDPixelFormat IDeckLinkH265NALPacket_GetPixelFormat(IDeckLinkH265NALPacket* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE HRESULT IDeckLinkH265NALPacket_GetHardwareReferenceTimestamp(IDeckLinkH265NALPacket* This,BMDTimeScale timeScale,BMDTimeValue *frameTime,BMDTimeValue *frameDuration) {
    return This->lpVtbl->GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration);
}
static FORCEINLINE HRESULT IDeckLinkH265NALPacket_GetTimecode(IDeckLinkH265NALPacket* This,BMDTimecodeFormat format,IDeckLinkTimecode **timecode) {
    return This->lpVtbl->GetTimecode(This,format,timecode);
}
/*** IDeckLinkH265NALPacket methods ***/
static FORCEINLINE HRESULT IDeckLinkH265NALPacket_GetUnitType(IDeckLinkH265NALPacket* This,unsigned char *unitType) {
    return This->lpVtbl->GetUnitType(This,unitType);
}
static FORCEINLINE HRESULT IDeckLinkH265NALPacket_GetBytesNoPrefix(IDeckLinkH265NALPacket* This,void **buffer) {
    return This->lpVtbl->GetBytesNoPrefix(This,buffer);
}
static FORCEINLINE LONG IDeckLinkH265NALPacket_GetSizeNoPrefix(IDeckLinkH265NALPacket* This) {
    return This->lpVtbl->GetSizeNoPrefix(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkH265NALPacket_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkAudioInputPacket interface
 */
#ifndef __IDeckLinkAudioInputPacket_INTERFACE_DEFINED__
#define __IDeckLinkAudioInputPacket_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkAudioInputPacket, 0xe43d5870, 0x2894, 0x11de, 0x8c,0x30, 0x08,0x00,0x20,0x0c,0x9a,0x66);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e43d5870-2894-11de-8c30-0800200c9a66")
IDeckLinkAudioInputPacket : public IUnknown
{
    virtual LONG STDMETHODCALLTYPE GetSampleFrameCount(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        void **buffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPacketTime(
        BMDTimeValue *packetTime,
        BMDTimeScale timeScale) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkAudioInputPacket, 0xe43d5870, 0x2894, 0x11de, 0x8c,0x30, 0x08,0x00,0x20,0x0c,0x9a,0x66)
#endif
#else
typedef struct IDeckLinkAudioInputPacketVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkAudioInputPacket *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkAudioInputPacket *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkAudioInputPacket *This);

    /*** IDeckLinkAudioInputPacket methods ***/
    LONG (STDMETHODCALLTYPE *GetSampleFrameCount)(
        IDeckLinkAudioInputPacket *This);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkAudioInputPacket *This,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetPacketTime)(
        IDeckLinkAudioInputPacket *This,
        BMDTimeValue *packetTime,
        BMDTimeScale timeScale);

    END_INTERFACE
} IDeckLinkAudioInputPacketVtbl;

interface IDeckLinkAudioInputPacket {
    CONST_VTBL IDeckLinkAudioInputPacketVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkAudioInputPacket_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkAudioInputPacket_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkAudioInputPacket_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkAudioInputPacket methods ***/
#define IDeckLinkAudioInputPacket_GetSampleFrameCount(This) (This)->lpVtbl->GetSampleFrameCount(This)
#define IDeckLinkAudioInputPacket_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IDeckLinkAudioInputPacket_GetPacketTime(This,packetTime,timeScale) (This)->lpVtbl->GetPacketTime(This,packetTime,timeScale)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkAudioInputPacket_QueryInterface(IDeckLinkAudioInputPacket* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkAudioInputPacket_AddRef(IDeckLinkAudioInputPacket* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkAudioInputPacket_Release(IDeckLinkAudioInputPacket* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkAudioInputPacket methods ***/
static FORCEINLINE LONG IDeckLinkAudioInputPacket_GetSampleFrameCount(IDeckLinkAudioInputPacket* This) {
    return This->lpVtbl->GetSampleFrameCount(This);
}
static FORCEINLINE HRESULT IDeckLinkAudioInputPacket_GetBytes(IDeckLinkAudioInputPacket* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IDeckLinkAudioInputPacket_GetPacketTime(IDeckLinkAudioInputPacket* This,BMDTimeValue *packetTime,BMDTimeScale timeScale) {
    return This->lpVtbl->GetPacketTime(This,packetTime,timeScale);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkAudioInputPacket_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkScreenPreviewCallback interface
 */
#ifndef __IDeckLinkScreenPreviewCallback_INTERFACE_DEFINED__
#define __IDeckLinkScreenPreviewCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkScreenPreviewCallback, 0xb1d3f49a, 0x85fe, 0x4c5d, 0x95,0xc8, 0x0b,0x5d,0x5d,0xcc,0xd4,0x38);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b1d3f49a-85fe-4c5d-95c8-0b5d5dccd438")
IDeckLinkScreenPreviewCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DrawFrame(
        IDeckLinkVideoFrame *theFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkScreenPreviewCallback, 0xb1d3f49a, 0x85fe, 0x4c5d, 0x95,0xc8, 0x0b,0x5d,0x5d,0xcc,0xd4,0x38)
#endif
#else
typedef struct IDeckLinkScreenPreviewCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkScreenPreviewCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkScreenPreviewCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkScreenPreviewCallback *This);

    /*** IDeckLinkScreenPreviewCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *DrawFrame)(
        IDeckLinkScreenPreviewCallback *This,
        IDeckLinkVideoFrame *theFrame);

    END_INTERFACE
} IDeckLinkScreenPreviewCallbackVtbl;

interface IDeckLinkScreenPreviewCallback {
    CONST_VTBL IDeckLinkScreenPreviewCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkScreenPreviewCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkScreenPreviewCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkScreenPreviewCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkScreenPreviewCallback methods ***/
#define IDeckLinkScreenPreviewCallback_DrawFrame(This,theFrame) (This)->lpVtbl->DrawFrame(This,theFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkScreenPreviewCallback_QueryInterface(IDeckLinkScreenPreviewCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkScreenPreviewCallback_AddRef(IDeckLinkScreenPreviewCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkScreenPreviewCallback_Release(IDeckLinkScreenPreviewCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkScreenPreviewCallback methods ***/
static FORCEINLINE HRESULT IDeckLinkScreenPreviewCallback_DrawFrame(IDeckLinkScreenPreviewCallback* This,IDeckLinkVideoFrame *theFrame) {
    return This->lpVtbl->DrawFrame(This,theFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkScreenPreviewCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkGLScreenPreviewHelper interface
 */
#ifndef __IDeckLinkGLScreenPreviewHelper_INTERFACE_DEFINED__
#define __IDeckLinkGLScreenPreviewHelper_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkGLScreenPreviewHelper, 0x504e2209, 0xcac7, 0x4c1a, 0x9f,0xb4, 0xc5,0xbb,0x62,0x74,0xd2,0x2f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("504e2209-cac7-4c1a-9fb4-c5bb6274d22f")
IDeckLinkGLScreenPreviewHelper : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InitializeGL(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PaintGL(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFrame(
        IDeckLinkVideoFrame *theFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat(
        BMD3DPreviewFormat previewFormat) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkGLScreenPreviewHelper, 0x504e2209, 0xcac7, 0x4c1a, 0x9f,0xb4, 0xc5,0xbb,0x62,0x74,0xd2,0x2f)
#endif
#else
typedef struct IDeckLinkGLScreenPreviewHelperVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkGLScreenPreviewHelper *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkGLScreenPreviewHelper *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkGLScreenPreviewHelper *This);

    /*** IDeckLinkGLScreenPreviewHelper methods ***/
    HRESULT (STDMETHODCALLTYPE *InitializeGL)(
        IDeckLinkGLScreenPreviewHelper *This);

    HRESULT (STDMETHODCALLTYPE *PaintGL)(
        IDeckLinkGLScreenPreviewHelper *This);

    HRESULT (STDMETHODCALLTYPE *SetFrame)(
        IDeckLinkGLScreenPreviewHelper *This,
        IDeckLinkVideoFrame *theFrame);

    HRESULT (STDMETHODCALLTYPE *Set3DPreviewFormat)(
        IDeckLinkGLScreenPreviewHelper *This,
        BMD3DPreviewFormat previewFormat);

    END_INTERFACE
} IDeckLinkGLScreenPreviewHelperVtbl;

interface IDeckLinkGLScreenPreviewHelper {
    CONST_VTBL IDeckLinkGLScreenPreviewHelperVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkGLScreenPreviewHelper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkGLScreenPreviewHelper_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkGLScreenPreviewHelper_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkGLScreenPreviewHelper methods ***/
#define IDeckLinkGLScreenPreviewHelper_InitializeGL(This) (This)->lpVtbl->InitializeGL(This)
#define IDeckLinkGLScreenPreviewHelper_PaintGL(This) (This)->lpVtbl->PaintGL(This)
#define IDeckLinkGLScreenPreviewHelper_SetFrame(This,theFrame) (This)->lpVtbl->SetFrame(This,theFrame)
#define IDeckLinkGLScreenPreviewHelper_Set3DPreviewFormat(This,previewFormat) (This)->lpVtbl->Set3DPreviewFormat(This,previewFormat)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkGLScreenPreviewHelper_QueryInterface(IDeckLinkGLScreenPreviewHelper* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkGLScreenPreviewHelper_AddRef(IDeckLinkGLScreenPreviewHelper* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkGLScreenPreviewHelper_Release(IDeckLinkGLScreenPreviewHelper* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkGLScreenPreviewHelper methods ***/
static FORCEINLINE HRESULT IDeckLinkGLScreenPreviewHelper_InitializeGL(IDeckLinkGLScreenPreviewHelper* This) {
    return This->lpVtbl->InitializeGL(This);
}
static FORCEINLINE HRESULT IDeckLinkGLScreenPreviewHelper_PaintGL(IDeckLinkGLScreenPreviewHelper* This) {
    return This->lpVtbl->PaintGL(This);
}
static FORCEINLINE HRESULT IDeckLinkGLScreenPreviewHelper_SetFrame(IDeckLinkGLScreenPreviewHelper* This,IDeckLinkVideoFrame *theFrame) {
    return This->lpVtbl->SetFrame(This,theFrame);
}
static FORCEINLINE HRESULT IDeckLinkGLScreenPreviewHelper_Set3DPreviewFormat(IDeckLinkGLScreenPreviewHelper* This,BMD3DPreviewFormat previewFormat) {
    return This->lpVtbl->Set3DPreviewFormat(This,previewFormat);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkGLScreenPreviewHelper_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkDX9ScreenPreviewHelper interface
 */
#ifndef __IDeckLinkDX9ScreenPreviewHelper_INTERFACE_DEFINED__
#define __IDeckLinkDX9ScreenPreviewHelper_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDX9ScreenPreviewHelper, 0x2094b522, 0xd1a1, 0x40c0, 0x9a,0xc7, 0x1c,0x01,0x22,0x18,0xef,0x02);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2094b522-d1a1-40c0-9ac7-1c012218ef02")
IDeckLinkDX9ScreenPreviewHelper : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        void *device) = 0;

    virtual HRESULT STDMETHODCALLTYPE Render(
        RECT *rc) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFrame(
        IDeckLinkVideoFrame *theFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat(
        BMD3DPreviewFormat previewFormat) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDX9ScreenPreviewHelper, 0x2094b522, 0xd1a1, 0x40c0, 0x9a,0xc7, 0x1c,0x01,0x22,0x18,0xef,0x02)
#endif
#else
typedef struct IDeckLinkDX9ScreenPreviewHelperVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDX9ScreenPreviewHelper *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDX9ScreenPreviewHelper *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDX9ScreenPreviewHelper *This);

    /*** IDeckLinkDX9ScreenPreviewHelper methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        IDeckLinkDX9ScreenPreviewHelper *This,
        void *device);

    HRESULT (STDMETHODCALLTYPE *Render)(
        IDeckLinkDX9ScreenPreviewHelper *This,
        RECT *rc);

    HRESULT (STDMETHODCALLTYPE *SetFrame)(
        IDeckLinkDX9ScreenPreviewHelper *This,
        IDeckLinkVideoFrame *theFrame);

    HRESULT (STDMETHODCALLTYPE *Set3DPreviewFormat)(
        IDeckLinkDX9ScreenPreviewHelper *This,
        BMD3DPreviewFormat previewFormat);

    END_INTERFACE
} IDeckLinkDX9ScreenPreviewHelperVtbl;

interface IDeckLinkDX9ScreenPreviewHelper {
    CONST_VTBL IDeckLinkDX9ScreenPreviewHelperVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDX9ScreenPreviewHelper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDX9ScreenPreviewHelper_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDX9ScreenPreviewHelper_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDX9ScreenPreviewHelper methods ***/
#define IDeckLinkDX9ScreenPreviewHelper_Initialize(This,device) (This)->lpVtbl->Initialize(This,device)
#define IDeckLinkDX9ScreenPreviewHelper_Render(This,rc) (This)->lpVtbl->Render(This,rc)
#define IDeckLinkDX9ScreenPreviewHelper_SetFrame(This,theFrame) (This)->lpVtbl->SetFrame(This,theFrame)
#define IDeckLinkDX9ScreenPreviewHelper_Set3DPreviewFormat(This,previewFormat) (This)->lpVtbl->Set3DPreviewFormat(This,previewFormat)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDX9ScreenPreviewHelper_QueryInterface(IDeckLinkDX9ScreenPreviewHelper* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDX9ScreenPreviewHelper_AddRef(IDeckLinkDX9ScreenPreviewHelper* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDX9ScreenPreviewHelper_Release(IDeckLinkDX9ScreenPreviewHelper* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDX9ScreenPreviewHelper methods ***/
static FORCEINLINE HRESULT IDeckLinkDX9ScreenPreviewHelper_Initialize(IDeckLinkDX9ScreenPreviewHelper* This,void *device) {
    return This->lpVtbl->Initialize(This,device);
}
static FORCEINLINE HRESULT IDeckLinkDX9ScreenPreviewHelper_Render(IDeckLinkDX9ScreenPreviewHelper* This,RECT *rc) {
    return This->lpVtbl->Render(This,rc);
}
static FORCEINLINE HRESULT IDeckLinkDX9ScreenPreviewHelper_SetFrame(IDeckLinkDX9ScreenPreviewHelper* This,IDeckLinkVideoFrame *theFrame) {
    return This->lpVtbl->SetFrame(This,theFrame);
}
static FORCEINLINE HRESULT IDeckLinkDX9ScreenPreviewHelper_Set3DPreviewFormat(IDeckLinkDX9ScreenPreviewHelper* This,BMD3DPreviewFormat previewFormat) {
    return This->lpVtbl->Set3DPreviewFormat(This,previewFormat);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDX9ScreenPreviewHelper_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkNotificationCallback interface
 */
#ifndef __IDeckLinkNotificationCallback_INTERFACE_DEFINED__
#define __IDeckLinkNotificationCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkNotificationCallback, 0xb002a1ec, 0x070d, 0x4288, 0x82,0x89, 0xbd,0x5d,0x36,0xe5,0xff,0x0d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b002a1ec-070d-4288-8289-bd5d36e5ff0d")
IDeckLinkNotificationCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Notify(
        BMDNotifications topic,
        ULONGLONG param1,
        ULONGLONG param2) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkNotificationCallback, 0xb002a1ec, 0x070d, 0x4288, 0x82,0x89, 0xbd,0x5d,0x36,0xe5,0xff,0x0d)
#endif
#else
typedef struct IDeckLinkNotificationCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkNotificationCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkNotificationCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkNotificationCallback *This);

    /*** IDeckLinkNotificationCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *Notify)(
        IDeckLinkNotificationCallback *This,
        BMDNotifications topic,
        ULONGLONG param1,
        ULONGLONG param2);

    END_INTERFACE
} IDeckLinkNotificationCallbackVtbl;

interface IDeckLinkNotificationCallback {
    CONST_VTBL IDeckLinkNotificationCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkNotificationCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkNotificationCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkNotificationCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkNotificationCallback methods ***/
#define IDeckLinkNotificationCallback_Notify(This,topic,param1,param2) (This)->lpVtbl->Notify(This,topic,param1,param2)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkNotificationCallback_QueryInterface(IDeckLinkNotificationCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkNotificationCallback_AddRef(IDeckLinkNotificationCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkNotificationCallback_Release(IDeckLinkNotificationCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkNotificationCallback methods ***/
static FORCEINLINE HRESULT IDeckLinkNotificationCallback_Notify(IDeckLinkNotificationCallback* This,BMDNotifications topic,ULONGLONG param1,ULONGLONG param2) {
    return This->lpVtbl->Notify(This,topic,param1,param2);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkNotificationCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkNotification interface
 */
#ifndef __IDeckLinkNotification_INTERFACE_DEFINED__
#define __IDeckLinkNotification_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkNotification, 0xb85df4c8, 0xbdf5, 0x47c1, 0x80,0x64, 0x28,0x16,0x2e,0xbd,0xd4,0xeb);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b85df4c8-bdf5-47c1-8064-28162ebdd4eb")
IDeckLinkNotification : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Subscribe(
        BMDNotifications topic,
        IDeckLinkNotificationCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unsubscribe(
        BMDNotifications topic,
        IDeckLinkNotificationCallback *theCallback) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkNotification, 0xb85df4c8, 0xbdf5, 0x47c1, 0x80,0x64, 0x28,0x16,0x2e,0xbd,0xd4,0xeb)
#endif
#else
typedef struct IDeckLinkNotificationVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkNotification *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkNotification *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkNotification *This);

    /*** IDeckLinkNotification methods ***/
    HRESULT (STDMETHODCALLTYPE *Subscribe)(
        IDeckLinkNotification *This,
        BMDNotifications topic,
        IDeckLinkNotificationCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *Unsubscribe)(
        IDeckLinkNotification *This,
        BMDNotifications topic,
        IDeckLinkNotificationCallback *theCallback);

    END_INTERFACE
} IDeckLinkNotificationVtbl;

interface IDeckLinkNotification {
    CONST_VTBL IDeckLinkNotificationVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkNotification_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkNotification_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkNotification_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkNotification methods ***/
#define IDeckLinkNotification_Subscribe(This,topic,theCallback) (This)->lpVtbl->Subscribe(This,topic,theCallback)
#define IDeckLinkNotification_Unsubscribe(This,topic,theCallback) (This)->lpVtbl->Unsubscribe(This,topic,theCallback)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkNotification_QueryInterface(IDeckLinkNotification* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkNotification_AddRef(IDeckLinkNotification* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkNotification_Release(IDeckLinkNotification* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkNotification methods ***/
static FORCEINLINE HRESULT IDeckLinkNotification_Subscribe(IDeckLinkNotification* This,BMDNotifications topic,IDeckLinkNotificationCallback *theCallback) {
    return This->lpVtbl->Subscribe(This,topic,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkNotification_Unsubscribe(IDeckLinkNotification* This,BMDNotifications topic,IDeckLinkNotificationCallback *theCallback) {
    return This->lpVtbl->Unsubscribe(This,topic,theCallback);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkNotification_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkProfileAttributes interface
 */
#ifndef __IDeckLinkProfileAttributes_INTERFACE_DEFINED__
#define __IDeckLinkProfileAttributes_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkProfileAttributes, 0x17d4bf8e, 0x4911, 0x473a, 0x80,0xa0, 0x73,0x1c,0xf6,0xff,0x34,0x5b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("17d4bf8e-4911-473a-80a0-731cf6ff345b")
IDeckLinkProfileAttributes : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkAttributeID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkAttributeID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkAttributeID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkAttributeID cfgID,
        BSTR *value) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkProfileAttributes, 0x17d4bf8e, 0x4911, 0x473a, 0x80,0xa0, 0x73,0x1c,0xf6,0xff,0x34,0x5b)
#endif
#else
typedef struct IDeckLinkProfileAttributesVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkProfileAttributes *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkProfileAttributes *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkProfileAttributes *This);

    /*** IDeckLinkProfileAttributes methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkProfileAttributes *This,
        BMDDeckLinkAttributeID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkProfileAttributes *This,
        BMDDeckLinkAttributeID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkProfileAttributes *This,
        BMDDeckLinkAttributeID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkProfileAttributes *This,
        BMDDeckLinkAttributeID cfgID,
        BSTR *value);

    END_INTERFACE
} IDeckLinkProfileAttributesVtbl;

interface IDeckLinkProfileAttributes {
    CONST_VTBL IDeckLinkProfileAttributesVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkProfileAttributes_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkProfileAttributes_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkProfileAttributes_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkProfileAttributes methods ***/
#define IDeckLinkProfileAttributes_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IDeckLinkProfileAttributes_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkProfileAttributes_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IDeckLinkProfileAttributes_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkProfileAttributes_QueryInterface(IDeckLinkProfileAttributes* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkProfileAttributes_AddRef(IDeckLinkProfileAttributes* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkProfileAttributes_Release(IDeckLinkProfileAttributes* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkProfileAttributes methods ***/
static FORCEINLINE HRESULT IDeckLinkProfileAttributes_GetFlag(IDeckLinkProfileAttributes* This,BMDDeckLinkAttributeID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkProfileAttributes_GetInt(IDeckLinkProfileAttributes* This,BMDDeckLinkAttributeID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkProfileAttributes_GetFloat(IDeckLinkProfileAttributes* This,BMDDeckLinkAttributeID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkProfileAttributes_GetString(IDeckLinkProfileAttributes* This,BMDDeckLinkAttributeID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkProfileAttributes_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkProfileIterator interface
 */
#ifndef __IDeckLinkProfileIterator_INTERFACE_DEFINED__
#define __IDeckLinkProfileIterator_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkProfileIterator, 0x29e5a8c0, 0x8be4, 0x46eb, 0x93,0xac, 0x31,0xda,0xab,0x5b,0x7b,0xf2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("29e5a8c0-8be4-46eb-93ac-31daab5b7bf2")
IDeckLinkProfileIterator : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        IDeckLinkProfile **profile) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkProfileIterator, 0x29e5a8c0, 0x8be4, 0x46eb, 0x93,0xac, 0x31,0xda,0xab,0x5b,0x7b,0xf2)
#endif
#else
typedef struct IDeckLinkProfileIteratorVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkProfileIterator *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkProfileIterator *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkProfileIterator *This);

    /*** IDeckLinkProfileIterator methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IDeckLinkProfileIterator *This,
        IDeckLinkProfile **profile);

    END_INTERFACE
} IDeckLinkProfileIteratorVtbl;

interface IDeckLinkProfileIterator {
    CONST_VTBL IDeckLinkProfileIteratorVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkProfileIterator_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkProfileIterator_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkProfileIterator_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkProfileIterator methods ***/
#define IDeckLinkProfileIterator_Next(This,profile) (This)->lpVtbl->Next(This,profile)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkProfileIterator_QueryInterface(IDeckLinkProfileIterator* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkProfileIterator_AddRef(IDeckLinkProfileIterator* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkProfileIterator_Release(IDeckLinkProfileIterator* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkProfileIterator methods ***/
static FORCEINLINE HRESULT IDeckLinkProfileIterator_Next(IDeckLinkProfileIterator* This,IDeckLinkProfile **profile) {
    return This->lpVtbl->Next(This,profile);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkProfileIterator_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkProfile interface
 */
#ifndef __IDeckLinkProfile_INTERFACE_DEFINED__
#define __IDeckLinkProfile_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkProfile, 0x16093466, 0x674a, 0x432b, 0x9d,0xa0, 0x1a,0xc2,0xc5,0xa8,0x24,0x1c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("16093466-674a-432b-9da0-1ac2c5a8241c")
IDeckLinkProfile : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetDevice(
        IDeckLink **device) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsActive(
        BOOL *isActive) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetActive(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPeers(
        IDeckLinkProfileIterator **profileIterator) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkProfile, 0x16093466, 0x674a, 0x432b, 0x9d,0xa0, 0x1a,0xc2,0xc5,0xa8,0x24,0x1c)
#endif
#else
typedef struct IDeckLinkProfileVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkProfile *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkProfile *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkProfile *This);

    /*** IDeckLinkProfile methods ***/
    HRESULT (STDMETHODCALLTYPE *GetDevice)(
        IDeckLinkProfile *This,
        IDeckLink **device);

    HRESULT (STDMETHODCALLTYPE *IsActive)(
        IDeckLinkProfile *This,
        BOOL *isActive);

    HRESULT (STDMETHODCALLTYPE *SetActive)(
        IDeckLinkProfile *This);

    HRESULT (STDMETHODCALLTYPE *GetPeers)(
        IDeckLinkProfile *This,
        IDeckLinkProfileIterator **profileIterator);

    END_INTERFACE
} IDeckLinkProfileVtbl;

interface IDeckLinkProfile {
    CONST_VTBL IDeckLinkProfileVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkProfile_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkProfile_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkProfile_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkProfile methods ***/
#define IDeckLinkProfile_GetDevice(This,device) (This)->lpVtbl->GetDevice(This,device)
#define IDeckLinkProfile_IsActive(This,isActive) (This)->lpVtbl->IsActive(This,isActive)
#define IDeckLinkProfile_SetActive(This) (This)->lpVtbl->SetActive(This)
#define IDeckLinkProfile_GetPeers(This,profileIterator) (This)->lpVtbl->GetPeers(This,profileIterator)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkProfile_QueryInterface(IDeckLinkProfile* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkProfile_AddRef(IDeckLinkProfile* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkProfile_Release(IDeckLinkProfile* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkProfile methods ***/
static FORCEINLINE HRESULT IDeckLinkProfile_GetDevice(IDeckLinkProfile* This,IDeckLink **device) {
    return This->lpVtbl->GetDevice(This,device);
}
static FORCEINLINE HRESULT IDeckLinkProfile_IsActive(IDeckLinkProfile* This,BOOL *isActive) {
    return This->lpVtbl->IsActive(This,isActive);
}
static FORCEINLINE HRESULT IDeckLinkProfile_SetActive(IDeckLinkProfile* This) {
    return This->lpVtbl->SetActive(This);
}
static FORCEINLINE HRESULT IDeckLinkProfile_GetPeers(IDeckLinkProfile* This,IDeckLinkProfileIterator **profileIterator) {
    return This->lpVtbl->GetPeers(This,profileIterator);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkProfile_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkProfileCallback interface
 */
#ifndef __IDeckLinkProfileCallback_INTERFACE_DEFINED__
#define __IDeckLinkProfileCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkProfileCallback, 0xa4f9341e, 0x97aa, 0x4e04, 0x89,0x35, 0x15,0xf8,0x09,0x89,0x8c,0xea);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a4f9341e-97aa-4e04-8935-15f809898cea")
IDeckLinkProfileCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ProfileChanging(
        IDeckLinkProfile *profileToBeActivated,
        BOOL streamsWillBeForcedToStop) = 0;

    virtual HRESULT STDMETHODCALLTYPE ProfileActivated(
        IDeckLinkProfile *activatedProfile) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkProfileCallback, 0xa4f9341e, 0x97aa, 0x4e04, 0x89,0x35, 0x15,0xf8,0x09,0x89,0x8c,0xea)
#endif
#else
typedef struct IDeckLinkProfileCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkProfileCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkProfileCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkProfileCallback *This);

    /*** IDeckLinkProfileCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *ProfileChanging)(
        IDeckLinkProfileCallback *This,
        IDeckLinkProfile *profileToBeActivated,
        BOOL streamsWillBeForcedToStop);

    HRESULT (STDMETHODCALLTYPE *ProfileActivated)(
        IDeckLinkProfileCallback *This,
        IDeckLinkProfile *activatedProfile);

    END_INTERFACE
} IDeckLinkProfileCallbackVtbl;

interface IDeckLinkProfileCallback {
    CONST_VTBL IDeckLinkProfileCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkProfileCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkProfileCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkProfileCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkProfileCallback methods ***/
#define IDeckLinkProfileCallback_ProfileChanging(This,profileToBeActivated,streamsWillBeForcedToStop) (This)->lpVtbl->ProfileChanging(This,profileToBeActivated,streamsWillBeForcedToStop)
#define IDeckLinkProfileCallback_ProfileActivated(This,activatedProfile) (This)->lpVtbl->ProfileActivated(This,activatedProfile)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkProfileCallback_QueryInterface(IDeckLinkProfileCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkProfileCallback_AddRef(IDeckLinkProfileCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkProfileCallback_Release(IDeckLinkProfileCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkProfileCallback methods ***/
static FORCEINLINE HRESULT IDeckLinkProfileCallback_ProfileChanging(IDeckLinkProfileCallback* This,IDeckLinkProfile *profileToBeActivated,BOOL streamsWillBeForcedToStop) {
    return This->lpVtbl->ProfileChanging(This,profileToBeActivated,streamsWillBeForcedToStop);
}
static FORCEINLINE HRESULT IDeckLinkProfileCallback_ProfileActivated(IDeckLinkProfileCallback* This,IDeckLinkProfile *activatedProfile) {
    return This->lpVtbl->ProfileActivated(This,activatedProfile);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkProfileCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkProfileManager interface
 */
#ifndef __IDeckLinkProfileManager_INTERFACE_DEFINED__
#define __IDeckLinkProfileManager_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkProfileManager, 0x30d41429, 0x3998, 0x4b6d, 0x84,0xf8, 0x78,0xc9,0x4a,0x79,0x7c,0x6e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("30d41429-3998-4b6d-84f8-78c94a797c6e")
IDeckLinkProfileManager : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProfiles(
        IDeckLinkProfileIterator **profileIterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProfile(
        BMDProfileID profileID,
        IDeckLinkProfile **profile) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkProfileCallback *callback) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkProfileManager, 0x30d41429, 0x3998, 0x4b6d, 0x84,0xf8, 0x78,0xc9,0x4a,0x79,0x7c,0x6e)
#endif
#else
typedef struct IDeckLinkProfileManagerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkProfileManager *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkProfileManager *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkProfileManager *This);

    /*** IDeckLinkProfileManager methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProfiles)(
        IDeckLinkProfileManager *This,
        IDeckLinkProfileIterator **profileIterator);

    HRESULT (STDMETHODCALLTYPE *GetProfile)(
        IDeckLinkProfileManager *This,
        BMDProfileID profileID,
        IDeckLinkProfile **profile);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkProfileManager *This,
        IDeckLinkProfileCallback *callback);

    END_INTERFACE
} IDeckLinkProfileManagerVtbl;

interface IDeckLinkProfileManager {
    CONST_VTBL IDeckLinkProfileManagerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkProfileManager_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkProfileManager_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkProfileManager_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkProfileManager methods ***/
#define IDeckLinkProfileManager_GetProfiles(This,profileIterator) (This)->lpVtbl->GetProfiles(This,profileIterator)
#define IDeckLinkProfileManager_GetProfile(This,profileID,profile) (This)->lpVtbl->GetProfile(This,profileID,profile)
#define IDeckLinkProfileManager_SetCallback(This,callback) (This)->lpVtbl->SetCallback(This,callback)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkProfileManager_QueryInterface(IDeckLinkProfileManager* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkProfileManager_AddRef(IDeckLinkProfileManager* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkProfileManager_Release(IDeckLinkProfileManager* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkProfileManager methods ***/
static FORCEINLINE HRESULT IDeckLinkProfileManager_GetProfiles(IDeckLinkProfileManager* This,IDeckLinkProfileIterator **profileIterator) {
    return This->lpVtbl->GetProfiles(This,profileIterator);
}
static FORCEINLINE HRESULT IDeckLinkProfileManager_GetProfile(IDeckLinkProfileManager* This,BMDProfileID profileID,IDeckLinkProfile **profile) {
    return This->lpVtbl->GetProfile(This,profileID,profile);
}
static FORCEINLINE HRESULT IDeckLinkProfileManager_SetCallback(IDeckLinkProfileManager* This,IDeckLinkProfileCallback *callback) {
    return This->lpVtbl->SetCallback(This,callback);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkProfileManager_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkStatus interface
 */
#ifndef __IDeckLinkStatus_INTERFACE_DEFINED__
#define __IDeckLinkStatus_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkStatus, 0x5f558200, 0x4028, 0x49bc, 0xbe,0xac, 0xdb,0x3f,0xa4,0xa9,0x6e,0x46);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5f558200-4028-49bc-beac-db3fa4a96e46")
IDeckLinkStatus : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkStatusID statusID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkStatusID statusID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkStatusID statusID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkStatusID statusID,
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        BMDDeckLinkStatusID statusID,
        void *buffer,
        unsigned int *bufferSize) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkStatus, 0x5f558200, 0x4028, 0x49bc, 0xbe,0xac, 0xdb,0x3f,0xa4,0xa9,0x6e,0x46)
#endif
#else
typedef struct IDeckLinkStatusVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkStatus *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkStatus *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkStatus *This);

    /*** IDeckLinkStatus methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkStatus *This,
        BMDDeckLinkStatusID statusID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkStatus *This,
        BMDDeckLinkStatusID statusID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkStatus *This,
        BMDDeckLinkStatusID statusID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkStatus *This,
        BMDDeckLinkStatusID statusID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkStatus *This,
        BMDDeckLinkStatusID statusID,
        void *buffer,
        unsigned int *bufferSize);

    END_INTERFACE
} IDeckLinkStatusVtbl;

interface IDeckLinkStatus {
    CONST_VTBL IDeckLinkStatusVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkStatus_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkStatus_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkStatus_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkStatus methods ***/
#define IDeckLinkStatus_GetFlag(This,statusID,value) (This)->lpVtbl->GetFlag(This,statusID,value)
#define IDeckLinkStatus_GetInt(This,statusID,value) (This)->lpVtbl->GetInt(This,statusID,value)
#define IDeckLinkStatus_GetFloat(This,statusID,value) (This)->lpVtbl->GetFloat(This,statusID,value)
#define IDeckLinkStatus_GetString(This,statusID,value) (This)->lpVtbl->GetString(This,statusID,value)
#define IDeckLinkStatus_GetBytes(This,statusID,buffer,bufferSize) (This)->lpVtbl->GetBytes(This,statusID,buffer,bufferSize)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkStatus_QueryInterface(IDeckLinkStatus* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkStatus_AddRef(IDeckLinkStatus* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkStatus_Release(IDeckLinkStatus* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkStatus methods ***/
static FORCEINLINE HRESULT IDeckLinkStatus_GetFlag(IDeckLinkStatus* This,BMDDeckLinkStatusID statusID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,statusID,value);
}
static FORCEINLINE HRESULT IDeckLinkStatus_GetInt(IDeckLinkStatus* This,BMDDeckLinkStatusID statusID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,statusID,value);
}
static FORCEINLINE HRESULT IDeckLinkStatus_GetFloat(IDeckLinkStatus* This,BMDDeckLinkStatusID statusID,double *value) {
    return This->lpVtbl->GetFloat(This,statusID,value);
}
static FORCEINLINE HRESULT IDeckLinkStatus_GetString(IDeckLinkStatus* This,BMDDeckLinkStatusID statusID,BSTR *value) {
    return This->lpVtbl->GetString(This,statusID,value);
}
static FORCEINLINE HRESULT IDeckLinkStatus_GetBytes(IDeckLinkStatus* This,BMDDeckLinkStatusID statusID,void *buffer,unsigned int *bufferSize) {
    return This->lpVtbl->GetBytes(This,statusID,buffer,bufferSize);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkStatus_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkKeyer interface
 */
#ifndef __IDeckLinkKeyer_INTERFACE_DEFINED__
#define __IDeckLinkKeyer_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkKeyer, 0x89afcaf5, 0x65f8, 0x421e, 0x98,0xf7, 0x96,0xfe,0x5f,0x5b,0xfb,0xa3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("89afcaf5-65f8-421e-98f7-96fe5f5bfba3")
IDeckLinkKeyer : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Enable(
        BOOL isExternal) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetLevel(
        unsigned char level) = 0;

    virtual HRESULT STDMETHODCALLTYPE RampUp(
        unsigned int numberOfFrames) = 0;

    virtual HRESULT STDMETHODCALLTYPE RampDown(
        unsigned int numberOfFrames) = 0;

    virtual HRESULT STDMETHODCALLTYPE Disable(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkKeyer, 0x89afcaf5, 0x65f8, 0x421e, 0x98,0xf7, 0x96,0xfe,0x5f,0x5b,0xfb,0xa3)
#endif
#else
typedef struct IDeckLinkKeyerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkKeyer *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkKeyer *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkKeyer *This);

    /*** IDeckLinkKeyer methods ***/
    HRESULT (STDMETHODCALLTYPE *Enable)(
        IDeckLinkKeyer *This,
        BOOL isExternal);

    HRESULT (STDMETHODCALLTYPE *SetLevel)(
        IDeckLinkKeyer *This,
        unsigned char level);

    HRESULT (STDMETHODCALLTYPE *RampUp)(
        IDeckLinkKeyer *This,
        unsigned int numberOfFrames);

    HRESULT (STDMETHODCALLTYPE *RampDown)(
        IDeckLinkKeyer *This,
        unsigned int numberOfFrames);

    HRESULT (STDMETHODCALLTYPE *Disable)(
        IDeckLinkKeyer *This);

    END_INTERFACE
} IDeckLinkKeyerVtbl;

interface IDeckLinkKeyer {
    CONST_VTBL IDeckLinkKeyerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkKeyer_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkKeyer_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkKeyer_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkKeyer methods ***/
#define IDeckLinkKeyer_Enable(This,isExternal) (This)->lpVtbl->Enable(This,isExternal)
#define IDeckLinkKeyer_SetLevel(This,level) (This)->lpVtbl->SetLevel(This,level)
#define IDeckLinkKeyer_RampUp(This,numberOfFrames) (This)->lpVtbl->RampUp(This,numberOfFrames)
#define IDeckLinkKeyer_RampDown(This,numberOfFrames) (This)->lpVtbl->RampDown(This,numberOfFrames)
#define IDeckLinkKeyer_Disable(This) (This)->lpVtbl->Disable(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkKeyer_QueryInterface(IDeckLinkKeyer* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkKeyer_AddRef(IDeckLinkKeyer* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkKeyer_Release(IDeckLinkKeyer* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkKeyer methods ***/
static FORCEINLINE HRESULT IDeckLinkKeyer_Enable(IDeckLinkKeyer* This,BOOL isExternal) {
    return This->lpVtbl->Enable(This,isExternal);
}
static FORCEINLINE HRESULT IDeckLinkKeyer_SetLevel(IDeckLinkKeyer* This,unsigned char level) {
    return This->lpVtbl->SetLevel(This,level);
}
static FORCEINLINE HRESULT IDeckLinkKeyer_RampUp(IDeckLinkKeyer* This,unsigned int numberOfFrames) {
    return This->lpVtbl->RampUp(This,numberOfFrames);
}
static FORCEINLINE HRESULT IDeckLinkKeyer_RampDown(IDeckLinkKeyer* This,unsigned int numberOfFrames) {
    return This->lpVtbl->RampDown(This,numberOfFrames);
}
static FORCEINLINE HRESULT IDeckLinkKeyer_Disable(IDeckLinkKeyer* This) {
    return This->lpVtbl->Disable(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkKeyer_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoConversion interface
 */
#ifndef __IDeckLinkVideoConversion_INTERFACE_DEFINED__
#define __IDeckLinkVideoConversion_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoConversion, 0x3bbcb8a2, 0xda2c, 0x42d9, 0xb5,0xd8, 0x88,0x08,0x36,0x44,0xe9,0x9a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3bbcb8a2-da2c-42d9-b5d8-88083644e99a")
IDeckLinkVideoConversion : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ConvertFrame(
        IDeckLinkVideoFrame *srcFrame,
        IDeckLinkVideoFrame *dstFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoConversion, 0x3bbcb8a2, 0xda2c, 0x42d9, 0xb5,0xd8, 0x88,0x08,0x36,0x44,0xe9,0x9a)
#endif
#else
typedef struct IDeckLinkVideoConversionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoConversion *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoConversion *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoConversion *This);

    /*** IDeckLinkVideoConversion methods ***/
    HRESULT (STDMETHODCALLTYPE *ConvertFrame)(
        IDeckLinkVideoConversion *This,
        IDeckLinkVideoFrame *srcFrame,
        IDeckLinkVideoFrame *dstFrame);

    END_INTERFACE
} IDeckLinkVideoConversionVtbl;

interface IDeckLinkVideoConversion {
    CONST_VTBL IDeckLinkVideoConversionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkVideoConversion_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkVideoConversion_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkVideoConversion_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoConversion methods ***/
#define IDeckLinkVideoConversion_ConvertFrame(This,srcFrame,dstFrame) (This)->lpVtbl->ConvertFrame(This,srcFrame,dstFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoConversion_QueryInterface(IDeckLinkVideoConversion* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoConversion_AddRef(IDeckLinkVideoConversion* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoConversion_Release(IDeckLinkVideoConversion* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoConversion methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoConversion_ConvertFrame(IDeckLinkVideoConversion* This,IDeckLinkVideoFrame *srcFrame,IDeckLinkVideoFrame *dstFrame) {
    return This->lpVtbl->ConvertFrame(This,srcFrame,dstFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoConversion_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkDeviceNotificationCallback interface
 */
#ifndef __IDeckLinkDeviceNotificationCallback_INTERFACE_DEFINED__
#define __IDeckLinkDeviceNotificationCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDeviceNotificationCallback, 0x4997053b, 0x0adf, 0x4cc8, 0xac,0x70, 0x7a,0x50,0xc4,0xbe,0x72,0x8f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4997053b-0adf-4cc8-ac70-7a50c4be728f")
IDeckLinkDeviceNotificationCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DeckLinkDeviceArrived(
        IDeckLink *deckLinkDevice) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeckLinkDeviceRemoved(
        IDeckLink *deckLinkDevice) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDeviceNotificationCallback, 0x4997053b, 0x0adf, 0x4cc8, 0xac,0x70, 0x7a,0x50,0xc4,0xbe,0x72,0x8f)
#endif
#else
typedef struct IDeckLinkDeviceNotificationCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDeviceNotificationCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDeviceNotificationCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDeviceNotificationCallback *This);

    /*** IDeckLinkDeviceNotificationCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *DeckLinkDeviceArrived)(
        IDeckLinkDeviceNotificationCallback *This,
        IDeckLink *deckLinkDevice);

    HRESULT (STDMETHODCALLTYPE *DeckLinkDeviceRemoved)(
        IDeckLinkDeviceNotificationCallback *This,
        IDeckLink *deckLinkDevice);

    END_INTERFACE
} IDeckLinkDeviceNotificationCallbackVtbl;

interface IDeckLinkDeviceNotificationCallback {
    CONST_VTBL IDeckLinkDeviceNotificationCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDeviceNotificationCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDeviceNotificationCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDeviceNotificationCallback_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDeviceNotificationCallback methods ***/
#define IDeckLinkDeviceNotificationCallback_DeckLinkDeviceArrived(This,deckLinkDevice) (This)->lpVtbl->DeckLinkDeviceArrived(This,deckLinkDevice)
#define IDeckLinkDeviceNotificationCallback_DeckLinkDeviceRemoved(This,deckLinkDevice) (This)->lpVtbl->DeckLinkDeviceRemoved(This,deckLinkDevice)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDeviceNotificationCallback_QueryInterface(IDeckLinkDeviceNotificationCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDeviceNotificationCallback_AddRef(IDeckLinkDeviceNotificationCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDeviceNotificationCallback_Release(IDeckLinkDeviceNotificationCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDeviceNotificationCallback methods ***/
static FORCEINLINE HRESULT IDeckLinkDeviceNotificationCallback_DeckLinkDeviceArrived(IDeckLinkDeviceNotificationCallback* This,IDeckLink *deckLinkDevice) {
    return This->lpVtbl->DeckLinkDeviceArrived(This,deckLinkDevice);
}
static FORCEINLINE HRESULT IDeckLinkDeviceNotificationCallback_DeckLinkDeviceRemoved(IDeckLinkDeviceNotificationCallback* This,IDeckLink *deckLinkDevice) {
    return This->lpVtbl->DeckLinkDeviceRemoved(This,deckLinkDevice);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDeviceNotificationCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkDiscovery interface
 */
#ifndef __IDeckLinkDiscovery_INTERFACE_DEFINED__
#define __IDeckLinkDiscovery_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDiscovery, 0xcdbf631c, 0xbc76, 0x45fa, 0xb4,0x4d, 0xc5,0x50,0x59,0xbc,0x61,0x01);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cdbf631c-bc76-45fa-b44d-c55059bc6101")
IDeckLinkDiscovery : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InstallDeviceNotifications(
        IDeckLinkDeviceNotificationCallback *deviceNotificationCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE UninstallDeviceNotifications(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDiscovery, 0xcdbf631c, 0xbc76, 0x45fa, 0xb4,0x4d, 0xc5,0x50,0x59,0xbc,0x61,0x01)
#endif
#else
typedef struct IDeckLinkDiscoveryVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDiscovery *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDiscovery *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDiscovery *This);

    /*** IDeckLinkDiscovery methods ***/
    HRESULT (STDMETHODCALLTYPE *InstallDeviceNotifications)(
        IDeckLinkDiscovery *This,
        IDeckLinkDeviceNotificationCallback *deviceNotificationCallback);

    HRESULT (STDMETHODCALLTYPE *UninstallDeviceNotifications)(
        IDeckLinkDiscovery *This);

    END_INTERFACE
} IDeckLinkDiscoveryVtbl;

interface IDeckLinkDiscovery {
    CONST_VTBL IDeckLinkDiscoveryVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDiscovery_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDiscovery_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDiscovery_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDiscovery methods ***/
#define IDeckLinkDiscovery_InstallDeviceNotifications(This,deviceNotificationCallback) (This)->lpVtbl->InstallDeviceNotifications(This,deviceNotificationCallback)
#define IDeckLinkDiscovery_UninstallDeviceNotifications(This) (This)->lpVtbl->UninstallDeviceNotifications(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDiscovery_QueryInterface(IDeckLinkDiscovery* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDiscovery_AddRef(IDeckLinkDiscovery* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDiscovery_Release(IDeckLinkDiscovery* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDiscovery methods ***/
static FORCEINLINE HRESULT IDeckLinkDiscovery_InstallDeviceNotifications(IDeckLinkDiscovery* This,IDeckLinkDeviceNotificationCallback *deviceNotificationCallback) {
    return This->lpVtbl->InstallDeviceNotifications(This,deviceNotificationCallback);
}
static FORCEINLINE HRESULT IDeckLinkDiscovery_UninstallDeviceNotifications(IDeckLinkDiscovery* This) {
    return This->lpVtbl->UninstallDeviceNotifications(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDiscovery_INTERFACE_DEFINED__ */

/*****************************************************************************
 * CDeckLinkIterator coclass
 */

DEFINE_GUID(CLSID_CDeckLinkIterator, 0xba6c6f44, 0x6da5, 0x4dce, 0x94,0xaa, 0xee,0x2d,0x13,0x72,0xa6,0x76);

#ifdef __cplusplus
class DECLSPEC_UUID("ba6c6f44-6da5-4dce-94aa-ee2d1372a676") CDeckLinkIterator;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkIterator, 0xba6c6f44, 0x6da5, 0x4dce, 0x94,0xaa, 0xee,0x2d,0x13,0x72,0xa6,0x76)
#endif
#endif

/*****************************************************************************
 * CDeckLinkAPIInformation coclass
 */

DEFINE_GUID(CLSID_CDeckLinkAPIInformation, 0x263ca19f, 0xed09, 0x482e, 0x9f,0x9d, 0x84,0x00,0x57,0x83,0xa2,0x37);

#ifdef __cplusplus
class DECLSPEC_UUID("263ca19f-ed09-482e-9f9d-84005783a237") CDeckLinkAPIInformation;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkAPIInformation, 0x263ca19f, 0xed09, 0x482e, 0x9f,0x9d, 0x84,0x00,0x57,0x83,0xa2,0x37)
#endif
#endif

/*****************************************************************************
 * CDeckLinkGLScreenPreviewHelper coclass
 */

DEFINE_GUID(CLSID_CDeckLinkGLScreenPreviewHelper, 0xf63e77c7, 0xb655, 0x4a4a, 0x9a,0xd0, 0x3c,0xa8,0x5d,0x39,0x43,0x43);

#ifdef __cplusplus
class DECLSPEC_UUID("f63e77c7-b655-4a4a-9ad0-3ca85d394343") CDeckLinkGLScreenPreviewHelper;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkGLScreenPreviewHelper, 0xf63e77c7, 0xb655, 0x4a4a, 0x9a,0xd0, 0x3c,0xa8,0x5d,0x39,0x43,0x43)
#endif
#endif

/*****************************************************************************
 * CDeckLinkDX9ScreenPreviewHelper coclass
 */

DEFINE_GUID(CLSID_CDeckLinkDX9ScreenPreviewHelper, 0xcc010023, 0xe01d, 0x4525, 0x9d,0x59, 0x80,0xc8,0xab,0x3d,0xc7,0xa0);

#ifdef __cplusplus
class DECLSPEC_UUID("cc010023-e01d-4525-9d59-80c8ab3dc7a0") CDeckLinkDX9ScreenPreviewHelper;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkDX9ScreenPreviewHelper, 0xcc010023, 0xe01d, 0x4525, 0x9d,0x59, 0x80,0xc8,0xab,0x3d,0xc7,0xa0)
#endif
#endif

/*****************************************************************************
 * CDeckLinkVideoConversion coclass
 */

DEFINE_GUID(CLSID_CDeckLinkVideoConversion, 0x7dbbbb11, 0x5b7b, 0x467d, 0xae,0xa4, 0xce,0xa4,0x68,0xfd,0x36,0x8c);

#ifdef __cplusplus
class DECLSPEC_UUID("7dbbbb11-5b7b-467d-aea4-cea468fd368c") CDeckLinkVideoConversion;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkVideoConversion, 0x7dbbbb11, 0x5b7b, 0x467d, 0xae,0xa4, 0xce,0xa4,0x68,0xfd,0x36,0x8c)
#endif
#endif

/*****************************************************************************
 * CDeckLinkDiscovery coclass
 */

DEFINE_GUID(CLSID_CDeckLinkDiscovery, 0x22fbfc33, 0x8d07, 0x495c, 0xa5,0xbf, 0xda,0xb5,0xea,0x9b,0x82,0xdb);

#ifdef __cplusplus
class DECLSPEC_UUID("22fbfc33-8d07-495c-a5bf-dab5ea9b82db") CDeckLinkDiscovery;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkDiscovery, 0x22fbfc33, 0x8d07, 0x495c, 0xa5,0xbf, 0xda,0xb5,0xea,0x9b,0x82,0xdb)
#endif
#endif

/*****************************************************************************
 * CDeckLinkVideoFrameAncillaryPackets coclass
 */

DEFINE_GUID(CLSID_CDeckLinkVideoFrameAncillaryPackets, 0xf891ad29, 0xd0c2, 0x46e9, 0xa9,0x26, 0x4e,0x2d,0x0d,0xd8,0xcf,0xad);

#ifdef __cplusplus
class DECLSPEC_UUID("f891ad29-d0c2-46e9-a926-4e2d0dd8cfad") CDeckLinkVideoFrameAncillaryPackets;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkVideoFrameAncillaryPackets, 0xf891ad29, 0xd0c2, 0x46e9, 0xa9,0x26, 0x4e,0x2d,0x0d,0xd8,0xcf,0xad)
#endif
#endif

/*****************************************************************************
 * IDeckLinkOutput_v11_4 interface
 */
#ifndef __IDeckLinkOutput_v11_4_INTERFACE_DEFINED__
#define __IDeckLinkOutput_v11_4_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkOutput_v11_4, 0x065a0f6c, 0xc508, 0x4d0d, 0xb9,0x19, 0xf5,0xeb,0x0e,0xbf,0xc9,0x6b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("065a0f6c-c508-4d0d-b919-f5eb0ebfc96b")
IDeckLinkOutput_v11_4 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedPixelFormat,
        BMDSupportedVideoModeFlags flags,
        BMDDisplayMode *actualMode,
        BOOL *supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput(
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame(
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame **outFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData(
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync(
        IDeckLinkVideoFrame *theFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame(
        IDeckLinkVideoFrame *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback(
        IDeckLinkVideoOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount(
        unsigned int *bufferedFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync(
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples(
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount(
        unsigned int *bufferedSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAudioCallback(
        IDeckLinkAudioOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback(
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback(
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning(
        BOOL *active) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *streamTime,
        double *playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus(
        BMDReferenceStatus *referenceStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrameCompletionReferenceTimestamp(
        IDeckLinkVideoFrame *theFrame,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *frameCompletionTimestamp) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkOutput_v11_4, 0x065a0f6c, 0xc508, 0x4d0d, 0xb9,0x19, 0xf5,0xeb,0x0e,0xbf,0xc9,0x6b)
#endif
#else
typedef struct IDeckLinkOutput_v11_4Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkOutput_v11_4 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkOutput_v11_4 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkOutput_v11_4 *This);

    /*** IDeckLinkOutput_v11_4 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkOutput_v11_4 *This,
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedPixelFormat,
        BMDSupportedVideoModeFlags flags,
        BMDDisplayMode *actualMode,
        BOOL *supported);

    HRESULT (STDMETHODCALLTYPE *GetDisplayMode)(
        IDeckLinkOutput_v11_4 *This,
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkOutput_v11_4 *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkOutput_v11_4 *This,
        IDeckLinkScreenPreviewCallback *previewCallback);

    HRESULT (STDMETHODCALLTYPE *EnableVideoOutput)(
        IDeckLinkOutput_v11_4 *This,
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoOutput)(
        IDeckLinkOutput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator)(
        IDeckLinkOutput_v11_4 *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *CreateVideoFrame)(
        IDeckLinkOutput_v11_4 *This,
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame **outFrame);

    HRESULT (STDMETHODCALLTYPE *CreateAncillaryData)(
        IDeckLinkOutput_v11_4 *This,
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer);

    HRESULT (STDMETHODCALLTYPE *DisplayVideoFrameSync)(
        IDeckLinkOutput_v11_4 *This,
        IDeckLinkVideoFrame *theFrame);

    HRESULT (STDMETHODCALLTYPE *ScheduleVideoFrame)(
        IDeckLinkOutput_v11_4 *This,
        IDeckLinkVideoFrame *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback)(
        IDeckLinkOutput_v11_4 *This,
        IDeckLinkVideoOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetBufferedVideoFrameCount)(
        IDeckLinkOutput_v11_4 *This,
        unsigned int *bufferedFrameCount);

    HRESULT (STDMETHODCALLTYPE *EnableAudioOutput)(
        IDeckLinkOutput_v11_4 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType);

    HRESULT (STDMETHODCALLTYPE *DisableAudioOutput)(
        IDeckLinkOutput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *WriteAudioSamplesSync)(
        IDeckLinkOutput_v11_4 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *BeginAudioPreroll)(
        IDeckLinkOutput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *EndAudioPreroll)(
        IDeckLinkOutput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *ScheduleAudioSamples)(
        IDeckLinkOutput_v11_4 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount)(
        IDeckLinkOutput_v11_4 *This,
        unsigned int *bufferedSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *FlushBufferedAudioSamples)(
        IDeckLinkOutput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *SetAudioCallback)(
        IDeckLinkOutput_v11_4 *This,
        IDeckLinkAudioOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *StartScheduledPlayback)(
        IDeckLinkOutput_v11_4 *This,
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *StopScheduledPlayback)(
        IDeckLinkOutput_v11_4 *This,
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *IsScheduledPlaybackRunning)(
        IDeckLinkOutput_v11_4 *This,
        BOOL *active);

    HRESULT (STDMETHODCALLTYPE *GetScheduledStreamTime)(
        IDeckLinkOutput_v11_4 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *streamTime,
        double *playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *GetReferenceStatus)(
        IDeckLinkOutput_v11_4 *This,
        BMDReferenceStatus *referenceStatus);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkOutput_v11_4 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    HRESULT (STDMETHODCALLTYPE *GetFrameCompletionReferenceTimestamp)(
        IDeckLinkOutput_v11_4 *This,
        IDeckLinkVideoFrame *theFrame,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *frameCompletionTimestamp);

    END_INTERFACE
} IDeckLinkOutput_v11_4Vtbl;

interface IDeckLinkOutput_v11_4 {
    CONST_VTBL IDeckLinkOutput_v11_4Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkOutput_v11_4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkOutput_v11_4_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkOutput_v11_4_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkOutput_v11_4 methods ***/
#define IDeckLinkOutput_v11_4_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,flags,actualMode,supported) (This)->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,flags,actualMode,supported)
#define IDeckLinkOutput_v11_4_GetDisplayMode(This,displayMode,resultDisplayMode) (This)->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode)
#define IDeckLinkOutput_v11_4_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkOutput_v11_4_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkOutput_v11_4_EnableVideoOutput(This,displayMode,flags) (This)->lpVtbl->EnableVideoOutput(This,displayMode,flags)
#define IDeckLinkOutput_v11_4_DisableVideoOutput(This) (This)->lpVtbl->DisableVideoOutput(This)
#define IDeckLinkOutput_v11_4_SetVideoOutputFrameMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator)
#define IDeckLinkOutput_v11_4_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) (This)->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)
#define IDeckLinkOutput_v11_4_CreateAncillaryData(This,pixelFormat,outBuffer) (This)->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer)
#define IDeckLinkOutput_v11_4_DisplayVideoFrameSync(This,theFrame) (This)->lpVtbl->DisplayVideoFrameSync(This,theFrame)
#define IDeckLinkOutput_v11_4_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) (This)->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)
#define IDeckLinkOutput_v11_4_SetScheduledFrameCompletionCallback(This,theCallback) (This)->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback)
#define IDeckLinkOutput_v11_4_GetBufferedVideoFrameCount(This,bufferedFrameCount) (This)->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount)
#define IDeckLinkOutput_v11_4_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) (This)->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType)
#define IDeckLinkOutput_v11_4_DisableAudioOutput(This) (This)->lpVtbl->DisableAudioOutput(This)
#define IDeckLinkOutput_v11_4_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) (This)->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)
#define IDeckLinkOutput_v11_4_BeginAudioPreroll(This) (This)->lpVtbl->BeginAudioPreroll(This)
#define IDeckLinkOutput_v11_4_EndAudioPreroll(This) (This)->lpVtbl->EndAudioPreroll(This)
#define IDeckLinkOutput_v11_4_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) (This)->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)
#define IDeckLinkOutput_v11_4_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) (This)->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount)
#define IDeckLinkOutput_v11_4_FlushBufferedAudioSamples(This) (This)->lpVtbl->FlushBufferedAudioSamples(This)
#define IDeckLinkOutput_v11_4_SetAudioCallback(This,theCallback) (This)->lpVtbl->SetAudioCallback(This,theCallback)
#define IDeckLinkOutput_v11_4_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) (This)->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)
#define IDeckLinkOutput_v11_4_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) (This)->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)
#define IDeckLinkOutput_v11_4_IsScheduledPlaybackRunning(This,active) (This)->lpVtbl->IsScheduledPlaybackRunning(This,active)
#define IDeckLinkOutput_v11_4_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) (This)->lpVtbl->GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed)
#define IDeckLinkOutput_v11_4_GetReferenceStatus(This,referenceStatus) (This)->lpVtbl->GetReferenceStatus(This,referenceStatus)
#define IDeckLinkOutput_v11_4_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#define IDeckLinkOutput_v11_4_GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) (This)->lpVtbl->GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_QueryInterface(IDeckLinkOutput_v11_4* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkOutput_v11_4_AddRef(IDeckLinkOutput_v11_4* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkOutput_v11_4_Release(IDeckLinkOutput_v11_4* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkOutput_v11_4 methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_DoesSupportVideoMode(IDeckLinkOutput_v11_4* This,BMDVideoConnection connection,BMDDisplayMode requestedMode,BMDPixelFormat requestedPixelFormat,BMDSupportedVideoModeFlags flags,BMDDisplayMode *actualMode,BOOL *supported) {
    return This->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,flags,actualMode,supported);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_GetDisplayMode(IDeckLinkOutput_v11_4* This,BMDDisplayMode displayMode,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_GetDisplayModeIterator(IDeckLinkOutput_v11_4* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_SetScreenPreviewCallback(IDeckLinkOutput_v11_4* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_EnableVideoOutput(IDeckLinkOutput_v11_4* This,BMDDisplayMode displayMode,BMDVideoOutputFlags flags) {
    return This->lpVtbl->EnableVideoOutput(This,displayMode,flags);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_DisableVideoOutput(IDeckLinkOutput_v11_4* This) {
    return This->lpVtbl->DisableVideoOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_SetVideoOutputFrameMemoryAllocator(IDeckLinkOutput_v11_4* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_CreateVideoFrame(IDeckLinkOutput_v11_4* This,int width,int height,int rowBytes,BMDPixelFormat pixelFormat,BMDFrameFlags flags,IDeckLinkMutableVideoFrame **outFrame) {
    return This->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_CreateAncillaryData(IDeckLinkOutput_v11_4* This,BMDPixelFormat pixelFormat,IDeckLinkVideoFrameAncillary **outBuffer) {
    return This->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_DisplayVideoFrameSync(IDeckLinkOutput_v11_4* This,IDeckLinkVideoFrame *theFrame) {
    return This->lpVtbl->DisplayVideoFrameSync(This,theFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_ScheduleVideoFrame(IDeckLinkOutput_v11_4* This,IDeckLinkVideoFrame *theFrame,BMDTimeValue displayTime,BMDTimeValue displayDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_SetScheduledFrameCompletionCallback(IDeckLinkOutput_v11_4* This,IDeckLinkVideoOutputCallback *theCallback) {
    return This->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_GetBufferedVideoFrameCount(IDeckLinkOutput_v11_4* This,unsigned int *bufferedFrameCount) {
    return This->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_EnableAudioOutput(IDeckLinkOutput_v11_4* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount,BMDAudioOutputStreamType streamType) {
    return This->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_DisableAudioOutput(IDeckLinkOutput_v11_4* This) {
    return This->lpVtbl->DisableAudioOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_WriteAudioSamplesSync(IDeckLinkOutput_v11_4* This,void *buffer,unsigned int sampleFrameCount,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_BeginAudioPreroll(IDeckLinkOutput_v11_4* This) {
    return This->lpVtbl->BeginAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_EndAudioPreroll(IDeckLinkOutput_v11_4* This) {
    return This->lpVtbl->EndAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_ScheduleAudioSamples(IDeckLinkOutput_v11_4* This,void *buffer,unsigned int sampleFrameCount,BMDTimeValue streamTime,BMDTimeScale timeScale,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_GetBufferedAudioSampleFrameCount(IDeckLinkOutput_v11_4* This,unsigned int *bufferedSampleFrameCount) {
    return This->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_FlushBufferedAudioSamples(IDeckLinkOutput_v11_4* This) {
    return This->lpVtbl->FlushBufferedAudioSamples(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_SetAudioCallback(IDeckLinkOutput_v11_4* This,IDeckLinkAudioOutputCallback *theCallback) {
    return This->lpVtbl->SetAudioCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_StartScheduledPlayback(IDeckLinkOutput_v11_4* This,BMDTimeValue playbackStartTime,BMDTimeScale timeScale,double playbackSpeed) {
    return This->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_StopScheduledPlayback(IDeckLinkOutput_v11_4* This,BMDTimeValue stopPlaybackAtTime,BMDTimeValue *actualStopTime,BMDTimeScale timeScale) {
    return This->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_IsScheduledPlaybackRunning(IDeckLinkOutput_v11_4* This,BOOL *active) {
    return This->lpVtbl->IsScheduledPlaybackRunning(This,active);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_GetScheduledStreamTime(IDeckLinkOutput_v11_4* This,BMDTimeScale desiredTimeScale,BMDTimeValue *streamTime,double *playbackSpeed) {
    return This->lpVtbl->GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_GetReferenceStatus(IDeckLinkOutput_v11_4* This,BMDReferenceStatus *referenceStatus) {
    return This->lpVtbl->GetReferenceStatus(This,referenceStatus);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_GetHardwareReferenceClock(IDeckLinkOutput_v11_4* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v11_4_GetFrameCompletionReferenceTimestamp(IDeckLinkOutput_v11_4* This,IDeckLinkVideoFrame *theFrame,BMDTimeScale desiredTimeScale,BMDTimeValue *frameCompletionTimestamp) {
    return This->lpVtbl->GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkOutput_v11_4_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInput_v11_4 interface
 */
#ifndef __IDeckLinkInput_v11_4_INTERFACE_DEFINED__
#define __IDeckLinkInput_v11_4_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInput_v11_4, 0x2a88cf76, 0xf494, 0x4216, 0xa7,0xef, 0xdc,0x74,0xee,0xb8,0x38,0x82);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2a88cf76-f494-4216-a7ef-dc74eeb83882")
IDeckLinkInput_v11_4 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedPixelFormat,
        BMDSupportedVideoModeFlags flags,
        BOOL *supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoInput(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount(
        unsigned int *availableFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoInputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioInput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount(
        unsigned int *availableSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkInputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInput_v11_4, 0x2a88cf76, 0xf494, 0x4216, 0xa7,0xef, 0xdc,0x74,0xee,0xb8,0x38,0x82)
#endif
#else
typedef struct IDeckLinkInput_v11_4Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInput_v11_4 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInput_v11_4 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInput_v11_4 *This);

    /*** IDeckLinkInput_v11_4 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkInput_v11_4 *This,
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedPixelFormat,
        BMDSupportedVideoModeFlags flags,
        BOOL *supported);

    HRESULT (STDMETHODCALLTYPE *GetDisplayMode)(
        IDeckLinkInput_v11_4 *This,
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkInput_v11_4 *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkInput_v11_4 *This,
        IDeckLinkScreenPreviewCallback *previewCallback);

    HRESULT (STDMETHODCALLTYPE *EnableVideoInput)(
        IDeckLinkInput_v11_4 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoInput)(
        IDeckLinkInput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableVideoFrameCount)(
        IDeckLinkInput_v11_4 *This,
        unsigned int *availableFrameCount);

    HRESULT (STDMETHODCALLTYPE *SetVideoInputFrameMemoryAllocator)(
        IDeckLinkInput_v11_4 *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *EnableAudioInput)(
        IDeckLinkInput_v11_4 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioInput)(
        IDeckLinkInput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount)(
        IDeckLinkInput_v11_4 *This,
        unsigned int *availableSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *StartStreams)(
        IDeckLinkInput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *StopStreams)(
        IDeckLinkInput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *PauseStreams)(
        IDeckLinkInput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *FlushStreams)(
        IDeckLinkInput_v11_4 *This);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkInput_v11_4 *This,
        IDeckLinkInputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkInput_v11_4 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    END_INTERFACE
} IDeckLinkInput_v11_4Vtbl;

interface IDeckLinkInput_v11_4 {
    CONST_VTBL IDeckLinkInput_v11_4Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkInput_v11_4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkInput_v11_4_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkInput_v11_4_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkInput_v11_4 methods ***/
#define IDeckLinkInput_v11_4_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,flags,supported) (This)->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,flags,supported)
#define IDeckLinkInput_v11_4_GetDisplayMode(This,displayMode,resultDisplayMode) (This)->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode)
#define IDeckLinkInput_v11_4_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkInput_v11_4_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkInput_v11_4_EnableVideoInput(This,displayMode,pixelFormat,flags) (This)->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags)
#define IDeckLinkInput_v11_4_DisableVideoInput(This) (This)->lpVtbl->DisableVideoInput(This)
#define IDeckLinkInput_v11_4_GetAvailableVideoFrameCount(This,availableFrameCount) (This)->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount)
#define IDeckLinkInput_v11_4_SetVideoInputFrameMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetVideoInputFrameMemoryAllocator(This,theAllocator)
#define IDeckLinkInput_v11_4_EnableAudioInput(This,sampleRate,sampleType,channelCount) (This)->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount)
#define IDeckLinkInput_v11_4_DisableAudioInput(This) (This)->lpVtbl->DisableAudioInput(This)
#define IDeckLinkInput_v11_4_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) (This)->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)
#define IDeckLinkInput_v11_4_StartStreams(This) (This)->lpVtbl->StartStreams(This)
#define IDeckLinkInput_v11_4_StopStreams(This) (This)->lpVtbl->StopStreams(This)
#define IDeckLinkInput_v11_4_PauseStreams(This) (This)->lpVtbl->PauseStreams(This)
#define IDeckLinkInput_v11_4_FlushStreams(This) (This)->lpVtbl->FlushStreams(This)
#define IDeckLinkInput_v11_4_SetCallback(This,theCallback) (This)->lpVtbl->SetCallback(This,theCallback)
#define IDeckLinkInput_v11_4_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_QueryInterface(IDeckLinkInput_v11_4* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInput_v11_4_AddRef(IDeckLinkInput_v11_4* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInput_v11_4_Release(IDeckLinkInput_v11_4* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInput_v11_4 methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_DoesSupportVideoMode(IDeckLinkInput_v11_4* This,BMDVideoConnection connection,BMDDisplayMode requestedMode,BMDPixelFormat requestedPixelFormat,BMDSupportedVideoModeFlags flags,BOOL *supported) {
    return This->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,flags,supported);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_GetDisplayMode(IDeckLinkInput_v11_4* This,BMDDisplayMode displayMode,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_GetDisplayModeIterator(IDeckLinkInput_v11_4* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_SetScreenPreviewCallback(IDeckLinkInput_v11_4* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_EnableVideoInput(IDeckLinkInput_v11_4* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags) {
    return This->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_DisableVideoInput(IDeckLinkInput_v11_4* This) {
    return This->lpVtbl->DisableVideoInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_GetAvailableVideoFrameCount(IDeckLinkInput_v11_4* This,unsigned int *availableFrameCount) {
    return This->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_SetVideoInputFrameMemoryAllocator(IDeckLinkInput_v11_4* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoInputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_EnableAudioInput(IDeckLinkInput_v11_4* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_DisableAudioInput(IDeckLinkInput_v11_4* This) {
    return This->lpVtbl->DisableAudioInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_GetAvailableAudioSampleFrameCount(IDeckLinkInput_v11_4* This,unsigned int *availableSampleFrameCount) {
    return This->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_StartStreams(IDeckLinkInput_v11_4* This) {
    return This->lpVtbl->StartStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_StopStreams(IDeckLinkInput_v11_4* This) {
    return This->lpVtbl->StopStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_PauseStreams(IDeckLinkInput_v11_4* This) {
    return This->lpVtbl->PauseStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_FlushStreams(IDeckLinkInput_v11_4* This) {
    return This->lpVtbl->FlushStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_SetCallback(IDeckLinkInput_v11_4* This,IDeckLinkInputCallback *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_4_GetHardwareReferenceClock(IDeckLinkInput_v11_4* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInput_v11_4_INTERFACE_DEFINED__ */

typedef enum _BMDDisplayModeSupport_v10_11 {
    bmdDisplayModeNotSupported_v10_11 = 0,
    bmdDisplayModeSupported_v10_11 = 1,
    bmdDisplayModeSupportedWithConversion_v10_11 = 2
} BMDDisplayModeSupport_v10_11;
typedef enum _BMDDuplexMode_v10_11 {
    bmdDuplexModeFull_v10_11 = 0x66647570,
    bmdDuplexModeHalf_v10_11 = 0x68647570
} BMDDuplexMode_v10_11;
typedef enum _BMDDeckLinkConfigurationID_v10_11 {
    bmdDeckLinkConfigDuplexMode_v10_11 = 0x64757078
} BMDDeckLinkConfigurationID_v10_11;
typedef enum _BMDDeckLinkAttributeID_v10_11 {
    BMDDeckLinkSupportsDuplexModeConfiguration_v10_11 = 0x64757078,
    BMDDeckLinkSupportsHDKeying_v10_11 = 0x6b657968,
    BMDDeckLinkPairedDevicePersistentID_v10_11 = 0x70706964,
    BMDDeckLinkSupportsFullDuplex_v10_11 = 0x66647570
} BMDDeckLinkAttributeID_v10_11;
typedef enum _BMDDeckLinkStatusID_v10_11 {
    bmdDeckLinkStatusDuplexMode_v10_11 = 0x64757078
} BMDDeckLinkStatusID_v10_11;
typedef enum _BMDDuplexStatus_v10_11 {
    bmdDuplexFullDuplex_v10_11 = 0x66647570,
    bmdDuplexHalfDuplex_v10_11 = 0x68647570,
    bmdDuplexSimplex_v10_11 = 0x73706c78,
    bmdDuplexInactive_v10_11 = 0x696e6163
} BMDDuplexStatus_v10_11;
#ifndef __IDeckLinkConfiguration_v10_11_FWD_DEFINED__
#define __IDeckLinkConfiguration_v10_11_FWD_DEFINED__
typedef interface IDeckLinkConfiguration_v10_11 IDeckLinkConfiguration_v10_11;
#ifdef __cplusplus
interface IDeckLinkConfiguration_v10_11;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAttributes_v10_11_FWD_DEFINED__
#define __IDeckLinkAttributes_v10_11_FWD_DEFINED__
typedef interface IDeckLinkAttributes_v10_11 IDeckLinkAttributes_v10_11;
#ifdef __cplusplus
interface IDeckLinkAttributes_v10_11;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkNotification_v10_11_FWD_DEFINED__
#define __IDeckLinkNotification_v10_11_FWD_DEFINED__
typedef interface IDeckLinkNotification_v10_11 IDeckLinkNotification_v10_11;
#ifdef __cplusplus
interface IDeckLinkNotification_v10_11;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkConfiguration_v10_11 interface
 */
#ifndef __IDeckLinkConfiguration_v10_11_INTERFACE_DEFINED__
#define __IDeckLinkConfiguration_v10_11_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkConfiguration_v10_11, 0xef90380b, 0x4ae5, 0x4346, 0x90,0x77, 0xe2,0x88,0xe1,0x49,0xf1,0x29);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ef90380b-4ae5-4346-9077-e288e149f129")
IDeckLinkConfiguration_v10_11 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFlag(
        BMDDeckLinkConfigurationID cfgID,
        BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkConfigurationID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInt(
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFloat(
        BMDDeckLinkConfigurationID cfgID,
        double value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkConfigurationID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetString(
        BMDDeckLinkConfigurationID cfgID,
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkConfigurationID cfgID,
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkConfiguration_v10_11, 0xef90380b, 0x4ae5, 0x4346, 0x90,0x77, 0xe2,0x88,0xe1,0x49,0xf1,0x29)
#endif
#else
typedef struct IDeckLinkConfiguration_v10_11Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkConfiguration_v10_11 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkConfiguration_v10_11 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkConfiguration_v10_11 *This);

    /*** IDeckLinkConfiguration_v10_11 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlag)(
        IDeckLinkConfiguration_v10_11 *This,
        BMDDeckLinkConfigurationID cfgID,
        BOOL value);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkConfiguration_v10_11 *This,
        BMDDeckLinkConfigurationID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *SetInt)(
        IDeckLinkConfiguration_v10_11 *This,
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkConfiguration_v10_11 *This,
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *SetFloat)(
        IDeckLinkConfiguration_v10_11 *This,
        BMDDeckLinkConfigurationID cfgID,
        double value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkConfiguration_v10_11 *This,
        BMDDeckLinkConfigurationID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *SetString)(
        IDeckLinkConfiguration_v10_11 *This,
        BMDDeckLinkConfigurationID cfgID,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkConfiguration_v10_11 *This,
        BMDDeckLinkConfigurationID cfgID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *WriteConfigurationToPreferences)(
        IDeckLinkConfiguration_v10_11 *This);

    END_INTERFACE
} IDeckLinkConfiguration_v10_11Vtbl;

interface IDeckLinkConfiguration_v10_11 {
    CONST_VTBL IDeckLinkConfiguration_v10_11Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkConfiguration_v10_11_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkConfiguration_v10_11_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkConfiguration_v10_11_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkConfiguration_v10_11 methods ***/
#define IDeckLinkConfiguration_v10_11_SetFlag(This,cfgID,value) (This)->lpVtbl->SetFlag(This,cfgID,value)
#define IDeckLinkConfiguration_v10_11_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IDeckLinkConfiguration_v10_11_SetInt(This,cfgID,value) (This)->lpVtbl->SetInt(This,cfgID,value)
#define IDeckLinkConfiguration_v10_11_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkConfiguration_v10_11_SetFloat(This,cfgID,value) (This)->lpVtbl->SetFloat(This,cfgID,value)
#define IDeckLinkConfiguration_v10_11_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IDeckLinkConfiguration_v10_11_SetString(This,cfgID,value) (This)->lpVtbl->SetString(This,cfgID,value)
#define IDeckLinkConfiguration_v10_11_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#define IDeckLinkConfiguration_v10_11_WriteConfigurationToPreferences(This) (This)->lpVtbl->WriteConfigurationToPreferences(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_11_QueryInterface(IDeckLinkConfiguration_v10_11* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_v10_11_AddRef(IDeckLinkConfiguration_v10_11* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_v10_11_Release(IDeckLinkConfiguration_v10_11* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkConfiguration_v10_11 methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_11_SetFlag(IDeckLinkConfiguration_v10_11* This,BMDDeckLinkConfigurationID cfgID,BOOL value) {
    return This->lpVtbl->SetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_11_GetFlag(IDeckLinkConfiguration_v10_11* This,BMDDeckLinkConfigurationID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_11_SetInt(IDeckLinkConfiguration_v10_11* This,BMDDeckLinkConfigurationID cfgID,LONGLONG value) {
    return This->lpVtbl->SetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_11_GetInt(IDeckLinkConfiguration_v10_11* This,BMDDeckLinkConfigurationID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_11_SetFloat(IDeckLinkConfiguration_v10_11* This,BMDDeckLinkConfigurationID cfgID,double value) {
    return This->lpVtbl->SetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_11_GetFloat(IDeckLinkConfiguration_v10_11* This,BMDDeckLinkConfigurationID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_11_SetString(IDeckLinkConfiguration_v10_11* This,BMDDeckLinkConfigurationID cfgID,BSTR value) {
    return This->lpVtbl->SetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_11_GetString(IDeckLinkConfiguration_v10_11* This,BMDDeckLinkConfigurationID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_11_WriteConfigurationToPreferences(IDeckLinkConfiguration_v10_11* This) {
    return This->lpVtbl->WriteConfigurationToPreferences(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkConfiguration_v10_11_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkAttributes_v10_11 interface
 */
#ifndef __IDeckLinkAttributes_v10_11_INTERFACE_DEFINED__
#define __IDeckLinkAttributes_v10_11_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkAttributes_v10_11, 0xabc11843, 0xd966, 0x44cb, 0x96,0xe2, 0xa1,0xcb,0x5d,0x31,0x35,0xc4);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("abc11843-d966-44cb-96e2-a1cb5d3135c4")
IDeckLinkAttributes_v10_11 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkAttributeID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkAttributeID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkAttributeID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkAttributeID cfgID,
        BSTR *value) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkAttributes_v10_11, 0xabc11843, 0xd966, 0x44cb, 0x96,0xe2, 0xa1,0xcb,0x5d,0x31,0x35,0xc4)
#endif
#else
typedef struct IDeckLinkAttributes_v10_11Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkAttributes_v10_11 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkAttributes_v10_11 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkAttributes_v10_11 *This);

    /*** IDeckLinkAttributes_v10_11 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkAttributes_v10_11 *This,
        BMDDeckLinkAttributeID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkAttributes_v10_11 *This,
        BMDDeckLinkAttributeID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkAttributes_v10_11 *This,
        BMDDeckLinkAttributeID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkAttributes_v10_11 *This,
        BMDDeckLinkAttributeID cfgID,
        BSTR *value);

    END_INTERFACE
} IDeckLinkAttributes_v10_11Vtbl;

interface IDeckLinkAttributes_v10_11 {
    CONST_VTBL IDeckLinkAttributes_v10_11Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkAttributes_v10_11_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkAttributes_v10_11_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkAttributes_v10_11_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkAttributes_v10_11 methods ***/
#define IDeckLinkAttributes_v10_11_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IDeckLinkAttributes_v10_11_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkAttributes_v10_11_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IDeckLinkAttributes_v10_11_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkAttributes_v10_11_QueryInterface(IDeckLinkAttributes_v10_11* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkAttributes_v10_11_AddRef(IDeckLinkAttributes_v10_11* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkAttributes_v10_11_Release(IDeckLinkAttributes_v10_11* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkAttributes_v10_11 methods ***/
static FORCEINLINE HRESULT IDeckLinkAttributes_v10_11_GetFlag(IDeckLinkAttributes_v10_11* This,BMDDeckLinkAttributeID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkAttributes_v10_11_GetInt(IDeckLinkAttributes_v10_11* This,BMDDeckLinkAttributeID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkAttributes_v10_11_GetFloat(IDeckLinkAttributes_v10_11* This,BMDDeckLinkAttributeID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkAttributes_v10_11_GetString(IDeckLinkAttributes_v10_11* This,BMDDeckLinkAttributeID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkAttributes_v10_11_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkOutput_v10_11 interface
 */
#ifndef __IDeckLinkOutput_v10_11_INTERFACE_DEFINED__
#define __IDeckLinkOutput_v10_11_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkOutput_v10_11, 0xcc5c8a6e, 0x3f2f, 0x4b3a, 0x87,0xea, 0xfd,0x78,0xaf,0x30,0x05,0x64);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc5c8a6e-3f2f-4b3a-87ea-fd78af300564")
IDeckLinkOutput_v10_11 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoOutputFlags flags,
        BMDDisplayModeSupport_v10_11 *result,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput(
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame(
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame **outFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData(
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync(
        IDeckLinkVideoFrame *theFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame(
        IDeckLinkVideoFrame *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback(
        IDeckLinkVideoOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount(
        unsigned int *bufferedFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync(
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples(
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount(
        unsigned int *bufferedSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAudioCallback(
        IDeckLinkAudioOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback(
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback(
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning(
        BOOL *active) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *streamTime,
        double *playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus(
        BMDReferenceStatus *referenceStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrameCompletionReferenceTimestamp(
        IDeckLinkVideoFrame *theFrame,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *frameCompletionTimestamp) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkOutput_v10_11, 0xcc5c8a6e, 0x3f2f, 0x4b3a, 0x87,0xea, 0xfd,0x78,0xaf,0x30,0x05,0x64)
#endif
#else
typedef struct IDeckLinkOutput_v10_11Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkOutput_v10_11 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkOutput_v10_11 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkOutput_v10_11 *This);

    /*** IDeckLinkOutput_v10_11 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkOutput_v10_11 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoOutputFlags flags,
        BMDDisplayModeSupport_v10_11 *result,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkOutput_v10_11 *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkOutput_v10_11 *This,
        IDeckLinkScreenPreviewCallback *previewCallback);

    HRESULT (STDMETHODCALLTYPE *EnableVideoOutput)(
        IDeckLinkOutput_v10_11 *This,
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoOutput)(
        IDeckLinkOutput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator)(
        IDeckLinkOutput_v10_11 *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *CreateVideoFrame)(
        IDeckLinkOutput_v10_11 *This,
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame **outFrame);

    HRESULT (STDMETHODCALLTYPE *CreateAncillaryData)(
        IDeckLinkOutput_v10_11 *This,
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer);

    HRESULT (STDMETHODCALLTYPE *DisplayVideoFrameSync)(
        IDeckLinkOutput_v10_11 *This,
        IDeckLinkVideoFrame *theFrame);

    HRESULT (STDMETHODCALLTYPE *ScheduleVideoFrame)(
        IDeckLinkOutput_v10_11 *This,
        IDeckLinkVideoFrame *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback)(
        IDeckLinkOutput_v10_11 *This,
        IDeckLinkVideoOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetBufferedVideoFrameCount)(
        IDeckLinkOutput_v10_11 *This,
        unsigned int *bufferedFrameCount);

    HRESULT (STDMETHODCALLTYPE *EnableAudioOutput)(
        IDeckLinkOutput_v10_11 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType);

    HRESULT (STDMETHODCALLTYPE *DisableAudioOutput)(
        IDeckLinkOutput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *WriteAudioSamplesSync)(
        IDeckLinkOutput_v10_11 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *BeginAudioPreroll)(
        IDeckLinkOutput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *EndAudioPreroll)(
        IDeckLinkOutput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *ScheduleAudioSamples)(
        IDeckLinkOutput_v10_11 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount)(
        IDeckLinkOutput_v10_11 *This,
        unsigned int *bufferedSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *FlushBufferedAudioSamples)(
        IDeckLinkOutput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *SetAudioCallback)(
        IDeckLinkOutput_v10_11 *This,
        IDeckLinkAudioOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *StartScheduledPlayback)(
        IDeckLinkOutput_v10_11 *This,
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *StopScheduledPlayback)(
        IDeckLinkOutput_v10_11 *This,
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *IsScheduledPlaybackRunning)(
        IDeckLinkOutput_v10_11 *This,
        BOOL *active);

    HRESULT (STDMETHODCALLTYPE *GetScheduledStreamTime)(
        IDeckLinkOutput_v10_11 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *streamTime,
        double *playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *GetReferenceStatus)(
        IDeckLinkOutput_v10_11 *This,
        BMDReferenceStatus *referenceStatus);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkOutput_v10_11 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    HRESULT (STDMETHODCALLTYPE *GetFrameCompletionReferenceTimestamp)(
        IDeckLinkOutput_v10_11 *This,
        IDeckLinkVideoFrame *theFrame,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *frameCompletionTimestamp);

    END_INTERFACE
} IDeckLinkOutput_v10_11Vtbl;

interface IDeckLinkOutput_v10_11 {
    CONST_VTBL IDeckLinkOutput_v10_11Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkOutput_v10_11_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkOutput_v10_11_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkOutput_v10_11_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkOutput_v10_11 methods ***/
#define IDeckLinkOutput_v10_11_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) (This)->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode)
#define IDeckLinkOutput_v10_11_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkOutput_v10_11_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkOutput_v10_11_EnableVideoOutput(This,displayMode,flags) (This)->lpVtbl->EnableVideoOutput(This,displayMode,flags)
#define IDeckLinkOutput_v10_11_DisableVideoOutput(This) (This)->lpVtbl->DisableVideoOutput(This)
#define IDeckLinkOutput_v10_11_SetVideoOutputFrameMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator)
#define IDeckLinkOutput_v10_11_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) (This)->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)
#define IDeckLinkOutput_v10_11_CreateAncillaryData(This,pixelFormat,outBuffer) (This)->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer)
#define IDeckLinkOutput_v10_11_DisplayVideoFrameSync(This,theFrame) (This)->lpVtbl->DisplayVideoFrameSync(This,theFrame)
#define IDeckLinkOutput_v10_11_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) (This)->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)
#define IDeckLinkOutput_v10_11_SetScheduledFrameCompletionCallback(This,theCallback) (This)->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback)
#define IDeckLinkOutput_v10_11_GetBufferedVideoFrameCount(This,bufferedFrameCount) (This)->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount)
#define IDeckLinkOutput_v10_11_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) (This)->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType)
#define IDeckLinkOutput_v10_11_DisableAudioOutput(This) (This)->lpVtbl->DisableAudioOutput(This)
#define IDeckLinkOutput_v10_11_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) (This)->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)
#define IDeckLinkOutput_v10_11_BeginAudioPreroll(This) (This)->lpVtbl->BeginAudioPreroll(This)
#define IDeckLinkOutput_v10_11_EndAudioPreroll(This) (This)->lpVtbl->EndAudioPreroll(This)
#define IDeckLinkOutput_v10_11_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) (This)->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)
#define IDeckLinkOutput_v10_11_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) (This)->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount)
#define IDeckLinkOutput_v10_11_FlushBufferedAudioSamples(This) (This)->lpVtbl->FlushBufferedAudioSamples(This)
#define IDeckLinkOutput_v10_11_SetAudioCallback(This,theCallback) (This)->lpVtbl->SetAudioCallback(This,theCallback)
#define IDeckLinkOutput_v10_11_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) (This)->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)
#define IDeckLinkOutput_v10_11_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) (This)->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)
#define IDeckLinkOutput_v10_11_IsScheduledPlaybackRunning(This,active) (This)->lpVtbl->IsScheduledPlaybackRunning(This,active)
#define IDeckLinkOutput_v10_11_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) (This)->lpVtbl->GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed)
#define IDeckLinkOutput_v10_11_GetReferenceStatus(This,referenceStatus) (This)->lpVtbl->GetReferenceStatus(This,referenceStatus)
#define IDeckLinkOutput_v10_11_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#define IDeckLinkOutput_v10_11_GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) (This)->lpVtbl->GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_QueryInterface(IDeckLinkOutput_v10_11* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkOutput_v10_11_AddRef(IDeckLinkOutput_v10_11* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkOutput_v10_11_Release(IDeckLinkOutput_v10_11* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkOutput_v10_11 methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_DoesSupportVideoMode(IDeckLinkOutput_v10_11* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoOutputFlags flags,BMDDisplayModeSupport_v10_11 *result,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_GetDisplayModeIterator(IDeckLinkOutput_v10_11* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_SetScreenPreviewCallback(IDeckLinkOutput_v10_11* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_EnableVideoOutput(IDeckLinkOutput_v10_11* This,BMDDisplayMode displayMode,BMDVideoOutputFlags flags) {
    return This->lpVtbl->EnableVideoOutput(This,displayMode,flags);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_DisableVideoOutput(IDeckLinkOutput_v10_11* This) {
    return This->lpVtbl->DisableVideoOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_SetVideoOutputFrameMemoryAllocator(IDeckLinkOutput_v10_11* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_CreateVideoFrame(IDeckLinkOutput_v10_11* This,int width,int height,int rowBytes,BMDPixelFormat pixelFormat,BMDFrameFlags flags,IDeckLinkMutableVideoFrame **outFrame) {
    return This->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_CreateAncillaryData(IDeckLinkOutput_v10_11* This,BMDPixelFormat pixelFormat,IDeckLinkVideoFrameAncillary **outBuffer) {
    return This->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_DisplayVideoFrameSync(IDeckLinkOutput_v10_11* This,IDeckLinkVideoFrame *theFrame) {
    return This->lpVtbl->DisplayVideoFrameSync(This,theFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_ScheduleVideoFrame(IDeckLinkOutput_v10_11* This,IDeckLinkVideoFrame *theFrame,BMDTimeValue displayTime,BMDTimeValue displayDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_SetScheduledFrameCompletionCallback(IDeckLinkOutput_v10_11* This,IDeckLinkVideoOutputCallback *theCallback) {
    return This->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_GetBufferedVideoFrameCount(IDeckLinkOutput_v10_11* This,unsigned int *bufferedFrameCount) {
    return This->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_EnableAudioOutput(IDeckLinkOutput_v10_11* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount,BMDAudioOutputStreamType streamType) {
    return This->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_DisableAudioOutput(IDeckLinkOutput_v10_11* This) {
    return This->lpVtbl->DisableAudioOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_WriteAudioSamplesSync(IDeckLinkOutput_v10_11* This,void *buffer,unsigned int sampleFrameCount,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_BeginAudioPreroll(IDeckLinkOutput_v10_11* This) {
    return This->lpVtbl->BeginAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_EndAudioPreroll(IDeckLinkOutput_v10_11* This) {
    return This->lpVtbl->EndAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_ScheduleAudioSamples(IDeckLinkOutput_v10_11* This,void *buffer,unsigned int sampleFrameCount,BMDTimeValue streamTime,BMDTimeScale timeScale,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_GetBufferedAudioSampleFrameCount(IDeckLinkOutput_v10_11* This,unsigned int *bufferedSampleFrameCount) {
    return This->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_FlushBufferedAudioSamples(IDeckLinkOutput_v10_11* This) {
    return This->lpVtbl->FlushBufferedAudioSamples(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_SetAudioCallback(IDeckLinkOutput_v10_11* This,IDeckLinkAudioOutputCallback *theCallback) {
    return This->lpVtbl->SetAudioCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_StartScheduledPlayback(IDeckLinkOutput_v10_11* This,BMDTimeValue playbackStartTime,BMDTimeScale timeScale,double playbackSpeed) {
    return This->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_StopScheduledPlayback(IDeckLinkOutput_v10_11* This,BMDTimeValue stopPlaybackAtTime,BMDTimeValue *actualStopTime,BMDTimeScale timeScale) {
    return This->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_IsScheduledPlaybackRunning(IDeckLinkOutput_v10_11* This,BOOL *active) {
    return This->lpVtbl->IsScheduledPlaybackRunning(This,active);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_GetScheduledStreamTime(IDeckLinkOutput_v10_11* This,BMDTimeScale desiredTimeScale,BMDTimeValue *streamTime,double *playbackSpeed) {
    return This->lpVtbl->GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_GetReferenceStatus(IDeckLinkOutput_v10_11* This,BMDReferenceStatus *referenceStatus) {
    return This->lpVtbl->GetReferenceStatus(This,referenceStatus);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_GetHardwareReferenceClock(IDeckLinkOutput_v10_11* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v10_11_GetFrameCompletionReferenceTimestamp(IDeckLinkOutput_v10_11* This,IDeckLinkVideoFrame *theFrame,BMDTimeScale desiredTimeScale,BMDTimeValue *frameCompletionTimestamp) {
    return This->lpVtbl->GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkOutput_v10_11_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInput_v10_11 interface
 */
#ifndef __IDeckLinkInput_v10_11_INTERFACE_DEFINED__
#define __IDeckLinkInput_v10_11_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInput_v10_11, 0xaf22762b, 0xdfac, 0x4846, 0xaa,0x79, 0xfa,0x88,0x83,0x56,0x09,0x95);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("af22762b-dfac-4846-aa79-fa8883560995")
IDeckLinkInput_v10_11 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags,
        BMDDisplayModeSupport_v10_11 *result,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoInput(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount(
        unsigned int *availableFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoInputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioInput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount(
        unsigned int *availableSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkInputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInput_v10_11, 0xaf22762b, 0xdfac, 0x4846, 0xaa,0x79, 0xfa,0x88,0x83,0x56,0x09,0x95)
#endif
#else
typedef struct IDeckLinkInput_v10_11Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInput_v10_11 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInput_v10_11 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInput_v10_11 *This);

    /*** IDeckLinkInput_v10_11 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkInput_v10_11 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags,
        BMDDisplayModeSupport_v10_11 *result,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkInput_v10_11 *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkInput_v10_11 *This,
        IDeckLinkScreenPreviewCallback *previewCallback);

    HRESULT (STDMETHODCALLTYPE *EnableVideoInput)(
        IDeckLinkInput_v10_11 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoInput)(
        IDeckLinkInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableVideoFrameCount)(
        IDeckLinkInput_v10_11 *This,
        unsigned int *availableFrameCount);

    HRESULT (STDMETHODCALLTYPE *SetVideoInputFrameMemoryAllocator)(
        IDeckLinkInput_v10_11 *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *EnableAudioInput)(
        IDeckLinkInput_v10_11 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioInput)(
        IDeckLinkInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount)(
        IDeckLinkInput_v10_11 *This,
        unsigned int *availableSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *StartStreams)(
        IDeckLinkInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *StopStreams)(
        IDeckLinkInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *PauseStreams)(
        IDeckLinkInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *FlushStreams)(
        IDeckLinkInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkInput_v10_11 *This,
        IDeckLinkInputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkInput_v10_11 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    END_INTERFACE
} IDeckLinkInput_v10_11Vtbl;

interface IDeckLinkInput_v10_11 {
    CONST_VTBL IDeckLinkInput_v10_11Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkInput_v10_11_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkInput_v10_11_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkInput_v10_11_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkInput_v10_11 methods ***/
#define IDeckLinkInput_v10_11_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) (This)->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode)
#define IDeckLinkInput_v10_11_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkInput_v10_11_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkInput_v10_11_EnableVideoInput(This,displayMode,pixelFormat,flags) (This)->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags)
#define IDeckLinkInput_v10_11_DisableVideoInput(This) (This)->lpVtbl->DisableVideoInput(This)
#define IDeckLinkInput_v10_11_GetAvailableVideoFrameCount(This,availableFrameCount) (This)->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount)
#define IDeckLinkInput_v10_11_SetVideoInputFrameMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetVideoInputFrameMemoryAllocator(This,theAllocator)
#define IDeckLinkInput_v10_11_EnableAudioInput(This,sampleRate,sampleType,channelCount) (This)->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount)
#define IDeckLinkInput_v10_11_DisableAudioInput(This) (This)->lpVtbl->DisableAudioInput(This)
#define IDeckLinkInput_v10_11_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) (This)->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)
#define IDeckLinkInput_v10_11_StartStreams(This) (This)->lpVtbl->StartStreams(This)
#define IDeckLinkInput_v10_11_StopStreams(This) (This)->lpVtbl->StopStreams(This)
#define IDeckLinkInput_v10_11_PauseStreams(This) (This)->lpVtbl->PauseStreams(This)
#define IDeckLinkInput_v10_11_FlushStreams(This) (This)->lpVtbl->FlushStreams(This)
#define IDeckLinkInput_v10_11_SetCallback(This,theCallback) (This)->lpVtbl->SetCallback(This,theCallback)
#define IDeckLinkInput_v10_11_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_QueryInterface(IDeckLinkInput_v10_11* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInput_v10_11_AddRef(IDeckLinkInput_v10_11* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInput_v10_11_Release(IDeckLinkInput_v10_11* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInput_v10_11 methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_DoesSupportVideoMode(IDeckLinkInput_v10_11* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags,BMDDisplayModeSupport_v10_11 *result,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_GetDisplayModeIterator(IDeckLinkInput_v10_11* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_SetScreenPreviewCallback(IDeckLinkInput_v10_11* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_EnableVideoInput(IDeckLinkInput_v10_11* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags) {
    return This->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_DisableVideoInput(IDeckLinkInput_v10_11* This) {
    return This->lpVtbl->DisableVideoInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_GetAvailableVideoFrameCount(IDeckLinkInput_v10_11* This,unsigned int *availableFrameCount) {
    return This->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_SetVideoInputFrameMemoryAllocator(IDeckLinkInput_v10_11* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoInputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_EnableAudioInput(IDeckLinkInput_v10_11* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_DisableAudioInput(IDeckLinkInput_v10_11* This) {
    return This->lpVtbl->DisableAudioInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_GetAvailableAudioSampleFrameCount(IDeckLinkInput_v10_11* This,unsigned int *availableSampleFrameCount) {
    return This->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_StartStreams(IDeckLinkInput_v10_11* This) {
    return This->lpVtbl->StartStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_StopStreams(IDeckLinkInput_v10_11* This) {
    return This->lpVtbl->StopStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_PauseStreams(IDeckLinkInput_v10_11* This) {
    return This->lpVtbl->PauseStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_FlushStreams(IDeckLinkInput_v10_11* This) {
    return This->lpVtbl->FlushStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_SetCallback(IDeckLinkInput_v10_11* This,IDeckLinkInputCallback *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v10_11_GetHardwareReferenceClock(IDeckLinkInput_v10_11* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInput_v10_11_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkEncoderInput_v10_11 interface
 */
#ifndef __IDeckLinkEncoderInput_v10_11_INTERFACE_DEFINED__
#define __IDeckLinkEncoderInput_v10_11_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkEncoderInput_v10_11, 0x270587da, 0x6b7d, 0x42e7, 0xa1,0xf0, 0x6d,0x85,0x3f,0x58,0x11,0x85);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("270587da-6b7d-42e7-a1f0-6d853f581185")
IDeckLinkEncoderInput_v10_11 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags,
        BMDDisplayModeSupport_v10_11 *result,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoInput(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailablePacketsCount(
        unsigned int *availablePacketsCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioInput(
        BMDAudioFormat audioFormat,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount(
        unsigned int *availableSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkEncoderInputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkEncoderInput_v10_11, 0x270587da, 0x6b7d, 0x42e7, 0xa1,0xf0, 0x6d,0x85,0x3f,0x58,0x11,0x85)
#endif
#else
typedef struct IDeckLinkEncoderInput_v10_11Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkEncoderInput_v10_11 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkEncoderInput_v10_11 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkEncoderInput_v10_11 *This);

    /*** IDeckLinkEncoderInput_v10_11 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkEncoderInput_v10_11 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags,
        BMDDisplayModeSupport_v10_11 *result,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkEncoderInput_v10_11 *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *EnableVideoInput)(
        IDeckLinkEncoderInput_v10_11 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoInput)(
        IDeckLinkEncoderInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailablePacketsCount)(
        IDeckLinkEncoderInput_v10_11 *This,
        unsigned int *availablePacketsCount);

    HRESULT (STDMETHODCALLTYPE *SetMemoryAllocator)(
        IDeckLinkEncoderInput_v10_11 *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *EnableAudioInput)(
        IDeckLinkEncoderInput_v10_11 *This,
        BMDAudioFormat audioFormat,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioInput)(
        IDeckLinkEncoderInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount)(
        IDeckLinkEncoderInput_v10_11 *This,
        unsigned int *availableSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *StartStreams)(
        IDeckLinkEncoderInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *StopStreams)(
        IDeckLinkEncoderInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *PauseStreams)(
        IDeckLinkEncoderInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *FlushStreams)(
        IDeckLinkEncoderInput_v10_11 *This);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkEncoderInput_v10_11 *This,
        IDeckLinkEncoderInputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkEncoderInput_v10_11 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    END_INTERFACE
} IDeckLinkEncoderInput_v10_11Vtbl;

interface IDeckLinkEncoderInput_v10_11 {
    CONST_VTBL IDeckLinkEncoderInput_v10_11Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkEncoderInput_v10_11_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkEncoderInput_v10_11_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkEncoderInput_v10_11_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkEncoderInput_v10_11 methods ***/
#define IDeckLinkEncoderInput_v10_11_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) (This)->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode)
#define IDeckLinkEncoderInput_v10_11_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkEncoderInput_v10_11_EnableVideoInput(This,displayMode,pixelFormat,flags) (This)->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags)
#define IDeckLinkEncoderInput_v10_11_DisableVideoInput(This) (This)->lpVtbl->DisableVideoInput(This)
#define IDeckLinkEncoderInput_v10_11_GetAvailablePacketsCount(This,availablePacketsCount) (This)->lpVtbl->GetAvailablePacketsCount(This,availablePacketsCount)
#define IDeckLinkEncoderInput_v10_11_SetMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetMemoryAllocator(This,theAllocator)
#define IDeckLinkEncoderInput_v10_11_EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount) (This)->lpVtbl->EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount)
#define IDeckLinkEncoderInput_v10_11_DisableAudioInput(This) (This)->lpVtbl->DisableAudioInput(This)
#define IDeckLinkEncoderInput_v10_11_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) (This)->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)
#define IDeckLinkEncoderInput_v10_11_StartStreams(This) (This)->lpVtbl->StartStreams(This)
#define IDeckLinkEncoderInput_v10_11_StopStreams(This) (This)->lpVtbl->StopStreams(This)
#define IDeckLinkEncoderInput_v10_11_PauseStreams(This) (This)->lpVtbl->PauseStreams(This)
#define IDeckLinkEncoderInput_v10_11_FlushStreams(This) (This)->lpVtbl->FlushStreams(This)
#define IDeckLinkEncoderInput_v10_11_SetCallback(This,theCallback) (This)->lpVtbl->SetCallback(This,theCallback)
#define IDeckLinkEncoderInput_v10_11_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_QueryInterface(IDeckLinkEncoderInput_v10_11* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkEncoderInput_v10_11_AddRef(IDeckLinkEncoderInput_v10_11* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkEncoderInput_v10_11_Release(IDeckLinkEncoderInput_v10_11* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkEncoderInput_v10_11 methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_DoesSupportVideoMode(IDeckLinkEncoderInput_v10_11* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags,BMDDisplayModeSupport_v10_11 *result,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_GetDisplayModeIterator(IDeckLinkEncoderInput_v10_11* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_EnableVideoInput(IDeckLinkEncoderInput_v10_11* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags) {
    return This->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_DisableVideoInput(IDeckLinkEncoderInput_v10_11* This) {
    return This->lpVtbl->DisableVideoInput(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_GetAvailablePacketsCount(IDeckLinkEncoderInput_v10_11* This,unsigned int *availablePacketsCount) {
    return This->lpVtbl->GetAvailablePacketsCount(This,availablePacketsCount);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_SetMemoryAllocator(IDeckLinkEncoderInput_v10_11* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_EnableAudioInput(IDeckLinkEncoderInput_v10_11* This,BMDAudioFormat audioFormat,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_DisableAudioInput(IDeckLinkEncoderInput_v10_11* This) {
    return This->lpVtbl->DisableAudioInput(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_GetAvailableAudioSampleFrameCount(IDeckLinkEncoderInput_v10_11* This,unsigned int *availableSampleFrameCount) {
    return This->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_StartStreams(IDeckLinkEncoderInput_v10_11* This) {
    return This->lpVtbl->StartStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_StopStreams(IDeckLinkEncoderInput_v10_11* This) {
    return This->lpVtbl->StopStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_PauseStreams(IDeckLinkEncoderInput_v10_11* This) {
    return This->lpVtbl->PauseStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_FlushStreams(IDeckLinkEncoderInput_v10_11* This) {
    return This->lpVtbl->FlushStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_SetCallback(IDeckLinkEncoderInput_v10_11* This,IDeckLinkEncoderInputCallback *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkEncoderInput_v10_11_GetHardwareReferenceClock(IDeckLinkEncoderInput_v10_11* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkEncoderInput_v10_11_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkNotification_v10_11 interface
 */
#ifndef __IDeckLinkNotification_v10_11_INTERFACE_DEFINED__
#define __IDeckLinkNotification_v10_11_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkNotification_v10_11, 0x0a1fb207, 0xe215, 0x441b, 0x9b,0x19, 0x6f,0xa1,0x57,0x59,0x46,0xc5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("0a1fb207-e215-441b-9b19-6fa1575946c5")
IDeckLinkNotification_v10_11 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Subscribe(
        BMDNotifications topic,
        IDeckLinkNotificationCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE Unsubscribe(
        BMDNotifications topic,
        IDeckLinkNotificationCallback *theCallback) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkNotification_v10_11, 0x0a1fb207, 0xe215, 0x441b, 0x9b,0x19, 0x6f,0xa1,0x57,0x59,0x46,0xc5)
#endif
#else
typedef struct IDeckLinkNotification_v10_11Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkNotification_v10_11 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkNotification_v10_11 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkNotification_v10_11 *This);

    /*** IDeckLinkNotification_v10_11 methods ***/
    HRESULT (STDMETHODCALLTYPE *Subscribe)(
        IDeckLinkNotification_v10_11 *This,
        BMDNotifications topic,
        IDeckLinkNotificationCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *Unsubscribe)(
        IDeckLinkNotification_v10_11 *This,
        BMDNotifications topic,
        IDeckLinkNotificationCallback *theCallback);

    END_INTERFACE
} IDeckLinkNotification_v10_11Vtbl;

interface IDeckLinkNotification_v10_11 {
    CONST_VTBL IDeckLinkNotification_v10_11Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkNotification_v10_11_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkNotification_v10_11_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkNotification_v10_11_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkNotification_v10_11 methods ***/
#define IDeckLinkNotification_v10_11_Subscribe(This,topic,theCallback) (This)->lpVtbl->Subscribe(This,topic,theCallback)
#define IDeckLinkNotification_v10_11_Unsubscribe(This,topic,theCallback) (This)->lpVtbl->Unsubscribe(This,topic,theCallback)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkNotification_v10_11_QueryInterface(IDeckLinkNotification_v10_11* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkNotification_v10_11_AddRef(IDeckLinkNotification_v10_11* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkNotification_v10_11_Release(IDeckLinkNotification_v10_11* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkNotification_v10_11 methods ***/
static FORCEINLINE HRESULT IDeckLinkNotification_v10_11_Subscribe(IDeckLinkNotification_v10_11* This,BMDNotifications topic,IDeckLinkNotificationCallback *theCallback) {
    return This->lpVtbl->Subscribe(This,topic,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkNotification_v10_11_Unsubscribe(IDeckLinkNotification_v10_11* This,BMDNotifications topic,IDeckLinkNotificationCallback *theCallback) {
    return This->lpVtbl->Unsubscribe(This,topic,theCallback);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkNotification_v10_11_INTERFACE_DEFINED__ */

/*****************************************************************************
 * CDeckLinkIterator_v10_11 coclass
 */

DEFINE_GUID(CLSID_CDeckLinkIterator_v10_11, 0x87d2693f, 0x8d4a, 0x45c7, 0xb4,0x3f, 0x10,0xac,0xba,0x25,0xe6,0x8f);

#ifdef __cplusplus
class DECLSPEC_UUID("87d2693f-8d4a-45c7-b43f-10acba25e68f") CDeckLinkIterator_v10_11;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkIterator_v10_11, 0x87d2693f, 0x8d4a, 0x45c7, 0xb4,0x3f, 0x10,0xac,0xba,0x25,0xe6,0x8f)
#endif
#endif

/*****************************************************************************
 * CDeckLinkDiscovery_v10_11 coclass
 */

DEFINE_GUID(CLSID_CDeckLinkDiscovery_v10_11, 0x652615d4, 0x26cd, 0x4514, 0xb1,0x61, 0x2f,0xd5,0x07,0x2e,0xd0,0x08);

#ifdef __cplusplus
class DECLSPEC_UUID("652615d4-26cd-4514-b161-2fd5072ed008") CDeckLinkDiscovery_v10_11;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkDiscovery_v10_11, 0x652615d4, 0x26cd, 0x4514, 0xb1,0x61, 0x2f,0xd5,0x07,0x2e,0xd0,0x08)
#endif
#endif

typedef enum _BMDDeckLinkStatusID_v11_5_1 {
    bmdDeckLinkStatusDetectedVideoInputFlags_v11_5_1 = 0x64766966
} BMDDeckLinkStatusID_v11_5_1;
/*****************************************************************************
 * IDeckLinkInputCallback_v11_5_1 interface
 */
#ifndef __IDeckLinkInputCallback_v11_5_1_INTERFACE_DEFINED__
#define __IDeckLinkInputCallback_v11_5_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInputCallback_v11_5_1, 0xdd04e5ec, 0x7415, 0x42ab, 0xae,0x4a, 0xe8,0x0c,0x4d,0xfc,0x04,0x4a);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("dd04e5ec-7415-42ab-ae4a-e80c4dfc044a")
IDeckLinkInputCallback_v11_5_1 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged(
        BMDVideoInputFormatChangedEvents notificationEvents,
        IDeckLinkDisplayMode *newDisplayMode,
        BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(
        IDeckLinkVideoInputFrame *videoFrame,
        IDeckLinkAudioInputPacket *audioPacket) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInputCallback_v11_5_1, 0xdd04e5ec, 0x7415, 0x42ab, 0xae,0x4a, 0xe8,0x0c,0x4d,0xfc,0x04,0x4a)
#endif
#else
typedef struct IDeckLinkInputCallback_v11_5_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInputCallback_v11_5_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInputCallback_v11_5_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInputCallback_v11_5_1 *This);

    /*** IDeckLinkInputCallback_v11_5_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *VideoInputFormatChanged)(
        IDeckLinkInputCallback_v11_5_1 *This,
        BMDVideoInputFormatChangedEvents notificationEvents,
        IDeckLinkDisplayMode *newDisplayMode,
        BMDDetectedVideoInputFormatFlags detectedSignalFlags);

    HRESULT (STDMETHODCALLTYPE *VideoInputFrameArrived)(
        IDeckLinkInputCallback_v11_5_1 *This,
        IDeckLinkVideoInputFrame *videoFrame,
        IDeckLinkAudioInputPacket *audioPacket);

    END_INTERFACE
} IDeckLinkInputCallback_v11_5_1Vtbl;

interface IDeckLinkInputCallback_v11_5_1 {
    CONST_VTBL IDeckLinkInputCallback_v11_5_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkInputCallback_v11_5_1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkInputCallback_v11_5_1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkInputCallback_v11_5_1_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkInputCallback_v11_5_1 methods ***/
#define IDeckLinkInputCallback_v11_5_1_VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) (This)->lpVtbl->VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags)
#define IDeckLinkInputCallback_v11_5_1_VideoInputFrameArrived(This,videoFrame,audioPacket) (This)->lpVtbl->VideoInputFrameArrived(This,videoFrame,audioPacket)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInputCallback_v11_5_1_QueryInterface(IDeckLinkInputCallback_v11_5_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInputCallback_v11_5_1_AddRef(IDeckLinkInputCallback_v11_5_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInputCallback_v11_5_1_Release(IDeckLinkInputCallback_v11_5_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInputCallback_v11_5_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkInputCallback_v11_5_1_VideoInputFormatChanged(IDeckLinkInputCallback_v11_5_1* This,BMDVideoInputFormatChangedEvents notificationEvents,IDeckLinkDisplayMode *newDisplayMode,BMDDetectedVideoInputFormatFlags detectedSignalFlags) {
    return This->lpVtbl->VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags);
}
static FORCEINLINE HRESULT IDeckLinkInputCallback_v11_5_1_VideoInputFrameArrived(IDeckLinkInputCallback_v11_5_1* This,IDeckLinkVideoInputFrame *videoFrame,IDeckLinkAudioInputPacket *audioPacket) {
    return This->lpVtbl->VideoInputFrameArrived(This,videoFrame,audioPacket);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInputCallback_v11_5_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInput_v11_5_1 interface
 */
#ifndef __IDeckLinkInput_v11_5_1_INTERFACE_DEFINED__
#define __IDeckLinkInput_v11_5_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInput_v11_5_1, 0x9434c6e4, 0xb15d, 0x4b1c, 0x97,0x9e, 0x66,0x1e,0x3d,0xdc,0xb4,0xb9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9434c6e4-b15d-4b1c-979e-661e3ddcb4b9")
IDeckLinkInput_v11_5_1 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedPixelFormat,
        BMDVideoInputConversionMode conversionMode,
        BMDSupportedVideoModeFlags flags,
        BMDDisplayMode *actualMode,
        BOOL *supported) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayMode(
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoInput(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount(
        unsigned int *availableFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoInputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioInput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount(
        unsigned int *availableSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkInputCallback_v11_5_1 *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInput_v11_5_1, 0x9434c6e4, 0xb15d, 0x4b1c, 0x97,0x9e, 0x66,0x1e,0x3d,0xdc,0xb4,0xb9)
#endif
#else
typedef struct IDeckLinkInput_v11_5_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInput_v11_5_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInput_v11_5_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInput_v11_5_1 *This);

    /*** IDeckLinkInput_v11_5_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkInput_v11_5_1 *This,
        BMDVideoConnection connection,
        BMDDisplayMode requestedMode,
        BMDPixelFormat requestedPixelFormat,
        BMDVideoInputConversionMode conversionMode,
        BMDSupportedVideoModeFlags flags,
        BMDDisplayMode *actualMode,
        BOOL *supported);

    HRESULT (STDMETHODCALLTYPE *GetDisplayMode)(
        IDeckLinkInput_v11_5_1 *This,
        BMDDisplayMode displayMode,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkInput_v11_5_1 *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkInput_v11_5_1 *This,
        IDeckLinkScreenPreviewCallback *previewCallback);

    HRESULT (STDMETHODCALLTYPE *EnableVideoInput)(
        IDeckLinkInput_v11_5_1 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoInput)(
        IDeckLinkInput_v11_5_1 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableVideoFrameCount)(
        IDeckLinkInput_v11_5_1 *This,
        unsigned int *availableFrameCount);

    HRESULT (STDMETHODCALLTYPE *SetVideoInputFrameMemoryAllocator)(
        IDeckLinkInput_v11_5_1 *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *EnableAudioInput)(
        IDeckLinkInput_v11_5_1 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioInput)(
        IDeckLinkInput_v11_5_1 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount)(
        IDeckLinkInput_v11_5_1 *This,
        unsigned int *availableSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *StartStreams)(
        IDeckLinkInput_v11_5_1 *This);

    HRESULT (STDMETHODCALLTYPE *StopStreams)(
        IDeckLinkInput_v11_5_1 *This);

    HRESULT (STDMETHODCALLTYPE *PauseStreams)(
        IDeckLinkInput_v11_5_1 *This);

    HRESULT (STDMETHODCALLTYPE *FlushStreams)(
        IDeckLinkInput_v11_5_1 *This);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkInput_v11_5_1 *This,
        IDeckLinkInputCallback_v11_5_1 *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkInput_v11_5_1 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    END_INTERFACE
} IDeckLinkInput_v11_5_1Vtbl;

interface IDeckLinkInput_v11_5_1 {
    CONST_VTBL IDeckLinkInput_v11_5_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkInput_v11_5_1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkInput_v11_5_1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkInput_v11_5_1_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkInput_v11_5_1 methods ***/
#define IDeckLinkInput_v11_5_1_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) (This)->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported)
#define IDeckLinkInput_v11_5_1_GetDisplayMode(This,displayMode,resultDisplayMode) (This)->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode)
#define IDeckLinkInput_v11_5_1_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkInput_v11_5_1_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkInput_v11_5_1_EnableVideoInput(This,displayMode,pixelFormat,flags) (This)->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags)
#define IDeckLinkInput_v11_5_1_DisableVideoInput(This) (This)->lpVtbl->DisableVideoInput(This)
#define IDeckLinkInput_v11_5_1_GetAvailableVideoFrameCount(This,availableFrameCount) (This)->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount)
#define IDeckLinkInput_v11_5_1_SetVideoInputFrameMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetVideoInputFrameMemoryAllocator(This,theAllocator)
#define IDeckLinkInput_v11_5_1_EnableAudioInput(This,sampleRate,sampleType,channelCount) (This)->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount)
#define IDeckLinkInput_v11_5_1_DisableAudioInput(This) (This)->lpVtbl->DisableAudioInput(This)
#define IDeckLinkInput_v11_5_1_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) (This)->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)
#define IDeckLinkInput_v11_5_1_StartStreams(This) (This)->lpVtbl->StartStreams(This)
#define IDeckLinkInput_v11_5_1_StopStreams(This) (This)->lpVtbl->StopStreams(This)
#define IDeckLinkInput_v11_5_1_PauseStreams(This) (This)->lpVtbl->PauseStreams(This)
#define IDeckLinkInput_v11_5_1_FlushStreams(This) (This)->lpVtbl->FlushStreams(This)
#define IDeckLinkInput_v11_5_1_SetCallback(This,theCallback) (This)->lpVtbl->SetCallback(This,theCallback)
#define IDeckLinkInput_v11_5_1_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_QueryInterface(IDeckLinkInput_v11_5_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInput_v11_5_1_AddRef(IDeckLinkInput_v11_5_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInput_v11_5_1_Release(IDeckLinkInput_v11_5_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInput_v11_5_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_DoesSupportVideoMode(IDeckLinkInput_v11_5_1* This,BMDVideoConnection connection,BMDDisplayMode requestedMode,BMDPixelFormat requestedPixelFormat,BMDVideoInputConversionMode conversionMode,BMDSupportedVideoModeFlags flags,BMDDisplayMode *actualMode,BOOL *supported) {
    return This->lpVtbl->DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_GetDisplayMode(IDeckLinkInput_v11_5_1* This,BMDDisplayMode displayMode,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->GetDisplayMode(This,displayMode,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_GetDisplayModeIterator(IDeckLinkInput_v11_5_1* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_SetScreenPreviewCallback(IDeckLinkInput_v11_5_1* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_EnableVideoInput(IDeckLinkInput_v11_5_1* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags) {
    return This->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_DisableVideoInput(IDeckLinkInput_v11_5_1* This) {
    return This->lpVtbl->DisableVideoInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_GetAvailableVideoFrameCount(IDeckLinkInput_v11_5_1* This,unsigned int *availableFrameCount) {
    return This->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_SetVideoInputFrameMemoryAllocator(IDeckLinkInput_v11_5_1* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoInputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_EnableAudioInput(IDeckLinkInput_v11_5_1* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_DisableAudioInput(IDeckLinkInput_v11_5_1* This) {
    return This->lpVtbl->DisableAudioInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_GetAvailableAudioSampleFrameCount(IDeckLinkInput_v11_5_1* This,unsigned int *availableSampleFrameCount) {
    return This->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_StartStreams(IDeckLinkInput_v11_5_1* This) {
    return This->lpVtbl->StartStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_StopStreams(IDeckLinkInput_v11_5_1* This) {
    return This->lpVtbl->StopStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_PauseStreams(IDeckLinkInput_v11_5_1* This) {
    return This->lpVtbl->PauseStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_FlushStreams(IDeckLinkInput_v11_5_1* This) {
    return This->lpVtbl->FlushStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_SetCallback(IDeckLinkInput_v11_5_1* This,IDeckLinkInputCallback_v11_5_1 *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v11_5_1_GetHardwareReferenceClock(IDeckLinkInput_v11_5_1* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInput_v11_5_1_INTERFACE_DEFINED__ */

typedef enum _BMDDeckLinkFrameMetadataID_v11_5 {
    bmdDeckLinkFrameMetadataCintelFilmType_v11_5 = 0x63667479,
    bmdDeckLinkFrameMetadataCintelFilmGauge_v11_5 = 0x63666761,
    bmdDeckLinkFrameMetadataCintelKeykodeLow_v11_5 = 0x636b6b6c,
    bmdDeckLinkFrameMetadataCintelKeykodeHigh_v11_5 = 0x636b6b68,
    bmdDeckLinkFrameMetadataCintelTile1Size_v11_5 = 0x63743173,
    bmdDeckLinkFrameMetadataCintelTile2Size_v11_5 = 0x63743273,
    bmdDeckLinkFrameMetadataCintelTile3Size_v11_5 = 0x63743373,
    bmdDeckLinkFrameMetadataCintelTile4Size_v11_5 = 0x63743473,
    bmdDeckLinkFrameMetadataCintelImageWidth_v11_5 = 0x49575078,
    bmdDeckLinkFrameMetadataCintelImageHeight_v11_5 = 0x49485078,
    bmdDeckLinkFrameMetadataCintelLinearMaskingRedInRed_v11_5 = 0x6d726972,
    bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInRed_v11_5 = 0x6d676972,
    bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInRed_v11_5 = 0x6d626972,
    bmdDeckLinkFrameMetadataCintelLinearMaskingRedInGreen_v11_5 = 0x6d726967,
    bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInGreen_v11_5 = 0x6d676967,
    bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInGreen_v11_5 = 0x6d626967,
    bmdDeckLinkFrameMetadataCintelLinearMaskingRedInBlue_v11_5 = 0x6d726962,
    bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInBlue_v11_5 = 0x6d676962,
    bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInBlue_v11_5 = 0x6d626962,
    bmdDeckLinkFrameMetadataCintelLogMaskingRedInRed_v11_5 = 0x6d6c7272,
    bmdDeckLinkFrameMetadataCintelLogMaskingGreenInRed_v11_5 = 0x6d6c6772,
    bmdDeckLinkFrameMetadataCintelLogMaskingBlueInRed_v11_5 = 0x6d6c6272,
    bmdDeckLinkFrameMetadataCintelLogMaskingRedInGreen_v11_5 = 0x6d6c7267,
    bmdDeckLinkFrameMetadataCintelLogMaskingGreenInGreen_v11_5 = 0x6d6c6767,
    bmdDeckLinkFrameMetadataCintelLogMaskingBlueInGreen_v11_5 = 0x6d6c6267,
    bmdDeckLinkFrameMetadataCintelLogMaskingRedInBlue_v11_5 = 0x6d6c7262,
    bmdDeckLinkFrameMetadataCintelLogMaskingGreenInBlue_v11_5 = 0x6d6c6762,
    bmdDeckLinkFrameMetadataCintelLogMaskingBlueInBlue_v11_5 = 0x6d6c6262,
    bmdDeckLinkFrameMetadataCintelFilmFrameRate_v11_5 = 0x63666672,
    bmdDeckLinkFrameMetadataCintelOffsetToApplyHorizontal_v11_5 = 0x6f746168,
    bmdDeckLinkFrameMetadataCintelOffsetToApplyVertical_v11_5 = 0x6f746176,
    bmdDeckLinkFrameMetadataCintelGainRed_v11_5 = 0x4c665264,
    bmdDeckLinkFrameMetadataCintelGainGreen_v11_5 = 0x4c664772,
    bmdDeckLinkFrameMetadataCintelGainBlue_v11_5 = 0x4c66426c,
    bmdDeckLinkFrameMetadataCintelLiftRed_v11_5 = 0x476e5264,
    bmdDeckLinkFrameMetadataCintelLiftGreen_v11_5 = 0x476e4772,
    bmdDeckLinkFrameMetadataCintelLiftBlue_v11_5 = 0x476e426c,
    bmdDeckLinkFrameMetadataCintelHDRGainRed_v11_5 = 0x48475264,
    bmdDeckLinkFrameMetadataCintelHDRGainGreen_v11_5 = 0x48474772,
    bmdDeckLinkFrameMetadataCintelHDRGainBlue_v11_5 = 0x4847426c,
    bmdDeckLinkFrameMetadataCintel16mmCropRequired_v11_5 = 0x63313663,
    bmdDeckLinkFrameMetadataCintelInversionRequired_v11_5 = 0x63696e76,
    bmdDeckLinkFrameMetadataCintelFlipRequired_v11_5 = 0x63666c72,
    bmdDeckLinkFrameMetadataCintelFocusAssistEnabled_v11_5 = 0x63666165,
    bmdDeckLinkFrameMetadataCintelKeykodeIsInterpolated_v11_5 = 0x6b6b6969
} BMDDeckLinkFrameMetadataID_v11_5;
#ifndef __IDeckLinkVideoFrameMetadataExtensions_v11_5_FWD_DEFINED__
#define __IDeckLinkVideoFrameMetadataExtensions_v11_5_FWD_DEFINED__
typedef interface IDeckLinkVideoFrameMetadataExtensions_v11_5 IDeckLinkVideoFrameMetadataExtensions_v11_5;
#ifdef __cplusplus
interface IDeckLinkVideoFrameMetadataExtensions_v11_5;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkVideoFrameMetadataExtensions_v11_5 interface
 */
#ifndef __IDeckLinkVideoFrameMetadataExtensions_v11_5_INTERFACE_DEFINED__
#define __IDeckLinkVideoFrameMetadataExtensions_v11_5_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoFrameMetadataExtensions_v11_5, 0xd5973dc9, 0x6432, 0x46d0, 0x8f,0x0b, 0x24,0x96,0xf8,0xa1,0x23,0x8f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("d5973dc9-6432-46d0-8f0b-2496f8a1238f")
IDeckLinkVideoFrameMetadataExtensions_v11_5 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkFrameMetadataID_v11_5 metadataID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkFrameMetadataID_v11_5 metadataID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkFrameMetadataID_v11_5 metadataID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkFrameMetadataID_v11_5 metadataID,
        BSTR *value) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoFrameMetadataExtensions_v11_5, 0xd5973dc9, 0x6432, 0x46d0, 0x8f,0x0b, 0x24,0x96,0xf8,0xa1,0x23,0x8f)
#endif
#else
typedef struct IDeckLinkVideoFrameMetadataExtensions_v11_5Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoFrameMetadataExtensions_v11_5 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoFrameMetadataExtensions_v11_5 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoFrameMetadataExtensions_v11_5 *This);

    /*** IDeckLinkVideoFrameMetadataExtensions_v11_5 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkVideoFrameMetadataExtensions_v11_5 *This,
        BMDDeckLinkFrameMetadataID_v11_5 metadataID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkVideoFrameMetadataExtensions_v11_5 *This,
        BMDDeckLinkFrameMetadataID_v11_5 metadataID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkVideoFrameMetadataExtensions_v11_5 *This,
        BMDDeckLinkFrameMetadataID_v11_5 metadataID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkVideoFrameMetadataExtensions_v11_5 *This,
        BMDDeckLinkFrameMetadataID_v11_5 metadataID,
        BSTR *value);

    END_INTERFACE
} IDeckLinkVideoFrameMetadataExtensions_v11_5Vtbl;

interface IDeckLinkVideoFrameMetadataExtensions_v11_5 {
    CONST_VTBL IDeckLinkVideoFrameMetadataExtensions_v11_5Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkVideoFrameMetadataExtensions_v11_5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkVideoFrameMetadataExtensions_v11_5_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkVideoFrameMetadataExtensions_v11_5_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoFrameMetadataExtensions_v11_5 methods ***/
#define IDeckLinkVideoFrameMetadataExtensions_v11_5_GetInt(This,metadataID,value) (This)->lpVtbl->GetInt(This,metadataID,value)
#define IDeckLinkVideoFrameMetadataExtensions_v11_5_GetFloat(This,metadataID,value) (This)->lpVtbl->GetFloat(This,metadataID,value)
#define IDeckLinkVideoFrameMetadataExtensions_v11_5_GetFlag(This,metadataID,value) (This)->lpVtbl->GetFlag(This,metadataID,value)
#define IDeckLinkVideoFrameMetadataExtensions_v11_5_GetString(This,metadataID,value) (This)->lpVtbl->GetString(This,metadataID,value)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_v11_5_QueryInterface(IDeckLinkVideoFrameMetadataExtensions_v11_5* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoFrameMetadataExtensions_v11_5_AddRef(IDeckLinkVideoFrameMetadataExtensions_v11_5* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoFrameMetadataExtensions_v11_5_Release(IDeckLinkVideoFrameMetadataExtensions_v11_5* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrameMetadataExtensions_v11_5 methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_v11_5_GetInt(IDeckLinkVideoFrameMetadataExtensions_v11_5* This,BMDDeckLinkFrameMetadataID_v11_5 metadataID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,metadataID,value);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_v11_5_GetFloat(IDeckLinkVideoFrameMetadataExtensions_v11_5* This,BMDDeckLinkFrameMetadataID_v11_5 metadataID,double *value) {
    return This->lpVtbl->GetFloat(This,metadataID,value);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_v11_5_GetFlag(IDeckLinkVideoFrameMetadataExtensions_v11_5* This,BMDDeckLinkFrameMetadataID_v11_5 metadataID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,metadataID,value);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrameMetadataExtensions_v11_5_GetString(IDeckLinkVideoFrameMetadataExtensions_v11_5* This,BMDDeckLinkFrameMetadataID_v11_5 metadataID,BSTR *value) {
    return This->lpVtbl->GetString(This,metadataID,value);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoFrameMetadataExtensions_v11_5_INTERFACE_DEFINED__ */

typedef enum _BMDDeckLinkConfigurationID_v10_9 {
    bmdDeckLinkConfig1080pNotPsF_v10_9 = 0x6670726f
} BMDDeckLinkConfigurationID_v10_9;
#ifndef __IDeckLinkConfiguration_v10_9_FWD_DEFINED__
#define __IDeckLinkConfiguration_v10_9_FWD_DEFINED__
typedef interface IDeckLinkConfiguration_v10_9 IDeckLinkConfiguration_v10_9;
#ifdef __cplusplus
interface IDeckLinkConfiguration_v10_9;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkConfiguration_v10_9 interface
 */
#ifndef __IDeckLinkConfiguration_v10_9_INTERFACE_DEFINED__
#define __IDeckLinkConfiguration_v10_9_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkConfiguration_v10_9, 0xcb71734a, 0xfe37, 0x4e8d, 0x8e,0x13, 0x80,0x21,0x33,0xa1,0xc3,0xf2);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cb71734a-fe37-4e8d-8e13-802133a1c3f2")
IDeckLinkConfiguration_v10_9 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFlag(
        BMDDeckLinkConfigurationID cfgID,
        BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkConfigurationID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInt(
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFloat(
        BMDDeckLinkConfigurationID cfgID,
        double value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkConfigurationID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetString(
        BMDDeckLinkConfigurationID cfgID,
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkConfigurationID cfgID,
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkConfiguration_v10_9, 0xcb71734a, 0xfe37, 0x4e8d, 0x8e,0x13, 0x80,0x21,0x33,0xa1,0xc3,0xf2)
#endif
#else
typedef struct IDeckLinkConfiguration_v10_9Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkConfiguration_v10_9 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkConfiguration_v10_9 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkConfiguration_v10_9 *This);

    /*** IDeckLinkConfiguration_v10_9 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlag)(
        IDeckLinkConfiguration_v10_9 *This,
        BMDDeckLinkConfigurationID cfgID,
        BOOL value);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkConfiguration_v10_9 *This,
        BMDDeckLinkConfigurationID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *SetInt)(
        IDeckLinkConfiguration_v10_9 *This,
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkConfiguration_v10_9 *This,
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *SetFloat)(
        IDeckLinkConfiguration_v10_9 *This,
        BMDDeckLinkConfigurationID cfgID,
        double value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkConfiguration_v10_9 *This,
        BMDDeckLinkConfigurationID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *SetString)(
        IDeckLinkConfiguration_v10_9 *This,
        BMDDeckLinkConfigurationID cfgID,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkConfiguration_v10_9 *This,
        BMDDeckLinkConfigurationID cfgID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *WriteConfigurationToPreferences)(
        IDeckLinkConfiguration_v10_9 *This);

    END_INTERFACE
} IDeckLinkConfiguration_v10_9Vtbl;

interface IDeckLinkConfiguration_v10_9 {
    CONST_VTBL IDeckLinkConfiguration_v10_9Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkConfiguration_v10_9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkConfiguration_v10_9_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkConfiguration_v10_9_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkConfiguration_v10_9 methods ***/
#define IDeckLinkConfiguration_v10_9_SetFlag(This,cfgID,value) (This)->lpVtbl->SetFlag(This,cfgID,value)
#define IDeckLinkConfiguration_v10_9_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IDeckLinkConfiguration_v10_9_SetInt(This,cfgID,value) (This)->lpVtbl->SetInt(This,cfgID,value)
#define IDeckLinkConfiguration_v10_9_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkConfiguration_v10_9_SetFloat(This,cfgID,value) (This)->lpVtbl->SetFloat(This,cfgID,value)
#define IDeckLinkConfiguration_v10_9_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IDeckLinkConfiguration_v10_9_SetString(This,cfgID,value) (This)->lpVtbl->SetString(This,cfgID,value)
#define IDeckLinkConfiguration_v10_9_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#define IDeckLinkConfiguration_v10_9_WriteConfigurationToPreferences(This) (This)->lpVtbl->WriteConfigurationToPreferences(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_9_QueryInterface(IDeckLinkConfiguration_v10_9* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_v10_9_AddRef(IDeckLinkConfiguration_v10_9* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_v10_9_Release(IDeckLinkConfiguration_v10_9* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkConfiguration_v10_9 methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_9_SetFlag(IDeckLinkConfiguration_v10_9* This,BMDDeckLinkConfigurationID cfgID,BOOL value) {
    return This->lpVtbl->SetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_9_GetFlag(IDeckLinkConfiguration_v10_9* This,BMDDeckLinkConfigurationID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_9_SetInt(IDeckLinkConfiguration_v10_9* This,BMDDeckLinkConfigurationID cfgID,LONGLONG value) {
    return This->lpVtbl->SetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_9_GetInt(IDeckLinkConfiguration_v10_9* This,BMDDeckLinkConfigurationID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_9_SetFloat(IDeckLinkConfiguration_v10_9* This,BMDDeckLinkConfigurationID cfgID,double value) {
    return This->lpVtbl->SetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_9_GetFloat(IDeckLinkConfiguration_v10_9* This,BMDDeckLinkConfigurationID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_9_SetString(IDeckLinkConfiguration_v10_9* This,BMDDeckLinkConfigurationID cfgID,BSTR value) {
    return This->lpVtbl->SetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_9_GetString(IDeckLinkConfiguration_v10_9* This,BMDDeckLinkConfigurationID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_9_WriteConfigurationToPreferences(IDeckLinkConfiguration_v10_9* This) {
    return This->lpVtbl->WriteConfigurationToPreferences(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkConfiguration_v10_9_INTERFACE_DEFINED__ */

/*****************************************************************************
 * CBMDStreamingDiscovery_v10_8 coclass
 */

DEFINE_GUID(CLSID_CBMDStreamingDiscovery_v10_8, 0x0caa31f6, 0x8a26, 0x40b0, 0x86,0xa4, 0xbf,0x58,0xdc,0xca,0x71,0x0c);

#ifdef __cplusplus
class DECLSPEC_UUID("0caa31f6-8a26-40b0-86a4-bf58dcca710c") CBMDStreamingDiscovery_v10_8;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CBMDStreamingDiscovery_v10_8, 0x0caa31f6, 0x8a26, 0x40b0, 0x86,0xa4, 0xbf,0x58,0xdc,0xca,0x71,0x0c)
#endif
#endif

/*****************************************************************************
 * CDeckLinkIterator_v10_8 coclass
 */

DEFINE_GUID(CLSID_CDeckLinkIterator_v10_8, 0x1f2e109a, 0x8f4f, 0x49e4, 0x92,0x03, 0x13,0x55,0x95,0xcb,0x6f,0xa5);

#ifdef __cplusplus
class DECLSPEC_UUID("1f2e109a-8f4f-49e4-9203-135595cb6fa5") CDeckLinkIterator_v10_8;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkIterator_v10_8, 0x1f2e109a, 0x8f4f, 0x49e4, 0x92,0x03, 0x13,0x55,0x95,0xcb,0x6f,0xa5)
#endif
#endif

/*****************************************************************************
 * CDeckLinkDiscovery_v10_8 coclass
 */

DEFINE_GUID(CLSID_CDeckLinkDiscovery_v10_8, 0x1073a05c, 0xd885, 0x47e9, 0xb3,0xc6, 0x12,0x9b,0x3f,0x9f,0x64,0x8b);

#ifdef __cplusplus
class DECLSPEC_UUID("1073a05c-d885-47e9-b3c6-129b3f9f648b") CDeckLinkDiscovery_v10_8;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkDiscovery_v10_8, 0x1073a05c, 0xd885, 0x47e9, 0xb3,0xc6, 0x12,0x9b,0x3f,0x9f,0x64,0x8b)
#endif
#endif

typedef enum _BMDDeckLinkAttributeID_v10_6 {
    BMDDeckLinkSupportsDesktopDisplay_v10_6 = 0x65787464
} BMDDeckLinkAttributeID_v10_6;
typedef enum _BMDIdleVideoOutputOperation_v10_6 {
    bmdIdleVideoOutputDesktop_v10_6 = 0x6465736b
} BMDIdleVideoOutputOperation_v10_6;
typedef enum _BMDDeckLinkAttributeID_v10_5 {
    BMDDeckLinkDeviceBusyState_v10_5 = 0x64627374
} BMDDeckLinkAttributeID_v10_5;
#ifndef __IDeckLinkEncoderConfiguration_v10_5_FWD_DEFINED__
#define __IDeckLinkEncoderConfiguration_v10_5_FWD_DEFINED__
typedef interface IDeckLinkEncoderConfiguration_v10_5 IDeckLinkEncoderConfiguration_v10_5;
#ifdef __cplusplus
interface IDeckLinkEncoderConfiguration_v10_5;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkEncoderConfiguration_v10_5 interface
 */
#ifndef __IDeckLinkEncoderConfiguration_v10_5_INTERFACE_DEFINED__
#define __IDeckLinkEncoderConfiguration_v10_5_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkEncoderConfiguration_v10_5, 0x67455668, 0x0848, 0x45df, 0x8d,0x8e, 0x35,0x0a,0x77,0xc9,0xa0,0x28);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("67455668-0848-45df-8d8e-350a77c9a028")
IDeckLinkEncoderConfiguration_v10_5 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFlag(
        BMDDeckLinkEncoderConfigurationID cfgID,
        BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkEncoderConfigurationID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInt(
        BMDDeckLinkEncoderConfigurationID cfgID,
        LONGLONG value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkEncoderConfigurationID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFloat(
        BMDDeckLinkEncoderConfigurationID cfgID,
        double value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkEncoderConfigurationID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetString(
        BMDDeckLinkEncoderConfigurationID cfgID,
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkEncoderConfigurationID cfgID,
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDecoderConfigurationInfo(
        void *buffer,
        LONG bufferSize,
        LONG *returnedSize) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkEncoderConfiguration_v10_5, 0x67455668, 0x0848, 0x45df, 0x8d,0x8e, 0x35,0x0a,0x77,0xc9,0xa0,0x28)
#endif
#else
typedef struct IDeckLinkEncoderConfiguration_v10_5Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkEncoderConfiguration_v10_5 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkEncoderConfiguration_v10_5 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkEncoderConfiguration_v10_5 *This);

    /*** IDeckLinkEncoderConfiguration_v10_5 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlag)(
        IDeckLinkEncoderConfiguration_v10_5 *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        BOOL value);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkEncoderConfiguration_v10_5 *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *SetInt)(
        IDeckLinkEncoderConfiguration_v10_5 *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        LONGLONG value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkEncoderConfiguration_v10_5 *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *SetFloat)(
        IDeckLinkEncoderConfiguration_v10_5 *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        double value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkEncoderConfiguration_v10_5 *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *SetString)(
        IDeckLinkEncoderConfiguration_v10_5 *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkEncoderConfiguration_v10_5 *This,
        BMDDeckLinkEncoderConfigurationID cfgID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *GetDecoderConfigurationInfo)(
        IDeckLinkEncoderConfiguration_v10_5 *This,
        void *buffer,
        LONG bufferSize,
        LONG *returnedSize);

    END_INTERFACE
} IDeckLinkEncoderConfiguration_v10_5Vtbl;

interface IDeckLinkEncoderConfiguration_v10_5 {
    CONST_VTBL IDeckLinkEncoderConfiguration_v10_5Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkEncoderConfiguration_v10_5_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkEncoderConfiguration_v10_5_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkEncoderConfiguration_v10_5_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkEncoderConfiguration_v10_5 methods ***/
#define IDeckLinkEncoderConfiguration_v10_5_SetFlag(This,cfgID,value) (This)->lpVtbl->SetFlag(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_v10_5_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_v10_5_SetInt(This,cfgID,value) (This)->lpVtbl->SetInt(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_v10_5_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_v10_5_SetFloat(This,cfgID,value) (This)->lpVtbl->SetFloat(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_v10_5_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_v10_5_SetString(This,cfgID,value) (This)->lpVtbl->SetString(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_v10_5_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#define IDeckLinkEncoderConfiguration_v10_5_GetDecoderConfigurationInfo(This,buffer,bufferSize,returnedSize) (This)->lpVtbl->GetDecoderConfigurationInfo(This,buffer,bufferSize,returnedSize)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_v10_5_QueryInterface(IDeckLinkEncoderConfiguration_v10_5* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkEncoderConfiguration_v10_5_AddRef(IDeckLinkEncoderConfiguration_v10_5* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkEncoderConfiguration_v10_5_Release(IDeckLinkEncoderConfiguration_v10_5* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkEncoderConfiguration_v10_5 methods ***/
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_v10_5_SetFlag(IDeckLinkEncoderConfiguration_v10_5* This,BMDDeckLinkEncoderConfigurationID cfgID,BOOL value) {
    return This->lpVtbl->SetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_v10_5_GetFlag(IDeckLinkEncoderConfiguration_v10_5* This,BMDDeckLinkEncoderConfigurationID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_v10_5_SetInt(IDeckLinkEncoderConfiguration_v10_5* This,BMDDeckLinkEncoderConfigurationID cfgID,LONGLONG value) {
    return This->lpVtbl->SetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_v10_5_GetInt(IDeckLinkEncoderConfiguration_v10_5* This,BMDDeckLinkEncoderConfigurationID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_v10_5_SetFloat(IDeckLinkEncoderConfiguration_v10_5* This,BMDDeckLinkEncoderConfigurationID cfgID,double value) {
    return This->lpVtbl->SetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_v10_5_GetFloat(IDeckLinkEncoderConfiguration_v10_5* This,BMDDeckLinkEncoderConfigurationID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_v10_5_SetString(IDeckLinkEncoderConfiguration_v10_5* This,BMDDeckLinkEncoderConfigurationID cfgID,BSTR value) {
    return This->lpVtbl->SetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_v10_5_GetString(IDeckLinkEncoderConfiguration_v10_5* This,BMDDeckLinkEncoderConfigurationID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkEncoderConfiguration_v10_5_GetDecoderConfigurationInfo(IDeckLinkEncoderConfiguration_v10_5* This,void *buffer,LONG bufferSize,LONG *returnedSize) {
    return This->lpVtbl->GetDecoderConfigurationInfo(This,buffer,bufferSize,returnedSize);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkEncoderConfiguration_v10_5_INTERFACE_DEFINED__ */

typedef enum _BMDDeckLinkConfigurationID_v10_4 {
    bmdDeckLinkConfigSingleLinkVideoOutput_v10_4 = 0x73676c6f
} BMDDeckLinkConfigurationID_v10_4;
#ifndef __IDeckLinkConfiguration_v10_4_FWD_DEFINED__
#define __IDeckLinkConfiguration_v10_4_FWD_DEFINED__
typedef interface IDeckLinkConfiguration_v10_4 IDeckLinkConfiguration_v10_4;
#ifdef __cplusplus
interface IDeckLinkConfiguration_v10_4;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkConfiguration_v10_4 interface
 */
#ifndef __IDeckLinkConfiguration_v10_4_INTERFACE_DEFINED__
#define __IDeckLinkConfiguration_v10_4_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkConfiguration_v10_4, 0x1e69fcf6, 0x4203, 0x4936, 0x80,0x76, 0x2a,0x9f,0x4c,0xfd,0x50,0xcb);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("1e69fcf6-4203-4936-8076-2a9f4cfd50cb")
IDeckLinkConfiguration_v10_4 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFlag(
        BMDDeckLinkConfigurationID cfgID,
        BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkConfigurationID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInt(
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFloat(
        BMDDeckLinkConfigurationID cfgID,
        double value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkConfigurationID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetString(
        BMDDeckLinkConfigurationID cfgID,
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkConfigurationID cfgID,
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkConfiguration_v10_4, 0x1e69fcf6, 0x4203, 0x4936, 0x80,0x76, 0x2a,0x9f,0x4c,0xfd,0x50,0xcb)
#endif
#else
typedef struct IDeckLinkConfiguration_v10_4Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkConfiguration_v10_4 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkConfiguration_v10_4 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkConfiguration_v10_4 *This);

    /*** IDeckLinkConfiguration_v10_4 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlag)(
        IDeckLinkConfiguration_v10_4 *This,
        BMDDeckLinkConfigurationID cfgID,
        BOOL value);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkConfiguration_v10_4 *This,
        BMDDeckLinkConfigurationID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *SetInt)(
        IDeckLinkConfiguration_v10_4 *This,
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkConfiguration_v10_4 *This,
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *SetFloat)(
        IDeckLinkConfiguration_v10_4 *This,
        BMDDeckLinkConfigurationID cfgID,
        double value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkConfiguration_v10_4 *This,
        BMDDeckLinkConfigurationID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *SetString)(
        IDeckLinkConfiguration_v10_4 *This,
        BMDDeckLinkConfigurationID cfgID,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkConfiguration_v10_4 *This,
        BMDDeckLinkConfigurationID cfgID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *WriteConfigurationToPreferences)(
        IDeckLinkConfiguration_v10_4 *This);

    END_INTERFACE
} IDeckLinkConfiguration_v10_4Vtbl;

interface IDeckLinkConfiguration_v10_4 {
    CONST_VTBL IDeckLinkConfiguration_v10_4Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkConfiguration_v10_4_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkConfiguration_v10_4_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkConfiguration_v10_4_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkConfiguration_v10_4 methods ***/
#define IDeckLinkConfiguration_v10_4_SetFlag(This,cfgID,value) (This)->lpVtbl->SetFlag(This,cfgID,value)
#define IDeckLinkConfiguration_v10_4_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IDeckLinkConfiguration_v10_4_SetInt(This,cfgID,value) (This)->lpVtbl->SetInt(This,cfgID,value)
#define IDeckLinkConfiguration_v10_4_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkConfiguration_v10_4_SetFloat(This,cfgID,value) (This)->lpVtbl->SetFloat(This,cfgID,value)
#define IDeckLinkConfiguration_v10_4_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IDeckLinkConfiguration_v10_4_SetString(This,cfgID,value) (This)->lpVtbl->SetString(This,cfgID,value)
#define IDeckLinkConfiguration_v10_4_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#define IDeckLinkConfiguration_v10_4_WriteConfigurationToPreferences(This) (This)->lpVtbl->WriteConfigurationToPreferences(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_4_QueryInterface(IDeckLinkConfiguration_v10_4* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_v10_4_AddRef(IDeckLinkConfiguration_v10_4* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_v10_4_Release(IDeckLinkConfiguration_v10_4* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkConfiguration_v10_4 methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_4_SetFlag(IDeckLinkConfiguration_v10_4* This,BMDDeckLinkConfigurationID cfgID,BOOL value) {
    return This->lpVtbl->SetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_4_GetFlag(IDeckLinkConfiguration_v10_4* This,BMDDeckLinkConfigurationID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_4_SetInt(IDeckLinkConfiguration_v10_4* This,BMDDeckLinkConfigurationID cfgID,LONGLONG value) {
    return This->lpVtbl->SetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_4_GetInt(IDeckLinkConfiguration_v10_4* This,BMDDeckLinkConfigurationID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_4_SetFloat(IDeckLinkConfiguration_v10_4* This,BMDDeckLinkConfigurationID cfgID,double value) {
    return This->lpVtbl->SetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_4_GetFloat(IDeckLinkConfiguration_v10_4* This,BMDDeckLinkConfigurationID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_4_SetString(IDeckLinkConfiguration_v10_4* This,BMDDeckLinkConfigurationID cfgID,BSTR value) {
    return This->lpVtbl->SetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_4_GetString(IDeckLinkConfiguration_v10_4* This,BMDDeckLinkConfigurationID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_4_WriteConfigurationToPreferences(IDeckLinkConfiguration_v10_4* This) {
    return This->lpVtbl->WriteConfigurationToPreferences(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkConfiguration_v10_4_INTERFACE_DEFINED__ */

typedef enum _BMDDeckLinkConfigurationID_v10_2 {
    bmdDeckLinkConfig3GBpsVideoOutput_v10_2 = 0x33676273
} BMDDeckLinkConfigurationID_v10_2;
typedef enum _BMDAudioConnection_v10_2 {
    bmdAudioConnectionEmbedded_v10_2 = 0x656d6264,
    bmdAudioConnectionAESEBU_v10_2 = 0x61657320,
    bmdAudioConnectionAnalog_v10_2 = 0x616e6c67,
    bmdAudioConnectionAnalogXLR_v10_2 = 0x61786c72,
    bmdAudioConnectionAnalogRCA_v10_2 = 0x61726361
} BMDAudioConnection_v10_2;
#ifndef __IDeckLinkConfiguration_v10_2_FWD_DEFINED__
#define __IDeckLinkConfiguration_v10_2_FWD_DEFINED__
typedef interface IDeckLinkConfiguration_v10_2 IDeckLinkConfiguration_v10_2;
#ifdef __cplusplus
interface IDeckLinkConfiguration_v10_2;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkConfiguration_v10_2 interface
 */
#ifndef __IDeckLinkConfiguration_v10_2_INTERFACE_DEFINED__
#define __IDeckLinkConfiguration_v10_2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkConfiguration_v10_2, 0xc679a35b, 0x610c, 0x4d09, 0xb7,0x48, 0x1d,0x04,0x78,0x10,0x0f,0xc0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c679a35b-610c-4d09-b748-1d0478100fc0")
IDeckLinkConfiguration_v10_2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE SetFlag(
        BMDDeckLinkConfigurationID cfgID,
        BOOL value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlag(
        BMDDeckLinkConfigurationID cfgID,
        BOOL *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInt(
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetInt(
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFloat(
        BMDDeckLinkConfigurationID cfgID,
        double value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFloat(
        BMDDeckLinkConfigurationID cfgID,
        double *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetString(
        BMDDeckLinkConfigurationID cfgID,
        BSTR value) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BMDDeckLinkConfigurationID cfgID,
        BSTR *value) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkConfiguration_v10_2, 0xc679a35b, 0x610c, 0x4d09, 0xb7,0x48, 0x1d,0x04,0x78,0x10,0x0f,0xc0)
#endif
#else
typedef struct IDeckLinkConfiguration_v10_2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkConfiguration_v10_2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkConfiguration_v10_2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkConfiguration_v10_2 *This);

    /*** IDeckLinkConfiguration_v10_2 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlag)(
        IDeckLinkConfiguration_v10_2 *This,
        BMDDeckLinkConfigurationID cfgID,
        BOOL value);

    HRESULT (STDMETHODCALLTYPE *GetFlag)(
        IDeckLinkConfiguration_v10_2 *This,
        BMDDeckLinkConfigurationID cfgID,
        BOOL *value);

    HRESULT (STDMETHODCALLTYPE *SetInt)(
        IDeckLinkConfiguration_v10_2 *This,
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG value);

    HRESULT (STDMETHODCALLTYPE *GetInt)(
        IDeckLinkConfiguration_v10_2 *This,
        BMDDeckLinkConfigurationID cfgID,
        LONGLONG *value);

    HRESULT (STDMETHODCALLTYPE *SetFloat)(
        IDeckLinkConfiguration_v10_2 *This,
        BMDDeckLinkConfigurationID cfgID,
        double value);

    HRESULT (STDMETHODCALLTYPE *GetFloat)(
        IDeckLinkConfiguration_v10_2 *This,
        BMDDeckLinkConfigurationID cfgID,
        double *value);

    HRESULT (STDMETHODCALLTYPE *SetString)(
        IDeckLinkConfiguration_v10_2 *This,
        BMDDeckLinkConfigurationID cfgID,
        BSTR value);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkConfiguration_v10_2 *This,
        BMDDeckLinkConfigurationID cfgID,
        BSTR *value);

    HRESULT (STDMETHODCALLTYPE *WriteConfigurationToPreferences)(
        IDeckLinkConfiguration_v10_2 *This);

    END_INTERFACE
} IDeckLinkConfiguration_v10_2Vtbl;

interface IDeckLinkConfiguration_v10_2 {
    CONST_VTBL IDeckLinkConfiguration_v10_2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkConfiguration_v10_2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkConfiguration_v10_2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkConfiguration_v10_2_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkConfiguration_v10_2 methods ***/
#define IDeckLinkConfiguration_v10_2_SetFlag(This,cfgID,value) (This)->lpVtbl->SetFlag(This,cfgID,value)
#define IDeckLinkConfiguration_v10_2_GetFlag(This,cfgID,value) (This)->lpVtbl->GetFlag(This,cfgID,value)
#define IDeckLinkConfiguration_v10_2_SetInt(This,cfgID,value) (This)->lpVtbl->SetInt(This,cfgID,value)
#define IDeckLinkConfiguration_v10_2_GetInt(This,cfgID,value) (This)->lpVtbl->GetInt(This,cfgID,value)
#define IDeckLinkConfiguration_v10_2_SetFloat(This,cfgID,value) (This)->lpVtbl->SetFloat(This,cfgID,value)
#define IDeckLinkConfiguration_v10_2_GetFloat(This,cfgID,value) (This)->lpVtbl->GetFloat(This,cfgID,value)
#define IDeckLinkConfiguration_v10_2_SetString(This,cfgID,value) (This)->lpVtbl->SetString(This,cfgID,value)
#define IDeckLinkConfiguration_v10_2_GetString(This,cfgID,value) (This)->lpVtbl->GetString(This,cfgID,value)
#define IDeckLinkConfiguration_v10_2_WriteConfigurationToPreferences(This) (This)->lpVtbl->WriteConfigurationToPreferences(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_2_QueryInterface(IDeckLinkConfiguration_v10_2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_v10_2_AddRef(IDeckLinkConfiguration_v10_2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_v10_2_Release(IDeckLinkConfiguration_v10_2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkConfiguration_v10_2 methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_2_SetFlag(IDeckLinkConfiguration_v10_2* This,BMDDeckLinkConfigurationID cfgID,BOOL value) {
    return This->lpVtbl->SetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_2_GetFlag(IDeckLinkConfiguration_v10_2* This,BMDDeckLinkConfigurationID cfgID,BOOL *value) {
    return This->lpVtbl->GetFlag(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_2_SetInt(IDeckLinkConfiguration_v10_2* This,BMDDeckLinkConfigurationID cfgID,LONGLONG value) {
    return This->lpVtbl->SetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_2_GetInt(IDeckLinkConfiguration_v10_2* This,BMDDeckLinkConfigurationID cfgID,LONGLONG *value) {
    return This->lpVtbl->GetInt(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_2_SetFloat(IDeckLinkConfiguration_v10_2* This,BMDDeckLinkConfigurationID cfgID,double value) {
    return This->lpVtbl->SetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_2_GetFloat(IDeckLinkConfiguration_v10_2* This,BMDDeckLinkConfigurationID cfgID,double *value) {
    return This->lpVtbl->GetFloat(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_2_SetString(IDeckLinkConfiguration_v10_2* This,BMDDeckLinkConfigurationID cfgID,BSTR value) {
    return This->lpVtbl->SetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_2_GetString(IDeckLinkConfiguration_v10_2* This,BMDDeckLinkConfigurationID cfgID,BSTR *value) {
    return This->lpVtbl->GetString(This,cfgID,value);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v10_2_WriteConfigurationToPreferences(IDeckLinkConfiguration_v10_2* This) {
    return This->lpVtbl->WriteConfigurationToPreferences(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkConfiguration_v10_2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkOutput_v9_9 interface
 */
#ifndef __IDeckLinkOutput_v9_9_INTERFACE_DEFINED__
#define __IDeckLinkOutput_v9_9_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkOutput_v9_9, 0xa3ef0963, 0x0862, 0x44ed, 0x92,0xa9, 0xee,0x89,0xab,0xf4,0x31,0xc7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a3ef0963-0862-44ed-92a9-ee89abf431c7")
IDeckLinkOutput_v9_9 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoOutputFlags flags,
        BMDDisplayModeSupport_v10_11 *result,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput(
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame(
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame **outFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData(
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync(
        IDeckLinkVideoFrame *theFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame(
        IDeckLinkVideoFrame *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback(
        IDeckLinkVideoOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount(
        unsigned int *bufferedFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync(
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples(
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount(
        unsigned int *bufferedSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAudioCallback(
        IDeckLinkAudioOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback(
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback(
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning(
        BOOL *active) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *streamTime,
        double *playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus(
        BMDReferenceStatus *referenceStatus) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkOutput_v9_9, 0xa3ef0963, 0x0862, 0x44ed, 0x92,0xa9, 0xee,0x89,0xab,0xf4,0x31,0xc7)
#endif
#else
typedef struct IDeckLinkOutput_v9_9Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkOutput_v9_9 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkOutput_v9_9 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkOutput_v9_9 *This);

    /*** IDeckLinkOutput_v9_9 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkOutput_v9_9 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoOutputFlags flags,
        BMDDisplayModeSupport_v10_11 *result,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkOutput_v9_9 *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkOutput_v9_9 *This,
        IDeckLinkScreenPreviewCallback *previewCallback);

    HRESULT (STDMETHODCALLTYPE *EnableVideoOutput)(
        IDeckLinkOutput_v9_9 *This,
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoOutput)(
        IDeckLinkOutput_v9_9 *This);

    HRESULT (STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator)(
        IDeckLinkOutput_v9_9 *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *CreateVideoFrame)(
        IDeckLinkOutput_v9_9 *This,
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame **outFrame);

    HRESULT (STDMETHODCALLTYPE *CreateAncillaryData)(
        IDeckLinkOutput_v9_9 *This,
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer);

    HRESULT (STDMETHODCALLTYPE *DisplayVideoFrameSync)(
        IDeckLinkOutput_v9_9 *This,
        IDeckLinkVideoFrame *theFrame);

    HRESULT (STDMETHODCALLTYPE *ScheduleVideoFrame)(
        IDeckLinkOutput_v9_9 *This,
        IDeckLinkVideoFrame *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback)(
        IDeckLinkOutput_v9_9 *This,
        IDeckLinkVideoOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetBufferedVideoFrameCount)(
        IDeckLinkOutput_v9_9 *This,
        unsigned int *bufferedFrameCount);

    HRESULT (STDMETHODCALLTYPE *EnableAudioOutput)(
        IDeckLinkOutput_v9_9 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType);

    HRESULT (STDMETHODCALLTYPE *DisableAudioOutput)(
        IDeckLinkOutput_v9_9 *This);

    HRESULT (STDMETHODCALLTYPE *WriteAudioSamplesSync)(
        IDeckLinkOutput_v9_9 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *BeginAudioPreroll)(
        IDeckLinkOutput_v9_9 *This);

    HRESULT (STDMETHODCALLTYPE *EndAudioPreroll)(
        IDeckLinkOutput_v9_9 *This);

    HRESULT (STDMETHODCALLTYPE *ScheduleAudioSamples)(
        IDeckLinkOutput_v9_9 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount)(
        IDeckLinkOutput_v9_9 *This,
        unsigned int *bufferedSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *FlushBufferedAudioSamples)(
        IDeckLinkOutput_v9_9 *This);

    HRESULT (STDMETHODCALLTYPE *SetAudioCallback)(
        IDeckLinkOutput_v9_9 *This,
        IDeckLinkAudioOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *StartScheduledPlayback)(
        IDeckLinkOutput_v9_9 *This,
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *StopScheduledPlayback)(
        IDeckLinkOutput_v9_9 *This,
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *IsScheduledPlaybackRunning)(
        IDeckLinkOutput_v9_9 *This,
        BOOL *active);

    HRESULT (STDMETHODCALLTYPE *GetScheduledStreamTime)(
        IDeckLinkOutput_v9_9 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *streamTime,
        double *playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *GetReferenceStatus)(
        IDeckLinkOutput_v9_9 *This,
        BMDReferenceStatus *referenceStatus);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkOutput_v9_9 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    END_INTERFACE
} IDeckLinkOutput_v9_9Vtbl;

interface IDeckLinkOutput_v9_9 {
    CONST_VTBL IDeckLinkOutput_v9_9Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkOutput_v9_9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkOutput_v9_9_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkOutput_v9_9_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkOutput_v9_9 methods ***/
#define IDeckLinkOutput_v9_9_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) (This)->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode)
#define IDeckLinkOutput_v9_9_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkOutput_v9_9_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkOutput_v9_9_EnableVideoOutput(This,displayMode,flags) (This)->lpVtbl->EnableVideoOutput(This,displayMode,flags)
#define IDeckLinkOutput_v9_9_DisableVideoOutput(This) (This)->lpVtbl->DisableVideoOutput(This)
#define IDeckLinkOutput_v9_9_SetVideoOutputFrameMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator)
#define IDeckLinkOutput_v9_9_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) (This)->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)
#define IDeckLinkOutput_v9_9_CreateAncillaryData(This,pixelFormat,outBuffer) (This)->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer)
#define IDeckLinkOutput_v9_9_DisplayVideoFrameSync(This,theFrame) (This)->lpVtbl->DisplayVideoFrameSync(This,theFrame)
#define IDeckLinkOutput_v9_9_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) (This)->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)
#define IDeckLinkOutput_v9_9_SetScheduledFrameCompletionCallback(This,theCallback) (This)->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback)
#define IDeckLinkOutput_v9_9_GetBufferedVideoFrameCount(This,bufferedFrameCount) (This)->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount)
#define IDeckLinkOutput_v9_9_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) (This)->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType)
#define IDeckLinkOutput_v9_9_DisableAudioOutput(This) (This)->lpVtbl->DisableAudioOutput(This)
#define IDeckLinkOutput_v9_9_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) (This)->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)
#define IDeckLinkOutput_v9_9_BeginAudioPreroll(This) (This)->lpVtbl->BeginAudioPreroll(This)
#define IDeckLinkOutput_v9_9_EndAudioPreroll(This) (This)->lpVtbl->EndAudioPreroll(This)
#define IDeckLinkOutput_v9_9_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) (This)->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)
#define IDeckLinkOutput_v9_9_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) (This)->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount)
#define IDeckLinkOutput_v9_9_FlushBufferedAudioSamples(This) (This)->lpVtbl->FlushBufferedAudioSamples(This)
#define IDeckLinkOutput_v9_9_SetAudioCallback(This,theCallback) (This)->lpVtbl->SetAudioCallback(This,theCallback)
#define IDeckLinkOutput_v9_9_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) (This)->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)
#define IDeckLinkOutput_v9_9_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) (This)->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)
#define IDeckLinkOutput_v9_9_IsScheduledPlaybackRunning(This,active) (This)->lpVtbl->IsScheduledPlaybackRunning(This,active)
#define IDeckLinkOutput_v9_9_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) (This)->lpVtbl->GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed)
#define IDeckLinkOutput_v9_9_GetReferenceStatus(This,referenceStatus) (This)->lpVtbl->GetReferenceStatus(This,referenceStatus)
#define IDeckLinkOutput_v9_9_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_QueryInterface(IDeckLinkOutput_v9_9* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkOutput_v9_9_AddRef(IDeckLinkOutput_v9_9* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkOutput_v9_9_Release(IDeckLinkOutput_v9_9* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkOutput_v9_9 methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_DoesSupportVideoMode(IDeckLinkOutput_v9_9* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoOutputFlags flags,BMDDisplayModeSupport_v10_11 *result,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_GetDisplayModeIterator(IDeckLinkOutput_v9_9* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_SetScreenPreviewCallback(IDeckLinkOutput_v9_9* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_EnableVideoOutput(IDeckLinkOutput_v9_9* This,BMDDisplayMode displayMode,BMDVideoOutputFlags flags) {
    return This->lpVtbl->EnableVideoOutput(This,displayMode,flags);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_DisableVideoOutput(IDeckLinkOutput_v9_9* This) {
    return This->lpVtbl->DisableVideoOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_SetVideoOutputFrameMemoryAllocator(IDeckLinkOutput_v9_9* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_CreateVideoFrame(IDeckLinkOutput_v9_9* This,int width,int height,int rowBytes,BMDPixelFormat pixelFormat,BMDFrameFlags flags,IDeckLinkMutableVideoFrame **outFrame) {
    return This->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_CreateAncillaryData(IDeckLinkOutput_v9_9* This,BMDPixelFormat pixelFormat,IDeckLinkVideoFrameAncillary **outBuffer) {
    return This->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_DisplayVideoFrameSync(IDeckLinkOutput_v9_9* This,IDeckLinkVideoFrame *theFrame) {
    return This->lpVtbl->DisplayVideoFrameSync(This,theFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_ScheduleVideoFrame(IDeckLinkOutput_v9_9* This,IDeckLinkVideoFrame *theFrame,BMDTimeValue displayTime,BMDTimeValue displayDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_SetScheduledFrameCompletionCallback(IDeckLinkOutput_v9_9* This,IDeckLinkVideoOutputCallback *theCallback) {
    return This->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_GetBufferedVideoFrameCount(IDeckLinkOutput_v9_9* This,unsigned int *bufferedFrameCount) {
    return This->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_EnableAudioOutput(IDeckLinkOutput_v9_9* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount,BMDAudioOutputStreamType streamType) {
    return This->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_DisableAudioOutput(IDeckLinkOutput_v9_9* This) {
    return This->lpVtbl->DisableAudioOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_WriteAudioSamplesSync(IDeckLinkOutput_v9_9* This,void *buffer,unsigned int sampleFrameCount,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_BeginAudioPreroll(IDeckLinkOutput_v9_9* This) {
    return This->lpVtbl->BeginAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_EndAudioPreroll(IDeckLinkOutput_v9_9* This) {
    return This->lpVtbl->EndAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_ScheduleAudioSamples(IDeckLinkOutput_v9_9* This,void *buffer,unsigned int sampleFrameCount,BMDTimeValue streamTime,BMDTimeScale timeScale,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_GetBufferedAudioSampleFrameCount(IDeckLinkOutput_v9_9* This,unsigned int *bufferedSampleFrameCount) {
    return This->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_FlushBufferedAudioSamples(IDeckLinkOutput_v9_9* This) {
    return This->lpVtbl->FlushBufferedAudioSamples(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_SetAudioCallback(IDeckLinkOutput_v9_9* This,IDeckLinkAudioOutputCallback *theCallback) {
    return This->lpVtbl->SetAudioCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_StartScheduledPlayback(IDeckLinkOutput_v9_9* This,BMDTimeValue playbackStartTime,BMDTimeScale timeScale,double playbackSpeed) {
    return This->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_StopScheduledPlayback(IDeckLinkOutput_v9_9* This,BMDTimeValue stopPlaybackAtTime,BMDTimeValue *actualStopTime,BMDTimeScale timeScale) {
    return This->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_IsScheduledPlaybackRunning(IDeckLinkOutput_v9_9* This,BOOL *active) {
    return This->lpVtbl->IsScheduledPlaybackRunning(This,active);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_GetScheduledStreamTime(IDeckLinkOutput_v9_9* This,BMDTimeScale desiredTimeScale,BMDTimeValue *streamTime,double *playbackSpeed) {
    return This->lpVtbl->GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_GetReferenceStatus(IDeckLinkOutput_v9_9* This,BMDReferenceStatus *referenceStatus) {
    return This->lpVtbl->GetReferenceStatus(This,referenceStatus);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v9_9_GetHardwareReferenceClock(IDeckLinkOutput_v9_9* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkOutput_v9_9_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInput_v9_2 interface
 */
#ifndef __IDeckLinkInput_v9_2_INTERFACE_DEFINED__
#define __IDeckLinkInput_v9_2_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInput_v9_2, 0x6d40ef78, 0x28b9, 0x4e21, 0x99,0x0d, 0x95,0xbb,0x77,0x50,0xa0,0x4f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6d40ef78-28b9-4e21-990d-95bb7750a04f")
IDeckLinkInput_v9_2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags,
        BMDDisplayModeSupport_v10_11 *result,
        IDeckLinkDisplayMode **resultDisplayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoInput(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount(
        unsigned int *availableFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioInput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount(
        unsigned int *availableSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkInputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInput_v9_2, 0x6d40ef78, 0x28b9, 0x4e21, 0x99,0x0d, 0x95,0xbb,0x77,0x50,0xa0,0x4f)
#endif
#else
typedef struct IDeckLinkInput_v9_2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInput_v9_2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInput_v9_2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInput_v9_2 *This);

    /*** IDeckLinkInput_v9_2 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkInput_v9_2 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags,
        BMDDisplayModeSupport_v10_11 *result,
        IDeckLinkDisplayMode **resultDisplayMode);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkInput_v9_2 *This,
        IDeckLinkDisplayModeIterator **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkInput_v9_2 *This,
        IDeckLinkScreenPreviewCallback *previewCallback);

    HRESULT (STDMETHODCALLTYPE *EnableVideoInput)(
        IDeckLinkInput_v9_2 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoInput)(
        IDeckLinkInput_v9_2 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableVideoFrameCount)(
        IDeckLinkInput_v9_2 *This,
        unsigned int *availableFrameCount);

    HRESULT (STDMETHODCALLTYPE *EnableAudioInput)(
        IDeckLinkInput_v9_2 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioInput)(
        IDeckLinkInput_v9_2 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount)(
        IDeckLinkInput_v9_2 *This,
        unsigned int *availableSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *StartStreams)(
        IDeckLinkInput_v9_2 *This);

    HRESULT (STDMETHODCALLTYPE *StopStreams)(
        IDeckLinkInput_v9_2 *This);

    HRESULT (STDMETHODCALLTYPE *PauseStreams)(
        IDeckLinkInput_v9_2 *This);

    HRESULT (STDMETHODCALLTYPE *FlushStreams)(
        IDeckLinkInput_v9_2 *This);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkInput_v9_2 *This,
        IDeckLinkInputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkInput_v9_2 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    END_INTERFACE
} IDeckLinkInput_v9_2Vtbl;

interface IDeckLinkInput_v9_2 {
    CONST_VTBL IDeckLinkInput_v9_2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkInput_v9_2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkInput_v9_2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkInput_v9_2_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkInput_v9_2 methods ***/
#define IDeckLinkInput_v9_2_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) (This)->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode)
#define IDeckLinkInput_v9_2_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkInput_v9_2_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkInput_v9_2_EnableVideoInput(This,displayMode,pixelFormat,flags) (This)->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags)
#define IDeckLinkInput_v9_2_DisableVideoInput(This) (This)->lpVtbl->DisableVideoInput(This)
#define IDeckLinkInput_v9_2_GetAvailableVideoFrameCount(This,availableFrameCount) (This)->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount)
#define IDeckLinkInput_v9_2_EnableAudioInput(This,sampleRate,sampleType,channelCount) (This)->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount)
#define IDeckLinkInput_v9_2_DisableAudioInput(This) (This)->lpVtbl->DisableAudioInput(This)
#define IDeckLinkInput_v9_2_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) (This)->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)
#define IDeckLinkInput_v9_2_StartStreams(This) (This)->lpVtbl->StartStreams(This)
#define IDeckLinkInput_v9_2_StopStreams(This) (This)->lpVtbl->StopStreams(This)
#define IDeckLinkInput_v9_2_PauseStreams(This) (This)->lpVtbl->PauseStreams(This)
#define IDeckLinkInput_v9_2_FlushStreams(This) (This)->lpVtbl->FlushStreams(This)
#define IDeckLinkInput_v9_2_SetCallback(This,theCallback) (This)->lpVtbl->SetCallback(This,theCallback)
#define IDeckLinkInput_v9_2_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_QueryInterface(IDeckLinkInput_v9_2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInput_v9_2_AddRef(IDeckLinkInput_v9_2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInput_v9_2_Release(IDeckLinkInput_v9_2* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInput_v9_2 methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_DoesSupportVideoMode(IDeckLinkInput_v9_2* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags,BMDDisplayModeSupport_v10_11 *result,IDeckLinkDisplayMode **resultDisplayMode) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_GetDisplayModeIterator(IDeckLinkInput_v9_2* This,IDeckLinkDisplayModeIterator **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_SetScreenPreviewCallback(IDeckLinkInput_v9_2* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_EnableVideoInput(IDeckLinkInput_v9_2* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags) {
    return This->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_DisableVideoInput(IDeckLinkInput_v9_2* This) {
    return This->lpVtbl->DisableVideoInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_GetAvailableVideoFrameCount(IDeckLinkInput_v9_2* This,unsigned int *availableFrameCount) {
    return This->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_EnableAudioInput(IDeckLinkInput_v9_2* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_DisableAudioInput(IDeckLinkInput_v9_2* This) {
    return This->lpVtbl->DisableAudioInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_GetAvailableAudioSampleFrameCount(IDeckLinkInput_v9_2* This,unsigned int *availableSampleFrameCount) {
    return This->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_StartStreams(IDeckLinkInput_v9_2* This) {
    return This->lpVtbl->StartStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_StopStreams(IDeckLinkInput_v9_2* This) {
    return This->lpVtbl->StopStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_PauseStreams(IDeckLinkInput_v9_2* This) {
    return This->lpVtbl->PauseStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_FlushStreams(IDeckLinkInput_v9_2* This) {
    return This->lpVtbl->FlushStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_SetCallback(IDeckLinkInput_v9_2* This,IDeckLinkInputCallback *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v9_2_GetHardwareReferenceClock(IDeckLinkInput_v9_2* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInput_v9_2_INTERFACE_DEFINED__ */

typedef enum _BMDDeckControlVTRControlState_v8_1 {
    bmdDeckControlNotInVTRControlMode_v8_1 = 0x6e76636d,
    bmdDeckControlVTRControlPlaying_v8_1 = 0x76747270,
    bmdDeckControlVTRControlRecording_v8_1 = 0x76747272,
    bmdDeckControlVTRControlStill_v8_1 = 0x76747261,
    bmdDeckControlVTRControlSeeking_v8_1 = 0x76747273,
    bmdDeckControlVTRControlStopped_v8_1 = 0x7674726f
} BMDDeckControlVTRControlState_v8_1;
#ifndef __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__
#define __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__
typedef interface IDeckLinkDeckControlStatusCallback IDeckLinkDeckControlStatusCallback;
#ifdef __cplusplus
interface IDeckLinkDeckControlStatusCallback;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDeckControl_FWD_DEFINED__
#define __IDeckLinkDeckControl_FWD_DEFINED__
typedef interface IDeckLinkDeckControl IDeckLinkDeckControl;
#ifdef __cplusplus
interface IDeckLinkDeckControl;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkDeckControlStatusCallback_v8_1 interface
 */
#ifndef __IDeckLinkDeckControlStatusCallback_v8_1_INTERFACE_DEFINED__
#define __IDeckLinkDeckControlStatusCallback_v8_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDeckControlStatusCallback_v8_1, 0xe5f693c1, 0x4283, 0x4716, 0xb1,0x8f, 0xc1,0x43,0x15,0x21,0x95,0x5b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e5f693c1-4283-4716-b18f-c1431521955b")
IDeckLinkDeckControlStatusCallback_v8_1 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE TimecodeUpdate(
        BMDTimecodeBCD currentTimecode) = 0;

    virtual HRESULT STDMETHODCALLTYPE VTRControlStateChanged(
        BMDDeckControlVTRControlState_v8_1 newState,
        BMDDeckControlError error) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeckControlEventReceived(
        BMDDeckControlEvent event,
        BMDDeckControlError error) = 0;

    virtual HRESULT STDMETHODCALLTYPE DeckControlStatusChanged(
        BMDDeckControlStatusFlags flags,
        unsigned int mask) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDeckControlStatusCallback_v8_1, 0xe5f693c1, 0x4283, 0x4716, 0xb1,0x8f, 0xc1,0x43,0x15,0x21,0x95,0x5b)
#endif
#else
typedef struct IDeckLinkDeckControlStatusCallback_v8_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDeckControlStatusCallback_v8_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDeckControlStatusCallback_v8_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDeckControlStatusCallback_v8_1 *This);

    /*** IDeckLinkDeckControlStatusCallback_v8_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *TimecodeUpdate)(
        IDeckLinkDeckControlStatusCallback_v8_1 *This,
        BMDTimecodeBCD currentTimecode);

    HRESULT (STDMETHODCALLTYPE *VTRControlStateChanged)(
        IDeckLinkDeckControlStatusCallback_v8_1 *This,
        BMDDeckControlVTRControlState_v8_1 newState,
        BMDDeckControlError error);

    HRESULT (STDMETHODCALLTYPE *DeckControlEventReceived)(
        IDeckLinkDeckControlStatusCallback_v8_1 *This,
        BMDDeckControlEvent event,
        BMDDeckControlError error);

    HRESULT (STDMETHODCALLTYPE *DeckControlStatusChanged)(
        IDeckLinkDeckControlStatusCallback_v8_1 *This,
        BMDDeckControlStatusFlags flags,
        unsigned int mask);

    END_INTERFACE
} IDeckLinkDeckControlStatusCallback_v8_1Vtbl;

interface IDeckLinkDeckControlStatusCallback_v8_1 {
    CONST_VTBL IDeckLinkDeckControlStatusCallback_v8_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDeckControlStatusCallback_v8_1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDeckControlStatusCallback_v8_1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDeckControlStatusCallback_v8_1_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDeckControlStatusCallback_v8_1 methods ***/
#define IDeckLinkDeckControlStatusCallback_v8_1_TimecodeUpdate(This,currentTimecode) (This)->lpVtbl->TimecodeUpdate(This,currentTimecode)
#define IDeckLinkDeckControlStatusCallback_v8_1_VTRControlStateChanged(This,newState,error) (This)->lpVtbl->VTRControlStateChanged(This,newState,error)
#define IDeckLinkDeckControlStatusCallback_v8_1_DeckControlEventReceived(This,event,error) (This)->lpVtbl->DeckControlEventReceived(This,event,error)
#define IDeckLinkDeckControlStatusCallback_v8_1_DeckControlStatusChanged(This,flags,mask) (This)->lpVtbl->DeckControlStatusChanged(This,flags,mask)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDeckControlStatusCallback_v8_1_QueryInterface(IDeckLinkDeckControlStatusCallback_v8_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDeckControlStatusCallback_v8_1_AddRef(IDeckLinkDeckControlStatusCallback_v8_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDeckControlStatusCallback_v8_1_Release(IDeckLinkDeckControlStatusCallback_v8_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDeckControlStatusCallback_v8_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkDeckControlStatusCallback_v8_1_TimecodeUpdate(IDeckLinkDeckControlStatusCallback_v8_1* This,BMDTimecodeBCD currentTimecode) {
    return This->lpVtbl->TimecodeUpdate(This,currentTimecode);
}
static FORCEINLINE HRESULT IDeckLinkDeckControlStatusCallback_v8_1_VTRControlStateChanged(IDeckLinkDeckControlStatusCallback_v8_1* This,BMDDeckControlVTRControlState_v8_1 newState,BMDDeckControlError error) {
    return This->lpVtbl->VTRControlStateChanged(This,newState,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControlStatusCallback_v8_1_DeckControlEventReceived(IDeckLinkDeckControlStatusCallback_v8_1* This,BMDDeckControlEvent event,BMDDeckControlError error) {
    return This->lpVtbl->DeckControlEventReceived(This,event,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControlStatusCallback_v8_1_DeckControlStatusChanged(IDeckLinkDeckControlStatusCallback_v8_1* This,BMDDeckControlStatusFlags flags,unsigned int mask) {
    return This->lpVtbl->DeckControlStatusChanged(This,flags,mask);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDeckControlStatusCallback_v8_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkDeckControl_v8_1 interface
 */
#ifndef __IDeckLinkDeckControl_v8_1_INTERFACE_DEFINED__
#define __IDeckLinkDeckControl_v8_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDeckControl_v8_1, 0x522a9e39, 0x0f3c, 0x4742, 0x94,0xee, 0xd8,0x0d,0xe3,0x35,0xda,0x1d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("522a9e39-0f3c-4742-94ee-d80de335da1d")
IDeckLinkDeckControl_v8_1 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Open(
        BMDTimeScale timeScale,
        BMDTimeValue timeValue,
        BOOL timecodeIsDropFrame,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        BOOL standbyOn) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentState(
        BMDDeckControlMode *mode,
        BMDDeckControlVTRControlState_v8_1 *vtrControlState,
        BMDDeckControlStatusFlags *flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStandby(
        BOOL standbyOn) = 0;

    virtual HRESULT STDMETHODCALLTYPE SendCommand(
        unsigned char *inBuffer,
        unsigned int inBufferSize,
        unsigned char *outBuffer,
        unsigned int *outDataSize,
        unsigned int outBufferSize,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Play(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Stop(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE TogglePlayStop(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Eject(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GoToTimecode(
        BMDTimecodeBCD timecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE FastForward(
        BOOL viewTape,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Rewind(
        BOOL viewTape,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE StepForward(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE StepBack(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Jog(
        double rate,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Shuttle(
        double rate,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecodeString(
        BSTR *currentTimeCode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecode(
        IDeckLinkTimecode **currentTimecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecodeBCD(
        BMDTimecodeBCD *currentTimecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPreroll(
        unsigned int prerollSeconds) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPreroll(
        unsigned int *prerollSeconds) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetExportOffset(
        int exportOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetExportOffset(
        int *exportOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetManualExportOffset(
        int *deckManualExportOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCaptureOffset(
        int captureOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCaptureOffset(
        int *captureOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartExport(
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlExportModeOpsFlags exportModeOps,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartCapture(
        BOOL useVITC,
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDeviceID(
        unsigned short *deviceId,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Abort(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CrashRecordStart(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE CrashRecordStop(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkDeckControlStatusCallback_v8_1 *callback) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDeckControl_v8_1, 0x522a9e39, 0x0f3c, 0x4742, 0x94,0xee, 0xd8,0x0d,0xe3,0x35,0xda,0x1d)
#endif
#else
typedef struct IDeckLinkDeckControl_v8_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDeckControl_v8_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDeckControl_v8_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDeckControl_v8_1 *This);

    /*** IDeckLinkDeckControl_v8_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *Open)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDTimeScale timeScale,
        BMDTimeValue timeValue,
        BOOL timecodeIsDropFrame,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Close)(
        IDeckLinkDeckControl_v8_1 *This,
        BOOL standbyOn);

    HRESULT (STDMETHODCALLTYPE *GetCurrentState)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDDeckControlMode *mode,
        BMDDeckControlVTRControlState_v8_1 *vtrControlState,
        BMDDeckControlStatusFlags *flags);

    HRESULT (STDMETHODCALLTYPE *SetStandby)(
        IDeckLinkDeckControl_v8_1 *This,
        BOOL standbyOn);

    HRESULT (STDMETHODCALLTYPE *SendCommand)(
        IDeckLinkDeckControl_v8_1 *This,
        unsigned char *inBuffer,
        unsigned int inBufferSize,
        unsigned char *outBuffer,
        unsigned int *outDataSize,
        unsigned int outBufferSize,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Play)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Stop)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *TogglePlayStop)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Eject)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GoToTimecode)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDTimecodeBCD timecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *FastForward)(
        IDeckLinkDeckControl_v8_1 *This,
        BOOL viewTape,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Rewind)(
        IDeckLinkDeckControl_v8_1 *This,
        BOOL viewTape,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *StepForward)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *StepBack)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Jog)(
        IDeckLinkDeckControl_v8_1 *This,
        double rate,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Shuttle)(
        IDeckLinkDeckControl_v8_1 *This,
        double rate,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetTimecodeString)(
        IDeckLinkDeckControl_v8_1 *This,
        BSTR *currentTimeCode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkDeckControl_v8_1 *This,
        IDeckLinkTimecode **currentTimecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetTimecodeBCD)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDTimecodeBCD *currentTimecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *SetPreroll)(
        IDeckLinkDeckControl_v8_1 *This,
        unsigned int prerollSeconds);

    HRESULT (STDMETHODCALLTYPE *GetPreroll)(
        IDeckLinkDeckControl_v8_1 *This,
        unsigned int *prerollSeconds);

    HRESULT (STDMETHODCALLTYPE *SetExportOffset)(
        IDeckLinkDeckControl_v8_1 *This,
        int exportOffsetFields);

    HRESULT (STDMETHODCALLTYPE *GetExportOffset)(
        IDeckLinkDeckControl_v8_1 *This,
        int *exportOffsetFields);

    HRESULT (STDMETHODCALLTYPE *GetManualExportOffset)(
        IDeckLinkDeckControl_v8_1 *This,
        int *deckManualExportOffsetFields);

    HRESULT (STDMETHODCALLTYPE *SetCaptureOffset)(
        IDeckLinkDeckControl_v8_1 *This,
        int captureOffsetFields);

    HRESULT (STDMETHODCALLTYPE *GetCaptureOffset)(
        IDeckLinkDeckControl_v8_1 *This,
        int *captureOffsetFields);

    HRESULT (STDMETHODCALLTYPE *StartExport)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlExportModeOpsFlags exportModeOps,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *StartCapture)(
        IDeckLinkDeckControl_v8_1 *This,
        BOOL useVITC,
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetDeviceID)(
        IDeckLinkDeckControl_v8_1 *This,
        unsigned short *deviceId,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        IDeckLinkDeckControl_v8_1 *This);

    HRESULT (STDMETHODCALLTYPE *CrashRecordStart)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *CrashRecordStop)(
        IDeckLinkDeckControl_v8_1 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkDeckControl_v8_1 *This,
        IDeckLinkDeckControlStatusCallback_v8_1 *callback);

    END_INTERFACE
} IDeckLinkDeckControl_v8_1Vtbl;

interface IDeckLinkDeckControl_v8_1 {
    CONST_VTBL IDeckLinkDeckControl_v8_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDeckControl_v8_1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDeckControl_v8_1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDeckControl_v8_1_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDeckControl_v8_1 methods ***/
#define IDeckLinkDeckControl_v8_1_Open(This,timeScale,timeValue,timecodeIsDropFrame,error) (This)->lpVtbl->Open(This,timeScale,timeValue,timecodeIsDropFrame,error)
#define IDeckLinkDeckControl_v8_1_Close(This,standbyOn) (This)->lpVtbl->Close(This,standbyOn)
#define IDeckLinkDeckControl_v8_1_GetCurrentState(This,mode,vtrControlState,flags) (This)->lpVtbl->GetCurrentState(This,mode,vtrControlState,flags)
#define IDeckLinkDeckControl_v8_1_SetStandby(This,standbyOn) (This)->lpVtbl->SetStandby(This,standbyOn)
#define IDeckLinkDeckControl_v8_1_SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error) (This)->lpVtbl->SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error)
#define IDeckLinkDeckControl_v8_1_Play(This,error) (This)->lpVtbl->Play(This,error)
#define IDeckLinkDeckControl_v8_1_Stop(This,error) (This)->lpVtbl->Stop(This,error)
#define IDeckLinkDeckControl_v8_1_TogglePlayStop(This,error) (This)->lpVtbl->TogglePlayStop(This,error)
#define IDeckLinkDeckControl_v8_1_Eject(This,error) (This)->lpVtbl->Eject(This,error)
#define IDeckLinkDeckControl_v8_1_GoToTimecode(This,timecode,error) (This)->lpVtbl->GoToTimecode(This,timecode,error)
#define IDeckLinkDeckControl_v8_1_FastForward(This,viewTape,error) (This)->lpVtbl->FastForward(This,viewTape,error)
#define IDeckLinkDeckControl_v8_1_Rewind(This,viewTape,error) (This)->lpVtbl->Rewind(This,viewTape,error)
#define IDeckLinkDeckControl_v8_1_StepForward(This,error) (This)->lpVtbl->StepForward(This,error)
#define IDeckLinkDeckControl_v8_1_StepBack(This,error) (This)->lpVtbl->StepBack(This,error)
#define IDeckLinkDeckControl_v8_1_Jog(This,rate,error) (This)->lpVtbl->Jog(This,rate,error)
#define IDeckLinkDeckControl_v8_1_Shuttle(This,rate,error) (This)->lpVtbl->Shuttle(This,rate,error)
#define IDeckLinkDeckControl_v8_1_GetTimecodeString(This,currentTimeCode,error) (This)->lpVtbl->GetTimecodeString(This,currentTimeCode,error)
#define IDeckLinkDeckControl_v8_1_GetTimecode(This,currentTimecode,error) (This)->lpVtbl->GetTimecode(This,currentTimecode,error)
#define IDeckLinkDeckControl_v8_1_GetTimecodeBCD(This,currentTimecode,error) (This)->lpVtbl->GetTimecodeBCD(This,currentTimecode,error)
#define IDeckLinkDeckControl_v8_1_SetPreroll(This,prerollSeconds) (This)->lpVtbl->SetPreroll(This,prerollSeconds)
#define IDeckLinkDeckControl_v8_1_GetPreroll(This,prerollSeconds) (This)->lpVtbl->GetPreroll(This,prerollSeconds)
#define IDeckLinkDeckControl_v8_1_SetExportOffset(This,exportOffsetFields) (This)->lpVtbl->SetExportOffset(This,exportOffsetFields)
#define IDeckLinkDeckControl_v8_1_GetExportOffset(This,exportOffsetFields) (This)->lpVtbl->GetExportOffset(This,exportOffsetFields)
#define IDeckLinkDeckControl_v8_1_GetManualExportOffset(This,deckManualExportOffsetFields) (This)->lpVtbl->GetManualExportOffset(This,deckManualExportOffsetFields)
#define IDeckLinkDeckControl_v8_1_SetCaptureOffset(This,captureOffsetFields) (This)->lpVtbl->SetCaptureOffset(This,captureOffsetFields)
#define IDeckLinkDeckControl_v8_1_GetCaptureOffset(This,captureOffsetFields) (This)->lpVtbl->GetCaptureOffset(This,captureOffsetFields)
#define IDeckLinkDeckControl_v8_1_StartExport(This,inTimecode,outTimecode,exportModeOps,error) (This)->lpVtbl->StartExport(This,inTimecode,outTimecode,exportModeOps,error)
#define IDeckLinkDeckControl_v8_1_StartCapture(This,useVITC,inTimecode,outTimecode,error) (This)->lpVtbl->StartCapture(This,useVITC,inTimecode,outTimecode,error)
#define IDeckLinkDeckControl_v8_1_GetDeviceID(This,deviceId,error) (This)->lpVtbl->GetDeviceID(This,deviceId,error)
#define IDeckLinkDeckControl_v8_1_Abort(This) (This)->lpVtbl->Abort(This)
#define IDeckLinkDeckControl_v8_1_CrashRecordStart(This,error) (This)->lpVtbl->CrashRecordStart(This,error)
#define IDeckLinkDeckControl_v8_1_CrashRecordStop(This,error) (This)->lpVtbl->CrashRecordStop(This,error)
#define IDeckLinkDeckControl_v8_1_SetCallback(This,callback) (This)->lpVtbl->SetCallback(This,callback)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_QueryInterface(IDeckLinkDeckControl_v8_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDeckControl_v8_1_AddRef(IDeckLinkDeckControl_v8_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDeckControl_v8_1_Release(IDeckLinkDeckControl_v8_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDeckControl_v8_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_Open(IDeckLinkDeckControl_v8_1* This,BMDTimeScale timeScale,BMDTimeValue timeValue,BOOL timecodeIsDropFrame,BMDDeckControlError *error) {
    return This->lpVtbl->Open(This,timeScale,timeValue,timecodeIsDropFrame,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_Close(IDeckLinkDeckControl_v8_1* This,BOOL standbyOn) {
    return This->lpVtbl->Close(This,standbyOn);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_GetCurrentState(IDeckLinkDeckControl_v8_1* This,BMDDeckControlMode *mode,BMDDeckControlVTRControlState_v8_1 *vtrControlState,BMDDeckControlStatusFlags *flags) {
    return This->lpVtbl->GetCurrentState(This,mode,vtrControlState,flags);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_SetStandby(IDeckLinkDeckControl_v8_1* This,BOOL standbyOn) {
    return This->lpVtbl->SetStandby(This,standbyOn);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_SendCommand(IDeckLinkDeckControl_v8_1* This,unsigned char *inBuffer,unsigned int inBufferSize,unsigned char *outBuffer,unsigned int *outDataSize,unsigned int outBufferSize,BMDDeckControlError *error) {
    return This->lpVtbl->SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_Play(IDeckLinkDeckControl_v8_1* This,BMDDeckControlError *error) {
    return This->lpVtbl->Play(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_Stop(IDeckLinkDeckControl_v8_1* This,BMDDeckControlError *error) {
    return This->lpVtbl->Stop(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_TogglePlayStop(IDeckLinkDeckControl_v8_1* This,BMDDeckControlError *error) {
    return This->lpVtbl->TogglePlayStop(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_Eject(IDeckLinkDeckControl_v8_1* This,BMDDeckControlError *error) {
    return This->lpVtbl->Eject(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_GoToTimecode(IDeckLinkDeckControl_v8_1* This,BMDTimecodeBCD timecode,BMDDeckControlError *error) {
    return This->lpVtbl->GoToTimecode(This,timecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_FastForward(IDeckLinkDeckControl_v8_1* This,BOOL viewTape,BMDDeckControlError *error) {
    return This->lpVtbl->FastForward(This,viewTape,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_Rewind(IDeckLinkDeckControl_v8_1* This,BOOL viewTape,BMDDeckControlError *error) {
    return This->lpVtbl->Rewind(This,viewTape,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_StepForward(IDeckLinkDeckControl_v8_1* This,BMDDeckControlError *error) {
    return This->lpVtbl->StepForward(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_StepBack(IDeckLinkDeckControl_v8_1* This,BMDDeckControlError *error) {
    return This->lpVtbl->StepBack(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_Jog(IDeckLinkDeckControl_v8_1* This,double rate,BMDDeckControlError *error) {
    return This->lpVtbl->Jog(This,rate,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_Shuttle(IDeckLinkDeckControl_v8_1* This,double rate,BMDDeckControlError *error) {
    return This->lpVtbl->Shuttle(This,rate,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_GetTimecodeString(IDeckLinkDeckControl_v8_1* This,BSTR *currentTimeCode,BMDDeckControlError *error) {
    return This->lpVtbl->GetTimecodeString(This,currentTimeCode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_GetTimecode(IDeckLinkDeckControl_v8_1* This,IDeckLinkTimecode **currentTimecode,BMDDeckControlError *error) {
    return This->lpVtbl->GetTimecode(This,currentTimecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_GetTimecodeBCD(IDeckLinkDeckControl_v8_1* This,BMDTimecodeBCD *currentTimecode,BMDDeckControlError *error) {
    return This->lpVtbl->GetTimecodeBCD(This,currentTimecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_SetPreroll(IDeckLinkDeckControl_v8_1* This,unsigned int prerollSeconds) {
    return This->lpVtbl->SetPreroll(This,prerollSeconds);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_GetPreroll(IDeckLinkDeckControl_v8_1* This,unsigned int *prerollSeconds) {
    return This->lpVtbl->GetPreroll(This,prerollSeconds);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_SetExportOffset(IDeckLinkDeckControl_v8_1* This,int exportOffsetFields) {
    return This->lpVtbl->SetExportOffset(This,exportOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_GetExportOffset(IDeckLinkDeckControl_v8_1* This,int *exportOffsetFields) {
    return This->lpVtbl->GetExportOffset(This,exportOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_GetManualExportOffset(IDeckLinkDeckControl_v8_1* This,int *deckManualExportOffsetFields) {
    return This->lpVtbl->GetManualExportOffset(This,deckManualExportOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_SetCaptureOffset(IDeckLinkDeckControl_v8_1* This,int captureOffsetFields) {
    return This->lpVtbl->SetCaptureOffset(This,captureOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_GetCaptureOffset(IDeckLinkDeckControl_v8_1* This,int *captureOffsetFields) {
    return This->lpVtbl->GetCaptureOffset(This,captureOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_StartExport(IDeckLinkDeckControl_v8_1* This,BMDTimecodeBCD inTimecode,BMDTimecodeBCD outTimecode,BMDDeckControlExportModeOpsFlags exportModeOps,BMDDeckControlError *error) {
    return This->lpVtbl->StartExport(This,inTimecode,outTimecode,exportModeOps,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_StartCapture(IDeckLinkDeckControl_v8_1* This,BOOL useVITC,BMDTimecodeBCD inTimecode,BMDTimecodeBCD outTimecode,BMDDeckControlError *error) {
    return This->lpVtbl->StartCapture(This,useVITC,inTimecode,outTimecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_GetDeviceID(IDeckLinkDeckControl_v8_1* This,unsigned short *deviceId,BMDDeckControlError *error) {
    return This->lpVtbl->GetDeviceID(This,deviceId,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_Abort(IDeckLinkDeckControl_v8_1* This) {
    return This->lpVtbl->Abort(This);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_CrashRecordStart(IDeckLinkDeckControl_v8_1* This,BMDDeckControlError *error) {
    return This->lpVtbl->CrashRecordStart(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_CrashRecordStop(IDeckLinkDeckControl_v8_1* This,BMDDeckControlError *error) {
    return This->lpVtbl->CrashRecordStop(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v8_1_SetCallback(IDeckLinkDeckControl_v8_1* This,IDeckLinkDeckControlStatusCallback_v8_1 *callback) {
    return This->lpVtbl->SetCallback(This,callback);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDeckControl_v8_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLink_v8_0 interface
 */
#ifndef __IDeckLink_v8_0_INTERFACE_DEFINED__
#define __IDeckLink_v8_0_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLink_v8_0, 0x62bff75d, 0x6569, 0x4e55, 0x8d,0x4d, 0x66,0xaa,0x03,0x82,0x9a,0xbc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("62bff75d-6569-4e55-8d4d-66aa03829abc")
IDeckLink_v8_0 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetModelName(
        BSTR *modelName) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLink_v8_0, 0x62bff75d, 0x6569, 0x4e55, 0x8d,0x4d, 0x66,0xaa,0x03,0x82,0x9a,0xbc)
#endif
#else
typedef struct IDeckLink_v8_0Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLink_v8_0 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLink_v8_0 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLink_v8_0 *This);

    /*** IDeckLink_v8_0 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetModelName)(
        IDeckLink_v8_0 *This,
        BSTR *modelName);

    END_INTERFACE
} IDeckLink_v8_0Vtbl;

interface IDeckLink_v8_0 {
    CONST_VTBL IDeckLink_v8_0Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLink_v8_0_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLink_v8_0_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLink_v8_0_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLink_v8_0 methods ***/
#define IDeckLink_v8_0_GetModelName(This,modelName) (This)->lpVtbl->GetModelName(This,modelName)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLink_v8_0_QueryInterface(IDeckLink_v8_0* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLink_v8_0_AddRef(IDeckLink_v8_0* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLink_v8_0_Release(IDeckLink_v8_0* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLink_v8_0 methods ***/
static FORCEINLINE HRESULT IDeckLink_v8_0_GetModelName(IDeckLink_v8_0* This,BSTR *modelName) {
    return This->lpVtbl->GetModelName(This,modelName);
}
#endif
#endif

#endif


#endif  /* __IDeckLink_v8_0_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkIterator_v8_0 interface
 */
#ifndef __IDeckLinkIterator_v8_0_INTERFACE_DEFINED__
#define __IDeckLinkIterator_v8_0_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkIterator_v8_0, 0x74e936fc, 0xcc28, 0x4a67, 0x81,0xa0, 0x1e,0x94,0xe5,0x2d,0x4e,0x69);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("74e936fc-cc28-4a67-81a0-1e94e52d4e69")
IDeckLinkIterator_v8_0 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        IDeckLink_v8_0 **deckLinkInstance) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkIterator_v8_0, 0x74e936fc, 0xcc28, 0x4a67, 0x81,0xa0, 0x1e,0x94,0xe5,0x2d,0x4e,0x69)
#endif
#else
typedef struct IDeckLinkIterator_v8_0Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkIterator_v8_0 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkIterator_v8_0 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkIterator_v8_0 *This);

    /*** IDeckLinkIterator_v8_0 methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IDeckLinkIterator_v8_0 *This,
        IDeckLink_v8_0 **deckLinkInstance);

    END_INTERFACE
} IDeckLinkIterator_v8_0Vtbl;

interface IDeckLinkIterator_v8_0 {
    CONST_VTBL IDeckLinkIterator_v8_0Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkIterator_v8_0_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkIterator_v8_0_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkIterator_v8_0_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkIterator_v8_0 methods ***/
#define IDeckLinkIterator_v8_0_Next(This,deckLinkInstance) (This)->lpVtbl->Next(This,deckLinkInstance)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkIterator_v8_0_QueryInterface(IDeckLinkIterator_v8_0* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkIterator_v8_0_AddRef(IDeckLinkIterator_v8_0* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkIterator_v8_0_Release(IDeckLinkIterator_v8_0* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkIterator_v8_0 methods ***/
static FORCEINLINE HRESULT IDeckLinkIterator_v8_0_Next(IDeckLinkIterator_v8_0* This,IDeckLink_v8_0 **deckLinkInstance) {
    return This->lpVtbl->Next(This,deckLinkInstance);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkIterator_v8_0_INTERFACE_DEFINED__ */

/*****************************************************************************
 * CDeckLinkIterator_v8_0 coclass
 */

DEFINE_GUID(CLSID_CDeckLinkIterator_v8_0, 0xd9eda3b3, 0x2887, 0x41fa, 0xb7,0x24, 0x01,0x7c,0xf1,0xeb,0x1d,0x37);

#ifdef __cplusplus
class DECLSPEC_UUID("d9eda3b3-2887-41fa-b724-017cf1eb1d37") CDeckLinkIterator_v8_0;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkIterator_v8_0, 0xd9eda3b3, 0x2887, 0x41fa, 0xb7,0x24, 0x01,0x7c,0xf1,0xeb,0x1d,0x37)
#endif
#endif

/*****************************************************************************
 * IDeckLinkDeckControl_v7_9 interface
 */
#ifndef __IDeckLinkDeckControl_v7_9_INTERFACE_DEFINED__
#define __IDeckLinkDeckControl_v7_9_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDeckControl_v7_9, 0xa4d81043, 0x0619, 0x42b7, 0x8e,0xd6, 0x60,0x2d,0x29,0x04,0x1d,0xf7);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a4d81043-0619-42b7-8ed6-602d29041df7")
IDeckLinkDeckControl_v7_9 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Open(
        BMDTimeScale timeScale,
        BMDTimeValue timeValue,
        BOOL timecodeIsDropFrame,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Close(
        BOOL standbyOn) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentState(
        BMDDeckControlMode *mode,
        BMDDeckControlVTRControlState *vtrControlState,
        BMDDeckControlStatusFlags *flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetStandby(
        BOOL standbyOn) = 0;

    virtual HRESULT STDMETHODCALLTYPE Play(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Stop(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE TogglePlayStop(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Eject(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GoToTimecode(
        BMDTimecodeBCD timecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE FastForward(
        BOOL viewTape,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Rewind(
        BOOL viewTape,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE StepForward(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE StepBack(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Jog(
        double rate,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Shuttle(
        double rate,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecodeString(
        BSTR *currentTimeCode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecode(
        IDeckLinkTimecode **currentTimecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecodeBCD(
        BMDTimecodeBCD *currentTimecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPreroll(
        unsigned int prerollSeconds) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPreroll(
        unsigned int *prerollSeconds) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetExportOffset(
        int exportOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetExportOffset(
        int *exportOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetManualExportOffset(
        int *deckManualExportOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCaptureOffset(
        int captureOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCaptureOffset(
        int *captureOffsetFields) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartExport(
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlExportModeOpsFlags exportModeOps,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartCapture(
        BOOL useVITC,
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDeviceID(
        unsigned short *deviceId,
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE Abort(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CrashRecordStart(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE CrashRecordStop(
        BMDDeckControlError *error) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkDeckControlStatusCallback *callback) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDeckControl_v7_9, 0xa4d81043, 0x0619, 0x42b7, 0x8e,0xd6, 0x60,0x2d,0x29,0x04,0x1d,0xf7)
#endif
#else
typedef struct IDeckLinkDeckControl_v7_9Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDeckControl_v7_9 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDeckControl_v7_9 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDeckControl_v7_9 *This);

    /*** IDeckLinkDeckControl_v7_9 methods ***/
    HRESULT (STDMETHODCALLTYPE *Open)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDTimeScale timeScale,
        BMDTimeValue timeValue,
        BOOL timecodeIsDropFrame,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Close)(
        IDeckLinkDeckControl_v7_9 *This,
        BOOL standbyOn);

    HRESULT (STDMETHODCALLTYPE *GetCurrentState)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDDeckControlMode *mode,
        BMDDeckControlVTRControlState *vtrControlState,
        BMDDeckControlStatusFlags *flags);

    HRESULT (STDMETHODCALLTYPE *SetStandby)(
        IDeckLinkDeckControl_v7_9 *This,
        BOOL standbyOn);

    HRESULT (STDMETHODCALLTYPE *Play)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Stop)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *TogglePlayStop)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Eject)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GoToTimecode)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDTimecodeBCD timecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *FastForward)(
        IDeckLinkDeckControl_v7_9 *This,
        BOOL viewTape,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Rewind)(
        IDeckLinkDeckControl_v7_9 *This,
        BOOL viewTape,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *StepForward)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *StepBack)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Jog)(
        IDeckLinkDeckControl_v7_9 *This,
        double rate,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Shuttle)(
        IDeckLinkDeckControl_v7_9 *This,
        double rate,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetTimecodeString)(
        IDeckLinkDeckControl_v7_9 *This,
        BSTR *currentTimeCode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkDeckControl_v7_9 *This,
        IDeckLinkTimecode **currentTimecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetTimecodeBCD)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDTimecodeBCD *currentTimecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *SetPreroll)(
        IDeckLinkDeckControl_v7_9 *This,
        unsigned int prerollSeconds);

    HRESULT (STDMETHODCALLTYPE *GetPreroll)(
        IDeckLinkDeckControl_v7_9 *This,
        unsigned int *prerollSeconds);

    HRESULT (STDMETHODCALLTYPE *SetExportOffset)(
        IDeckLinkDeckControl_v7_9 *This,
        int exportOffsetFields);

    HRESULT (STDMETHODCALLTYPE *GetExportOffset)(
        IDeckLinkDeckControl_v7_9 *This,
        int *exportOffsetFields);

    HRESULT (STDMETHODCALLTYPE *GetManualExportOffset)(
        IDeckLinkDeckControl_v7_9 *This,
        int *deckManualExportOffsetFields);

    HRESULT (STDMETHODCALLTYPE *SetCaptureOffset)(
        IDeckLinkDeckControl_v7_9 *This,
        int captureOffsetFields);

    HRESULT (STDMETHODCALLTYPE *GetCaptureOffset)(
        IDeckLinkDeckControl_v7_9 *This,
        int *captureOffsetFields);

    HRESULT (STDMETHODCALLTYPE *StartExport)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlExportModeOpsFlags exportModeOps,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *StartCapture)(
        IDeckLinkDeckControl_v7_9 *This,
        BOOL useVITC,
        BMDTimecodeBCD inTimecode,
        BMDTimecodeBCD outTimecode,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *GetDeviceID)(
        IDeckLinkDeckControl_v7_9 *This,
        unsigned short *deviceId,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        IDeckLinkDeckControl_v7_9 *This);

    HRESULT (STDMETHODCALLTYPE *CrashRecordStart)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *CrashRecordStop)(
        IDeckLinkDeckControl_v7_9 *This,
        BMDDeckControlError *error);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkDeckControl_v7_9 *This,
        IDeckLinkDeckControlStatusCallback *callback);

    END_INTERFACE
} IDeckLinkDeckControl_v7_9Vtbl;

interface IDeckLinkDeckControl_v7_9 {
    CONST_VTBL IDeckLinkDeckControl_v7_9Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDeckControl_v7_9_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDeckControl_v7_9_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDeckControl_v7_9_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDeckControl_v7_9 methods ***/
#define IDeckLinkDeckControl_v7_9_Open(This,timeScale,timeValue,timecodeIsDropFrame,error) (This)->lpVtbl->Open(This,timeScale,timeValue,timecodeIsDropFrame,error)
#define IDeckLinkDeckControl_v7_9_Close(This,standbyOn) (This)->lpVtbl->Close(This,standbyOn)
#define IDeckLinkDeckControl_v7_9_GetCurrentState(This,mode,vtrControlState,flags) (This)->lpVtbl->GetCurrentState(This,mode,vtrControlState,flags)
#define IDeckLinkDeckControl_v7_9_SetStandby(This,standbyOn) (This)->lpVtbl->SetStandby(This,standbyOn)
#define IDeckLinkDeckControl_v7_9_Play(This,error) (This)->lpVtbl->Play(This,error)
#define IDeckLinkDeckControl_v7_9_Stop(This,error) (This)->lpVtbl->Stop(This,error)
#define IDeckLinkDeckControl_v7_9_TogglePlayStop(This,error) (This)->lpVtbl->TogglePlayStop(This,error)
#define IDeckLinkDeckControl_v7_9_Eject(This,error) (This)->lpVtbl->Eject(This,error)
#define IDeckLinkDeckControl_v7_9_GoToTimecode(This,timecode,error) (This)->lpVtbl->GoToTimecode(This,timecode,error)
#define IDeckLinkDeckControl_v7_9_FastForward(This,viewTape,error) (This)->lpVtbl->FastForward(This,viewTape,error)
#define IDeckLinkDeckControl_v7_9_Rewind(This,viewTape,error) (This)->lpVtbl->Rewind(This,viewTape,error)
#define IDeckLinkDeckControl_v7_9_StepForward(This,error) (This)->lpVtbl->StepForward(This,error)
#define IDeckLinkDeckControl_v7_9_StepBack(This,error) (This)->lpVtbl->StepBack(This,error)
#define IDeckLinkDeckControl_v7_9_Jog(This,rate,error) (This)->lpVtbl->Jog(This,rate,error)
#define IDeckLinkDeckControl_v7_9_Shuttle(This,rate,error) (This)->lpVtbl->Shuttle(This,rate,error)
#define IDeckLinkDeckControl_v7_9_GetTimecodeString(This,currentTimeCode,error) (This)->lpVtbl->GetTimecodeString(This,currentTimeCode,error)
#define IDeckLinkDeckControl_v7_9_GetTimecode(This,currentTimecode,error) (This)->lpVtbl->GetTimecode(This,currentTimecode,error)
#define IDeckLinkDeckControl_v7_9_GetTimecodeBCD(This,currentTimecode,error) (This)->lpVtbl->GetTimecodeBCD(This,currentTimecode,error)
#define IDeckLinkDeckControl_v7_9_SetPreroll(This,prerollSeconds) (This)->lpVtbl->SetPreroll(This,prerollSeconds)
#define IDeckLinkDeckControl_v7_9_GetPreroll(This,prerollSeconds) (This)->lpVtbl->GetPreroll(This,prerollSeconds)
#define IDeckLinkDeckControl_v7_9_SetExportOffset(This,exportOffsetFields) (This)->lpVtbl->SetExportOffset(This,exportOffsetFields)
#define IDeckLinkDeckControl_v7_9_GetExportOffset(This,exportOffsetFields) (This)->lpVtbl->GetExportOffset(This,exportOffsetFields)
#define IDeckLinkDeckControl_v7_9_GetManualExportOffset(This,deckManualExportOffsetFields) (This)->lpVtbl->GetManualExportOffset(This,deckManualExportOffsetFields)
#define IDeckLinkDeckControl_v7_9_SetCaptureOffset(This,captureOffsetFields) (This)->lpVtbl->SetCaptureOffset(This,captureOffsetFields)
#define IDeckLinkDeckControl_v7_9_GetCaptureOffset(This,captureOffsetFields) (This)->lpVtbl->GetCaptureOffset(This,captureOffsetFields)
#define IDeckLinkDeckControl_v7_9_StartExport(This,inTimecode,outTimecode,exportModeOps,error) (This)->lpVtbl->StartExport(This,inTimecode,outTimecode,exportModeOps,error)
#define IDeckLinkDeckControl_v7_9_StartCapture(This,useVITC,inTimecode,outTimecode,error) (This)->lpVtbl->StartCapture(This,useVITC,inTimecode,outTimecode,error)
#define IDeckLinkDeckControl_v7_9_GetDeviceID(This,deviceId,error) (This)->lpVtbl->GetDeviceID(This,deviceId,error)
#define IDeckLinkDeckControl_v7_9_Abort(This) (This)->lpVtbl->Abort(This)
#define IDeckLinkDeckControl_v7_9_CrashRecordStart(This,error) (This)->lpVtbl->CrashRecordStart(This,error)
#define IDeckLinkDeckControl_v7_9_CrashRecordStop(This,error) (This)->lpVtbl->CrashRecordStop(This,error)
#define IDeckLinkDeckControl_v7_9_SetCallback(This,callback) (This)->lpVtbl->SetCallback(This,callback)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_QueryInterface(IDeckLinkDeckControl_v7_9* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDeckControl_v7_9_AddRef(IDeckLinkDeckControl_v7_9* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDeckControl_v7_9_Release(IDeckLinkDeckControl_v7_9* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDeckControl_v7_9 methods ***/
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_Open(IDeckLinkDeckControl_v7_9* This,BMDTimeScale timeScale,BMDTimeValue timeValue,BOOL timecodeIsDropFrame,BMDDeckControlError *error) {
    return This->lpVtbl->Open(This,timeScale,timeValue,timecodeIsDropFrame,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_Close(IDeckLinkDeckControl_v7_9* This,BOOL standbyOn) {
    return This->lpVtbl->Close(This,standbyOn);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_GetCurrentState(IDeckLinkDeckControl_v7_9* This,BMDDeckControlMode *mode,BMDDeckControlVTRControlState *vtrControlState,BMDDeckControlStatusFlags *flags) {
    return This->lpVtbl->GetCurrentState(This,mode,vtrControlState,flags);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_SetStandby(IDeckLinkDeckControl_v7_9* This,BOOL standbyOn) {
    return This->lpVtbl->SetStandby(This,standbyOn);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_Play(IDeckLinkDeckControl_v7_9* This,BMDDeckControlError *error) {
    return This->lpVtbl->Play(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_Stop(IDeckLinkDeckControl_v7_9* This,BMDDeckControlError *error) {
    return This->lpVtbl->Stop(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_TogglePlayStop(IDeckLinkDeckControl_v7_9* This,BMDDeckControlError *error) {
    return This->lpVtbl->TogglePlayStop(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_Eject(IDeckLinkDeckControl_v7_9* This,BMDDeckControlError *error) {
    return This->lpVtbl->Eject(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_GoToTimecode(IDeckLinkDeckControl_v7_9* This,BMDTimecodeBCD timecode,BMDDeckControlError *error) {
    return This->lpVtbl->GoToTimecode(This,timecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_FastForward(IDeckLinkDeckControl_v7_9* This,BOOL viewTape,BMDDeckControlError *error) {
    return This->lpVtbl->FastForward(This,viewTape,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_Rewind(IDeckLinkDeckControl_v7_9* This,BOOL viewTape,BMDDeckControlError *error) {
    return This->lpVtbl->Rewind(This,viewTape,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_StepForward(IDeckLinkDeckControl_v7_9* This,BMDDeckControlError *error) {
    return This->lpVtbl->StepForward(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_StepBack(IDeckLinkDeckControl_v7_9* This,BMDDeckControlError *error) {
    return This->lpVtbl->StepBack(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_Jog(IDeckLinkDeckControl_v7_9* This,double rate,BMDDeckControlError *error) {
    return This->lpVtbl->Jog(This,rate,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_Shuttle(IDeckLinkDeckControl_v7_9* This,double rate,BMDDeckControlError *error) {
    return This->lpVtbl->Shuttle(This,rate,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_GetTimecodeString(IDeckLinkDeckControl_v7_9* This,BSTR *currentTimeCode,BMDDeckControlError *error) {
    return This->lpVtbl->GetTimecodeString(This,currentTimeCode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_GetTimecode(IDeckLinkDeckControl_v7_9* This,IDeckLinkTimecode **currentTimecode,BMDDeckControlError *error) {
    return This->lpVtbl->GetTimecode(This,currentTimecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_GetTimecodeBCD(IDeckLinkDeckControl_v7_9* This,BMDTimecodeBCD *currentTimecode,BMDDeckControlError *error) {
    return This->lpVtbl->GetTimecodeBCD(This,currentTimecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_SetPreroll(IDeckLinkDeckControl_v7_9* This,unsigned int prerollSeconds) {
    return This->lpVtbl->SetPreroll(This,prerollSeconds);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_GetPreroll(IDeckLinkDeckControl_v7_9* This,unsigned int *prerollSeconds) {
    return This->lpVtbl->GetPreroll(This,prerollSeconds);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_SetExportOffset(IDeckLinkDeckControl_v7_9* This,int exportOffsetFields) {
    return This->lpVtbl->SetExportOffset(This,exportOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_GetExportOffset(IDeckLinkDeckControl_v7_9* This,int *exportOffsetFields) {
    return This->lpVtbl->GetExportOffset(This,exportOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_GetManualExportOffset(IDeckLinkDeckControl_v7_9* This,int *deckManualExportOffsetFields) {
    return This->lpVtbl->GetManualExportOffset(This,deckManualExportOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_SetCaptureOffset(IDeckLinkDeckControl_v7_9* This,int captureOffsetFields) {
    return This->lpVtbl->SetCaptureOffset(This,captureOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_GetCaptureOffset(IDeckLinkDeckControl_v7_9* This,int *captureOffsetFields) {
    return This->lpVtbl->GetCaptureOffset(This,captureOffsetFields);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_StartExport(IDeckLinkDeckControl_v7_9* This,BMDTimecodeBCD inTimecode,BMDTimecodeBCD outTimecode,BMDDeckControlExportModeOpsFlags exportModeOps,BMDDeckControlError *error) {
    return This->lpVtbl->StartExport(This,inTimecode,outTimecode,exportModeOps,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_StartCapture(IDeckLinkDeckControl_v7_9* This,BOOL useVITC,BMDTimecodeBCD inTimecode,BMDTimecodeBCD outTimecode,BMDDeckControlError *error) {
    return This->lpVtbl->StartCapture(This,useVITC,inTimecode,outTimecode,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_GetDeviceID(IDeckLinkDeckControl_v7_9* This,unsigned short *deviceId,BMDDeckControlError *error) {
    return This->lpVtbl->GetDeviceID(This,deviceId,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_Abort(IDeckLinkDeckControl_v7_9* This) {
    return This->lpVtbl->Abort(This);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_CrashRecordStart(IDeckLinkDeckControl_v7_9* This,BMDDeckControlError *error) {
    return This->lpVtbl->CrashRecordStart(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_CrashRecordStop(IDeckLinkDeckControl_v7_9* This,BMDDeckControlError *error) {
    return This->lpVtbl->CrashRecordStop(This,error);
}
static FORCEINLINE HRESULT IDeckLinkDeckControl_v7_9_SetCallback(IDeckLinkDeckControl_v7_9* This,IDeckLinkDeckControlStatusCallback *callback) {
    return This->lpVtbl->SetCallback(This,callback);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDeckControl_v7_9_INTERFACE_DEFINED__ */

typedef 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;
#ifndef __IDeckLinkDisplayModeIterator_v7_6_FWD_DEFINED__
#define __IDeckLinkDisplayModeIterator_v7_6_FWD_DEFINED__
typedef interface IDeckLinkDisplayModeIterator_v7_6 IDeckLinkDisplayModeIterator_v7_6;
#ifdef __cplusplus
interface IDeckLinkDisplayModeIterator_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDisplayMode_v7_6_FWD_DEFINED__
#define __IDeckLinkDisplayMode_v7_6_FWD_DEFINED__
typedef interface IDeckLinkDisplayMode_v7_6 IDeckLinkDisplayMode_v7_6;
#ifdef __cplusplus
interface IDeckLinkDisplayMode_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkOutput_v7_6_FWD_DEFINED__
#define __IDeckLinkOutput_v7_6_FWD_DEFINED__
typedef interface IDeckLinkOutput_v7_6 IDeckLinkOutput_v7_6;
#ifdef __cplusplus
interface IDeckLinkOutput_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_v7_6_FWD_DEFINED__
#define __IDeckLinkInput_v7_6_FWD_DEFINED__
typedef interface IDeckLinkInput_v7_6 IDeckLinkInput_v7_6;
#ifdef __cplusplus
interface IDeckLinkInput_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkTimecode_v7_6_FWD_DEFINED__
#define __IDeckLinkTimecode_v7_6_FWD_DEFINED__
typedef interface IDeckLinkTimecode_v7_6 IDeckLinkTimecode_v7_6;
#ifdef __cplusplus
interface IDeckLinkTimecode_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrame_v7_6_FWD_DEFINED__
#define __IDeckLinkVideoFrame_v7_6_FWD_DEFINED__
typedef interface IDeckLinkVideoFrame_v7_6 IDeckLinkVideoFrame_v7_6;
#ifdef __cplusplus
interface IDeckLinkVideoFrame_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkMutableVideoFrame_v7_6_FWD_DEFINED__
#define __IDeckLinkMutableVideoFrame_v7_6_FWD_DEFINED__
typedef interface IDeckLinkMutableVideoFrame_v7_6 IDeckLinkMutableVideoFrame_v7_6;
#ifdef __cplusplus
interface IDeckLinkMutableVideoFrame_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoInputFrame_v7_6_FWD_DEFINED__
#define __IDeckLinkVideoInputFrame_v7_6_FWD_DEFINED__
typedef interface IDeckLinkVideoInputFrame_v7_6 IDeckLinkVideoInputFrame_v7_6;
#ifdef __cplusplus
interface IDeckLinkVideoInputFrame_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkScreenPreviewCallback_v7_6_FWD_DEFINED__
#define __IDeckLinkScreenPreviewCallback_v7_6_FWD_DEFINED__
typedef interface IDeckLinkScreenPreviewCallback_v7_6 IDeckLinkScreenPreviewCallback_v7_6;
#ifdef __cplusplus
interface IDeckLinkScreenPreviewCallback_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
#define __IDeckLinkGLScreenPreviewHelper_v7_6_FWD_DEFINED__
typedef interface IDeckLinkGLScreenPreviewHelper_v7_6 IDeckLinkGLScreenPreviewHelper_v7_6;
#ifdef __cplusplus
interface IDeckLinkGLScreenPreviewHelper_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoConversion_v7_6_FWD_DEFINED__
#define __IDeckLinkVideoConversion_v7_6_FWD_DEFINED__
typedef interface IDeckLinkVideoConversion_v7_6 IDeckLinkVideoConversion_v7_6;
#ifdef __cplusplus
interface IDeckLinkVideoConversion_v7_6;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkConfiguration_v7_6_FWD_DEFINED__
#define __IDeckLinkConfiguration_v7_6_FWD_DEFINED__
typedef interface IDeckLinkConfiguration_v7_6 IDeckLinkConfiguration_v7_6;
#ifdef __cplusplus
interface IDeckLinkConfiguration_v7_6;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkVideoOutputCallback_v7_6 interface
 */
#ifndef __IDeckLinkVideoOutputCallback_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkVideoOutputCallback_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoOutputCallback_v7_6, 0xe763a626, 0x4a3c, 0x49d1, 0xbf,0x13, 0xe7,0xad,0x36,0x92,0xae,0x52);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("e763a626-4a3c-49d1-bf13-e7ad3692ae52")
IDeckLinkVideoOutputCallback_v7_6 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted(
        IDeckLinkVideoFrame_v7_6 *completedFrame,
        BMDOutputFrameCompletionResult result) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduledPlaybackHasStopped(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoOutputCallback_v7_6, 0xe763a626, 0x4a3c, 0x49d1, 0xbf,0x13, 0xe7,0xad,0x36,0x92,0xae,0x52)
#endif
#else
typedef struct IDeckLinkVideoOutputCallback_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoOutputCallback_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoOutputCallback_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoOutputCallback_v7_6 *This);

    /*** IDeckLinkVideoOutputCallback_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *ScheduledFrameCompleted)(
        IDeckLinkVideoOutputCallback_v7_6 *This,
        IDeckLinkVideoFrame_v7_6 *completedFrame,
        BMDOutputFrameCompletionResult result);

    HRESULT (STDMETHODCALLTYPE *ScheduledPlaybackHasStopped)(
        IDeckLinkVideoOutputCallback_v7_6 *This);

    END_INTERFACE
} IDeckLinkVideoOutputCallback_v7_6Vtbl;

interface IDeckLinkVideoOutputCallback_v7_6 {
    CONST_VTBL IDeckLinkVideoOutputCallback_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkVideoOutputCallback_v7_6 methods ***/
#define IDeckLinkVideoOutputCallback_v7_6_ScheduledFrameCompleted(This,completedFrame,result) (This)->lpVtbl->ScheduledFrameCompleted(This,completedFrame,result)
#define IDeckLinkVideoOutputCallback_v7_6_ScheduledPlaybackHasStopped(This) (This)->lpVtbl->ScheduledPlaybackHasStopped(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoOutputCallback_v7_6_QueryInterface(IDeckLinkVideoOutputCallback_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoOutputCallback_v7_6_AddRef(IDeckLinkVideoOutputCallback_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoOutputCallback_v7_6_Release(IDeckLinkVideoOutputCallback_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoOutputCallback_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoOutputCallback_v7_6_ScheduledFrameCompleted(IDeckLinkVideoOutputCallback_v7_6* This,IDeckLinkVideoFrame_v7_6 *completedFrame,BMDOutputFrameCompletionResult result) {
    return This->lpVtbl->ScheduledFrameCompleted(This,completedFrame,result);
}
static FORCEINLINE HRESULT IDeckLinkVideoOutputCallback_v7_6_ScheduledPlaybackHasStopped(IDeckLinkVideoOutputCallback_v7_6* This) {
    return This->lpVtbl->ScheduledPlaybackHasStopped(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoOutputCallback_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInputCallback_v7_6 interface
 */
#ifndef __IDeckLinkInputCallback_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkInputCallback_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInputCallback_v7_6, 0x31d28ee7, 0x88b6, 0x4cb1, 0x89,0x7a, 0xcd,0xbf,0x79,0xa2,0x64,0x14);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("31d28ee7-88b6-4cb1-897a-cdbf79a26414")
IDeckLinkInputCallback_v7_6 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged(
        BMDVideoInputFormatChangedEvents notificationEvents,
        IDeckLinkDisplayMode_v7_6 *newDisplayMode,
        BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(
        IDeckLinkVideoInputFrame_v7_6 *videoFrame,
        IDeckLinkAudioInputPacket *audioPacket) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInputCallback_v7_6, 0x31d28ee7, 0x88b6, 0x4cb1, 0x89,0x7a, 0xcd,0xbf,0x79,0xa2,0x64,0x14)
#endif
#else
typedef struct IDeckLinkInputCallback_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInputCallback_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInputCallback_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInputCallback_v7_6 *This);

    /*** IDeckLinkInputCallback_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *VideoInputFormatChanged)(
        IDeckLinkInputCallback_v7_6 *This,
        BMDVideoInputFormatChangedEvents notificationEvents,
        IDeckLinkDisplayMode_v7_6 *newDisplayMode,
        BMDDetectedVideoInputFormatFlags detectedSignalFlags);

    HRESULT (STDMETHODCALLTYPE *VideoInputFrameArrived)(
        IDeckLinkInputCallback_v7_6 *This,
        IDeckLinkVideoInputFrame_v7_6 *videoFrame,
        IDeckLinkAudioInputPacket *audioPacket);

    END_INTERFACE
} IDeckLinkInputCallback_v7_6Vtbl;

interface IDeckLinkInputCallback_v7_6 {
    CONST_VTBL IDeckLinkInputCallback_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkInputCallback_v7_6 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInputCallback_v7_6_QueryInterface(IDeckLinkInputCallback_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInputCallback_v7_6_AddRef(IDeckLinkInputCallback_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInputCallback_v7_6_Release(IDeckLinkInputCallback_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInputCallback_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkInputCallback_v7_6_VideoInputFormatChanged(IDeckLinkInputCallback_v7_6* This,BMDVideoInputFormatChangedEvents notificationEvents,IDeckLinkDisplayMode_v7_6 *newDisplayMode,BMDDetectedVideoInputFormatFlags detectedSignalFlags) {
    return This->lpVtbl->VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags);
}
static FORCEINLINE HRESULT IDeckLinkInputCallback_v7_6_VideoInputFrameArrived(IDeckLinkInputCallback_v7_6* This,IDeckLinkVideoInputFrame_v7_6 *videoFrame,IDeckLinkAudioInputPacket *audioPacket) {
    return This->lpVtbl->VideoInputFrameArrived(This,videoFrame,audioPacket);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInputCallback_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkDisplayModeIterator_v7_6 interface
 */
#ifndef __IDeckLinkDisplayModeIterator_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkDisplayModeIterator_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDisplayModeIterator_v7_6, 0x455d741f, 0x1779, 0x4800, 0x86,0xf5, 0x0b,0x5d,0x13,0xd7,0x97,0x51);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("455d741f-1779-4800-86f5-0b5d13d79751")
IDeckLinkDisplayModeIterator_v7_6 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        IDeckLinkDisplayMode_v7_6 **deckLinkDisplayMode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDisplayModeIterator_v7_6, 0x455d741f, 0x1779, 0x4800, 0x86,0xf5, 0x0b,0x5d,0x13,0xd7,0x97,0x51)
#endif
#else
typedef struct IDeckLinkDisplayModeIterator_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDisplayModeIterator_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDisplayModeIterator_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDisplayModeIterator_v7_6 *This);

    /*** IDeckLinkDisplayModeIterator_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IDeckLinkDisplayModeIterator_v7_6 *This,
        IDeckLinkDisplayMode_v7_6 **deckLinkDisplayMode);

    END_INTERFACE
} IDeckLinkDisplayModeIterator_v7_6Vtbl;

interface IDeckLinkDisplayModeIterator_v7_6 {
    CONST_VTBL IDeckLinkDisplayModeIterator_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDisplayModeIterator_v7_6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDisplayModeIterator_v7_6_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDisplayModeIterator_v7_6_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDisplayModeIterator_v7_6 methods ***/
#define IDeckLinkDisplayModeIterator_v7_6_Next(This,deckLinkDisplayMode) (This)->lpVtbl->Next(This,deckLinkDisplayMode)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayModeIterator_v7_6_QueryInterface(IDeckLinkDisplayModeIterator_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDisplayModeIterator_v7_6_AddRef(IDeckLinkDisplayModeIterator_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDisplayModeIterator_v7_6_Release(IDeckLinkDisplayModeIterator_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDisplayModeIterator_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayModeIterator_v7_6_Next(IDeckLinkDisplayModeIterator_v7_6* This,IDeckLinkDisplayMode_v7_6 **deckLinkDisplayMode) {
    return This->lpVtbl->Next(This,deckLinkDisplayMode);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDisplayModeIterator_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkDisplayMode_v7_6 interface
 */
#ifndef __IDeckLinkDisplayMode_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkDisplayMode_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDisplayMode_v7_6, 0x87451e84, 0x2b7e, 0x439e, 0xa6,0x29, 0x43,0x93,0xea,0x4a,0x85,0x50);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("87451e84-2b7e-439e-a629-4393ea4a8550")
IDeckLinkDisplayMode_v7_6 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetName(
        BSTR *name) = 0;

    virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetWidth(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetHeight(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrameRate(
        BMDTimeValue *frameDuration,
        BMDTimeScale *timeScale) = 0;

    virtual BMDFieldDominance STDMETHODCALLTYPE GetFieldDominance(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDisplayMode_v7_6, 0x87451e84, 0x2b7e, 0x439e, 0xa6,0x29, 0x43,0x93,0xea,0x4a,0x85,0x50)
#endif
#else
typedef struct IDeckLinkDisplayMode_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDisplayMode_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDisplayMode_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDisplayMode_v7_6 *This);

    /*** IDeckLinkDisplayMode_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetName)(
        IDeckLinkDisplayMode_v7_6 *This,
        BSTR *name);

    BMDDisplayMode (STDMETHODCALLTYPE *GetDisplayMode)(
        IDeckLinkDisplayMode_v7_6 *This);

    LONG (STDMETHODCALLTYPE *GetWidth)(
        IDeckLinkDisplayMode_v7_6 *This);

    LONG (STDMETHODCALLTYPE *GetHeight)(
        IDeckLinkDisplayMode_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *GetFrameRate)(
        IDeckLinkDisplayMode_v7_6 *This,
        BMDTimeValue *frameDuration,
        BMDTimeScale *timeScale);

    BMDFieldDominance (STDMETHODCALLTYPE *GetFieldDominance)(
        IDeckLinkDisplayMode_v7_6 *This);

    END_INTERFACE
} IDeckLinkDisplayMode_v7_6Vtbl;

interface IDeckLinkDisplayMode_v7_6 {
    CONST_VTBL IDeckLinkDisplayMode_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkDisplayMode_v7_6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkDisplayMode_v7_6_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkDisplayMode_v7_6_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkDisplayMode_v7_6 methods ***/
#define IDeckLinkDisplayMode_v7_6_GetName(This,name) (This)->lpVtbl->GetName(This,name)
#define IDeckLinkDisplayMode_v7_6_GetDisplayMode(This) (This)->lpVtbl->GetDisplayMode(This)
#define IDeckLinkDisplayMode_v7_6_GetWidth(This) (This)->lpVtbl->GetWidth(This)
#define IDeckLinkDisplayMode_v7_6_GetHeight(This) (This)->lpVtbl->GetHeight(This)
#define IDeckLinkDisplayMode_v7_6_GetFrameRate(This,frameDuration,timeScale) (This)->lpVtbl->GetFrameRate(This,frameDuration,timeScale)
#define IDeckLinkDisplayMode_v7_6_GetFieldDominance(This) (This)->lpVtbl->GetFieldDominance(This)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayMode_v7_6_QueryInterface(IDeckLinkDisplayMode_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDisplayMode_v7_6_AddRef(IDeckLinkDisplayMode_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDisplayMode_v7_6_Release(IDeckLinkDisplayMode_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDisplayMode_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayMode_v7_6_GetName(IDeckLinkDisplayMode_v7_6* This,BSTR *name) {
    return This->lpVtbl->GetName(This,name);
}
static FORCEINLINE BMDDisplayMode IDeckLinkDisplayMode_v7_6_GetDisplayMode(IDeckLinkDisplayMode_v7_6* This) {
    return This->lpVtbl->GetDisplayMode(This);
}
static FORCEINLINE LONG IDeckLinkDisplayMode_v7_6_GetWidth(IDeckLinkDisplayMode_v7_6* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkDisplayMode_v7_6_GetHeight(IDeckLinkDisplayMode_v7_6* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE HRESULT IDeckLinkDisplayMode_v7_6_GetFrameRate(IDeckLinkDisplayMode_v7_6* This,BMDTimeValue *frameDuration,BMDTimeScale *timeScale) {
    return This->lpVtbl->GetFrameRate(This,frameDuration,timeScale);
}
static FORCEINLINE BMDFieldDominance IDeckLinkDisplayMode_v7_6_GetFieldDominance(IDeckLinkDisplayMode_v7_6* This) {
    return This->lpVtbl->GetFieldDominance(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDisplayMode_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkOutput_v7_6 interface
 */
#ifndef __IDeckLinkOutput_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkOutput_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkOutput_v7_6, 0x29228142, 0xeb8c, 0x4141, 0xa6,0x21, 0xf7,0x40,0x26,0x45,0x09,0x55);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("29228142-eb8c-4141-a621-f74026450955")
IDeckLinkOutput_v7_6 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback_v7_6 *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput(
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame(
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame_v7_6 **outFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData(
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync(
        IDeckLinkVideoFrame_v7_6 *theFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame(
        IDeckLinkVideoFrame_v7_6 *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback(
        IDeckLinkVideoOutputCallback_v7_6 *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount(
        unsigned int *bufferedFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync(
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples(
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount(
        unsigned int *bufferedSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAudioCallback(
        IDeckLinkAudioOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback(
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback(
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning(
        BOOL *active) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *streamTime,
        double *playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkOutput_v7_6, 0x29228142, 0xeb8c, 0x4141, 0xa6,0x21, 0xf7,0x40,0x26,0x45,0x09,0x55)
#endif
#else
typedef struct IDeckLinkOutput_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkOutput_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkOutput_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkOutput_v7_6 *This);

    /*** IDeckLinkOutput_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkOutput_v7_6 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkOutput_v7_6 *This,
        IDeckLinkDisplayModeIterator_v7_6 **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkOutput_v7_6 *This,
        IDeckLinkScreenPreviewCallback_v7_6 *previewCallback);

    HRESULT (STDMETHODCALLTYPE *EnableVideoOutput)(
        IDeckLinkOutput_v7_6 *This,
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags);

    HRESULT (STDMETHODCALLTYPE *DisableVideoOutput)(
        IDeckLinkOutput_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator)(
        IDeckLinkOutput_v7_6 *This,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *CreateVideoFrame)(
        IDeckLinkOutput_v7_6 *This,
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame_v7_6 **outFrame);

    HRESULT (STDMETHODCALLTYPE *CreateAncillaryData)(
        IDeckLinkOutput_v7_6 *This,
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer);

    HRESULT (STDMETHODCALLTYPE *DisplayVideoFrameSync)(
        IDeckLinkOutput_v7_6 *This,
        IDeckLinkVideoFrame_v7_6 *theFrame);

    HRESULT (STDMETHODCALLTYPE *ScheduleVideoFrame)(
        IDeckLinkOutput_v7_6 *This,
        IDeckLinkVideoFrame_v7_6 *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback)(
        IDeckLinkOutput_v7_6 *This,
        IDeckLinkVideoOutputCallback_v7_6 *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetBufferedVideoFrameCount)(
        IDeckLinkOutput_v7_6 *This,
        unsigned int *bufferedFrameCount);

    HRESULT (STDMETHODCALLTYPE *EnableAudioOutput)(
        IDeckLinkOutput_v7_6 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType);

    HRESULT (STDMETHODCALLTYPE *DisableAudioOutput)(
        IDeckLinkOutput_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *WriteAudioSamplesSync)(
        IDeckLinkOutput_v7_6 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *BeginAudioPreroll)(
        IDeckLinkOutput_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *EndAudioPreroll)(
        IDeckLinkOutput_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *ScheduleAudioSamples)(
        IDeckLinkOutput_v7_6 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount)(
        IDeckLinkOutput_v7_6 *This,
        unsigned int *bufferedSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *FlushBufferedAudioSamples)(
        IDeckLinkOutput_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *SetAudioCallback)(
        IDeckLinkOutput_v7_6 *This,
        IDeckLinkAudioOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *StartScheduledPlayback)(
        IDeckLinkOutput_v7_6 *This,
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *StopScheduledPlayback)(
        IDeckLinkOutput_v7_6 *This,
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *IsScheduledPlaybackRunning)(
        IDeckLinkOutput_v7_6 *This,
        BOOL *active);

    HRESULT (STDMETHODCALLTYPE *GetScheduledStreamTime)(
        IDeckLinkOutput_v7_6 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *streamTime,
        double *playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkOutput_v7_6 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    END_INTERFACE
} IDeckLinkOutput_v7_6Vtbl;

interface IDeckLinkOutput_v7_6 {
    CONST_VTBL IDeckLinkOutput_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkOutput_v7_6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkOutput_v7_6_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkOutput_v7_6_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkOutput_v7_6 methods ***/
#define IDeckLinkOutput_v7_6_DoesSupportVideoMode(This,displayMode,pixelFormat,result) (This)->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,result)
#define IDeckLinkOutput_v7_6_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkOutput_v7_6_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkOutput_v7_6_EnableVideoOutput(This,displayMode,flags) (This)->lpVtbl->EnableVideoOutput(This,displayMode,flags)
#define IDeckLinkOutput_v7_6_DisableVideoOutput(This) (This)->lpVtbl->DisableVideoOutput(This)
#define IDeckLinkOutput_v7_6_SetVideoOutputFrameMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator)
#define IDeckLinkOutput_v7_6_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) (This)->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)
#define IDeckLinkOutput_v7_6_CreateAncillaryData(This,pixelFormat,outBuffer) (This)->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer)
#define IDeckLinkOutput_v7_6_DisplayVideoFrameSync(This,theFrame) (This)->lpVtbl->DisplayVideoFrameSync(This,theFrame)
#define IDeckLinkOutput_v7_6_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) (This)->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)
#define IDeckLinkOutput_v7_6_SetScheduledFrameCompletionCallback(This,theCallback) (This)->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback)
#define IDeckLinkOutput_v7_6_GetBufferedVideoFrameCount(This,bufferedFrameCount) (This)->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount)
#define IDeckLinkOutput_v7_6_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) (This)->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType)
#define IDeckLinkOutput_v7_6_DisableAudioOutput(This) (This)->lpVtbl->DisableAudioOutput(This)
#define IDeckLinkOutput_v7_6_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) (This)->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)
#define IDeckLinkOutput_v7_6_BeginAudioPreroll(This) (This)->lpVtbl->BeginAudioPreroll(This)
#define IDeckLinkOutput_v7_6_EndAudioPreroll(This) (This)->lpVtbl->EndAudioPreroll(This)
#define IDeckLinkOutput_v7_6_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) (This)->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)
#define IDeckLinkOutput_v7_6_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) (This)->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount)
#define IDeckLinkOutput_v7_6_FlushBufferedAudioSamples(This) (This)->lpVtbl->FlushBufferedAudioSamples(This)
#define IDeckLinkOutput_v7_6_SetAudioCallback(This,theCallback) (This)->lpVtbl->SetAudioCallback(This,theCallback)
#define IDeckLinkOutput_v7_6_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) (This)->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)
#define IDeckLinkOutput_v7_6_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) (This)->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)
#define IDeckLinkOutput_v7_6_IsScheduledPlaybackRunning(This,active) (This)->lpVtbl->IsScheduledPlaybackRunning(This,active)
#define IDeckLinkOutput_v7_6_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) (This)->lpVtbl->GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed)
#define IDeckLinkOutput_v7_6_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_QueryInterface(IDeckLinkOutput_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkOutput_v7_6_AddRef(IDeckLinkOutput_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkOutput_v7_6_Release(IDeckLinkOutput_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkOutput_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_DoesSupportVideoMode(IDeckLinkOutput_v7_6* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDDisplayModeSupport_v10_11 *result) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,result);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_GetDisplayModeIterator(IDeckLinkOutput_v7_6* This,IDeckLinkDisplayModeIterator_v7_6 **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_SetScreenPreviewCallback(IDeckLinkOutput_v7_6* This,IDeckLinkScreenPreviewCallback_v7_6 *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_EnableVideoOutput(IDeckLinkOutput_v7_6* This,BMDDisplayMode displayMode,BMDVideoOutputFlags flags) {
    return This->lpVtbl->EnableVideoOutput(This,displayMode,flags);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_DisableVideoOutput(IDeckLinkOutput_v7_6* This) {
    return This->lpVtbl->DisableVideoOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_SetVideoOutputFrameMemoryAllocator(IDeckLinkOutput_v7_6* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_CreateVideoFrame(IDeckLinkOutput_v7_6* This,int width,int height,int rowBytes,BMDPixelFormat pixelFormat,BMDFrameFlags flags,IDeckLinkMutableVideoFrame_v7_6 **outFrame) {
    return This->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_CreateAncillaryData(IDeckLinkOutput_v7_6* This,BMDPixelFormat pixelFormat,IDeckLinkVideoFrameAncillary **outBuffer) {
    return This->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_DisplayVideoFrameSync(IDeckLinkOutput_v7_6* This,IDeckLinkVideoFrame_v7_6 *theFrame) {
    return This->lpVtbl->DisplayVideoFrameSync(This,theFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_ScheduleVideoFrame(IDeckLinkOutput_v7_6* This,IDeckLinkVideoFrame_v7_6 *theFrame,BMDTimeValue displayTime,BMDTimeValue displayDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_SetScheduledFrameCompletionCallback(IDeckLinkOutput_v7_6* This,IDeckLinkVideoOutputCallback_v7_6 *theCallback) {
    return This->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_GetBufferedVideoFrameCount(IDeckLinkOutput_v7_6* This,unsigned int *bufferedFrameCount) {
    return This->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_EnableAudioOutput(IDeckLinkOutput_v7_6* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount,BMDAudioOutputStreamType streamType) {
    return This->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_DisableAudioOutput(IDeckLinkOutput_v7_6* This) {
    return This->lpVtbl->DisableAudioOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_WriteAudioSamplesSync(IDeckLinkOutput_v7_6* This,void *buffer,unsigned int sampleFrameCount,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_BeginAudioPreroll(IDeckLinkOutput_v7_6* This) {
    return This->lpVtbl->BeginAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_EndAudioPreroll(IDeckLinkOutput_v7_6* This) {
    return This->lpVtbl->EndAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_ScheduleAudioSamples(IDeckLinkOutput_v7_6* This,void *buffer,unsigned int sampleFrameCount,BMDTimeValue streamTime,BMDTimeScale timeScale,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_GetBufferedAudioSampleFrameCount(IDeckLinkOutput_v7_6* This,unsigned int *bufferedSampleFrameCount) {
    return This->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_FlushBufferedAudioSamples(IDeckLinkOutput_v7_6* This) {
    return This->lpVtbl->FlushBufferedAudioSamples(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_SetAudioCallback(IDeckLinkOutput_v7_6* This,IDeckLinkAudioOutputCallback *theCallback) {
    return This->lpVtbl->SetAudioCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_StartScheduledPlayback(IDeckLinkOutput_v7_6* This,BMDTimeValue playbackStartTime,BMDTimeScale timeScale,double playbackSpeed) {
    return This->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_StopScheduledPlayback(IDeckLinkOutput_v7_6* This,BMDTimeValue stopPlaybackAtTime,BMDTimeValue *actualStopTime,BMDTimeScale timeScale) {
    return This->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_IsScheduledPlaybackRunning(IDeckLinkOutput_v7_6* This,BOOL *active) {
    return This->lpVtbl->IsScheduledPlaybackRunning(This,active);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_GetScheduledStreamTime(IDeckLinkOutput_v7_6* This,BMDTimeScale desiredTimeScale,BMDTimeValue *streamTime,double *playbackSpeed) {
    return This->lpVtbl->GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_6_GetHardwareReferenceClock(IDeckLinkOutput_v7_6* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkOutput_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInput_v7_6 interface
 */
#ifndef __IDeckLinkInput_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkInput_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInput_v7_6, 0x300c135a, 0x9f43, 0x48e2, 0x99,0x06, 0x6d,0x79,0x11,0xd9,0x3c,0xf1);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("300c135a-9f43-48e2-9906-6d7911d93cf1")
IDeckLinkInput_v7_6 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback_v7_6 *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoInput(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount(
        unsigned int *availableFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioInput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount(
        unsigned int *availableSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkInputCallback_v7_6 *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInput_v7_6, 0x300c135a, 0x9f43, 0x48e2, 0x99,0x06, 0x6d,0x79,0x11,0xd9,0x3c,0xf1)
#endif
#else
typedef struct IDeckLinkInput_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInput_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInput_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInput_v7_6 *This);

    /*** IDeckLinkInput_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkInput_v7_6 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkInput_v7_6 *This,
        IDeckLinkDisplayModeIterator_v7_6 **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkInput_v7_6 *This,
        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,
        unsigned int *availableFrameCount);

    HRESULT (STDMETHODCALLTYPE *EnableAudioInput)(
        IDeckLinkInput_v7_6 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioInput)(
        IDeckLinkInput_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount)(
        IDeckLinkInput_v7_6 *This,
        unsigned int *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,
        IDeckLinkInputCallback_v7_6 *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkInput_v7_6 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *hardwareTime,
        BMDTimeValue *timeInFrame,
        BMDTimeValue *ticksPerFrame);

    END_INTERFACE
} IDeckLinkInput_v7_6Vtbl;

interface IDeckLinkInput_v7_6 {
    CONST_VTBL IDeckLinkInput_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkInput_v7_6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkInput_v7_6_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkInput_v7_6_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkInput_v7_6 methods ***/
#define IDeckLinkInput_v7_6_DoesSupportVideoMode(This,displayMode,pixelFormat,result) (This)->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,result)
#define IDeckLinkInput_v7_6_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkInput_v7_6_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkInput_v7_6_EnableVideoInput(This,displayMode,pixelFormat,flags) (This)->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags)
#define IDeckLinkInput_v7_6_DisableVideoInput(This) (This)->lpVtbl->DisableVideoInput(This)
#define IDeckLinkInput_v7_6_GetAvailableVideoFrameCount(This,availableFrameCount) (This)->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount)
#define IDeckLinkInput_v7_6_EnableAudioInput(This,sampleRate,sampleType,channelCount) (This)->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount)
#define IDeckLinkInput_v7_6_DisableAudioInput(This) (This)->lpVtbl->DisableAudioInput(This)
#define IDeckLinkInput_v7_6_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) (This)->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)
#define IDeckLinkInput_v7_6_StartStreams(This) (This)->lpVtbl->StartStreams(This)
#define IDeckLinkInput_v7_6_StopStreams(This) (This)->lpVtbl->StopStreams(This)
#define IDeckLinkInput_v7_6_PauseStreams(This) (This)->lpVtbl->PauseStreams(This)
#define IDeckLinkInput_v7_6_FlushStreams(This) (This)->lpVtbl->FlushStreams(This)
#define IDeckLinkInput_v7_6_SetCallback(This,theCallback) (This)->lpVtbl->SetCallback(This,theCallback)
#define IDeckLinkInput_v7_6_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_QueryInterface(IDeckLinkInput_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInput_v7_6_AddRef(IDeckLinkInput_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInput_v7_6_Release(IDeckLinkInput_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInput_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_DoesSupportVideoMode(IDeckLinkInput_v7_6* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDDisplayModeSupport_v10_11 *result) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,result);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_GetDisplayModeIterator(IDeckLinkInput_v7_6* This,IDeckLinkDisplayModeIterator_v7_6 **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_SetScreenPreviewCallback(IDeckLinkInput_v7_6* This,IDeckLinkScreenPreviewCallback_v7_6 *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_EnableVideoInput(IDeckLinkInput_v7_6* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags) {
    return This->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_DisableVideoInput(IDeckLinkInput_v7_6* This) {
    return This->lpVtbl->DisableVideoInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_GetAvailableVideoFrameCount(IDeckLinkInput_v7_6* This,unsigned int *availableFrameCount) {
    return This->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_EnableAudioInput(IDeckLinkInput_v7_6* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_DisableAudioInput(IDeckLinkInput_v7_6* This) {
    return This->lpVtbl->DisableAudioInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_GetAvailableAudioSampleFrameCount(IDeckLinkInput_v7_6* This,unsigned int *availableSampleFrameCount) {
    return This->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_StartStreams(IDeckLinkInput_v7_6* This) {
    return This->lpVtbl->StartStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_StopStreams(IDeckLinkInput_v7_6* This) {
    return This->lpVtbl->StopStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_PauseStreams(IDeckLinkInput_v7_6* This) {
    return This->lpVtbl->PauseStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_FlushStreams(IDeckLinkInput_v7_6* This) {
    return This->lpVtbl->FlushStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_SetCallback(IDeckLinkInput_v7_6* This,IDeckLinkInputCallback_v7_6 *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_6_GetHardwareReferenceClock(IDeckLinkInput_v7_6* This,BMDTimeScale desiredTimeScale,BMDTimeValue *hardwareTime,BMDTimeValue *timeInFrame,BMDTimeValue *ticksPerFrame) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInput_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkTimecode_v7_6 interface
 */
#ifndef __IDeckLinkTimecode_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkTimecode_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkTimecode_v7_6, 0xefb9bca6, 0xa521, 0x44f7, 0xbd,0x69, 0x23,0x32,0xf2,0x4d,0x9e,0xe6);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("efb9bca6-a521-44f7-bd69-2332f24d9ee6")
IDeckLinkTimecode_v7_6 : public IUnknown
{
    virtual BMDTimecodeBCD STDMETHODCALLTYPE GetBCD(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetComponents(
        unsigned char *hours,
        unsigned char *minutes,
        unsigned char *seconds,
        unsigned char *frames) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        BSTR *timecode) = 0;

    virtual BMDTimecodeFlags STDMETHODCALLTYPE GetFlags(
        ) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkTimecode_v7_6, 0xefb9bca6, 0xa521, 0x44f7, 0xbd,0x69, 0x23,0x32,0xf2,0x4d,0x9e,0xe6)
#endif
#else
typedef struct IDeckLinkTimecode_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkTimecode_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkTimecode_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkTimecode_v7_6 *This);

    /*** IDeckLinkTimecode_v7_6 methods ***/
    BMDTimecodeBCD (STDMETHODCALLTYPE *GetBCD)(
        IDeckLinkTimecode_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *GetComponents)(
        IDeckLinkTimecode_v7_6 *This,
        unsigned char *hours,
        unsigned char *minutes,
        unsigned char *seconds,
        unsigned char *frames);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        IDeckLinkTimecode_v7_6 *This,
        BSTR *timecode);

    BMDTimecodeFlags (STDMETHODCALLTYPE *GetFlags)(
        IDeckLinkTimecode_v7_6 *This);

    END_INTERFACE
} IDeckLinkTimecode_v7_6Vtbl;

interface IDeckLinkTimecode_v7_6 {
    CONST_VTBL IDeckLinkTimecode_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkTimecode_v7_6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkTimecode_v7_6_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkTimecode_v7_6_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkTimecode_v7_6 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkTimecode_v7_6_QueryInterface(IDeckLinkTimecode_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkTimecode_v7_6_AddRef(IDeckLinkTimecode_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkTimecode_v7_6_Release(IDeckLinkTimecode_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkTimecode_v7_6 methods ***/
static FORCEINLINE BMDTimecodeBCD IDeckLinkTimecode_v7_6_GetBCD(IDeckLinkTimecode_v7_6* This) {
    return This->lpVtbl->GetBCD(This);
}
static FORCEINLINE HRESULT IDeckLinkTimecode_v7_6_GetComponents(IDeckLinkTimecode_v7_6* This,unsigned char *hours,unsigned char *minutes,unsigned char *seconds,unsigned char *frames) {
    return This->lpVtbl->GetComponents(This,hours,minutes,seconds,frames);
}
static FORCEINLINE HRESULT IDeckLinkTimecode_v7_6_GetString(IDeckLinkTimecode_v7_6* This,BSTR *timecode) {
    return This->lpVtbl->GetString(This,timecode);
}
static FORCEINLINE BMDTimecodeFlags IDeckLinkTimecode_v7_6_GetFlags(IDeckLinkTimecode_v7_6* This) {
    return This->lpVtbl->GetFlags(This);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkTimecode_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoFrame_v7_6 interface
 */
#ifndef __IDeckLinkVideoFrame_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkVideoFrame_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoFrame_v7_6, 0xa8d8238e, 0x6b18, 0x4196, 0x99,0xe1, 0x5a,0xf7,0x17,0xb8,0x3d,0x32);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("a8d8238e-6b18-4196-99e1-5af717b83d32")
IDeckLinkVideoFrame_v7_6 : public IUnknown
{
    virtual LONG STDMETHODCALLTYPE GetWidth(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetHeight(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetRowBytes(
        ) = 0;

    virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat(
        ) = 0;

    virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        void **buffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetTimecode(
        BMDTimecodeFormat format,
        IDeckLinkTimecode_v7_6 **timecode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAncillaryData(
        IDeckLinkVideoFrameAncillary **ancillary) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoFrame_v7_6, 0xa8d8238e, 0x6b18, 0x4196, 0x99,0xe1, 0x5a,0xf7,0x17,0xb8,0x3d,0x32)
#endif
#else
typedef struct IDeckLinkVideoFrame_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoFrame_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoFrame_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoFrame_v7_6 *This);

    /*** IDeckLinkVideoFrame_v7_6 methods ***/
    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,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkVideoFrame_v7_6 *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode_v7_6 **timecode);

    HRESULT (STDMETHODCALLTYPE *GetAncillaryData)(
        IDeckLinkVideoFrame_v7_6 *This,
        IDeckLinkVideoFrameAncillary **ancillary);

    END_INTERFACE
} IDeckLinkVideoFrame_v7_6Vtbl;

interface IDeckLinkVideoFrame_v7_6 {
    CONST_VTBL IDeckLinkVideoFrame_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkVideoFrame_v7_6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkVideoFrame_v7_6_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkVideoFrame_v7_6_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoFrame_v7_6 methods ***/
#define IDeckLinkVideoFrame_v7_6_GetWidth(This) (This)->lpVtbl->GetWidth(This)
#define IDeckLinkVideoFrame_v7_6_GetHeight(This) (This)->lpVtbl->GetHeight(This)
#define IDeckLinkVideoFrame_v7_6_GetRowBytes(This) (This)->lpVtbl->GetRowBytes(This)
#define IDeckLinkVideoFrame_v7_6_GetPixelFormat(This) (This)->lpVtbl->GetPixelFormat(This)
#define IDeckLinkVideoFrame_v7_6_GetFlags(This) (This)->lpVtbl->GetFlags(This)
#define IDeckLinkVideoFrame_v7_6_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IDeckLinkVideoFrame_v7_6_GetTimecode(This,format,timecode) (This)->lpVtbl->GetTimecode(This,format,timecode)
#define IDeckLinkVideoFrame_v7_6_GetAncillaryData(This,ancillary) (This)->lpVtbl->GetAncillaryData(This,ancillary)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrame_v7_6_QueryInterface(IDeckLinkVideoFrame_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoFrame_v7_6_AddRef(IDeckLinkVideoFrame_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoFrame_v7_6_Release(IDeckLinkVideoFrame_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrame_v7_6 methods ***/
static FORCEINLINE LONG IDeckLinkVideoFrame_v7_6_GetWidth(IDeckLinkVideoFrame_v7_6* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkVideoFrame_v7_6_GetHeight(IDeckLinkVideoFrame_v7_6* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE LONG IDeckLinkVideoFrame_v7_6_GetRowBytes(IDeckLinkVideoFrame_v7_6* This) {
    return This->lpVtbl->GetRowBytes(This);
}
static FORCEINLINE BMDPixelFormat IDeckLinkVideoFrame_v7_6_GetPixelFormat(IDeckLinkVideoFrame_v7_6* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE BMDFrameFlags IDeckLinkVideoFrame_v7_6_GetFlags(IDeckLinkVideoFrame_v7_6* This) {
    return This->lpVtbl->GetFlags(This);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrame_v7_6_GetBytes(IDeckLinkVideoFrame_v7_6* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrame_v7_6_GetTimecode(IDeckLinkVideoFrame_v7_6* This,BMDTimecodeFormat format,IDeckLinkTimecode_v7_6 **timecode) {
    return This->lpVtbl->GetTimecode(This,format,timecode);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrame_v7_6_GetAncillaryData(IDeckLinkVideoFrame_v7_6* This,IDeckLinkVideoFrameAncillary **ancillary) {
    return This->lpVtbl->GetAncillaryData(This,ancillary);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoFrame_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkMutableVideoFrame_v7_6 interface
 */
#ifndef __IDeckLinkMutableVideoFrame_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkMutableVideoFrame_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkMutableVideoFrame_v7_6, 0x46fcee00, 0xb4e6, 0x43d0, 0x91,0xc0, 0x02,0x3a,0x7f,0xce,0xb3,0x4f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("46fcee00-b4e6-43d0-91c0-023a7fceb34f")
IDeckLinkMutableVideoFrame_v7_6 : public IDeckLinkVideoFrame_v7_6
{
    virtual HRESULT STDMETHODCALLTYPE SetFlags(
        BMDFrameFlags newFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTimecode(
        BMDTimecodeFormat format,
        IDeckLinkTimecode_v7_6 *timecode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetTimecodeFromComponents(
        BMDTimecodeFormat format,
        unsigned char hours,
        unsigned char minutes,
        unsigned char seconds,
        unsigned char frames,
        BMDTimecodeFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAncillaryData(
        IDeckLinkVideoFrameAncillary *ancillary) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkMutableVideoFrame_v7_6, 0x46fcee00, 0xb4e6, 0x43d0, 0x91,0xc0, 0x02,0x3a,0x7f,0xce,0xb3,0x4f)
#endif
#else
typedef struct IDeckLinkMutableVideoFrame_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkMutableVideoFrame_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkMutableVideoFrame_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkMutableVideoFrame_v7_6 *This);

    /*** IDeckLinkVideoFrame_v7_6 methods ***/
    LONG (STDMETHODCALLTYPE *GetWidth)(
        IDeckLinkMutableVideoFrame_v7_6 *This);

    LONG (STDMETHODCALLTYPE *GetHeight)(
        IDeckLinkMutableVideoFrame_v7_6 *This);

    LONG (STDMETHODCALLTYPE *GetRowBytes)(
        IDeckLinkMutableVideoFrame_v7_6 *This);

    BMDPixelFormat (STDMETHODCALLTYPE *GetPixelFormat)(
        IDeckLinkMutableVideoFrame_v7_6 *This);

    BMDFrameFlags (STDMETHODCALLTYPE *GetFlags)(
        IDeckLinkMutableVideoFrame_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *GetBytes)(
        IDeckLinkMutableVideoFrame_v7_6 *This,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkMutableVideoFrame_v7_6 *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode_v7_6 **timecode);

    HRESULT (STDMETHODCALLTYPE *GetAncillaryData)(
        IDeckLinkMutableVideoFrame_v7_6 *This,
        IDeckLinkVideoFrameAncillary **ancillary);

    /*** IDeckLinkMutableVideoFrame_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *SetFlags)(
        IDeckLinkMutableVideoFrame_v7_6 *This,
        BMDFrameFlags newFlags);

    HRESULT (STDMETHODCALLTYPE *SetTimecode)(
        IDeckLinkMutableVideoFrame_v7_6 *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode_v7_6 *timecode);

    HRESULT (STDMETHODCALLTYPE *SetTimecodeFromComponents)(
        IDeckLinkMutableVideoFrame_v7_6 *This,
        BMDTimecodeFormat format,
        unsigned char hours,
        unsigned char minutes,
        unsigned char seconds,
        unsigned char frames,
        BMDTimecodeFlags flags);

    HRESULT (STDMETHODCALLTYPE *SetAncillaryData)(
        IDeckLinkMutableVideoFrame_v7_6 *This,
        IDeckLinkVideoFrameAncillary *ancillary);

    END_INTERFACE
} IDeckLinkMutableVideoFrame_v7_6Vtbl;

interface IDeckLinkMutableVideoFrame_v7_6 {
    CONST_VTBL IDeckLinkMutableVideoFrame_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkMutableVideoFrame_v7_6_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkMutableVideoFrame_v7_6_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkMutableVideoFrame_v7_6_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoFrame_v7_6 methods ***/
#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)
/*** IDeckLinkMutableVideoFrame_v7_6 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_v7_6_QueryInterface(IDeckLinkMutableVideoFrame_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkMutableVideoFrame_v7_6_AddRef(IDeckLinkMutableVideoFrame_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkMutableVideoFrame_v7_6_Release(IDeckLinkMutableVideoFrame_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrame_v7_6 methods ***/
static FORCEINLINE LONG IDeckLinkMutableVideoFrame_v7_6_GetWidth(IDeckLinkMutableVideoFrame_v7_6* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkMutableVideoFrame_v7_6_GetHeight(IDeckLinkMutableVideoFrame_v7_6* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE LONG IDeckLinkMutableVideoFrame_v7_6_GetRowBytes(IDeckLinkMutableVideoFrame_v7_6* This) {
    return This->lpVtbl->GetRowBytes(This);
}
static FORCEINLINE BMDPixelFormat IDeckLinkMutableVideoFrame_v7_6_GetPixelFormat(IDeckLinkMutableVideoFrame_v7_6* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE BMDFrameFlags IDeckLinkMutableVideoFrame_v7_6_GetFlags(IDeckLinkMutableVideoFrame_v7_6* This) {
    return This->lpVtbl->GetFlags(This);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_v7_6_GetBytes(IDeckLinkMutableVideoFrame_v7_6* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_v7_6_GetTimecode(IDeckLinkMutableVideoFrame_v7_6* This,BMDTimecodeFormat format,IDeckLinkTimecode_v7_6 **timecode) {
    return This->lpVtbl->GetTimecode(This,format,timecode);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_v7_6_GetAncillaryData(IDeckLinkMutableVideoFrame_v7_6* This,IDeckLinkVideoFrameAncillary **ancillary) {
    return This->lpVtbl->GetAncillaryData(This,ancillary);
}
/*** IDeckLinkMutableVideoFrame_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_v7_6_SetFlags(IDeckLinkMutableVideoFrame_v7_6* This,BMDFrameFlags newFlags) {
    return This->lpVtbl->SetFlags(This,newFlags);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_v7_6_SetTimecode(IDeckLinkMutableVideoFrame_v7_6* This,BMDTimecodeFormat format,IDeckLinkTimecode_v7_6 *timecode) {
    return This->lpVtbl->SetTimecode(This,format,timecode);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_v7_6_SetTimecodeFromComponents(IDeckLinkMutableVideoFrame_v7_6* This,BMDTimecodeFormat format,unsigned char hours,unsigned char minutes,unsigned char seconds,unsigned char frames,BMDTimecodeFlags flags) {
    return This->lpVtbl->SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags);
}
static FORCEINLINE HRESULT IDeckLinkMutableVideoFrame_v7_6_SetAncillaryData(IDeckLinkMutableVideoFrame_v7_6* This,IDeckLinkVideoFrameAncillary *ancillary) {
    return This->lpVtbl->SetAncillaryData(This,ancillary);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkMutableVideoFrame_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoInputFrame_v7_6 interface
 */
#ifndef __IDeckLinkVideoInputFrame_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkVideoInputFrame_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoInputFrame_v7_6, 0x9a74fa41, 0xae9f, 0x47ac, 0x8c,0xf4, 0x01,0xf4,0x2d,0xd5,0x99,0x65);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("9a74fa41-ae9f-47ac-8cf4-01f42dd59965")
IDeckLinkVideoInputFrame_v7_6 : public IDeckLinkVideoFrame_v7_6
{
    virtual HRESULT STDMETHODCALLTYPE GetStreamTime(
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceTimestamp(
        BMDTimeScale timeScale,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoInputFrame_v7_6, 0x9a74fa41, 0xae9f, 0x47ac, 0x8c,0xf4, 0x01,0xf4,0x2d,0xd5,0x99,0x65)
#endif
#else
typedef struct IDeckLinkVideoInputFrame_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoInputFrame_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoInputFrame_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoInputFrame_v7_6 *This);

    /*** IDeckLinkVideoFrame_v7_6 methods ***/
    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,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkVideoInputFrame_v7_6 *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode_v7_6 **timecode);

    HRESULT (STDMETHODCALLTYPE *GetAncillaryData)(
        IDeckLinkVideoInputFrame_v7_6 *This,
        IDeckLinkVideoFrameAncillary **ancillary);

    /*** IDeckLinkVideoInputFrame_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetStreamTime)(
        IDeckLinkVideoInputFrame_v7_6 *This,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceTimestamp)(
        IDeckLinkVideoInputFrame_v7_6 *This,
        BMDTimeScale timeScale,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration);

    END_INTERFACE
} IDeckLinkVideoInputFrame_v7_6Vtbl;

interface IDeckLinkVideoInputFrame_v7_6 {
    CONST_VTBL IDeckLinkVideoInputFrame_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkVideoFrame_v7_6 methods ***/
#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)
/*** IDeckLinkVideoInputFrame_v7_6 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_6_QueryInterface(IDeckLinkVideoInputFrame_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoInputFrame_v7_6_AddRef(IDeckLinkVideoInputFrame_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoInputFrame_v7_6_Release(IDeckLinkVideoInputFrame_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrame_v7_6 methods ***/
static FORCEINLINE LONG IDeckLinkVideoInputFrame_v7_6_GetWidth(IDeckLinkVideoInputFrame_v7_6* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkVideoInputFrame_v7_6_GetHeight(IDeckLinkVideoInputFrame_v7_6* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE LONG IDeckLinkVideoInputFrame_v7_6_GetRowBytes(IDeckLinkVideoInputFrame_v7_6* This) {
    return This->lpVtbl->GetRowBytes(This);
}
static FORCEINLINE BMDPixelFormat IDeckLinkVideoInputFrame_v7_6_GetPixelFormat(IDeckLinkVideoInputFrame_v7_6* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE BMDFrameFlags IDeckLinkVideoInputFrame_v7_6_GetFlags(IDeckLinkVideoInputFrame_v7_6* This) {
    return This->lpVtbl->GetFlags(This);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_6_GetBytes(IDeckLinkVideoInputFrame_v7_6* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_6_GetTimecode(IDeckLinkVideoInputFrame_v7_6* This,BMDTimecodeFormat format,IDeckLinkTimecode_v7_6 **timecode) {
    return This->lpVtbl->GetTimecode(This,format,timecode);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_6_GetAncillaryData(IDeckLinkVideoInputFrame_v7_6* This,IDeckLinkVideoFrameAncillary **ancillary) {
    return This->lpVtbl->GetAncillaryData(This,ancillary);
}
/*** IDeckLinkVideoInputFrame_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_6_GetStreamTime(IDeckLinkVideoInputFrame_v7_6* This,BMDTimeValue *frameTime,BMDTimeValue *frameDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->GetStreamTime(This,frameTime,frameDuration,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_6_GetHardwareReferenceTimestamp(IDeckLinkVideoInputFrame_v7_6* This,BMDTimeScale timeScale,BMDTimeValue *frameTime,BMDTimeValue *frameDuration) {
    return This->lpVtbl->GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoInputFrame_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkScreenPreviewCallback_v7_6 interface
 */
#ifndef __IDeckLinkScreenPreviewCallback_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkScreenPreviewCallback_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkScreenPreviewCallback_v7_6, 0x373f499d, 0x4b4d, 0x4518, 0xad,0x22, 0x63,0x54,0xe5,0xa5,0x82,0x5e);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("373f499d-4b4d-4518-ad22-6354e5a5825e")
IDeckLinkScreenPreviewCallback_v7_6 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DrawFrame(
        IDeckLinkVideoFrame_v7_6 *theFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkScreenPreviewCallback_v7_6, 0x373f499d, 0x4b4d, 0x4518, 0xad,0x22, 0x63,0x54,0xe5,0xa5,0x82,0x5e)
#endif
#else
typedef struct IDeckLinkScreenPreviewCallback_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkScreenPreviewCallback_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkScreenPreviewCallback_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkScreenPreviewCallback_v7_6 *This);

    /*** IDeckLinkScreenPreviewCallback_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *DrawFrame)(
        IDeckLinkScreenPreviewCallback_v7_6 *This,
        IDeckLinkVideoFrame_v7_6 *theFrame);

    END_INTERFACE
} IDeckLinkScreenPreviewCallback_v7_6Vtbl;

interface IDeckLinkScreenPreviewCallback_v7_6 {
    CONST_VTBL IDeckLinkScreenPreviewCallback_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkScreenPreviewCallback_v7_6 methods ***/
#define IDeckLinkScreenPreviewCallback_v7_6_DrawFrame(This,theFrame) (This)->lpVtbl->DrawFrame(This,theFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkScreenPreviewCallback_v7_6_QueryInterface(IDeckLinkScreenPreviewCallback_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkScreenPreviewCallback_v7_6_AddRef(IDeckLinkScreenPreviewCallback_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkScreenPreviewCallback_v7_6_Release(IDeckLinkScreenPreviewCallback_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkScreenPreviewCallback_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkScreenPreviewCallback_v7_6_DrawFrame(IDeckLinkScreenPreviewCallback_v7_6* This,IDeckLinkVideoFrame_v7_6 *theFrame) {
    return This->lpVtbl->DrawFrame(This,theFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkScreenPreviewCallback_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkGLScreenPreviewHelper_v7_6 interface
 */
#ifndef __IDeckLinkGLScreenPreviewHelper_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkGLScreenPreviewHelper_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkGLScreenPreviewHelper_v7_6, 0xba575cd9, 0xa15e, 0x497b, 0xb2,0xc2, 0xf9,0xaf,0xe7,0xbe,0x4e,0xba);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ba575cd9-a15e-497b-b2c2-f9afe7be4eba")
IDeckLinkGLScreenPreviewHelper_v7_6 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE InitializeGL(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PaintGL(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFrame(
        IDeckLinkVideoFrame_v7_6 *theFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkGLScreenPreviewHelper_v7_6, 0xba575cd9, 0xa15e, 0x497b, 0xb2,0xc2, 0xf9,0xaf,0xe7,0xbe,0x4e,0xba)
#endif
#else
typedef struct IDeckLinkGLScreenPreviewHelper_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkGLScreenPreviewHelper_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkGLScreenPreviewHelper_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkGLScreenPreviewHelper_v7_6 *This);

    /*** IDeckLinkGLScreenPreviewHelper_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *InitializeGL)(
        IDeckLinkGLScreenPreviewHelper_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *PaintGL)(
        IDeckLinkGLScreenPreviewHelper_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *SetFrame)(
        IDeckLinkGLScreenPreviewHelper_v7_6 *This,
        IDeckLinkVideoFrame_v7_6 *theFrame);

    END_INTERFACE
} IDeckLinkGLScreenPreviewHelper_v7_6Vtbl;

interface IDeckLinkGLScreenPreviewHelper_v7_6 {
    CONST_VTBL IDeckLinkGLScreenPreviewHelper_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkGLScreenPreviewHelper_v7_6 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkGLScreenPreviewHelper_v7_6_QueryInterface(IDeckLinkGLScreenPreviewHelper_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkGLScreenPreviewHelper_v7_6_AddRef(IDeckLinkGLScreenPreviewHelper_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkGLScreenPreviewHelper_v7_6_Release(IDeckLinkGLScreenPreviewHelper_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkGLScreenPreviewHelper_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkGLScreenPreviewHelper_v7_6_InitializeGL(IDeckLinkGLScreenPreviewHelper_v7_6* This) {
    return This->lpVtbl->InitializeGL(This);
}
static FORCEINLINE HRESULT IDeckLinkGLScreenPreviewHelper_v7_6_PaintGL(IDeckLinkGLScreenPreviewHelper_v7_6* This) {
    return This->lpVtbl->PaintGL(This);
}
static FORCEINLINE HRESULT IDeckLinkGLScreenPreviewHelper_v7_6_SetFrame(IDeckLinkGLScreenPreviewHelper_v7_6* This,IDeckLinkVideoFrame_v7_6 *theFrame) {
    return This->lpVtbl->SetFrame(This,theFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkGLScreenPreviewHelper_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoConversion_v7_6 interface
 */
#ifndef __IDeckLinkVideoConversion_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkVideoConversion_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoConversion_v7_6, 0x3eb504c9, 0xf97d, 0x40fe, 0xa1,0x58, 0xd4,0x07,0xd4,0x8c,0xb5,0x3b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3eb504c9-f97d-40fe-a158-d407d48cb53b")
IDeckLinkVideoConversion_v7_6 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ConvertFrame(
        IDeckLinkVideoFrame_v7_6 *srcFrame,
        IDeckLinkVideoFrame_v7_6 *dstFrame) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoConversion_v7_6, 0x3eb504c9, 0xf97d, 0x40fe, 0xa1,0x58, 0xd4,0x07,0xd4,0x8c,0xb5,0x3b)
#endif
#else
typedef struct IDeckLinkVideoConversion_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoConversion_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoConversion_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoConversion_v7_6 *This);

    /*** IDeckLinkVideoConversion_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *ConvertFrame)(
        IDeckLinkVideoConversion_v7_6 *This,
        IDeckLinkVideoFrame_v7_6 *srcFrame,
        IDeckLinkVideoFrame_v7_6 *dstFrame);

    END_INTERFACE
} IDeckLinkVideoConversion_v7_6Vtbl;

interface IDeckLinkVideoConversion_v7_6 {
    CONST_VTBL IDeckLinkVideoConversion_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkVideoConversion_v7_6 methods ***/
#define IDeckLinkVideoConversion_v7_6_ConvertFrame(This,srcFrame,dstFrame) (This)->lpVtbl->ConvertFrame(This,srcFrame,dstFrame)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoConversion_v7_6_QueryInterface(IDeckLinkVideoConversion_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoConversion_v7_6_AddRef(IDeckLinkVideoConversion_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoConversion_v7_6_Release(IDeckLinkVideoConversion_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoConversion_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoConversion_v7_6_ConvertFrame(IDeckLinkVideoConversion_v7_6* This,IDeckLinkVideoFrame_v7_6 *srcFrame,IDeckLinkVideoFrame_v7_6 *dstFrame) {
    return This->lpVtbl->ConvertFrame(This,srcFrame,dstFrame);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoConversion_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkConfiguration_v7_6 interface
 */
#ifndef __IDeckLinkConfiguration_v7_6_INTERFACE_DEFINED__
#define __IDeckLinkConfiguration_v7_6_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkConfiguration_v7_6, 0xb8ead569, 0xb764, 0x47f0, 0xa7,0x3f, 0xae,0x40,0xdf,0x6c,0xbf,0x10);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b8ead569-b764-47f0-a73f-ae40df6cbf10")
IDeckLinkConfiguration_v7_6 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetConfigurationValidator(
        IDeckLinkConfiguration_v7_6 **configObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFormat(
        BMDVideoConnection_v7_6 videoOutputConnection) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsVideoOutputActive(
        BMDVideoConnection_v7_6 videoOutputConnection,
        BOOL *active) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAnalogVideoOutputFlags(
        BMDAnalogVideoFlags analogVideoFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAnalogVideoOutputFlags(
        BMDAnalogVideoFlags *analogVideoFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableFieldFlickerRemovalWhenPaused(
        BOOL enable) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsEnabledFieldFlickerRemovalWhenPaused(
        BOOL *enabled) = 0;

    virtual HRESULT STDMETHODCALLTYPE Set444And3GBpsVideoOutput(
        BOOL enable444VideoOutput,
        BOOL enable3GbsOutput) = 0;

    virtual HRESULT STDMETHODCALLTYPE Get444And3GBpsVideoOutput(
        BOOL *is444VideoOutputEnabled,
        BOOL *threeGbsOutputEnabled) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoOutputConversionMode(
        BMDVideoOutputConversionMode conversionMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVideoOutputConversionMode(
        BMDVideoOutputConversionMode *conversionMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE Set_HD1080p24_to_HD1080i5994_Conversion(
        BOOL enable) = 0;

    virtual HRESULT STDMETHODCALLTYPE Get_HD1080p24_to_HD1080i5994_Conversion(
        BOOL *enabled) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoInputFormat(
        BMDVideoConnection_v7_6 videoInputFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVideoInputFormat(
        BMDVideoConnection_v7_6 *videoInputFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAnalogVideoInputFlags(
        BMDAnalogVideoFlags analogVideoFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAnalogVideoInputFlags(
        BMDAnalogVideoFlags *analogVideoFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoInputConversionMode(
        BMDVideoInputConversionMode conversionMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVideoInputConversionMode(
        BMDVideoInputConversionMode *conversionMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetBlackVideoOutputDuringCapture(
        BOOL blackOutInCapture) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBlackVideoOutputDuringCapture(
        BOOL *blackOutInCapture) = 0;

    virtual HRESULT STDMETHODCALLTYPE Set32PulldownSequenceInitialTimecodeFrame(
        unsigned int aFrameTimecode) = 0;

    virtual HRESULT STDMETHODCALLTYPE Get32PulldownSequenceInitialTimecodeFrame(
        unsigned int *aFrameTimecode) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVancSourceLineMapping(
        unsigned int activeLine1VANCsource,
        unsigned int activeLine2VANCsource,
        unsigned int activeLine3VANCsource) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVancSourceLineMapping(
        unsigned int *activeLine1VANCsource,
        unsigned int *activeLine2VANCsource,
        unsigned int *activeLine3VANCsource) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAudioInputFormat(
        BMDAudioConnection_v10_2 audioInputFormat) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAudioInputFormat(
        BMDAudioConnection_v10_2 *audioInputFormat) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkConfiguration_v7_6, 0xb8ead569, 0xb764, 0x47f0, 0xa7,0x3f, 0xae,0x40,0xdf,0x6c,0xbf,0x10)
#endif
#else
typedef struct IDeckLinkConfiguration_v7_6Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkConfiguration_v7_6 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkConfiguration_v7_6 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkConfiguration_v7_6 *This);

    /*** IDeckLinkConfiguration_v7_6 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetConfigurationValidator)(
        IDeckLinkConfiguration_v7_6 *This,
        IDeckLinkConfiguration_v7_6 **configObject);

    HRESULT (STDMETHODCALLTYPE *WriteConfigurationToPreferences)(
        IDeckLinkConfiguration_v7_6 *This);

    HRESULT (STDMETHODCALLTYPE *SetVideoOutputFormat)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDVideoConnection_v7_6 videoOutputConnection);

    HRESULT (STDMETHODCALLTYPE *IsVideoOutputActive)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDVideoConnection_v7_6 videoOutputConnection,
        BOOL *active);

    HRESULT (STDMETHODCALLTYPE *SetAnalogVideoOutputFlags)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDAnalogVideoFlags analogVideoFlags);

    HRESULT (STDMETHODCALLTYPE *GetAnalogVideoOutputFlags)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDAnalogVideoFlags *analogVideoFlags);

    HRESULT (STDMETHODCALLTYPE *EnableFieldFlickerRemovalWhenPaused)(
        IDeckLinkConfiguration_v7_6 *This,
        BOOL enable);

    HRESULT (STDMETHODCALLTYPE *IsEnabledFieldFlickerRemovalWhenPaused)(
        IDeckLinkConfiguration_v7_6 *This,
        BOOL *enabled);

    HRESULT (STDMETHODCALLTYPE *Set444And3GBpsVideoOutput)(
        IDeckLinkConfiguration_v7_6 *This,
        BOOL enable444VideoOutput,
        BOOL enable3GbsOutput);

    HRESULT (STDMETHODCALLTYPE *Get444And3GBpsVideoOutput)(
        IDeckLinkConfiguration_v7_6 *This,
        BOOL *is444VideoOutputEnabled,
        BOOL *threeGbsOutputEnabled);

    HRESULT (STDMETHODCALLTYPE *SetVideoOutputConversionMode)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDVideoOutputConversionMode conversionMode);

    HRESULT (STDMETHODCALLTYPE *GetVideoOutputConversionMode)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDVideoOutputConversionMode *conversionMode);

    HRESULT (STDMETHODCALLTYPE *Set_HD1080p24_to_HD1080i5994_Conversion)(
        IDeckLinkConfiguration_v7_6 *This,
        BOOL enable);

    HRESULT (STDMETHODCALLTYPE *Get_HD1080p24_to_HD1080i5994_Conversion)(
        IDeckLinkConfiguration_v7_6 *This,
        BOOL *enabled);

    HRESULT (STDMETHODCALLTYPE *SetVideoInputFormat)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDVideoConnection_v7_6 videoInputFormat);

    HRESULT (STDMETHODCALLTYPE *GetVideoInputFormat)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDVideoConnection_v7_6 *videoInputFormat);

    HRESULT (STDMETHODCALLTYPE *SetAnalogVideoInputFlags)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDAnalogVideoFlags analogVideoFlags);

    HRESULT (STDMETHODCALLTYPE *GetAnalogVideoInputFlags)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDAnalogVideoFlags *analogVideoFlags);

    HRESULT (STDMETHODCALLTYPE *SetVideoInputConversionMode)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDVideoInputConversionMode conversionMode);

    HRESULT (STDMETHODCALLTYPE *GetVideoInputConversionMode)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDVideoInputConversionMode *conversionMode);

    HRESULT (STDMETHODCALLTYPE *SetBlackVideoOutputDuringCapture)(
        IDeckLinkConfiguration_v7_6 *This,
        BOOL blackOutInCapture);

    HRESULT (STDMETHODCALLTYPE *GetBlackVideoOutputDuringCapture)(
        IDeckLinkConfiguration_v7_6 *This,
        BOOL *blackOutInCapture);

    HRESULT (STDMETHODCALLTYPE *Set32PulldownSequenceInitialTimecodeFrame)(
        IDeckLinkConfiguration_v7_6 *This,
        unsigned int aFrameTimecode);

    HRESULT (STDMETHODCALLTYPE *Get32PulldownSequenceInitialTimecodeFrame)(
        IDeckLinkConfiguration_v7_6 *This,
        unsigned int *aFrameTimecode);

    HRESULT (STDMETHODCALLTYPE *SetVancSourceLineMapping)(
        IDeckLinkConfiguration_v7_6 *This,
        unsigned int activeLine1VANCsource,
        unsigned int activeLine2VANCsource,
        unsigned int activeLine3VANCsource);

    HRESULT (STDMETHODCALLTYPE *GetVancSourceLineMapping)(
        IDeckLinkConfiguration_v7_6 *This,
        unsigned int *activeLine1VANCsource,
        unsigned int *activeLine2VANCsource,
        unsigned int *activeLine3VANCsource);

    HRESULT (STDMETHODCALLTYPE *SetAudioInputFormat)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDAudioConnection_v10_2 audioInputFormat);

    HRESULT (STDMETHODCALLTYPE *GetAudioInputFormat)(
        IDeckLinkConfiguration_v7_6 *This,
        BMDAudioConnection_v10_2 *audioInputFormat);

    END_INTERFACE
} IDeckLinkConfiguration_v7_6Vtbl;

interface IDeckLinkConfiguration_v7_6 {
    CONST_VTBL IDeckLinkConfiguration_v7_6Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkConfiguration_v7_6 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_QueryInterface(IDeckLinkConfiguration_v7_6* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_v7_6_AddRef(IDeckLinkConfiguration_v7_6* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkConfiguration_v7_6_Release(IDeckLinkConfiguration_v7_6* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkConfiguration_v7_6 methods ***/
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_GetConfigurationValidator(IDeckLinkConfiguration_v7_6* This,IDeckLinkConfiguration_v7_6 **configObject) {
    return This->lpVtbl->GetConfigurationValidator(This,configObject);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_WriteConfigurationToPreferences(IDeckLinkConfiguration_v7_6* This) {
    return This->lpVtbl->WriteConfigurationToPreferences(This);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_SetVideoOutputFormat(IDeckLinkConfiguration_v7_6* This,BMDVideoConnection_v7_6 videoOutputConnection) {
    return This->lpVtbl->SetVideoOutputFormat(This,videoOutputConnection);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_IsVideoOutputActive(IDeckLinkConfiguration_v7_6* This,BMDVideoConnection_v7_6 videoOutputConnection,BOOL *active) {
    return This->lpVtbl->IsVideoOutputActive(This,videoOutputConnection,active);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_SetAnalogVideoOutputFlags(IDeckLinkConfiguration_v7_6* This,BMDAnalogVideoFlags analogVideoFlags) {
    return This->lpVtbl->SetAnalogVideoOutputFlags(This,analogVideoFlags);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_GetAnalogVideoOutputFlags(IDeckLinkConfiguration_v7_6* This,BMDAnalogVideoFlags *analogVideoFlags) {
    return This->lpVtbl->GetAnalogVideoOutputFlags(This,analogVideoFlags);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_EnableFieldFlickerRemovalWhenPaused(IDeckLinkConfiguration_v7_6* This,BOOL enable) {
    return This->lpVtbl->EnableFieldFlickerRemovalWhenPaused(This,enable);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_IsEnabledFieldFlickerRemovalWhenPaused(IDeckLinkConfiguration_v7_6* This,BOOL *enabled) {
    return This->lpVtbl->IsEnabledFieldFlickerRemovalWhenPaused(This,enabled);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_Set444And3GBpsVideoOutput(IDeckLinkConfiguration_v7_6* This,BOOL enable444VideoOutput,BOOL enable3GbsOutput) {
    return This->lpVtbl->Set444And3GBpsVideoOutput(This,enable444VideoOutput,enable3GbsOutput);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_Get444And3GBpsVideoOutput(IDeckLinkConfiguration_v7_6* This,BOOL *is444VideoOutputEnabled,BOOL *threeGbsOutputEnabled) {
    return This->lpVtbl->Get444And3GBpsVideoOutput(This,is444VideoOutputEnabled,threeGbsOutputEnabled);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_SetVideoOutputConversionMode(IDeckLinkConfiguration_v7_6* This,BMDVideoOutputConversionMode conversionMode) {
    return This->lpVtbl->SetVideoOutputConversionMode(This,conversionMode);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_GetVideoOutputConversionMode(IDeckLinkConfiguration_v7_6* This,BMDVideoOutputConversionMode *conversionMode) {
    return This->lpVtbl->GetVideoOutputConversionMode(This,conversionMode);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_Set_HD1080p24_to_HD1080i5994_Conversion(IDeckLinkConfiguration_v7_6* This,BOOL enable) {
    return This->lpVtbl->Set_HD1080p24_to_HD1080i5994_Conversion(This,enable);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_Get_HD1080p24_to_HD1080i5994_Conversion(IDeckLinkConfiguration_v7_6* This,BOOL *enabled) {
    return This->lpVtbl->Get_HD1080p24_to_HD1080i5994_Conversion(This,enabled);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_SetVideoInputFormat(IDeckLinkConfiguration_v7_6* This,BMDVideoConnection_v7_6 videoInputFormat) {
    return This->lpVtbl->SetVideoInputFormat(This,videoInputFormat);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_GetVideoInputFormat(IDeckLinkConfiguration_v7_6* This,BMDVideoConnection_v7_6 *videoInputFormat) {
    return This->lpVtbl->GetVideoInputFormat(This,videoInputFormat);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_SetAnalogVideoInputFlags(IDeckLinkConfiguration_v7_6* This,BMDAnalogVideoFlags analogVideoFlags) {
    return This->lpVtbl->SetAnalogVideoInputFlags(This,analogVideoFlags);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_GetAnalogVideoInputFlags(IDeckLinkConfiguration_v7_6* This,BMDAnalogVideoFlags *analogVideoFlags) {
    return This->lpVtbl->GetAnalogVideoInputFlags(This,analogVideoFlags);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_SetVideoInputConversionMode(IDeckLinkConfiguration_v7_6* This,BMDVideoInputConversionMode conversionMode) {
    return This->lpVtbl->SetVideoInputConversionMode(This,conversionMode);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_GetVideoInputConversionMode(IDeckLinkConfiguration_v7_6* This,BMDVideoInputConversionMode *conversionMode) {
    return This->lpVtbl->GetVideoInputConversionMode(This,conversionMode);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_SetBlackVideoOutputDuringCapture(IDeckLinkConfiguration_v7_6* This,BOOL blackOutInCapture) {
    return This->lpVtbl->SetBlackVideoOutputDuringCapture(This,blackOutInCapture);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_GetBlackVideoOutputDuringCapture(IDeckLinkConfiguration_v7_6* This,BOOL *blackOutInCapture) {
    return This->lpVtbl->GetBlackVideoOutputDuringCapture(This,blackOutInCapture);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_Set32PulldownSequenceInitialTimecodeFrame(IDeckLinkConfiguration_v7_6* This,unsigned int aFrameTimecode) {
    return This->lpVtbl->Set32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_Get32PulldownSequenceInitialTimecodeFrame(IDeckLinkConfiguration_v7_6* This,unsigned int *aFrameTimecode) {
    return This->lpVtbl->Get32PulldownSequenceInitialTimecodeFrame(This,aFrameTimecode);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_SetVancSourceLineMapping(IDeckLinkConfiguration_v7_6* This,unsigned int activeLine1VANCsource,unsigned int activeLine2VANCsource,unsigned int activeLine3VANCsource) {
    return This->lpVtbl->SetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_GetVancSourceLineMapping(IDeckLinkConfiguration_v7_6* This,unsigned int *activeLine1VANCsource,unsigned int *activeLine2VANCsource,unsigned int *activeLine3VANCsource) {
    return This->lpVtbl->GetVancSourceLineMapping(This,activeLine1VANCsource,activeLine2VANCsource,activeLine3VANCsource);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_SetAudioInputFormat(IDeckLinkConfiguration_v7_6* This,BMDAudioConnection_v10_2 audioInputFormat) {
    return This->lpVtbl->SetAudioInputFormat(This,audioInputFormat);
}
static FORCEINLINE HRESULT IDeckLinkConfiguration_v7_6_GetAudioInputFormat(IDeckLinkConfiguration_v7_6* This,BMDAudioConnection_v10_2 *audioInputFormat) {
    return This->lpVtbl->GetAudioInputFormat(This,audioInputFormat);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkConfiguration_v7_6_INTERFACE_DEFINED__ */

/*****************************************************************************
 * CDeckLinkGLScreenPreviewHelper_v7_6 coclass
 */

DEFINE_GUID(CLSID_CDeckLinkGLScreenPreviewHelper_v7_6, 0xd398cee7, 0x4434, 0x4ca3, 0x9b,0xa6, 0x5a,0xe3,0x45,0x56,0xb9,0x05);

#ifdef __cplusplus
class DECLSPEC_UUID("d398cee7-4434-4ca3-9ba6-5ae34556b905") CDeckLinkGLScreenPreviewHelper_v7_6;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkGLScreenPreviewHelper_v7_6, 0xd398cee7, 0x4434, 0x4ca3, 0x9b,0xa6, 0x5a,0xe3,0x45,0x56,0xb9,0x05)
#endif
#endif

/*****************************************************************************
 * CDeckLinkVideoConversion_v7_6 coclass
 */

DEFINE_GUID(CLSID_CDeckLinkVideoConversion_v7_6, 0xffa84f77, 0x73be, 0x4fb7, 0xb0,0x3e, 0xb5,0xe4,0x4b,0x9f,0x75,0x9b);

#ifdef __cplusplus
class DECLSPEC_UUID("ffa84f77-73be-4fb7-b03e-b5e44b9f759b") CDeckLinkVideoConversion_v7_6;
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(CDeckLinkVideoConversion_v7_6, 0xffa84f77, 0x73be, 0x4fb7, 0xb0,0x3e, 0xb5,0xe4,0x4b,0x9f,0x75,0x9b)
#endif
#endif

#ifndef __IDeckLinkInputCallback_v7_3_FWD_DEFINED__
#define __IDeckLinkInputCallback_v7_3_FWD_DEFINED__
typedef interface IDeckLinkInputCallback_v7_3 IDeckLinkInputCallback_v7_3;
#ifdef __cplusplus
interface IDeckLinkInputCallback_v7_3;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkOutput_v7_3_FWD_DEFINED__
#define __IDeckLinkOutput_v7_3_FWD_DEFINED__
typedef interface IDeckLinkOutput_v7_3 IDeckLinkOutput_v7_3;
#ifdef __cplusplus
interface IDeckLinkOutput_v7_3;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkInput_v7_3_FWD_DEFINED__
#define __IDeckLinkInput_v7_3_FWD_DEFINED__
typedef interface IDeckLinkInput_v7_3 IDeckLinkInput_v7_3;
#ifdef __cplusplus
interface IDeckLinkInput_v7_3;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoInputFrame_v7_3_FWD_DEFINED__
#define __IDeckLinkVideoInputFrame_v7_3_FWD_DEFINED__
typedef interface IDeckLinkVideoInputFrame_v7_3 IDeckLinkVideoInputFrame_v7_3;
#ifdef __cplusplus
interface IDeckLinkVideoInputFrame_v7_3;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkInputCallback_v7_3 interface
 */
#ifndef __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__
#define __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInputCallback_v7_3, 0xfd6f311d, 0x4d00, 0x444b, 0x9e,0xd4, 0x1f,0x25,0xb5,0x73,0x0a,0xd0);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("fd6f311d-4d00-444b-9ed4-1f25b5730ad0")
IDeckLinkInputCallback_v7_3 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged(
        BMDVideoInputFormatChangedEvents notificationEvents,
        IDeckLinkDisplayMode_v7_6 *newDisplayMode,
        BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(
        IDeckLinkVideoInputFrame_v7_3 *videoFrame,
        IDeckLinkAudioInputPacket *audioPacket) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInputCallback_v7_3, 0xfd6f311d, 0x4d00, 0x444b, 0x9e,0xd4, 0x1f,0x25,0xb5,0x73,0x0a,0xd0)
#endif
#else
typedef struct IDeckLinkInputCallback_v7_3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInputCallback_v7_3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInputCallback_v7_3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInputCallback_v7_3 *This);

    /*** IDeckLinkInputCallback_v7_3 methods ***/
    HRESULT (STDMETHODCALLTYPE *VideoInputFormatChanged)(
        IDeckLinkInputCallback_v7_3 *This,
        BMDVideoInputFormatChangedEvents notificationEvents,
        IDeckLinkDisplayMode_v7_6 *newDisplayMode,
        BMDDetectedVideoInputFormatFlags detectedSignalFlags);

    HRESULT (STDMETHODCALLTYPE *VideoInputFrameArrived)(
        IDeckLinkInputCallback_v7_3 *This,
        IDeckLinkVideoInputFrame_v7_3 *videoFrame,
        IDeckLinkAudioInputPacket *audioPacket);

    END_INTERFACE
} IDeckLinkInputCallback_v7_3Vtbl;

interface IDeckLinkInputCallback_v7_3 {
    CONST_VTBL IDeckLinkInputCallback_v7_3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkInputCallback_v7_3 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInputCallback_v7_3_QueryInterface(IDeckLinkInputCallback_v7_3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInputCallback_v7_3_AddRef(IDeckLinkInputCallback_v7_3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInputCallback_v7_3_Release(IDeckLinkInputCallback_v7_3* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInputCallback_v7_3 methods ***/
static FORCEINLINE HRESULT IDeckLinkInputCallback_v7_3_VideoInputFormatChanged(IDeckLinkInputCallback_v7_3* This,BMDVideoInputFormatChangedEvents notificationEvents,IDeckLinkDisplayMode_v7_6 *newDisplayMode,BMDDetectedVideoInputFormatFlags detectedSignalFlags) {
    return This->lpVtbl->VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags);
}
static FORCEINLINE HRESULT IDeckLinkInputCallback_v7_3_VideoInputFrameArrived(IDeckLinkInputCallback_v7_3* This,IDeckLinkVideoInputFrame_v7_3 *videoFrame,IDeckLinkAudioInputPacket *audioPacket) {
    return This->lpVtbl->VideoInputFrameArrived(This,videoFrame,audioPacket);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInputCallback_v7_3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkOutput_v7_3 interface
 */
#ifndef __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__
#define __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkOutput_v7_3, 0x271c65e3, 0xc323, 0x4344, 0xa3,0x0f, 0xd9,0x08,0xbc,0xb2,0x0a,0xa3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("271c65e3-c323-4344-a30f-d908bcb20aa3")
IDeckLinkOutput_v7_3 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput(
        BMDDisplayMode displayMode,
        BMDVideoOutputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame(
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame_v7_6 **outFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData(
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync(
        IDeckLinkVideoFrame_v7_6 *theFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame(
        IDeckLinkVideoFrame_v7_6 *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback(
        IDeckLinkVideoOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount(
        unsigned int *bufferedFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync(
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples(
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount(
        unsigned int *bufferedSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAudioCallback(
        IDeckLinkAudioOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback(
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback(
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning(
        BOOL *active) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *elapsedTimeSinceSchedulerBegan) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkOutput_v7_3, 0x271c65e3, 0xc323, 0x4344, 0xa3,0x0f, 0xd9,0x08,0xbc,0xb2,0x0a,0xa3)
#endif
#else
typedef struct IDeckLinkOutput_v7_3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkOutput_v7_3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkOutput_v7_3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkOutput_v7_3 *This);

    /*** IDeckLinkOutput_v7_3 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkOutput_v7_3 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkOutput_v7_3 *This,
        IDeckLinkDisplayModeIterator_v7_6 **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkOutput_v7_3 *This,
        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,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *CreateVideoFrame)(
        IDeckLinkOutput_v7_3 *This,
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkMutableVideoFrame_v7_6 **outFrame);

    HRESULT (STDMETHODCALLTYPE *CreateAncillaryData)(
        IDeckLinkOutput_v7_3 *This,
        BMDPixelFormat pixelFormat,
        IDeckLinkVideoFrameAncillary **outBuffer);

    HRESULT (STDMETHODCALLTYPE *DisplayVideoFrameSync)(
        IDeckLinkOutput_v7_3 *This,
        IDeckLinkVideoFrame_v7_6 *theFrame);

    HRESULT (STDMETHODCALLTYPE *ScheduleVideoFrame)(
        IDeckLinkOutput_v7_3 *This,
        IDeckLinkVideoFrame_v7_6 *theFrame,
        BMDTimeValue displayTime,
        BMDTimeValue displayDuration,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback)(
        IDeckLinkOutput_v7_3 *This,
        IDeckLinkVideoOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *GetBufferedVideoFrameCount)(
        IDeckLinkOutput_v7_3 *This,
        unsigned int *bufferedFrameCount);

    HRESULT (STDMETHODCALLTYPE *EnableAudioOutput)(
        IDeckLinkOutput_v7_3 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount,
        BMDAudioOutputStreamType streamType);

    HRESULT (STDMETHODCALLTYPE *DisableAudioOutput)(
        IDeckLinkOutput_v7_3 *This);

    HRESULT (STDMETHODCALLTYPE *WriteAudioSamplesSync)(
        IDeckLinkOutput_v7_3 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *BeginAudioPreroll)(
        IDeckLinkOutput_v7_3 *This);

    HRESULT (STDMETHODCALLTYPE *EndAudioPreroll)(
        IDeckLinkOutput_v7_3 *This);

    HRESULT (STDMETHODCALLTYPE *ScheduleAudioSamples)(
        IDeckLinkOutput_v7_3 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount)(
        IDeckLinkOutput_v7_3 *This,
        unsigned int *bufferedSampleFrameCount);

    HRESULT (STDMETHODCALLTYPE *FlushBufferedAudioSamples)(
        IDeckLinkOutput_v7_3 *This);

    HRESULT (STDMETHODCALLTYPE *SetAudioCallback)(
        IDeckLinkOutput_v7_3 *This,
        IDeckLinkAudioOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *StartScheduledPlayback)(
        IDeckLinkOutput_v7_3 *This,
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *StopScheduledPlayback)(
        IDeckLinkOutput_v7_3 *This,
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *IsScheduledPlaybackRunning)(
        IDeckLinkOutput_v7_3 *This,
        BOOL *active);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkOutput_v7_3 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *elapsedTimeSinceSchedulerBegan);

    END_INTERFACE
} IDeckLinkOutput_v7_3Vtbl;

interface IDeckLinkOutput_v7_3 {
    CONST_VTBL IDeckLinkOutput_v7_3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkOutput_v7_3 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_QueryInterface(IDeckLinkOutput_v7_3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkOutput_v7_3_AddRef(IDeckLinkOutput_v7_3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkOutput_v7_3_Release(IDeckLinkOutput_v7_3* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkOutput_v7_3 methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_DoesSupportVideoMode(IDeckLinkOutput_v7_3* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDDisplayModeSupport_v10_11 *result) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,result);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_GetDisplayModeIterator(IDeckLinkOutput_v7_3* This,IDeckLinkDisplayModeIterator_v7_6 **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_SetScreenPreviewCallback(IDeckLinkOutput_v7_3* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_EnableVideoOutput(IDeckLinkOutput_v7_3* This,BMDDisplayMode displayMode,BMDVideoOutputFlags flags) {
    return This->lpVtbl->EnableVideoOutput(This,displayMode,flags);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_DisableVideoOutput(IDeckLinkOutput_v7_3* This) {
    return This->lpVtbl->DisableVideoOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_SetVideoOutputFrameMemoryAllocator(IDeckLinkOutput_v7_3* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_CreateVideoFrame(IDeckLinkOutput_v7_3* This,int width,int height,int rowBytes,BMDPixelFormat pixelFormat,BMDFrameFlags flags,IDeckLinkMutableVideoFrame_v7_6 **outFrame) {
    return This->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_CreateAncillaryData(IDeckLinkOutput_v7_3* This,BMDPixelFormat pixelFormat,IDeckLinkVideoFrameAncillary **outBuffer) {
    return This->lpVtbl->CreateAncillaryData(This,pixelFormat,outBuffer);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_DisplayVideoFrameSync(IDeckLinkOutput_v7_3* This,IDeckLinkVideoFrame_v7_6 *theFrame) {
    return This->lpVtbl->DisplayVideoFrameSync(This,theFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_ScheduleVideoFrame(IDeckLinkOutput_v7_3* This,IDeckLinkVideoFrame_v7_6 *theFrame,BMDTimeValue displayTime,BMDTimeValue displayDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_SetScheduledFrameCompletionCallback(IDeckLinkOutput_v7_3* This,IDeckLinkVideoOutputCallback *theCallback) {
    return This->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_GetBufferedVideoFrameCount(IDeckLinkOutput_v7_3* This,unsigned int *bufferedFrameCount) {
    return This->lpVtbl->GetBufferedVideoFrameCount(This,bufferedFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_EnableAudioOutput(IDeckLinkOutput_v7_3* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount,BMDAudioOutputStreamType streamType) {
    return This->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_DisableAudioOutput(IDeckLinkOutput_v7_3* This) {
    return This->lpVtbl->DisableAudioOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_WriteAudioSamplesSync(IDeckLinkOutput_v7_3* This,void *buffer,unsigned int sampleFrameCount,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_BeginAudioPreroll(IDeckLinkOutput_v7_3* This) {
    return This->lpVtbl->BeginAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_EndAudioPreroll(IDeckLinkOutput_v7_3* This) {
    return This->lpVtbl->EndAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_ScheduleAudioSamples(IDeckLinkOutput_v7_3* This,void *buffer,unsigned int sampleFrameCount,BMDTimeValue streamTime,BMDTimeScale timeScale,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_GetBufferedAudioSampleFrameCount(IDeckLinkOutput_v7_3* This,unsigned int *bufferedSampleFrameCount) {
    return This->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_FlushBufferedAudioSamples(IDeckLinkOutput_v7_3* This) {
    return This->lpVtbl->FlushBufferedAudioSamples(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_SetAudioCallback(IDeckLinkOutput_v7_3* This,IDeckLinkAudioOutputCallback *theCallback) {
    return This->lpVtbl->SetAudioCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_StartScheduledPlayback(IDeckLinkOutput_v7_3* This,BMDTimeValue playbackStartTime,BMDTimeScale timeScale,double playbackSpeed) {
    return This->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_StopScheduledPlayback(IDeckLinkOutput_v7_3* This,BMDTimeValue stopPlaybackAtTime,BMDTimeValue *actualStopTime,BMDTimeScale timeScale) {
    return This->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_IsScheduledPlaybackRunning(IDeckLinkOutput_v7_3* This,BOOL *active) {
    return This->lpVtbl->IsScheduledPlaybackRunning(This,active);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_3_GetHardwareReferenceClock(IDeckLinkOutput_v7_3* This,BMDTimeScale desiredTimeScale,BMDTimeValue *elapsedTimeSinceSchedulerBegan) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkOutput_v7_3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInput_v7_3 interface
 */
#ifndef __IDeckLinkInput_v7_3_INTERFACE_DEFINED__
#define __IDeckLinkInput_v7_3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInput_v7_3, 0x4973f012, 0x9925, 0x458c, 0x87,0x1c, 0x18,0x77,0x4c,0xdb,0xbe,0xcb);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4973f012-9925-458c-871c-18774cdbbecb")
IDeckLinkInput_v7_3 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator_v7_6 **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback(
        IDeckLinkScreenPreviewCallback *previewCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoInput(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount(
        unsigned int *availableFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioInput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount(
        unsigned int *availableSampleFrameCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkInputCallback_v7_3 *theCallback) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInput_v7_3, 0x4973f012, 0x9925, 0x458c, 0x87,0x1c, 0x18,0x77,0x4c,0xdb,0xbe,0xcb)
#endif
#else
typedef struct IDeckLinkInput_v7_3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInput_v7_3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInput_v7_3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInput_v7_3 *This);

    /*** IDeckLinkInput_v7_3 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkInput_v7_3 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkInput_v7_3 *This,
        IDeckLinkDisplayModeIterator_v7_6 **iterator);

    HRESULT (STDMETHODCALLTYPE *SetScreenPreviewCallback)(
        IDeckLinkInput_v7_3 *This,
        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,
        unsigned int *availableFrameCount);

    HRESULT (STDMETHODCALLTYPE *EnableAudioInput)(
        IDeckLinkInput_v7_3 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioInput)(
        IDeckLinkInput_v7_3 *This);

    HRESULT (STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount)(
        IDeckLinkInput_v7_3 *This,
        unsigned int *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,
        IDeckLinkInputCallback_v7_3 *theCallback);

    END_INTERFACE
} IDeckLinkInput_v7_3Vtbl;

interface IDeckLinkInput_v7_3 {
    CONST_VTBL IDeckLinkInput_v7_3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkInput_v7_3 methods ***/
#define IDeckLinkInput_v7_3_DoesSupportVideoMode(This,displayMode,pixelFormat,result) (This)->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,result)
#define IDeckLinkInput_v7_3_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkInput_v7_3_SetScreenPreviewCallback(This,previewCallback) (This)->lpVtbl->SetScreenPreviewCallback(This,previewCallback)
#define IDeckLinkInput_v7_3_EnableVideoInput(This,displayMode,pixelFormat,flags) (This)->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags)
#define IDeckLinkInput_v7_3_DisableVideoInput(This) (This)->lpVtbl->DisableVideoInput(This)
#define IDeckLinkInput_v7_3_GetAvailableVideoFrameCount(This,availableFrameCount) (This)->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount)
#define IDeckLinkInput_v7_3_EnableAudioInput(This,sampleRate,sampleType,channelCount) (This)->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount)
#define IDeckLinkInput_v7_3_DisableAudioInput(This) (This)->lpVtbl->DisableAudioInput(This)
#define IDeckLinkInput_v7_3_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) (This)->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount)
#define IDeckLinkInput_v7_3_StartStreams(This) (This)->lpVtbl->StartStreams(This)
#define IDeckLinkInput_v7_3_StopStreams(This) (This)->lpVtbl->StopStreams(This)
#define IDeckLinkInput_v7_3_PauseStreams(This) (This)->lpVtbl->PauseStreams(This)
#define IDeckLinkInput_v7_3_FlushStreams(This) (This)->lpVtbl->FlushStreams(This)
#define IDeckLinkInput_v7_3_SetCallback(This,theCallback) (This)->lpVtbl->SetCallback(This,theCallback)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_QueryInterface(IDeckLinkInput_v7_3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInput_v7_3_AddRef(IDeckLinkInput_v7_3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInput_v7_3_Release(IDeckLinkInput_v7_3* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInput_v7_3 methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_DoesSupportVideoMode(IDeckLinkInput_v7_3* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDDisplayModeSupport_v10_11 *result) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,result);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_GetDisplayModeIterator(IDeckLinkInput_v7_3* This,IDeckLinkDisplayModeIterator_v7_6 **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_SetScreenPreviewCallback(IDeckLinkInput_v7_3* This,IDeckLinkScreenPreviewCallback *previewCallback) {
    return This->lpVtbl->SetScreenPreviewCallback(This,previewCallback);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_EnableVideoInput(IDeckLinkInput_v7_3* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags) {
    return This->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_DisableVideoInput(IDeckLinkInput_v7_3* This) {
    return This->lpVtbl->DisableVideoInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_GetAvailableVideoFrameCount(IDeckLinkInput_v7_3* This,unsigned int *availableFrameCount) {
    return This->lpVtbl->GetAvailableVideoFrameCount(This,availableFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_EnableAudioInput(IDeckLinkInput_v7_3* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_DisableAudioInput(IDeckLinkInput_v7_3* This) {
    return This->lpVtbl->DisableAudioInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_GetAvailableAudioSampleFrameCount(IDeckLinkInput_v7_3* This,unsigned int *availableSampleFrameCount) {
    return This->lpVtbl->GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_StartStreams(IDeckLinkInput_v7_3* This) {
    return This->lpVtbl->StartStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_StopStreams(IDeckLinkInput_v7_3* This) {
    return This->lpVtbl->StopStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_PauseStreams(IDeckLinkInput_v7_3* This) {
    return This->lpVtbl->PauseStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_FlushStreams(IDeckLinkInput_v7_3* This) {
    return This->lpVtbl->FlushStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_3_SetCallback(IDeckLinkInput_v7_3* This,IDeckLinkInputCallback_v7_3 *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInput_v7_3_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoInputFrame_v7_3 interface
 */
#ifndef __IDeckLinkVideoInputFrame_v7_3_INTERFACE_DEFINED__
#define __IDeckLinkVideoInputFrame_v7_3_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoInputFrame_v7_3, 0xcf317790, 0x2894, 0x11de, 0x8c,0x30, 0x08,0x00,0x20,0x0c,0x9a,0x66);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cf317790-2894-11de-8c30-0800200c9a66")
IDeckLinkVideoInputFrame_v7_3 : public IDeckLinkVideoFrame_v7_6
{
    virtual HRESULT STDMETHODCALLTYPE GetStreamTime(
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration,
        BMDTimeScale timeScale) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoInputFrame_v7_3, 0xcf317790, 0x2894, 0x11de, 0x8c,0x30, 0x08,0x00,0x20,0x0c,0x9a,0x66)
#endif
#else
typedef struct IDeckLinkVideoInputFrame_v7_3Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoInputFrame_v7_3 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoInputFrame_v7_3 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoInputFrame_v7_3 *This);

    /*** IDeckLinkVideoFrame_v7_6 methods ***/
    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,
        void **buffer);

    HRESULT (STDMETHODCALLTYPE *GetTimecode)(
        IDeckLinkVideoInputFrame_v7_3 *This,
        BMDTimecodeFormat format,
        IDeckLinkTimecode_v7_6 **timecode);

    HRESULT (STDMETHODCALLTYPE *GetAncillaryData)(
        IDeckLinkVideoInputFrame_v7_3 *This,
        IDeckLinkVideoFrameAncillary **ancillary);

    /*** IDeckLinkVideoInputFrame_v7_3 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetStreamTime)(
        IDeckLinkVideoInputFrame_v7_3 *This,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration,
        BMDTimeScale timeScale);

    END_INTERFACE
} IDeckLinkVideoInputFrame_v7_3Vtbl;

interface IDeckLinkVideoInputFrame_v7_3 {
    CONST_VTBL IDeckLinkVideoInputFrame_v7_3Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkVideoFrame_v7_6 methods ***/
#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)
/*** IDeckLinkVideoInputFrame_v7_3 methods ***/
#define IDeckLinkVideoInputFrame_v7_3_GetStreamTime(This,frameTime,frameDuration,timeScale) (This)->lpVtbl->GetStreamTime(This,frameTime,frameDuration,timeScale)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_3_QueryInterface(IDeckLinkVideoInputFrame_v7_3* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoInputFrame_v7_3_AddRef(IDeckLinkVideoInputFrame_v7_3* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoInputFrame_v7_3_Release(IDeckLinkVideoInputFrame_v7_3* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrame_v7_6 methods ***/
static FORCEINLINE LONG IDeckLinkVideoInputFrame_v7_3_GetWidth(IDeckLinkVideoInputFrame_v7_3* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkVideoInputFrame_v7_3_GetHeight(IDeckLinkVideoInputFrame_v7_3* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE LONG IDeckLinkVideoInputFrame_v7_3_GetRowBytes(IDeckLinkVideoInputFrame_v7_3* This) {
    return This->lpVtbl->GetRowBytes(This);
}
static FORCEINLINE BMDPixelFormat IDeckLinkVideoInputFrame_v7_3_GetPixelFormat(IDeckLinkVideoInputFrame_v7_3* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE BMDFrameFlags IDeckLinkVideoInputFrame_v7_3_GetFlags(IDeckLinkVideoInputFrame_v7_3* This) {
    return This->lpVtbl->GetFlags(This);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_3_GetBytes(IDeckLinkVideoInputFrame_v7_3* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_3_GetTimecode(IDeckLinkVideoInputFrame_v7_3* This,BMDTimecodeFormat format,IDeckLinkTimecode_v7_6 **timecode) {
    return This->lpVtbl->GetTimecode(This,format,timecode);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_3_GetAncillaryData(IDeckLinkVideoInputFrame_v7_3* This,IDeckLinkVideoFrameAncillary **ancillary) {
    return This->lpVtbl->GetAncillaryData(This,ancillary);
}
/*** IDeckLinkVideoInputFrame_v7_3 methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_3_GetStreamTime(IDeckLinkVideoInputFrame_v7_3* This,BMDTimeValue *frameTime,BMDTimeValue *frameDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->GetStreamTime(This,frameTime,frameDuration,timeScale);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoInputFrame_v7_3_INTERFACE_DEFINED__ */

#ifndef __IDeckLinkDisplayModeIterator_v7_1_FWD_DEFINED__
#define __IDeckLinkDisplayModeIterator_v7_1_FWD_DEFINED__
typedef interface IDeckLinkDisplayModeIterator_v7_1 IDeckLinkDisplayModeIterator_v7_1;
#ifdef __cplusplus
interface IDeckLinkDisplayModeIterator_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkDisplayMode_v7_1_FWD_DEFINED__
#define __IDeckLinkDisplayMode_v7_1_FWD_DEFINED__
typedef interface IDeckLinkDisplayMode_v7_1 IDeckLinkDisplayMode_v7_1;
#ifdef __cplusplus
interface IDeckLinkDisplayMode_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoFrame_v7_1_FWD_DEFINED__
#define __IDeckLinkVideoFrame_v7_1_FWD_DEFINED__
typedef interface IDeckLinkVideoFrame_v7_1 IDeckLinkVideoFrame_v7_1;
#ifdef __cplusplus
interface IDeckLinkVideoFrame_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkVideoInputFrame_v7_1_FWD_DEFINED__
#define __IDeckLinkVideoInputFrame_v7_1_FWD_DEFINED__
typedef interface IDeckLinkVideoInputFrame_v7_1 IDeckLinkVideoInputFrame_v7_1;
#ifdef __cplusplus
interface IDeckLinkVideoInputFrame_v7_1;
#endif /* __cplusplus */
#endif

#ifndef __IDeckLinkAudioInputPacket_v7_1_FWD_DEFINED__
#define __IDeckLinkAudioInputPacket_v7_1_FWD_DEFINED__
typedef interface IDeckLinkAudioInputPacket_v7_1 IDeckLinkAudioInputPacket_v7_1;
#ifdef __cplusplus
interface IDeckLinkAudioInputPacket_v7_1;
#endif /* __cplusplus */
#endif

/*****************************************************************************
 * IDeckLinkDisplayModeIterator_v7_1 interface
 */
#ifndef __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__
#define __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDisplayModeIterator_v7_1, 0xb28131b6, 0x59ac, 0x4857, 0xb5,0xac, 0xcd,0x75,0xd5,0x88,0x3e,0x2f);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("b28131b6-59ac-4857-b5ac-cd75d5883e2f")
IDeckLinkDisplayModeIterator_v7_1 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        IDeckLinkDisplayMode_v7_1 **deckLinkDisplayMode) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDisplayModeIterator_v7_1, 0xb28131b6, 0x59ac, 0x4857, 0xb5,0xac, 0xcd,0x75,0xd5,0x88,0x3e,0x2f)
#endif
#else
typedef struct IDeckLinkDisplayModeIterator_v7_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDisplayModeIterator_v7_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDisplayModeIterator_v7_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDisplayModeIterator_v7_1 *This);

    /*** IDeckLinkDisplayModeIterator_v7_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        IDeckLinkDisplayModeIterator_v7_1 *This,
        IDeckLinkDisplayMode_v7_1 **deckLinkDisplayMode);

    END_INTERFACE
} IDeckLinkDisplayModeIterator_v7_1Vtbl;

interface IDeckLinkDisplayModeIterator_v7_1 {
    CONST_VTBL IDeckLinkDisplayModeIterator_v7_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkDisplayModeIterator_v7_1 methods ***/
#define IDeckLinkDisplayModeIterator_v7_1_Next(This,deckLinkDisplayMode) (This)->lpVtbl->Next(This,deckLinkDisplayMode)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayModeIterator_v7_1_QueryInterface(IDeckLinkDisplayModeIterator_v7_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDisplayModeIterator_v7_1_AddRef(IDeckLinkDisplayModeIterator_v7_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDisplayModeIterator_v7_1_Release(IDeckLinkDisplayModeIterator_v7_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDisplayModeIterator_v7_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayModeIterator_v7_1_Next(IDeckLinkDisplayModeIterator_v7_1* This,IDeckLinkDisplayMode_v7_1 **deckLinkDisplayMode) {
    return This->lpVtbl->Next(This,deckLinkDisplayMode);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDisplayModeIterator_v7_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkDisplayMode_v7_1 interface
 */
#ifndef __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__
#define __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkDisplayMode_v7_1, 0xaf0cd6d5, 0x8376, 0x435e, 0x84,0x33, 0x54,0xf9,0xdd,0x53,0x0a,0xc3);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("af0cd6d5-8376-435e-8433-54f9dd530ac3")
IDeckLinkDisplayMode_v7_1 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetName(
        BSTR *name) = 0;

    virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetWidth(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetHeight(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFrameRate(
        BMDTimeValue *frameDuration,
        BMDTimeScale *timeScale) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkDisplayMode_v7_1, 0xaf0cd6d5, 0x8376, 0x435e, 0x84,0x33, 0x54,0xf9,0xdd,0x53,0x0a,0xc3)
#endif
#else
typedef struct IDeckLinkDisplayMode_v7_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkDisplayMode_v7_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkDisplayMode_v7_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkDisplayMode_v7_1 *This);

    /*** IDeckLinkDisplayMode_v7_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetName)(
        IDeckLinkDisplayMode_v7_1 *This,
        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,
        BMDTimeValue *frameDuration,
        BMDTimeScale *timeScale);

    END_INTERFACE
} IDeckLinkDisplayMode_v7_1Vtbl;

interface IDeckLinkDisplayMode_v7_1 {
    CONST_VTBL IDeckLinkDisplayMode_v7_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkDisplayMode_v7_1 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayMode_v7_1_QueryInterface(IDeckLinkDisplayMode_v7_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkDisplayMode_v7_1_AddRef(IDeckLinkDisplayMode_v7_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkDisplayMode_v7_1_Release(IDeckLinkDisplayMode_v7_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkDisplayMode_v7_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkDisplayMode_v7_1_GetName(IDeckLinkDisplayMode_v7_1* This,BSTR *name) {
    return This->lpVtbl->GetName(This,name);
}
static FORCEINLINE BMDDisplayMode IDeckLinkDisplayMode_v7_1_GetDisplayMode(IDeckLinkDisplayMode_v7_1* This) {
    return This->lpVtbl->GetDisplayMode(This);
}
static FORCEINLINE LONG IDeckLinkDisplayMode_v7_1_GetWidth(IDeckLinkDisplayMode_v7_1* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkDisplayMode_v7_1_GetHeight(IDeckLinkDisplayMode_v7_1* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE HRESULT IDeckLinkDisplayMode_v7_1_GetFrameRate(IDeckLinkDisplayMode_v7_1* This,BMDTimeValue *frameDuration,BMDTimeScale *timeScale) {
    return This->lpVtbl->GetFrameRate(This,frameDuration,timeScale);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkDisplayMode_v7_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoOutputCallback_v7_1 interface
 */
#ifndef __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__
#define __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoOutputCallback_v7_1, 0xebd01afa, 0xe4b0, 0x49c6, 0xa0,0x1d, 0xed,0xb9,0xd1,0xb5,0x5f,0xd9);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ebd01afa-e4b0-49c6-a01d-edb9d1b55fd9")
IDeckLinkVideoOutputCallback_v7_1 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted(
        IDeckLinkVideoFrame_v7_1 *completedFrame,
        BMDOutputFrameCompletionResult result) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoOutputCallback_v7_1, 0xebd01afa, 0xe4b0, 0x49c6, 0xa0,0x1d, 0xed,0xb9,0xd1,0xb5,0x5f,0xd9)
#endif
#else
typedef struct IDeckLinkVideoOutputCallback_v7_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoOutputCallback_v7_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoOutputCallback_v7_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoOutputCallback_v7_1 *This);

    /*** IDeckLinkVideoOutputCallback_v7_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *ScheduledFrameCompleted)(
        IDeckLinkVideoOutputCallback_v7_1 *This,
        IDeckLinkVideoFrame_v7_1 *completedFrame,
        BMDOutputFrameCompletionResult result);

    END_INTERFACE
} IDeckLinkVideoOutputCallback_v7_1Vtbl;

interface IDeckLinkVideoOutputCallback_v7_1 {
    CONST_VTBL IDeckLinkVideoOutputCallback_v7_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkVideoOutputCallback_v7_1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkVideoOutputCallback_v7_1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkVideoOutputCallback_v7_1_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkVideoOutputCallback_v7_1 methods ***/
#define IDeckLinkVideoOutputCallback_v7_1_ScheduledFrameCompleted(This,completedFrame,result) (This)->lpVtbl->ScheduledFrameCompleted(This,completedFrame,result)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoOutputCallback_v7_1_QueryInterface(IDeckLinkVideoOutputCallback_v7_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoOutputCallback_v7_1_AddRef(IDeckLinkVideoOutputCallback_v7_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoOutputCallback_v7_1_Release(IDeckLinkVideoOutputCallback_v7_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoOutputCallback_v7_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoOutputCallback_v7_1_ScheduledFrameCompleted(IDeckLinkVideoOutputCallback_v7_1* This,IDeckLinkVideoFrame_v7_1 *completedFrame,BMDOutputFrameCompletionResult result) {
    return This->lpVtbl->ScheduledFrameCompleted(This,completedFrame,result);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoOutputCallback_v7_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInputCallback_v7_1 interface
 */
#ifndef __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__
#define __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInputCallback_v7_1, 0x7f94f328, 0x5ed4, 0x4e9f, 0x97,0x29, 0x76,0xa8,0x6b,0xdc,0x99,0xcc);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("7f94f328-5ed4-4e9f-9729-76a86bdc99cc")
IDeckLinkInputCallback_v7_1 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived(
        IDeckLinkVideoInputFrame_v7_1 *videoFrame,
        IDeckLinkAudioInputPacket_v7_1 *audioPacket) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInputCallback_v7_1, 0x7f94f328, 0x5ed4, 0x4e9f, 0x97,0x29, 0x76,0xa8,0x6b,0xdc,0x99,0xcc)
#endif
#else
typedef struct IDeckLinkInputCallback_v7_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInputCallback_v7_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInputCallback_v7_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInputCallback_v7_1 *This);

    /*** IDeckLinkInputCallback_v7_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *VideoInputFrameArrived)(
        IDeckLinkInputCallback_v7_1 *This,
        IDeckLinkVideoInputFrame_v7_1 *videoFrame,
        IDeckLinkAudioInputPacket_v7_1 *audioPacket);

    END_INTERFACE
} IDeckLinkInputCallback_v7_1Vtbl;

interface IDeckLinkInputCallback_v7_1 {
    CONST_VTBL IDeckLinkInputCallback_v7_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkInputCallback_v7_1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkInputCallback_v7_1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkInputCallback_v7_1_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkInputCallback_v7_1 methods ***/
#define IDeckLinkInputCallback_v7_1_VideoInputFrameArrived(This,videoFrame,audioPacket) (This)->lpVtbl->VideoInputFrameArrived(This,videoFrame,audioPacket)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInputCallback_v7_1_QueryInterface(IDeckLinkInputCallback_v7_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInputCallback_v7_1_AddRef(IDeckLinkInputCallback_v7_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInputCallback_v7_1_Release(IDeckLinkInputCallback_v7_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInputCallback_v7_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkInputCallback_v7_1_VideoInputFrameArrived(IDeckLinkInputCallback_v7_1* This,IDeckLinkVideoInputFrame_v7_1 *videoFrame,IDeckLinkAudioInputPacket_v7_1 *audioPacket) {
    return This->lpVtbl->VideoInputFrameArrived(This,videoFrame,audioPacket);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInputCallback_v7_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkOutput_v7_1 interface
 */
#ifndef __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__
#define __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkOutput_v7_1, 0xae5b3e9b, 0x4e1e, 0x4535, 0xb6,0xe8, 0x48,0x0f,0xf5,0x2f,0x6c,0xe5);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("ae5b3e9b-4e1e-4535-b6e8-480ff52f6ce5")
IDeckLinkOutput_v7_1 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator_v7_1 **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput(
        BMDDisplayMode displayMode) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator(
        IDeckLinkMemoryAllocator *theAllocator) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame(
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkVideoFrame_v7_1 **outFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateVideoFrameFromBuffer(
        void *buffer,
        int width,
        int height,
        int 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(
        IDeckLinkVideoOutputCallback_v7_1 *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync(
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples(
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount(
        unsigned int *bufferedSampleCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAudioCallback(
        IDeckLinkAudioOutputCallback *theCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback(
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback(
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock(
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *elapsedTimeSinceSchedulerBegan) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkOutput_v7_1, 0xae5b3e9b, 0x4e1e, 0x4535, 0xb6,0xe8, 0x48,0x0f,0xf5,0x2f,0x6c,0xe5)
#endif
#else
typedef struct IDeckLinkOutput_v7_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkOutput_v7_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkOutput_v7_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkOutput_v7_1 *This);

    /*** IDeckLinkOutput_v7_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkOutput_v7_1 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkOutput_v7_1 *This,
        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,
        IDeckLinkMemoryAllocator *theAllocator);

    HRESULT (STDMETHODCALLTYPE *CreateVideoFrame)(
        IDeckLinkOutput_v7_1 *This,
        int width,
        int height,
        int rowBytes,
        BMDPixelFormat pixelFormat,
        BMDFrameFlags flags,
        IDeckLinkVideoFrame_v7_1 **outFrame);

    HRESULT (STDMETHODCALLTYPE *CreateVideoFrameFromBuffer)(
        IDeckLinkOutput_v7_1 *This,
        void *buffer,
        int width,
        int height,
        int 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,
        IDeckLinkVideoOutputCallback_v7_1 *theCallback);

    HRESULT (STDMETHODCALLTYPE *EnableAudioOutput)(
        IDeckLinkOutput_v7_1 *This,
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioOutput)(
        IDeckLinkOutput_v7_1 *This);

    HRESULT (STDMETHODCALLTYPE *WriteAudioSamplesSync)(
        IDeckLinkOutput_v7_1 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *BeginAudioPreroll)(
        IDeckLinkOutput_v7_1 *This);

    HRESULT (STDMETHODCALLTYPE *EndAudioPreroll)(
        IDeckLinkOutput_v7_1 *This);

    HRESULT (STDMETHODCALLTYPE *ScheduleAudioSamples)(
        IDeckLinkOutput_v7_1 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        BMDTimeValue streamTime,
        BMDTimeScale timeScale,
        unsigned int *sampleFramesWritten);

    HRESULT (STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount)(
        IDeckLinkOutput_v7_1 *This,
        unsigned int *bufferedSampleCount);

    HRESULT (STDMETHODCALLTYPE *FlushBufferedAudioSamples)(
        IDeckLinkOutput_v7_1 *This);

    HRESULT (STDMETHODCALLTYPE *SetAudioCallback)(
        IDeckLinkOutput_v7_1 *This,
        IDeckLinkAudioOutputCallback *theCallback);

    HRESULT (STDMETHODCALLTYPE *StartScheduledPlayback)(
        IDeckLinkOutput_v7_1 *This,
        BMDTimeValue playbackStartTime,
        BMDTimeScale timeScale,
        double playbackSpeed);

    HRESULT (STDMETHODCALLTYPE *StopScheduledPlayback)(
        IDeckLinkOutput_v7_1 *This,
        BMDTimeValue stopPlaybackAtTime,
        BMDTimeValue *actualStopTime,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *GetHardwareReferenceClock)(
        IDeckLinkOutput_v7_1 *This,
        BMDTimeScale desiredTimeScale,
        BMDTimeValue *elapsedTimeSinceSchedulerBegan);

    END_INTERFACE
} IDeckLinkOutput_v7_1Vtbl;

interface IDeckLinkOutput_v7_1 {
    CONST_VTBL IDeckLinkOutput_v7_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkOutput_v7_1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkOutput_v7_1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkOutput_v7_1_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkOutput_v7_1 methods ***/
#define IDeckLinkOutput_v7_1_DoesSupportVideoMode(This,displayMode,pixelFormat,result) (This)->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,result)
#define IDeckLinkOutput_v7_1_GetDisplayModeIterator(This,iterator) (This)->lpVtbl->GetDisplayModeIterator(This,iterator)
#define IDeckLinkOutput_v7_1_EnableVideoOutput(This,displayMode) (This)->lpVtbl->EnableVideoOutput(This,displayMode)
#define IDeckLinkOutput_v7_1_DisableVideoOutput(This) (This)->lpVtbl->DisableVideoOutput(This)
#define IDeckLinkOutput_v7_1_SetVideoOutputFrameMemoryAllocator(This,theAllocator) (This)->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator)
#define IDeckLinkOutput_v7_1_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) (This)->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame)
#define IDeckLinkOutput_v7_1_CreateVideoFrameFromBuffer(This,buffer,width,height,rowBytes,pixelFormat,flags,outFrame) (This)->lpVtbl->CreateVideoFrameFromBuffer(This,buffer,width,height,rowBytes,pixelFormat,flags,outFrame)
#define IDeckLinkOutput_v7_1_DisplayVideoFrameSync(This,theFrame) (This)->lpVtbl->DisplayVideoFrameSync(This,theFrame)
#define IDeckLinkOutput_v7_1_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) (This)->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale)
#define IDeckLinkOutput_v7_1_SetScheduledFrameCompletionCallback(This,theCallback) (This)->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback)
#define IDeckLinkOutput_v7_1_EnableAudioOutput(This,sampleRate,sampleType,channelCount) (This)->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount)
#define IDeckLinkOutput_v7_1_DisableAudioOutput(This) (This)->lpVtbl->DisableAudioOutput(This)
#define IDeckLinkOutput_v7_1_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) (This)->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten)
#define IDeckLinkOutput_v7_1_BeginAudioPreroll(This) (This)->lpVtbl->BeginAudioPreroll(This)
#define IDeckLinkOutput_v7_1_EndAudioPreroll(This) (This)->lpVtbl->EndAudioPreroll(This)
#define IDeckLinkOutput_v7_1_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) (This)->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten)
#define IDeckLinkOutput_v7_1_GetBufferedAudioSampleFrameCount(This,bufferedSampleCount) (This)->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleCount)
#define IDeckLinkOutput_v7_1_FlushBufferedAudioSamples(This) (This)->lpVtbl->FlushBufferedAudioSamples(This)
#define IDeckLinkOutput_v7_1_SetAudioCallback(This,theCallback) (This)->lpVtbl->SetAudioCallback(This,theCallback)
#define IDeckLinkOutput_v7_1_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) (This)->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed)
#define IDeckLinkOutput_v7_1_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) (This)->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale)
#define IDeckLinkOutput_v7_1_GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan) (This)->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_QueryInterface(IDeckLinkOutput_v7_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkOutput_v7_1_AddRef(IDeckLinkOutput_v7_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkOutput_v7_1_Release(IDeckLinkOutput_v7_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkOutput_v7_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_DoesSupportVideoMode(IDeckLinkOutput_v7_1* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDDisplayModeSupport_v10_11 *result) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,result);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_GetDisplayModeIterator(IDeckLinkOutput_v7_1* This,IDeckLinkDisplayModeIterator_v7_1 **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_EnableVideoOutput(IDeckLinkOutput_v7_1* This,BMDDisplayMode displayMode) {
    return This->lpVtbl->EnableVideoOutput(This,displayMode);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_DisableVideoOutput(IDeckLinkOutput_v7_1* This) {
    return This->lpVtbl->DisableVideoOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_SetVideoOutputFrameMemoryAllocator(IDeckLinkOutput_v7_1* This,IDeckLinkMemoryAllocator *theAllocator) {
    return This->lpVtbl->SetVideoOutputFrameMemoryAllocator(This,theAllocator);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_CreateVideoFrame(IDeckLinkOutput_v7_1* This,int width,int height,int rowBytes,BMDPixelFormat pixelFormat,BMDFrameFlags flags,IDeckLinkVideoFrame_v7_1 **outFrame) {
    return This->lpVtbl->CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_CreateVideoFrameFromBuffer(IDeckLinkOutput_v7_1* This,void *buffer,int width,int height,int rowBytes,BMDPixelFormat pixelFormat,BMDFrameFlags flags,IDeckLinkVideoFrame_v7_1 **outFrame) {
    return This->lpVtbl->CreateVideoFrameFromBuffer(This,buffer,width,height,rowBytes,pixelFormat,flags,outFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_DisplayVideoFrameSync(IDeckLinkOutput_v7_1* This,IDeckLinkVideoFrame_v7_1 *theFrame) {
    return This->lpVtbl->DisplayVideoFrameSync(This,theFrame);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_ScheduleVideoFrame(IDeckLinkOutput_v7_1* This,IDeckLinkVideoFrame_v7_1 *theFrame,BMDTimeValue displayTime,BMDTimeValue displayDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_SetScheduledFrameCompletionCallback(IDeckLinkOutput_v7_1* This,IDeckLinkVideoOutputCallback_v7_1 *theCallback) {
    return This->lpVtbl->SetScheduledFrameCompletionCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_EnableAudioOutput(IDeckLinkOutput_v7_1* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioOutput(This,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_DisableAudioOutput(IDeckLinkOutput_v7_1* This) {
    return This->lpVtbl->DisableAudioOutput(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_WriteAudioSamplesSync(IDeckLinkOutput_v7_1* This,void *buffer,unsigned int sampleFrameCount,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_BeginAudioPreroll(IDeckLinkOutput_v7_1* This) {
    return This->lpVtbl->BeginAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_EndAudioPreroll(IDeckLinkOutput_v7_1* This) {
    return This->lpVtbl->EndAudioPreroll(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_ScheduleAudioSamples(IDeckLinkOutput_v7_1* This,void *buffer,unsigned int sampleFrameCount,BMDTimeValue streamTime,BMDTimeScale timeScale,unsigned int *sampleFramesWritten) {
    return This->lpVtbl->ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_GetBufferedAudioSampleFrameCount(IDeckLinkOutput_v7_1* This,unsigned int *bufferedSampleCount) {
    return This->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleCount);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_FlushBufferedAudioSamples(IDeckLinkOutput_v7_1* This) {
    return This->lpVtbl->FlushBufferedAudioSamples(This);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_SetAudioCallback(IDeckLinkOutput_v7_1* This,IDeckLinkAudioOutputCallback *theCallback) {
    return This->lpVtbl->SetAudioCallback(This,theCallback);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_StartScheduledPlayback(IDeckLinkOutput_v7_1* This,BMDTimeValue playbackStartTime,BMDTimeScale timeScale,double playbackSpeed) {
    return This->lpVtbl->StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_StopScheduledPlayback(IDeckLinkOutput_v7_1* This,BMDTimeValue stopPlaybackAtTime,BMDTimeValue *actualStopTime,BMDTimeScale timeScale) {
    return This->lpVtbl->StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkOutput_v7_1_GetHardwareReferenceClock(IDeckLinkOutput_v7_1* This,BMDTimeScale desiredTimeScale,BMDTimeValue *elapsedTimeSinceSchedulerBegan) {
    return This->lpVtbl->GetHardwareReferenceClock(This,desiredTimeScale,elapsedTimeSinceSchedulerBegan);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkOutput_v7_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkInput_v7_1 interface
 */
#ifndef __IDeckLinkInput_v7_1_INTERFACE_DEFINED__
#define __IDeckLinkInput_v7_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkInput_v7_1, 0x2b54edef, 0x5b32, 0x429f, 0xba,0x11, 0xbb,0x99,0x05,0x96,0xea,0xcd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("2b54edef-5b32-429f-ba11-bb990596eacd")
IDeckLinkInput_v7_1 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator(
        IDeckLinkDisplayModeIterator_v7_1 **iterator) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableVideoInput(
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDVideoInputFlags flags) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableVideoInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableAudioInput(
        BMDAudioSampleRate sampleRate,
        BMDAudioSampleType sampleType,
        unsigned int channelCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE DisableAudioInput(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReadAudioSamples(
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesRead,
        BMDTimeValue *audioPacketTime,
        BMDTimeScale timeScale) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount(
        unsigned int *bufferedSampleCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StartStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE StopStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE PauseStreams(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetCallback(
        IDeckLinkInputCallback_v7_1 *theCallback) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkInput_v7_1, 0x2b54edef, 0x5b32, 0x429f, 0xba,0x11, 0xbb,0x99,0x05,0x96,0xea,0xcd)
#endif
#else
typedef struct IDeckLinkInput_v7_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkInput_v7_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkInput_v7_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkInput_v7_1 *This);

    /*** IDeckLinkInput_v7_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *DoesSupportVideoMode)(
        IDeckLinkInput_v7_1 *This,
        BMDDisplayMode displayMode,
        BMDPixelFormat pixelFormat,
        BMDDisplayModeSupport_v10_11 *result);

    HRESULT (STDMETHODCALLTYPE *GetDisplayModeIterator)(
        IDeckLinkInput_v7_1 *This,
        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 int channelCount);

    HRESULT (STDMETHODCALLTYPE *DisableAudioInput)(
        IDeckLinkInput_v7_1 *This);

    HRESULT (STDMETHODCALLTYPE *ReadAudioSamples)(
        IDeckLinkInput_v7_1 *This,
        void *buffer,
        unsigned int sampleFrameCount,
        unsigned int *sampleFramesRead,
        BMDTimeValue *audioPacketTime,
        BMDTimeScale timeScale);

    HRESULT (STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount)(
        IDeckLinkInput_v7_1 *This,
        unsigned int *bufferedSampleCount);

    HRESULT (STDMETHODCALLTYPE *StartStreams)(
        IDeckLinkInput_v7_1 *This);

    HRESULT (STDMETHODCALLTYPE *StopStreams)(
        IDeckLinkInput_v7_1 *This);

    HRESULT (STDMETHODCALLTYPE *PauseStreams)(
        IDeckLinkInput_v7_1 *This);

    HRESULT (STDMETHODCALLTYPE *SetCallback)(
        IDeckLinkInput_v7_1 *This,
        IDeckLinkInputCallback_v7_1 *theCallback);

    END_INTERFACE
} IDeckLinkInput_v7_1Vtbl;

interface IDeckLinkInput_v7_1 {
    CONST_VTBL IDeckLinkInput_v7_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkInput_v7_1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkInput_v7_1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkInput_v7_1_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkInput_v7_1 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_QueryInterface(IDeckLinkInput_v7_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkInput_v7_1_AddRef(IDeckLinkInput_v7_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkInput_v7_1_Release(IDeckLinkInput_v7_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkInput_v7_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_DoesSupportVideoMode(IDeckLinkInput_v7_1* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDDisplayModeSupport_v10_11 *result) {
    return This->lpVtbl->DoesSupportVideoMode(This,displayMode,pixelFormat,result);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_GetDisplayModeIterator(IDeckLinkInput_v7_1* This,IDeckLinkDisplayModeIterator_v7_1 **iterator) {
    return This->lpVtbl->GetDisplayModeIterator(This,iterator);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_EnableVideoInput(IDeckLinkInput_v7_1* This,BMDDisplayMode displayMode,BMDPixelFormat pixelFormat,BMDVideoInputFlags flags) {
    return This->lpVtbl->EnableVideoInput(This,displayMode,pixelFormat,flags);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_DisableVideoInput(IDeckLinkInput_v7_1* This) {
    return This->lpVtbl->DisableVideoInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_EnableAudioInput(IDeckLinkInput_v7_1* This,BMDAudioSampleRate sampleRate,BMDAudioSampleType sampleType,unsigned int channelCount) {
    return This->lpVtbl->EnableAudioInput(This,sampleRate,sampleType,channelCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_DisableAudioInput(IDeckLinkInput_v7_1* This) {
    return This->lpVtbl->DisableAudioInput(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_ReadAudioSamples(IDeckLinkInput_v7_1* This,void *buffer,unsigned int sampleFrameCount,unsigned int *sampleFramesRead,BMDTimeValue *audioPacketTime,BMDTimeScale timeScale) {
    return This->lpVtbl->ReadAudioSamples(This,buffer,sampleFrameCount,sampleFramesRead,audioPacketTime,timeScale);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_GetBufferedAudioSampleFrameCount(IDeckLinkInput_v7_1* This,unsigned int *bufferedSampleCount) {
    return This->lpVtbl->GetBufferedAudioSampleFrameCount(This,bufferedSampleCount);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_StartStreams(IDeckLinkInput_v7_1* This) {
    return This->lpVtbl->StartStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_StopStreams(IDeckLinkInput_v7_1* This) {
    return This->lpVtbl->StopStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_PauseStreams(IDeckLinkInput_v7_1* This) {
    return This->lpVtbl->PauseStreams(This);
}
static FORCEINLINE HRESULT IDeckLinkInput_v7_1_SetCallback(IDeckLinkInput_v7_1* This,IDeckLinkInputCallback_v7_1 *theCallback) {
    return This->lpVtbl->SetCallback(This,theCallback);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkInput_v7_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoFrame_v7_1 interface
 */
#ifndef __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__
#define __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoFrame_v7_1, 0x333f3a10, 0x8c2d, 0x43cf, 0xb7,0x9d, 0x46,0x56,0x0f,0xee,0xa1,0xce);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("333f3a10-8c2d-43cf-b79d-46560feea1ce")
IDeckLinkVideoFrame_v7_1 : public IUnknown
{
    virtual LONG STDMETHODCALLTYPE GetWidth(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetHeight(
        ) = 0;

    virtual LONG STDMETHODCALLTYPE GetRowBytes(
        ) = 0;

    virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat(
        ) = 0;

    virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        void **buffer) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoFrame_v7_1, 0x333f3a10, 0x8c2d, 0x43cf, 0xb7,0x9d, 0x46,0x56,0x0f,0xee,0xa1,0xce)
#endif
#else
typedef struct IDeckLinkVideoFrame_v7_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoFrame_v7_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoFrame_v7_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoFrame_v7_1 *This);

    /*** IDeckLinkVideoFrame_v7_1 methods ***/
    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 IDeckLinkVideoFrame_v7_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkVideoFrame_v7_1 methods ***/
#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)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoFrame_v7_1_QueryInterface(IDeckLinkVideoFrame_v7_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoFrame_v7_1_AddRef(IDeckLinkVideoFrame_v7_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoFrame_v7_1_Release(IDeckLinkVideoFrame_v7_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrame_v7_1 methods ***/
static FORCEINLINE LONG IDeckLinkVideoFrame_v7_1_GetWidth(IDeckLinkVideoFrame_v7_1* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkVideoFrame_v7_1_GetHeight(IDeckLinkVideoFrame_v7_1* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE LONG IDeckLinkVideoFrame_v7_1_GetRowBytes(IDeckLinkVideoFrame_v7_1* This) {
    return This->lpVtbl->GetRowBytes(This);
}
static FORCEINLINE BMDPixelFormat IDeckLinkVideoFrame_v7_1_GetPixelFormat(IDeckLinkVideoFrame_v7_1* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE BMDFrameFlags IDeckLinkVideoFrame_v7_1_GetFlags(IDeckLinkVideoFrame_v7_1* This) {
    return This->lpVtbl->GetFlags(This);
}
static FORCEINLINE HRESULT IDeckLinkVideoFrame_v7_1_GetBytes(IDeckLinkVideoFrame_v7_1* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoFrame_v7_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkVideoInputFrame_v7_1 interface
 */
#ifndef __IDeckLinkVideoInputFrame_v7_1_INTERFACE_DEFINED__
#define __IDeckLinkVideoInputFrame_v7_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkVideoInputFrame_v7_1, 0xc8b41d95, 0x8848, 0x40ee, 0x9b,0x37, 0x6e,0x34,0x17,0xfb,0x11,0x4b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c8b41d95-8848-40ee-9b37-6e3417fb114b")
IDeckLinkVideoInputFrame_v7_1 : public IDeckLinkVideoFrame_v7_1
{
    virtual HRESULT STDMETHODCALLTYPE GetFrameTime(
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration,
        BMDTimeScale timeScale) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkVideoInputFrame_v7_1, 0xc8b41d95, 0x8848, 0x40ee, 0x9b,0x37, 0x6e,0x34,0x17,0xfb,0x11,0x4b)
#endif
#else
typedef struct IDeckLinkVideoInputFrame_v7_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkVideoInputFrame_v7_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkVideoInputFrame_v7_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkVideoInputFrame_v7_1 *This);

    /*** IDeckLinkVideoFrame_v7_1 methods ***/
    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);

    /*** IDeckLinkVideoInputFrame_v7_1 methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFrameTime)(
        IDeckLinkVideoInputFrame_v7_1 *This,
        BMDTimeValue *frameTime,
        BMDTimeValue *frameDuration,
        BMDTimeScale timeScale);

    END_INTERFACE
} IDeckLinkVideoInputFrame_v7_1Vtbl;

interface IDeckLinkVideoInputFrame_v7_1 {
    CONST_VTBL IDeckLinkVideoInputFrame_v7_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#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)
/*** IDeckLinkVideoFrame_v7_1 methods ***/
#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)
/*** IDeckLinkVideoInputFrame_v7_1 methods ***/
#define IDeckLinkVideoInputFrame_v7_1_GetFrameTime(This,frameTime,frameDuration,timeScale) (This)->lpVtbl->GetFrameTime(This,frameTime,frameDuration,timeScale)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_1_QueryInterface(IDeckLinkVideoInputFrame_v7_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkVideoInputFrame_v7_1_AddRef(IDeckLinkVideoInputFrame_v7_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkVideoInputFrame_v7_1_Release(IDeckLinkVideoInputFrame_v7_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkVideoFrame_v7_1 methods ***/
static FORCEINLINE LONG IDeckLinkVideoInputFrame_v7_1_GetWidth(IDeckLinkVideoInputFrame_v7_1* This) {
    return This->lpVtbl->GetWidth(This);
}
static FORCEINLINE LONG IDeckLinkVideoInputFrame_v7_1_GetHeight(IDeckLinkVideoInputFrame_v7_1* This) {
    return This->lpVtbl->GetHeight(This);
}
static FORCEINLINE LONG IDeckLinkVideoInputFrame_v7_1_GetRowBytes(IDeckLinkVideoInputFrame_v7_1* This) {
    return This->lpVtbl->GetRowBytes(This);
}
static FORCEINLINE BMDPixelFormat IDeckLinkVideoInputFrame_v7_1_GetPixelFormat(IDeckLinkVideoInputFrame_v7_1* This) {
    return This->lpVtbl->GetPixelFormat(This);
}
static FORCEINLINE BMDFrameFlags IDeckLinkVideoInputFrame_v7_1_GetFlags(IDeckLinkVideoInputFrame_v7_1* This) {
    return This->lpVtbl->GetFlags(This);
}
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_1_GetBytes(IDeckLinkVideoInputFrame_v7_1* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
/*** IDeckLinkVideoInputFrame_v7_1 methods ***/
static FORCEINLINE HRESULT IDeckLinkVideoInputFrame_v7_1_GetFrameTime(IDeckLinkVideoInputFrame_v7_1* This,BMDTimeValue *frameTime,BMDTimeValue *frameDuration,BMDTimeScale timeScale) {
    return This->lpVtbl->GetFrameTime(This,frameTime,frameDuration,timeScale);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkVideoInputFrame_v7_1_INTERFACE_DEFINED__ */

/*****************************************************************************
 * IDeckLinkAudioInputPacket_v7_1 interface
 */
#ifndef __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__
#define __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__

DEFINE_GUID(IID_IDeckLinkAudioInputPacket_v7_1, 0xc86de4f6, 0xa29f, 0x42e3, 0xab,0x3a, 0x13,0x63,0xe2,0x9f,0x07,0x88);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("c86de4f6-a29f-42e3-ab3a-1363e29f0788")
IDeckLinkAudioInputPacket_v7_1 : public IUnknown
{
    virtual LONG STDMETHODCALLTYPE GetSampleCount(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBytes(
        void **buffer) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAudioPacketTime(
        BMDTimeValue *packetTime,
        BMDTimeScale timeScale) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(IDeckLinkAudioInputPacket_v7_1, 0xc86de4f6, 0xa29f, 0x42e3, 0xab,0x3a, 0x13,0x63,0xe2,0x9f,0x07,0x88)
#endif
#else
typedef struct IDeckLinkAudioInputPacket_v7_1Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        IDeckLinkAudioInputPacket_v7_1 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        IDeckLinkAudioInputPacket_v7_1 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        IDeckLinkAudioInputPacket_v7_1 *This);

    /*** IDeckLinkAudioInputPacket_v7_1 methods ***/
    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 IDeckLinkAudioInputPacket_v7_1Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define IDeckLinkAudioInputPacket_v7_1_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define IDeckLinkAudioInputPacket_v7_1_AddRef(This) (This)->lpVtbl->AddRef(This)
#define IDeckLinkAudioInputPacket_v7_1_Release(This) (This)->lpVtbl->Release(This)
/*** IDeckLinkAudioInputPacket_v7_1 methods ***/
#define IDeckLinkAudioInputPacket_v7_1_GetSampleCount(This) (This)->lpVtbl->GetSampleCount(This)
#define IDeckLinkAudioInputPacket_v7_1_GetBytes(This,buffer) (This)->lpVtbl->GetBytes(This,buffer)
#define IDeckLinkAudioInputPacket_v7_1_GetAudioPacketTime(This,packetTime,timeScale) (This)->lpVtbl->GetAudioPacketTime(This,packetTime,timeScale)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT IDeckLinkAudioInputPacket_v7_1_QueryInterface(IDeckLinkAudioInputPacket_v7_1* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG IDeckLinkAudioInputPacket_v7_1_AddRef(IDeckLinkAudioInputPacket_v7_1* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG IDeckLinkAudioInputPacket_v7_1_Release(IDeckLinkAudioInputPacket_v7_1* This) {
    return This->lpVtbl->Release(This);
}
/*** IDeckLinkAudioInputPacket_v7_1 methods ***/
static FORCEINLINE LONG IDeckLinkAudioInputPacket_v7_1_GetSampleCount(IDeckLinkAudioInputPacket_v7_1* This) {
    return This->lpVtbl->GetSampleCount(This);
}
static FORCEINLINE HRESULT IDeckLinkAudioInputPacket_v7_1_GetBytes(IDeckLinkAudioInputPacket_v7_1* This,void **buffer) {
    return This->lpVtbl->GetBytes(This,buffer);
}
static FORCEINLINE HRESULT IDeckLinkAudioInputPacket_v7_1_GetAudioPacketTime(IDeckLinkAudioInputPacket_v7_1* This,BMDTimeValue *packetTime,BMDTimeScale timeScale) {
    return This->lpVtbl->GetAudioPacketTime(This,packetTime,timeScale);
}
#endif
#endif

#endif


#endif  /* __IDeckLinkAudioInputPacket_v7_1_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */

ULONG           __RPC_USER BSTR_UserSize     (ULONG *, ULONG, BSTR *);
unsigned char * __RPC_USER BSTR_UserMarshal  (ULONG *, unsigned char *, BSTR *);
unsigned char * __RPC_USER BSTR_UserUnmarshal(ULONG *, unsigned char *, BSTR *);
void            __RPC_USER BSTR_UserFree     (ULONG *, BSTR *);

/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __decklinkapi_h__ */
