decklink: Update Decklink SDK to 10.11.4

This change is needed to support 2K DCI video modes.

Version 10.8 of the Decklink SDK supported DCI video modes for output
only. This updated version drops that restriction.

The current latest version of the Decklink SDK is 11.5, however
the gstreamer decklink plugin is not compatible with API changes
introduced in version 11 of the SDK. Therefore I have opted to upgrade
to the latest 10.x version instead.
This commit is contained in:
Heinrich Kruger 2020-02-27 11:32:17 +00:00 committed by GStreamer Merge Bot
parent 0f1ba5b2f2
commit 796fffa441
20 changed files with 1563 additions and 207 deletions

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
/* DeckLink API */
#include <stdint.h>
@ -64,12 +68,16 @@ BMD_CONST REFIID IID_IDeckLinkIterator = /* 50FB36CD-
BMD_CONST REFIID IID_IDeckLinkAPIInformation = /* 7BEA3C68-730D-4322-AF34-8A7152B532A4 */ {0x7B,0xEA,0x3C,0x68,0x73,0x0D,0x43,0x22,0xAF,0x34,0x8A,0x71,0x52,0xB5,0x32,0xA4};
BMD_CONST REFIID IID_IDeckLinkOutput = /* CC5C8A6E-3F2F-4B3A-87EA-FD78AF300564 */ {0xCC,0x5C,0x8A,0x6E,0x3F,0x2F,0x4B,0x3A,0x87,0xEA,0xFD,0x78,0xAF,0x30,0x05,0x64};
BMD_CONST REFIID IID_IDeckLinkInput = /* AF22762B-DFAC-4846-AA79-FA8883560995 */ {0xAF,0x22,0x76,0x2B,0xDF,0xAC,0x48,0x46,0xAA,0x79,0xFA,0x88,0x83,0x56,0x09,0x95};
BMD_CONST REFIID IID_IDeckLinkHDMIInputEDID = /* ABBBACBC-45BC-4665-9D92-ACE6E5A97902 */ {0xAB,0xBB,0xAC,0xBC,0x45,0xBC,0x46,0x65,0x9D,0x92,0xAC,0xE6,0xE5,0xA9,0x79,0x02};
BMD_CONST REFIID IID_IDeckLinkEncoderInput = /* 270587DA-6B7D-42E7-A1F0-6D853F581185 */ {0x27,0x05,0x87,0xDA,0x6B,0x7D,0x42,0xE7,0xA1,0xF0,0x6D,0x85,0x3F,0x58,0x11,0x85};
BMD_CONST REFIID IID_IDeckLinkVideoFrame = /* 3F716FE0-F023-4111-BE5D-EF4414C05B17 */ {0x3F,0x71,0x6F,0xE0,0xF0,0x23,0x41,0x11,0xBE,0x5D,0xEF,0x44,0x14,0xC0,0x5B,0x17};
BMD_CONST REFIID IID_IDeckLinkMutableVideoFrame = /* 69E2639F-40DA-4E19-B6F2-20ACE815C390 */ {0x69,0xE2,0x63,0x9F,0x40,0xDA,0x4E,0x19,0xB6,0xF2,0x20,0xAC,0xE8,0x15,0xC3,0x90};
BMD_CONST REFIID IID_IDeckLinkVideoFrame3DExtensions = /* DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7 */ {0xDA,0x0F,0x7E,0x4A,0xED,0xC7,0x48,0xA8,0x9C,0xDD,0x2D,0xB5,0x1C,0x72,0x9C,0xD7};
BMD_CONST REFIID IID_IDeckLinkVideoFrameMetadataExtensions = /* D5973DC9-6432-46D0-8F0B-2496F8A1238F */ {0xD5,0x97,0x3D,0xC9,0x64,0x32,0x46,0xD0,0x8F,0x0B,0x24,0x96,0xF8,0xA1,0x23,0x8F};
BMD_CONST REFIID IID_IDeckLinkVideoInputFrame = /* 05CFE374-537C-4094-9A57-680525118F44 */ {0x05,0xCF,0xE3,0x74,0x53,0x7C,0x40,0x94,0x9A,0x57,0x68,0x05,0x25,0x11,0x8F,0x44};
BMD_CONST REFIID IID_IDeckLinkAncillaryPacket = /* CC5BBF7E-029C-4D3B-9158-6000EF5E3670 */ {0xCC,0x5B,0xBF,0x7E,0x02,0x9C,0x4D,0x3B,0x91,0x58,0x60,0x00,0xEF,0x5E,0x36,0x70};
BMD_CONST REFIID IID_IDeckLinkAncillaryPacketIterator = /* 3FC8994B-88FB-4C17-968F-9AAB69D964A7 */ {0x3F,0xC8,0x99,0x4B,0x88,0xFB,0x4C,0x17,0x96,0x8F,0x9A,0xAB,0x69,0xD9,0x64,0xA7};
BMD_CONST REFIID IID_IDeckLinkVideoFrameAncillaryPackets = /* 6C186C0F-459E-41D8-AEE2-4812D81AEE68 */ {0x6C,0x18,0x6C,0x0F,0x45,0x9E,0x41,0xD8,0xAE,0xE2,0x48,0x12,0xD8,0x1A,0xEE,0x68};
BMD_CONST REFIID IID_IDeckLinkVideoFrameAncillary = /* 732E723C-D1A4-4E29-9E8E-4A88797A0004 */ {0x73,0x2E,0x72,0x3C,0xD1,0xA4,0x4E,0x29,0x9E,0x8E,0x4A,0x88,0x79,0x7A,0x00,0x04};
BMD_CONST REFIID IID_IDeckLinkEncoderPacket = /* B693F36C-316E-4AF1-B6C2-F389A4BCA620 */ {0xB6,0x93,0xF3,0x6C,0x31,0x6E,0x4A,0xF1,0xB6,0xC2,0xF3,0x89,0xA4,0xBC,0xA6,0x20};
BMD_CONST REFIID IID_IDeckLinkEncoderVideoPacket = /* 4E7FD944-E8C7-4EAC-B8C0-7B77F80F5AE0 */ {0x4E,0x7F,0xD9,0x44,0xE8,0xC7,0x4E,0xAC,0xB8,0xC0,0x7B,0x77,0xF8,0x0F,0x5A,0xE0};
@ -113,9 +121,11 @@ enum _BMDFrameFlags {
bmdFrameFlagDefault = 0,
bmdFrameFlagFlipVertical = 1 << 0,
bmdFrameContainsHDRMetadata = 1 << 1,
bmdFrameContainsCintelMetadata = 1 << 2,
/* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
bmdFrameCapturedAsPsF = 1 << 30,
bmdFrameHasNoInputSource = 1 << 31
};
@ -213,6 +223,15 @@ enum _BMDDisplayModeSupport {
bmdDisplayModeSupportedWithConversion
};
/* Enum BMDAncillaryPacketFormat - Ancillary packet format */
typedef uint32_t BMDAncillaryPacketFormat;
enum _BMDAncillaryPacketFormat {
bmdAncillaryPacketFormatUInt8 = /* 'ui08' */ 0x75693038,
bmdAncillaryPacketFormatUInt16 = /* 'ui16' */ 0x75693136,
bmdAncillaryPacketFormatYCbCr10 = /* 'v210' */ 0x76323130
};
/* Enum BMDTimecodeFormat - Timecode formats for frame metadata */
typedef uint32_t BMDTimecodeFormat;
@ -332,11 +351,68 @@ enum _BMDDeviceInterface {
bmdDeviceInterfaceThunderbolt = /* 'thun' */ 0x7468756E
};
/* Enum BMDColorspace - Colorspace */
typedef uint32_t BMDColorspace;
enum _BMDColorspace {
bmdColorspaceRec601 = /* 'r601' */ 0x72363031,
bmdColorspaceRec709 = /* 'r709' */ 0x72373039,
bmdColorspaceRec2020 = /* '2020' */ 0x32303230
};
/* Enum BMDDynamicRange - SDR or HDR */
typedef uint32_t BMDDynamicRange;
enum _BMDDynamicRange {
bmdDynamicRangeSDR = 0,
bmdDynamicRangeHDRStaticPQ = 1 << 29, // SMPTE ST 2084
bmdDynamicRangeHDRStaticHLG = 1 << 30 // ITU-R BT.2100-0
};
/* Enum BMDDeckLinkHDMIInputEDIDID - DeckLink HDMI Input EDID ID */
typedef uint32_t BMDDeckLinkHDMIInputEDIDID;
enum _BMDDeckLinkHDMIInputEDIDID {
bmdDeckLinkHDMIInputEDIDDynamicRange = /* 'HIDy' */ 0x48494479 // Parameter is of type BMDDynamicRange. Default is (bmdDynamicRangeSDR|bmdDynamicRangeHDRStaticPQ)
};
/* Enum BMDDeckLinkFrameMetadataID - DeckLink Frame Metadata ID */
typedef uint32_t BMDDeckLinkFrameMetadataID;
enum _BMDDeckLinkFrameMetadataID {
bmdDeckLinkFrameMetadataColorspace = /* 'cspc' */ 0x63737063, // Colorspace of video frame (see BMDColorspace)
bmdDeckLinkFrameMetadataHDRElectroOpticalTransferFunc = /* 'eotf' */ 0x656F7466, // EOTF in range 0-7 as per CEA 861.3
bmdDeckLinkFrameMetadataCintelFilmType = /* 'cfty' */ 0x63667479, // Current film type
bmdDeckLinkFrameMetadataCintelFilmGauge = /* 'cfga' */ 0x63666761, // Current film gauge
bmdDeckLinkFrameMetadataCintelOffsetDetectedHorizontal = /* 'odfh' */ 0x6F646668, // Horizontal offset (pixels) detected in image
bmdDeckLinkFrameMetadataCintelOffsetDetectedVertical = /* 'odfv' */ 0x6F646676, // Vertical offset (pixels) detected in image
bmdDeckLinkFrameMetadataCintelKeykodeLow = /* 'ckkl' */ 0x636B6B6C, // Raw keykode value - low 64 bits
bmdDeckLinkFrameMetadataCintelKeykodeHigh = /* 'ckkh' */ 0x636B6B68, // Raw keykode value - high 64 bits
bmdDeckLinkFrameMetadataCintelTile1Size = /* 'ct1s' */ 0x63743173, // Size in bytes of compressed raw tile 1
bmdDeckLinkFrameMetadataCintelTile2Size = /* 'ct2s' */ 0x63743273, // Size in bytes of compressed raw tile 2
bmdDeckLinkFrameMetadataCintelTile3Size = /* 'ct3s' */ 0x63743373, // Size in bytes of compressed raw tile 3
bmdDeckLinkFrameMetadataCintelTile4Size = /* 'ct4s' */ 0x63743473, // Size in bytes of compressed raw tile 4
bmdDeckLinkFrameMetadataCintelImageWidth = /* 'IWPx' */ 0x49575078, // Width in pixels of image
bmdDeckLinkFrameMetadataCintelImageHeight = /* 'IHPx' */ 0x49485078, // Height in pixels of image
bmdDeckLinkFrameMetadataCintelLinearMaskingRedInRed = /* 'mrir' */ 0x6D726972, // Red in red linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInRed = /* 'mgir' */ 0x6D676972, // Green in red linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInRed = /* 'mbir' */ 0x6D626972, // Blue in red linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingRedInGreen = /* 'mrig' */ 0x6D726967, // Red in green linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInGreen = /* 'mgig' */ 0x6D676967, // Green in green linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInGreen = /* 'mbig' */ 0x6D626967, // Blue in green linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingRedInBlue = /* 'mrib' */ 0x6D726962, // Red in blue linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInBlue = /* 'mgib' */ 0x6D676962, // Green in blue linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInBlue = /* 'mbib' */ 0x6D626962, // Blue in blue linear masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingRedInRed = /* 'mlrr' */ 0x6D6C7272, // Red in red log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingGreenInRed = /* 'mlgr' */ 0x6D6C6772, // Green in red log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingBlueInRed = /* 'mlbr' */ 0x6D6C6272, // Blue in red log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingRedInGreen = /* 'mlrg' */ 0x6D6C7267, // Red in green log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingGreenInGreen = /* 'mlgg' */ 0x6D6C6767, // Green in green log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingBlueInGreen = /* 'mlbg' */ 0x6D6C6267, // Blue in green log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingRedInBlue = /* 'mlrb' */ 0x6D6C7262, // Red in blue log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingGreenInBlue = /* 'mlgb' */ 0x6D6C6762, // Green in blue log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingBlueInBlue = /* 'mlbb' */ 0x6D6C6262, // Blue in blue log masking parameter
bmdDeckLinkFrameMetadataCintelFilmFrameRate = /* 'cffr' */ 0x63666672, // Film frame rate
bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedX = /* 'hdrx' */ 0x68647278, // Red display primaries in range 0.0 - 1.0
bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedY = /* 'hdry' */ 0x68647279, // Red display primaries in range 0.0 - 1.0
bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenX = /* 'hdgx' */ 0x68646778, // Green display primaries in range 0.0 - 1.0
@ -348,7 +424,15 @@ enum _BMDDeckLinkFrameMetadataID {
bmdDeckLinkFrameMetadataHDRMaxDisplayMasteringLuminance = /* 'hdml' */ 0x68646D6C, // Max display mastering luminance in range 1 cd/m2 - 65535 cd/m2
bmdDeckLinkFrameMetadataHDRMinDisplayMasteringLuminance = /* 'hmil' */ 0x686D696C, // Min display mastering luminance in range 0.0001 cd/m2 - 6.5535 cd/m2
bmdDeckLinkFrameMetadataHDRMaximumContentLightLevel = /* 'mcll' */ 0x6D636C6C, // Maximum Content Light Level in range 1 cd/m2 - 65535 cd/m2
bmdDeckLinkFrameMetadataHDRMaximumFrameAverageLightLevel = /* 'fall' */ 0x66616C6C // Maximum Frame Average Light Level in range 1 cd/m2 - 65535 cd/m2
bmdDeckLinkFrameMetadataHDRMaximumFrameAverageLightLevel = /* 'fall' */ 0x66616C6C, // Maximum Frame Average Light Level in range 1 cd/m2 - 65535 cd/m2
bmdDeckLinkFrameMetadataCintelOffsetToApplyHorizontal = /* 'otah' */ 0x6F746168, // Horizontal offset (pixels) to be applied to image
bmdDeckLinkFrameMetadataCintelOffsetToApplyVertical = /* 'otav' */ 0x6F746176, // Vertical offset (pixels) to be applied to image
bmdDeckLinkFrameMetadataCintelGainRed = /* 'LfRd' */ 0x4C665264, // Red gain parameter to apply after log
bmdDeckLinkFrameMetadataCintelGainGreen = /* 'LfGr' */ 0x4C664772, // Green gain parameter to apply after log
bmdDeckLinkFrameMetadataCintelGainBlue = /* 'LfBl' */ 0x4C66426C, // Blue gain parameter to apply after log
bmdDeckLinkFrameMetadataCintelLiftRed = /* 'GnRd' */ 0x476E5264, // Red lift parameter to apply after log and gain
bmdDeckLinkFrameMetadataCintelLiftGreen = /* 'GnGr' */ 0x476E4772, // Green lift parameter to apply after log and gain
bmdDeckLinkFrameMetadataCintelLiftBlue = /* 'GnBl' */ 0x476E426C // Blue lift parameter to apply after log and gain
};
/* Enum BMDDuplexMode - Duplex for configurable ports */
@ -386,22 +470,24 @@ enum _BMDDeckLinkAttributeID {
BMDDeckLinkHasLTCTimecodeInput = /* 'hltc' */ 0x686C7463,
BMDDeckLinkSupportsDuplexModeConfiguration = /* 'dupx' */ 0x64757078,
BMDDeckLinkSupportsHDRMetadata = /* 'hdrm' */ 0x6864726D,
BMDDeckLinkSupportsColorspaceMetadata = /* 'cmet' */ 0x636D6574,
/* Integers */
BMDDeckLinkMaximumAudioChannels = /* 'mach' */ 0x6D616368,
BMDDeckLinkMaximumAnalogAudioChannels = /* 'aach' */ 0x61616368,
BMDDeckLinkMaximumAnalogAudioInputChannels = /* 'iach' */ 0x69616368,
BMDDeckLinkMaximumAnalogAudioOutputChannels = /* 'aach' */ 0x61616368,
BMDDeckLinkNumberOfSubDevices = /* 'nsbd' */ 0x6E736264,
BMDDeckLinkSubDeviceIndex = /* 'subi' */ 0x73756269,
BMDDeckLinkPersistentID = /* 'peid' */ 0x70656964,
BMDDeckLinkDeviceGroupID = /* 'dgid' */ 0x64676964,
BMDDeckLinkTopologicalID = /* 'toid' */ 0x746F6964,
BMDDeckLinkVideoOutputConnections = /* 'vocn' */ 0x766F636E,
BMDDeckLinkVideoInputConnections = /* 'vicn' */ 0x7669636E,
BMDDeckLinkAudioOutputConnections = /* 'aocn' */ 0x616F636E,
BMDDeckLinkAudioInputConnections = /* 'aicn' */ 0x6169636E,
BMDDeckLinkVideoOutputConnections = /* 'vocn' */ 0x766F636E, // Returns a BMDVideoConnection bit field
BMDDeckLinkVideoInputConnections = /* 'vicn' */ 0x7669636E, // Returns a BMDVideoConnection bit field
BMDDeckLinkAudioOutputConnections = /* 'aocn' */ 0x616F636E, // Returns a BMDAudioConnection bit field
BMDDeckLinkAudioInputConnections = /* 'aicn' */ 0x6169636E, // Returns a BMDAudioConnection bit field
BMDDeckLinkVideoIOSupport = /* 'vios' */ 0x76696F73, // Returns a BMDVideoIOSupport bit field
BMDDeckLinkDeckControlConnections = /* 'dccn' */ 0x6463636E,
BMDDeckLinkDeckControlConnections = /* 'dccn' */ 0x6463636E, // Returns a BMDDeckControlConnection bit field
BMDDeckLinkDeviceInterface = /* 'dbus' */ 0x64627573, // Returns a BMDDeviceInterface
BMDDeckLinkAudioInputRCAChannelCount = /* 'airc' */ 0x61697263,
BMDDeckLinkAudioInputXLRChannelCount = /* 'aixc' */ 0x61697863,
@ -455,11 +541,14 @@ enum _BMDDeckLinkStatusID {
bmdDeckLinkStatusReferenceSignalFlags = /* 'reff' */ 0x72656666,
bmdDeckLinkStatusDuplexMode = /* 'dupx' */ 0x64757078,
bmdDeckLinkStatusBusy = /* 'busy' */ 0x62757379,
bmdDeckLinkStatusInterchangeablePanelType = /* 'icpt' */ 0x69637074,
bmdDeckLinkStatusDeviceTemperature = /* 'dtmp' */ 0x64746D70,
/* Flags */
bmdDeckLinkStatusVideoInputSignalLocked = /* 'visl' */ 0x7669736C,
bmdDeckLinkStatusReferenceSignalLocked = /* 'refl' */ 0x7265666C
bmdDeckLinkStatusReferenceSignalLocked = /* 'refl' */ 0x7265666C,
bmdDeckLinkStatusReceivedEDID = /* 'edid' */ 0x65646964
};
/* Enum BMDDeckLinkVideoStatusFlags - */
@ -480,6 +569,14 @@ enum _BMDDuplexStatus {
bmdDuplexStatusInactive = /* 'inac' */ 0x696E6163
};
/* Enum BMDPanelType - The type of interchangeable panel */
typedef uint32_t BMDPanelType;
enum _BMDPanelType {
bmdPanelNotDetected = /* 'npnl' */ 0x6E706E6C,
bmdPanelTeranexMiniSmartPanel = /* 'tmsm' */ 0x746D736D
};
/* Enum BMDDeviceBusyState - Current device busy state */
typedef uint32_t BMDDeviceBusyState;
@ -529,12 +626,16 @@ class IDeckLinkIterator;
class IDeckLinkAPIInformation;
class IDeckLinkOutput;
class IDeckLinkInput;
class IDeckLinkHDMIInputEDID;
class IDeckLinkEncoderInput;
class IDeckLinkVideoFrame;
class IDeckLinkMutableVideoFrame;
class IDeckLinkVideoFrame3DExtensions;
class IDeckLinkVideoFrameMetadataExtensions;
class IDeckLinkVideoInputFrame;
class IDeckLinkAncillaryPacket;
class IDeckLinkAncillaryPacketIterator;
class IDeckLinkVideoFrameAncillaryPackets;
class IDeckLinkVideoFrameAncillary;
class IDeckLinkEncoderPacket;
class IDeckLinkEncoderVideoPacket;
@ -554,7 +655,7 @@ class IDeckLinkDiscovery;
/* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
class IDeckLinkVideoOutputCallback : public IUnknown
class BMD_PUBLIC IDeckLinkVideoOutputCallback : public IUnknown
{
public:
virtual HRESULT ScheduledFrameCompleted (/* in */ IDeckLinkVideoFrame *completedFrame, /* in */ BMDOutputFrameCompletionResult result) = 0;
@ -566,7 +667,7 @@ protected:
/* Interface IDeckLinkInputCallback - Frame arrival callback. */
class IDeckLinkInputCallback : public IUnknown
class BMD_PUBLIC IDeckLinkInputCallback : public IUnknown
{
public:
virtual HRESULT VideoInputFormatChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
@ -578,7 +679,7 @@ protected:
/* Interface IDeckLinkEncoderInputCallback - Frame arrival callback. */
class IDeckLinkEncoderInputCallback : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderInputCallback : public IUnknown
{
public:
virtual HRESULT VideoInputSignalChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
@ -591,7 +692,7 @@ protected:
/* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */
class IDeckLinkMemoryAllocator : public IUnknown
class BMD_PUBLIC IDeckLinkMemoryAllocator : public IUnknown
{
public:
virtual HRESULT AllocateBuffer (/* in */ uint32_t bufferSize, /* out */ void **allocatedBuffer) = 0;
@ -603,7 +704,7 @@ public:
/* Interface IDeckLinkAudioOutputCallback - Optional callback to allow audio samples to be pulled as required. */
class IDeckLinkAudioOutputCallback : public IUnknown
class BMD_PUBLIC IDeckLinkAudioOutputCallback : public IUnknown
{
public:
virtual HRESULT RenderAudioSamples (/* in */ bool preroll) = 0;
@ -611,7 +712,7 @@ public:
/* Interface IDeckLinkIterator - enumerates installed DeckLink hardware */
class IDeckLinkIterator : public IUnknown
class BMD_PUBLIC IDeckLinkIterator : public IUnknown
{
public:
virtual HRESULT Next (/* out */ IDeckLink **deckLinkInstance) = 0;
@ -619,7 +720,7 @@ public:
/* Interface IDeckLinkAPIInformation - DeckLinkAPI attribute interface */
class IDeckLinkAPIInformation : public IUnknown
class BMD_PUBLIC IDeckLinkAPIInformation : public IUnknown
{
public:
virtual HRESULT GetFlag (/* in */ BMDDeckLinkAPIInformationID cfgID, /* out */ bool *value) = 0;
@ -633,7 +734,7 @@ protected:
/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
class IDeckLinkOutput : public IUnknown
class BMD_PUBLIC IDeckLinkOutput : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoOutputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
@ -648,7 +749,7 @@ public:
virtual HRESULT SetVideoOutputFrameMemoryAllocator (/* in */ IDeckLinkMemoryAllocator *theAllocator) = 0;
virtual HRESULT CreateVideoFrame (/* in */ int32_t width, /* in */ int32_t height, /* in */ int32_t rowBytes, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDFrameFlags flags, /* out */ IDeckLinkMutableVideoFrame **outFrame) = 0;
virtual HRESULT CreateAncillaryData (/* in */ BMDPixelFormat pixelFormat, /* out */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
virtual HRESULT CreateAncillaryData (/* in */ BMDPixelFormat pixelFormat, /* out */ IDeckLinkVideoFrameAncillary **outBuffer) = 0; // Use of IDeckLinkVideoFrameAncillaryPackets is preferred
virtual HRESULT DisplayVideoFrameSync (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
virtual HRESULT ScheduleVideoFrame (/* in */ IDeckLinkVideoFrame *theFrame, /* in */ BMDTimeValue displayTime, /* in */ BMDTimeValue displayDuration, /* in */ BMDTimeScale timeScale) = 0;
@ -690,7 +791,7 @@ protected:
/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
class IDeckLinkInput : public IUnknown
class BMD_PUBLIC IDeckLinkInput : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
@ -727,9 +828,22 @@ protected:
virtual ~IDeckLinkInput () {} // call Release method to drop reference count
};
/* Interface IDeckLinkHDMIInputEDID - Created by QueryInterface from IDeckLink. Releasing all references will restore EDID to default */
class BMD_PUBLIC IDeckLinkHDMIInputEDID : public IUnknown
{
public:
virtual HRESULT SetInt (/* in */ BMDDeckLinkHDMIInputEDIDID cfgID, /* in */ int64_t value) = 0;
virtual HRESULT GetInt (/* in */ BMDDeckLinkHDMIInputEDIDID cfgID, /* out */ int64_t *value) = 0;
virtual HRESULT WriteToEDID (void) = 0;
protected:
virtual ~IDeckLinkHDMIInputEDID () {} // call Release method to drop reference count
};
/* Interface IDeckLinkEncoderInput - Created by QueryInterface from IDeckLink. */
class IDeckLinkEncoderInput : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderInput : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
@ -766,7 +880,7 @@ protected:
/* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
class IDeckLinkVideoFrame : public IUnknown
class BMD_PUBLIC IDeckLinkVideoFrame : public IUnknown
{
public:
virtual long GetWidth (void) = 0;
@ -777,7 +891,7 @@ public:
virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
virtual HRESULT GetTimecode (/* in */ BMDTimecodeFormat format, /* out */ IDeckLinkTimecode **timecode) = 0;
virtual HRESULT GetAncillaryData (/* out */ IDeckLinkVideoFrameAncillary **ancillary) = 0;
virtual HRESULT GetAncillaryData (/* out */ IDeckLinkVideoFrameAncillary **ancillary) = 0; // Use of IDeckLinkVideoFrameAncillaryPackets is preferred
protected:
virtual ~IDeckLinkVideoFrame () {} // call Release method to drop reference count
@ -785,7 +899,7 @@ protected:
/* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
class IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
class BMD_PUBLIC IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
{
public:
virtual HRESULT SetFlags (/* in */ BMDFrameFlags newFlags) = 0;
@ -801,7 +915,7 @@ protected:
/* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */
class IDeckLinkVideoFrame3DExtensions : public IUnknown
class BMD_PUBLIC IDeckLinkVideoFrame3DExtensions : public IUnknown
{
public:
virtual BMDVideo3DPackingFormat Get3DPackingFormat (void) = 0;
@ -813,7 +927,7 @@ protected:
/* Interface IDeckLinkVideoFrameMetadataExtensions - Optional interface implemented on IDeckLinkVideoFrame to support frame metadata such as HDMI HDR information */
class IDeckLinkVideoFrameMetadataExtensions : public IUnknown
class BMD_PUBLIC IDeckLinkVideoFrameMetadataExtensions : public IUnknown
{
public:
virtual HRESULT GetInt (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ int64_t *value) = 0;
@ -827,7 +941,7 @@ protected:
/* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
class IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
class BMD_PUBLIC IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
{
public:
virtual HRESULT GetStreamTime (/* out */ BMDTimeValue *frameTime, /* out */ BMDTimeValue *frameDuration, /* in */ BMDTimeScale timeScale) = 0;
@ -837,13 +951,56 @@ protected:
virtual ~IDeckLinkVideoInputFrame () {} // call Release method to drop reference count
};
/* Interface IDeckLinkVideoFrameAncillary - Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
/* Interface IDeckLinkAncillaryPacket - On output, user needs to implement this interface */
class IDeckLinkVideoFrameAncillary : public IUnknown
class BMD_PUBLIC IDeckLinkAncillaryPacket : public IUnknown
{
public:
virtual HRESULT GetBufferForVerticalBlankingLine (/* in */ uint32_t lineNumber, /* out */ void **buffer) = 0;
virtual HRESULT GetBytes (/* in */ BMDAncillaryPacketFormat format /* For output, only one format need be offered */, /* out */ const void **data /* Optional */, /* out */ uint32_t *size /* Optional */) = 0;
virtual uint8_t GetDID (void) = 0;
virtual uint8_t GetSDID (void) = 0;
virtual uint32_t GetLineNumber (void) = 0; // On output, zero is auto
virtual uint8_t GetDataStreamIndex (void) = 0; // Usually zero. Can only be 1 if non-SD and the first data stream is completely full
protected:
virtual ~IDeckLinkAncillaryPacket () {} // call Release method to drop reference count
};
/* Interface IDeckLinkAncillaryPacketIterator - Enumerates ancillary packets */
class BMD_PUBLIC IDeckLinkAncillaryPacketIterator : public IUnknown
{
public:
virtual HRESULT Next (/* out */ IDeckLinkAncillaryPacket **packet) = 0;
protected:
virtual ~IDeckLinkAncillaryPacketIterator () {} // call Release method to drop reference count
};
/* Interface IDeckLinkVideoFrameAncillaryPackets - Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
class BMD_PUBLIC IDeckLinkVideoFrameAncillaryPackets : public IUnknown
{
public:
virtual HRESULT GetPacketIterator (/* out */ IDeckLinkAncillaryPacketIterator **iterator) = 0;
virtual HRESULT GetFirstPacketByID (/* in */ uint8_t DID, /* in */ uint8_t SDID, /* out */ IDeckLinkAncillaryPacket **packet) = 0;
virtual HRESULT AttachPacket (/* in */ IDeckLinkAncillaryPacket *packet) = 0; // Implement IDeckLinkAncillaryPacket to output your own
virtual HRESULT DetachPacket (/* in */ IDeckLinkAncillaryPacket *packet) = 0;
virtual HRESULT DetachAllPackets (void) = 0;
protected:
virtual ~IDeckLinkVideoFrameAncillaryPackets () {} // call Release method to drop reference count
};
/* Interface IDeckLinkVideoFrameAncillary - Use of IDeckLinkVideoFrameAncillaryPackets is preferred. Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
class BMD_PUBLIC IDeckLinkVideoFrameAncillary : public IUnknown
{
public:
virtual HRESULT GetBufferForVerticalBlankingLine (/* in */ uint32_t lineNumber, /* out */ void **buffer) = 0; // Pixels/rowbytes is same as display mode, except for above HD where it's 1920 pixels for UHD modes and 2048 pixels for DCI modes
virtual BMDPixelFormat GetPixelFormat (void) = 0;
virtual BMDDisplayMode GetDisplayMode (void) = 0;
@ -853,7 +1010,7 @@ protected:
/* Interface IDeckLinkEncoderPacket - Interface to encapsulate an encoded packet. */
class IDeckLinkEncoderPacket : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderPacket : public IUnknown
{
public:
virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
@ -867,7 +1024,7 @@ protected:
/* Interface IDeckLinkEncoderVideoPacket - Provided by the IDeckLinkEncoderInput video packet arrival callback. */
class IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
class BMD_PUBLIC IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
{
public:
virtual BMDPixelFormat GetPixelFormat (void) = 0;
@ -881,7 +1038,7 @@ protected:
/* Interface IDeckLinkEncoderAudioPacket - Provided by the IDeckLinkEncoderInput audio packet arrival callback. */
class IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
class BMD_PUBLIC IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
{
public:
virtual BMDAudioFormat GetAudioFormat (void) = 0;
@ -892,7 +1049,7 @@ protected:
/* Interface IDeckLinkH265NALPacket - Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object */
class IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
class BMD_PUBLIC IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
{
public:
virtual HRESULT GetUnitType (/* out */ uint8_t *unitType) = 0;
@ -905,7 +1062,7 @@ protected:
/* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */
class IDeckLinkAudioInputPacket : public IUnknown
class BMD_PUBLIC IDeckLinkAudioInputPacket : public IUnknown
{
public:
virtual long GetSampleFrameCount (void) = 0;
@ -918,7 +1075,7 @@ protected:
/* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
class IDeckLinkScreenPreviewCallback : public IUnknown
class BMD_PUBLIC IDeckLinkScreenPreviewCallback : public IUnknown
{
public:
virtual HRESULT DrawFrame (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
@ -929,7 +1086,7 @@ protected:
/* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
class IDeckLinkGLScreenPreviewHelper : public IUnknown
class BMD_PUBLIC IDeckLinkGLScreenPreviewHelper : public IUnknown
{
public:
@ -946,7 +1103,7 @@ protected:
/* Interface IDeckLinkNotificationCallback - DeckLink Notification Callback Interface */
class IDeckLinkNotificationCallback : public IUnknown
class BMD_PUBLIC IDeckLinkNotificationCallback : public IUnknown
{
public:
virtual HRESULT Notify (/* in */ BMDNotifications topic, /* in */ uint64_t param1, /* in */ uint64_t param2) = 0;
@ -954,7 +1111,7 @@ public:
/* Interface IDeckLinkNotification - DeckLink Notification interface */
class IDeckLinkNotification : public IUnknown
class BMD_PUBLIC IDeckLinkNotification : public IUnknown
{
public:
virtual HRESULT Subscribe (/* in */ BMDNotifications topic, /* in */ IDeckLinkNotificationCallback *theCallback) = 0;
@ -963,7 +1120,7 @@ public:
/* Interface IDeckLinkAttributes - DeckLink Attribute interface */
class IDeckLinkAttributes : public IUnknown
class BMD_PUBLIC IDeckLinkAttributes : public IUnknown
{
public:
virtual HRESULT GetFlag (/* in */ BMDDeckLinkAttributeID cfgID, /* out */ bool *value) = 0;
@ -977,7 +1134,7 @@ protected:
/* Interface IDeckLinkStatus - DeckLink Status interface */
class IDeckLinkStatus : public IUnknown
class BMD_PUBLIC IDeckLinkStatus : public IUnknown
{
public:
virtual HRESULT GetFlag (/* in */ BMDDeckLinkStatusID statusID, /* out */ bool *value) = 0;
@ -992,7 +1149,7 @@ protected:
/* Interface IDeckLinkKeyer - DeckLink Keyer interface */
class IDeckLinkKeyer : public IUnknown
class BMD_PUBLIC IDeckLinkKeyer : public IUnknown
{
public:
virtual HRESULT Enable (/* in */ bool isExternal) = 0;
@ -1007,7 +1164,7 @@ protected:
/* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
class IDeckLinkVideoConversion : public IUnknown
class BMD_PUBLIC IDeckLinkVideoConversion : public IUnknown
{
public:
virtual HRESULT ConvertFrame (/* in */ IDeckLinkVideoFrame* srcFrame, /* in */ IDeckLinkVideoFrame* dstFrame) = 0;
@ -1018,7 +1175,7 @@ protected:
/* Interface IDeckLinkDeviceNotificationCallback - DeckLink device arrival/removal notification callbacks */
class IDeckLinkDeviceNotificationCallback : public IUnknown
class BMD_PUBLIC IDeckLinkDeviceNotificationCallback : public IUnknown
{
public:
virtual HRESULT DeckLinkDeviceArrived (/* in */ IDeckLink* deckLinkDevice) = 0;
@ -1030,7 +1187,7 @@ protected:
/* Interface IDeckLinkDiscovery - DeckLink device discovery */
class IDeckLinkDiscovery : public IUnknown
class BMD_PUBLIC IDeckLinkDiscovery : public IUnknown
{
public:
virtual HRESULT InstallDeviceNotifications (/* in */ IDeckLinkDeviceNotificationCallback* deviceNotificationCallback) = 0;
@ -1044,11 +1201,12 @@ protected:
extern "C" {
IDeckLinkIterator* CreateDeckLinkIteratorInstance (void);
IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance (void);
IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance (void);
IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void);
IDeckLinkVideoConversion* CreateVideoConversionInstance (void);
IDeckLinkIterator* BMD_PUBLIC CreateDeckLinkIteratorInstance (void);
IDeckLinkDiscovery* BMD_PUBLIC CreateDeckLinkDiscoveryInstance (void);
IDeckLinkAPIInformation* BMD_PUBLIC CreateDeckLinkAPIInformationInstance (void);
IDeckLinkGLScreenPreviewHelper* BMD_PUBLIC CreateOpenGLScreenPreviewHelper (void);
IDeckLinkVideoConversion* BMD_PUBLIC CreateVideoConversionInstance (void);
IDeckLinkVideoFrameAncillaryPackets* BMD_PUBLIC CreateVideoFrameAncillaryPacketsInstance (void); // For use when creating a custom IDeckLinkVideoFrame without wrapping IDeckLinkOutput::CreateVideoFrame
}

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,12 +37,16 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
// Interface ID Declarations
BMD_CONST REFIID IID_IDeckLinkConfiguration = /* CB71734A-FE37-4E8D-8E13-802133A1C3F2 */ {0xCB,0x71,0x73,0x4A,0xFE,0x37,0x4E,0x8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2};
BMD_CONST REFIID IID_IDeckLinkConfiguration = /* EF90380B-4AE5-4346-9077-E288E149F129 */ {0xEF,0x90,0x38,0x0B,0x4A,0xE5,0x43,0x46,0x90,0x77,0xE2,0x88,0xE1,0x49,0xF1,0x29};
BMD_CONST REFIID IID_IDeckLinkEncoderConfiguration = /* 138050E5-C60A-4552-BF3F-0F358049327E */ {0x13,0x80,0x50,0xE5,0xC6,0x0A,0x45,0x52,0xBF,0x3F,0x0F,0x35,0x80,0x49,0x32,0x7E};
/* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
@ -54,10 +58,6 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigSwapSerialRxTx = /* 'ssrt' */ 0x73737274,
/* Video Input/Output Flags */
bmdDeckLinkConfigUse1080pNotPsF = /* 'fpro' */ 0x6670726F,
/* Video Input/Output Integers */
bmdDeckLinkConfigHDMI3DPackingFormat = /* '3dpf' */ 0x33647066,
@ -78,6 +78,12 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigLowLatencyVideoOutput = /* 'llvo' */ 0x6C6C766F,
bmdDeckLinkConfigDownConversionOnAllAnalogOutput = /* 'caao' */ 0x6361616F,
bmdDeckLinkConfigSMPTELevelAOutput = /* 'smta' */ 0x736D7461,
bmdDeckLinkConfigRec2020Output = /* 'rec2' */ 0x72656332, // Ensure output is Rec.2020 colorspace
bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit = /* 'SDQS' */ 0x53445153,
/* Video Output Flags */
bmdDeckLinkConfigOutput1080pAsPsF = /* 'pfpr' */ 0x70667072,
/* Video Output Integers */
@ -106,6 +112,10 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigUseDedicatedLTCInput = /* 'dltc' */ 0x646C7463, // Use timecode from LTC input instead of SDI stream
bmdDeckLinkConfigSDIInput3DPayloadOverride = /* '3dds' */ 0x33646473,
/* Video Input Flags */
bmdDeckLinkConfigCapture1080pAsPsF = /* 'cfpr' */ 0x63667072,
/* Video Input Integers */
bmdDeckLinkConfigVideoInputConnection = /* 'vicn' */ 0x7669636E,
@ -206,7 +216,7 @@ class IDeckLinkEncoderConfiguration;
/* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
class IDeckLinkConfiguration : public IUnknown
class BMD_PUBLIC IDeckLinkConfiguration : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;
@ -225,7 +235,7 @@ protected:
/* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
class IDeckLinkEncoderConfiguration : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderConfiguration : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -149,7 +153,7 @@ class IDeckLinkDeckControl;
/* Interface IDeckLinkDeckControlStatusCallback - Deck control state change callback. */
class IDeckLinkDeckControlStatusCallback : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControlStatusCallback : public IUnknown
{
public:
virtual HRESULT TimecodeUpdate (/* in */ BMDTimecodeBCD currentTimecode) = 0;
@ -163,7 +167,7 @@ protected:
/* Interface IDeckLinkDeckControl - Deck Control main interface */
class IDeckLinkDeckControl : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControl : public IUnknown
{
public:
virtual HRESULT Open (/* in */ BMDTimeScale timeScale, /* in */ BMDTimeValue timeValue, /* in */ bool timecodeIsDropFrame, /* out */ BMDDeckControlError *error) = 0;

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -50,7 +54,7 @@ class IDeckLink;
/* Interface IDeckLink - represents a DeckLink device */
class IDeckLink : public IUnknown
class BMD_PUBLIC IDeckLink : public IUnknown
{
public:
virtual HRESULT GetModelName (/* out */ const char **modelName) = 0;

View file

@ -39,6 +39,7 @@ typedef IDeckLinkAPIInformation* (*CreateAPIInformationFunc)(void);
typedef IDeckLinkGLScreenPreviewHelper* (*CreateOpenGLScreenPreviewHelperFunc)(void);
typedef IDeckLinkVideoConversion* (*CreateVideoConversionInstanceFunc)(void);
typedef IDeckLinkDiscovery* (*CreateDeckLinkDiscoveryInstanceFunc)(void);
typedef IDeckLinkVideoFrameAncillaryPackets* (*CreateVideoFrameAncillaryPacketsInstanceFunc)(void);
static pthread_once_t gDeckLinkOnceControl = PTHREAD_ONCE_INIT;
static pthread_once_t gPreviewOnceControl = PTHREAD_ONCE_INIT;
@ -50,6 +51,7 @@ static CreateAPIInformationFunc gCreateAPIInformationFunc = NULL;
static CreateOpenGLScreenPreviewHelperFunc gCreateOpenGLPreviewFunc = NULL;
static CreateVideoConversionInstanceFunc gCreateVideoConversionFunc = NULL;
static CreateDeckLinkDiscoveryInstanceFunc gCreateDeckLinkDiscoveryFunc = NULL;
static CreateVideoFrameAncillaryPacketsInstanceFunc gCreateVideoFrameAncillaryPacketsFunc = NULL;
static void InitDeckLinkAPI (void)
{
@ -67,7 +69,7 @@ static void InitDeckLinkAPI (void)
gLoadedDeckLinkAPI = true;
gCreateIteratorFunc = (CreateIteratorFunc)dlsym(libraryHandle, "CreateDeckLinkIteratorInstance_0002");
gCreateIteratorFunc = (CreateIteratorFunc)dlsym(libraryHandle, "CreateDeckLinkIteratorInstance_0003");
if (!gCreateIteratorFunc)
fprintf(stderr, "%s\n", dlerror());
gCreateAPIInformationFunc = (CreateAPIInformationFunc)dlsym(libraryHandle, "CreateDeckLinkAPIInformationInstance_0001");
@ -76,9 +78,12 @@ static void InitDeckLinkAPI (void)
gCreateVideoConversionFunc = (CreateVideoConversionInstanceFunc)dlsym(libraryHandle, "CreateVideoConversionInstance_0001");
if (!gCreateVideoConversionFunc)
fprintf(stderr, "%s\n", dlerror());
gCreateDeckLinkDiscoveryFunc = (CreateDeckLinkDiscoveryInstanceFunc)dlsym(libraryHandle, "CreateDeckLinkDiscoveryInstance_0001");
gCreateDeckLinkDiscoveryFunc = (CreateDeckLinkDiscoveryInstanceFunc)dlsym(libraryHandle, "CreateDeckLinkDiscoveryInstance_0002");
if (!gCreateDeckLinkDiscoveryFunc)
fprintf(stderr, "%s\n", dlerror());
gCreateVideoFrameAncillaryPacketsFunc = (CreateVideoFrameAncillaryPacketsInstanceFunc)dlsym(libraryHandle, "CreateVideoFrameAncillaryPacketsInstance_0001");
if (!gCreateVideoFrameAncillaryPacketsFunc)
fprintf(stderr, "%s\n", dlerror());
}
static void InitDeckLinkPreviewAPI (void)
@ -149,3 +154,12 @@ IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance (void)
return NULL;
return gCreateDeckLinkDiscoveryFunc();
}
IDeckLinkVideoFrameAncillaryPackets* CreateVideoFrameAncillaryPacketsInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateVideoFrameAncillaryPacketsFunc == NULL)
return NULL;
return gCreateVideoFrameAncillaryPacketsFunc();
}

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -65,12 +69,12 @@ enum _BMDDisplayMode {
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.
bmdModeHD1080i50 = /* 'Hi50' */ 0x48693530,
bmdModeHD1080i5994 = /* 'Hi59' */ 0x48693539,
bmdModeHD1080i6000 = /* 'Hi60' */ 0x48693630, // N.B. This _really_ is 60.00 Hz.
/* HD 720 Modes */
@ -78,19 +82,24 @@ enum _BMDDisplayMode {
bmdModeHD720p5994 = /* 'hp59' */ 0x68703539,
bmdModeHD720p60 = /* 'hp60' */ 0x68703630,
/* 2k Modes */
/* 2K Modes */
bmdMode2k2398 = /* '2k23' */ 0x326B3233,
bmdMode2k24 = /* '2k24' */ 0x326B3234,
bmdMode2k25 = /* '2k25' */ 0x326B3235,
/* DCI Modes (output only) */
/* 2K DCI Modes */
bmdMode2kDCI2398 = /* '2d23' */ 0x32643233,
bmdMode2kDCI24 = /* '2d24' */ 0x32643234,
bmdMode2kDCI25 = /* '2d25' */ 0x32643235,
bmdMode2kDCI2997 = /* '2d29' */ 0x32643239,
bmdMode2kDCI30 = /* '2d30' */ 0x32643330,
bmdMode2kDCI50 = /* '2d50' */ 0x32643530,
bmdMode2kDCI5994 = /* '2d59' */ 0x32643539,
bmdMode2kDCI60 = /* '2d60' */ 0x32643630,
/* 4k Modes */
/* 4K UHD Modes */
bmdMode4K2160p2398 = /* '4k23' */ 0x346B3233,
bmdMode4K2160p24 = /* '4k24' */ 0x346B3234,
@ -101,11 +110,43 @@ enum _BMDDisplayMode {
bmdMode4K2160p5994 = /* '4k59' */ 0x346B3539,
bmdMode4K2160p60 = /* '4k60' */ 0x346B3630,
/* DCI Modes (output only) */
/* 4K DCI Modes */
bmdMode4kDCI2398 = /* '4d23' */ 0x34643233,
bmdMode4kDCI24 = /* '4d24' */ 0x34643234,
bmdMode4kDCI25 = /* '4d25' */ 0x34643235,
bmdMode4kDCI2997 = /* '4d29' */ 0x34643239,
bmdMode4kDCI30 = /* '4d30' */ 0x34643330,
bmdMode4kDCI50 = /* '4d50' */ 0x34643530,
bmdMode4kDCI5994 = /* '4d59' */ 0x34643539,
bmdMode4kDCI60 = /* '4d60' */ 0x34643630,
/* 8K UHD Modes */
bmdMode8K4320p2398 = /* '8k23' */ 0x386B3233,
bmdMode8K4320p24 = /* '8k24' */ 0x386B3234,
bmdMode8K4320p25 = /* '8k25' */ 0x386B3235,
bmdMode8K4320p2997 = /* '8k29' */ 0x386B3239,
bmdMode8K4320p30 = /* '8k30' */ 0x386B3330,
bmdMode8K4320p50 = /* '8k50' */ 0x386B3530,
bmdMode8K4320p5994 = /* '8k59' */ 0x386B3539,
bmdMode8K4320p60 = /* '8k60' */ 0x386B3630,
/* 8K DCI Modes */
bmdMode8kDCI2398 = /* '8d23' */ 0x38643233,
bmdMode8kDCI24 = /* '8d24' */ 0x38643234,
bmdMode8kDCI25 = /* '8d25' */ 0x38643235,
bmdMode8kDCI2997 = /* '8d29' */ 0x38643239,
bmdMode8kDCI30 = /* '8d30' */ 0x38643330,
bmdMode8kDCI50 = /* '8d50' */ 0x38643530,
bmdMode8kDCI5994 = /* '8d59' */ 0x38643539,
bmdMode8kDCI60 = /* '8d60' */ 0x38643630,
/* RAW Modes for Cintel (input only) */
bmdModeCintelRAW = /* 'rwci' */ 0x72776369, // Frame size up to 4096x3072, variable frame rate
bmdModeCintelCompressedRAW = /* 'rwcc' */ 0x72776363, // Frame size up to 4096x3072, variable frame rate
/* Special Modes */
@ -140,7 +181,12 @@ enum _BMDPixelFormat {
/* AVID DNxHR */
bmdFormatDNxHR = /* 'AVdh' */ 0x41566468
bmdFormatDNxHR = /* 'AVdh' */ 0x41566468,
/* Cintel formats */
bmdFormat12BitRAWGRBG = /* 'r12p' */ 0x72313270, // 12-bit RAW data for bayer pattern GRBG
bmdFormat12BitRAWJPEG = /* 'r16p' */ 0x72313670 // 12-bit RAW data arranged in tiles and JPEG compressed
};
/* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */
@ -149,7 +195,8 @@ typedef uint32_t BMDDisplayModeFlags;
enum _BMDDisplayModeFlags {
bmdDisplayModeSupports3D = 1 << 0,
bmdDisplayModeColorspaceRec601 = 1 << 1,
bmdDisplayModeColorspaceRec709 = 1 << 2
bmdDisplayModeColorspaceRec709 = 1 << 2,
bmdDisplayModeColorspaceRec2020 = 1 << 3
};
// Forward Declarations
@ -159,7 +206,7 @@ class IDeckLinkDisplayMode;
/* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */
class IDeckLinkDisplayModeIterator : public IUnknown
class BMD_PUBLIC IDeckLinkDisplayModeIterator : public IUnknown
{
public:
virtual HRESULT Next (/* out */ IDeckLinkDisplayMode **deckLinkDisplayMode) = 0;
@ -170,7 +217,7 @@ protected:
/* Interface IDeckLinkDisplayMode - represents a display mode */
class IDeckLinkDisplayMode : public IUnknown
class BMD_PUBLIC IDeckLinkDisplayMode : public IUnknown
{
public:
virtual HRESULT GetName (/* out */ const char **name) = 0;

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
typedef int64_t BMDTimeValue;
@ -54,7 +58,8 @@ typedef uint32_t BMDTimecodeFlags;
enum _BMDTimecodeFlags {
bmdTimecodeFlagDefault = 0,
bmdTimecodeIsDropFrame = 1 << 0,
bmdTimecodeFieldMark = 1 << 1
bmdTimecodeFieldMark = 1 << 1,
bmdTimecodeColorFrame = 1 << 2
};
/* Enum BMDVideoConnection - Video connection types */
@ -96,7 +101,7 @@ class IDeckLinkTimecode;
/* Interface IDeckLinkTimecode - Used for video frame timecode representation. */
class IDeckLinkTimecode : public IUnknown
class BMD_PUBLIC IDeckLinkTimecode : public IUnknown
{
public:
virtual BMDTimecodeBCD GetBCD (void) = 0;

View file

@ -30,8 +30,8 @@
#ifndef __DeckLink_API_Version_h__
#define __DeckLink_API_Version_h__
#define BLACKMAGIC_DECKLINK_API_VERSION 0x0a080000
#define BLACKMAGIC_DECKLINK_API_VERSION_STRING "10.8"
#define BLACKMAGIC_DECKLINK_API_VERSION 0x0a0b0400
#define BLACKMAGIC_DECKLINK_API_VERSION_STRING "10.11.4"
#endif // __DeckLink_API_Version_h__

View file

@ -85,8 +85,12 @@ typedef void *LPVOID;
#define IID_IUnknown (REFIID){0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}
#define IUnknownUUID IID_IUnknown
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
#ifdef __cplusplus
class IUnknown
class BMD_PUBLIC IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) = 0;

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
/* DeckLink API */
#include <CoreFoundation/CoreFoundation.h>
@ -67,12 +71,16 @@ BMD_CONST REFIID IID_IDeckLinkIterator = /* 50FB36CD-
BMD_CONST REFIID IID_IDeckLinkAPIInformation = /* 7BEA3C68-730D-4322-AF34-8A7152B532A4 */ {0x7B,0xEA,0x3C,0x68,0x73,0x0D,0x43,0x22,0xAF,0x34,0x8A,0x71,0x52,0xB5,0x32,0xA4};
BMD_CONST REFIID IID_IDeckLinkOutput = /* CC5C8A6E-3F2F-4B3A-87EA-FD78AF300564 */ {0xCC,0x5C,0x8A,0x6E,0x3F,0x2F,0x4B,0x3A,0x87,0xEA,0xFD,0x78,0xAF,0x30,0x05,0x64};
BMD_CONST REFIID IID_IDeckLinkInput = /* AF22762B-DFAC-4846-AA79-FA8883560995 */ {0xAF,0x22,0x76,0x2B,0xDF,0xAC,0x48,0x46,0xAA,0x79,0xFA,0x88,0x83,0x56,0x09,0x95};
BMD_CONST REFIID IID_IDeckLinkHDMIInputEDID = /* ABBBACBC-45BC-4665-9D92-ACE6E5A97902 */ {0xAB,0xBB,0xAC,0xBC,0x45,0xBC,0x46,0x65,0x9D,0x92,0xAC,0xE6,0xE5,0xA9,0x79,0x02};
BMD_CONST REFIID IID_IDeckLinkEncoderInput = /* 270587DA-6B7D-42E7-A1F0-6D853F581185 */ {0x27,0x05,0x87,0xDA,0x6B,0x7D,0x42,0xE7,0xA1,0xF0,0x6D,0x85,0x3F,0x58,0x11,0x85};
BMD_CONST REFIID IID_IDeckLinkVideoFrame = /* 3F716FE0-F023-4111-BE5D-EF4414C05B17 */ {0x3F,0x71,0x6F,0xE0,0xF0,0x23,0x41,0x11,0xBE,0x5D,0xEF,0x44,0x14,0xC0,0x5B,0x17};
BMD_CONST REFIID IID_IDeckLinkMutableVideoFrame = /* 69E2639F-40DA-4E19-B6F2-20ACE815C390 */ {0x69,0xE2,0x63,0x9F,0x40,0xDA,0x4E,0x19,0xB6,0xF2,0x20,0xAC,0xE8,0x15,0xC3,0x90};
BMD_CONST REFIID IID_IDeckLinkVideoFrame3DExtensions = /* DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7 */ {0xDA,0x0F,0x7E,0x4A,0xED,0xC7,0x48,0xA8,0x9C,0xDD,0x2D,0xB5,0x1C,0x72,0x9C,0xD7};
BMD_CONST REFIID IID_IDeckLinkVideoFrameMetadataExtensions = /* D5973DC9-6432-46D0-8F0B-2496F8A1238F */ {0xD5,0x97,0x3D,0xC9,0x64,0x32,0x46,0xD0,0x8F,0x0B,0x24,0x96,0xF8,0xA1,0x23,0x8F};
BMD_CONST REFIID IID_IDeckLinkVideoInputFrame = /* 05CFE374-537C-4094-9A57-680525118F44 */ {0x05,0xCF,0xE3,0x74,0x53,0x7C,0x40,0x94,0x9A,0x57,0x68,0x05,0x25,0x11,0x8F,0x44};
BMD_CONST REFIID IID_IDeckLinkAncillaryPacket = /* CC5BBF7E-029C-4D3B-9158-6000EF5E3670 */ {0xCC,0x5B,0xBF,0x7E,0x02,0x9C,0x4D,0x3B,0x91,0x58,0x60,0x00,0xEF,0x5E,0x36,0x70};
BMD_CONST REFIID IID_IDeckLinkAncillaryPacketIterator = /* 3FC8994B-88FB-4C17-968F-9AAB69D964A7 */ {0x3F,0xC8,0x99,0x4B,0x88,0xFB,0x4C,0x17,0x96,0x8F,0x9A,0xAB,0x69,0xD9,0x64,0xA7};
BMD_CONST REFIID IID_IDeckLinkVideoFrameAncillaryPackets = /* 6C186C0F-459E-41D8-AEE2-4812D81AEE68 */ {0x6C,0x18,0x6C,0x0F,0x45,0x9E,0x41,0xD8,0xAE,0xE2,0x48,0x12,0xD8,0x1A,0xEE,0x68};
BMD_CONST REFIID IID_IDeckLinkVideoFrameAncillary = /* 732E723C-D1A4-4E29-9E8E-4A88797A0004 */ {0x73,0x2E,0x72,0x3C,0xD1,0xA4,0x4E,0x29,0x9E,0x8E,0x4A,0x88,0x79,0x7A,0x00,0x04};
BMD_CONST REFIID IID_IDeckLinkEncoderPacket = /* B693F36C-316E-4AF1-B6C2-F389A4BCA620 */ {0xB6,0x93,0xF3,0x6C,0x31,0x6E,0x4A,0xF1,0xB6,0xC2,0xF3,0x89,0xA4,0xBC,0xA6,0x20};
BMD_CONST REFIID IID_IDeckLinkEncoderVideoPacket = /* 4E7FD944-E8C7-4EAC-B8C0-7B77F80F5AE0 */ {0x4E,0x7F,0xD9,0x44,0xE8,0xC7,0x4E,0xAC,0xB8,0xC0,0x7B,0x77,0xF8,0x0F,0x5A,0xE0};
@ -117,9 +125,11 @@ enum _BMDFrameFlags {
bmdFrameFlagDefault = 0,
bmdFrameFlagFlipVertical = 1 << 0,
bmdFrameContainsHDRMetadata = 1 << 1,
bmdFrameContainsCintelMetadata = 1 << 2,
/* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
bmdFrameCapturedAsPsF = 1 << 30,
bmdFrameHasNoInputSource = 1 << 31
};
@ -217,6 +227,15 @@ enum _BMDDisplayModeSupport {
bmdDisplayModeSupportedWithConversion
};
/* Enum BMDAncillaryPacketFormat - Ancillary packet format */
typedef uint32_t BMDAncillaryPacketFormat;
enum _BMDAncillaryPacketFormat {
bmdAncillaryPacketFormatUInt8 = 'ui08',
bmdAncillaryPacketFormatUInt16 = 'ui16',
bmdAncillaryPacketFormatYCbCr10 = 'v210'
};
/* Enum BMDTimecodeFormat - Timecode formats for frame metadata */
typedef uint32_t BMDTimecodeFormat;
@ -336,11 +355,68 @@ enum _BMDDeviceInterface {
bmdDeviceInterfaceThunderbolt = 'thun'
};
/* Enum BMDColorspace - Colorspace */
typedef uint32_t BMDColorspace;
enum _BMDColorspace {
bmdColorspaceRec601 = 'r601',
bmdColorspaceRec709 = 'r709',
bmdColorspaceRec2020 = '2020'
};
/* Enum BMDDynamicRange - SDR or HDR */
typedef uint32_t BMDDynamicRange;
enum _BMDDynamicRange {
bmdDynamicRangeSDR = 0,
bmdDynamicRangeHDRStaticPQ = 1 << 29, // SMPTE ST 2084
bmdDynamicRangeHDRStaticHLG = 1 << 30 // ITU-R BT.2100-0
};
/* Enum BMDDeckLinkHDMIInputEDIDID - DeckLink HDMI Input EDID ID */
typedef uint32_t BMDDeckLinkHDMIInputEDIDID;
enum _BMDDeckLinkHDMIInputEDIDID {
bmdDeckLinkHDMIInputEDIDDynamicRange = 'HIDy' // Parameter is of type BMDDynamicRange. Default is (bmdDynamicRangeSDR|bmdDynamicRangeHDRStaticPQ)
};
/* Enum BMDDeckLinkFrameMetadataID - DeckLink Frame Metadata ID */
typedef uint32_t BMDDeckLinkFrameMetadataID;
enum _BMDDeckLinkFrameMetadataID {
bmdDeckLinkFrameMetadataColorspace = 'cspc', // Colorspace of video frame (see BMDColorspace)
bmdDeckLinkFrameMetadataHDRElectroOpticalTransferFunc = 'eotf', // EOTF in range 0-7 as per CEA 861.3
bmdDeckLinkFrameMetadataCintelFilmType = 'cfty', // Current film type
bmdDeckLinkFrameMetadataCintelFilmGauge = 'cfga', // Current film gauge
bmdDeckLinkFrameMetadataCintelOffsetDetectedHorizontal = 'odfh', // Horizontal offset (pixels) detected in image
bmdDeckLinkFrameMetadataCintelOffsetDetectedVertical = 'odfv', // Vertical offset (pixels) detected in image
bmdDeckLinkFrameMetadataCintelKeykodeLow = 'ckkl', // Raw keykode value - low 64 bits
bmdDeckLinkFrameMetadataCintelKeykodeHigh = 'ckkh', // Raw keykode value - high 64 bits
bmdDeckLinkFrameMetadataCintelTile1Size = 'ct1s', // Size in bytes of compressed raw tile 1
bmdDeckLinkFrameMetadataCintelTile2Size = 'ct2s', // Size in bytes of compressed raw tile 2
bmdDeckLinkFrameMetadataCintelTile3Size = 'ct3s', // Size in bytes of compressed raw tile 3
bmdDeckLinkFrameMetadataCintelTile4Size = 'ct4s', // Size in bytes of compressed raw tile 4
bmdDeckLinkFrameMetadataCintelImageWidth = 'IWPx', // Width in pixels of image
bmdDeckLinkFrameMetadataCintelImageHeight = 'IHPx', // Height in pixels of image
bmdDeckLinkFrameMetadataCintelLinearMaskingRedInRed = 'mrir', // Red in red linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInRed = 'mgir', // Green in red linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInRed = 'mbir', // Blue in red linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingRedInGreen = 'mrig', // Red in green linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInGreen = 'mgig', // Green in green linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInGreen = 'mbig', // Blue in green linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingRedInBlue = 'mrib', // Red in blue linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInBlue = 'mgib', // Green in blue linear masking parameter
bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInBlue = 'mbib', // Blue in blue linear masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingRedInRed = 'mlrr', // Red in red log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingGreenInRed = 'mlgr', // Green in red log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingBlueInRed = 'mlbr', // Blue in red log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingRedInGreen = 'mlrg', // Red in green log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingGreenInGreen = 'mlgg', // Green in green log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingBlueInGreen = 'mlbg', // Blue in green log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingRedInBlue = 'mlrb', // Red in blue log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingGreenInBlue = 'mlgb', // Green in blue log masking parameter
bmdDeckLinkFrameMetadataCintelLogMaskingBlueInBlue = 'mlbb', // Blue in blue log masking parameter
bmdDeckLinkFrameMetadataCintelFilmFrameRate = 'cffr', // Film frame rate
bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedX = 'hdrx', // Red display primaries in range 0.0 - 1.0
bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedY = 'hdry', // Red display primaries in range 0.0 - 1.0
bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenX = 'hdgx', // Green display primaries in range 0.0 - 1.0
@ -352,7 +428,15 @@ enum _BMDDeckLinkFrameMetadataID {
bmdDeckLinkFrameMetadataHDRMaxDisplayMasteringLuminance = 'hdml', // Max display mastering luminance in range 1 cd/m2 - 65535 cd/m2
bmdDeckLinkFrameMetadataHDRMinDisplayMasteringLuminance = 'hmil', // Min display mastering luminance in range 0.0001 cd/m2 - 6.5535 cd/m2
bmdDeckLinkFrameMetadataHDRMaximumContentLightLevel = 'mcll', // Maximum Content Light Level in range 1 cd/m2 - 65535 cd/m2
bmdDeckLinkFrameMetadataHDRMaximumFrameAverageLightLevel = 'fall' // Maximum Frame Average Light Level in range 1 cd/m2 - 65535 cd/m2
bmdDeckLinkFrameMetadataHDRMaximumFrameAverageLightLevel = 'fall', // Maximum Frame Average Light Level in range 1 cd/m2 - 65535 cd/m2
bmdDeckLinkFrameMetadataCintelOffsetToApplyHorizontal = 'otah', // Horizontal offset (pixels) to be applied to image
bmdDeckLinkFrameMetadataCintelOffsetToApplyVertical = 'otav', // Vertical offset (pixels) to be applied to image
bmdDeckLinkFrameMetadataCintelGainRed = 'LfRd', // Red gain parameter to apply after log
bmdDeckLinkFrameMetadataCintelGainGreen = 'LfGr', // Green gain parameter to apply after log
bmdDeckLinkFrameMetadataCintelGainBlue = 'LfBl', // Blue gain parameter to apply after log
bmdDeckLinkFrameMetadataCintelLiftRed = 'GnRd', // Red lift parameter to apply after log and gain
bmdDeckLinkFrameMetadataCintelLiftGreen = 'GnGr', // Green lift parameter to apply after log and gain
bmdDeckLinkFrameMetadataCintelLiftBlue = 'GnBl' // Blue lift parameter to apply after log and gain
};
/* Enum BMDDuplexMode - Duplex for configurable ports */
@ -390,22 +474,24 @@ enum _BMDDeckLinkAttributeID {
BMDDeckLinkHasLTCTimecodeInput = 'hltc',
BMDDeckLinkSupportsDuplexModeConfiguration = 'dupx',
BMDDeckLinkSupportsHDRMetadata = 'hdrm',
BMDDeckLinkSupportsColorspaceMetadata = 'cmet',
/* Integers */
BMDDeckLinkMaximumAudioChannels = 'mach',
BMDDeckLinkMaximumAnalogAudioChannels = 'aach',
BMDDeckLinkMaximumAnalogAudioInputChannels = 'iach',
BMDDeckLinkMaximumAnalogAudioOutputChannels = 'aach',
BMDDeckLinkNumberOfSubDevices = 'nsbd',
BMDDeckLinkSubDeviceIndex = 'subi',
BMDDeckLinkPersistentID = 'peid',
BMDDeckLinkDeviceGroupID = 'dgid',
BMDDeckLinkTopologicalID = 'toid',
BMDDeckLinkVideoOutputConnections = 'vocn',
BMDDeckLinkVideoInputConnections = 'vicn',
BMDDeckLinkAudioOutputConnections = 'aocn',
BMDDeckLinkAudioInputConnections = 'aicn',
BMDDeckLinkVideoOutputConnections = 'vocn', // Returns a BMDVideoConnection bit field
BMDDeckLinkVideoInputConnections = 'vicn', // Returns a BMDVideoConnection bit field
BMDDeckLinkAudioOutputConnections = 'aocn', // Returns a BMDAudioConnection bit field
BMDDeckLinkAudioInputConnections = 'aicn', // Returns a BMDAudioConnection bit field
BMDDeckLinkVideoIOSupport = 'vios', // Returns a BMDVideoIOSupport bit field
BMDDeckLinkDeckControlConnections = 'dccn',
BMDDeckLinkDeckControlConnections = 'dccn', // Returns a BMDDeckControlConnection bit field
BMDDeckLinkDeviceInterface = 'dbus', // Returns a BMDDeviceInterface
BMDDeckLinkAudioInputRCAChannelCount = 'airc',
BMDDeckLinkAudioInputXLRChannelCount = 'aixc',
@ -459,11 +545,14 @@ enum _BMDDeckLinkStatusID {
bmdDeckLinkStatusReferenceSignalFlags = 'reff',
bmdDeckLinkStatusDuplexMode = 'dupx',
bmdDeckLinkStatusBusy = 'busy',
bmdDeckLinkStatusInterchangeablePanelType = 'icpt',
bmdDeckLinkStatusDeviceTemperature = 'dtmp',
/* Flags */
bmdDeckLinkStatusVideoInputSignalLocked = 'visl',
bmdDeckLinkStatusReferenceSignalLocked = 'refl'
bmdDeckLinkStatusReferenceSignalLocked = 'refl',
bmdDeckLinkStatusReceivedEDID = 'edid'
};
/* Enum BMDDeckLinkVideoStatusFlags - */
@ -484,6 +573,14 @@ enum _BMDDuplexStatus {
bmdDuplexStatusInactive = 'inac'
};
/* Enum BMDPanelType - The type of interchangeable panel */
typedef uint32_t BMDPanelType;
enum _BMDPanelType {
bmdPanelNotDetected = 'npnl',
bmdPanelTeranexMiniSmartPanel = 'tmsm'
};
/* Enum BMDDeviceBusyState - Current device busy state */
typedef uint32_t BMDDeviceBusyState;
@ -533,12 +630,16 @@ class IDeckLinkIterator;
class IDeckLinkAPIInformation;
class IDeckLinkOutput;
class IDeckLinkInput;
class IDeckLinkHDMIInputEDID;
class IDeckLinkEncoderInput;
class IDeckLinkVideoFrame;
class IDeckLinkMutableVideoFrame;
class IDeckLinkVideoFrame3DExtensions;
class IDeckLinkVideoFrameMetadataExtensions;
class IDeckLinkVideoInputFrame;
class IDeckLinkAncillaryPacket;
class IDeckLinkAncillaryPacketIterator;
class IDeckLinkVideoFrameAncillaryPackets;
class IDeckLinkVideoFrameAncillary;
class IDeckLinkEncoderPacket;
class IDeckLinkEncoderVideoPacket;
@ -559,7 +660,7 @@ class IDeckLinkDiscovery;
/* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
class IDeckLinkVideoOutputCallback : public IUnknown
class BMD_PUBLIC IDeckLinkVideoOutputCallback : public IUnknown
{
public:
virtual HRESULT ScheduledFrameCompleted (/* in */ IDeckLinkVideoFrame *completedFrame, /* in */ BMDOutputFrameCompletionResult result) = 0;
@ -571,7 +672,7 @@ protected:
/* Interface IDeckLinkInputCallback - Frame arrival callback. */
class IDeckLinkInputCallback : public IUnknown
class BMD_PUBLIC IDeckLinkInputCallback : public IUnknown
{
public:
virtual HRESULT VideoInputFormatChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
@ -583,7 +684,7 @@ protected:
/* Interface IDeckLinkEncoderInputCallback - Frame arrival callback. */
class IDeckLinkEncoderInputCallback : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderInputCallback : public IUnknown
{
public:
virtual HRESULT VideoInputSignalChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
@ -596,7 +697,7 @@ protected:
/* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */
class IDeckLinkMemoryAllocator : public IUnknown
class BMD_PUBLIC IDeckLinkMemoryAllocator : public IUnknown
{
public:
virtual HRESULT AllocateBuffer (/* in */ uint32_t bufferSize, /* out */ void **allocatedBuffer) = 0;
@ -608,7 +709,7 @@ public:
/* Interface IDeckLinkAudioOutputCallback - Optional callback to allow audio samples to be pulled as required. */
class IDeckLinkAudioOutputCallback : public IUnknown
class BMD_PUBLIC IDeckLinkAudioOutputCallback : public IUnknown
{
public:
virtual HRESULT RenderAudioSamples (/* in */ bool preroll) = 0;
@ -616,7 +717,7 @@ public:
/* Interface IDeckLinkIterator - enumerates installed DeckLink hardware */
class IDeckLinkIterator : public IUnknown
class BMD_PUBLIC IDeckLinkIterator : public IUnknown
{
public:
virtual HRESULT Next (/* out */ IDeckLink **deckLinkInstance) = 0;
@ -624,7 +725,7 @@ public:
/* Interface IDeckLinkAPIInformation - DeckLinkAPI attribute interface */
class IDeckLinkAPIInformation : public IUnknown
class BMD_PUBLIC IDeckLinkAPIInformation : public IUnknown
{
public:
virtual HRESULT GetFlag (/* in */ BMDDeckLinkAPIInformationID cfgID, /* out */ bool *value) = 0;
@ -638,7 +739,7 @@ protected:
/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
class IDeckLinkOutput : public IUnknown
class BMD_PUBLIC IDeckLinkOutput : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoOutputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
@ -653,7 +754,7 @@ public:
virtual HRESULT SetVideoOutputFrameMemoryAllocator (/* in */ IDeckLinkMemoryAllocator *theAllocator) = 0;
virtual HRESULT CreateVideoFrame (/* in */ int32_t width, /* in */ int32_t height, /* in */ int32_t rowBytes, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDFrameFlags flags, /* out */ IDeckLinkMutableVideoFrame **outFrame) = 0;
virtual HRESULT CreateAncillaryData (/* in */ BMDPixelFormat pixelFormat, /* out */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
virtual HRESULT CreateAncillaryData (/* in */ BMDPixelFormat pixelFormat, /* out */ IDeckLinkVideoFrameAncillary **outBuffer) = 0; // Use of IDeckLinkVideoFrameAncillaryPackets is preferred
virtual HRESULT DisplayVideoFrameSync (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
virtual HRESULT ScheduleVideoFrame (/* in */ IDeckLinkVideoFrame *theFrame, /* in */ BMDTimeValue displayTime, /* in */ BMDTimeValue displayDuration, /* in */ BMDTimeScale timeScale) = 0;
@ -695,7 +796,7 @@ protected:
/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
class IDeckLinkInput : public IUnknown
class BMD_PUBLIC IDeckLinkInput : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
@ -732,9 +833,22 @@ protected:
virtual ~IDeckLinkInput () {} // call Release method to drop reference count
};
/* Interface IDeckLinkHDMIInputEDID - Created by QueryInterface from IDeckLink. Releasing all references will restore EDID to default */
class BMD_PUBLIC IDeckLinkHDMIInputEDID : public IUnknown
{
public:
virtual HRESULT SetInt (/* in */ BMDDeckLinkHDMIInputEDIDID cfgID, /* in */ int64_t value) = 0;
virtual HRESULT GetInt (/* in */ BMDDeckLinkHDMIInputEDIDID cfgID, /* out */ int64_t *value) = 0;
virtual HRESULT WriteToEDID (void) = 0;
protected:
virtual ~IDeckLinkHDMIInputEDID () {} // call Release method to drop reference count
};
/* Interface IDeckLinkEncoderInput - Created by QueryInterface from IDeckLink. */
class IDeckLinkEncoderInput : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderInput : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
@ -771,7 +885,7 @@ protected:
/* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
class IDeckLinkVideoFrame : public IUnknown
class BMD_PUBLIC IDeckLinkVideoFrame : public IUnknown
{
public:
virtual long GetWidth (void) = 0;
@ -782,7 +896,7 @@ public:
virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
virtual HRESULT GetTimecode (/* in */ BMDTimecodeFormat format, /* out */ IDeckLinkTimecode **timecode) = 0;
virtual HRESULT GetAncillaryData (/* out */ IDeckLinkVideoFrameAncillary **ancillary) = 0;
virtual HRESULT GetAncillaryData (/* out */ IDeckLinkVideoFrameAncillary **ancillary) = 0; // Use of IDeckLinkVideoFrameAncillaryPackets is preferred
protected:
virtual ~IDeckLinkVideoFrame () {} // call Release method to drop reference count
@ -790,7 +904,7 @@ protected:
/* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
class IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
class BMD_PUBLIC IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
{
public:
virtual HRESULT SetFlags (/* in */ BMDFrameFlags newFlags) = 0;
@ -806,7 +920,7 @@ protected:
/* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */
class IDeckLinkVideoFrame3DExtensions : public IUnknown
class BMD_PUBLIC IDeckLinkVideoFrame3DExtensions : public IUnknown
{
public:
virtual BMDVideo3DPackingFormat Get3DPackingFormat (void) = 0;
@ -818,7 +932,7 @@ protected:
/* Interface IDeckLinkVideoFrameMetadataExtensions - Optional interface implemented on IDeckLinkVideoFrame to support frame metadata such as HDMI HDR information */
class IDeckLinkVideoFrameMetadataExtensions : public IUnknown
class BMD_PUBLIC IDeckLinkVideoFrameMetadataExtensions : public IUnknown
{
public:
virtual HRESULT GetInt (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ int64_t *value) = 0;
@ -832,7 +946,7 @@ protected:
/* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
class IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
class BMD_PUBLIC IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
{
public:
virtual HRESULT GetStreamTime (/* out */ BMDTimeValue *frameTime, /* out */ BMDTimeValue *frameDuration, /* in */ BMDTimeScale timeScale) = 0;
@ -842,13 +956,56 @@ protected:
virtual ~IDeckLinkVideoInputFrame () {} // call Release method to drop reference count
};
/* Interface IDeckLinkVideoFrameAncillary - Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
/* Interface IDeckLinkAncillaryPacket - On output, user needs to implement this interface */
class IDeckLinkVideoFrameAncillary : public IUnknown
class BMD_PUBLIC IDeckLinkAncillaryPacket : public IUnknown
{
public:
virtual HRESULT GetBufferForVerticalBlankingLine (/* in */ uint32_t lineNumber, /* out */ void **buffer) = 0;
virtual HRESULT GetBytes (/* in */ BMDAncillaryPacketFormat format /* For output, only one format need be offered */, /* out */ const void **data /* Optional */, /* out */ uint32_t *size /* Optional */) = 0;
virtual uint8_t GetDID (void) = 0;
virtual uint8_t GetSDID (void) = 0;
virtual uint32_t GetLineNumber (void) = 0; // On output, zero is auto
virtual uint8_t GetDataStreamIndex (void) = 0; // Usually zero. Can only be 1 if non-SD and the first data stream is completely full
protected:
virtual ~IDeckLinkAncillaryPacket () {} // call Release method to drop reference count
};
/* Interface IDeckLinkAncillaryPacketIterator - Enumerates ancillary packets */
class BMD_PUBLIC IDeckLinkAncillaryPacketIterator : public IUnknown
{
public:
virtual HRESULT Next (/* out */ IDeckLinkAncillaryPacket **packet) = 0;
protected:
virtual ~IDeckLinkAncillaryPacketIterator () {} // call Release method to drop reference count
};
/* Interface IDeckLinkVideoFrameAncillaryPackets - Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
class BMD_PUBLIC IDeckLinkVideoFrameAncillaryPackets : public IUnknown
{
public:
virtual HRESULT GetPacketIterator (/* out */ IDeckLinkAncillaryPacketIterator **iterator) = 0;
virtual HRESULT GetFirstPacketByID (/* in */ uint8_t DID, /* in */ uint8_t SDID, /* out */ IDeckLinkAncillaryPacket **packet) = 0;
virtual HRESULT AttachPacket (/* in */ IDeckLinkAncillaryPacket *packet) = 0; // Implement IDeckLinkAncillaryPacket to output your own
virtual HRESULT DetachPacket (/* in */ IDeckLinkAncillaryPacket *packet) = 0;
virtual HRESULT DetachAllPackets (void) = 0;
protected:
virtual ~IDeckLinkVideoFrameAncillaryPackets () {} // call Release method to drop reference count
};
/* Interface IDeckLinkVideoFrameAncillary - Use of IDeckLinkVideoFrameAncillaryPackets is preferred. Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
class BMD_PUBLIC IDeckLinkVideoFrameAncillary : public IUnknown
{
public:
virtual HRESULT GetBufferForVerticalBlankingLine (/* in */ uint32_t lineNumber, /* out */ void **buffer) = 0; // Pixels/rowbytes is same as display mode, except for above HD where it's 1920 pixels for UHD modes and 2048 pixels for DCI modes
virtual BMDPixelFormat GetPixelFormat (void) = 0;
virtual BMDDisplayMode GetDisplayMode (void) = 0;
@ -858,7 +1015,7 @@ protected:
/* Interface IDeckLinkEncoderPacket - Interface to encapsulate an encoded packet. */
class IDeckLinkEncoderPacket : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderPacket : public IUnknown
{
public:
virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
@ -872,7 +1029,7 @@ protected:
/* Interface IDeckLinkEncoderVideoPacket - Provided by the IDeckLinkEncoderInput video packet arrival callback. */
class IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
class BMD_PUBLIC IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
{
public:
virtual BMDPixelFormat GetPixelFormat (void) = 0;
@ -886,7 +1043,7 @@ protected:
/* Interface IDeckLinkEncoderAudioPacket - Provided by the IDeckLinkEncoderInput audio packet arrival callback. */
class IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
class BMD_PUBLIC IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
{
public:
virtual BMDAudioFormat GetAudioFormat (void) = 0;
@ -897,7 +1054,7 @@ protected:
/* Interface IDeckLinkH265NALPacket - Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object */
class IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
class BMD_PUBLIC IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
{
public:
virtual HRESULT GetUnitType (/* out */ uint8_t *unitType) = 0;
@ -910,7 +1067,7 @@ protected:
/* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */
class IDeckLinkAudioInputPacket : public IUnknown
class BMD_PUBLIC IDeckLinkAudioInputPacket : public IUnknown
{
public:
virtual long GetSampleFrameCount (void) = 0;
@ -923,7 +1080,7 @@ protected:
/* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
class IDeckLinkScreenPreviewCallback : public IUnknown
class BMD_PUBLIC IDeckLinkScreenPreviewCallback : public IUnknown
{
public:
virtual HRESULT DrawFrame (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
@ -934,7 +1091,7 @@ protected:
/* Interface IDeckLinkCocoaScreenPreviewCallback - Screen preview callback for Cocoa-based applications */
class IDeckLinkCocoaScreenPreviewCallback : public IDeckLinkScreenPreviewCallback
class BMD_PUBLIC IDeckLinkCocoaScreenPreviewCallback : public IDeckLinkScreenPreviewCallback
{
public:
@ -944,7 +1101,7 @@ protected:
/* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
class IDeckLinkGLScreenPreviewHelper : public IUnknown
class BMD_PUBLIC IDeckLinkGLScreenPreviewHelper : public IUnknown
{
public:
@ -961,7 +1118,7 @@ protected:
/* Interface IDeckLinkNotificationCallback - DeckLink Notification Callback Interface */
class IDeckLinkNotificationCallback : public IUnknown
class BMD_PUBLIC IDeckLinkNotificationCallback : public IUnknown
{
public:
virtual HRESULT Notify (/* in */ BMDNotifications topic, /* in */ uint64_t param1, /* in */ uint64_t param2) = 0;
@ -969,7 +1126,7 @@ public:
/* Interface IDeckLinkNotification - DeckLink Notification interface */
class IDeckLinkNotification : public IUnknown
class BMD_PUBLIC IDeckLinkNotification : public IUnknown
{
public:
virtual HRESULT Subscribe (/* in */ BMDNotifications topic, /* in */ IDeckLinkNotificationCallback *theCallback) = 0;
@ -978,7 +1135,7 @@ public:
/* Interface IDeckLinkAttributes - DeckLink Attribute interface */
class IDeckLinkAttributes : public IUnknown
class BMD_PUBLIC IDeckLinkAttributes : public IUnknown
{
public:
virtual HRESULT GetFlag (/* in */ BMDDeckLinkAttributeID cfgID, /* out */ bool *value) = 0;
@ -992,7 +1149,7 @@ protected:
/* Interface IDeckLinkStatus - DeckLink Status interface */
class IDeckLinkStatus : public IUnknown
class BMD_PUBLIC IDeckLinkStatus : public IUnknown
{
public:
virtual HRESULT GetFlag (/* in */ BMDDeckLinkStatusID statusID, /* out */ bool *value) = 0;
@ -1007,7 +1164,7 @@ protected:
/* Interface IDeckLinkKeyer - DeckLink Keyer interface */
class IDeckLinkKeyer : public IUnknown
class BMD_PUBLIC IDeckLinkKeyer : public IUnknown
{
public:
virtual HRESULT Enable (/* in */ bool isExternal) = 0;
@ -1022,7 +1179,7 @@ protected:
/* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
class IDeckLinkVideoConversion : public IUnknown
class BMD_PUBLIC IDeckLinkVideoConversion : public IUnknown
{
public:
virtual HRESULT ConvertFrame (/* in */ IDeckLinkVideoFrame* srcFrame, /* in */ IDeckLinkVideoFrame* dstFrame) = 0;
@ -1033,7 +1190,7 @@ protected:
/* Interface IDeckLinkDeviceNotificationCallback - DeckLink device arrival/removal notification callbacks */
class IDeckLinkDeviceNotificationCallback : public IUnknown
class BMD_PUBLIC IDeckLinkDeviceNotificationCallback : public IUnknown
{
public:
virtual HRESULT DeckLinkDeviceArrived (/* in */ IDeckLink* deckLinkDevice) = 0;
@ -1045,7 +1202,7 @@ protected:
/* Interface IDeckLinkDiscovery - DeckLink device discovery */
class IDeckLinkDiscovery : public IUnknown
class BMD_PUBLIC IDeckLinkDiscovery : public IUnknown
{
public:
virtual HRESULT InstallDeviceNotifications (/* in */ IDeckLinkDeviceNotificationCallback* deviceNotificationCallback) = 0;
@ -1059,12 +1216,13 @@ protected:
extern "C" {
IDeckLinkIterator* CreateDeckLinkIteratorInstance (void);
IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance (void);
IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance (void);
IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void);
IDeckLinkCocoaScreenPreviewCallback* CreateCocoaScreenPreview (void* /* (NSView*) */ parentView);
IDeckLinkVideoConversion* CreateVideoConversionInstance (void);
IDeckLinkIterator* BMD_PUBLIC CreateDeckLinkIteratorInstance (void);
IDeckLinkDiscovery* BMD_PUBLIC CreateDeckLinkDiscoveryInstance (void);
IDeckLinkAPIInformation* BMD_PUBLIC CreateDeckLinkAPIInformationInstance (void);
IDeckLinkGLScreenPreviewHelper* BMD_PUBLIC CreateOpenGLScreenPreviewHelper (void);
IDeckLinkCocoaScreenPreviewCallback* BMD_PUBLIC CreateCocoaScreenPreview (void* /* (NSView*) */ parentView);
IDeckLinkVideoConversion* BMD_PUBLIC CreateVideoConversionInstance (void);
IDeckLinkVideoFrameAncillaryPackets* BMD_PUBLIC CreateVideoFrameAncillaryPacketsInstance (void); // For use when creating a custom IDeckLinkVideoFrame without wrapping IDeckLinkOutput::CreateVideoFrame
}

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,12 +37,16 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
// Interface ID Declarations
BMD_CONST REFIID IID_IDeckLinkConfiguration = /* CB71734A-FE37-4E8D-8E13-802133A1C3F2 */ {0xCB,0x71,0x73,0x4A,0xFE,0x37,0x4E,0x8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2};
BMD_CONST REFIID IID_IDeckLinkConfiguration = /* EF90380B-4AE5-4346-9077-E288E149F129 */ {0xEF,0x90,0x38,0x0B,0x4A,0xE5,0x43,0x46,0x90,0x77,0xE2,0x88,0xE1,0x49,0xF1,0x29};
BMD_CONST REFIID IID_IDeckLinkEncoderConfiguration = /* 138050E5-C60A-4552-BF3F-0F358049327E */ {0x13,0x80,0x50,0xE5,0xC6,0x0A,0x45,0x52,0xBF,0x3F,0x0F,0x35,0x80,0x49,0x32,0x7E};
/* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
@ -54,10 +58,6 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigSwapSerialRxTx = 'ssrt',
/* Video Input/Output Flags */
bmdDeckLinkConfigUse1080pNotPsF = 'fpro',
/* Video Input/Output Integers */
bmdDeckLinkConfigHDMI3DPackingFormat = '3dpf',
@ -78,6 +78,12 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigLowLatencyVideoOutput = 'llvo',
bmdDeckLinkConfigDownConversionOnAllAnalogOutput = 'caao',
bmdDeckLinkConfigSMPTELevelAOutput = 'smta',
bmdDeckLinkConfigRec2020Output = 'rec2', // Ensure output is Rec.2020 colorspace
bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit = 'SDQS',
/* Video Output Flags */
bmdDeckLinkConfigOutput1080pAsPsF = 'pfpr',
/* Video Output Integers */
@ -106,6 +112,10 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigUseDedicatedLTCInput = 'dltc', // Use timecode from LTC input instead of SDI stream
bmdDeckLinkConfigSDIInput3DPayloadOverride = '3dds',
/* Video Input Flags */
bmdDeckLinkConfigCapture1080pAsPsF = 'cfpr',
/* Video Input Integers */
bmdDeckLinkConfigVideoInputConnection = 'vicn',
@ -206,7 +216,7 @@ class IDeckLinkEncoderConfiguration;
/* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
class IDeckLinkConfiguration : public IUnknown
class BMD_PUBLIC IDeckLinkConfiguration : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;
@ -225,7 +235,7 @@ protected:
/* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
class IDeckLinkEncoderConfiguration : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderConfiguration : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -149,7 +153,7 @@ class IDeckLinkDeckControl;
/* Interface IDeckLinkDeckControlStatusCallback - Deck control state change callback. */
class IDeckLinkDeckControlStatusCallback : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControlStatusCallback : public IUnknown
{
public:
virtual HRESULT TimecodeUpdate (/* in */ BMDTimecodeBCD currentTimecode) = 0;
@ -163,7 +167,7 @@ protected:
/* Interface IDeckLinkDeckControl - Deck Control main interface */
class IDeckLinkDeckControl : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControl : public IUnknown
{
public:
virtual HRESULT Open (/* in */ BMDTimeScale timeScale, /* in */ BMDTimeValue timeValue, /* in */ bool timecodeIsDropFrame, /* out */ BMDDeckControlError *error) = 0;

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -50,7 +54,7 @@ class IDeckLink;
/* Interface IDeckLink - represents a DeckLink device */
class IDeckLink : public IUnknown
class BMD_PUBLIC IDeckLink : public IUnknown
{
public:
virtual HRESULT GetModelName (/* out */ CFStringRef *modelName) = 0;

View file

@ -42,6 +42,7 @@ typedef IDeckLinkGLScreenPreviewHelper* (*CreateOpenGLScreenPreviewHelperFunc)(v
typedef IDeckLinkCocoaScreenPreviewCallback* (*CreateCocoaScreenPreviewFunc)(void*);
typedef IDeckLinkVideoConversion* (*CreateVideoConversionInstanceFunc)(void);
typedef IDeckLinkDiscovery* (*CreateDeckLinkDiscoveryInstanceFunc)(void);
typedef IDeckLinkVideoFrameAncillaryPackets* (*CreateVideoFrameAncillaryPacketsInstanceFunc)(void);
static pthread_once_t gDeckLinkOnceControl = PTHREAD_ONCE_INIT;
static CFBundleRef gDeckLinkAPIBundleRef = NULL;
@ -51,6 +52,7 @@ static CreateOpenGLScreenPreviewHelperFunc gCreateOpenGLPreviewFunc = NULL;
static CreateCocoaScreenPreviewFunc gCreateCocoaPreviewFunc = NULL;
static CreateVideoConversionInstanceFunc gCreateVideoConversionFunc = NULL;
static CreateDeckLinkDiscoveryInstanceFunc gCreateDeckLinkDiscoveryFunc= NULL;
static CreateVideoFrameAncillaryPacketsInstanceFunc gCreateVideoFrameAncillaryPacketsFunc = NULL;
static void InitDeckLinkAPI (void)
@ -63,12 +65,13 @@ static void InitDeckLinkAPI (void)
gDeckLinkAPIBundleRef = CFBundleCreate(kCFAllocatorDefault, bundleURL);
if (gDeckLinkAPIBundleRef != NULL)
{
gCreateIteratorFunc = (CreateIteratorFunc)CFBundleGetFunctionPointerForName(gDeckLinkAPIBundleRef, CFSTR("CreateDeckLinkIteratorInstance_0002"));
gCreateIteratorFunc = (CreateIteratorFunc)CFBundleGetFunctionPointerForName(gDeckLinkAPIBundleRef, CFSTR("CreateDeckLinkIteratorInstance_0003"));
gCreateAPIInformationFunc = (CreateAPIInformationFunc)CFBundleGetFunctionPointerForName(gDeckLinkAPIBundleRef, CFSTR("CreateDeckLinkAPIInformationInstance_0001"));
gCreateOpenGLPreviewFunc = (CreateOpenGLScreenPreviewHelperFunc)CFBundleGetFunctionPointerForName(gDeckLinkAPIBundleRef, CFSTR("CreateOpenGLScreenPreviewHelper_0001"));
gCreateCocoaPreviewFunc = (CreateCocoaScreenPreviewFunc)CFBundleGetFunctionPointerForName(gDeckLinkAPIBundleRef, CFSTR("CreateCocoaScreenPreview_0001"));
gCreateVideoConversionFunc = (CreateVideoConversionInstanceFunc)CFBundleGetFunctionPointerForName(gDeckLinkAPIBundleRef, CFSTR("CreateVideoConversionInstance_0001"));
gCreateDeckLinkDiscoveryFunc = (CreateDeckLinkDiscoveryInstanceFunc)CFBundleGetFunctionPointerForName(gDeckLinkAPIBundleRef, CFSTR("CreateDeckLinkDiscoveryInstance_0001"));
gCreateDeckLinkDiscoveryFunc = (CreateDeckLinkDiscoveryInstanceFunc)CFBundleGetFunctionPointerForName(gDeckLinkAPIBundleRef, CFSTR("CreateDeckLinkDiscoveryInstance_0002"));
gCreateVideoFrameAncillaryPacketsFunc = (CreateVideoFrameAncillaryPacketsInstanceFunc)CFBundleGetFunctionPointerForName(gDeckLinkAPIBundleRef, CFSTR("CreateVideoFrameAncillaryPacketsInstance_0001"));
}
CFRelease(bundleURL);
}
@ -145,6 +148,16 @@ IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance (void)
return gCreateDeckLinkDiscoveryFunc();
}
IDeckLinkVideoFrameAncillaryPackets* CreateVideoFrameAncillaryPacketsInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateVideoFrameAncillaryPacketsFunc == NULL)
return NULL;
return gCreateVideoFrameAncillaryPacketsFunc();
}
#define kBMDStreamingAPI_BundlePath "/Library/Application Support/Blackmagic Design/Streaming/BMDStreamingAPI.bundle"
@ -156,7 +169,7 @@ static CFBundleRef gBMDStreamingAPIBundleRef = NULL;
static CreateDiscoveryFunc gCreateDiscoveryFunc = NULL;
static CreateNALParserFunc gCreateNALParserFunc = NULL;
void InitBMDStreamingAPI(void)
static void InitBMDStreamingAPI(void)
{
CFURLRef bundleURL;
@ -166,7 +179,7 @@ void InitBMDStreamingAPI(void)
gBMDStreamingAPIBundleRef = CFBundleCreate(kCFAllocatorDefault, bundleURL);
if (gBMDStreamingAPIBundleRef != NULL)
{
gCreateDiscoveryFunc = (CreateDiscoveryFunc)CFBundleGetFunctionPointerForName(gBMDStreamingAPIBundleRef, CFSTR("CreateBMDStreamingDiscoveryInstance_0001"));
gCreateDiscoveryFunc = (CreateDiscoveryFunc)CFBundleGetFunctionPointerForName(gBMDStreamingAPIBundleRef, CFSTR("CreateBMDStreamingDiscoveryInstance_0002"));
gCreateNALParserFunc = (CreateNALParserFunc)CFBundleGetFunctionPointerForName(gBMDStreamingAPIBundleRef, CFSTR("CreateBMDStreamingH264NALParser_0001"));
}

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -65,12 +69,12 @@ enum _BMDDisplayMode {
bmdModeHD1080p25 = 'Hp25',
bmdModeHD1080p2997 = 'Hp29',
bmdModeHD1080p30 = 'Hp30',
bmdModeHD1080i50 = 'Hi50',
bmdModeHD1080i5994 = 'Hi59',
bmdModeHD1080i6000 = 'Hi60', // N.B. This _really_ is 60.00 Hz.
bmdModeHD1080p50 = 'Hp50',
bmdModeHD1080p5994 = 'Hp59',
bmdModeHD1080p6000 = 'Hp60', // N.B. This _really_ is 60.00 Hz.
bmdModeHD1080i50 = 'Hi50',
bmdModeHD1080i5994 = 'Hi59',
bmdModeHD1080i6000 = 'Hi60', // N.B. This _really_ is 60.00 Hz.
/* HD 720 Modes */
@ -78,19 +82,24 @@ enum _BMDDisplayMode {
bmdModeHD720p5994 = 'hp59',
bmdModeHD720p60 = 'hp60',
/* 2k Modes */
/* 2K Modes */
bmdMode2k2398 = '2k23',
bmdMode2k24 = '2k24',
bmdMode2k25 = '2k25',
/* DCI Modes (output only) */
/* 2K DCI Modes */
bmdMode2kDCI2398 = '2d23',
bmdMode2kDCI24 = '2d24',
bmdMode2kDCI25 = '2d25',
bmdMode2kDCI2997 = '2d29',
bmdMode2kDCI30 = '2d30',
bmdMode2kDCI50 = '2d50',
bmdMode2kDCI5994 = '2d59',
bmdMode2kDCI60 = '2d60',
/* 4k Modes */
/* 4K UHD Modes */
bmdMode4K2160p2398 = '4k23',
bmdMode4K2160p24 = '4k24',
@ -101,11 +110,43 @@ enum _BMDDisplayMode {
bmdMode4K2160p5994 = '4k59',
bmdMode4K2160p60 = '4k60',
/* DCI Modes (output only) */
/* 4K DCI Modes */
bmdMode4kDCI2398 = '4d23',
bmdMode4kDCI24 = '4d24',
bmdMode4kDCI25 = '4d25',
bmdMode4kDCI2997 = '4d29',
bmdMode4kDCI30 = '4d30',
bmdMode4kDCI50 = '4d50',
bmdMode4kDCI5994 = '4d59',
bmdMode4kDCI60 = '4d60',
/* 8K UHD Modes */
bmdMode8K4320p2398 = '8k23',
bmdMode8K4320p24 = '8k24',
bmdMode8K4320p25 = '8k25',
bmdMode8K4320p2997 = '8k29',
bmdMode8K4320p30 = '8k30',
bmdMode8K4320p50 = '8k50',
bmdMode8K4320p5994 = '8k59',
bmdMode8K4320p60 = '8k60',
/* 8K DCI Modes */
bmdMode8kDCI2398 = '8d23',
bmdMode8kDCI24 = '8d24',
bmdMode8kDCI25 = '8d25',
bmdMode8kDCI2997 = '8d29',
bmdMode8kDCI30 = '8d30',
bmdMode8kDCI50 = '8d50',
bmdMode8kDCI5994 = '8d59',
bmdMode8kDCI60 = '8d60',
/* RAW Modes for Cintel (input only) */
bmdModeCintelRAW = 'rwci', // Frame size up to 4096x3072, variable frame rate
bmdModeCintelCompressedRAW = 'rwcc', // Frame size up to 4096x3072, variable frame rate
/* Special Modes */
@ -140,7 +181,12 @@ enum _BMDPixelFormat {
/* AVID DNxHR */
bmdFormatDNxHR = 'AVdh'
bmdFormatDNxHR = 'AVdh',
/* Cintel formats */
bmdFormat12BitRAWGRBG = 'r12p', // 12-bit RAW data for bayer pattern GRBG
bmdFormat12BitRAWJPEG = 'r16p' // 12-bit RAW data arranged in tiles and JPEG compressed
};
/* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */
@ -149,7 +195,8 @@ typedef uint32_t BMDDisplayModeFlags;
enum _BMDDisplayModeFlags {
bmdDisplayModeSupports3D = 1 << 0,
bmdDisplayModeColorspaceRec601 = 1 << 1,
bmdDisplayModeColorspaceRec709 = 1 << 2
bmdDisplayModeColorspaceRec709 = 1 << 2,
bmdDisplayModeColorspaceRec2020 = 1 << 3
};
// Forward Declarations
@ -159,7 +206,7 @@ class IDeckLinkDisplayMode;
/* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */
class IDeckLinkDisplayModeIterator : public IUnknown
class BMD_PUBLIC IDeckLinkDisplayModeIterator : public IUnknown
{
public:
virtual HRESULT Next (/* out */ IDeckLinkDisplayMode **deckLinkDisplayMode) = 0;
@ -170,7 +217,7 @@ protected:
/* Interface IDeckLinkDisplayMode - represents a display mode */
class IDeckLinkDisplayMode : public IUnknown
class BMD_PUBLIC IDeckLinkDisplayMode : public IUnknown
{
public:
virtual HRESULT GetName (/* out */ CFStringRef *name) = 0;

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -188,7 +192,7 @@ class IBMDStreamingH264NALParser;
/* Interface IBMDStreamingDeviceNotificationCallback - Device notification callbacks. */
class IBMDStreamingDeviceNotificationCallback : public IUnknown
class BMD_PUBLIC IBMDStreamingDeviceNotificationCallback : public IUnknown
{
public:
virtual HRESULT StreamingDeviceArrived (/* in */ IDeckLink* device) = 0;
@ -201,7 +205,7 @@ protected:
/* Interface IBMDStreamingH264InputCallback - H264 input callbacks. */
class IBMDStreamingH264InputCallback : public IUnknown
class BMD_PUBLIC IBMDStreamingH264InputCallback : public IUnknown
{
public:
virtual HRESULT H264NALPacketArrived (/* in */ IBMDStreamingH264NALPacket* nalPacket) = 0;
@ -217,7 +221,7 @@ protected:
/* Interface IBMDStreamingDiscovery - Installs device notifications */
class IBMDStreamingDiscovery : public IUnknown
class BMD_PUBLIC IBMDStreamingDiscovery : public IUnknown
{
public:
virtual HRESULT InstallDeviceNotifications (/* in */ IBMDStreamingDeviceNotificationCallback* theCallback) = 0;
@ -229,7 +233,7 @@ protected:
/* Interface IBMDStreamingVideoEncodingMode - Represents an encoded video mode. */
class IBMDStreamingVideoEncodingMode : public IUnknown
class BMD_PUBLIC IBMDStreamingVideoEncodingMode : public IUnknown
{
public:
virtual HRESULT GetName (/* out */ CFStringRef *name) = 0;
@ -252,7 +256,7 @@ protected:
/* Interface IBMDStreamingMutableVideoEncodingMode - Represents a mutable encoded video mode. */
class IBMDStreamingMutableVideoEncodingMode : public IBMDStreamingVideoEncodingMode
class BMD_PUBLIC IBMDStreamingMutableVideoEncodingMode : public IBMDStreamingVideoEncodingMode
{
public:
virtual HRESULT SetSourceRect (/* in */ uint32_t posX, /* in */ uint32_t posY, /* in */ uint32_t width, /* in */ uint32_t height) = 0;
@ -268,7 +272,7 @@ protected:
/* Interface IBMDStreamingVideoEncodingModePresetIterator - Enumerates encoding mode presets */
class IBMDStreamingVideoEncodingModePresetIterator : public IUnknown
class BMD_PUBLIC IBMDStreamingVideoEncodingModePresetIterator : public IUnknown
{
public:
virtual HRESULT Next (/* out */ IBMDStreamingVideoEncodingMode** videoEncodingMode) = 0;
@ -279,7 +283,7 @@ protected:
/* Interface IBMDStreamingDeviceInput - Created by QueryInterface from IDeckLink */
class IBMDStreamingDeviceInput : public IUnknown
class BMD_PUBLIC IBMDStreamingDeviceInput : public IUnknown
{
public:
@ -309,7 +313,7 @@ protected:
/* Interface IBMDStreamingH264NALPacket - Represent an H.264 NAL packet */
class IBMDStreamingH264NALPacket : public IUnknown
class BMD_PUBLIC IBMDStreamingH264NALPacket : public IUnknown
{
public:
virtual long GetPayloadSize (void) = 0;
@ -324,7 +328,7 @@ protected:
/* Interface IBMDStreamingAudioPacket - Represents a chunk of audio data */
class IBMDStreamingAudioPacket : public IUnknown
class BMD_PUBLIC IBMDStreamingAudioPacket : public IUnknown
{
public:
virtual BMDStreamingAudioCodec GetCodec (void) = 0;
@ -339,7 +343,7 @@ protected:
/* Interface IBMDStreamingMPEG2TSPacket - Represent an MPEG2 Transport Stream packet */
class IBMDStreamingMPEG2TSPacket : public IUnknown
class BMD_PUBLIC IBMDStreamingMPEG2TSPacket : public IUnknown
{
public:
virtual long GetPayloadSize (void) = 0;
@ -351,7 +355,7 @@ protected:
/* Interface IBMDStreamingH264NALParser - For basic NAL parsing */
class IBMDStreamingH264NALParser : public IUnknown
class BMD_PUBLIC IBMDStreamingH264NALParser : public IUnknown
{
public:
virtual HRESULT IsNALSequenceParameterSet (/* in */ IBMDStreamingH264NALPacket* nal) = 0;
@ -366,8 +370,8 @@ protected:
extern "C" {
IBMDStreamingDiscovery* CreateBMDStreamingDiscoveryInstance (void);
IBMDStreamingH264NALParser* CreateBMDStreamingH264NALParser (void);
IBMDStreamingDiscovery* BMD_PUBLIC CreateBMDStreamingDiscoveryInstance (void);
IBMDStreamingH264NALParser* BMD_PUBLIC CreateBMDStreamingH264NALParser (void);
}

View file

@ -1,5 +1,5 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
** Copyright (c) 2018 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
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
typedef int64_t BMDTimeValue;
@ -54,7 +58,8 @@ typedef uint32_t BMDTimecodeFlags;
enum _BMDTimecodeFlags {
bmdTimecodeFlagDefault = 0,
bmdTimecodeIsDropFrame = 1 << 0,
bmdTimecodeFieldMark = 1 << 1
bmdTimecodeFieldMark = 1 << 1,
bmdTimecodeColorFrame = 1 << 2
};
/* Enum BMDVideoConnection - Video connection types */
@ -96,7 +101,7 @@ class IDeckLinkTimecode;
/* Interface IDeckLinkTimecode - Used for video frame timecode representation. */
class IDeckLinkTimecode : public IUnknown
class BMD_PUBLIC IDeckLinkTimecode : public IUnknown
{
public:
virtual BMDTimecodeBCD GetBCD (void) = 0;

View file

@ -30,8 +30,8 @@
#ifndef __DeckLink_API_Version_h__
#define __DeckLink_API_Version_h__
#define BLACKMAGIC_DECKLINK_API_VERSION 0x0a080000
#define BLACKMAGIC_DECKLINK_API_VERSION_STRING "10.8"
#define BLACKMAGIC_DECKLINK_API_VERSION 0x0a0b0400
#define BLACKMAGIC_DECKLINK_API_VERSION_STRING "10.11.4"
#endif // __DeckLink_API_Version_h__

File diff suppressed because it is too large Load diff

View file

@ -7,11 +7,11 @@
/* link this file in with the server and any clients */
/* File created by MIDL compiler version 8.00.0603 */
/* at Fri Jan 27 17:12:54 2017
/* File created by MIDL compiler version 8.01.0622 */
/* at Fri Feb 28 12:18:07 2020
*/
/* Compiler settings for ..\..\..\..\..\..\blackmagic\SDK\Win\include\DeckLinkAPI.idl:
Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.00.0603
/* Compiler settings for ..\..\Blackmagic\DeckLink_SDK_10.11.4\Win\include\DeckLinkAPI.idl:
Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0622
protocol : dce , ms_ext, c_ext, robust
error checks: allocation ref bounds_check enum stub_data
VC __declspec() decoration level:
@ -86,7 +86,7 @@ MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode,0x3EB2C1AB,0x0A3D,0x4523,0xA3,0xA
MIDL_DEFINE_GUID(IID, IID_IDeckLink,0xC418FBDD,0x0587,0x48ED,0x8F,0xE5,0x64,0x0F,0x0A,0x14,0xAF,0x91);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration,0xCB71734A,0xFE37,0x4E8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration,0xEF90380B,0x4AE5,0x4346,0x90,0x77,0xE2,0x88,0xE1,0x49,0xF1,0x29);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderConfiguration,0x138050E5,0xC60A,0x4552,0xBF,0x3F,0x0F,0x35,0x80,0x49,0x32,0x7E);
@ -131,7 +131,7 @@ MIDL_DEFINE_GUID(IID, IID_IBMDStreamingMPEG2TSPacket,0x91810D1C,0x4FB3,0x4AAA,0x
MIDL_DEFINE_GUID(IID, IID_IBMDStreamingH264NALParser,0x5867F18C,0x5BFA,0x4CCC,0xB2,0xA7,0x9D,0xFD,0x14,0x04,0x17,0xD2);
MIDL_DEFINE_GUID(CLSID, CLSID_CBMDStreamingDiscovery,0x0CAA31F6,0x8A26,0x40B0,0x86,0xA4,0xBF,0x58,0xDC,0xCA,0x71,0x0C);
MIDL_DEFINE_GUID(CLSID, CLSID_CBMDStreamingDiscovery,0x23A4EDF5,0xA0E5,0x432C,0x94,0xEF,0x3B,0xAB,0xB5,0xF8,0x1C,0x82);
MIDL_DEFINE_GUID(CLSID, CLSID_CBMDStreamingH264NALParser,0x7753EFBD,0x951C,0x407C,0x97,0xA5,0x23,0xC7,0x37,0xB7,0x3B,0x52);
@ -164,6 +164,9 @@ MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput,0xCC5C8A6E,0x3F2F,0x4B3A,0x87,0xEA,0xF
MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput,0xAF22762B,0xDFAC,0x4846,0xAA,0x79,0xFA,0x88,0x83,0x56,0x09,0x95);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkHDMIInputEDID,0xABBBACBC,0x45BC,0x4665,0x9D,0x92,0xAC,0xE6,0xE5,0xA9,0x79,0x02);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderInput,0x270587DA,0x6B7D,0x42E7,0xA1,0xF0,0x6D,0x85,0x3F,0x58,0x11,0x85);
@ -182,6 +185,15 @@ MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameMetadataExtensions,0xD5973DC9,0x643
MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame,0x05CFE374,0x537C,0x4094,0x9A,0x57,0x68,0x05,0x25,0x11,0x8F,0x44);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkAncillaryPacket,0xCC5BBF7E,0x029C,0x4D3B,0x91,0x58,0x60,0x00,0xEF,0x5E,0x36,0x70);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkAncillaryPacketIterator,0x3FC8994B,0x88FB,0x4C17,0x96,0x8F,0x9A,0xAB,0x69,0xD9,0x64,0xA7);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameAncillaryPackets,0x6C186C0F,0x459E,0x41D8,0xAE,0xE2,0x48,0x12,0xD8,0x1A,0xEE,0x68);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameAncillary,0x732E723C,0xD1A4,0x4E29,0x9E,0x8E,0x4A,0x88,0x79,0x7A,0x00,0x04);
@ -233,7 +245,7 @@ MIDL_DEFINE_GUID(IID, IID_IDeckLinkDeviceNotificationCallback,0x4997053B,0x0ADF,
MIDL_DEFINE_GUID(IID, IID_IDeckLinkDiscovery,0xCDBF631C,0xBC76,0x45FA,0xB4,0x4D,0xC5,0x50,0x59,0xBC,0x61,0x01);
MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkIterator,0x1F2E109A,0x8F4F,0x49E4,0x92,0x03,0x13,0x55,0x95,0xCB,0x6F,0xA5);
MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkIterator,0x87D2693F,0x8D4A,0x45C7,0xB4,0x3F,0x10,0xAC,0xBA,0x25,0xE6,0x8F);
MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkAPIInformation,0x263CA19F,0xED09,0x482E,0x9F,0x9D,0x84,0x00,0x57,0x83,0xA2,0x37);
@ -248,7 +260,22 @@ MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkDX9ScreenPreviewHelper,0xCC010023,0xE01D,
MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoConversion,0x7DBBBB11,0x5B7B,0x467D,0xAE,0xA4,0xCE,0xA4,0x68,0xFD,0x36,0x8C);
MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkDiscovery,0x1073A05C,0xD885,0x47E9,0xB3,0xC6,0x12,0x9B,0x3F,0x9F,0x64,0x8B);
MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkDiscovery,0x652615D4,0x26CD,0x4514,0xB1,0x61,0x2F,0xD5,0x07,0x2E,0xD0,0x08);
MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoFrameAncillaryPackets,0xF891AD29,0xD0C2,0x46E9,0xA9,0x26,0x4E,0x2D,0x0D,0xD8,0xCF,0xAD);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration_v10_9,0xCB71734A,0xFE37,0x4E8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2);
MIDL_DEFINE_GUID(CLSID, CLSID_CBMDStreamingDiscovery_v10_8,0x0CAA31F6,0x8A26,0x40B0,0x86,0xA4,0xBF,0x58,0xDC,0xCA,0x71,0x0C);
MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkIterator_v10_8,0x1F2E109A,0x8F4F,0x49E4,0x92,0x03,0x13,0x55,0x95,0xCB,0x6F,0xA5);
MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkDiscovery_v10_8,0x1073A05C,0xD885,0x47E9,0xB3,0xC6,0x12,0x9B,0x3F,0x9F,0x64,0x8B);
MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderConfiguration_v10_5,0x67455668,0x0848,0x45DF,0x8D,0x8E,0x35,0x0A,0x77,0xC9,0xA0,0x28);