Update decklink SDK to version 10.11

This commit is contained in:
Colin Edwards 2018-06-23 20:25:01 -05:00
parent ef6a83666a
commit f8e628ac36
72 changed files with 1868 additions and 594 deletions

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
/* DeckLink API */
#include <stdint.h>
@ -70,6 +74,9 @@ BMD_CONST REFIID IID_IDeckLinkMutableVideoFrame = /* 69E2639F-
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 +120,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
};
@ -159,10 +168,10 @@ enum _BMDDeckLinkCapturePassthroughMode {
typedef uint32_t BMDOutputFrameCompletionResult;
enum _BMDOutputFrameCompletionResult {
bmdOutputFrameCompleted,
bmdOutputFrameDisplayedLate,
bmdOutputFrameDropped,
bmdOutputFrameFlushed
bmdOutputFrameCompleted,
bmdOutputFrameDisplayedLate,
bmdOutputFrameDropped,
bmdOutputFrameFlushed
};
/* Enum BMDReferenceStatus - GenLock input status */
@ -199,9 +208,9 @@ enum _BMDAudioSampleType {
typedef uint32_t BMDAudioOutputStreamType;
enum _BMDAudioOutputStreamType {
bmdAudioOutputStreamContinuous,
bmdAudioOutputStreamContinuousDontResample,
bmdAudioOutputStreamTimestamped
bmdAudioOutputStreamContinuous,
bmdAudioOutputStreamContinuousDontResample,
bmdAudioOutputStreamTimestamped
};
/* Enum BMDDisplayModeSupport - Output mode supported flags */
@ -209,8 +218,17 @@ enum _BMDAudioOutputStreamType {
typedef uint32_t BMDDisplayModeSupport;
enum _BMDDisplayModeSupport {
bmdDisplayModeNotSupported = 0,
bmdDisplayModeSupported,
bmdDisplayModeSupportedWithConversion
bmdDisplayModeSupported,
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 */
@ -337,6 +355,37 @@ enum _BMDDeviceInterface {
typedef uint32_t BMDDeckLinkFrameMetadataID;
enum _BMDDeckLinkFrameMetadataID {
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 +397,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 */
@ -390,18 +447,19 @@ enum _BMDDeckLinkAttributeID {
/* 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 +513,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 +541,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;
@ -535,6 +604,9 @@ class IDeckLinkMutableVideoFrame;
class IDeckLinkVideoFrame3DExtensions;
class IDeckLinkVideoFrameMetadataExtensions;
class IDeckLinkVideoInputFrame;
class IDeckLinkAncillaryPacket;
class IDeckLinkAncillaryPacketIterator;
class IDeckLinkVideoFrameAncillaryPackets;
class IDeckLinkVideoFrameAncillary;
class IDeckLinkEncoderPacket;
class IDeckLinkEncoderVideoPacket;
@ -554,7 +626,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 +638,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 +650,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 +663,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 +675,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 +683,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 +691,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 +705,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 +720,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 +762,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;
@ -729,7 +801,7 @@ protected:
/* 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 +838,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 +849,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 +857,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 +873,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 +885,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 +899,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 +909,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 +968,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 +982,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 +996,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 +1007,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 +1020,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 +1033,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 +1044,7 @@ protected:
/* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
class IDeckLinkGLScreenPreviewHelper : public IUnknown
class BMD_PUBLIC IDeckLinkGLScreenPreviewHelper : public IUnknown
{
public:
@ -946,7 +1061,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 +1069,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 +1078,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 +1092,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 +1107,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 +1122,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 +1133,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 +1145,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 +1159,12 @@ protected:
extern "C" {
IDeckLinkIterator* CreateDeckLinkIteratorInstance (void);
IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance (void);
IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance (void);
IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void);
IDeckLinkVideoConversion* CreateVideoConversionInstance (void);
IDeckLinkIterator* BMD_PUBLIC CreateDeckLinkIteratorInstance (void);
IDeckLinkDiscovery* BMD_PUBLIC CreateDeckLinkDiscoveryInstance (void);
IDeckLinkAPIInformation* BMD_PUBLIC CreateDeckLinkAPIInformationInstance (void);
IDeckLinkGLScreenPreviewHelper* BMD_PUBLIC CreateOpenGLScreenPreviewHelper (void);
IDeckLinkVideoConversion* BMD_PUBLIC CreateVideoConversionInstance (void);
IDeckLinkVideoFrameAncillaryPackets* BMD_PUBLIC CreateVideoFrameAncillaryPacketsInstance (void); // For use when creating a custom IDeckLinkVideoFrame without wrapping IDeckLinkOutput::CreateVideoFrame
}

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,12 +37,16 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
// Interface ID Declarations
BMD_CONST REFIID IID_IDeckLinkConfiguration = /* CB71734A-FE37-4E8D-8E13-802133A1C3F2 */ {0xCB,0x71,0x73,0x4A,0xFE,0x37,0x4E,0x8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2};
BMD_CONST REFIID IID_IDeckLinkConfiguration = /* EF90380B-4AE5-4346-9077-E288E149F129 */ {0xEF,0x90,0x38,0x0B,0x4A,0xE5,0x43,0x46,0x90,0x77,0xE2,0x88,0xE1,0x49,0xF1,0x29};
BMD_CONST REFIID IID_IDeckLinkEncoderConfiguration = /* 138050E5-C60A-4552-BF3F-0F358049327E */ {0x13,0x80,0x50,0xE5,0xC6,0x0A,0x45,0x52,0xBF,0x3F,0x0F,0x35,0x80,0x49,0x32,0x7E};
/* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
@ -54,10 +58,6 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigSwapSerialRxTx = /* 'ssrt' */ 0x73737274,
/* Video Input/Output Flags */
bmdDeckLinkConfigUse1080pNotPsF = /* 'fpro' */ 0x6670726F,
/* Video Input/Output Integers */
bmdDeckLinkConfigHDMI3DPackingFormat = /* '3dpf' */ 0x33647066,
@ -78,6 +78,12 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigLowLatencyVideoOutput = /* 'llvo' */ 0x6C6C766F,
bmdDeckLinkConfigDownConversionOnAllAnalogOutput = /* 'caao' */ 0x6361616F,
bmdDeckLinkConfigSMPTELevelAOutput = /* 'smta' */ 0x736D7461,
bmdDeckLinkConfigRec2020Output = /* 'rec2' */ 0x72656332, // Ensure output is Rec.2020 colorspace
bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit = /* 'SDQS' */ 0x53445153,
/* Video Output Flags */
bmdDeckLinkConfigOutput1080pAsPsF = /* 'pfpr' */ 0x70667072,
/* Video Output Integers */
@ -106,6 +112,10 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigUseDedicatedLTCInput = /* 'dltc' */ 0x646C7463, // Use timecode from LTC input instead of SDI stream
bmdDeckLinkConfigSDIInput3DPayloadOverride = /* '3dds' */ 0x33646473,
/* Video Input Flags */
bmdDeckLinkConfigCapture1080pAsPsF = /* 'cfpr' */ 0x63667072,
/* Video Input Integers */
bmdDeckLinkConfigVideoInputConnection = /* 'vicn' */ 0x7669636E,
@ -206,7 +216,7 @@ class IDeckLinkEncoderConfiguration;
/* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
class IDeckLinkConfiguration : public IUnknown
class BMD_PUBLIC IDeckLinkConfiguration : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;
@ -225,7 +235,7 @@ protected:
/* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
class IDeckLinkEncoderConfiguration : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderConfiguration : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -40,7 +40,7 @@ class IDeckLinkConfiguration_v10_2;
/* Interface IDeckLinkConfiguration_v10_2 - DeckLink Configuration interface */
class IDeckLinkConfiguration_v10_2 : public IUnknown
class BMD_PUBLIC IDeckLinkConfiguration_v10_2 : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;

View File

@ -42,7 +42,7 @@ class IDeckLinkConfiguration_v10_4;
/* Interface IDeckLinkConfiguration_v10_4 - DeckLink Configuration interface */
class IDeckLinkConfiguration_v10_4 : public IUnknown
class BMD_PUBLIC IDeckLinkConfiguration_v10_4 : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -40,7 +40,7 @@ class IDeckLinkEncoderConfiguration_v10_5;
/* Interface IDeckLinkEncoderConfiguration_v10_5 - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
class IDeckLinkEncoderConfiguration_v10_5 : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderConfiguration_v10_5 : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;

View File

@ -0,0 +1,62 @@
/* -LICENSE-START-
** Copyright (c) 2017 Blackmagic Design
**
** Permission is hereby granted, free of charge, to any person or organization
** obtaining a copy of the software and accompanying documentation covered by
** this license (the "Software") to use, reproduce, display, distribute,
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
** DEALINGS IN THE SOFTWARE.
** -LICENSE-END-
*/
#ifndef BMD_DECKLINKAPICONFIGURATION_v10_9_H
#define BMD_DECKLINKAPICONFIGURATION_v10_9_H
#include "DeckLinkAPIConfiguration.h"
// Interface ID Declarations
BMD_CONST REFIID IID_IDeckLinkConfiguration_v10_9 = /* CB71734A-FE37-4E8D-8E13-802133A1C3F2 */ {0xCB,0x71,0x73,0x4A,0xFE,0x37,0x4E,0x8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2};
//
// Forward Declarations
class IDeckLinkConfiguration_v10_9;
/* Interface IDeckLinkConfiguration_v10_9 - DeckLink Configuration interface */
class BMD_PUBLIC IDeckLinkConfiguration_v10_9 : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;
virtual HRESULT GetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ bool *value) = 0;
virtual HRESULT SetInt (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ int64_t value) = 0;
virtual HRESULT GetInt (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ int64_t *value) = 0;
virtual HRESULT SetFloat (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ double value) = 0;
virtual HRESULT GetFloat (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ double *value) = 0;
virtual HRESULT SetString (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ const char *value) = 0;
virtual HRESULT GetString (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ const char **value) = 0;
virtual HRESULT WriteConfigurationToPreferences (void) = 0;
protected:
virtual ~IDeckLinkConfiguration_v10_9 () {} // call Release method to drop reference count
};
#endif /* defined(BMD_DECKLINKAPICONFIGURATION_v10_9_H) */

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -149,7 +153,7 @@ class IDeckLinkDeckControl;
/* Interface IDeckLinkDeckControlStatusCallback - Deck control state change callback. */
class IDeckLinkDeckControlStatusCallback : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControlStatusCallback : public IUnknown
{
public:
virtual HRESULT TimecodeUpdate (/* in */ BMDTimecodeBCD currentTimecode) = 0;
@ -163,7 +167,7 @@ protected:
/* Interface IDeckLinkDeckControl - Deck Control main interface */
class IDeckLinkDeckControl : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControl : public IUnknown
{
public:
virtual HRESULT Open (/* in */ BMDTimeScale timeScale, /* in */ BMDTimeValue timeValue, /* in */ bool timecodeIsDropFrame, /* out */ BMDDeckControlError *error) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -50,7 +54,7 @@ class IDeckLink;
/* Interface IDeckLink - represents a DeckLink device */
class IDeckLink : public IUnknown
class BMD_PUBLIC IDeckLink : public IUnknown
{
public:
virtual HRESULT GetModelName (/* out */ const char **modelName) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -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,21 +51,22 @@ static CreateAPIInformationFunc gCreateAPIInformationFunc = NULL;
static CreateOpenGLScreenPreviewHelperFunc gCreateOpenGLPreviewFunc = NULL;
static CreateVideoConversionInstanceFunc gCreateVideoConversionFunc = NULL;
static CreateDeckLinkDiscoveryInstanceFunc gCreateDeckLinkDiscoveryFunc = NULL;
static CreateVideoFrameAncillaryPacketsInstanceFunc gCreateVideoFrameAncillaryPacketsFunc = NULL;
void InitDeckLinkAPI (void)
{
void *libraryHandle;
libraryHandle = dlopen(kDeckLinkAPI_Name, RTLD_NOW|RTLD_GLOBAL);
if (!libraryHandle)
{
fprintf(stderr, "%s\n", dlerror());
return;
}
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");
@ -73,15 +75,18 @@ 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());
}
void InitDeckLinkPreviewAPI (void)
{
void *libraryHandle;
libraryHandle = dlopen(KDeckLinkPreviewAPI_Name, RTLD_NOW|RTLD_GLOBAL);
if (!libraryHandle)
{
@ -102,7 +107,7 @@ bool IsDeckLinkAPIPresent (void)
IDeckLinkIterator* CreateDeckLinkIteratorInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateIteratorFunc == NULL)
return NULL;
return gCreateIteratorFunc();
@ -111,7 +116,7 @@ IDeckLinkIterator* CreateDeckLinkIteratorInstance (void)
IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateAPIInformationFunc == NULL)
return NULL;
return gCreateAPIInformationFunc();
@ -121,7 +126,7 @@ IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
pthread_once(&gPreviewOnceControl, InitDeckLinkPreviewAPI);
if (gCreateOpenGLPreviewFunc == NULL)
return NULL;
return gCreateOpenGLPreviewFunc();
@ -130,7 +135,7 @@ IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void)
IDeckLinkVideoConversion* CreateVideoConversionInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateVideoConversionFunc == NULL)
return NULL;
return gCreateVideoConversionFunc();
@ -139,8 +144,17 @@ IDeckLinkVideoConversion* CreateVideoConversionInstance (void)
IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateDeckLinkDiscoveryFunc == NULL)
return NULL;
return gCreateDeckLinkDiscoveryFunc();
}
IDeckLinkVideoFrameAncillaryPackets* CreateVideoFrameAncillaryPacketsInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateVideoFrameAncillaryPacketsFunc == NULL)
return NULL;
return gCreateVideoFrameAncillaryPacketsFunc();
}

View File

