mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 04:01:08 +00:00
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:
parent
0f1ba5b2f2
commit
796fffa441
20 changed files with 1563 additions and 207 deletions
|
@ -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
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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__
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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);
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue