/* -LICENSE-START- ** Copyright (c) 2011 Blackmagic Design ** ** Permission is hereby granted, free of charge, to any person or organization ** obtaining a copy of the software and accompanying documentation covered by ** this license (the "Software") to use, reproduce, display, distribute, ** execute, and transmit the Software, and to prepare derivative works of the ** Software, and to permit third-parties to whom the Software is furnished to ** do so, all subject to the following: ** ** The copyright notices in the Software and this entire statement, including ** the above license grant, this restriction and the following disclaimer, ** must be included in all copies of the Software, in whole or in part, and ** all derivative works of the Software, unless such copies or derivative ** works are solely in the form of machine-executable object code generated by ** a source language processor. ** ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT ** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE ** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, ** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ** DEALINGS IN THE SOFTWARE. ** -LICENSE-END- */ /* DeckLinkAPI.idl */ import "unknwn.idl"; [uuid(D864517A-EDD5-466D-867D-C819F1C052BB), version(1.0), helpstring("DeckLink API Library")] library DeckLinkAPI { // Type Declarations typedef LONGLONG BMDTimeValue; typedef LONGLONG BMDTimeScale; typedef unsigned long BMDTimecodeBCD; typedef unsigned long BMDTimecodeUserBits; // Enumeration Mapping cpp_quote("typedef unsigned long BMDDisplayModeFlags;") cpp_quote("typedef unsigned long BMDFrameFlags;") cpp_quote("typedef unsigned long BMDVideoInputFlags;") cpp_quote("typedef unsigned long BMDVideoInputFormatChangedEvents;") cpp_quote("typedef unsigned long BMDDetectedVideoInputFormatFlags;") cpp_quote("typedef unsigned long BMDTimecodeFlags;") cpp_quote("typedef unsigned long BMDAnalogVideoFlags;") cpp_quote("typedef unsigned long BMDDeckControlStatusFlags;") cpp_quote("typedef unsigned long BMDDeckControlExportModeOpsFlags;") cpp_quote("#if 0") typedef enum _BMDDisplayModeFlags BMDDisplayModeFlags; typedef enum _BMDFrameFlags BMDFrameFlags; typedef enum _BMDVideoInputFlags BMDVideoInputFlags; typedef enum _BMDVideoInputFormatChangedEvents BMDVideoInputFormatChangedEvents; typedef enum _BMDDetectedVideoInputFormatFlags BMDDetectedVideoInputFormatFlags; typedef enum _BMDTimecodeFlags BMDTimecodeFlags; typedef enum _BMDAnalogVideoFlags BMDAnalogVideoFlags; typedef enum _BMDDeckControlStatusFlags BMDDeckControlStatusFlags; typedef enum _BMDDeckControlExportModeOpsFlags BMDDeckControlExportModeOpsFlags; cpp_quote("#endif") /* Enum BMDDisplayMode - Video display modes */ typedef [v1_enum] enum _BMDDisplayMode { /* SD Modes */ bmdModeNTSC = /* 'ntsc' */ 0x6E747363, bmdModeNTSC2398 = /* 'nt23' */ 0x6E743233, // 3:2 pulldown bmdModePAL = /* 'pal ' */ 0x70616C20, bmdModeNTSCp = /* 'ntsp' */ 0x6E747370, bmdModePALp = /* 'palp' */ 0x70616C70, /* HD 1080 Modes */ bmdModeHD1080p2398 = /* '23ps' */ 0x32337073, bmdModeHD1080p24 = /* '24ps' */ 0x32347073, bmdModeHD1080p25 = /* 'Hp25' */ 0x48703235, bmdModeHD1080p2997 = /* 'Hp29' */ 0x48703239, bmdModeHD1080p30 = /* 'Hp30' */ 0x48703330, bmdModeHD1080i50 = /* 'Hi50' */ 0x48693530, bmdModeHD1080i5994 = /* 'Hi59' */ 0x48693539, bmdModeHD1080i6000 = /* 'Hi60' */ 0x48693630, // N.B. This _really_ is 60.00 Hz. bmdModeHD1080p50 = /* 'Hp50' */ 0x48703530, bmdModeHD1080p5994 = /* 'Hp59' */ 0x48703539, bmdModeHD1080p6000 = /* 'Hp60' */ 0x48703630, // N.B. This _really_ is 60.00 Hz. /* HD 720 Modes */ bmdModeHD720p50 = /* 'hp50' */ 0x68703530, bmdModeHD720p5994 = /* 'hp59' */ 0x68703539, bmdModeHD720p60 = /* 'hp60' */ 0x68703630, /* 2k Modes */ bmdMode2k2398 = /* '2k23' */ 0x326B3233, bmdMode2k24 = /* '2k24' */ 0x326B3234, bmdMode2k25 = /* '2k25' */ 0x326B3235 } BMDDisplayMode; /* Enum BMDFieldDominance - Video field dominance */ typedef [v1_enum] enum _BMDFieldDominance { bmdUnknownFieldDominance = 0, bmdLowerFieldFirst = /* 'lowr' */ 0x6C6F7772, bmdUpperFieldFirst = /* 'uppr' */ 0x75707072, bmdProgressiveFrame = /* 'prog' */ 0x70726F67, bmdProgressiveSegmentedFrame = /* 'psf ' */ 0x70736620 } BMDFieldDominance; /* Enum BMDPixelFormat - Video pixel formats supported for output/input */ typedef [v1_enum] enum _BMDPixelFormat { bmdFormat8BitYUV = /* '2vuy' */ 0x32767579, bmdFormat10BitYUV = /* 'v210' */ 0x76323130, bmdFormat8BitARGB = 32, bmdFormat8BitBGRA = /* 'BGRA' */ 0x42475241, bmdFormat10BitRGB = /* 'r210' */ 0x72323130 // Big-endian RGB 10-bit per component with SMPTE video levels (64-960). Packed as 2:10:10:10 } BMDPixelFormat; /* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */ [v1_enum] enum _BMDDisplayModeFlags { bmdDisplayModeSupports3D = 1 << 0, bmdDisplayModeColorspaceRec601 = 1 << 1, bmdDisplayModeColorspaceRec709 = 1 << 2 }; /* Enum BMDVideoOutputFlags - Flags to control the output of ancillary data along with video. */ typedef [v1_enum] enum _BMDVideoOutputFlags { bmdVideoOutputFlagDefault = 0, bmdVideoOutputVANC = 1 << 0, bmdVideoOutputVITC = 1 << 1, bmdVideoOutputRP188 = 1 << 2, bmdVideoOutputDualStream3D = 1 << 4 } BMDVideoOutputFlags; /* Enum BMDFrameFlags - Frame flags */ [v1_enum] enum _BMDFrameFlags { bmdFrameFlagDefault = 0, bmdFrameFlagFlipVertical = 1 << 0, /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */ bmdFrameHasNoInputSource = 1 << 31 }; /* Enum BMDVideoInputFlags - Flags applicable to video input */ [v1_enum] enum _BMDVideoInputFlags { bmdVideoInputFlagDefault = 0, bmdVideoInputEnableFormatDetection = 1 << 0, bmdVideoInputDualStream3D = 1 << 1 }; /* Enum BMDVideoInputFormatChangedEvents - Bitmask passed to the VideoInputFormatChanged notification to identify the properties of the input signal that have changed */ [v1_enum] enum _BMDVideoInputFormatChangedEvents { bmdVideoInputDisplayModeChanged = 1 << 0, bmdVideoInputFieldDominanceChanged = 1 << 1, bmdVideoInputColorspaceChanged = 1 << 2 }; /* Enum BMDDetectedVideoInputFormatFlags - Flags passed to the VideoInputFormatChanged notification to describe the detected video input signal */ [v1_enum] enum _BMDDetectedVideoInputFormatFlags { bmdDetectedVideoInputYCbCr422 = 1 << 0, bmdDetectedVideoInputRGB444 = 1 << 1 }; /* Enum BMDOutputFrameCompletionResult - Frame Completion Callback */ typedef [v1_enum] enum _BMDOutputFrameCompletionResult { bmdOutputFrameCompleted, bmdOutputFrameDisplayedLate, bmdOutputFrameDropped, bmdOutputFrameFlushed } BMDOutputFrameCompletionResult; /* Enum BMDReferenceStatus - GenLock input status */ typedef [v1_enum] enum _BMDReferenceStatus { bmdReferenceNotSupportedByHardware = 1 << 0, bmdReferenceLocked = 1 << 1 } BMDReferenceStatus; /* Enum BMDAudioSampleRate - Audio sample rates supported for output/input */ typedef [v1_enum] enum _BMDAudioSampleRate { bmdAudioSampleRate48kHz = 48000 } BMDAudioSampleRate; /* Enum BMDAudioSampleType - Audio sample sizes supported for output/input */ typedef [v1_enum] enum _BMDAudioSampleType { bmdAudioSampleType16bitInteger = 16, bmdAudioSampleType32bitInteger = 32 } BMDAudioSampleType; /* Enum BMDAudioOutputStreamType - Audio output stream type */ typedef [v1_enum] enum _BMDAudioOutputStreamType { bmdAudioOutputStreamContinuous, bmdAudioOutputStreamContinuousDontResample, bmdAudioOutputStreamTimestamped } BMDAudioOutputStreamType; /* Enum BMDDisplayModeSupport - Output mode supported flags */ typedef [v1_enum] enum _BMDDisplayModeSupport { bmdDisplayModeNotSupported = 0, bmdDisplayModeSupported, bmdDisplayModeSupportedWithConversion } BMDDisplayModeSupport; /* Enum BMDTimecodeFormat - Timecode formats for frame metadata */ typedef [v1_enum] enum _BMDTimecodeFormat { bmdTimecodeRP188 = /* 'rp18' */ 0x72703138, bmdTimecodeRP188Field2 = /* 'rp12' */ 0x72703132, bmdTimecodeVITC = /* 'vitc' */ 0x76697463, bmdTimecodeVITCField2 = /* 'vit2' */ 0x76697432, bmdTimecodeSerial = /* 'seri' */ 0x73657269 } BMDTimecodeFormat; /* Enum BMDTimecodeFlags - Timecode flags */ [v1_enum] enum _BMDTimecodeFlags { bmdTimecodeFlagDefault = 0, bmdTimecodeIsDropFrame = 1 << 0 }; /* Enum BMDVideoConnection - Video connection types */ typedef [v1_enum] enum _BMDVideoConnection { bmdVideoConnectionSDI = 1 << 0, bmdVideoConnectionHDMI = 1 << 1, bmdVideoConnectionOpticalSDI = 1 << 2, bmdVideoConnectionComponent = 1 << 3, bmdVideoConnectionComposite = 1 << 4, bmdVideoConnectionSVideo = 1 << 5 } BMDVideoConnection; /* Enum BMDAnalogVideoFlags - Analog video display flags */ [v1_enum] enum _BMDAnalogVideoFlags { bmdAnalogVideoFlagCompositeSetup75 = 1 << 0, bmdAnalogVideoFlagComponentBetacamLevels = 1 << 1 }; /* Enum BMDAudioConnection - Audio connection types */ typedef [v1_enum] enum _BMDAudioConnection { bmdAudioConnectionEmbedded = /* 'embd' */ 0x656D6264, bmdAudioConnectionAESEBU = /* 'aes ' */ 0x61657320, bmdAudioConnectionAnalog = /* 'anlg' */ 0x616E6C67 } BMDAudioConnection; /* Enum BMDAudioOutputAnalogAESSwitch - Audio output Analog/AESEBU switch */ typedef [v1_enum] enum _BMDAudioOutputAnalogAESSwitch { bmdAudioOutputSwitchAESEBU = /* 'aes ' */ 0x61657320, bmdAudioOutputSwitchAnalog = /* 'anlg' */ 0x616E6C67 } BMDAudioOutputAnalogAESSwitch; /* Enum BMDVideoOutputConversionMode - Video/audio conversion mode */ typedef [v1_enum] enum _BMDVideoOutputConversionMode { bmdNoVideoOutputConversion = /* 'none' */ 0x6E6F6E65, bmdVideoOutputLetterboxDownconversion = /* 'ltbx' */ 0x6C746278, bmdVideoOutputAnamorphicDownconversion = /* 'amph' */ 0x616D7068, bmdVideoOutputHD720toHD1080Conversion = /* '720c' */ 0x37323063, bmdVideoOutputHardwareLetterboxDownconversion = /* 'HWlb' */ 0x48576C62, bmdVideoOutputHardwareAnamorphicDownconversion = /* 'HWam' */ 0x4857616D, bmdVideoOutputHardwareCenterCutDownconversion = /* 'HWcc' */ 0x48576363, bmdVideoOutputHardware720p1080pCrossconversion = /* 'xcap' */ 0x78636170, bmdVideoOutputHardwareAnamorphic720pUpconversion = /* 'ua7p' */ 0x75613770, bmdVideoOutputHardwareAnamorphic1080iUpconversion = /* 'ua1i' */ 0x75613169, bmdVideoOutputHardwareAnamorphic149To720pUpconversion = /* 'u47p' */ 0x75343770, bmdVideoOutputHardwareAnamorphic149To1080iUpconversion = /* 'u41i' */ 0x75343169, bmdVideoOutputHardwarePillarbox720pUpconversion = /* 'up7p' */ 0x75703770, bmdVideoOutputHardwarePillarbox1080iUpconversion = /* 'up1i' */ 0x75703169 } BMDVideoOutputConversionMode; /* Enum BMDVideoInputConversionMode - Video input conversion mode */ typedef [v1_enum] enum _BMDVideoInputConversionMode { bmdNoVideoInputConversion = /* 'none' */ 0x6E6F6E65, bmdVideoInputLetterboxDownconversionFromHD1080 = /* '10lb' */ 0x31306C62, bmdVideoInputAnamorphicDownconversionFromHD1080 = /* '10am' */ 0x3130616D, bmdVideoInputLetterboxDownconversionFromHD720 = /* '72lb' */ 0x37326C62, bmdVideoInputAnamorphicDownconversionFromHD720 = /* '72am' */ 0x3732616D, bmdVideoInputLetterboxUpconversion = /* 'lbup' */ 0x6C627570, bmdVideoInputAnamorphicUpconversion = /* 'amup' */ 0x616D7570 } BMDVideoInputConversionMode; /* Enum BMDVideo3DPackingFormat - Video 3D packing format */ typedef [v1_enum] enum _BMDVideo3DPackingFormat { bmdVideo3DPackingSidebySideHalf = /* 'sbsh' */ 0x73627368, bmdVideo3DPackingLinebyLine = /* 'lbyl' */ 0x6C62796C, bmdVideo3DPackingTopAndBottom = /* 'tabo' */ 0x7461626F, bmdVideo3DPackingFramePacking = /* 'frpk' */ 0x6672706B, bmdVideo3DPackingLeftOnly = /* 'left' */ 0x6C656674, bmdVideo3DPackingRightOnly = /* 'righ' */ 0x72696768 } BMDVideo3DPackingFormat; /* Enum BMDIdleVideoOutputOperation - Video output operation when not playing video */ typedef [v1_enum] enum _BMDIdleVideoOutputOperation { bmdIdleVideoOutputBlack = /* 'blac' */ 0x626C6163, bmdIdleVideoOutputLastFrame = /* 'lafa' */ 0x6C616661 } BMDIdleVideoOutputOperation; /* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */ typedef [v1_enum] enum _BMDDeckLinkConfigurationID { /* Serial port Flags */ bmdDeckLinkConfigSwapSerialRxTx = /* 'ssrt' */ 0x73737274, /* Video Input/Output Flags */ bmdDeckLinkConfigUse1080pNotPsF = /* 'fpro' */ 0x6670726F, /* Video Input/Output Integers */ bmdDeckLinkConfigHDMI3DPackingFormat = /* '3dpf' */ 0x33647066, bmdDeckLinkConfigBypass = /* 'byps' */ 0x62797073, /* Audio Input/Output Flags */ bmdDeckLinkConfigAnalogAudioConsumerLevels = /* 'aacl' */ 0x6161636C, /* Video output flags */ bmdDeckLinkConfigFieldFlickerRemoval = /* 'fdfr' */ 0x66646672, bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion = /* 'to59' */ 0x746F3539, bmdDeckLinkConfig444SDIVideoOutput = /* '444o' */ 0x3434346F, bmdDeckLinkConfig3GBpsVideoOutput = /* '3gbs' */ 0x33676273, bmdDeckLinkConfigBlackVideoOutputDuringCapture = /* 'bvoc' */ 0x62766F63, bmdDeckLinkConfigLowLatencyVideoOutput = /* 'llvo' */ 0x6C6C766F, /* Video Output Integers */ bmdDeckLinkConfigVideoOutputConnection = /* 'vocn' */ 0x766F636E, bmdDeckLinkConfigVideoOutputConversionMode = /* 'vocm' */ 0x766F636D, bmdDeckLinkConfigAnalogVideoOutputFlags = /* 'avof' */ 0x61766F66, bmdDeckLinkConfigReferenceInputTimingOffset = /* 'glot' */ 0x676C6F74, bmdDeckLinkConfigVideoOutputIdleOperation = /* 'voio' */ 0x766F696F, /* Video Output Floats */ bmdDeckLinkConfigVideoOutputComponentLumaGain = /* 'oclg' */ 0x6F636C67, bmdDeckLinkConfigVideoOutputComponentChromaBlueGain = /* 'occb' */ 0x6F636362, bmdDeckLinkConfigVideoOutputComponentChromaRedGain = /* 'occr' */ 0x6F636372, bmdDeckLinkConfigVideoOutputCompositeLumaGain = /* 'oilg' */ 0x6F696C67, bmdDeckLinkConfigVideoOutputCompositeChromaGain = /* 'oicg' */ 0x6F696367, bmdDeckLinkConfigVideoOutputSVideoLumaGain = /* 'oslg' */ 0x6F736C67, bmdDeckLinkConfigVideoOutputSVideoChromaGain = /* 'oscg' */ 0x6F736367, /* Video Input Integers */ bmdDeckLinkConfigVideoInputConnection = /* 'vicn' */ 0x7669636E, bmdDeckLinkConfigAnalogVideoInputFlags = /* 'avif' */ 0x61766966, bmdDeckLinkConfigVideoInputConversionMode = /* 'vicm' */ 0x7669636D, bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame = /* 'pdif' */ 0x70646966, bmdDeckLinkConfigVANCSourceLine1Mapping = /* 'vsl1' */ 0x76736C31, bmdDeckLinkConfigVANCSourceLine2Mapping = /* 'vsl2' */ 0x76736C32, bmdDeckLinkConfigVANCSourceLine3Mapping = /* 'vsl3' */ 0x76736C33, /* Video Input Floats */ bmdDeckLinkConfigVideoInputComponentLumaGain = /* 'iclg' */ 0x69636C67, bmdDeckLinkConfigVideoInputComponentChromaBlueGain = /* 'iccb' */ 0x69636362, bmdDeckLinkConfigVideoInputComponentChromaRedGain = /* 'iccr' */ 0x69636372, bmdDeckLinkConfigVideoInputCompositeLumaGain = /* 'iilg' */ 0x69696C67, bmdDeckLinkConfigVideoInputCompositeChromaGain = /* 'iicg' */ 0x69696367, bmdDeckLinkConfigVideoInputSVideoLumaGain = /* 'islg' */ 0x69736C67, bmdDeckLinkConfigVideoInputSVideoChromaGain = /* 'iscg' */ 0x69736367, /* Audio Input Integers */ bmdDeckLinkConfigAudioInputConnection = /* 'aicn' */ 0x6169636E, /* Audio Input Floats */ bmdDeckLinkConfigAnalogAudioInputScaleChannel1 = /* 'ais1' */ 0x61697331, bmdDeckLinkConfigAnalogAudioInputScaleChannel2 = /* 'ais2' */ 0x61697332, bmdDeckLinkConfigAnalogAudioInputScaleChannel3 = /* 'ais3' */ 0x61697333, bmdDeckLinkConfigAnalogAudioInputScaleChannel4 = /* 'ais4' */ 0x61697334, bmdDeckLinkConfigDigitalAudioInputScale = /* 'dais' */ 0x64616973, /* Audio Output Integers */ bmdDeckLinkConfigAudioOutputAESAnalogSwitch = /* 'aoaa' */ 0x616F6161, /* Audio Output Floats */ bmdDeckLinkConfigAnalogAudioOutputScaleChannel1 = /* 'aos1' */ 0x616F7331, bmdDeckLinkConfigAnalogAudioOutputScaleChannel2 = /* 'aos2' */ 0x616F7332, bmdDeckLinkConfigAnalogAudioOutputScaleChannel3 = /* 'aos3' */ 0x616F7333, bmdDeckLinkConfigAnalogAudioOutputScaleChannel4 = /* 'aos4' */ 0x616F7334, bmdDeckLinkConfigDigitalAudioOutputScale = /* 'daos' */ 0x64616F73 } BMDDeckLinkConfigurationID; /* Enum BMDDeckLinkAttributeID - DeckLink Attribute ID */ typedef [v1_enum] enum _BMDDeckLinkAttributeID { /* Flags */ BMDDeckLinkSupportsInternalKeying = /* 'keyi' */ 0x6B657969, BMDDeckLinkSupportsExternalKeying = /* 'keye' */ 0x6B657965, BMDDeckLinkSupportsHDKeying = /* 'keyh' */ 0x6B657968, BMDDeckLinkSupportsInputFormatDetection = /* 'infd' */ 0x696E6664, BMDDeckLinkHasReferenceInput = /* 'hrin' */ 0x6872696E, BMDDeckLinkHasSerialPort = /* 'hspt' */ 0x68737074, BMDDeckLinkHasAnalogVideoOutputGain = /* 'avog' */ 0x61766F67, BMDDeckLinkCanOnlyAdjustOverallVideoOutputGain = /* 'ovog' */ 0x6F766F67, BMDDeckLinkHasVideoInputAntiAliasingFilter = /* 'aafl' */ 0x6161666C, BMDDeckLinkHasBypass = /* 'byps' */ 0x62797073, /* Integers */ BMDDeckLinkMaximumAudioChannels = /* 'mach' */ 0x6D616368, BMDDeckLinkNumberOfSubDevices = /* 'nsbd' */ 0x6E736264, BMDDeckLinkSubDeviceIndex = /* 'subi' */ 0x73756269, BMDDeckLinkVideoOutputConnections = /* 'vocn' */ 0x766F636E, BMDDeckLinkVideoInputConnections = /* 'vicn' */ 0x7669636E, /* Floats */ BMDDeckLinkVideoInputGainMinimum = /* 'vigm' */ 0x7669676D, BMDDeckLinkVideoInputGainMaximum = /* 'vigx' */ 0x76696778, BMDDeckLinkVideoOutputGainMinimum = /* 'vogm' */ 0x766F676D, BMDDeckLinkVideoOutputGainMaximum = /* 'vogx' */ 0x766F6778, /* Strings */ BMDDeckLinkSerialPortDeviceName = /* 'slpn' */ 0x736C706E } BMDDeckLinkAttributeID; /* Enum BMDDeckLinkAPIInformationID - DeckLinkAPI information ID */ typedef [v1_enum] enum _BMDDeckLinkAPIInformationID { BMDDeckLinkAPIVersion = /* 'vers' */ 0x76657273 } BMDDeckLinkAPIInformationID; /* Enum BMDDeckControlMode - DeckControl mode */ typedef [v1_enum] enum _BMDDeckControlMode { bmdDeckControlNotOpened = /* 'ntop' */ 0x6E746F70, bmdDeckControlVTRControlMode = /* 'vtrc' */ 0x76747263, bmdDeckControlExportMode = /* 'expm' */ 0x6578706D, bmdDeckControlCaptureMode = /* 'capm' */ 0x6361706D } BMDDeckControlMode; /* Enum BMDDeckControlEvent - DeckControl event */ typedef [v1_enum] enum _BMDDeckControlEvent { bmdDeckControlAbortedEvent = /* 'abte' */ 0x61627465, // This event is triggered when a capture or edit-to-tape operation is aborted. /* Export-To-Tape events */ bmdDeckControlPrepareForExportEvent = /* 'pfee' */ 0x70666565, // This event is triggered a few frames before reaching the in-point. IDeckLinkInput::StartScheduledPlayback() should be called at this point. bmdDeckControlExportCompleteEvent = /* 'exce' */ 0x65786365, // This event is triggered a few frames after reaching the out-point. At this point, it is safe to stop playback. /* Capture events */ bmdDeckControlPrepareForCaptureEvent = /* 'pfce' */ 0x70666365, // This event is triggered a few frames before reaching the in-point. The serial timecode attached to IDeckLinkVideoInputFrames is now valid. bmdDeckControlCaptureCompleteEvent = /* 'ccev' */ 0x63636576 // This event is triggered a few frames after reaching the out-point. } BMDDeckControlEvent; /* Enum BMDDeckControlVTRControlState - VTR Control state */ typedef [v1_enum] enum _BMDDeckControlVTRControlState { bmdDeckControlNotInVTRControlMode = /* 'nvcm' */ 0x6E76636D, bmdDeckControlVTRControlPlaying = /* 'vtrp' */ 0x76747270, bmdDeckControlVTRControlRecording = /* 'vtrr' */ 0x76747272, bmdDeckControlVTRControlStill = /* 'vtra' */ 0x76747261, bmdDeckControlVTRControlSeeking = /* 'vtrs' */ 0x76747273, bmdDeckControlVTRControlStopped = /* 'vtro' */ 0x7674726F } BMDDeckControlVTRControlState; /* Enum BMDDeckControlStatusFlags - Deck Control status flags */ [v1_enum] enum _BMDDeckControlStatusFlags { bmdDeckControlStatusDeckConnected = 1 << 0, bmdDeckControlStatusRemoteMode = 1 << 1, bmdDeckControlStatusRecordInhibited = 1 << 2, bmdDeckControlStatusCassetteOut = 1 << 3 }; /* Enum BMDDeckControlExportModeOpsFlags - Export mode flags */ [v1_enum] enum _BMDDeckControlExportModeOpsFlags { bmdDeckControlExportModeInsertVideo = 1 << 0, bmdDeckControlExportModeInsertAudio1 = 1 << 1, bmdDeckControlExportModeInsertAudio2 = 1 << 2, bmdDeckControlExportModeInsertAudio3 = 1 << 3, bmdDeckControlExportModeInsertAudio4 = 1 << 4, bmdDeckControlExportModeInsertAudio5 = 1 << 5, bmdDeckControlExportModeInsertAudio6 = 1 << 6, bmdDeckControlExportModeInsertAudio7 = 1 << 7, bmdDeckControlExportModeInsertAudio8 = 1 << 8, bmdDeckControlExportModeInsertAudio9 = 1 << 9, bmdDeckControlExportModeInsertAudio10 = 1 << 10, bmdDeckControlExportModeInsertAudio11 = 1 << 11, bmdDeckControlExportModeInsertAudio12 = 1 << 12, bmdDeckControlExportModeInsertTimeCode = 1 << 13, bmdDeckControlExportModeInsertAssemble = 1 << 14, bmdDeckControlExportModeInsertPreview = 1 << 15, bmdDeckControlUseManualExport = 1 << 16 }; /* Enum BMDDeckControlError - Deck Control error */ typedef [v1_enum] enum _BMDDeckControlError { bmdDeckControlNoError = /* 'noer' */ 0x6E6F6572, bmdDeckControlModeError = /* 'moer' */ 0x6D6F6572, bmdDeckControlMissedInPointError = /* 'mier' */ 0x6D696572, bmdDeckControlDeckTimeoutError = /* 'dter' */ 0x64746572, bmdDeckControlCommandFailedError = /* 'cfer' */ 0x63666572, bmdDeckControlDeviceAlreadyOpenedError = /* 'dalo' */ 0x64616C6F, bmdDeckControlFailedToOpenDeviceError = /* 'fder' */ 0x66646572, bmdDeckControlInLocalModeError = /* 'lmer' */ 0x6C6D6572, bmdDeckControlEndOfTapeError = /* 'eter' */ 0x65746572, bmdDeckControlUserAbortError = /* 'uaer' */ 0x75616572, bmdDeckControlNoTapeInDeckError = /* 'nter' */ 0x6E746572, bmdDeckControlNoVideoFromCardError = /* 'nvfc' */ 0x6E766663, bmdDeckControlNoCommunicationError = /* 'ncom' */ 0x6E636F6D, bmdDeckControlBufferTooSmallError = /* 'btsm' */ 0x6274736D, bmdDeckControlBadChecksumError = /* 'chks' */ 0x63686B73, bmdDeckControlUnknownError = /* 'uner' */ 0x756E6572 } BMDDeckControlError; /* Enum BMD3DPreviewFormat - Linked Frame preview format */ typedef [v1_enum] enum _BMD3DPreviewFormat { bmd3DPreviewFormatDefault = /* 'defa' */ 0x64656661, bmd3DPreviewFormatLeftOnly = /* 'left' */ 0x6C656674, bmd3DPreviewFormatRightOnly = /* 'righ' */ 0x72696768, bmd3DPreviewFormatSideBySide = /* 'side' */ 0x73696465, bmd3DPreviewFormatTopBottom = /* 'topb' */ 0x746F7062 } BMD3DPreviewFormat; // Forward Declarations interface IDeckLinkVideoOutputCallback; interface IDeckLinkInputCallback; interface IDeckLinkMemoryAllocator; interface IDeckLinkAudioOutputCallback; interface IDeckLinkIterator; interface IDeckLinkAPIInformation; interface IDeckLinkDisplayModeIterator; interface IDeckLinkDisplayMode; interface IDeckLink; interface IDeckLinkOutput; interface IDeckLinkInput; interface IDeckLinkTimecode; interface IDeckLinkVideoFrame; interface IDeckLinkMutableVideoFrame; interface IDeckLinkVideoFrame3DExtensions; interface IDeckLinkVideoInputFrame; interface IDeckLinkVideoFrameAncillary; interface IDeckLinkAudioInputPacket; interface IDeckLinkScreenPreviewCallback; interface IDeckLinkGLScreenPreviewHelper; interface IDeckLinkConfiguration; interface IDeckLinkAttributes; interface IDeckLinkKeyer; interface IDeckLinkVideoConversion; interface IDeckLinkDeckControlStatusCallback; interface IDeckLinkDeckControl; /* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */ [ object, uuid(20AA5225-1958-47CB-820B-80A8D521A6EE), helpstring("Frame completion callback.") ] interface IDeckLinkVideoOutputCallback : IUnknown { HRESULT ScheduledFrameCompleted([in] IDeckLinkVideoFrame *completedFrame, [in] BMDOutputFrameCompletionResult result); HRESULT ScheduledPlaybackHasStopped(void); }; /* Interface IDeckLinkInputCallback - Frame arrival callback. */ [ object, uuid(DD04E5EC-7415-42AB-AE4A-E80C4DFC044A), helpstring("Frame arrival callback.") ] interface IDeckLinkInputCallback : IUnknown { HRESULT VideoInputFormatChanged([in] BMDVideoInputFormatChangedEvents notificationEvents, [in] IDeckLinkDisplayMode *newDisplayMode, [in] BMDDetectedVideoInputFormatFlags detectedSignalFlags); HRESULT VideoInputFrameArrived([in] IDeckLinkVideoInputFrame* videoFrame, [in] IDeckLinkAudioInputPacket* audioPacket); }; /* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */ [ object, uuid(B36EB6E7-9D29-4AA8-92EF-843B87A289E8), local, helpstring("Memory allocator for video frames.") ] interface IDeckLinkMemoryAllocator : IUnknown { HRESULT AllocateBuffer([in] unsigned long bufferSize, [out] void **allocatedBuffer); HRESULT ReleaseBuffer([in] void *buffer); HRESULT Commit(void); HRESULT Decommit(void); }; /* Interface IDeckLinkAudioOutputCallback - Optional callback to allow audio samples to be pulled as required. */ [ object, uuid(403C681B-7F46-4A12-B993-2BB127084EE6), local, helpstring("Optional callback to allow audio samples to be pulled as required.") ] interface IDeckLinkAudioOutputCallback : IUnknown { HRESULT RenderAudioSamples([in] BOOL preroll); }; /* Interface IDeckLinkIterator - enumerates installed DeckLink hardware */ [ object, uuid(74E936FC-CC28-4A67-81A0-1E94E52D4E69), helpstring("enumerates installed DeckLink hardware") ] interface IDeckLinkIterator : IUnknown { HRESULT Next([out] IDeckLink **deckLinkInstance); }; /* Interface IDeckLinkAPIInformation - DeckLinkAPI attribute interface */ [ object, uuid(7BEA3C68-730D-4322-AF34-8A7152B532A4), helpstring("DeckLinkAPI attribute interface") ] interface IDeckLinkAPIInformation : IUnknown { HRESULT GetFlag([in] BMDDeckLinkAPIInformationID cfgID, [out] BOOL *value); HRESULT GetInt([in] BMDDeckLinkAPIInformationID cfgID, [out] LONGLONG *value); HRESULT GetFloat([in] BMDDeckLinkAPIInformationID cfgID, [out] double *value); HRESULT GetString([in] BMDDeckLinkAPIInformationID cfgID, [out] BSTR *value); }; /* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */ [ object, uuid(9C88499F-F601-4021-B80B-032E4EB41C35), helpstring("enumerates over supported input/output display modes.") ] interface IDeckLinkDisplayModeIterator : IUnknown { HRESULT Next([out] IDeckLinkDisplayMode **deckLinkDisplayMode); }; /* Interface IDeckLinkDisplayMode - represents a display mode */ [ object, uuid(3EB2C1AB-0A3D-4523-A3AD-F40D7FB14E78), helpstring("represents a display mode") ] interface IDeckLinkDisplayMode : IUnknown { HRESULT GetName([out] BSTR *name); BMDDisplayMode GetDisplayMode(void); long GetWidth(void); long GetHeight(void); HRESULT GetFrameRate([out] BMDTimeValue *frameDuration, [out] BMDTimeScale *timeScale); BMDFieldDominance GetFieldDominance(void); BMDDisplayModeFlags GetFlags(void); }; /* Interface IDeckLink - represents a DeckLink device */ [ object, uuid(62BFF75D-6569-4E55-8D4D-66AA03829ABC), helpstring("represents a DeckLink device") ] interface IDeckLink : IUnknown { HRESULT GetModelName([out] BSTR *modelName); }; /* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */ [ object, uuid(A3EF0963-0862-44ED-92A9-EE89ABF431C7), local, helpstring("Created by QueryInterface from IDeckLink.") ] interface IDeckLinkOutput : IUnknown { HRESULT DoesSupportVideoMode([in] BMDDisplayMode displayMode, [in] BMDPixelFormat pixelFormat, [in] BMDVideoOutputFlags flags, [out] BMDDisplayModeSupport *result, [out] IDeckLinkDisplayMode **resultDisplayMode); HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator **iterator); HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback); /* Video Output */ HRESULT EnableVideoOutput([in] BMDDisplayMode displayMode, [in] BMDVideoOutputFlags flags); HRESULT DisableVideoOutput(void); HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator); HRESULT CreateVideoFrame([in] long width, [in] long height, [in] long rowBytes, [in] BMDPixelFormat pixelFormat, [in] BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame **outFrame); HRESULT CreateAncillaryData([in] BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer); HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame *theFrame); HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, [in] BMDTimeValue displayTime, [in] BMDTimeValue displayDuration, [in] BMDTimeScale timeScale); HRESULT SetScheduledFrameCompletionCallback([in] IDeckLinkVideoOutputCallback *theCallback); HRESULT GetBufferedVideoFrameCount([out] unsigned long *bufferedFrameCount); /* Audio Output */ HRESULT EnableAudioOutput([in] BMDAudioSampleRate sampleRate, [in] BMDAudioSampleType sampleType, [in] unsigned long channelCount, [in] BMDAudioOutputStreamType streamType); HRESULT DisableAudioOutput(void); HRESULT WriteAudioSamplesSync([in] void *buffer, [in] unsigned long sampleFrameCount, [out] unsigned long *sampleFramesWritten); HRESULT BeginAudioPreroll(void); HRESULT EndAudioPreroll(void); HRESULT ScheduleAudioSamples([in] void *buffer, [in] unsigned long sampleFrameCount, [in] BMDTimeValue streamTime, [in] BMDTimeScale timeScale, [out] unsigned long *sampleFramesWritten); HRESULT GetBufferedAudioSampleFrameCount([out] unsigned long *bufferedSampleFrameCount); HRESULT FlushBufferedAudioSamples(void); HRESULT SetAudioCallback([in] IDeckLinkAudioOutputCallback *theCallback); /* Output Control */ HRESULT StartScheduledPlayback([in] BMDTimeValue playbackStartTime, [in] BMDTimeScale timeScale, [in] double playbackSpeed); HRESULT StopScheduledPlayback([in] BMDTimeValue stopPlaybackAtTime, [out] BMDTimeValue *actualStopTime, [in] BMDTimeScale timeScale); HRESULT IsScheduledPlaybackRunning([out] BOOL *active); HRESULT GetScheduledStreamTime([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *streamTime, [out] double *playbackSpeed); HRESULT GetReferenceStatus([out] BMDReferenceStatus *referenceStatus); /* Hardware Timing */ HRESULT GetHardwareReferenceClock([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame); }; /* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */ [ object, uuid(6D40EF78-28B9-4E21-990D-95BB7750A04F), helpstring("Created by QueryInterface from IDeckLink.") ] interface IDeckLinkInput : IUnknown { HRESULT DoesSupportVideoMode([in] BMDDisplayMode displayMode, [in] BMDPixelFormat pixelFormat, [in] BMDVideoInputFlags flags, [out] BMDDisplayModeSupport *result, [out] IDeckLinkDisplayMode **resultDisplayMode); HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator **iterator); HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback); /* Video Input */ HRESULT EnableVideoInput([in] BMDDisplayMode displayMode, [in] BMDPixelFormat pixelFormat, [in] BMDVideoInputFlags flags); HRESULT DisableVideoInput(void); HRESULT GetAvailableVideoFrameCount([out] unsigned long *availableFrameCount); /* Audio Input */ HRESULT EnableAudioInput([in] BMDAudioSampleRate sampleRate, [in] BMDAudioSampleType sampleType, [in] unsigned long channelCount); HRESULT DisableAudioInput(void); HRESULT GetAvailableAudioSampleFrameCount([out] unsigned long *availableSampleFrameCount); /* Input Control */ HRESULT StartStreams(void); HRESULT StopStreams(void); HRESULT PauseStreams(void); HRESULT FlushStreams(void); HRESULT SetCallback([in] IDeckLinkInputCallback *theCallback); /* Hardware Timing */ HRESULT GetHardwareReferenceClock([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame); }; /* Interface IDeckLinkTimecode - Used for video frame timecode representation. */ [ object, uuid(BC6CFBD3-8317-4325-AC1C-1216391E9340), helpstring("Used for video frame timecode representation.") ] interface IDeckLinkTimecode : IUnknown { BMDTimecodeBCD GetBCD(void); HRESULT GetComponents([out] unsigned char *hours, [out] unsigned char *minutes, [out] unsigned char *seconds, [out] unsigned char *frames); HRESULT GetString([out] BSTR *timecode); BMDTimecodeFlags GetFlags(void); HRESULT GetTimecodeUserBits([out] BMDTimecodeUserBits *userBits); }; /* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */ [ object, uuid(3F716FE0-F023-4111-BE5D-EF4414C05B17), local, helpstring("Interface to encapsulate a video frame; can be caller-implemented.") ] interface IDeckLinkVideoFrame : IUnknown { long GetWidth(void); long GetHeight(void); long GetRowBytes(void); BMDPixelFormat GetPixelFormat(void); BMDFrameFlags GetFlags(void); HRESULT GetBytes([out] void **buffer); HRESULT GetTimecode([in] BMDTimecodeFormat format, [out] IDeckLinkTimecode **timecode); HRESULT GetAncillaryData([out] IDeckLinkVideoFrameAncillary **ancillary); }; /* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */ [ object, uuid(69E2639F-40DA-4E19-B6F2-20ACE815C390), local, helpstring("Created by IDeckLinkOutput::CreateVideoFrame.") ] interface IDeckLinkMutableVideoFrame : IDeckLinkVideoFrame { HRESULT SetFlags([in] BMDFrameFlags newFlags); HRESULT SetTimecode([in] BMDTimecodeFormat format, [in] IDeckLinkTimecode *timecode); HRESULT SetTimecodeFromComponents([in] BMDTimecodeFormat format, [in] unsigned char hours, [in] unsigned char minutes, [in] unsigned char seconds, [in] unsigned char frames, [in] BMDTimecodeFlags flags); HRESULT SetAncillaryData([in] IDeckLinkVideoFrameAncillary *ancillary); HRESULT SetTimecodeUserBits([in] BMDTimecodeFormat format, [in] BMDTimecodeUserBits userBits); }; /* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */ [ object, uuid(DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7), local, helpstring("Optional interface implemented on IDeckLinkVideoFrame to support 3D frames") ] interface IDeckLinkVideoFrame3DExtensions : IUnknown { BMDVideo3DPackingFormat Get3DPackingFormat(void); HRESULT GetFrameForRightEye([out] IDeckLinkVideoFrame* *rightEyeFrame); }; /* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */ [ object, uuid(05CFE374-537C-4094-9A57-680525118F44), local, helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.") ] interface IDeckLinkVideoInputFrame : IDeckLinkVideoFrame { HRESULT GetStreamTime([out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration, [in] BMDTimeScale timeScale); HRESULT GetHardwareReferenceTimestamp([in] BMDTimeScale timeScale, [out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration); }; /* Interface IDeckLinkVideoFrameAncillary - Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */ [ object, uuid(732E723C-D1A4-4E29-9E8E-4A88797A0004), local, helpstring("Obtained through QueryInterface() on an IDeckLinkVideoFrame object.") ] interface IDeckLinkVideoFrameAncillary : IUnknown { HRESULT GetBufferForVerticalBlankingLine([in] unsigned long lineNumber, [out] void **buffer); BMDPixelFormat GetPixelFormat(void); BMDDisplayMode GetDisplayMode(void); }; /* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */ [ object, uuid(E43D5870-2894-11DE-8C30-0800200C9A66), local, helpstring("Provided by the IDeckLinkInput callback.") ] interface IDeckLinkAudioInputPacket : IUnknown { long GetSampleFrameCount(void); HRESULT GetBytes([out] void **buffer); HRESULT GetPacketTime([out] BMDTimeValue *packetTime, [in] BMDTimeScale timeScale); }; /* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */ [ object, uuid(B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438), local, helpstring("Screen preview callback") ] interface IDeckLinkScreenPreviewCallback : IUnknown { HRESULT DrawFrame([in] IDeckLinkVideoFrame *theFrame); }; /* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */ [ object, uuid(504E2209-CAC7-4C1A-9FB4-C5BB6274D22F), local, helpstring("Created with CoCreateInstance().") ] interface IDeckLinkGLScreenPreviewHelper : IUnknown { /* Methods must be called with OpenGL context set */ HRESULT InitializeGL(void); HRESULT PaintGL(void); HRESULT SetFrame([in] IDeckLinkVideoFrame *theFrame); HRESULT Set3DPreviewFormat([in] BMD3DPreviewFormat previewFormat); }; /* Interface IDeckLinkConfiguration - DeckLink Configuration interface */ [ object, uuid(C679A35B-610C-4D09-B748-1D0478100FC0), local, helpstring("DeckLink Configuration interface") ] interface IDeckLinkConfiguration : IUnknown { HRESULT SetFlag([in] BMDDeckLinkConfigurationID cfgID, [in] BOOL value); HRESULT GetFlag([in] BMDDeckLinkConfigurationID cfgID, [out] BOOL *value); HRESULT SetInt([in] BMDDeckLinkConfigurationID cfgID, [in] LONGLONG value); HRESULT GetInt([in] BMDDeckLinkConfigurationID cfgID, [out] LONGLONG *value); HRESULT SetFloat([in] BMDDeckLinkConfigurationID cfgID, [in] double value); HRESULT GetFloat([in] BMDDeckLinkConfigurationID cfgID, [out] double *value); HRESULT SetString([in] BMDDeckLinkConfigurationID cfgID, [in] BSTR value); HRESULT GetString([in] BMDDeckLinkConfigurationID cfgID, [out] BSTR *value); HRESULT WriteConfigurationToPreferences(void); }; /* Interface IDeckLinkAttributes - DeckLink Attribute interface */ [ object, uuid(ABC11843-D966-44CB-96E2-A1CB5D3135C4), local, helpstring("DeckLink Attribute interface") ] interface IDeckLinkAttributes : IUnknown { HRESULT GetFlag([in] BMDDeckLinkAttributeID cfgID, [out] BOOL *value); HRESULT GetInt([in] BMDDeckLinkAttributeID cfgID, [out] LONGLONG *value); HRESULT GetFloat([in] BMDDeckLinkAttributeID cfgID, [out] double *value); HRESULT GetString([in] BMDDeckLinkAttributeID cfgID, [out] BSTR *value); }; /* Interface IDeckLinkKeyer - DeckLink Keyer interface */ [ object, uuid(89AFCAF5-65F8-421E-98F7-96FE5F5BFBA3), local, helpstring("DeckLink Keyer interface") ] interface IDeckLinkKeyer : IUnknown { HRESULT Enable([in] BOOL isExternal); HRESULT SetLevel([in] unsigned char level); HRESULT RampUp([in] unsigned long numberOfFrames); HRESULT RampDown([in] unsigned long numberOfFrames); HRESULT Disable(void); }; /* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */ [ object, uuid(3BBCB8A2-DA2C-42D9-B5D8-88083644E99A), local, helpstring("Created with CoCreateInstance().") ] interface IDeckLinkVideoConversion : IUnknown { HRESULT ConvertFrame([in] IDeckLinkVideoFrame* srcFrame, [in] IDeckLinkVideoFrame* dstFrame); }; /* Interface IDeckLinkDeckControlStatusCallback - Deck control state change callback. */ [ object, uuid(E5F693C1-4283-4716-B18F-C1431521955B), helpstring("Deck control state change callback.") ] interface IDeckLinkDeckControlStatusCallback : IUnknown { HRESULT TimecodeUpdate([in] BMDTimecodeBCD currentTimecode); HRESULT VTRControlStateChanged([in] BMDDeckControlVTRControlState newState, [in] BMDDeckControlError error); HRESULT DeckControlEventReceived([in] BMDDeckControlEvent event, [in] BMDDeckControlError error); HRESULT DeckControlStatusChanged([in] BMDDeckControlStatusFlags flags, [in] unsigned long mask); }; /* Interface IDeckLinkDeckControl - Deck Control main interface */ [ object, uuid(522A9E39-0F3C-4742-94EE-D80DE335DA1D), helpstring("Deck Control main interface") ] interface IDeckLinkDeckControl : IUnknown { HRESULT Open([in] BMDTimeScale timeScale, [in] BMDTimeValue timeValue, [in] BOOL timecodeIsDropFrame, [out] BMDDeckControlError *error); HRESULT Close([in] BOOL standbyOn); HRESULT GetCurrentState([out] BMDDeckControlMode *mode, [out] BMDDeckControlVTRControlState *vtrControlState, [out] BMDDeckControlStatusFlags *flags); HRESULT SetStandby([in] BOOL standbyOn); HRESULT SendCommand([in] unsigned char *inBuffer, [in] unsigned long inBufferSize, [out] unsigned char *outBuffer, [out] unsigned long *outDataSize, [in] unsigned long outBufferSize, [out] BMDDeckControlError *error); HRESULT Play([out] BMDDeckControlError *error); HRESULT Stop([out] BMDDeckControlError *error); HRESULT TogglePlayStop([out] BMDDeckControlError *error); HRESULT Eject([out] BMDDeckControlError *error); HRESULT GoToTimecode([in] BMDTimecodeBCD timecode, [out] BMDDeckControlError *error); HRESULT FastForward([in] BOOL viewTape, [out] BMDDeckControlError *error); HRESULT Rewind([in] BOOL viewTape, [out] BMDDeckControlError *error); HRESULT StepForward([out] BMDDeckControlError *error); HRESULT StepBack([out] BMDDeckControlError *error); HRESULT Jog([in] double rate, [out] BMDDeckControlError *error); HRESULT Shuttle([in] double rate, [out] BMDDeckControlError *error); HRESULT GetTimecodeString([out] BSTR *currentTimeCode, [out] BMDDeckControlError *error); HRESULT GetTimecode([out] IDeckLinkTimecode **currentTimecode, [out] BMDDeckControlError *error); HRESULT GetTimecodeBCD([out] BMDTimecodeBCD *currentTimecode, [out] BMDDeckControlError *error); HRESULT SetPreroll([in] unsigned long prerollSeconds); HRESULT GetPreroll([out] unsigned long *prerollSeconds); HRESULT SetExportOffset([in] long exportOffsetFields); HRESULT GetExportOffset([out] long *exportOffsetFields); HRESULT GetManualExportOffset([out] long *deckManualExportOffsetFields); HRESULT SetCaptureOffset([in] long captureOffsetFields); HRESULT GetCaptureOffset([out] long *captureOffsetFields); HRESULT StartExport([in] BMDTimecodeBCD inTimecode, [in] BMDTimecodeBCD outTimecode, [in] BMDDeckControlExportModeOpsFlags exportModeOps, [out] BMDDeckControlError *error); HRESULT StartCapture([in] BOOL useVITC, [in] BMDTimecodeBCD inTimecode, [in] BMDTimecodeBCD outTimecode, [out] BMDDeckControlError *error); HRESULT GetDeviceID([out] unsigned short *deviceId, [out] BMDDeckControlError *error); HRESULT Abort(void); HRESULT CrashRecordStart([out] BMDDeckControlError *error); HRESULT CrashRecordStop([out] BMDDeckControlError *error); HRESULT SetCallback([in] IDeckLinkDeckControlStatusCallback *callback); }; /* Coclasses */ importlib("stdole2.tlb"); [ uuid(D9EDA3B3-2887-41FA-B724-017CF1EB1D37), helpstring("CDeckLinkIterator Class") ] coclass CDeckLinkIterator { [default] interface IDeckLinkIterator; }; [ uuid(263CA19F-ED09-482E-9F9D-84005783A237), helpstring("CDeckLinkAPIInformation Class") ] coclass CDeckLinkAPIInformation { [default] interface IDeckLinkAPIInformation; }; [ uuid(F63E77C7-B655-4A4A-9AD0-3CA85D394343), helpstring("CDeckLinkGLScreenPreviewHelper Class") ] coclass CDeckLinkGLScreenPreviewHelper { [default] interface IDeckLinkGLScreenPreviewHelper; }; [ uuid(7DBBBB11-5B7B-467D-AEA4-CEA468FD368C), helpstring("CDeckLinkVideoConversion Class") ] coclass CDeckLinkVideoConversion { [default] interface IDeckLinkVideoConversion; }; // import deprecated interfaces #include "DeckLinkAPI_v7_9.idl" #include "DeckLinkAPI_v7_6.idl" #include "DeckLinkAPI_v7_3.idl" #include "DeckLinkAPI_v7_1.idl" };