@ -0,0 +1,146 @@
/* -LICENSE-START-
** Copyright (c) 2009 Blackmagic Design
**
** Permission is hereby granted, free of charge, to any person or organization
** obtaining a copy of the software and accompanying documentation covered by
** this license (the "Software") to use, reproduce, display, distribute,
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
** DEALINGS IN THE SOFTWARE.
** -LICENSE-END-
**/
#include <stdio.h>
#include <pthread.h>
#include <dlfcn.h>
#include "DeckLinkAPI.h"
#define kDeckLinkAPI_Name "libDeckLinkAPI.so"
#define KDeckLinkPreviewAPI_Name "libDeckLinkPreviewAPI.so"
typedef IDeckLinkIterator* (*CreateIteratorFunc)(void);
typedef IDeckLinkAPIInformation* (*CreateAPIInformationFunc)(void);
typedef IDeckLinkGLScreenPreviewHelper* (*CreateOpenGLScreenPreviewHelperFunc)(void);
typedef IDeckLinkVideoConversion* (*CreateVideoConversionInstanceFunc)(void);
typedef IDeckLinkDiscovery* (*CreateDeckLinkDiscoveryInstanceFunc)(void);
static pthread_once_t gDeckLinkOnceControl = PTHREAD_ONCE_INIT;
static pthread_once_t gPreviewOnceControl = PTHREAD_ONCE_INIT;
static bool gLoadedDeckLinkAPI = false;
static CreateIteratorFunc gCreateIteratorFunc = NULL;
static CreateAPIInformationFunc gCreateAPIInformationFunc = NULL;
static CreateOpenGLScreenPreviewHelperFunc gCreateOpenGLPreviewFunc = NULL;
static CreateVideoConversionInstanceFunc gCreateVideoConversionFunc = NULL;
static CreateDeckLinkDiscoveryInstanceFunc gCreateDeckLinkDiscoveryFunc = NULL;
void InitDeckLinkAPI(void)
{
void *libraryHandle;
libraryHandle = dlopen(kDeckLinkAPI_Name, RTLD_NOW | RTLD_GLOBAL);
if (!libraryHandle)
{
fprintf(stderr, "%s\n", dlerror());
return;
}
gLoadedDeckLinkAPI = true;
gCreateIteratorFunc = (CreateIteratorFunc)dlsym(libraryHandle, "CreateDeckLinkIteratorInstance_0002");
if (!gCreateIteratorFunc)
fprintf(stderr, "%s\n", dlerror());
gCreateAPIInformationFunc = (CreateAPIInformationFunc)dlsym(libraryHandle, "CreateDeckLinkAPIInformationInstance_0001");
if (!gCreateAPIInformationFunc)
fprintf(stderr, "%s\n", dlerror());
gCreateVideoConversionFunc = (CreateVideoConversionInstanceFunc)dlsym(libraryHandle, "CreateVideoConversionInstance_0001");
if (!gCreateVideoConversionFunc)
fprintf(stderr, "%s\n", dlerror());
gCreateDeckLinkDiscoveryFunc = (CreateDeckLinkDiscoveryInstanceFunc)dlsym(libraryHandle, "CreateDeckLinkDiscoveryInstance_0001");
if (!gCreateDeckLinkDiscoveryFunc)
fprintf(stderr, "%s\n", dlerror());
}
void InitDeckLinkPreviewAPI(void)
{
void *libraryHandle;
libraryHandle = dlopen(KDeckLinkPreviewAPI_Name, RTLD_NOW | RTLD_GLOBAL);
if (!libraryHandle)
{
fprintf(stderr, "%s\n", dlerror());
return;
}
gCreateOpenGLPreviewFunc = (CreateOpenGLScreenPreviewHelperFunc)dlsym(libraryHandle, "CreateOpenGLScreenPreviewHelper_0001");
if (!gCreateOpenGLPreviewFunc)
fprintf(stderr, "%s\n", dlerror());
}
bool IsDeckLinkAPIPresent(void)
{
// If the DeckLink API dynamic library was successfully loaded, return this knowledge to the caller
return gLoadedDeckLinkAPI;
}
IDeckLinkIterator* CreateDeckLinkIteratorInstance(void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateIteratorFunc == NULL)
return NULL;
return gCreateIteratorFunc();
}
IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance(void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateAPIInformationFunc == NULL)
return NULL;
return gCreateAPIInformationFunc();
}
IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper(void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
pthread_once(&gPreviewOnceControl, InitDeckLinkPreviewAPI);
if (gCreateOpenGLPreviewFunc == NULL)
return NULL;
return gCreateOpenGLPreviewFunc();
}
IDeckLinkVideoConversion* CreateVideoConversionInstance(void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateVideoConversionFunc == NULL)
return NULL;
return gCreateVideoConversionFunc();
}
IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance(void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateDeckLinkDiscoveryFunc == NULL)
return NULL;
return gCreateDeckLinkDiscoveryFunc();
}

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -48,14 +48,14 @@ static CreateVideoConversionInstanceFunc_v7_6 gCreateVideoConversionFunc = NULL
void InitDeckLinkAPI_v7_6 (void)
{
void *libraryHandle;
libraryHandle = dlopen(kDeckLinkAPI_Name, RTLD_NOW|RTLD_GLOBAL);
if (!libraryHandle)
{
fprintf(stderr, "%s\n", dlerror());
return;
}
gCreateIteratorFunc = (CreateIteratorFunc_v7_6)dlsym(libraryHandle, "CreateDeckLinkIteratorInstance");
if (!gCreateIteratorFunc)
fprintf(stderr, "%s\n", dlerror());
@ -67,7 +67,7 @@ void InitDeckLinkAPI_v7_6 (void)
void InitDeckLinkPreviewAPI_v7_6 (void)
{
void *libraryHandle;
libraryHandle = dlopen(KDeckLinkPreviewAPI_Name, RTLD_NOW|RTLD_GLOBAL);
if (!libraryHandle)
{
@ -82,7 +82,7 @@ void InitDeckLinkPreviewAPI_v7_6 (void)
IDeckLinkIterator* CreateDeckLinkIteratorInstance_v7_6 (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI_v7_6);
if (gCreateIteratorFunc == NULL)
return NULL;
return gCreateIteratorFunc();
@ -92,7 +92,7 @@ IDeckLinkGLScreenPreviewHelper_v7_6* CreateOpenGLScreenPreviewHelper_v7_6 (void
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI_v7_6);
pthread_once(&gPreviewOnceControl, InitDeckLinkPreviewAPI_v7_6);
if (gCreateOpenGLPreviewFunc == NULL)
return NULL;
return gCreateOpenGLPreviewFunc();
@ -101,7 +101,7 @@ IDeckLinkGLScreenPreviewHelper_v7_6* CreateOpenGLScreenPreviewHelper_v7_6 (void
IDeckLinkVideoConversion_v7_6* CreateVideoConversionInstance_v7_6 (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI_v7_6);
if (gCreateVideoConversionFunc == NULL)
return NULL;
return gCreateVideoConversionFunc();

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -52,16 +52,16 @@ static CreateVideoConversionInstanceFunc gCreateVideoConversionFunc = NULL;
void InitDeckLinkAPI (void)
{
void *libraryHandle;
libraryHandle = dlopen(kDeckLinkAPI_Name, RTLD_NOW|RTLD_GLOBAL);
if (!libraryHandle)
{
fprintf(stderr, "%s\n", dlerror());
return;
}
gLoadedDeckLinkAPI = true;
gCreateIteratorFunc = (CreateIteratorFunc)dlsym(libraryHandle, "CreateDeckLinkIteratorInstance_0001");
if (!gCreateIteratorFunc)
fprintf(stderr, "%s\n", dlerror());
@ -76,7 +76,7 @@ void InitDeckLinkAPI (void)
void InitDeckLinkPreviewAPI (void)
{
void *libraryHandle;
libraryHandle = dlopen(KDeckLinkPreviewAPI_Name, RTLD_NOW|RTLD_GLOBAL);
if (!libraryHandle)
{
@ -97,7 +97,7 @@ bool IsDeckLinkAPIPresent (void)
IDeckLinkIterator_v8_0* CreateDeckLinkIteratorInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateIteratorFunc == NULL)
return NULL;
return gCreateIteratorFunc();
@ -106,7 +106,7 @@ IDeckLinkIterator_v8_0* CreateDeckLinkIteratorInstance (void)
IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateAPIInformationFunc == NULL)
return NULL;
return gCreateAPIInformationFunc();
@ -116,7 +116,7 @@ IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
pthread_once(&gPreviewOnceControl, InitDeckLinkPreviewAPI);
if (gCreateOpenGLPreviewFunc == NULL)
return NULL;
return gCreateOpenGLPreviewFunc();
@ -125,7 +125,7 @@ IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void)
IDeckLinkVideoConversion* CreateVideoConversionInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateVideoConversionFunc == NULL)
return NULL;
return gCreateVideoConversionFunc();

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -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. */
@ -159,7 +205,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 +216,7 @@ protected:
/* Interface IDeckLinkDisplayMode - represents a display mode */
class IDeckLinkDisplayMode : public IUnknown
class BMD_PUBLIC IDeckLinkDisplayMode : public IUnknown
{
public:
virtual HRESULT GetName (/* out */ const char **name) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
typedef int64_t BMDTimeValue;
@ -54,7 +58,8 @@ typedef uint32_t BMDTimecodeFlags;
enum _BMDTimecodeFlags {
bmdTimecodeFlagDefault = 0,
bmdTimecodeIsDropFrame = 1 << 0,
bmdTimecodeFieldMark = 1 << 1
bmdTimecodeFieldMark = 1 << 1,
bmdTimecodeColorFrame = 1 << 2
};
/* Enum BMDVideoConnection - Video connection types */
@ -96,7 +101,7 @@ class IDeckLinkTimecode;
/* Interface IDeckLinkTimecode - Used for video frame timecode representation. */
class IDeckLinkTimecode : public IUnknown
class BMD_PUBLIC IDeckLinkTimecode : public IUnknown
{
public:
virtual BMDTimecodeBCD GetBCD (void) = 0;

View File

@ -7,14 +7,14 @@
* ** execute, and transmit the Software, and to prepare derivative works of the
* ** Software, and to permit third-parties to whom the Software is furnished to
* ** do so, all subject to the following:
* **
* **
* ** The copyright notices in the Software and this entire statement, including
* ** the above license grant, this restriction and the following disclaimer,
* ** must be included in all copies of the Software, in whole or in part, and
* ** all derivative works of the Software, unless such copies or derivative
* ** works are solely in the form of machine-executable object code generated by
* ** a source language processor.
* **
* **
* ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -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 0x0a0b0000
#define BLACKMAGIC_DECKLINK_API_VERSION_STRING "10.11"
#endif // __DeckLink_API_Version_h__

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,7 +37,7 @@
typedef uint32_t BMDDeckLinkConfigurationID_v10_2;
enum _BMDDeckLinkConfigurationID_v10_2 {
/* Video output flags */
bmdDeckLinkConfig3GBpsVideoOutput_v10_2 = '3gbs',
};

View File

@ -0,0 +1,45 @@
/* -LICENSE-START-
** Copyright (c) 2017 Blackmagic Design
**
** Permission is hereby granted, free of charge, to any person or organization
** obtaining a copy of the software and accompanying documentation covered by
** this license (the "Software") to use, reproduce, display, distribute,
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
** DEALINGS IN THE SOFTWARE.
** -LICENSE-END-
*/
#ifndef BMD_DECKLINKAPI_v10_9_H
#define BMD_DECKLINKAPI_v10_9_H
#include "DeckLinkAPI.h"
// Type Declarations
/* Enum BMDDeckLinkAttributeID - DeckLink Attribute ID */
typedef uint32_t BMDDeckLinkConfigurationID_v10_9;
enum _BMDDeckLinkConfigurationID_v10_9 {
/* Flags */
bmdDeckLinkConfig1080pNotPsF_v10_9 = 'fpro',
};
#endif /* defined(BMD_DECKLINKAPI_v10_9_H) */

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -66,14 +66,14 @@ class IDeckLinkVideoFrame_v7_1;
class IDeckLinkVideoInputFrame_v7_1;
class IDeckLinkAudioInputPacket_v7_1;
class IDeckLinkDisplayModeIterator_v7_1 : public IUnknown
class BMD_PUBLIC IDeckLinkDisplayModeIterator_v7_1 : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE Next (IDeckLinkDisplayMode_v7_1* *deckLinkDisplayMode) = 0;
};
class IDeckLinkDisplayMode_v7_1 : public IUnknown
class BMD_PUBLIC IDeckLinkDisplayMode_v7_1 : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE GetName (const char **name) = 0;
@ -83,56 +83,56 @@ public:
virtual HRESULT STDMETHODCALLTYPE GetFrameRate (BMDTimeValue *frameDuration, BMDTimeScale *timeScale) = 0;
};
class IDeckLinkVideoOutputCallback_v7_1 : public IUnknown
class BMD_PUBLIC IDeckLinkVideoOutputCallback_v7_1 : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted (IDeckLinkVideoFrame_v7_1* completedFrame, BMDOutputFrameCompletionResult result) = 0;
};
class IDeckLinkInputCallback_v7_1 : public IUnknown
class BMD_PUBLIC IDeckLinkInputCallback_v7_1 : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived (IDeckLinkVideoInputFrame_v7_1* videoFrame, IDeckLinkAudioInputPacket_v7_1* audioPacket) = 0;
};
// IDeckLinkOutput_v7_1. Created by QueryInterface from IDeckLink.
class IDeckLinkOutput_v7_1 : public IUnknown
class BMD_PUBLIC IDeckLinkOutput_v7_1 : public IUnknown
{
public:
// Display mode predicates
virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDDisplayModeSupport *result) = 0;
virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator (IDeckLinkDisplayModeIterator_v7_1* *iterator) = 0;
// Video output
virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput (BMDDisplayMode displayMode) = 0;
virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput () = 0;
virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator (IDeckLinkMemoryAllocator* theAllocator) = 0;
virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame (int32_t width, int32_t height, int32_t rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, IDeckLinkVideoFrame_v7_1* *outFrame) = 0;
virtual HRESULT STDMETHODCALLTYPE CreateVideoFrameFromBuffer (void* buffer, int32_t width, int32_t height, int32_t rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, IDeckLinkVideoFrame_v7_1* *outFrame) = 0;
virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync (IDeckLinkVideoFrame_v7_1* theFrame) = 0;
virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame (IDeckLinkVideoFrame_v7_1* theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale) = 0;
virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback (IDeckLinkVideoOutputCallback_v7_1* theCallback) = 0;
// Audio output
virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput (BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, uint32_t channelCount) = 0;
virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput () = 0;
virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync (void* buffer, uint32_t sampleFrameCount, uint32_t *sampleFramesWritten) = 0;
virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll () = 0;
virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll () = 0;
virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples (void* buffer, uint32_t sampleFrameCount, BMDTimeValue streamTime, BMDTimeScale timeScale, uint32_t *sampleFramesWritten) = 0;
virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount (uint32_t *bufferedSampleCount) = 0;
virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples () = 0;
virtual HRESULT STDMETHODCALLTYPE SetAudioCallback (IDeckLinkAudioOutputCallback* theCallback) = 0;
// Output control
virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback (BMDTimeValue playbackStartTime, BMDTimeScale timeScale, double playbackSpeed) = 0;
virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback (BMDTimeValue stopPlaybackAtTime, BMDTimeValue *actualStopTime, BMDTimeScale timeScale) = 0;
@ -140,23 +140,23 @@ public:
};
// IDeckLinkInput_v7_1. Created by QueryInterface from IDeckLink.
class IDeckLinkInput_v7_1 : public IUnknown
class BMD_PUBLIC IDeckLinkInput_v7_1 : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDDisplayModeSupport *result) = 0;
virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator (IDeckLinkDisplayModeIterator_v7_1 **iterator) = 0;
// Video input
virtual HRESULT STDMETHODCALLTYPE EnableVideoInput (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDVideoInputFlags flags) = 0;
virtual HRESULT STDMETHODCALLTYPE DisableVideoInput () = 0;
// Audio input
virtual HRESULT STDMETHODCALLTYPE EnableAudioInput (BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, uint32_t channelCount) = 0;
virtual HRESULT STDMETHODCALLTYPE DisableAudioInput () = 0;
virtual HRESULT STDMETHODCALLTYPE ReadAudioSamples (void* buffer, uint32_t sampleFrameCount, uint32_t *sampleFramesRead, BMDTimeValue *audioPacketTime, BMDTimeScale timeScale) = 0;
virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount (uint32_t *bufferedSampleCount) = 0;
// Input control
virtual HRESULT STDMETHODCALLTYPE StartStreams () = 0;
virtual HRESULT STDMETHODCALLTYPE StopStreams () = 0;
virtual HRESULT STDMETHODCALLTYPE PauseStreams () = 0;
@ -164,7 +164,7 @@ public:
};
// IDeckLinkVideoFrame_v7_1. Created by IDeckLinkOutput::CreateVideoFrame.
class IDeckLinkVideoFrame_v7_1 : public IUnknown
class BMD_PUBLIC IDeckLinkVideoFrame_v7_1 : public IUnknown
{
public:
virtual long STDMETHODCALLTYPE GetWidth () = 0;
@ -176,19 +176,19 @@ public:
};
// IDeckLinkVideoInputFrame_v7_1. Provided by the IDeckLinkInput_v7_1 frame arrival callback.
class IDeckLinkVideoInputFrame_v7_1 : public IDeckLinkVideoFrame_v7_1
class BMD_PUBLIC IDeckLinkVideoInputFrame_v7_1 : public IDeckLinkVideoFrame_v7_1
{
public:
virtual HRESULT STDMETHODCALLTYPE GetFrameTime (BMDTimeValue *frameTime, BMDTimeValue *frameDuration, BMDTimeScale timeScale) = 0;
};
// IDeckLinkAudioInputPacket_v7_1. Provided by the IDeckLinkInput_v7_1 callback.
class IDeckLinkAudioInputPacket_v7_1 : public IUnknown
class BMD_PUBLIC IDeckLinkAudioInputPacket_v7_1 : public IUnknown
{
public:
virtual long STDMETHODCALLTYPE GetSampleCount () = 0;
virtual HRESULT STDMETHODCALLTYPE GetBytes (void* *buffer) = 0;
virtual HRESULT STDMETHODCALLTYPE GetAudioPacketTime (BMDTimeValue *packetTime, BMDTimeScale timeScale) = 0;
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -53,7 +53,7 @@ class IDeckLinkVideoInputFrame_v7_3;
/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
class IDeckLinkOutput_v7_3 : public IUnknown
class BMD_PUBLIC IDeckLinkOutput_v7_3 : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, /* out */ BMDDisplayModeSupport *result) = 0;
@ -107,7 +107,7 @@ protected:
/* Interface IDeckLinkInputCallback - Frame arrival callback. */
class IDeckLinkInputCallback_v7_3 : public IUnknown
class BMD_PUBLIC IDeckLinkInputCallback_v7_3 : public IUnknown
{
public:
virtual HRESULT VideoInputFormatChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode_v7_6 *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
@ -122,7 +122,7 @@ protected:
/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
class IDeckLinkInput_v7_3 : public IUnknown
class BMD_PUBLIC IDeckLinkInput_v7_3 : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, /* out */ BMDDisplayModeSupport *result) = 0;
@ -158,7 +158,7 @@ protected:
/* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
class IDeckLinkVideoInputFrame_v7_3 : public IDeckLinkVideoFrame_v7_6
class BMD_PUBLIC IDeckLinkVideoInputFrame_v7_3 : public IDeckLinkVideoFrame_v7_6
{
public:
virtual HRESULT GetStreamTime (/* out */ BMDTimeValue *frameTime, /* out */ BMDTimeValue *frameDuration, BMDTimeScale timeScale) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -83,7 +83,7 @@ class IDeckLinkVideoConversion_v7_6;
/* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
class IDeckLinkVideoOutputCallback_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkVideoOutputCallback_v7_6 : public IUnknown
{
public:
virtual HRESULT ScheduledFrameCompleted (/* in */ IDeckLinkVideoFrame_v7_6 *completedFrame, /* in */ BMDOutputFrameCompletionResult result) = 0;
@ -96,7 +96,7 @@ protected:
/* Interface IDeckLinkInputCallback - Frame arrival callback. */
class IDeckLinkInputCallback_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkInputCallback_v7_6 : public IUnknown
{
public:
virtual HRESULT VideoInputFormatChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode_v7_6 *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
@ -109,7 +109,7 @@ protected:
/* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */
class IDeckLinkDisplayModeIterator_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkDisplayModeIterator_v7_6 : public IUnknown
{
public:
virtual HRESULT Next (/* out */ IDeckLinkDisplayMode_v7_6 **deckLinkDisplayMode) = 0;
@ -121,7 +121,7 @@ protected:
/* Interface IDeckLinkDisplayMode - represents a display mode */
class IDeckLinkDisplayMode_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkDisplayMode_v7_6 : public IUnknown
{
public:
virtual HRESULT GetName (/* out */ const char **name) = 0;
@ -138,7 +138,7 @@ protected:
/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
class IDeckLinkOutput_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkOutput_v7_6 : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* out */ BMDDisplayModeSupport *result) = 0;
@ -194,7 +194,7 @@ protected:
/* Interface IDeckLinkInput_v7_6 - Created by QueryInterface from IDeckLink. */
class IDeckLinkInput_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkInput_v7_6 : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* out */ BMDDisplayModeSupport *result) = 0;
@ -233,7 +233,7 @@ protected:
/* Interface IDeckLinkTimecode - Used for video frame timecode representation. */
class IDeckLinkTimecode_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkTimecode_v7_6 : public IUnknown
{
public:
virtual BMDTimecodeBCD GetBCD (void) = 0;
@ -248,7 +248,7 @@ protected:
/* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
class IDeckLinkVideoFrame_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkVideoFrame_v7_6 : public IUnknown
{
public:
virtual long GetWidth (void) = 0;
@ -268,7 +268,7 @@ protected:
/* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
class IDeckLinkMutableVideoFrame_v7_6 : public IDeckLinkVideoFrame_v7_6
class BMD_PUBLIC IDeckLinkMutableVideoFrame_v7_6 : public IDeckLinkVideoFrame_v7_6
{
public:
virtual HRESULT SetFlags (BMDFrameFlags newFlags) = 0;
@ -284,7 +284,7 @@ protected:
/* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
class IDeckLinkVideoInputFrame_v7_6 : public IDeckLinkVideoFrame_v7_6
class BMD_PUBLIC IDeckLinkVideoInputFrame_v7_6 : public IDeckLinkVideoFrame_v7_6
{
public:
virtual HRESULT GetStreamTime (/* out */ BMDTimeValue *frameTime, /* out */ BMDTimeValue *frameDuration, BMDTimeScale timeScale) = 0;
@ -297,7 +297,7 @@ protected:
/* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
class IDeckLinkScreenPreviewCallback_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkScreenPreviewCallback_v7_6 : public IUnknown
{
public:
virtual HRESULT DrawFrame (/* in */ IDeckLinkVideoFrame_v7_6 *theFrame) = 0;
@ -309,7 +309,7 @@ protected:
/* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
class IDeckLinkGLScreenPreviewHelper_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkGLScreenPreviewHelper_v7_6 : public IUnknown
{
public:
@ -326,7 +326,7 @@ protected:
/* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
class IDeckLinkVideoConversion_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkVideoConversion_v7_6 : public IUnknown
{
public:
virtual HRESULT ConvertFrame (/* in */ IDeckLinkVideoFrame_v7_6* srcFrame, /* in */ IDeckLinkVideoFrame_v7_6* dstFrame) = 0;
@ -337,54 +337,54 @@ protected:
/* Interface IDeckLinkConfiguration - Created by QueryInterface from IDeckLink. */
class IDeckLinkConfiguration_v7_6 : public IUnknown
class BMD_PUBLIC IDeckLinkConfiguration_v7_6 : public IUnknown
{
public:
virtual HRESULT GetConfigurationValidator (/* out */ IDeckLinkConfiguration_v7_6 **configObject) = 0;
virtual HRESULT WriteConfigurationToPreferences (void) = 0;
/* Video Output Configuration */
virtual HRESULT SetVideoOutputFormat (/* in */ BMDVideoConnection_v7_6 videoOutputConnection) = 0;
virtual HRESULT IsVideoOutputActive (/* in */ BMDVideoConnection_v7_6 videoOutputConnection, /* out */ bool *active) = 0;
virtual HRESULT SetAnalogVideoOutputFlags (/* in */ BMDAnalogVideoFlags analogVideoFlags) = 0;
virtual HRESULT GetAnalogVideoOutputFlags (/* out */ BMDAnalogVideoFlags *analogVideoFlags) = 0;
virtual HRESULT EnableFieldFlickerRemovalWhenPaused (/* in */ bool enable) = 0;
virtual HRESULT IsEnabledFieldFlickerRemovalWhenPaused (/* out */ bool *enabled) = 0;
virtual HRESULT Set444And3GBpsVideoOutput (/* in */ bool enable444VideoOutput, /* in */ bool enable3GbsOutput) = 0;
virtual HRESULT Get444And3GBpsVideoOutput (/* out */ bool *is444VideoOutputEnabled, /* out */ bool *threeGbsOutputEnabled) = 0;
virtual HRESULT SetVideoOutputConversionMode (/* in */ BMDVideoOutputConversionMode conversionMode) = 0;
virtual HRESULT GetVideoOutputConversionMode (/* out */ BMDVideoOutputConversionMode *conversionMode) = 0;
virtual HRESULT Set_HD1080p24_to_HD1080i5994_Conversion (/* in */ bool enable) = 0;
virtual HRESULT Get_HD1080p24_to_HD1080i5994_Conversion (/* out */ bool *enabled) = 0;
/* Video Input Configuration */
virtual HRESULT SetVideoInputFormat (/* in */ BMDVideoConnection_v7_6 videoInputFormat) = 0;
virtual HRESULT GetVideoInputFormat (/* out */ BMDVideoConnection_v7_6 *videoInputFormat) = 0;
virtual HRESULT SetAnalogVideoInputFlags (/* in */ BMDAnalogVideoFlags analogVideoFlags) = 0;
virtual HRESULT GetAnalogVideoInputFlags (/* out */ BMDAnalogVideoFlags *analogVideoFlags) = 0;
virtual HRESULT SetVideoInputConversionMode (/* in */ BMDVideoInputConversionMode conversionMode) = 0;
virtual HRESULT GetVideoInputConversionMode (/* out */ BMDVideoInputConversionMode *conversionMode) = 0;
virtual HRESULT SetBlackVideoOutputDuringCapture (/* in */ bool blackOutInCapture) = 0;
virtual HRESULT GetBlackVideoOutputDuringCapture (/* out */ bool *blackOutInCapture) = 0;
virtual HRESULT Set32PulldownSequenceInitialTimecodeFrame (/* in */ uint32_t aFrameTimecode) = 0;
virtual HRESULT Get32PulldownSequenceInitialTimecodeFrame (/* out */ uint32_t *aFrameTimecode) = 0;
virtual HRESULT SetVancSourceLineMapping (/* in */ uint32_t activeLine1VANCsource, /* in */ uint32_t activeLine2VANCsource, /* in */ uint32_t activeLine3VANCsource) = 0;
virtual HRESULT GetVancSourceLineMapping (/* out */ uint32_t *activeLine1VANCsource, /* out */ uint32_t *activeLine2VANCsource, /* out */ uint32_t *activeLine3VANCsource) = 0;
/* Audio Input Configuration */
virtual HRESULT SetAudioInputFormat (/* in */ BMDAudioConnection audioInputFormat) = 0;
virtual HRESULT GetAudioInputFormat (/* out */ BMDAudioConnection *audioInputFormat) = 0;
};
@ -393,9 +393,9 @@ public:
extern "C" {
IDeckLinkIterator* CreateDeckLinkIteratorInstance_v7_6 (void);
IDeckLinkGLScreenPreviewHelper_v7_6* CreateOpenGLScreenPreviewHelper_v7_6 (void);
IDeckLinkVideoConversion_v7_6* CreateVideoConversionInstance_v7_6 (void);
IDeckLinkIterator* BMD_PUBLIC CreateDeckLinkIteratorInstance_v7_6 (void);
IDeckLinkGLScreenPreviewHelper_v7_6* BMD_PUBLIC CreateOpenGLScreenPreviewHelper_v7_6 (void);
IDeckLinkVideoConversion_v7_6* BMD_PUBLIC CreateVideoConversionInstance_v7_6 (void);
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -42,7 +42,7 @@
class IDeckLinkDeckControl_v7_9;
/* Interface IDeckLinkDeckControl_v7_9 - Deck Control main interface */
class IDeckLinkDeckControl_v7_9 : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControl_v7_9 : public IUnknown
{
public:
virtual HRESULT Open (/* in */ BMDTimeScale timeScale, /* in */ BMDTimeValue timeValue, /* in */ bool timecodeIsDropFrame, /* out */ BMDDeckControlError *error) = 0;
@ -77,7 +77,7 @@ public:
virtual HRESULT CrashRecordStart (/* out */ BMDDeckControlError *error) = 0;
virtual HRESULT CrashRecordStop (/* out */ BMDDeckControlError *error) = 0;
virtual HRESULT SetCallback (/* in */ IDeckLinkDeckControlStatusCallback *callback) = 0;
protected:
virtual ~IDeckLinkDeckControl_v7_9 () {}; // call Release method to drop reference count
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -39,7 +39,7 @@
/* Interface IDeckLink_v8_0 - represents a DeckLink device */
class IDeckLink_v8_0 : public IUnknown
class BMD_PUBLIC IDeckLink_v8_0 : public IUnknown
{
public:
virtual HRESULT GetModelName (/* out */ const char **modelName) = 0;
@ -47,14 +47,14 @@ public:
/* Interface IDeckLinkIterator_v8_0 - enumerates installed DeckLink hardware */
class IDeckLinkIterator_v8_0 : public IUnknown
class BMD_PUBLIC IDeckLinkIterator_v8_0 : public IUnknown
{
public:
virtual HRESULT Next (/* out */ IDeckLink_v8_0 **deckLinkInstance) = 0;
};
extern "C" {
IDeckLinkIterator_v8_0* CreateDeckLinkIteratorInstance_v8_0 (void);
IDeckLinkIterator_v8_0* BMD_PUBLIC CreateDeckLinkIteratorInstance_v8_0 (void);
};
#endif // defined __cplusplus

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -52,21 +52,21 @@ enum _BMDDeckControlVTRControlState_v8_1 {
/* Interface IDeckLinkDeckControlStatusCallback_v8_1 - Deck control state change callback. */
class IDeckLinkDeckControlStatusCallback_v8_1 : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControlStatusCallback_v8_1 : public IUnknown
{
public:
virtual HRESULT TimecodeUpdate (/* in */ BMDTimecodeBCD currentTimecode) = 0;
virtual HRESULT VTRControlStateChanged (/* in */ BMDDeckControlVTRControlState_v8_1 newState, /* in */ BMDDeckControlError error) = 0;
virtual HRESULT DeckControlEventReceived (/* in */ BMDDeckControlEvent event, /* in */ BMDDeckControlError error) = 0;
virtual HRESULT DeckControlStatusChanged (/* in */ BMDDeckControlStatusFlags flags, /* in */ uint32_t mask) = 0;
protected:
virtual ~IDeckLinkDeckControlStatusCallback_v8_1 () {}; // call Release method to drop reference count
};
/* Interface IDeckLinkDeckControl_v8_1 - Deck Control main interface */
class IDeckLinkDeckControl_v8_1 : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControl_v8_1 : public IUnknown
{
public:
virtual HRESULT Open (/* in */ BMDTimeScale timeScale, /* in */ BMDTimeValue timeValue, /* in */ bool timecodeIsDropFrame, /* out */ BMDDeckControlError *error) = 0;
@ -102,7 +102,7 @@ public:
virtual HRESULT CrashRecordStart (/* out */ BMDDeckControlError *error) = 0;
virtual HRESULT CrashRecordStop (/* out */ BMDDeckControlError *error) = 0;
virtual HRESULT SetCallback (/* in */ IDeckLinkDeckControlStatusCallback_v8_1 *callback) = 0;
protected:
virtual ~IDeckLinkDeckControl_v8_1 () {}; // call Release method to drop reference count
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -40,7 +40,7 @@
/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
class IDeckLinkInput_v9_2 : public IUnknown
class BMD_PUBLIC IDeckLinkInput_v9_2 : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -40,7 +40,7 @@
/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
class IDeckLinkOutput_v9_9 : public IUnknown
class BMD_PUBLIC IDeckLinkOutput_v9_9 : public IUnknown
{
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoOutputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -29,7 +29,7 @@
#define __LINUX_COM_H_
struct REFIID
{
{
unsigned char byte0;
unsigned char byte1;
unsigned char byte2;
@ -85,14 +85,19 @@ 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;
virtual ULONG STDMETHODCALLTYPE AddRef(void) = 0;
virtual ULONG STDMETHODCALLTYPE Release(void) = 0;
virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) = 0;
virtual ULONG STDMETHODCALLTYPE AddRef(void) = 0;
virtual ULONG STDMETHODCALLTYPE Release(void) = 0;
};
#endif
#endif
#endif

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
/* DeckLink API */
#include <CoreFoundation/CoreFoundation.h>
@ -73,6 +77,9 @@ BMD_CONST REFIID IID_IDeckLinkMutableVideoFrame = /* 69E2639F-
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 +124,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
};
@ -163,10 +172,10 @@ enum _BMDDeckLinkCapturePassthroughMode {
typedef uint32_t BMDOutputFrameCompletionResult;
enum _BMDOutputFrameCompletionResult {
bmdOutputFrameCompleted,
bmdOutputFrameDisplayedLate,
bmdOutputFrameDropped,
bmdOutputFrameFlushed
bmdOutputFrameCompleted,
bmdOutputFrameDisplayedLate,
bmdOutputFrameDropped,
bmdOutputFrameFlushed
};
/* Enum BMDReferenceStatus - GenLock input status */
@ -203,9 +212,9 @@ enum _BMDAudioSampleType {
typedef uint32_t BMDAudioOutputStreamType;
enum _BMDAudioOutputStreamType {
bmdAudioOutputStreamContinuous,
bmdAudioOutputStreamContinuousDontResample,
bmdAudioOutputStreamTimestamped
bmdAudioOutputStreamContinuous,
bmdAudioOutputStreamContinuousDontResample,
bmdAudioOutputStreamTimestamped
};
/* Enum BMDDisplayModeSupport - Output mode supported flags */
@ -213,8 +222,17 @@ enum _BMDAudioOutputStreamType {
typedef uint32_t BMDDisplayModeSupport;
enum _BMDDisplayModeSupport {
bmdDisplayModeNotSupported = 0,
bmdDisplayModeSupported,
bmdDisplayModeSupportedWithConversion
bmdDisplayModeSupported,
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 */
@ -341,6 +359,37 @@ enum _BMDDeviceInterface {
typedef uint32_t BMDDeckLinkFrameMetadataID;
enum _BMDDeckLinkFrameMetadataID {
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 +401,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 */
@ -394,18 +451,19 @@ enum _BMDDeckLinkAttributeID {
/* 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 +517,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 +545,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;
@ -539,6 +608,9 @@ class IDeckLinkMutableVideoFrame;
class IDeckLinkVideoFrame3DExtensions;
class IDeckLinkVideoFrameMetadataExtensions;
class IDeckLinkVideoInputFrame;
class IDeckLinkAncillaryPacket;
class IDeckLinkAncillaryPacketIterator;
class IDeckLinkVideoFrameAncillaryPackets;
class IDeckLinkVideoFrameAncillary;
class IDeckLinkEncoderPacket;
class IDeckLinkEncoderVideoPacket;
@ -559,7 +631,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 +643,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 +655,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 +668,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 +680,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 +688,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 +696,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 +710,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 +725,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 +767,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;
@ -734,7 +806,7 @@ protected:
/* 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 +843,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 +854,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 +862,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 +878,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 +890,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 +904,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 +914,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 +973,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 +987,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 +1001,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 +1012,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 +1025,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 +1038,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 +1049,7 @@ protected:
/* Interface IDeckLinkCocoaScreenPreviewCallback - Screen preview callback for Cocoa-based applications */
class IDeckLinkCocoaScreenPreviewCallback : public IDeckLinkScreenPreviewCallback
class BMD_PUBLIC IDeckLinkCocoaScreenPreviewCallback : public IDeckLinkScreenPreviewCallback
{
public:
@ -944,7 +1059,7 @@ protected:
/* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
class IDeckLinkGLScreenPreviewHelper : public IUnknown
class BMD_PUBLIC IDeckLinkGLScreenPreviewHelper : public IUnknown
{
public:
@ -961,7 +1076,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 +1084,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 +1093,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 +1107,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 +1122,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 +1137,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 +1148,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 +1160,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 +1174,13 @@ protected:
extern "C" {
IDeckLinkIterator* CreateDeckLinkIteratorInstance (void);
IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance (void);
IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance (void);
IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void);
IDeckLinkCocoaScreenPreviewCallback* CreateCocoaScreenPreview (void* /* (NSView*) */ parentView);
IDeckLinkVideoConversion* CreateVideoConversionInstance (void);
IDeckLinkIterator* BMD_PUBLIC CreateDeckLinkIteratorInstance (void);
IDeckLinkDiscovery* BMD_PUBLIC CreateDeckLinkDiscoveryInstance (void);
IDeckLinkAPIInformation* BMD_PUBLIC CreateDeckLinkAPIInformationInstance (void);
IDeckLinkGLScreenPreviewHelper* BMD_PUBLIC CreateOpenGLScreenPreviewHelper (void);
IDeckLinkCocoaScreenPreviewCallback* BMD_PUBLIC CreateCocoaScreenPreview (void* /* (NSView*) */ parentView);
IDeckLinkVideoConversion* BMD_PUBLIC CreateVideoConversionInstance (void);
IDeckLinkVideoFrameAncillaryPackets* BMD_PUBLIC CreateVideoFrameAncillaryPacketsInstance (void); // For use when creating a custom IDeckLinkVideoFrame without wrapping IDeckLinkOutput::CreateVideoFrame
}

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,12 +37,16 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
// Interface ID Declarations
BMD_CONST REFIID IID_IDeckLinkConfiguration = /* CB71734A-FE37-4E8D-8E13-802133A1C3F2 */ {0xCB,0x71,0x73,0x4A,0xFE,0x37,0x4E,0x8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2};
BMD_CONST REFIID IID_IDeckLinkConfiguration = /* EF90380B-4AE5-4346-9077-E288E149F129 */ {0xEF,0x90,0x38,0x0B,0x4A,0xE5,0x43,0x46,0x90,0x77,0xE2,0x88,0xE1,0x49,0xF1,0x29};
BMD_CONST REFIID IID_IDeckLinkEncoderConfiguration = /* 138050E5-C60A-4552-BF3F-0F358049327E */ {0x13,0x80,0x50,0xE5,0xC6,0x0A,0x45,0x52,0xBF,0x3F,0x0F,0x35,0x80,0x49,0x32,0x7E};
/* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
@ -54,10 +58,6 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigSwapSerialRxTx = 'ssrt',
/* Video Input/Output Flags */
bmdDeckLinkConfigUse1080pNotPsF = 'fpro',
/* Video Input/Output Integers */
bmdDeckLinkConfigHDMI3DPackingFormat = '3dpf',
@ -78,6 +78,12 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigLowLatencyVideoOutput = 'llvo',
bmdDeckLinkConfigDownConversionOnAllAnalogOutput = 'caao',
bmdDeckLinkConfigSMPTELevelAOutput = 'smta',
bmdDeckLinkConfigRec2020Output = 'rec2', // Ensure output is Rec.2020 colorspace
bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit = 'SDQS',
/* Video Output Flags */
bmdDeckLinkConfigOutput1080pAsPsF = 'pfpr',
/* Video Output Integers */
@ -106,6 +112,10 @@ enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigUseDedicatedLTCInput = 'dltc', // Use timecode from LTC input instead of SDI stream
bmdDeckLinkConfigSDIInput3DPayloadOverride = '3dds',
/* Video Input Flags */
bmdDeckLinkConfigCapture1080pAsPsF = 'cfpr',
/* Video Input Integers */
bmdDeckLinkConfigVideoInputConnection = 'vicn',
@ -206,7 +216,7 @@ class IDeckLinkEncoderConfiguration;
/* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
class IDeckLinkConfiguration : public IUnknown
class BMD_PUBLIC IDeckLinkConfiguration : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;
@ -225,7 +235,7 @@ protected:
/* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
class IDeckLinkEncoderConfiguration : public IUnknown
class BMD_PUBLIC IDeckLinkEncoderConfiguration : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -0,0 +1,62 @@
/* -LICENSE-START-
** Copyright (c) 2017 Blackmagic Design
**
** Permission is hereby granted, free of charge, to any person or organization
** obtaining a copy of the software and accompanying documentation covered by
** this license (the "Software") to use, reproduce, display, distribute,
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
** DEALINGS IN THE SOFTWARE.
** -LICENSE-END-
*/
#ifndef BMD_DECKLINKAPICONFIGURATION_v10_9_H
#define BMD_DECKLINKAPICONFIGURATION_v10_9_H
#include "DeckLinkAPIConfiguration.h"
// Interface ID Declarations
BMD_CONST REFIID IID_IDeckLinkConfiguration_v10_9 = /* CB71734A-FE37-4E8D-8E13-802133A1C3F2 */ {0xCB,0x71,0x73,0x4A,0xFE,0x37,0x4E,0x8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2};
//
// Forward Declarations
class IDeckLinkConfiguration_v10_9;
/* Interface IDeckLinkConfiguration_v10_9 - DeckLink Configuration interface */
class IDeckLinkConfiguration_v10_9 : public IUnknown
{
public:
virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;
virtual HRESULT GetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ bool *value) = 0;
virtual HRESULT SetInt (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ int64_t value) = 0;
virtual HRESULT GetInt (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ int64_t *value) = 0;
virtual HRESULT SetFloat (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ double value) = 0;
virtual HRESULT GetFloat (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ double *value) = 0;
virtual HRESULT SetString (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ CFStringRef value) = 0;
virtual HRESULT GetString (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ CFStringRef *value) = 0;
virtual HRESULT WriteConfigurationToPreferences (void) = 0;
protected:
virtual ~IDeckLinkConfiguration_v10_9 () {} // call Release method to drop reference count
};
#endif /* defined(BMD_DECKLINKAPICONFIGURATION_v10_9_H) */

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -149,7 +153,7 @@ class IDeckLinkDeckControl;
/* Interface IDeckLinkDeckControlStatusCallback - Deck control state change callback. */
class IDeckLinkDeckControlStatusCallback : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControlStatusCallback : public IUnknown
{
public:
virtual HRESULT TimecodeUpdate (/* in */ BMDTimecodeBCD currentTimecode) = 0;
@ -163,7 +167,7 @@ protected:
/* Interface IDeckLinkDeckControl - Deck Control main interface */
class IDeckLinkDeckControl : public IUnknown
class BMD_PUBLIC IDeckLinkDeckControl : public IUnknown
{
public:
virtual HRESULT Open (/* in */ BMDTimeScale timeScale, /* in */ BMDTimeValue timeValue, /* in */ bool timecodeIsDropFrame, /* out */ BMDDeckControlError *error) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -50,7 +54,7 @@ class IDeckLink;
/* Interface IDeckLink - represents a DeckLink device */
class IDeckLink : public IUnknown
class BMD_PUBLIC IDeckLink : public IUnknown
{
public:
virtual HRESULT GetModelName (/* out */ CFStringRef *modelName) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -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;
void InitDeckLinkAPI (void)
@ -63,12 +65,13 @@ 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);
}
@ -79,70 +82,80 @@ bool IsDeckLinkAPIPresent (void)
// If the DeckLink API bundle was successfully loaded, return this knowledge to the caller
if (gDeckLinkAPIBundleRef != NULL)
return true;
return false;
}
IDeckLinkIterator* CreateDeckLinkIteratorInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateIteratorFunc == NULL)
return NULL;
return gCreateIteratorFunc();
}
IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateAPIInformationFunc == NULL)
return NULL;
return gCreateAPIInformationFunc();
}
IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateOpenGLPreviewFunc == NULL)
return NULL;
return gCreateOpenGLPreviewFunc();
}
IDeckLinkCocoaScreenPreviewCallback* CreateCocoaScreenPreview (void* parentView)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateCocoaPreviewFunc == NULL)
return NULL;
return gCreateCocoaPreviewFunc(parentView);
}
IDeckLinkVideoConversion* CreateVideoConversionInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateVideoConversionFunc == NULL)
return NULL;
return gCreateVideoConversionFunc();
}
IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateDeckLinkDiscoveryFunc == NULL)
return NULL;
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"
@ -164,7 +177,7 @@ void InitBMDStreamingAPI(void)
gBMDStreamingAPIBundleRef = CFBundleCreate(kCFAllocatorDefault, bundleURL);
if (gBMDStreamingAPIBundleRef != NULL)
{
gCreateDiscoveryFunc = (CreateDiscoveryFunc)CFBundleGetFunctionPointerForName(gBMDStreamingAPIBundleRef, CFSTR("CreateBMDStreamingDiscoveryInstance_0001"));
gCreateDiscoveryFunc = (CreateDiscoveryFunc)CFBundleGetFunctionPointerForName(gBMDStreamingAPIBundleRef, CFSTR("CreateBMDStreamingDiscoveryInstance_0002"));
gCreateNALParserFunc = (CreateNALParserFunc)CFBundleGetFunctionPointerForName(gBMDStreamingAPIBundleRef, CFSTR("CreateBMDStreamingH264NALParser_0001"));
}

