mirror of
https://github.com/obsproject/obs-studio.git
synced 2024-09-20 13:08:50 +02:00
decklink: Add Windows DeckLink SDK
Some changes were made to the stock DeckLink SDK: removed all references to legacy API headers in DeckLinkAPI.idl; removed all instances of `importlib("stdole2.tlb");`.
This commit is contained in:
parent
70f8369ae3
commit
b959f56291
813
plugins/decklink/win/decklink-sdk/DeckLinkAPI.idl
Normal file
813
plugins/decklink/win/decklink-sdk/DeckLinkAPI.idl
Normal file
@ -0,0 +1,813 @@
|
||||
/* -LICENSE-START-
|
||||
** Copyright (c) 2014 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-
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BMD_CONST
|
||||
#if defined(_MSC_VER)
|
||||
#define BMD_CONST __declspec(selectany) static const
|
||||
#else
|
||||
#define BMD_CONST static const
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* DeckLink API */
|
||||
|
||||
import "unknwn.idl";
|
||||
|
||||
[uuid(D864517A-EDD5-466D-867D-C819F1C052BB),
|
||||
version(1.0), helpstring("DeckLink API Library")]
|
||||
library DeckLinkAPI
|
||||
{
|
||||
|
||||
#include "DeckLinkAPITypes.idl"
|
||||
#include "DeckLinkAPIModes.idl"
|
||||
#include "DeckLinkAPIDiscovery.idl"
|
||||
#include "DeckLinkAPIConfiguration.idl"
|
||||
#include "DeckLinkAPIDeckControl.idl"
|
||||
#include "DeckLinkAPIStreaming.idl"
|
||||
|
||||
// Type Declarations
|
||||
|
||||
|
||||
// Enumeration Mapping
|
||||
|
||||
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 BMDDeckLinkCapturePassthroughMode;")
|
||||
cpp_quote("typedef unsigned long BMDAnalogVideoFlags;")
|
||||
cpp_quote("typedef unsigned long BMDDeviceBusyState;")
|
||||
cpp_quote("#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;
|
||||
cpp_quote("#endif")
|
||||
|
||||
/* 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,
|
||||
bmdDetectedVideoInputDualStream3D = 1 << 2
|
||||
};
|
||||
|
||||
/* Enum BMDDeckLinkCapturePassthroughMode - Enumerates whether the video output is electrically connected to the video input or if the clean switching mode is enabled */
|
||||
|
||||
[v1_enum] enum _BMDDeckLinkCapturePassthroughMode {
|
||||
bmdDeckLinkCapturePassthroughModeDirect = /* 'pdir' */ 0x70646972,
|
||||
bmdDeckLinkCapturePassthroughModeCleanSwitch = /* 'pcln' */ 0x70636C6E
|
||||
};
|
||||
|
||||
/* 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 {
|
||||
bmdTimecodeRP188VITC1 = /* 'rpv1' */ 0x72707631, // RP188 timecode where DBB1 equals VITC1 (line 9)
|
||||
bmdTimecodeRP188VITC2 = /* 'rp12' */ 0x72703132, // RP188 timecode where DBB1 equals VITC2 (line 9 for progressive or line 571 for interlaced/PsF)
|
||||
bmdTimecodeRP188LTC = /* 'rplt' */ 0x72706C74, // RP188 timecode where DBB1 equals LTC (line 10)
|
||||
bmdTimecodeRP188Any = /* 'rp18' */ 0x72703138, // For capture: return the first valid timecode in {VITC1, LTC ,VITC2} - For playback: set the timecode as VITC1
|
||||
bmdTimecodeVITC = /* 'vitc' */ 0x76697463,
|
||||
bmdTimecodeVITCField2 = /* 'vit2' */ 0x76697432,
|
||||
bmdTimecodeSerial = /* 'seri' */ 0x73657269
|
||||
} BMDTimecodeFormat;
|
||||
|
||||
/* Enum BMDAnalogVideoFlags - Analog video display flags */
|
||||
|
||||
[v1_enum] enum _BMDAnalogVideoFlags {
|
||||
bmdAnalogVideoFlagCompositeSetup75 = 1 << 0,
|
||||
bmdAnalogVideoFlagComponentBetacamLevels = 1 << 1
|
||||
};
|
||||
|
||||
/* 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,
|
||||
bmdIdleVideoOutputDesktop = /* 'desk' */ 0x6465736B
|
||||
} BMDIdleVideoOutputOperation;
|
||||
|
||||
/* 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,
|
||||
BMDDeckLinkSupportsDesktopDisplay = /* 'extd' */ 0x65787464,
|
||||
BMDDeckLinkSupportsClockTimingAdjustment = /* 'ctad' */ 0x63746164,
|
||||
BMDDeckLinkSupportsFullDuplex = /* 'fdup' */ 0x66647570,
|
||||
BMDDeckLinkSupportsFullFrameReferenceInputTimingOffset = /* 'frin' */ 0x6672696E,
|
||||
|
||||
/* Integers */
|
||||
|
||||
BMDDeckLinkMaximumAudioChannels = /* 'mach' */ 0x6D616368,
|
||||
BMDDeckLinkMaximumAnalogAudioChannels = /* 'aach' */ 0x61616368,
|
||||
BMDDeckLinkNumberOfSubDevices = /* 'nsbd' */ 0x6E736264,
|
||||
BMDDeckLinkSubDeviceIndex = /* 'subi' */ 0x73756269,
|
||||
BMDDeckLinkPersistentID = /* 'peid' */ 0x70656964,
|
||||
BMDDeckLinkTopologicalID = /* 'toid' */ 0x746F6964,
|
||||
BMDDeckLinkVideoOutputConnections = /* 'vocn' */ 0x766F636E,
|
||||
BMDDeckLinkVideoInputConnections = /* 'vicn' */ 0x7669636E,
|
||||
BMDDeckLinkAudioOutputConnections = /* 'aocn' */ 0x616F636E,
|
||||
BMDDeckLinkAudioInputConnections = /* 'aicn' */ 0x6169636E,
|
||||
BMDDeckLinkDeviceBusyState = /* 'dbst' */ 0x64627374,
|
||||
BMDDeckLinkVideoIOSupport = /* 'vios' */ 0x76696F73, // Returns a BMDVideoIOSupport bit field
|
||||
|
||||
/* 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 BMDDeviceBusyState - Current device busy state */
|
||||
|
||||
[v1_enum] enum _BMDDeviceBusyState {
|
||||
bmdDeviceCaptureBusy = 1 << 0,
|
||||
bmdDevicePlaybackBusy = 1 << 1,
|
||||
bmdDeviceSerialPortBusy = 1 << 2
|
||||
};
|
||||
|
||||
/* Enum BMDVideoIOSupport - Device video input/output support */
|
||||
|
||||
typedef [v1_enum] enum _BMDVideoIOSupport {
|
||||
bmdDeviceSupportsCapture = 1 << 0,
|
||||
bmdDeviceSupportsPlayback = 1 << 1
|
||||
} BMDVideoIOSupport;
|
||||
|
||||
/* 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;
|
||||
|
||||
/* Enum BMDNotifications - Events that can be subscribed through IDeckLinkNotification */
|
||||
|
||||
typedef [v1_enum] enum _BMDNotifications {
|
||||
bmdPreferencesChanged = /* 'pref' */ 0x70726566
|
||||
} BMDNotifications;
|
||||
|
||||
// Forward Declarations
|
||||
|
||||
interface IDeckLinkVideoOutputCallback;
|
||||
interface IDeckLinkInputCallback;
|
||||
interface IDeckLinkMemoryAllocator;
|
||||
interface IDeckLinkAudioOutputCallback;
|
||||
interface IDeckLinkIterator;
|
||||
interface IDeckLinkAPIInformation;
|
||||
interface IDeckLinkOutput;
|
||||
interface IDeckLinkInput;
|
||||
interface IDeckLinkVideoFrame;
|
||||
interface IDeckLinkMutableVideoFrame;
|
||||
interface IDeckLinkVideoFrame3DExtensions;
|
||||
interface IDeckLinkVideoInputFrame;
|
||||
interface IDeckLinkVideoFrameAncillary;
|
||||
interface IDeckLinkAudioInputPacket;
|
||||
interface IDeckLinkScreenPreviewCallback;
|
||||
interface IDeckLinkGLScreenPreviewHelper;
|
||||
interface IDeckLinkDX9ScreenPreviewHelper;
|
||||
interface IDeckLinkNotificationCallback;
|
||||
interface IDeckLinkNotification;
|
||||
interface IDeckLinkAttributes;
|
||||
interface IDeckLinkKeyer;
|
||||
interface IDeckLinkVideoConversion;
|
||||
interface IDeckLinkDeviceNotificationCallback;
|
||||
interface IDeckLinkDiscovery;
|
||||
|
||||
/* 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(50FB36CD-3063-4B73-BDBB-958087F2D8BA),
|
||||
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 IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(CC5C8A6E-3F2F-4B3A-87EA-FD78AF300564),
|
||||
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);
|
||||
HRESULT GetFrameCompletionReferenceTimestamp([in] IDeckLinkVideoFrame *theFrame, [in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *frameCompletionTimestamp);
|
||||
};
|
||||
|
||||
/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(AF22762B-DFAC-4846-AA79-FA8883560995),
|
||||
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);
|
||||
HRESULT SetVideoInputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);
|
||||
|
||||
/* 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 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 IDeckLinkDX9ScreenPreviewHelper - Created with CoCreateInstance(). */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(2094B522-D1A1-40C0-9AC7-1C012218EF02),
|
||||
local,
|
||||
helpstring("Created with CoCreateInstance().")
|
||||
] interface IDeckLinkDX9ScreenPreviewHelper : IUnknown
|
||||
{
|
||||
HRESULT Initialize([in] void *device);
|
||||
HRESULT Render([in] RECT *rc);
|
||||
HRESULT SetFrame([in] IDeckLinkVideoFrame *theFrame);
|
||||
HRESULT Set3DPreviewFormat([in] BMD3DPreviewFormat previewFormat);
|
||||
};
|
||||
|
||||
/* Interface IDeckLinkNotificationCallback - DeckLink Notification Callback Interface */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(b002a1ec-070d-4288-8289-bd5d36e5ff0d),
|
||||
local,
|
||||
helpstring("DeckLink Notification Callback Interface")
|
||||
] interface IDeckLinkNotificationCallback : IUnknown
|
||||
{
|
||||
HRESULT Notify([in] BMDNotifications topic, [in] ULONGLONG param1, [in] ULONGLONG param2);
|
||||
};
|
||||
|
||||
/* Interface IDeckLinkNotification - DeckLink Notification interface */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(0a1fb207-e215-441b-9b19-6fa1575946c5),
|
||||
local,
|
||||
helpstring("DeckLink Notification interface")
|
||||
] interface IDeckLinkNotification : IUnknown
|
||||
{
|
||||
HRESULT Subscribe([in] BMDNotifications topic, [in] IDeckLinkNotificationCallback *theCallback);
|
||||
HRESULT Unsubscribe([in] BMDNotifications topic, [in] IDeckLinkNotificationCallback *theCallback);
|
||||
};
|
||||
|
||||
/* 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 IDeckLinkDeviceNotificationCallback - DeckLink device arrival/removal notification callbacks */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(4997053B-0ADF-4CC8-AC70-7A50C4BE728F),
|
||||
helpstring("DeckLink device arrival/removal notification callbacks")
|
||||
] interface IDeckLinkDeviceNotificationCallback : IUnknown
|
||||
{
|
||||
HRESULT DeckLinkDeviceArrived([in] IDeckLink* deckLinkDevice);
|
||||
HRESULT DeckLinkDeviceRemoved([in] IDeckLink* deckLinkDevice);
|
||||
};
|
||||
|
||||
/* Interface IDeckLinkDiscovery - DeckLink device discovery */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(CDBF631C-BC76-45FA-B44D-C55059BC6101),
|
||||
helpstring("DeckLink device discovery")
|
||||
] interface IDeckLinkDiscovery : IUnknown
|
||||
{
|
||||
HRESULT InstallDeviceNotifications([in] IDeckLinkDeviceNotificationCallback* deviceNotificationCallback);
|
||||
HRESULT UninstallDeviceNotifications(void);
|
||||
};
|
||||
|
||||
/* Coclasses */
|
||||
|
||||
[
|
||||
uuid(1F2E109A-8F4F-49E4-9203-135595CB6FA5),
|
||||
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(CC010023-E01D-4525-9D59-80C8AB3DC7A0),
|
||||
helpstring("CDeckLinkDX9ScreenPreviewHelper Class")
|
||||
] coclass CDeckLinkDX9ScreenPreviewHelper
|
||||
{
|
||||
[default] interface IDeckLinkDX9ScreenPreviewHelper;
|
||||
};
|
||||
|
||||
[
|
||||
uuid(7DBBBB11-5B7B-467D-AEA4-CEA468FD368C),
|
||||
helpstring("CDeckLinkVideoConversion Class")
|
||||
] coclass CDeckLinkVideoConversion
|
||||
{
|
||||
[default] interface IDeckLinkVideoConversion;
|
||||
};
|
||||
|
||||
[
|
||||
uuid(1073A05C-D885-47E9-B3C6-129B3F9F648B),
|
||||
helpstring("CDeckLinkDiscovery Class")
|
||||
] coclass CDeckLinkDiscovery
|
||||
{
|
||||
[default] interface IDeckLinkDiscovery;
|
||||
};
|
||||
|
||||
};
|
171
plugins/decklink/win/decklink-sdk/DeckLinkAPIConfiguration.idl
Normal file
171
plugins/decklink/win/decklink-sdk/DeckLinkAPIConfiguration.idl
Normal file
@ -0,0 +1,171 @@
|
||||
/* -LICENSE-START-
|
||||
** Copyright (c) 2014 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-
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BMD_CONST
|
||||
#if defined(_MSC_VER)
|
||||
#define BMD_CONST __declspec(selectany) static const
|
||||
#else
|
||||
#define BMD_CONST static const
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Type Declarations
|
||||
|
||||
|
||||
// Enumeration Mapping
|
||||
|
||||
cpp_quote("#if 0")
|
||||
cpp_quote("#endif")
|
||||
|
||||
/* 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,
|
||||
bmdDeckLinkConfigClockTimingAdjustment = /* 'ctad' */ 0x63746164,
|
||||
|
||||
/* Audio Input/Output Flags */
|
||||
|
||||
bmdDeckLinkConfigAnalogAudioConsumerLevels = /* 'aacl' */ 0x6161636C,
|
||||
|
||||
/* Video output flags */
|
||||
|
||||
bmdDeckLinkConfigFieldFlickerRemoval = /* 'fdfr' */ 0x66646672,
|
||||
bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion = /* 'to59' */ 0x746F3539,
|
||||
bmdDeckLinkConfig444SDIVideoOutput = /* '444o' */ 0x3434346F,
|
||||
bmdDeckLinkConfigSingleLinkVideoOutput = /* 'sglo' */ 0x73676C6F,
|
||||
bmdDeckLinkConfigBlackVideoOutputDuringCapture = /* 'bvoc' */ 0x62766F63,
|
||||
bmdDeckLinkConfigLowLatencyVideoOutput = /* 'llvo' */ 0x6C6C766F,
|
||||
|
||||
/* Video Output Integers */
|
||||
|
||||
bmdDeckLinkConfigVideoOutputConnection = /* 'vocn' */ 0x766F636E,
|
||||
bmdDeckLinkConfigVideoOutputConversionMode = /* 'vocm' */ 0x766F636D,
|
||||
bmdDeckLinkConfigAnalogVideoOutputFlags = /* 'avof' */ 0x61766F66,
|
||||
bmdDeckLinkConfigReferenceInputTimingOffset = /* 'glot' */ 0x676C6F74,
|
||||
bmdDeckLinkConfigVideoOutputIdleOperation = /* 'voio' */ 0x766F696F,
|
||||
bmdDeckLinkConfigDefaultVideoOutputMode = /* 'dvom' */ 0x64766F6D,
|
||||
bmdDeckLinkConfigDefaultVideoOutputModeFlags = /* 'dvof' */ 0x64766F66,
|
||||
|
||||
/* 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 Flags */
|
||||
|
||||
bmdDeckLinkConfigVideoInputScanning = /* 'visc' */ 0x76697363, // Applicable to H264 Pro Recorder only
|
||||
bmdDeckLinkConfigUseDedicatedLTCInput = /* 'dltc' */ 0x646C7463, // Use timecode from LTC input instead of SDI stream
|
||||
|
||||
/* Video Input Integers */
|
||||
|
||||
bmdDeckLinkConfigVideoInputConnection = /* 'vicn' */ 0x7669636E,
|
||||
bmdDeckLinkConfigAnalogVideoInputFlags = /* 'avif' */ 0x61766966,
|
||||
bmdDeckLinkConfigVideoInputConversionMode = /* 'vicm' */ 0x7669636D,
|
||||
bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame = /* 'pdif' */ 0x70646966,
|
||||
bmdDeckLinkConfigVANCSourceLine1Mapping = /* 'vsl1' */ 0x76736C31,
|
||||
bmdDeckLinkConfigVANCSourceLine2Mapping = /* 'vsl2' */ 0x76736C32,
|
||||
bmdDeckLinkConfigVANCSourceLine3Mapping = /* 'vsl3' */ 0x76736C33,
|
||||
bmdDeckLinkConfigCapturePassThroughMode = /* 'cptm' */ 0x6370746D,
|
||||
|
||||
/* 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;
|
||||
|
||||
// Forward Declarations
|
||||
|
||||
interface IDeckLinkConfiguration;
|
||||
|
||||
/* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(1E69FCF6-4203-4936-8076-2A9F4CFD50CB),
|
||||
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);
|
||||
};
|
||||
|
||||
/* Coclasses */
|
202
plugins/decklink/win/decklink-sdk/DeckLinkAPIDeckControl.idl
Normal file
202
plugins/decklink/win/decklink-sdk/DeckLinkAPIDeckControl.idl
Normal file
@ -0,0 +1,202 @@
|
||||
/* -LICENSE-START-
|
||||
** Copyright (c) 2014 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-
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BMD_CONST
|
||||
#if defined(_MSC_VER)
|
||||
#define BMD_CONST __declspec(selectany) static const
|
||||
#else
|
||||
#define BMD_CONST static const
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Type Declarations
|
||||
|
||||
|
||||
// Enumeration Mapping
|
||||
|
||||
cpp_quote("typedef unsigned long BMDDeckControlStatusFlags;")
|
||||
cpp_quote("typedef unsigned long BMDDeckControlExportModeOpsFlags;")
|
||||
cpp_quote("#if 0")
|
||||
typedef enum _BMDDeckControlStatusFlags BMDDeckControlStatusFlags;
|
||||
typedef enum _BMDDeckControlExportModeOpsFlags BMDDeckControlExportModeOpsFlags;
|
||||
cpp_quote("#endif")
|
||||
|
||||
/* 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,
|
||||
bmdDeckControlVTRControlShuttleForward = /* 'vtsf' */ 0x76747366,
|
||||
bmdDeckControlVTRControlShuttleReverse = /* 'vtsr' */ 0x76747372,
|
||||
bmdDeckControlVTRControlJogForward = /* 'vtjf' */ 0x76746A66,
|
||||
bmdDeckControlVTRControlJogReverse = /* 'vtjr' */ 0x76746A72,
|
||||
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;
|
||||
|
||||
// Forward Declarations
|
||||
|
||||
interface IDeckLinkDeckControlStatusCallback;
|
||||
interface IDeckLinkDeckControl;
|
||||
|
||||
/* Interface IDeckLinkDeckControlStatusCallback - Deck control state change callback. */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(53436FFB-B434-4906-BADC-AE3060FFE8EF),
|
||||
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(8E1C3ACE-19C7-4E00-8B92-D80431D958BE),
|
||||
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 */
|
61
plugins/decklink/win/decklink-sdk/DeckLinkAPIDiscovery.idl
Normal file
61
plugins/decklink/win/decklink-sdk/DeckLinkAPIDiscovery.idl
Normal file
@ -0,0 +1,61 @@
|
||||
/* -LICENSE-START-
|
||||
** Copyright (c) 2014 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-
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BMD_CONST
|
||||
#if defined(_MSC_VER)
|
||||
#define BMD_CONST __declspec(selectany) static const
|
||||
#else
|
||||
#define BMD_CONST static const
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Type Declarations
|
||||
|
||||
|
||||
// Enumeration Mapping
|
||||
|
||||
cpp_quote("#if 0")
|
||||
cpp_quote("#endif")
|
||||
|
||||
// Forward Declarations
|
||||
|
||||
interface IDeckLink;
|
||||
|
||||
/* Interface IDeckLink - represents a DeckLink device */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(C418FBDD-0587-48ED-8FE5-640F0A14AF91),
|
||||
helpstring("represents a DeckLink device")
|
||||
] interface IDeckLink : IUnknown
|
||||
{
|
||||
HRESULT GetModelName([out] BSTR *modelName);
|
||||
HRESULT GetDisplayName([out] BSTR *displayName);
|
||||
};
|
||||
|
||||
/* Coclasses */
|
178
plugins/decklink/win/decklink-sdk/DeckLinkAPIModes.idl
Normal file
178
plugins/decklink/win/decklink-sdk/DeckLinkAPIModes.idl
Normal file
@ -0,0 +1,178 @@
|
||||
/* -LICENSE-START-
|
||||
** Copyright (c) 2014 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-
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BMD_CONST
|
||||
#if defined(_MSC_VER)
|
||||
#define BMD_CONST __declspec(selectany) static const
|
||||
#else
|
||||
#define BMD_CONST static const
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Type Declarations
|
||||
|
||||
|
||||
// Enumeration Mapping
|
||||
|
||||
cpp_quote("typedef unsigned long BMDDisplayModeFlags;")
|
||||
cpp_quote("#if 0")
|
||||
typedef enum _BMDDisplayModeFlags BMDDisplayModeFlags;
|
||||
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,
|
||||
|
||||
/* DCI Modes (output only) */
|
||||
|
||||
bmdMode2kDCI2398 = /* '2d23' */ 0x32643233,
|
||||
bmdMode2kDCI24 = /* '2d24' */ 0x32643234,
|
||||
bmdMode2kDCI25 = /* '2d25' */ 0x32643235,
|
||||
|
||||
/* 4k Modes */
|
||||
|
||||
bmdMode4K2160p2398 = /* '4k23' */ 0x346B3233,
|
||||
bmdMode4K2160p24 = /* '4k24' */ 0x346B3234,
|
||||
bmdMode4K2160p25 = /* '4k25' */ 0x346B3235,
|
||||
bmdMode4K2160p2997 = /* '4k29' */ 0x346B3239,
|
||||
bmdMode4K2160p30 = /* '4k30' */ 0x346B3330,
|
||||
bmdMode4K2160p50 = /* '4k50' */ 0x346B3530,
|
||||
bmdMode4K2160p5994 = /* '4k59' */ 0x346B3539,
|
||||
bmdMode4K2160p60 = /* '4k60' */ 0x346B3630,
|
||||
|
||||
/* DCI Modes (output only) */
|
||||
|
||||
bmdMode4kDCI2398 = /* '4d23' */ 0x34643233,
|
||||
bmdMode4kDCI24 = /* '4d24' */ 0x34643234,
|
||||
bmdMode4kDCI25 = /* '4d25' */ 0x34643235,
|
||||
|
||||
/* Special Modes */
|
||||
|
||||
bmdModeUnknown = /* 'iunk' */ 0x69756E6B
|
||||
} 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
|
||||
bmdFormat12BitRGB = /* 'R12B' */ 0x52313242, // Big-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component
|
||||
bmdFormat12BitRGBLE = /* 'R12L' */ 0x5231324C, // Little-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component
|
||||
bmdFormat10BitRGBXLE = /* 'R10l' */ 0x5231306C, // Little-endian 10-bit RGB with SMPTE video levels (64-940)
|
||||
bmdFormat10BitRGBX = /* 'R10b' */ 0x52313062 // Big-endian 10-bit RGB with SMPTE video levels (64-940)
|
||||
} BMDPixelFormat;
|
||||
|
||||
/* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */
|
||||
|
||||
[v1_enum] enum _BMDDisplayModeFlags {
|
||||
bmdDisplayModeSupports3D = 1 << 0,
|
||||
bmdDisplayModeColorspaceRec601 = 1 << 1,
|
||||
bmdDisplayModeColorspaceRec709 = 1 << 2
|
||||
};
|
||||
|
||||
// Forward Declarations
|
||||
|
||||
interface IDeckLinkDisplayModeIterator;
|
||||
interface IDeckLinkDisplayMode;
|
||||
|
||||
/* 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);
|
||||
};
|
||||
|
||||
/* Coclasses */
|
360
plugins/decklink/win/decklink-sdk/DeckLinkAPIStreaming.idl
Normal file
360
plugins/decklink/win/decklink-sdk/DeckLinkAPIStreaming.idl
Normal file
@ -0,0 +1,360 @@
|
||||
/* -LICENSE-START-
|
||||
** Copyright (c) 2014 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-
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BMD_CONST
|
||||
#if defined(_MSC_VER)
|
||||
#define BMD_CONST __declspec(selectany) static const
|
||||
#else
|
||||
#define BMD_CONST static const
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Type Declarations
|
||||
|
||||
|
||||
// Enumeration Mapping
|
||||
|
||||
cpp_quote("#if 0")
|
||||
cpp_quote("#endif")
|
||||
|
||||
/* Enum BMDStreamingDeviceMode - Device modes */
|
||||
|
||||
typedef [v1_enum] enum _BMDStreamingDeviceMode {
|
||||
bmdStreamingDeviceIdle = /* 'idle' */ 0x69646C65,
|
||||
bmdStreamingDeviceEncoding = /* 'enco' */ 0x656E636F,
|
||||
bmdStreamingDeviceStopping = /* 'stop' */ 0x73746F70,
|
||||
bmdStreamingDeviceUnknown = /* 'munk' */ 0x6D756E6B
|
||||
} BMDStreamingDeviceMode;
|
||||
|
||||
/* Enum BMDStreamingEncodingFrameRate - Encoded frame rates */
|
||||
|
||||
typedef [v1_enum] enum _BMDStreamingEncodingFrameRate {
|
||||
|
||||
/* Interlaced rates */
|
||||
|
||||
bmdStreamingEncodedFrameRate50i = /* 'e50i' */ 0x65353069,
|
||||
bmdStreamingEncodedFrameRate5994i = /* 'e59i' */ 0x65353969,
|
||||
bmdStreamingEncodedFrameRate60i = /* 'e60i' */ 0x65363069,
|
||||
|
||||
/* Progressive rates */
|
||||
|
||||
bmdStreamingEncodedFrameRate2398p = /* 'e23p' */ 0x65323370,
|
||||
bmdStreamingEncodedFrameRate24p = /* 'e24p' */ 0x65323470,
|
||||
bmdStreamingEncodedFrameRate25p = /* 'e25p' */ 0x65323570,
|
||||
bmdStreamingEncodedFrameRate2997p = /* 'e29p' */ 0x65323970,
|
||||
bmdStreamingEncodedFrameRate30p = /* 'e30p' */ 0x65333070,
|
||||
bmdStreamingEncodedFrameRate50p = /* 'e50p' */ 0x65353070,
|
||||
bmdStreamingEncodedFrameRate5994p = /* 'e59p' */ 0x65353970,
|
||||
bmdStreamingEncodedFrameRate60p = /* 'e60p' */ 0x65363070
|
||||
} BMDStreamingEncodingFrameRate;
|
||||
|
||||
/* Enum BMDStreamingEncodingSupport - Output encoding mode supported flag */
|
||||
|
||||
typedef [v1_enum] enum _BMDStreamingEncodingSupport {
|
||||
bmdStreamingEncodingModeNotSupported = 0,
|
||||
bmdStreamingEncodingModeSupported,
|
||||
bmdStreamingEncodingModeSupportedWithChanges
|
||||
} BMDStreamingEncodingSupport;
|
||||
|
||||
/* Enum BMDStreamingVideoCodec - Video codecs */
|
||||
|
||||
typedef [v1_enum] enum _BMDStreamingVideoCodec {
|
||||
bmdStreamingVideoCodecH264 = /* 'H264' */ 0x48323634
|
||||
} BMDStreamingVideoCodec;
|
||||
|
||||
/* Enum BMDStreamingH264Profile - H264 encoding profile */
|
||||
|
||||
typedef [v1_enum] enum _BMDStreamingH264Profile {
|
||||
bmdStreamingH264ProfileHigh = /* 'high' */ 0x68696768,
|
||||
bmdStreamingH264ProfileMain = /* 'main' */ 0x6D61696E,
|
||||
bmdStreamingH264ProfileBaseline = /* 'base' */ 0x62617365
|
||||
} BMDStreamingH264Profile;
|
||||
|
||||
/* Enum BMDStreamingH264Level - H264 encoding level */
|
||||
|
||||
typedef [v1_enum] enum _BMDStreamingH264Level {
|
||||
bmdStreamingH264Level12 = /* 'lv12' */ 0x6C763132,
|
||||
bmdStreamingH264Level13 = /* 'lv13' */ 0x6C763133,
|
||||
bmdStreamingH264Level2 = /* 'lv2 ' */ 0x6C763220,
|
||||
bmdStreamingH264Level21 = /* 'lv21' */ 0x6C763231,
|
||||
bmdStreamingH264Level22 = /* 'lv22' */ 0x6C763232,
|
||||
bmdStreamingH264Level3 = /* 'lv3 ' */ 0x6C763320,
|
||||
bmdStreamingH264Level31 = /* 'lv31' */ 0x6C763331,
|
||||
bmdStreamingH264Level32 = /* 'lv32' */ 0x6C763332,
|
||||
bmdStreamingH264Level4 = /* 'lv4 ' */ 0x6C763420,
|
||||
bmdStreamingH264Level41 = /* 'lv41' */ 0x6C763431,
|
||||
bmdStreamingH264Level42 = /* 'lv42' */ 0x6C763432
|
||||
} BMDStreamingH264Level;
|
||||
|
||||
/* Enum BMDStreamingH264EntropyCoding - H264 entropy coding */
|
||||
|
||||
typedef [v1_enum] enum _BMDStreamingH264EntropyCoding {
|
||||
bmdStreamingH264EntropyCodingCAVLC = /* 'EVLC' */ 0x45564C43,
|
||||
bmdStreamingH264EntropyCodingCABAC = /* 'EBAC' */ 0x45424143
|
||||
} BMDStreamingH264EntropyCoding;
|
||||
|
||||
/* Enum BMDStreamingAudioCodec - Audio codecs */
|
||||
|
||||
typedef [v1_enum] enum _BMDStreamingAudioCodec {
|
||||
bmdStreamingAudioCodecAAC = /* 'AAC ' */ 0x41414320
|
||||
} BMDStreamingAudioCodec;
|
||||
|
||||
/* Enum BMDStreamingEncodingModePropertyID - Encoding mode properties */
|
||||
|
||||
typedef [v1_enum] enum _BMDStreamingEncodingModePropertyID {
|
||||
|
||||
/* Integers, Video Properties */
|
||||
|
||||
bmdStreamingEncodingPropertyVideoFrameRate = /* 'vfrt' */ 0x76667274, // Uses values of type BMDStreamingEncodingFrameRate
|
||||
bmdStreamingEncodingPropertyVideoBitRateKbps = /* 'vbrt' */ 0x76627274,
|
||||
|
||||
/* Integers, H264 Properties */
|
||||
|
||||
bmdStreamingEncodingPropertyH264Profile = /* 'hprf' */ 0x68707266,
|
||||
bmdStreamingEncodingPropertyH264Level = /* 'hlvl' */ 0x686C766C,
|
||||
bmdStreamingEncodingPropertyH264EntropyCoding = /* 'hent' */ 0x68656E74,
|
||||
|
||||
/* Flags, H264 Properties */
|
||||
|
||||
bmdStreamingEncodingPropertyH264HasBFrames = /* 'hBfr' */ 0x68426672,
|
||||
|
||||
/* Integers, Audio Properties */
|
||||
|
||||
bmdStreamingEncodingPropertyAudioCodec = /* 'acdc' */ 0x61636463,
|
||||
bmdStreamingEncodingPropertyAudioSampleRate = /* 'asrt' */ 0x61737274,
|
||||
bmdStreamingEncodingPropertyAudioChannelCount = /* 'achc' */ 0x61636863,
|
||||
bmdStreamingEncodingPropertyAudioBitRateKbps = /* 'abrt' */ 0x61627274
|
||||
} BMDStreamingEncodingModePropertyID;
|
||||
|
||||
// Forward Declarations
|
||||
|
||||
interface IBMDStreamingDeviceNotificationCallback;
|
||||
interface IBMDStreamingH264InputCallback;
|
||||
interface IBMDStreamingDiscovery;
|
||||
interface IBMDStreamingVideoEncodingMode;
|
||||
interface IBMDStreamingMutableVideoEncodingMode;
|
||||
interface IBMDStreamingVideoEncodingModePresetIterator;
|
||||
interface IBMDStreamingDeviceInput;
|
||||
interface IBMDStreamingH264NALPacket;
|
||||
interface IBMDStreamingAudioPacket;
|
||||
interface IBMDStreamingMPEG2TSPacket;
|
||||
interface IBMDStreamingH264NALParser;
|
||||
|
||||
/* Interface IBMDStreamingDeviceNotificationCallback - Device notification callbacks. */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(F9531D64-3305-4B29-A387-7F74BB0D0E84),
|
||||
helpstring("Device notification callbacks.")
|
||||
] interface IBMDStreamingDeviceNotificationCallback : IUnknown
|
||||
{
|
||||
HRESULT StreamingDeviceArrived([in] IDeckLink* device);
|
||||
HRESULT StreamingDeviceRemoved([in] IDeckLink* device);
|
||||
HRESULT StreamingDeviceModeChanged([in] IDeckLink* device, [in] BMDStreamingDeviceMode mode);
|
||||
};
|
||||
|
||||
/* Interface IBMDStreamingH264InputCallback - H264 input callbacks. */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(823C475F-55AE-46F9-890C-537CC5CEDCCA),
|
||||
helpstring("H264 input callbacks.")
|
||||
] interface IBMDStreamingH264InputCallback : IUnknown
|
||||
{
|
||||
HRESULT H264NALPacketArrived([in] IBMDStreamingH264NALPacket* nalPacket);
|
||||
HRESULT H264AudioPacketArrived([in] IBMDStreamingAudioPacket* audioPacket);
|
||||
HRESULT MPEG2TSPacketArrived([in] IBMDStreamingMPEG2TSPacket* tsPacket);
|
||||
HRESULT H264VideoInputConnectorScanningChanged(void);
|
||||
HRESULT H264VideoInputConnectorChanged(void);
|
||||
HRESULT H264VideoInputModeChanged(void);
|
||||
};
|
||||
|
||||
/* Interface IBMDStreamingDiscovery - Installs device notifications */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(2C837444-F989-4D87-901A-47C8A36D096D),
|
||||
helpstring("Installs device notifications")
|
||||
] interface IBMDStreamingDiscovery : IUnknown
|
||||
{
|
||||
HRESULT InstallDeviceNotifications([in] IBMDStreamingDeviceNotificationCallback* theCallback);
|
||||
HRESULT UninstallDeviceNotifications(void);
|
||||
};
|
||||
|
||||
/* Interface IBMDStreamingVideoEncodingMode - Represents an encoded video mode. */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(1AB8035B-CD13-458D-B6DF-5E8F7C2141D9),
|
||||
helpstring("Represents an encoded video mode.")
|
||||
] interface IBMDStreamingVideoEncodingMode : IUnknown
|
||||
{
|
||||
HRESULT GetName([out] BSTR *name);
|
||||
unsigned int GetPresetID(void);
|
||||
unsigned int GetSourcePositionX(void);
|
||||
unsigned int GetSourcePositionY(void);
|
||||
unsigned int GetSourceWidth(void);
|
||||
unsigned int GetSourceHeight(void);
|
||||
unsigned int GetDestWidth(void);
|
||||
unsigned int GetDestHeight(void);
|
||||
HRESULT GetFlag([in] BMDStreamingEncodingModePropertyID cfgID, [out] BOOL* value);
|
||||
HRESULT GetInt([in] BMDStreamingEncodingModePropertyID cfgID, [out] LONGLONG* value);
|
||||
HRESULT GetFloat([in] BMDStreamingEncodingModePropertyID cfgID, [out] double* value);
|
||||
HRESULT GetString([in] BMDStreamingEncodingModePropertyID cfgID, [out] BSTR *value);
|
||||
HRESULT CreateMutableVideoEncodingMode([out] IBMDStreamingMutableVideoEncodingMode** newEncodingMode); // Creates a mutable copy of the encoding mode
|
||||
};
|
||||
|
||||
/* Interface IBMDStreamingMutableVideoEncodingMode - Represents a mutable encoded video mode. */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(19BF7D90-1E0A-400D-B2C6-FFC4E78AD49D),
|
||||
helpstring("Represents a mutable encoded video mode.")
|
||||
] interface IBMDStreamingMutableVideoEncodingMode : IBMDStreamingVideoEncodingMode
|
||||
{
|
||||
HRESULT SetSourceRect([in] unsigned long posX, [in] unsigned long posY, [in] unsigned long width, [in] unsigned long height);
|
||||
HRESULT SetDestSize([in] unsigned long width, [in] unsigned long height);
|
||||
HRESULT SetFlag([in] BMDStreamingEncodingModePropertyID cfgID, [in] BOOL value);
|
||||
HRESULT SetInt([in] BMDStreamingEncodingModePropertyID cfgID, [in] LONGLONG value);
|
||||
HRESULT SetFloat([in] BMDStreamingEncodingModePropertyID cfgID, [in] double value);
|
||||
HRESULT SetString([in] BMDStreamingEncodingModePropertyID cfgID, [in] BSTR value);
|
||||
};
|
||||
|
||||
/* Interface IBMDStreamingVideoEncodingModePresetIterator - Enumerates encoding mode presets */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(7AC731A3-C950-4AD0-804A-8377AA51C6C4),
|
||||
helpstring("Enumerates encoding mode presets")
|
||||
] interface IBMDStreamingVideoEncodingModePresetIterator : IUnknown
|
||||
{
|
||||
HRESULT Next([out] IBMDStreamingVideoEncodingMode** videoEncodingMode);
|
||||
};
|
||||
|
||||
/* Interface IBMDStreamingDeviceInput - Created by QueryInterface from IDeckLink */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(24B6B6EC-1727-44BB-9818-34FF086ACF98),
|
||||
helpstring("Created by QueryInterface from IDeckLink")
|
||||
] interface IBMDStreamingDeviceInput : IUnknown
|
||||
{
|
||||
|
||||
/* Input modes */
|
||||
|
||||
HRESULT DoesSupportVideoInputMode([in] BMDDisplayMode inputMode, [out] BOOL* result);
|
||||
HRESULT GetVideoInputModeIterator([out] IDeckLinkDisplayModeIterator** iterator);
|
||||
HRESULT SetVideoInputMode([in] BMDDisplayMode inputMode);
|
||||
HRESULT GetCurrentDetectedVideoInputMode([out] BMDDisplayMode* detectedMode);
|
||||
|
||||
/* Capture modes */
|
||||
|
||||
HRESULT GetVideoEncodingMode([out] IBMDStreamingVideoEncodingMode** encodingMode);
|
||||
HRESULT GetVideoEncodingModePresetIterator([in] BMDDisplayMode inputMode, [out] IBMDStreamingVideoEncodingModePresetIterator** iterator);
|
||||
HRESULT DoesSupportVideoEncodingMode([in] BMDDisplayMode inputMode, [in] IBMDStreamingVideoEncodingMode* encodingMode, [out] BMDStreamingEncodingSupport* result, [out] IBMDStreamingVideoEncodingMode** changedEncodingMode);
|
||||
HRESULT SetVideoEncodingMode([in] IBMDStreamingVideoEncodingMode* encodingMode);
|
||||
|
||||
/* Input control */
|
||||
|
||||
HRESULT StartCapture(void);
|
||||
HRESULT StopCapture(void);
|
||||
HRESULT SetCallback([in] IUnknown* theCallback);
|
||||
};
|
||||
|
||||
/* Interface IBMDStreamingH264NALPacket - Represent an H.264 NAL packet */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(E260E955-14BE-4395-9775-9F02CC0A9D89),
|
||||
helpstring("Represent an H.264 NAL packet")
|
||||
] interface IBMDStreamingH264NALPacket : IUnknown
|
||||
{
|
||||
long GetPayloadSize(void);
|
||||
HRESULT GetBytes([out] void** buffer);
|
||||
HRESULT GetBytesWithSizePrefix([out] void** buffer); // Contains a 32-bit unsigned big endian size prefix
|
||||
HRESULT GetDisplayTime([in] ULONGLONG requestedTimeScale, [out] ULONGLONG* displayTime);
|
||||
HRESULT GetPacketIndex([out] unsigned long* packetIndex); // Deprecated
|
||||
};
|
||||
|
||||
/* Interface IBMDStreamingAudioPacket - Represents a chunk of audio data */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(D9EB5902-1AD2-43F4-9E2C-3CFA50B5EE19),
|
||||
helpstring("Represents a chunk of audio data")
|
||||
] interface IBMDStreamingAudioPacket : IUnknown
|
||||
{
|
||||
BMDStreamingAudioCodec GetCodec(void);
|
||||
long GetPayloadSize(void);
|
||||
HRESULT GetBytes([out] void** buffer);
|
||||
HRESULT GetPlayTime([in] ULONGLONG requestedTimeScale, [out] ULONGLONG* playTime);
|
||||
HRESULT GetPacketIndex([out] unsigned long* packetIndex); // Deprecated
|
||||
};
|
||||
|
||||
/* Interface IBMDStreamingMPEG2TSPacket - Represent an MPEG2 Transport Stream packet */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(91810D1C-4FB3-4AAA-AE56-FA301D3DFA4C),
|
||||
helpstring("Represent an MPEG2 Transport Stream packet")
|
||||
] interface IBMDStreamingMPEG2TSPacket : IUnknown
|
||||
{
|
||||
long GetPayloadSize(void);
|
||||
HRESULT GetBytes([out] void** buffer);
|
||||
};
|
||||
|
||||
/* Interface IBMDStreamingH264NALParser - For basic NAL parsing */
|
||||
|
||||
[
|
||||
object,
|
||||
uuid(5867F18C-5BFA-4CCC-B2A7-9DFD140417D2),
|
||||
helpstring("For basic NAL parsing")
|
||||
] interface IBMDStreamingH264NALParser : IUnknown
|
||||
{
|
||||
HRESULT IsNALSequenceParameterSet([in] IBMDStreamingH264NALPacket* nal);
|
||||
HRESULT IsNALPictureParameterSet([in] IBMDStreamingH264NALPacket* nal);
|
||||
HRESULT GetProfileAndLevelFromSPS([in] IBMDStreamingH264NALPacket* nal, [out] unsigned long* profileIdc, [out] unsigned long* profileCompatability, [out] unsigned long* levelIdc);
|
||||
};
|
||||
|
||||
/* Coclasses */
|
||||
|
||||
[
|
||||
uuid(0CAA31F6-8A26-40B0-86A4-BF58DCCA710C),
|
||||
helpstring("CBMDStreamingDiscovery Class")
|
||||
] coclass CBMDStreamingDiscovery
|
||||
{
|
||||
[default] interface IBMDStreamingDiscovery;
|
||||
};
|
||||
|
||||
[
|
||||
uuid(7753EFBD-951C-407C-97A5-23C737B73B52),
|
||||
helpstring("CBMDStreamingH264NALParser Class")
|
||||
] coclass CBMDStreamingH264NALParser
|
||||
{
|
||||
[default] interface IBMDStreamingH264NALParser;
|
||||
};
|
99
plugins/decklink/win/decklink-sdk/DeckLinkAPITypes.idl
Normal file
99
plugins/decklink/win/decklink-sdk/DeckLinkAPITypes.idl
Normal file
@ -0,0 +1,99 @@
|
||||
/* -LICENSE-START-
|
||||
** Copyright (c) 2014 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-
|
||||
*/
|
||||
|
||||
|
||||
#ifndef BMD_CONST
|
||||
#if defined(_MSC_VER)
|
||||
#define BMD_CONST __declspec(selectany) static const
|
||||
#else
|
||||
#define BMD_CONST static const
|
||||
#endif
|
||||
#endif
|
||||
|
||||
// Type Declarations
|
||||
|
||||
typedef LONGLONG BMDTimeValue;
|
||||
typedef LONGLONG BMDTimeScale;
|
||||
typedef unsigned long BMDTimecodeBCD;
|
||||
typedef unsigned long BMDTimecodeUserBits;
|
||||
|
||||
// Enumeration Mapping
|
||||
|
||||
cpp_quote("typedef unsigned long BMDTimecodeFlags;")
|
||||
cpp_quote("#if 0")
|
||||
typedef enum _BMDTimecodeFlags BMDTimecodeFlags;
|
||||
cpp_quote("#endif")
|
||||
|
||||
/* Enum BMDTimecodeFlags - Timecode flags */
|
||||
|
||||
[v1_enum] enum _BMDTimecodeFlags {
|
||||
bmdTimecodeFlagDefault = 0,
|
||||
bmdTimecodeIsDropFrame = 1 << 0,
|
||||
bmdTimecodeFieldMark = 1 << 1
|
||||
};
|
||||
|
||||
/* 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 BMDAudioConnection - Audio connection types */
|
||||
|
||||
typedef [v1_enum] enum _BMDAudioConnection {
|
||||
bmdAudioConnectionEmbedded = 1 << 0,
|
||||
bmdAudioConnectionAESEBU = 1 << 1,
|
||||
bmdAudioConnectionAnalog = 1 << 2,
|
||||
bmdAudioConnectionAnalogXLR = 1 << 3,
|
||||
bmdAudioConnectionAnalogRCA = 1 << 4
|
||||
} BMDAudioConnection;
|
||||
|
||||
// Forward Declarations
|
||||
|
||||
interface IDeckLinkTimecode;
|
||||
|
||||
/* 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);
|
||||
};
|
||||
|
||||
/* Coclasses */
|
36
plugins/decklink/win/decklink-sdk/DeckLinkAPIVersion.h
Normal file
36
plugins/decklink/win/decklink-sdk/DeckLinkAPIVersion.h
Normal file
@ -0,0 +1,36 @@
|
||||
/* -LICENSE-START-
|
||||
* ** Copyright (c) 2014 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-
|
||||
* */
|
||||
|
||||
/* DeckLinkAPIVersion.h */
|
||||
|
||||
#ifndef __DeckLink_API_Version_h__
|
||||
#define __DeckLink_API_Version_h__
|
||||
|
||||
#define BLACKMAGIC_DECKLINK_API_VERSION 0x0a030100
|
||||
#define BLACKMAGIC_DECKLINK_API_VERSION_STRING "10.3.1"
|
||||
|
||||
#endif // __DeckLink_API_Version_h__
|
Loading…
Reference in New Issue
Block a user