/* Enum BMDPixelFormat - Video pixel formats supported for output/input */
typedefuint32_tBMDPixelFormat;
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
};
/* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */
typedefuint32_tBMDDisplayModeFlags;
enum_BMDDisplayModeFlags{
bmdDisplayModeSupports3D=1<<0,
bmdDisplayModeColorspaceRec601=1<<1,
bmdDisplayModeColorspaceRec709=1<<2
};
/* Enum BMDVideoOutputFlags - Flags to control the output of ancillary data along with video. */
typedefuint32_tBMDVideoOutputFlags;
enum_BMDVideoOutputFlags{
bmdVideoOutputFlagDefault=0,
bmdVideoOutputVANC=1<<0,
bmdVideoOutputVITC=1<<1,
bmdVideoOutputRP188=1<<2,
bmdVideoOutputDualStream3D=1<<4
};
/* Enum BMDFrameFlags - Frame flags */
typedefuint32_tBMDFrameFlags;
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 */
typedefuint32_tBMDVideoInputFlags;
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 */
typedefuint32_tBMDVideoInputFormatChangedEvents;
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 */
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.
};
/* Enum BMDDeckControlVTRControlState - VTR Control state */
virtualHRESULTVideoInputFormatChanged(/* in */BMDVideoInputFormatChangedEventsnotificationEvents,/* in */IDeckLinkDisplayMode*newDisplayMode,/* in */BMDDetectedVideoInputFormatFlagsdetectedSignalFlags)=0;
virtualHRESULTVideoInputFrameArrived(/* in */IDeckLinkVideoInputFrame*videoFrame,/* in */IDeckLinkAudioInputPacket*audioPacket)=0;
protected:
virtual~IDeckLinkInputCallback(){};// call Release method to drop reference count
};
/* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */
classIDeckLinkMemoryAllocator:publicIUnknown
{
public:
virtualHRESULTAllocateBuffer(/* in */uint32_tbufferSize,/* out */void**allocatedBuffer)=0;
virtualHRESULTReleaseBuffer(/* in */void*buffer)=0;
virtualHRESULTCommit(void)=0;
virtualHRESULTDecommit(void)=0;
};
/* Interface IDeckLinkAudioOutputCallback - Optional callback to allow audio samples to be pulled as required. */
classIDeckLinkAudioOutputCallback:publicIUnknown
{
public:
virtualHRESULTRenderAudioSamples(/* in */boolpreroll)=0;
virtual~IDeckLinkDisplayMode(){};// call Release method to drop reference count
};
/* Interface IDeckLink - represents a DeckLink device */
classIDeckLink:publicIUnknown
{
public:
virtualHRESULTGetModelName(/* out */constchar**modelName)=0;
};
/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
classIDeckLinkOutput:publicIUnknown
{
public:
virtualHRESULTDoesSupportVideoMode(/* in */BMDDisplayModedisplayMode,/* in */BMDPixelFormatpixelFormat,/* in */BMDVideoOutputFlagsflags,/* out */BMDDisplayModeSupport*result,/* out */IDeckLinkDisplayMode**resultDisplayMode)=0;
virtualHRESULTGetDisplayModeIterator(/* out */IDeckLinkDisplayModeIterator**iterator)=0;
virtualHRESULTSetScreenPreviewCallback(/* in */IDeckLinkScreenPreviewCallback*previewCallback)=0;
/* Video Output */
virtualHRESULTEnableVideoOutput(/* in */BMDDisplayModedisplayMode,/* in */BMDVideoOutputFlagsflags)=0;
virtualHRESULTDisableVideoOutput(void)=0;
virtualHRESULTSetVideoOutputFrameMemoryAllocator(/* in */IDeckLinkMemoryAllocator*theAllocator)=0;
virtualHRESULTCreateVideoFrame(/* in */int32_twidth,/* in */int32_theight,/* in */int32_trowBytes,/* in */BMDPixelFormatpixelFormat,/* in */BMDFrameFlagsflags,/* out */IDeckLinkMutableVideoFrame**outFrame)=0;
virtualHRESULTCreateAncillaryData(/* in */BMDPixelFormatpixelFormat,/* out */IDeckLinkVideoFrameAncillary**outBuffer)=0;
virtualHRESULTDisplayVideoFrameSync(/* in */IDeckLinkVideoFrame*theFrame)=0;
virtualHRESULTScheduleVideoFrame(/* in */IDeckLinkVideoFrame*theFrame,/* in */BMDTimeValuedisplayTime,/* in */BMDTimeValuedisplayDuration,/* in */BMDTimeScaletimeScale)=0;
virtualHRESULTSetScheduledFrameCompletionCallback(/* in */IDeckLinkVideoOutputCallback*theCallback)=0;
virtualHRESULTGetBufferedVideoFrameCount(/* out */uint32_t*bufferedFrameCount)=0;
/* Audio Output */
virtualHRESULTEnableAudioOutput(/* in */BMDAudioSampleRatesampleRate,/* in */BMDAudioSampleTypesampleType,/* in */uint32_tchannelCount,/* in */BMDAudioOutputStreamTypestreamType)=0;
virtualHRESULTDisableAudioOutput(void)=0;
virtualHRESULTWriteAudioSamplesSync(/* in */void*buffer,/* in */uint32_tsampleFrameCount,/* out */uint32_t*sampleFramesWritten)=0;
virtualHRESULTBeginAudioPreroll(void)=0;
virtualHRESULTEndAudioPreroll(void)=0;
virtualHRESULTScheduleAudioSamples(/* in */void*buffer,/* in */uint32_tsampleFrameCount,/* in */BMDTimeValuestreamTime,/* in */BMDTimeScaletimeScale,/* out */uint32_t*sampleFramesWritten)=0;
virtualHRESULTGetBufferedAudioSampleFrameCount(/* out */uint32_t*bufferedSampleFrameCount)=0;
virtualHRESULTFlushBufferedAudioSamples(void)=0;
virtualHRESULTSetAudioCallback(/* in */IDeckLinkAudioOutputCallback*theCallback)=0;
/* Output Control */
virtualHRESULTStartScheduledPlayback(/* in */BMDTimeValueplaybackStartTime,/* in */BMDTimeScaletimeScale,/* in */doubleplaybackSpeed)=0;
virtualHRESULTStopScheduledPlayback(/* in */BMDTimeValuestopPlaybackAtTime,/* out */BMDTimeValue*actualStopTime,/* in */BMDTimeScaletimeScale)=0;
virtualHRESULTIsScheduledPlaybackRunning(/* out */bool*active)=0;
virtualHRESULTGetScheduledStreamTime(/* in */BMDTimeScaledesiredTimeScale,/* out */BMDTimeValue*streamTime,/* out */double*playbackSpeed)=0;
virtualHRESULTGetReferenceStatus(/* out */BMDReferenceStatus*referenceStatus)=0;
/* Hardware Timing */
virtualHRESULTGetHardwareReferenceClock(/* in */BMDTimeScaledesiredTimeScale,/* out */BMDTimeValue*hardwareTime,/* out */BMDTimeValue*timeInFrame,/* out */BMDTimeValue*ticksPerFrame)=0;
protected:
virtual~IDeckLinkOutput(){};// call Release method to drop reference count
};
/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
classIDeckLinkInput:publicIUnknown
{
public:
virtualHRESULTDoesSupportVideoMode(/* in */BMDDisplayModedisplayMode,/* in */BMDPixelFormatpixelFormat,/* in */BMDVideoInputFlagsflags,/* out */BMDDisplayModeSupport*result,/* out */IDeckLinkDisplayMode**resultDisplayMode)=0;
virtualHRESULTGetDisplayModeIterator(/* out */IDeckLinkDisplayModeIterator**iterator)=0;
virtualHRESULTSetScreenPreviewCallback(/* in */IDeckLinkScreenPreviewCallback*previewCallback)=0;
/* Video Input */
virtualHRESULTEnableVideoInput(/* in */BMDDisplayModedisplayMode,/* in */BMDPixelFormatpixelFormat,/* in */BMDVideoInputFlagsflags)=0;
virtualHRESULTDisableVideoInput(void)=0;
virtualHRESULTGetAvailableVideoFrameCount(/* out */uint32_t*availableFrameCount)=0;
/* Audio Input */
virtualHRESULTEnableAudioInput(/* in */BMDAudioSampleRatesampleRate,/* in */BMDAudioSampleTypesampleType,/* in */uint32_tchannelCount)=0;
virtualHRESULTDisableAudioInput(void)=0;
virtualHRESULTGetAvailableAudioSampleFrameCount(/* out */uint32_t*availableSampleFrameCount)=0;
/* Input Control */
virtualHRESULTStartStreams(void)=0;
virtualHRESULTStopStreams(void)=0;
virtualHRESULTPauseStreams(void)=0;
virtualHRESULTFlushStreams(void)=0;
virtualHRESULTSetCallback(/* in */IDeckLinkInputCallback*theCallback)=0;
/* Hardware Timing */
virtualHRESULTGetHardwareReferenceClock(/* in */BMDTimeScaledesiredTimeScale,/* out */BMDTimeValue*hardwareTime,/* out */BMDTimeValue*timeInFrame,/* out */BMDTimeValue*ticksPerFrame)=0;
protected:
virtual~IDeckLinkInput(){};// call Release method to drop reference count
};
/* Interface IDeckLinkTimecode - Used for video frame timecode representation. */
classIDeckLinkTimecode:publicIUnknown
{
public:
virtualBMDTimecodeBCDGetBCD(void)=0;
virtualHRESULTGetComponents(/* out */uint8_t*hours,/* out */uint8_t*minutes,/* out */uint8_t*seconds,/* out */uint8_t*frames)=0;
virtualHRESULTGetString(/* out */constchar**timecode)=0;
virtualBMDTimecodeFlagsGetFlags(void)=0;
virtualHRESULTGetTimecodeUserBits(/* out */BMDTimecodeUserBits*userBits)=0;
protected:
virtual~IDeckLinkTimecode(){};// call Release method to drop reference count
};
/* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
classIDeckLinkVideoFrame:publicIUnknown
{
public:
virtuallongGetWidth(void)=0;
virtuallongGetHeight(void)=0;
virtuallongGetRowBytes(void)=0;
virtualBMDPixelFormatGetPixelFormat(void)=0;
virtualBMDFrameFlagsGetFlags(void)=0;
virtualHRESULTGetBytes(/* out */void**buffer)=0;
virtualHRESULTGetTimecode(/* in */BMDTimecodeFormatformat,/* out */IDeckLinkTimecode**timecode)=0;
virtualHRESULTGetAncillaryData(/* out */IDeckLinkVideoFrameAncillary**ancillary)=0;
protected:
virtual~IDeckLinkVideoFrame(){};// call Release method to drop reference count
};
/* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
virtualHRESULTSetFlags(/* in */BMDFrameFlagsnewFlags)=0;
virtualHRESULTSetTimecode(/* in */BMDTimecodeFormatformat,/* in */IDeckLinkTimecode*timecode)=0;
virtualHRESULTSetTimecodeFromComponents(/* in */BMDTimecodeFormatformat,/* in */uint8_thours,/* in */uint8_tminutes,/* in */uint8_tseconds,/* in */uint8_tframes,/* in */BMDTimecodeFlagsflags)=0;
virtualHRESULTSetAncillaryData(/* in */IDeckLinkVideoFrameAncillary*ancillary)=0;
virtualHRESULTSetTimecodeUserBits(/* in */BMDTimecodeFormatformat,/* in */BMDTimecodeUserBitsuserBits)=0;
protected:
virtual~IDeckLinkMutableVideoFrame(){};// call Release method to drop reference count
};
/* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */
virtualHRESULTTimecodeUpdate(/* in */BMDTimecodeBCDcurrentTimecode)=0;
virtualHRESULTVTRControlStateChanged(/* in */BMDDeckControlVTRControlStatenewState,/* in */BMDDeckControlErrorerror)=0;
virtualHRESULTDeckControlEventReceived(/* in */BMDDeckControlEventevent,/* in */BMDDeckControlErrorerror)=0;
virtualHRESULTDeckControlStatusChanged(/* in */BMDDeckControlStatusFlagsflags,/* in */uint32_tmask)=0;
protected:
virtual~IDeckLinkDeckControlStatusCallback(){};// call Release method to drop reference count
};
/* Interface IDeckLinkDeckControl - Deck Control main interface */
classIDeckLinkDeckControl:publicIUnknown
{
public:
virtualHRESULTOpen(/* in */BMDTimeScaletimeScale,/* in */BMDTimeValuetimeValue,/* in */booltimecodeIsDropFrame,/* out */BMDDeckControlError*error)=0;
virtualHRESULTClose(/* in */boolstandbyOn)=0;
virtualHRESULTGetCurrentState(/* out */BMDDeckControlMode*mode,/* out */BMDDeckControlVTRControlState*vtrControlState,/* out */BMDDeckControlStatusFlags*flags)=0;
virtualHRESULTSetStandby(/* in */boolstandbyOn)=0;
virtualHRESULTSendCommand(/* in */uint8_t*inBuffer,/* in */uint32_tinBufferSize,/* out */uint8_t*outBuffer,/* out */uint32_t*outDataSize,/* in */uint32_toutBufferSize,/* out */BMDDeckControlError*error)=0;
virtualHRESULTPlay(/* out */BMDDeckControlError*error)=0;
virtualHRESULTStop(/* out */BMDDeckControlError*error)=0;
virtualHRESULTTogglePlayStop(/* out */BMDDeckControlError*error)=0;
virtualHRESULTEject(/* out */BMDDeckControlError*error)=0;
virtualHRESULTGoToTimecode(/* in */BMDTimecodeBCDtimecode,/* out */BMDDeckControlError*error)=0;
virtualHRESULTFastForward(/* in */boolviewTape,/* out */BMDDeckControlError*error)=0;
virtualHRESULTRewind(/* in */boolviewTape,/* out */BMDDeckControlError*error)=0;
virtualHRESULTStepForward(/* out */BMDDeckControlError*error)=0;
virtualHRESULTStepBack(/* out */BMDDeckControlError*error)=0;
virtualHRESULTJog(/* in */doublerate,/* out */BMDDeckControlError*error)=0;
virtualHRESULTShuttle(/* in */doublerate,/* out */BMDDeckControlError*error)=0;
virtualHRESULTGetTimecodeString(/* out */constchar**currentTimeCode,/* out */BMDDeckControlError*error)=0;
virtualHRESULTGetTimecode(/* out */IDeckLinkTimecode**currentTimecode,/* out */BMDDeckControlError*error)=0;
virtualHRESULTGetTimecodeBCD(/* out */BMDTimecodeBCD*currentTimecode,/* out */BMDDeckControlError*error)=0;
virtualHRESULTSetPreroll(/* in */uint32_tprerollSeconds)=0;
virtualHRESULTGetPreroll(/* out */uint32_t*prerollSeconds)=0;
virtualHRESULTSetExportOffset(/* in */int32_texportOffsetFields)=0;
virtualHRESULTGetExportOffset(/* out */int32_t*exportOffsetFields)=0;
virtualHRESULTGetManualExportOffset(/* out */int32_t*deckManualExportOffsetFields)=0;
virtualHRESULTSetCaptureOffset(/* in */int32_tcaptureOffsetFields)=0;
virtualHRESULTGetCaptureOffset(/* out */int32_t*captureOffsetFields)=0;
virtualHRESULTStartExport(/* in */BMDTimecodeBCDinTimecode,/* in */BMDTimecodeBCDoutTimecode,/* in */BMDDeckControlExportModeOpsFlagsexportModeOps,/* out */BMDDeckControlError*error)=0;
virtualHRESULTStartCapture(/* in */booluseVITC,/* in */BMDTimecodeBCDinTimecode,/* in */BMDTimecodeBCDoutTimecode,/* out */BMDDeckControlError*error)=0;
virtualHRESULTGetDeviceID(/* out */uint16_t*deviceId,/* out */BMDDeckControlError*error)=0;
virtualHRESULTAbort(void)=0;
virtualHRESULTCrashRecordStart(/* out */BMDDeckControlError*error)=0;
virtualHRESULTCrashRecordStop(/* out */BMDDeckControlError*error)=0;
virtualHRESULTSetCallback(/* in */IDeckLinkDeckControlStatusCallback*callback)=0;
protected:
virtual~IDeckLinkDeckControl(){};// call Release method to drop reference count