View File

@ -0,0 +1,193 @@
/* -LICENSE-START-
** Copyright (c) 2009 Blackmagic Design
**
** Permission is hereby granted, free of charge, to any person or organization
** obtaining a copy of the software and accompanying documentation covered by
** this license (the "Software") to use, reproduce, display, distribute,
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
** DEALINGS IN THE SOFTWARE.
** -LICENSE-END-
*/
/* DeckLinkAPIDispatch.cpp */
#include "DeckLinkAPI.h"
#include <pthread.h>
#if BLACKMAGIC_DECKLINK_API_MAGIC != 1
#error The DeckLink API version of DeckLinkAPIDispatch.cpp is not the same version as DeckLinkAPI.h
#endif
#define kDeckLinkAPI_BundlePath "/Library/Frameworks/DeckLinkAPI.framework"
typedef IDeckLinkIterator* (*CreateIteratorFunc)(void);
typedef IDeckLinkAPIInformation* (*CreateAPIInformationFunc)(void);
typedef IDeckLinkGLScreenPreviewHelper* (*CreateOpenGLScreenPreviewHelperFunc)(void);
typedef IDeckLinkCocoaScreenPreviewCallback* (*CreateCocoaScreenPreviewFunc)(void*);
typedef IDeckLinkVideoConversion* (*CreateVideoConversionInstanceFunc)(void);
typedef IDeckLinkDiscovery* (*CreateDeckLinkDiscoveryInstanceFunc)(void);
static pthread_once_t gDeckLinkOnceControl = PTHREAD_ONCE_INIT;
static CFBundleRef gDeckLinkAPIBundleRef = NULL;
static CreateIteratorFunc gCreateIteratorFunc = NULL;
static CreateAPIInformationFunc gCreateAPIInformationFunc = NULL;
static CreateOpenGLScreenPreviewHelperFunc gCreateOpenGLPreviewFunc = NULL;
static CreateCocoaScreenPreviewFunc gCreateCocoaPreviewFunc = NULL;
static CreateVideoConversionInstanceFunc gCreateVideoConversionFunc = NULL;
static CreateDeckLinkDiscoveryInstanceFunc gCreateDeckLinkDiscoveryFunc = NULL;
void InitDeckLinkAPI(void)
{
CFURLRef bundleURL;
bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, CFSTR(kDeckLinkAPI_BundlePath), kCFURLPOSIXPathStyle, true);
if (bundleURL != NULL)
{
gDeckLinkAPIBundleRef = CFBundleCreate(kCFAllocatorDefault, bundleURL);
if (gDeckLinkAPIBundleRef != NULL)
{
gCreateIteratorFunc = (CreateIteratorFunc)CFBundleGetFunctionPointerForName(gDeckLinkAPIBundleRef, CFSTR("CreateDeckLinkIteratorInstance_0002"));
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"));
}
CFRelease(bundleURL);
}
}
bool IsDeckLinkAPIPresent(void)
{
// If the DeckLink API bundle was successfully loaded, return this knowledge to the caller
if (gDeckLinkAPIBundleRef != NULL)
return true;
return false;
}
IDeckLinkIterator* CreateDeckLinkIteratorInstance(void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateIteratorFunc == NULL)
return NULL;
return gCreateIteratorFunc();
}
IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance(void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateAPIInformationFunc == NULL)
return NULL;
return gCreateAPIInformationFunc();
}
IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper(void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateOpenGLPreviewFunc == NULL)
return NULL;
return gCreateOpenGLPreviewFunc();
}
IDeckLinkCocoaScreenPreviewCallback* CreateCocoaScreenPreview(void* parentView)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateCocoaPreviewFunc == NULL)
return NULL;
return gCreateCocoaPreviewFunc(parentView);
}
IDeckLinkVideoConversion* CreateVideoConversionInstance(void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateVideoConversionFunc == NULL)
return NULL;
return gCreateVideoConversionFunc();
}
IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance(void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateDeckLinkDiscoveryFunc == NULL)
return NULL;
return gCreateDeckLinkDiscoveryFunc();
}
#define kBMDStreamingAPI_BundlePath "/Library/Application Support/Blackmagic Design/Streaming/BMDStreamingAPI.bundle"
typedef IBMDStreamingDiscovery* (*CreateDiscoveryFunc)(void);
typedef IBMDStreamingH264NALParser* (*CreateNALParserFunc)(void);
static pthread_once_t gBMDStreamingOnceControl = PTHREAD_ONCE_INIT;
static CFBundleRef gBMDStreamingAPIBundleRef = NULL;
static CreateDiscoveryFunc gCreateDiscoveryFunc = NULL;
static CreateNALParserFunc gCreateNALParserFunc = NULL;
void InitBMDStreamingAPI(void)
{
CFURLRef bundleURL;
bundleURL = CFURLCreateWithFileSystemPath(kCFAllocatorDefault, CFSTR(kBMDStreamingAPI_BundlePath), kCFURLPOSIXPathStyle, true);
if (bundleURL != NULL)
{
gBMDStreamingAPIBundleRef = CFBundleCreate(kCFAllocatorDefault, bundleURL);
if (gBMDStreamingAPIBundleRef != NULL)
{
gCreateDiscoveryFunc = (CreateDiscoveryFunc)CFBundleGetFunctionPointerForName(gBMDStreamingAPIBundleRef, CFSTR("CreateBMDStreamingDiscoveryInstance_0001"));
gCreateNALParserFunc = (CreateNALParserFunc)CFBundleGetFunctionPointerForName(gBMDStreamingAPIBundleRef, CFSTR("CreateBMDStreamingH264NALParser_0001"));
}
CFRelease(bundleURL);
}
}
IBMDStreamingDiscovery* CreateBMDStreamingDiscoveryInstance()
{
pthread_once(&gBMDStreamingOnceControl, InitBMDStreamingAPI);
if (gCreateDiscoveryFunc == NULL)
return NULL;
return gCreateDiscoveryFunc();
}
IBMDStreamingH264NALParser* CreateBMDStreamingH264NALParser()
{
pthread_once(&gBMDStreamingOnceControl, InitBMDStreamingAPI);
if (gCreateNALParserFunc == NULL)
return NULL;
return gCreateNALParserFunc();
}

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -66,40 +66,40 @@ void InitDeckLinkAPI_v7_6 (void)
IDeckLinkIterator* CreateDeckLinkIteratorInstance_v7_6 (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI_v7_6);
if (gCreateIteratorFunc == NULL)
return NULL;
return gCreateIteratorFunc();
}
IDeckLinkGLScreenPreviewHelper_v7_6* CreateOpenGLScreenPreviewHelper_v7_6 (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI_v7_6);
if (gCreateOpenGLPreviewFunc == NULL)
return NULL;
return gCreateOpenGLPreviewFunc();
}
IDeckLinkCocoaScreenPreviewCallback_v7_6* CreateCocoaScreenPreview_v7_6 (void* parentView)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI_v7_6);
if (gCreateCocoaPreviewFunc == NULL)
return NULL;
return gCreateCocoaPreviewFunc(parentView);
}
IDeckLinkVideoConversion_v7_6* CreateVideoConversionInstance_v7_6 (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI_v7_6);
if (gCreateVideoConversionFunc == NULL)
return NULL;
return gCreateVideoConversionFunc();
}

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -75,57 +75,57 @@ bool IsDeckLinkAPIPresent (void)
// If the DeckLink API bundle was successfully loaded, return this knowledge to the caller
if (gDeckLinkAPIBundleRef != NULL)
return true;
return false;
}
IDeckLinkIterator_v8_0* CreateDeckLinkIteratorInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateIteratorFunc == NULL)
return NULL;
return gCreateIteratorFunc();
}
IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateAPIInformationFunc == NULL)
return NULL;
return gCreateAPIInformationFunc();
}
IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateOpenGLPreviewFunc == NULL)
return NULL;
return gCreateOpenGLPreviewFunc();
}
IDeckLinkCocoaScreenPreviewCallback* CreateCocoaScreenPreview (void* parentView)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateCocoaPreviewFunc == NULL)
return NULL;
return gCreateCocoaPreviewFunc(parentView);
}
IDeckLinkVideoConversion* CreateVideoConversionInstance (void)
{
pthread_once(&gDeckLinkOnceControl, InitDeckLinkAPI);
if (gCreateVideoConversionFunc == NULL)
return NULL;
return gCreateVideoConversionFunc();
}

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -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. */
@ -159,7 +205,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 +216,7 @@ protected:
/* Interface IDeckLinkDisplayMode - represents a display mode */
class IDeckLinkDisplayMode : public IUnknown
class BMD_PUBLIC IDeckLinkDisplayMode : public IUnknown
{
public:
virtual HRESULT GetName (/* out */ CFStringRef *name) = 0;

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
@ -92,8 +96,8 @@ enum _BMDStreamingEncodingFrameRate {
typedef uint32_t BMDStreamingEncodingSupport;
enum _BMDStreamingEncodingSupport {
bmdStreamingEncodingModeNotSupported = 0,
bmdStreamingEncodingModeSupported,
bmdStreamingEncodingModeSupportedWithChanges
bmdStreamingEncodingModeSupported,
bmdStreamingEncodingModeSupportedWithChanges
};
/* Enum BMDStreamingVideoCodec - Video codecs */
@ -188,7 +192,7 @@ class IBMDStreamingH264NALParser;
/* Interface IBMDStreamingDeviceNotificationCallback - Device notification callbacks. */
class IBMDStreamingDeviceNotificationCallback : public IUnknown
class BMD_PUBLIC IBMDStreamingDeviceNotificationCallback : public IUnknown
{
public:
virtual HRESULT StreamingDeviceArrived (/* in */ IDeckLink* device) = 0;
@ -201,7 +205,7 @@ protected:
/* Interface IBMDStreamingH264InputCallback - H264 input callbacks. */
class IBMDStreamingH264InputCallback : public IUnknown
class BMD_PUBLIC IBMDStreamingH264InputCallback : public IUnknown
{
public:
virtual HRESULT H264NALPacketArrived (/* in */ IBMDStreamingH264NALPacket* nalPacket) = 0;
@ -217,7 +221,7 @@ protected:
/* Interface IBMDStreamingDiscovery - Installs device notifications */
class IBMDStreamingDiscovery : public IUnknown
class BMD_PUBLIC IBMDStreamingDiscovery : public IUnknown
{
public:
virtual HRESULT InstallDeviceNotifications (/* in */ IBMDStreamingDeviceNotificationCallback* theCallback) = 0;
@ -229,7 +233,7 @@ protected:
/* Interface IBMDStreamingVideoEncodingMode - Represents an encoded video mode. */
class IBMDStreamingVideoEncodingMode : public IUnknown
class BMD_PUBLIC IBMDStreamingVideoEncodingMode : public IUnknown
{
public:
virtual HRESULT GetName (/* out */ CFStringRef *name) = 0;
@ -252,7 +256,7 @@ protected:
/* Interface IBMDStreamingMutableVideoEncodingMode - Represents a mutable encoded video mode. */
class IBMDStreamingMutableVideoEncodingMode : public IBMDStreamingVideoEncodingMode
class BMD_PUBLIC IBMDStreamingMutableVideoEncodingMode : public IBMDStreamingVideoEncodingMode
{
public:
virtual HRESULT SetSourceRect (/* in */ uint32_t posX, /* in */ uint32_t posY, /* in */ uint32_t width, /* in */ uint32_t height) = 0;
@ -268,7 +272,7 @@ protected:
/* Interface IBMDStreamingVideoEncodingModePresetIterator - Enumerates encoding mode presets */
class IBMDStreamingVideoEncodingModePresetIterator : public IUnknown
class BMD_PUBLIC IBMDStreamingVideoEncodingModePresetIterator : public IUnknown
{
public:
virtual HRESULT Next (/* out */ IBMDStreamingVideoEncodingMode** videoEncodingMode) = 0;
@ -279,7 +283,7 @@ protected:
/* Interface IBMDStreamingDeviceInput - Created by QueryInterface from IDeckLink */
class IBMDStreamingDeviceInput : public IUnknown
class BMD_PUBLIC IBMDStreamingDeviceInput : public IUnknown
{
public:
@ -309,7 +313,7 @@ protected:
/* Interface IBMDStreamingH264NALPacket - Represent an H.264 NAL packet */
class IBMDStreamingH264NALPacket : public IUnknown
class BMD_PUBLIC IBMDStreamingH264NALPacket : public IUnknown
{
public:
virtual long GetPayloadSize (void) = 0;
@ -324,7 +328,7 @@ protected:
/* Interface IBMDStreamingAudioPacket - Represents a chunk of audio data */
class IBMDStreamingAudioPacket : public IUnknown
class BMD_PUBLIC IBMDStreamingAudioPacket : public IUnknown
{
public:
virtual BMDStreamingAudioCodec GetCodec (void) = 0;
@ -339,7 +343,7 @@ protected:
/* Interface IBMDStreamingMPEG2TSPacket - Represent an MPEG2 Transport Stream packet */
class IBMDStreamingMPEG2TSPacket : public IUnknown
class BMD_PUBLIC IBMDStreamingMPEG2TSPacket : public IUnknown
{
public:
virtual long GetPayloadSize (void) = 0;
@ -351,7 +355,7 @@ protected:
/* Interface IBMDStreamingH264NALParser - For basic NAL parsing */
class IBMDStreamingH264NALParser : public IUnknown
class BMD_PUBLIC IBMDStreamingH264NALParser : public IUnknown
{
public:
virtual HRESULT IsNALSequenceParameterSet (/* in */ IBMDStreamingH264NALPacket* nal) = 0;
@ -366,8 +370,8 @@ protected:
extern "C" {
IBMDStreamingDiscovery* CreateBMDStreamingDiscoveryInstance (void);
IBMDStreamingH264NALParser* CreateBMDStreamingH264NALParser (void);
IBMDStreamingDiscovery* BMD_PUBLIC CreateBMDStreamingDiscoveryInstance (void);
IBMDStreamingH264NALParser* BMD_PUBLIC CreateBMDStreamingH264NALParser (void);
}

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,6 +37,10 @@
#endif
#endif
#ifndef BMD_PUBLIC
#define BMD_PUBLIC
#endif
// Type Declarations
typedef int64_t BMDTimeValue;
@ -54,7 +58,8 @@ typedef uint32_t BMDTimecodeFlags;
enum _BMDTimecodeFlags {
bmdTimecodeFlagDefault = 0,
bmdTimecodeIsDropFrame = 1 << 0,
bmdTimecodeFieldMark = 1 << 1
bmdTimecodeFieldMark = 1 << 1,
bmdTimecodeColorFrame = 1 << 2
};
/* Enum BMDVideoConnection - Video connection types */
@ -96,7 +101,7 @@ class IDeckLinkTimecode;
/* Interface IDeckLinkTimecode - Used for video frame timecode representation. */
class IDeckLinkTimecode : public IUnknown
class BMD_PUBLIC IDeckLinkTimecode : public IUnknown
{
public:
virtual BMDTimecodeBCD GetBCD (void) = 0;

View File

@ -7,14 +7,14 @@
* ** execute, and transmit the Software, and to prepare derivative works of the
* ** Software, and to permit third-parties to whom the Software is furnished to
* ** do so, all subject to the following:
* **
* **
* ** The copyright notices in the Software and this entire statement, including
* ** the above license grant, this restriction and the following disclaimer,
* ** must be included in all copies of the Software, in whole or in part, and
* ** all derivative works of the Software, unless such copies or derivative
* ** works are solely in the form of machine-executable object code generated by
* ** a source language processor.
* **
* **
* ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -30,7 +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 0x0a0b0000
#define BLACKMAGIC_DECKLINK_API_VERSION_STRING "10.11"
#endif // __DeckLink_API_Version_h__

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -37,7 +37,7 @@
typedef uint32_t BMDDeckLinkConfigurationID_v10_2;
enum _BMDDeckLinkConfigurationID_v10_2 {
/* Video output flags */
bmdDeckLinkConfig3GBpsVideoOutput_v10_2 = '3gbs',
};

View File

@ -0,0 +1,45 @@
/* -LICENSE-START-
** Copyright (c) 2017 Blackmagic Design
**
** Permission is hereby granted, free of charge, to any person or organization
** obtaining a copy of the software and accompanying documentation covered by
** this license (the "Software") to use, reproduce, display, distribute,
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
** DEALINGS IN THE SOFTWARE.
** -LICENSE-END-
*/
#ifndef BMD_DECKLINKAPI_v10_9_H
#define BMD_DECKLINKAPI_v10_9_H
#include "DeckLinkAPI.h"
// Type Declarations
/* Enum BMDDeckLinkAttributeID - DeckLink Attribute ID */
typedef uint32_t BMDDeckLinkConfigurationID_v10_9;
enum _BMDDeckLinkConfigurationID_v10_9 {
/* Flags */
bmdDeckLinkConfig1080pNotPsF_v10_9 = 'fpro',
};
#endif /* defined(BMD_DECKLINKAPI_v10_9_H) */

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -102,37 +102,37 @@ public:
// Display mode predicates
virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDDisplayModeSupport *result) = 0;
virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator (IDeckLinkDisplayModeIterator_v7_1* *iterator) = 0;
// Video output
virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput (BMDDisplayMode displayMode) = 0;
virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput () = 0;
virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator (IDeckLinkMemoryAllocator* theAllocator) = 0;
virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame (int32_t width, int32_t height, int32_t rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, IDeckLinkVideoFrame_v7_1* *outFrame) = 0;
virtual HRESULT STDMETHODCALLTYPE CreateVideoFrameFromBuffer (void* buffer, int32_t width, int32_t height, int32_t rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, IDeckLinkVideoFrame_v7_1* *outFrame) = 0;
virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync (IDeckLinkVideoFrame_v7_1* theFrame) = 0;
virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame (IDeckLinkVideoFrame_v7_1* theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale) = 0;
virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback (IDeckLinkVideoOutputCallback_v7_1* theCallback) = 0;
// Audio output
virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput (BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, uint32_t channelCount) = 0;
virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput () = 0;
virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync (void* buffer, uint32_t sampleFrameCount, uint32_t *sampleFramesWritten) = 0;
virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll () = 0;
virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll () = 0;
virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples (void* buffer, uint32_t sampleFrameCount, BMDTimeValue streamTime, BMDTimeScale timeScale, uint32_t *sampleFramesWritten) = 0;
virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount (uint32_t *bufferedSampleCount) = 0;
virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples () = 0;
virtual HRESULT STDMETHODCALLTYPE SetAudioCallback (IDeckLinkAudioOutputCallback* theCallback) = 0;
// Output control
virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback (BMDTimeValue playbackStartTime, BMDTimeScale timeScale, double playbackSpeed) = 0;
virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback (BMDTimeValue stopPlaybackAtTime, BMDTimeValue *actualStopTime, BMDTimeScale timeScale) = 0;
@ -145,17 +145,17 @@ class IDeckLinkInput_v7_1 : public IUnknown
public:
virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDDisplayModeSupport *result) = 0;
virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator (IDeckLinkDisplayModeIterator_v7_1 **iterator) = 0;
// Video input
virtual HRESULT STDMETHODCALLTYPE EnableVideoInput (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDVideoInputFlags flags) = 0;
virtual HRESULT STDMETHODCALLTYPE DisableVideoInput () = 0;
// Audio input
virtual HRESULT STDMETHODCALLTYPE EnableAudioInput (BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, uint32_t channelCount) = 0;
virtual HRESULT STDMETHODCALLTYPE DisableAudioInput () = 0;
virtual HRESULT STDMETHODCALLTYPE ReadAudioSamples (void* buffer, uint32_t sampleFrameCount, uint32_t *sampleFramesRead, BMDTimeValue *audioPacketTime, BMDTimeScale timeScale) = 0;
virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount (uint32_t *bufferedSampleCount) = 0;
// Input control
virtual HRESULT STDMETHODCALLTYPE StartStreams () = 0;
virtual HRESULT STDMETHODCALLTYPE StopStreams () = 0;
@ -188,7 +188,7 @@ class IDeckLinkAudioInputPacket_v7_1 : public IUnknown
public:
virtual long STDMETHODCALLTYPE GetSampleCount () = 0;
virtual HRESULT STDMETHODCALLTYPE GetBytes (void* *buffer) = 0;
virtual HRESULT STDMETHODCALLTYPE GetAudioPacketTime (BMDTimeValue *packetTime, BMDTimeScale timeScale) = 0;
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -356,49 +356,49 @@ class IDeckLinkConfiguration_v7_6 : public IUnknown
public:
virtual HRESULT GetConfigurationValidator (/* out */ IDeckLinkConfiguration_v7_6 **configObject) = 0;
virtual HRESULT WriteConfigurationToPreferences (void) = 0;
/* Video Output Configuration */
virtual HRESULT SetVideoOutputFormat (/* in */ BMDVideoConnection_v7_6 videoOutputConnection) = 0;
virtual HRESULT IsVideoOutputActive (/* in */ BMDVideoConnection_v7_6 videoOutputConnection, /* out */ bool *active) = 0;
virtual HRESULT SetAnalogVideoOutputFlags (/* in */ BMDAnalogVideoFlags analogVideoFlags) = 0;
virtual HRESULT GetAnalogVideoOutputFlags (/* out */ BMDAnalogVideoFlags *analogVideoFlags) = 0;
virtual HRESULT EnableFieldFlickerRemovalWhenPaused (/* in */ bool enable) = 0;
virtual HRESULT IsEnabledFieldFlickerRemovalWhenPaused (/* out */ bool *enabled) = 0;
virtual HRESULT Set444And3GBpsVideoOutput (/* in */ bool enable444VideoOutput, /* in */ bool enable3GbsOutput) = 0;
virtual HRESULT Get444And3GBpsVideoOutput (/* out */ bool *is444VideoOutputEnabled, /* out */ bool *threeGbsOutputEnabled) = 0;
virtual HRESULT SetVideoOutputConversionMode (/* in */ BMDVideoOutputConversionMode conversionMode) = 0;
virtual HRESULT GetVideoOutputConversionMode (/* out */ BMDVideoOutputConversionMode *conversionMode) = 0;
virtual HRESULT Set_HD1080p24_to_HD1080i5994_Conversion (/* in */ bool enable) = 0;
virtual HRESULT Get_HD1080p24_to_HD1080i5994_Conversion (/* out */ bool *enabled) = 0;
/* Video Input Configuration */
virtual HRESULT SetVideoInputFormat (/* in */ BMDVideoConnection_v7_6 videoInputFormat) = 0;
virtual HRESULT GetVideoInputFormat (/* out */ BMDVideoConnection_v7_6 *videoInputFormat) = 0;
virtual HRESULT SetAnalogVideoInputFlags (/* in */ BMDAnalogVideoFlags analogVideoFlags) = 0;
virtual HRESULT GetAnalogVideoInputFlags (/* out */ BMDAnalogVideoFlags *analogVideoFlags) = 0;
virtual HRESULT SetVideoInputConversionMode (/* in */ BMDVideoInputConversionMode conversionMode) = 0;
virtual HRESULT GetVideoInputConversionMode (/* out */ BMDVideoInputConversionMode *conversionMode) = 0;
virtual HRESULT SetBlackVideoOutputDuringCapture (/* in */ bool blackOutInCapture) = 0;
virtual HRESULT GetBlackVideoOutputDuringCapture (/* out */ bool *blackOutInCapture) = 0;
virtual HRESULT Set32PulldownSequenceInitialTimecodeFrame (/* in */ uint32_t aFrameTimecode) = 0;
virtual HRESULT Get32PulldownSequenceInitialTimecodeFrame (/* out */ uint32_t *aFrameTimecode) = 0;
virtual HRESULT SetVancSourceLineMapping (/* in */ uint32_t activeLine1VANCsource, /* in */ uint32_t activeLine2VANCsource, /* in */ uint32_t activeLine3VANCsource) = 0;
virtual HRESULT GetVancSourceLineMapping (/* out */ uint32_t *activeLine1VANCsource, /* out */ uint32_t *activeLine2VANCsource, /* out */ uint32_t *activeLine3VANCsource) = 0;
/* Audio Input Configuration */
virtual HRESULT SetAudioInputFormat (/* in */ BMDAudioConnection audioInputFormat) = 0;
virtual HRESULT GetAudioInputFormat (/* out */ BMDAudioConnection *audioInputFormat) = 0;
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -59,7 +59,7 @@ public:
virtual HRESULT VTRControlStateChanged (/* in */ BMDDeckControlVTRControlState_v8_1 newState, /* in */ BMDDeckControlError error) = 0;
virtual HRESULT DeckControlEventReceived (/* in */ BMDDeckControlEvent event, /* in */ BMDDeckControlError error) = 0;
virtual HRESULT DeckControlStatusChanged (/* in */ BMDDeckControlStatusFlags flags, /* in */ uint32_t mask) = 0;
protected:
virtual ~IDeckLinkDeckControlStatusCallback_v8_1 () {}; // call Release method to drop reference count
};
@ -102,7 +102,7 @@ public:
virtual HRESULT CrashRecordStart (/* out */ BMDDeckControlError *error) = 0;
virtual HRESULT CrashRecordStop (/* out */ BMDDeckControlError *error) = 0;
virtual HRESULT SetCallback (/* in */ IDeckLinkDeckControlStatusCallback_v8_1 *callback) = 0;
protected:
virtual ~IDeckLinkDeckControl_v8_1 () {}; // call Release method to drop reference count
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -47,51 +47,51 @@ class IDeckLinkOutput_v9_9 : public IUnknown
public:
virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoOutputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
virtual HRESULT GetDisplayModeIterator (/* out */ IDeckLinkDisplayModeIterator **iterator) = 0;
virtual HRESULT SetScreenPreviewCallback (/* in */ IDeckLinkScreenPreviewCallback *previewCallback) = 0;
/* Video Output */
virtual HRESULT EnableVideoOutput (/* in */ BMDDisplayMode displayMode, /* in */ BMDVideoOutputFlags flags) = 0;
virtual HRESULT DisableVideoOutput (void) = 0;
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 DisplayVideoFrameSync (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
virtual HRESULT ScheduleVideoFrame (/* in */ IDeckLinkVideoFrame *theFrame, /* in */ BMDTimeValue displayTime, /* in */ BMDTimeValue displayDuration, /* in */ BMDTimeScale timeScale) = 0;
virtual HRESULT SetScheduledFrameCompletionCallback (/* in */ IDeckLinkVideoOutputCallback *theCallback) = 0;
virtual HRESULT GetBufferedVideoFrameCount (/* out */ uint32_t *bufferedFrameCount) = 0;
/* Audio Output */
virtual HRESULT EnableAudioOutput (/* in */ BMDAudioSampleRate sampleRate, /* in */ BMDAudioSampleType sampleType, /* in */ uint32_t channelCount, /* in */ BMDAudioOutputStreamType streamType) = 0;
virtual HRESULT DisableAudioOutput (void) = 0;
virtual HRESULT WriteAudioSamplesSync (/* in */ void *buffer, /* in */ uint32_t sampleFrameCount, /* out */ uint32_t *sampleFramesWritten) = 0;
virtual HRESULT BeginAudioPreroll (void) = 0;
virtual HRESULT EndAudioPreroll (void) = 0;
virtual HRESULT ScheduleAudioSamples (/* in */ void *buffer, /* in */ uint32_t sampleFrameCount, /* in */ BMDTimeValue streamTime, /* in */ BMDTimeScale timeScale, /* out */ uint32_t *sampleFramesWritten) = 0;
virtual HRESULT GetBufferedAudioSampleFrameCount (/* out */ uint32_t *bufferedSampleFrameCount) = 0;
virtual HRESULT FlushBufferedAudioSamples (void) = 0;
virtual HRESULT SetAudioCallback (/* in */ IDeckLinkAudioOutputCallback *theCallback) = 0;
/* Output Control */
virtual HRESULT StartScheduledPlayback (/* in */ BMDTimeValue playbackStartTime, /* in */ BMDTimeScale timeScale, /* in */ double playbackSpeed) = 0;
virtual HRESULT StopScheduledPlayback (/* in */ BMDTimeValue stopPlaybackAtTime, /* out */ BMDTimeValue *actualStopTime, /* in */ BMDTimeScale timeScale) = 0;
virtual HRESULT IsScheduledPlaybackRunning (/* out */ bool *active) = 0;
virtual HRESULT GetScheduledStreamTime (/* in */ BMDTimeScale desiredTimeScale, /* out */ BMDTimeValue *streamTime, /* out */ double *playbackSpeed) = 0;
virtual HRESULT GetReferenceStatus (/* out */ BMDReferenceStatus *referenceStatus) = 0;
/* Hardware Timing */
virtual HRESULT GetHardwareReferenceClock (/* in */ BMDTimeScale desiredTimeScale, /* out */ BMDTimeValue *hardwareTime, /* out */ BMDTimeValue *timeInFrame, /* out */ BMDTimeValue *ticksPerFrame) = 0;
protected:
virtual ~IDeckLinkOutput_v9_9 () {}; // call Release method to drop reference count
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -95,9 +95,11 @@ typedef [v1_enum] enum _BMDPacketType {
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
};
@ -136,10 +138,10 @@ typedef [v1_enum] enum _BMDPacketType {
/* Enum BMDOutputFrameCompletionResult - Frame Completion Callback */
typedef [v1_enum] enum _BMDOutputFrameCompletionResult {
bmdOutputFrameCompleted,
bmdOutputFrameDisplayedLate,
bmdOutputFrameDropped,
bmdOutputFrameFlushed
bmdOutputFrameCompleted,
bmdOutputFrameDisplayedLate,
bmdOutputFrameDropped,
bmdOutputFrameFlushed
} BMDOutputFrameCompletionResult;
/* Enum BMDReferenceStatus - GenLock input status */
@ -171,19 +173,27 @@ typedef [v1_enum] enum _BMDAudioSampleType {
/* Enum BMDAudioOutputStreamType - Audio output stream type */
typedef [v1_enum] enum _BMDAudioOutputStreamType {
bmdAudioOutputStreamContinuous,
bmdAudioOutputStreamContinuousDontResample,
bmdAudioOutputStreamTimestamped
bmdAudioOutputStreamContinuous,
bmdAudioOutputStreamContinuousDontResample,
bmdAudioOutputStreamTimestamped
} BMDAudioOutputStreamType;
/* Enum BMDDisplayModeSupport - Output mode supported flags */
typedef [v1_enum] enum _BMDDisplayModeSupport {
bmdDisplayModeNotSupported = 0,
bmdDisplayModeSupported,
bmdDisplayModeSupportedWithConversion
bmdDisplayModeSupported,
bmdDisplayModeSupportedWithConversion
} BMDDisplayModeSupport;
/* Enum BMDAncillaryPacketFormat - Ancillary packet format */
typedef [v1_enum] enum _BMDAncillaryPacketFormat {
bmdAncillaryPacketFormatUInt8 = /* 'ui08' */ 0x75693038,
bmdAncillaryPacketFormatUInt16 = /* 'ui16' */ 0x75693136,
bmdAncillaryPacketFormatYCbCr10 = /* 'v210' */ 0x76323130
} BMDAncillaryPacketFormat;
/* Enum BMDTimecodeFormat - Timecode formats for frame metadata */
typedef [v1_enum] enum _BMDTimecodeFormat {
@ -296,6 +306,37 @@ typedef [v1_enum] enum _BMDDeviceInterface {
typedef [v1_enum] enum _BMDDeckLinkFrameMetadataID {
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
@ -307,7 +348,15 @@ typedef [v1_enum] 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
} BMDDeckLinkFrameMetadataID;
/* Enum BMDDuplexMode - Duplex for configurable ports */
@ -347,18 +396,19 @@ typedef [v1_enum] enum _BMDDeckLinkAttributeID {
/* 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,
@ -410,11 +460,14 @@ typedef [v1_enum] 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
} BMDDeckLinkStatusID;
/* Enum BMDDeckLinkVideoStatusFlags - */
@ -433,6 +486,13 @@ typedef [v1_enum] enum _BMDDuplexStatus {
bmdDuplexStatusInactive = /* 'inac' */ 0x696E6163
} BMDDuplexStatus;
/* Enum BMDPanelType - The type of interchangeable panel */
typedef [v1_enum] enum _BMDPanelType {
bmdPanelNotDetected = /* 'npnl' */ 0x6E706E6C,
bmdPanelTeranexMiniSmartPanel = /* 'tmsm' */ 0x746D736D
} BMDPanelType;
/* Enum BMDDeviceBusyState - Current device busy state */
[v1_enum] enum _BMDDeviceBusyState {
@ -482,6 +542,9 @@ interface IDeckLinkMutableVideoFrame;
interface IDeckLinkVideoFrame3DExtensions;
interface IDeckLinkVideoFrameMetadataExtensions;
interface IDeckLinkVideoInputFrame;
interface IDeckLinkAncillaryPacket;
interface IDeckLinkAncillaryPacketIterator;
interface IDeckLinkVideoFrameAncillaryPackets;
interface IDeckLinkVideoFrameAncillary;
interface IDeckLinkEncoderPacket;
interface IDeckLinkEncoderVideoPacket;
@ -542,7 +605,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(B36EB6E7-9D29-4AA8-92EF-843B87A289E8),
local,
local,
helpstring("Memory allocator for video frames.")
] interface IDeckLinkMemoryAllocator : IUnknown
{
@ -558,7 +621,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(403C681B-7F46-4A12-B993-2BB127084EE6),
local,
local,
helpstring("Optional callback to allow audio samples to be pulled as required.")
] interface IDeckLinkAudioOutputCallback : IUnknown
{
@ -595,7 +658,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(CC5C8A6E-3F2F-4B3A-87EA-FD78AF300564),
local,
local,
helpstring("Created by QueryInterface from IDeckLink.")
] interface IDeckLinkOutput : IUnknown
{
@ -611,7 +674,7 @@ interface IDeckLinkDiscovery;
HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);
HRESULT CreateVideoFrame([in] int width, [in] int height, [in] int rowBytes, [in] BMDPixelFormat pixelFormat, [in] BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame **outFrame);
HRESULT CreateAncillaryData([in] BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer);
HRESULT CreateAncillaryData([in] BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer); // Use of IDeckLinkVideoFrameAncillaryPackets is preferred
HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame *theFrame);
HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, [in] BMDTimeValue displayTime, [in] BMDTimeValue displayDuration, [in] BMDTimeScale timeScale);
@ -729,7 +792,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(3F716FE0-F023-4111-BE5D-EF4414C05B17),
local,
local,
helpstring("Interface to encapsulate a video frame; can be caller-implemented.")
] interface IDeckLinkVideoFrame : IUnknown
{
@ -741,7 +804,7 @@ interface IDeckLinkDiscovery;
HRESULT GetBytes([out] void **buffer);
HRESULT GetTimecode([in] BMDTimecodeFormat format, [out] IDeckLinkTimecode **timecode);
HRESULT GetAncillaryData([out] IDeckLinkVideoFrameAncillary **ancillary);
HRESULT GetAncillaryData([out] IDeckLinkVideoFrameAncillary **ancillary); // Use of IDeckLinkVideoFrameAncillaryPackets is preferred
};
/* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
@ -749,7 +812,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(69E2639F-40DA-4E19-B6F2-20ACE815C390),
local,
local,
helpstring("Created by IDeckLinkOutput::CreateVideoFrame.")
] interface IDeckLinkMutableVideoFrame : IDeckLinkVideoFrame
{
@ -766,7 +829,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7),
local,
local,
helpstring("Optional interface implemented on IDeckLinkVideoFrame to support 3D frames")
] interface IDeckLinkVideoFrame3DExtensions : IUnknown
{
@ -779,7 +842,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(D5973DC9-6432-46D0-8F0B-2496F8A1238F),
local,
local,
helpstring("Optional interface implemented on IDeckLinkVideoFrame to support frame metadata such as HDMI HDR information")
] interface IDeckLinkVideoFrameMetadataExtensions : IUnknown
{
@ -794,7 +857,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(05CFE374-537C-4094-9A57-680525118F44),
local,
local,
helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")
] interface IDeckLinkVideoInputFrame : IDeckLinkVideoFrame
{
@ -802,17 +865,61 @@ interface IDeckLinkDiscovery;
HRESULT GetHardwareReferenceTimestamp([in] BMDTimeScale timeScale, [out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration);
};
/* Interface IDeckLinkVideoFrameAncillary - Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
/* Interface IDeckLinkAncillaryPacket - On output, user needs to implement this interface */
[
object,
uuid(CC5BBF7E-029C-4D3B-9158-6000EF5E3670),
helpstring("On output, user needs to implement this interface")
] interface IDeckLinkAncillaryPacket : IUnknown
{
HRESULT GetBytes([in] BMDAncillaryPacketFormat format /* For output, only one format need be offered */, [out] const void **data /* Optional */, [out] unsigned int *size /* Optional */);
unsigned char GetDID(void);
unsigned char GetSDID(void);
unsigned int GetLineNumber(void); // On output, zero is auto
unsigned char GetDataStreamIndex(void); // Usually zero. Can only be 1 if non-SD and the first data stream is completely full
};
/* Interface IDeckLinkAncillaryPacketIterator - Enumerates ancillary packets */
[
object,
uuid(3FC8994B-88FB-4C17-968F-9AAB69D964A7),
helpstring("Enumerates ancillary packets")
] interface IDeckLinkAncillaryPacketIterator : IUnknown
{
HRESULT Next([out] IDeckLinkAncillaryPacket **packet);
};
/* Interface IDeckLinkVideoFrameAncillaryPackets - Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
[
object,
uuid(6C186C0F-459E-41D8-AEE2-4812D81AEE68),
local,
helpstring("Obtained through QueryInterface() on an IDeckLinkVideoFrame object.")
] interface IDeckLinkVideoFrameAncillaryPackets : IUnknown
{
HRESULT GetPacketIterator([out] IDeckLinkAncillaryPacketIterator **iterator);
HRESULT GetFirstPacketByID([in] unsigned char DID, [in] unsigned char SDID, [out] IDeckLinkAncillaryPacket **packet);
HRESULT AttachPacket([in] IDeckLinkAncillaryPacket *packet); // Implement IDeckLinkAncillaryPacket to output your own
HRESULT DetachPacket([in] IDeckLinkAncillaryPacket *packet);
HRESULT DetachAllPackets(void);
};
/* Interface IDeckLinkVideoFrameAncillary - Use of IDeckLinkVideoFrameAncillaryPackets is preferred. Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
[
object,
uuid(732E723C-D1A4-4E29-9E8E-4A88797A0004),
local,
helpstring("Obtained through QueryInterface() on an IDeckLinkVideoFrame object.")
local,
helpstring("Use of IDeckLinkVideoFrameAncillaryPackets is preferred. Obtained through QueryInterface() on an IDeckLinkVideoFrame object.")
] interface IDeckLinkVideoFrameAncillary : IUnknown
{
HRESULT GetBufferForVerticalBlankingLine([in] unsigned int lineNumber, [out] void **buffer);
HRESULT GetBufferForVerticalBlankingLine([in] unsigned int lineNumber, [out] void **buffer); // 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
BMDPixelFormat GetPixelFormat(void);
BMDDisplayMode GetDisplayMode(void);
};
@ -822,7 +929,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(B693F36C-316E-4AF1-B6C2-F389A4BCA620),
local,
local,
helpstring("Interface to encapsulate an encoded packet.")
] interface IDeckLinkEncoderPacket : IUnknown
{
@ -837,7 +944,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(4E7FD944-E8C7-4EAC-B8C0-7B77F80F5AE0),
local,
local,
helpstring("Provided by the IDeckLinkEncoderInput video packet arrival callback.")
] interface IDeckLinkEncoderVideoPacket : IDeckLinkEncoderPacket
{
@ -852,7 +959,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(49E8EDC8-693B-4E14-8EF6-12C658F5A07A),
local,
local,
helpstring("Provided by the IDeckLinkEncoderInput audio packet arrival callback.")
] interface IDeckLinkEncoderAudioPacket : IDeckLinkEncoderPacket
{
@ -864,7 +971,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(639C8E0B-68D5-4BDE-A6D4-95F3AEAFF2E7),
local,
local,
helpstring("Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object")
] interface IDeckLinkH265NALPacket : IDeckLinkEncoderVideoPacket
{
@ -878,7 +985,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(E43D5870-2894-11DE-8C30-0800200C9A66),
local,
local,
helpstring("Provided by the IDeckLinkInput callback.")
] interface IDeckLinkAudioInputPacket : IUnknown
{
@ -892,7 +999,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438),
local,
local,
helpstring("Screen preview callback")
] interface IDeckLinkScreenPreviewCallback : IUnknown
{
@ -904,7 +1011,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(504E2209-CAC7-4C1A-9FB4-C5BB6274D22F),
local,
local,
helpstring("Created with CoCreateInstance().")
] interface IDeckLinkGLScreenPreviewHelper : IUnknown
{
@ -922,7 +1029,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(2094B522-D1A1-40C0-9AC7-1C012218EF02),
local,
local,
helpstring("Created with CoCreateInstance().")
] interface IDeckLinkDX9ScreenPreviewHelper : IUnknown
{
@ -937,7 +1044,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(b002a1ec-070d-4288-8289-bd5d36e5ff0d),
local,
local,
helpstring("DeckLink Notification Callback Interface")
] interface IDeckLinkNotificationCallback : IUnknown
{
@ -949,7 +1056,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(0a1fb207-e215-441b-9b19-6fa1575946c5),
local,
local,
helpstring("DeckLink Notification interface")
] interface IDeckLinkNotification : IUnknown
{
@ -962,7 +1069,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(ABC11843-D966-44CB-96E2-A1CB5D3135C4),
local,
local,
helpstring("DeckLink Attribute interface")
] interface IDeckLinkAttributes : IUnknown
{
@ -977,7 +1084,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(5F558200-4028-49BC-BEAC-DB3FA4A96E46),
local,
local,
helpstring("DeckLink Status interface")
] interface IDeckLinkStatus : IUnknown
{
@ -993,7 +1100,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(89AFCAF5-65F8-421E-98F7-96FE5F5BFBA3),
local,
local,
helpstring("DeckLink Keyer interface")
] interface IDeckLinkKeyer : IUnknown
{
@ -1009,7 +1116,7 @@ interface IDeckLinkDiscovery;
[
object,
uuid(3BBCB8A2-DA2C-42D9-B5D8-88083644E99A),
local,
local,
helpstring("Created with CoCreateInstance().")
] interface IDeckLinkVideoConversion : IUnknown
{
@ -1045,7 +1152,7 @@ interface IDeckLinkDiscovery;
importlib("stdole2.tlb");
[
uuid(1F2E109A-8F4F-49E4-9203-135595CB6FA5),
uuid(87D2693F-8D4A-45C7-B43F-10ACBA25E68F),
helpstring("CDeckLinkIterator Class")
] coclass CDeckLinkIterator
{
@ -1085,15 +1192,26 @@ importlib("stdole2.tlb");
};
[
uuid(1073A05C-D885-47E9-B3C6-129B3F9F648B),
uuid(652615D4-26CD-4514-B161-2FD5072ED008),
helpstring("CDeckLinkDiscovery Class")
] coclass CDeckLinkDiscovery
{
[default] interface IDeckLinkDiscovery;
};
[
uuid(F891AD29-D0C2-46E9-A926-4E2D0DD8CFAD),
helpstring("CDeckLinkVideoFrameAncillaryPackets Class")
] coclass CDeckLinkVideoFrameAncillaryPackets
{
[default] interface IDeckLinkVideoFrameAncillaryPackets;
};
// import deprecated interfaces
#include "DeckLinkAPI_v10_9.idl"
#include "DeckLinkAPIStreaming_v10_8.idl"
#include "DeckLinkAPI_v10_8.idl"
#include "DeckLinkAPI_v10_6.idl"
#include "DeckLinkAPI_v10_5.idl"
#include "DeckLinkAPI_v10_4.idl"

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -50,10 +50,6 @@ typedef [v1_enum] enum _BMDDeckLinkConfigurationID {
bmdDeckLinkConfigSwapSerialRxTx = /* 'ssrt' */ 0x73737274,
/* Video Input/Output Flags */
bmdDeckLinkConfigUse1080pNotPsF = /* 'fpro' */ 0x6670726F,
/* Video Input/Output Integers */
bmdDeckLinkConfigHDMI3DPackingFormat = /* '3dpf' */ 0x33647066,
@ -74,6 +70,12 @@ typedef [v1_enum] 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 */
@ -102,6 +104,10 @@ typedef [v1_enum] 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,
@ -203,8 +209,8 @@ interface IDeckLinkEncoderConfiguration;
[
object,
uuid(CB71734A-FE37-4E8D-8E13-802133A1C3F2),
local,
uuid(EF90380B-4AE5-4346-9077-E288E149F129),
local,
helpstring("DeckLink Configuration interface")
] interface IDeckLinkConfiguration : IUnknown
{
@ -224,7 +230,7 @@ interface IDeckLinkEncoderConfiguration;
[
object,
uuid(138050E5-C60A-4552-BF3F-0F358049327E),
local,
local,
helpstring("DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput")
] interface IDeckLinkEncoderConfiguration : IUnknown
{

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -63,12 +63,12 @@ typedef [v1_enum] 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 */
@ -76,19 +76,24 @@ typedef [v1_enum] 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,
@ -99,11 +104,43 @@ typedef [v1_enum] 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 */
@ -136,7 +173,12 @@ typedef [v1_enum] 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
} BMDPixelFormat;
/* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -77,8 +77,8 @@ typedef [v1_enum] enum _BMDStreamingEncodingFrameRate {
typedef [v1_enum] enum _BMDStreamingEncodingSupport {
bmdStreamingEncodingModeNotSupported = 0,
bmdStreamingEncodingModeSupported,
bmdStreamingEncodingModeSupportedWithChanges
bmdStreamingEncodingModeSupported,
bmdStreamingEncodingModeSupportedWithChanges
} BMDStreamingEncodingSupport;
/* Enum BMDStreamingVideoCodec - Video codecs */
@ -346,7 +346,7 @@ interface IBMDStreamingH264NALParser;
importlib("stdole2.tlb");
[
uuid(0CAA31F6-8A26-40B0-86A4-BF58DCCA710C),
uuid(23A4EDF5-A0E5-432C-94EF-3BABB5F81C82),
helpstring("CBMDStreamingDiscovery Class")
] coclass CBMDStreamingDiscovery
{

View File

@ -0,0 +1,40 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
**
** Permission is hereby granted, free of charge, to any person or organization
** obtaining a copy of the software and accompanying documentation covered by
** this license (the "Software") to use, reproduce, display, distribute,
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
** DEALINGS IN THE SOFTWARE.
** -LICENSE-END-
*/
/* Coclasses */
importlib("stdole2.tlb");
[
uuid(0CAA31F6-8A26-40B0-86A4-BF58DCCA710C),
helpstring("CBMDStreamingDiscovery Class")
] coclass CBMDStreamingDiscovery_v10_8
{
[default] interface IBMDStreamingDiscovery;
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -53,7 +53,8 @@ cpp_quote("#endif")
[v1_enum] enum _BMDTimecodeFlags {
bmdTimecodeFlagDefault = 0,
bmdTimecodeIsDropFrame = 1 << 0,
bmdTimecodeFieldMark = 1 << 1
bmdTimecodeFieldMark = 1 << 1,
bmdTimecodeColorFrame = 1 << 2
};
/* Enum BMDVideoConnection - Video connection types */

View File

@ -7,14 +7,14 @@
* ** execute, and transmit the Software, and to prepare derivative works of the
* ** Software, and to permit third-parties to whom the Software is furnished to
* ** do so, all subject to the following:
* **
* **
* ** The copyright notices in the Software and this entire statement, including
* ** the above license grant, this restriction and the following disclaimer,
* ** must be included in all copies of the Software, in whole or in part, and
* ** all derivative works of the Software, unless such copies or derivative
* ** works are solely in the form of machine-executable object code generated by
* ** a source language processor.
* **
* **
* ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
* ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
* ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -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 0x0a0b0000
#define BLACKMAGIC_DECKLINK_API_VERSION_STRING "10.11"
#endif // __DeckLink_API_Version_h__

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -57,7 +57,7 @@ interface IDeckLinkConfiguration_v10_2;
[
object,
uuid(C679A35B-610C-4D09-B748-1D0478100FC0),
local,
local,
helpstring("DeckLink Configuration interface")
] interface IDeckLinkConfiguration_v10_2 : IUnknown
{

View File

@ -45,7 +45,7 @@ interface IDeckLinkEncoderConfiguration_v10_5;
[
object,
uuid(67455668-0848-45DF-8D8E-350A77C9A028),
local,
local,
helpstring("DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput")
] interface IDeckLinkEncoderConfiguration_v10_5 : IUnknown
{

View File

@ -0,0 +1,46 @@
/* -LICENSE-START-
** Copyright (c) 2016 Blackmagic Design
**
** Permission is hereby granted, free of charge, to any person or organization
** obtaining a copy of the software and accompanying documentation covered by
** this license (the "Software") to use, reproduce, display, distribute,
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
** DEALINGS IN THE SOFTWARE.
** -LICENSE-END-
*/
/* DeckLinkAPI_v10_8.idl */
importlib("stdole2.tlb");
[
uuid(1F2E109A-8F4F-49E4-9203-135595CB6FA5),
helpstring("CDeckLinkIterator_v10_8 Class")
] coclass CDeckLinkIterator_v10_8
{
[default] interface IDeckLinkIterator;
};
[
uuid(1073A05C-D885-47E9-B3C6-129B3F9F648B),
helpstring("CDeckLinkDiscovery_v10_8 Class")
] coclass CDeckLinkDiscovery_v10_8
{
[default] interface IDeckLinkDiscovery;
};

View File

@ -0,0 +1,61 @@
/* -LICENSE-START-
** Copyright (c) 2017 Blackmagic Design
**
** Permission is hereby granted, free of charge, to any person or organization
** obtaining a copy of the software and accompanying documentation covered by
** this license (the "Software") to use, reproduce, display, distribute,
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
** DEALINGS IN THE SOFTWARE.
** -LICENSE-END-
*/
/* DeckLinkAPI_v10_9.idl */
/* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
typedef [v1_enum] enum _BMDDeckLinkConfigurationID_v10_9 {
/* Video output flags */
bmdDeckLinkConfig1080pNotPsF_v10_9 = /* 'fpro' */ 0x6670726F,
} BMDDeckLinkConfigurationID_v10_9;
// Forward Declarations
interface IDeckLinkConfiguration_v10_9;
/* Interface IDeckLinkConfiguration_v10_9 - DeckLink Configuration interface */
[
object,
uuid(CB71734A-FE37-4E8D-8E13-802133A1C3F2),
local,
helpstring("DeckLink Configuration interface")
] interface IDeckLinkConfiguration_v10_9 : IUnknown
{
HRESULT SetFlag([in] BMDDeckLinkConfigurationID cfgID, [in] BOOL value);
HRESULT GetFlag([in] BMDDeckLinkConfigurationID cfgID, [out] BOOL *value);
HRESULT SetInt([in] BMDDeckLinkConfigurationID cfgID, [in] LONGLONG value);
HRESULT GetInt([in] BMDDeckLinkConfigurationID cfgID, [out] LONGLONG *value);
HRESULT SetFloat([in] BMDDeckLinkConfigurationID cfgID, [in] double value);
HRESULT GetFloat([in] BMDDeckLinkConfigurationID cfgID, [out] double *value);
HRESULT SetString([in] BMDDeckLinkConfigurationID cfgID, [in] BSTR value);
HRESULT GetString([in] BMDDeckLinkConfigurationID cfgID, [out] BSTR *value);
HRESULT WriteConfigurationToPreferences(void);
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -31,7 +31,7 @@
interface IDeckLinkVideoFrame_v7_1;
interface IDeckLinkVideoInputFrame_v7_1;
interface IDeckLinkAudioInputPacket_v7_1;
[object, uuid(B28131B6-59AC-4857-B5AC-CD75D5883E2F),
helpstring("IDeckLinkDisplayModeIterator_v7_1 enumerates over supported input/output display modes.")]
interface IDeckLinkDisplayModeIterator_v7_1 : IUnknown
@ -50,21 +50,21 @@
long GetHeight ();
HRESULT GetFrameRate ([out] BMDTimeValue *frameDuration, [out] BMDTimeScale *timeScale);
};
[object, uuid(EBD01AFA-E4B0-49C6-A01D-EDB9D1B55FD9),
helpstring("IDeckLinkVideoOutputCallback. Frame completion callback.")]
interface IDeckLinkVideoOutputCallback_v7_1 : IUnknown
{
HRESULT ScheduledFrameCompleted ([in] IDeckLinkVideoFrame_v7_1* completedFrame, [in] BMDOutputFrameCompletionResult result);
};
[object, uuid(7F94F328-5ED4-4E9F-9729-76A86BDC99CC),
helpstring("IDeckLinkInputCallback_v7_1. Frame arrival callback.")]
interface IDeckLinkInputCallback_v7_1 : IUnknown
{
HRESULT VideoInputFrameArrived ([in] IDeckLinkVideoInputFrame_v7_1* videoFrame, [in] IDeckLinkAudioInputPacket_v7_1* audioPacket);
};
[object, uuid(AE5B3E9B-4E1E-4535-B6E8-480FF52F6CE5), local,
helpstring("IDeckLinkOutput_v7_1. Created by QueryInterface from IDeckLink.")]
@ -72,11 +72,11 @@
{
HRESULT DoesSupportVideoMode (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
HRESULT GetDisplayModeIterator ([out] IDeckLinkDisplayModeIterator_v7_1 **iterator);
// Video output
HRESULT EnableVideoOutput (BMDDisplayMode displayMode);
HRESULT DisableVideoOutput ();
HRESULT SetVideoOutputFrameMemoryAllocator ([in] IDeckLinkMemoryAllocator* theAllocator);
HRESULT CreateVideoFrame (int width, int height, int rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, IDeckLinkVideoFrame_v7_1** outFrame);
HRESULT CreateVideoFrameFromBuffer (void* buffer, int width, int height, int rowBytes, BMDPixelFormat pixelFormat, BMDFrameFlags flags, IDeckLinkVideoFrame_v7_1** outFrame);
@ -84,22 +84,22 @@
HRESULT DisplayVideoFrameSync (IDeckLinkVideoFrame_v7_1* theFrame);
HRESULT ScheduleVideoFrame (IDeckLinkVideoFrame_v7_1* theFrame, BMDTimeValue displayTime, BMDTimeValue displayDuration, BMDTimeScale timeScale);
HRESULT SetScheduledFrameCompletionCallback ([in] IDeckLinkVideoOutputCallback_v7_1* theCallback);
// Audio output
HRESULT EnableAudioOutput (BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned int channelCount);
HRESULT DisableAudioOutput ();
HRESULT WriteAudioSamplesSync (void* buffer, unsigned int sampleFrameCount, [out] unsigned int *sampleFramesWritten);
HRESULT BeginAudioPreroll ();
HRESULT EndAudioPreroll ();
HRESULT ScheduleAudioSamples (void* buffer, unsigned int sampleFrameCount, BMDTimeValue streamTime, BMDTimeScale timeScale, [out] unsigned int *sampleFramesWritten);
HRESULT GetBufferedAudioSampleFrameCount ( [out] unsigned int *bufferedSampleCount);
HRESULT FlushBufferedAudioSamples ();
HRESULT SetAudioCallback ( [in] IDeckLinkAudioOutputCallback* theCallback);
// Output control
HRESULT StartScheduledPlayback (BMDTimeValue playbackStartTime, BMDTimeScale timeScale, double playbackSpeed);
HRESULT StopScheduledPlayback (BMDTimeValue stopPlaybackAtTime, BMDTimeValue *actualStopTime, BMDTimeScale timeScale);
@ -112,24 +112,24 @@
{
HRESULT DoesSupportVideoMode (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, [out] BMDDisplayModeSupport *result);
HRESULT GetDisplayModeIterator ([out] IDeckLinkDisplayModeIterator_v7_1 **iterator);
// Video input
HRESULT EnableVideoInput (BMDDisplayMode displayMode, BMDPixelFormat pixelFormat, BMDVideoInputFlags flags);
HRESULT DisableVideoInput ();
// Audio input
HRESULT EnableAudioInput (BMDAudioSampleRate sampleRate, BMDAudioSampleType sampleType, unsigned int channelCount);
HRESULT DisableAudioInput ();
HRESULT ReadAudioSamples (void* buffer, unsigned int sampleFrameCount, [out] unsigned int *sampleFramesRead, [out] BMDTimeValue *audioPacketTime, BMDTimeScale timeScale);
HRESULT GetBufferedAudioSampleFrameCount ( [out] unsigned int *bufferedSampleCount);
// Input control
HRESULT StartStreams ();
HRESULT StopStreams ();
HRESULT PauseStreams ();
HRESULT SetCallback ([in] IDeckLinkInputCallback_v7_1* theCallback);
};
[object, uuid(333F3A10-8C2D-43CF-B79D-46560FEEA1CE), local,
helpstring("IDeckLinkVideoFrame_v7_1. Created by IDeckLinkVideoOutput::CreateVideoFrame.")]
interface IDeckLinkVideoFrame_v7_1 : IUnknown
@ -141,14 +141,14 @@
BMDFrameFlags GetFlags ();
HRESULT GetBytes (void* *buffer);
};
[object, uuid(C8B41D95-8848-40EE-9B37-6E3417FB114B), local,
helpstring("IDeckLinkVideoInputFrame_v7_1. Provided by the IDeckLinkVideoInput frame arrival callback.")]
interface IDeckLinkVideoInputFrame_v7_1 : IDeckLinkVideoFrame_v7_1
{
HRESULT GetFrameTime (BMDTimeValue *frameTime, BMDTimeValue *frameDuration, BMDTimeScale timeScale);
};
[object, uuid(C86DE4F6-A29F-42E3-AB3A-1363E29F0788), local,
helpstring("IDeckLinkAudioInputPacket_v7_1. Provided by the IDeckLinkInput callback.")]
interface IDeckLinkAudioInputPacket_v7_1 : IUnknown
@ -157,4 +157,4 @@
HRESULT GetBytes (void* *buffer);
HRESULT GetAudioPacketTime (BMDTimeValue *packetTime, BMDTimeScale timeScale);
};

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -55,7 +55,7 @@ interface IDeckLinkVideoInputFrame_v7_3;
[
object,
uuid(271C65E3-C323-4344-A30F-D908BCB20AA3),
local,
local,
helpstring("Created by QueryInterface from IDeckLink.")
] interface IDeckLinkOutput_v7_3 : IUnknown
{
@ -146,7 +146,7 @@ interface IDeckLinkVideoInputFrame_v7_3;
[
object,
uuid(CF317790-2894-11DE-8C30-0800200C9A66),
local,
local,
helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")
] interface IDeckLinkVideoInputFrame_v7_3 : IDeckLinkVideoFrame_v7_6
{

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -114,7 +114,7 @@ interface IDeckLinkConfiguration_v7_6;
[
object,
uuid(29228142-EB8C-4141-A621-F74026450955),
local,
local,
helpstring("Created by QueryInterface from IDeckLink.")
] interface IDeckLinkOutput_v7_6 : IUnknown
{
@ -225,7 +225,7 @@ interface IDeckLinkConfiguration_v7_6;
[
object,
uuid(A8D8238E-6B18-4196-99E1-5AF717B83D32),
local,
local,
helpstring("Interface to encapsulate a video frame; can be caller-implemented.")
] interface IDeckLinkVideoFrame_v7_6 : IUnknown
{
@ -246,7 +246,7 @@ interface IDeckLinkConfiguration_v7_6;
[
object,
uuid(46FCEE00-B4E6-43D0-91C0-023A7FCEB34F),
local,
local,
helpstring("Created by IDeckLinkOutput::CreateVideoFrame.")
] interface IDeckLinkMutableVideoFrame_v7_6 : IDeckLinkVideoFrame_v7_6
{
@ -263,7 +263,7 @@ interface IDeckLinkConfiguration_v7_6;
[
object,
uuid(9A74FA41-AE9F-47AC-8CF4-01F42DD59965),
local,
local,
helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")
] interface IDeckLinkVideoInputFrame_v7_6 : IDeckLinkVideoFrame_v7_6
{
@ -277,7 +277,7 @@ interface IDeckLinkConfiguration_v7_6;
[
object,
uuid(373F499D-4B4D-4518-AD22-6354E5A5825E),
local,
local,
helpstring("Screen preview callback")
] interface IDeckLinkScreenPreviewCallback_v7_6 : IUnknown
{
@ -290,7 +290,7 @@ interface IDeckLinkConfiguration_v7_6;
[
object,
uuid(BA575CD9-A15E-497B-B2C2-F9AFE7BE4EBA),
local,
local,
helpstring("Created with CoCreateInstance().")
] interface IDeckLinkGLScreenPreviewHelper_v7_6 : IUnknown
{
@ -308,7 +308,7 @@ interface IDeckLinkConfiguration_v7_6;
[
object,
uuid(3EB504C9-F97D-40FE-A158-D407D48CB53B),
local,
local,
helpstring("Created with CoCreateInstance().")
] interface IDeckLinkVideoConversion_v7_6 : IUnknown
{

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT

View File

@ -7,14 +7,14 @@
** execute, and transmit the Software, and to prepare derivative works of the
** Software, and to permit third-parties to whom the Software is furnished to
** do so, all subject to the following:
**
**
** The copyright notices in the Software and this entire statement, including
** the above license grant, this restriction and the following disclaimer,
** must be included in all copies of the Software, in whole or in part, and
** all derivative works of the Software, unless such copies or derivative
** works are solely in the form of machine-executable object code generated by
** a source language processor.
**
**
** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@ -33,7 +33,7 @@
[
object,
uuid(A3EF0963-0862-44ED-92A9-EE89ABF431C7),
local,
local,
helpstring("Created by QueryInterface from IDeckLink.")
] interface IDeckLinkOutput_v9_9 : IUnknown
{