]> git.sesse.net Git - nageru/commitdiff
Upgrade DeckLink SDK to 10.11.4.
authorSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 3 Jun 2020 21:40:37 +0000 (23:40 +0200)
committerSteinar H. Gunderson <sgunderson@bigfoot.com>
Wed, 3 Jun 2020 21:45:52 +0000 (23:45 +0200)
This is the oldest version that supports the duplex information
used in the next patch.

nageru/decklink/DeckLinkAPI.h [changed mode: 0755->0644]
nageru/decklink/DeckLinkAPIConfiguration.h
nageru/decklink/DeckLinkAPIDeckControl.h
nageru/decklink/DeckLinkAPIDiscovery.h
nageru/decklink/DeckLinkAPIModes.h
nageru/decklink/DeckLinkAPITypes.h
nageru/decklink/LinuxCOM.h
nageru/decklink_output.cpp

old mode 100755 (executable)
new mode 100644 (file)
index 2a0f90a..e113fc3
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2015 Blackmagic Design
+** Copyright (c) 2018 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
     #endif
 #endif
 
+#ifndef BMD_PUBLIC
+       #define BMD_PUBLIC
+#endif
+
 /* DeckLink API */
 
 #include <stdint.h>
@@ -64,11 +68,16 @@ BMD_CONST REFIID IID_IDeckLinkIterator                            = /* 50FB36CD-
 BMD_CONST REFIID IID_IDeckLinkAPIInformation                      = /* 7BEA3C68-730D-4322-AF34-8A7152B532A4 */ {0x7B,0xEA,0x3C,0x68,0x73,0x0D,0x43,0x22,0xAF,0x34,0x8A,0x71,0x52,0xB5,0x32,0xA4};
 BMD_CONST REFIID IID_IDeckLinkOutput                              = /* CC5C8A6E-3F2F-4B3A-87EA-FD78AF300564 */ {0xCC,0x5C,0x8A,0x6E,0x3F,0x2F,0x4B,0x3A,0x87,0xEA,0xFD,0x78,0xAF,0x30,0x05,0x64};
 BMD_CONST REFIID IID_IDeckLinkInput                               = /* AF22762B-DFAC-4846-AA79-FA8883560995 */ {0xAF,0x22,0x76,0x2B,0xDF,0xAC,0x48,0x46,0xAA,0x79,0xFA,0x88,0x83,0x56,0x09,0x95};
+BMD_CONST REFIID IID_IDeckLinkHDMIInputEDID                       = /* ABBBACBC-45BC-4665-9D92-ACE6E5A97902 */ {0xAB,0xBB,0xAC,0xBC,0x45,0xBC,0x46,0x65,0x9D,0x92,0xAC,0xE6,0xE5,0xA9,0x79,0x02};
 BMD_CONST REFIID IID_IDeckLinkEncoderInput                        = /* 270587DA-6B7D-42E7-A1F0-6D853F581185 */ {0x27,0x05,0x87,0xDA,0x6B,0x7D,0x42,0xE7,0xA1,0xF0,0x6D,0x85,0x3F,0x58,0x11,0x85};
 BMD_CONST REFIID IID_IDeckLinkVideoFrame                          = /* 3F716FE0-F023-4111-BE5D-EF4414C05B17 */ {0x3F,0x71,0x6F,0xE0,0xF0,0x23,0x41,0x11,0xBE,0x5D,0xEF,0x44,0x14,0xC0,0x5B,0x17};
 BMD_CONST REFIID IID_IDeckLinkMutableVideoFrame                   = /* 69E2639F-40DA-4E19-B6F2-20ACE815C390 */ {0x69,0xE2,0x63,0x9F,0x40,0xDA,0x4E,0x19,0xB6,0xF2,0x20,0xAC,0xE8,0x15,0xC3,0x90};
 BMD_CONST REFIID IID_IDeckLinkVideoFrame3DExtensions              = /* DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7 */ {0xDA,0x0F,0x7E,0x4A,0xED,0xC7,0x48,0xA8,0x9C,0xDD,0x2D,0xB5,0x1C,0x72,0x9C,0xD7};
+BMD_CONST REFIID IID_IDeckLinkVideoFrameMetadataExtensions        = /* D5973DC9-6432-46D0-8F0B-2496F8A1238F */ {0xD5,0x97,0x3D,0xC9,0x64,0x32,0x46,0xD0,0x8F,0x0B,0x24,0x96,0xF8,0xA1,0x23,0x8F};
 BMD_CONST REFIID IID_IDeckLinkVideoInputFrame                     = /* 05CFE374-537C-4094-9A57-680525118F44 */ {0x05,0xCF,0xE3,0x74,0x53,0x7C,0x40,0x94,0x9A,0x57,0x68,0x05,0x25,0x11,0x8F,0x44};
+BMD_CONST REFIID IID_IDeckLinkAncillaryPacket                     = /* CC5BBF7E-029C-4D3B-9158-6000EF5E3670 */ {0xCC,0x5B,0xBF,0x7E,0x02,0x9C,0x4D,0x3B,0x91,0x58,0x60,0x00,0xEF,0x5E,0x36,0x70};
+BMD_CONST REFIID IID_IDeckLinkAncillaryPacketIterator             = /* 3FC8994B-88FB-4C17-968F-9AAB69D964A7 */ {0x3F,0xC8,0x99,0x4B,0x88,0xFB,0x4C,0x17,0x96,0x8F,0x9A,0xAB,0x69,0xD9,0x64,0xA7};
+BMD_CONST REFIID IID_IDeckLinkVideoFrameAncillaryPackets          = /* 6C186C0F-459E-41D8-AEE2-4812D81AEE68 */ {0x6C,0x18,0x6C,0x0F,0x45,0x9E,0x41,0xD8,0xAE,0xE2,0x48,0x12,0xD8,0x1A,0xEE,0x68};
 BMD_CONST REFIID IID_IDeckLinkVideoFrameAncillary                 = /* 732E723C-D1A4-4E29-9E8E-4A88797A0004 */ {0x73,0x2E,0x72,0x3C,0xD1,0xA4,0x4E,0x29,0x9E,0x8E,0x4A,0x88,0x79,0x7A,0x00,0x04};
 BMD_CONST REFIID IID_IDeckLinkEncoderPacket                       = /* B693F36C-316E-4AF1-B6C2-F389A4BCA620 */ {0xB6,0x93,0xF3,0x6C,0x31,0x6E,0x4A,0xF1,0xB6,0xC2,0xF3,0x89,0xA4,0xBC,0xA6,0x20};
 BMD_CONST REFIID IID_IDeckLinkEncoderVideoPacket                  = /* 4E7FD944-E8C7-4EAC-B8C0-7B77F80F5AE0 */ {0x4E,0x7F,0xD9,0x44,0xE8,0xC7,0x4E,0xAC,0xB8,0xC0,0x7B,0x77,0xF8,0x0F,0x5A,0xE0};
@@ -80,6 +89,7 @@ BMD_CONST REFIID IID_IDeckLinkGLScreenPreviewHelper               = /* 504E2209-
 BMD_CONST REFIID IID_IDeckLinkNotificationCallback                = /* B002A1EC-070D-4288-8289-BD5D36E5FF0D */ {0xB0,0x02,0xA1,0xEC,0x07,0x0D,0x42,0x88,0x82,0x89,0xBD,0x5D,0x36,0xE5,0xFF,0x0D};
 BMD_CONST REFIID IID_IDeckLinkNotification                        = /* 0A1FB207-E215-441B-9B19-6FA1575946C5 */ {0x0A,0x1F,0xB2,0x07,0xE2,0x15,0x44,0x1B,0x9B,0x19,0x6F,0xA1,0x57,0x59,0x46,0xC5};
 BMD_CONST REFIID IID_IDeckLinkAttributes                          = /* ABC11843-D966-44CB-96E2-A1CB5D3135C4 */ {0xAB,0xC1,0x18,0x43,0xD9,0x66,0x44,0xCB,0x96,0xE2,0xA1,0xCB,0x5D,0x31,0x35,0xC4};
+BMD_CONST REFIID IID_IDeckLinkStatus                              = /* 5F558200-4028-49BC-BEAC-DB3FA4A96E46 */ {0x5F,0x55,0x82,0x00,0x40,0x28,0x49,0xBC,0xBE,0xAC,0xDB,0x3F,0xA4,0xA9,0x6E,0x46};
 BMD_CONST REFIID IID_IDeckLinkKeyer                               = /* 89AFCAF5-65F8-421E-98F7-96FE5F5BFBA3 */ {0x89,0xAF,0xCA,0xF5,0x65,0xF8,0x42,0x1E,0x98,0xF7,0x96,0xFE,0x5F,0x5B,0xFB,0xA3};
 BMD_CONST REFIID IID_IDeckLinkVideoConversion                     = /* 3BBCB8A2-DA2C-42D9-B5D8-88083644E99A */ {0x3B,0xBC,0xB8,0xA2,0xDA,0x2C,0x42,0xD9,0xB5,0xD8,0x88,0x08,0x36,0x44,0xE9,0x9A};
 BMD_CONST REFIID IID_IDeckLinkDeviceNotificationCallback          = /* 4997053B-0ADF-4CC8-AC70-7A50C4BE728F */ {0x49,0x97,0x05,0x3B,0x0A,0xDF,0x4C,0xC8,0xAC,0x70,0x7A,0x50,0xC4,0xBE,0x72,0x8F};
@@ -110,9 +120,12 @@ typedef uint32_t BMDFrameFlags;
 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
 };
 
@@ -147,6 +160,7 @@ enum _BMDDetectedVideoInputFormatFlags {
 
 typedef uint32_t BMDDeckLinkCapturePassthroughMode;
 enum _BMDDeckLinkCapturePassthroughMode {
+    bmdDeckLinkCapturePassthroughModeDisabled                    = /* 'pdis' */ 0x70646973,
     bmdDeckLinkCapturePassthroughModeDirect                      = /* 'pdir' */ 0x70646972,
     bmdDeckLinkCapturePassthroughModeCleanSwitch                 = /* 'pcln' */ 0x70636C6E
 };
@@ -209,6 +223,15 @@ enum _BMDDisplayModeSupport {
     bmdDisplayModeSupportedWithConversion                       
 };
 
+/* Enum BMDAncillaryPacketFormat - Ancillary packet format */
+
+typedef uint32_t BMDAncillaryPacketFormat;
+enum _BMDAncillaryPacketFormat {
+    bmdAncillaryPacketFormatUInt8                                = /* 'ui08' */ 0x75693038,
+    bmdAncillaryPacketFormatUInt16                               = /* 'ui16' */ 0x75693136,
+    bmdAncillaryPacketFormatYCbCr10                              = /* 'v210' */ 0x76323130
+};
+
 /* Enum BMDTimecodeFormat - Timecode formats for frame metadata */
 
 typedef uint32_t BMDTimecodeFormat;
@@ -288,8 +311,7 @@ enum _BMDVideo3DPackingFormat {
 typedef uint32_t BMDIdleVideoOutputOperation;
 enum _BMDIdleVideoOutputOperation {
     bmdIdleVideoOutputBlack                                      = /* 'blac' */ 0x626C6163,
-    bmdIdleVideoOutputLastFrame                                  = /* 'lafa' */ 0x6C616661,
-    bmdIdleVideoOutputDesktop                                    = /* 'desk' */ 0x6465736B
+    bmdIdleVideoOutputLastFrame                                  = /* 'lafa' */ 0x6C616661
 };
 
 /* Enum BMDVideoEncoderFrameCodingMode - Video frame coding mode */
@@ -329,6 +351,98 @@ enum _BMDDeviceInterface {
     bmdDeviceInterfaceThunderbolt                                = /* 'thun' */ 0x7468756E
 };
 
+/* Enum BMDColorspace - Colorspace */
+
+typedef uint32_t BMDColorspace;
+enum _BMDColorspace {
+    bmdColorspaceRec601                                          = /* 'r601' */ 0x72363031,
+    bmdColorspaceRec709                                          = /* 'r709' */ 0x72373039,
+    bmdColorspaceRec2020                                         = /* '2020' */ 0x32303230
+};
+
+/* Enum BMDDynamicRange - SDR or HDR */
+
+typedef uint32_t BMDDynamicRange;
+enum _BMDDynamicRange {
+    bmdDynamicRangeSDR                                           = 0,
+    bmdDynamicRangeHDRStaticPQ                                   = 1 << 29,    // SMPTE ST 2084
+    bmdDynamicRangeHDRStaticHLG                                  = 1 << 30     // ITU-R BT.2100-0
+};
+
+/* Enum BMDDeckLinkHDMIInputEDIDID - DeckLink HDMI Input EDID ID */
+
+typedef uint32_t BMDDeckLinkHDMIInputEDIDID;
+enum _BMDDeckLinkHDMIInputEDIDID {
+    bmdDeckLinkHDMIInputEDIDDynamicRange                         = /* 'HIDy' */ 0x48494479     // Parameter is of type BMDDynamicRange. Default is (bmdDynamicRangeSDR|bmdDynamicRangeHDRStaticPQ)
+};
+
+/* Enum BMDDeckLinkFrameMetadataID - DeckLink Frame Metadata ID */
+
+typedef uint32_t BMDDeckLinkFrameMetadataID;
+enum _BMDDeckLinkFrameMetadataID {
+    bmdDeckLinkFrameMetadataColorspace                           = /* 'cspc' */ 0x63737063,    // Colorspace of video frame (see BMDColorspace)
+    bmdDeckLinkFrameMetadataHDRElectroOpticalTransferFunc        = /* 'eotf' */ 0x656F7466,    // EOTF in range 0-7 as per CEA 861.3
+    bmdDeckLinkFrameMetadataCintelFilmType                       = /* 'cfty' */ 0x63667479,    // Current film type
+    bmdDeckLinkFrameMetadataCintelFilmGauge                      = /* 'cfga' */ 0x63666761,    // Current film gauge
+    bmdDeckLinkFrameMetadataCintelOffsetDetectedHorizontal       = /* 'odfh' */ 0x6F646668,    // Horizontal offset (pixels) detected in image
+    bmdDeckLinkFrameMetadataCintelOffsetDetectedVertical         = /* 'odfv' */ 0x6F646676,    // Vertical offset (pixels) detected in image
+    bmdDeckLinkFrameMetadataCintelKeykodeLow                     = /* 'ckkl' */ 0x636B6B6C,    // Raw keykode value - low 64 bits
+    bmdDeckLinkFrameMetadataCintelKeykodeHigh                    = /* 'ckkh' */ 0x636B6B68,    // Raw keykode value - high 64 bits
+    bmdDeckLinkFrameMetadataCintelTile1Size                      = /* 'ct1s' */ 0x63743173,    // Size in bytes of compressed raw tile 1
+    bmdDeckLinkFrameMetadataCintelTile2Size                      = /* 'ct2s' */ 0x63743273,    // Size in bytes of compressed raw tile 2
+    bmdDeckLinkFrameMetadataCintelTile3Size                      = /* 'ct3s' */ 0x63743373,    // Size in bytes of compressed raw tile 3
+    bmdDeckLinkFrameMetadataCintelTile4Size                      = /* 'ct4s' */ 0x63743473,    // Size in bytes of compressed raw tile 4
+    bmdDeckLinkFrameMetadataCintelImageWidth                     = /* 'IWPx' */ 0x49575078,    // Width in pixels of image
+    bmdDeckLinkFrameMetadataCintelImageHeight                    = /* 'IHPx' */ 0x49485078,    // Height in pixels of image
+    bmdDeckLinkFrameMetadataCintelLinearMaskingRedInRed          = /* 'mrir' */ 0x6D726972,    // Red in red linear masking parameter
+    bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInRed        = /* 'mgir' */ 0x6D676972,    // Green in red linear masking parameter
+    bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInRed         = /* 'mbir' */ 0x6D626972,    // Blue in red linear masking parameter
+    bmdDeckLinkFrameMetadataCintelLinearMaskingRedInGreen        = /* 'mrig' */ 0x6D726967,    // Red in green linear masking parameter
+    bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInGreen      = /* 'mgig' */ 0x6D676967,    // Green in green linear masking parameter
+    bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInGreen       = /* 'mbig' */ 0x6D626967,    // Blue in green linear masking parameter
+    bmdDeckLinkFrameMetadataCintelLinearMaskingRedInBlue         = /* 'mrib' */ 0x6D726962,    // Red in blue linear masking parameter
+    bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInBlue       = /* 'mgib' */ 0x6D676962,    // Green in blue linear masking parameter
+    bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInBlue        = /* 'mbib' */ 0x6D626962,    // Blue in blue linear masking parameter
+    bmdDeckLinkFrameMetadataCintelLogMaskingRedInRed             = /* 'mlrr' */ 0x6D6C7272,    // Red in red log masking parameter
+    bmdDeckLinkFrameMetadataCintelLogMaskingGreenInRed           = /* 'mlgr' */ 0x6D6C6772,    // Green in red log masking parameter
+    bmdDeckLinkFrameMetadataCintelLogMaskingBlueInRed            = /* 'mlbr' */ 0x6D6C6272,    // Blue in red log masking parameter
+    bmdDeckLinkFrameMetadataCintelLogMaskingRedInGreen           = /* 'mlrg' */ 0x6D6C7267,    // Red in green log masking parameter
+    bmdDeckLinkFrameMetadataCintelLogMaskingGreenInGreen         = /* 'mlgg' */ 0x6D6C6767,    // Green in green log masking parameter
+    bmdDeckLinkFrameMetadataCintelLogMaskingBlueInGreen          = /* 'mlbg' */ 0x6D6C6267,    // Blue in green log masking parameter
+    bmdDeckLinkFrameMetadataCintelLogMaskingRedInBlue            = /* 'mlrb' */ 0x6D6C7262,    // Red in blue log masking parameter
+    bmdDeckLinkFrameMetadataCintelLogMaskingGreenInBlue          = /* 'mlgb' */ 0x6D6C6762,    // Green in blue log masking parameter
+    bmdDeckLinkFrameMetadataCintelLogMaskingBlueInBlue           = /* 'mlbb' */ 0x6D6C6262,    // Blue in blue log masking parameter
+    bmdDeckLinkFrameMetadataCintelFilmFrameRate                  = /* 'cffr' */ 0x63666672,    // Film frame rate
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedX              = /* 'hdrx' */ 0x68647278,    // Red display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedY              = /* 'hdry' */ 0x68647279,    // Red display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenX            = /* 'hdgx' */ 0x68646778,    // Green display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenY            = /* 'hdgy' */ 0x68646779,    // Green display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesBlueX             = /* 'hdbx' */ 0x68646278,    // Blue display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRDisplayPrimariesBlueY             = /* 'hdby' */ 0x68646279,    // Blue display primaries in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRWhitePointX                       = /* 'hdwx' */ 0x68647778,    // White point in range 0.0 - 1.0
+    bmdDeckLinkFrameMetadataHDRWhitePointY                       = /* 'hdwy' */ 0x68647779,    // White point in range 0.0 - 1.0
+    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
+    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 */
+
+typedef uint32_t BMDDuplexMode;
+enum _BMDDuplexMode {
+    bmdDuplexModeFull                                            = /* 'fdup' */ 0x66647570,
+    bmdDuplexModeHalf                                            = /* 'hdup' */ 0x68647570
+};
+
 /* Enum BMDDeckLinkAttributeID - DeckLink Attribute ID */
 
 typedef uint32_t BMDDeckLinkAttributeID;
@@ -346,7 +460,6 @@ enum _BMDDeckLinkAttributeID {
     BMDDeckLinkCanOnlyAdjustOverallVideoOutputGain               = /* 'ovog' */ 0x6F766F67,
     BMDDeckLinkHasVideoInputAntiAliasingFilter                   = /* 'aafl' */ 0x6161666C,
     BMDDeckLinkHasBypass                                         = /* 'byps' */ 0x62797073,
-    BMDDeckLinkSupportsDesktopDisplay                            = /* 'extd' */ 0x65787464,
     BMDDeckLinkSupportsClockTimingAdjustment                     = /* 'ctad' */ 0x63746164,
     BMDDeckLinkSupportsFullDuplex                                = /* 'fdup' */ 0x66647570,
     BMDDeckLinkSupportsFullFrameReferenceInputTimingOffset       = /* 'frin' */ 0x6672696E,
@@ -355,27 +468,32 @@ enum _BMDDeckLinkAttributeID {
     BMDDeckLinkSupportsQuadLinkSDI                               = /* 'sqls' */ 0x73716C73,
     BMDDeckLinkSupportsIdleOutput                                = /* 'idou' */ 0x69646F75,
     BMDDeckLinkHasLTCTimecodeInput                               = /* 'hltc' */ 0x686C7463,
+    BMDDeckLinkSupportsDuplexModeConfiguration                   = /* 'dupx' */ 0x64757078,
+    BMDDeckLinkSupportsHDRMetadata                               = /* 'hdrm' */ 0x6864726D,
+    BMDDeckLinkSupportsColorspaceMetadata                        = /* 'cmet' */ 0x636D6574,
 
     /* Integers */
 
     BMDDeckLinkMaximumAudioChannels                              = /* 'mach' */ 0x6D616368,
-    BMDDeckLinkMaximumAnalogAudioChannels                        = /* 'aach' */ 0x61616368,
+    BMDDeckLinkMaximumAnalogAudioInputChannels                   = /* 'iach' */ 0x69616368,
+    BMDDeckLinkMaximumAnalogAudioOutputChannels                  = /* 'aach' */ 0x61616368,
     BMDDeckLinkNumberOfSubDevices                                = /* 'nsbd' */ 0x6E736264,
     BMDDeckLinkSubDeviceIndex                                    = /* 'subi' */ 0x73756269,
     BMDDeckLinkPersistentID                                      = /* 'peid' */ 0x70656964,
+    BMDDeckLinkDeviceGroupID                                     = /* 'dgid' */ 0x64676964,
     BMDDeckLinkTopologicalID                                     = /* 'toid' */ 0x746F6964,
-    BMDDeckLinkVideoOutputConnections                            = /* 'vocn' */ 0x766F636E,
-    BMDDeckLinkVideoInputConnections                             = /* 'vicn' */ 0x7669636E,
-    BMDDeckLinkAudioOutputConnections                            = /* 'aocn' */ 0x616F636E,
-    BMDDeckLinkAudioInputConnections                             = /* 'aicn' */ 0x6169636E,
-    BMDDeckLinkDeviceBusyState                                   = /* 'dbst' */ 0x64627374,
+    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,
     BMDDeckLinkAudioOutputRCAChannelCount                        = /* 'aorc' */ 0x616F7263,
     BMDDeckLinkAudioOutputXLRChannelCount                        = /* 'aoxc' */ 0x616F7863,
+    BMDDeckLinkPairedDevicePersistentID                          = /* 'ppid' */ 0x70706964,
 
     /* Floats */
 
@@ -391,7 +509,8 @@ enum _BMDDeckLinkAttributeID {
     BMDDeckLinkSerialPortDeviceName                              = /* 'slpn' */ 0x736C706E,
     BMDDeckLinkVendorName                                        = /* 'vndr' */ 0x766E6472,
     BMDDeckLinkDisplayName                                       = /* 'dspn' */ 0x6473706E,
-    BMDDeckLinkModelName                                         = /* 'mdln' */ 0x6D646C6E
+    BMDDeckLinkModelName                                         = /* 'mdln' */ 0x6D646C6E,
+    BMDDeckLinkDeviceHandle                                      = /* 'devh' */ 0x64657668
 };
 
 /* Enum BMDDeckLinkAPIInformationID - DeckLinkAPI information ID */
@@ -401,6 +520,63 @@ enum _BMDDeckLinkAPIInformationID {
     BMDDeckLinkAPIVersion                                        = /* 'vers' */ 0x76657273
 };
 
+/* Enum BMDDeckLinkStatusID - DeckLink Status ID */
+
+typedef uint32_t BMDDeckLinkStatusID;
+enum _BMDDeckLinkStatusID {
+
+    /* Integers */
+
+    bmdDeckLinkStatusDetectedVideoInputMode                      = /* 'dvim' */ 0x6476696D,
+    bmdDeckLinkStatusDetectedVideoInputFlags                     = /* 'dvif' */ 0x64766966,
+    bmdDeckLinkStatusCurrentVideoInputMode                       = /* 'cvim' */ 0x6376696D,
+    bmdDeckLinkStatusCurrentVideoInputPixelFormat                = /* 'cvip' */ 0x63766970,
+    bmdDeckLinkStatusCurrentVideoInputFlags                      = /* 'cvif' */ 0x63766966,
+    bmdDeckLinkStatusCurrentVideoOutputMode                      = /* 'cvom' */ 0x63766F6D,
+    bmdDeckLinkStatusCurrentVideoOutputFlags                     = /* 'cvof' */ 0x63766F66,
+    bmdDeckLinkStatusPCIExpressLinkWidth                         = /* 'pwid' */ 0x70776964,
+    bmdDeckLinkStatusPCIExpressLinkSpeed                         = /* 'plnk' */ 0x706C6E6B,
+    bmdDeckLinkStatusLastVideoOutputPixelFormat                  = /* 'opix' */ 0x6F706978,
+    bmdDeckLinkStatusReferenceSignalMode                         = /* 'refm' */ 0x7265666D,
+    bmdDeckLinkStatusReferenceSignalFlags                        = /* 'reff' */ 0x72656666,
+    bmdDeckLinkStatusDuplexMode                                  = /* 'dupx' */ 0x64757078,
+    bmdDeckLinkStatusBusy                                        = /* 'busy' */ 0x62757379,
+    bmdDeckLinkStatusInterchangeablePanelType                    = /* 'icpt' */ 0x69637074,
+    bmdDeckLinkStatusDeviceTemperature                           = /* 'dtmp' */ 0x64746D70,
+
+    /* Flags */
+
+    bmdDeckLinkStatusVideoInputSignalLocked                      = /* 'visl' */ 0x7669736C,
+    bmdDeckLinkStatusReferenceSignalLocked                       = /* 'refl' */ 0x7265666C,
+    bmdDeckLinkStatusReceivedEDID                                = /* 'edid' */ 0x65646964
+};
+
+/* Enum BMDDeckLinkVideoStatusFlags -  */
+
+typedef uint32_t BMDDeckLinkVideoStatusFlags;
+enum _BMDDeckLinkVideoStatusFlags {
+    bmdDeckLinkVideoStatusPsF                                    = 1 << 0,
+    bmdDeckLinkVideoStatusDualStream3D                           = 1 << 1
+};
+
+/* Enum BMDDuplexStatus - Duplex status of the device */
+
+typedef uint32_t BMDDuplexStatus;
+enum _BMDDuplexStatus {
+    bmdDuplexStatusFullDuplex                                    = /* 'fdup' */ 0x66647570,
+    bmdDuplexStatusHalfDuplex                                    = /* 'hdup' */ 0x68647570,
+    bmdDuplexStatusSimplex                                       = /* 'splx' */ 0x73706C78,
+    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;
@@ -433,7 +609,8 @@ enum _BMD3DPreviewFormat {
 
 typedef uint32_t BMDNotifications;
 enum _BMDNotifications {
-    bmdPreferencesChanged                                        = /* 'pref' */ 0x70726566
+    bmdPreferencesChanged                                        = /* 'pref' */ 0x70726566,
+    bmdStatusChanged                                             = /* 'stat' */ 0x73746174
 };
 
 #if defined(__cplusplus)
@@ -449,11 +626,16 @@ class IDeckLinkIterator;
 class IDeckLinkAPIInformation;
 class IDeckLinkOutput;
 class IDeckLinkInput;
+class IDeckLinkHDMIInputEDID;
 class IDeckLinkEncoderInput;
 class IDeckLinkVideoFrame;
 class IDeckLinkMutableVideoFrame;
 class IDeckLinkVideoFrame3DExtensions;
+class IDeckLinkVideoFrameMetadataExtensions;
 class IDeckLinkVideoInputFrame;
+class IDeckLinkAncillaryPacket;
+class IDeckLinkAncillaryPacketIterator;
+class IDeckLinkVideoFrameAncillaryPackets;
 class IDeckLinkVideoFrameAncillary;
 class IDeckLinkEncoderPacket;
 class IDeckLinkEncoderVideoPacket;
@@ -465,6 +647,7 @@ class IDeckLinkGLScreenPreviewHelper;
 class IDeckLinkNotificationCallback;
 class IDeckLinkNotification;
 class IDeckLinkAttributes;
+class IDeckLinkStatus;
 class IDeckLinkKeyer;
 class IDeckLinkVideoConversion;
 class IDeckLinkDeviceNotificationCallback;
@@ -472,7 +655,7 @@ class IDeckLinkDiscovery;
 
 /* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
 
-class IDeckLinkVideoOutputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoOutputCallback : public IUnknown
 {
 public:
     virtual HRESULT ScheduledFrameCompleted (/* in */ IDeckLinkVideoFrame *completedFrame, /* in */ BMDOutputFrameCompletionResult result) = 0;
@@ -484,7 +667,7 @@ protected:
 
 /* Interface IDeckLinkInputCallback - Frame arrival callback. */
 
-class IDeckLinkInputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkInputCallback : public IUnknown
 {
 public:
     virtual HRESULT VideoInputFormatChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
@@ -496,7 +679,7 @@ protected:
 
 /* Interface IDeckLinkEncoderInputCallback - Frame arrival callback. */
 
-class IDeckLinkEncoderInputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderInputCallback : public IUnknown
 {
 public:
     virtual HRESULT VideoInputSignalChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
@@ -509,7 +692,7 @@ protected:
 
 /* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */
 
-class IDeckLinkMemoryAllocator : public IUnknown
+class BMD_PUBLIC IDeckLinkMemoryAllocator : public IUnknown
 {
 public:
     virtual HRESULT AllocateBuffer (/* in */ uint32_t bufferSize, /* out */ void **allocatedBuffer) = 0;
@@ -521,7 +704,7 @@ public:
 
 /* Interface IDeckLinkAudioOutputCallback - Optional callback to allow audio samples to be pulled as required. */
 
-class IDeckLinkAudioOutputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkAudioOutputCallback : public IUnknown
 {
 public:
     virtual HRESULT RenderAudioSamples (/* in */ bool preroll) = 0;
@@ -529,7 +712,7 @@ public:
 
 /* Interface IDeckLinkIterator - enumerates installed DeckLink hardware */
 
-class IDeckLinkIterator : public IUnknown
+class BMD_PUBLIC IDeckLinkIterator : public IUnknown
 {
 public:
     virtual HRESULT Next (/* out */ IDeckLink **deckLinkInstance) = 0;
@@ -537,7 +720,7 @@ public:
 
 /* Interface IDeckLinkAPIInformation - DeckLinkAPI attribute interface */
 
-class IDeckLinkAPIInformation : public IUnknown
+class BMD_PUBLIC IDeckLinkAPIInformation : public IUnknown
 {
 public:
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkAPIInformationID cfgID, /* out */ bool *value) = 0;
@@ -551,7 +734,7 @@ protected:
 
 /* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
 
-class IDeckLinkOutput : public IUnknown
+class BMD_PUBLIC IDeckLinkOutput : public IUnknown
 {
 public:
     virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoOutputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
@@ -566,7 +749,7 @@ public:
 
     virtual HRESULT SetVideoOutputFrameMemoryAllocator (/* in */ IDeckLinkMemoryAllocator *theAllocator) = 0;
     virtual HRESULT CreateVideoFrame (/* in */ int32_t width, /* in */ int32_t height, /* in */ int32_t rowBytes, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDFrameFlags flags, /* out */ IDeckLinkMutableVideoFrame **outFrame) = 0;
-    virtual HRESULT CreateAncillaryData (/* in */ BMDPixelFormat pixelFormat, /* out */ IDeckLinkVideoFrameAncillary **outBuffer) = 0;
+    virtual HRESULT CreateAncillaryData (/* in */ BMDPixelFormat pixelFormat, /* out */ IDeckLinkVideoFrameAncillary **outBuffer) = 0; // Use of IDeckLinkVideoFrameAncillaryPackets is preferred
 
     virtual HRESULT DisplayVideoFrameSync (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
     virtual HRESULT ScheduleVideoFrame (/* in */ IDeckLinkVideoFrame *theFrame, /* in */ BMDTimeValue displayTime, /* in */ BMDTimeValue displayDuration, /* in */ BMDTimeScale timeScale) = 0;
@@ -608,7 +791,7 @@ protected:
 
 /* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
 
-class IDeckLinkInput : public IUnknown
+class BMD_PUBLIC IDeckLinkInput : public IUnknown
 {
 public:
     virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
@@ -645,9 +828,22 @@ protected:
     virtual ~IDeckLinkInput () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkHDMIInputEDID - Created by QueryInterface from IDeckLink. Releasing all references will restore EDID to default */
+
+class BMD_PUBLIC IDeckLinkHDMIInputEDID : public IUnknown
+{
+public:
+    virtual HRESULT SetInt (/* in */ BMDDeckLinkHDMIInputEDIDID cfgID, /* in */ int64_t value) = 0;
+    virtual HRESULT GetInt (/* in */ BMDDeckLinkHDMIInputEDIDID cfgID, /* out */ int64_t *value) = 0;
+    virtual HRESULT WriteToEDID (void) = 0;
+
+protected:
+    virtual ~IDeckLinkHDMIInputEDID () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkEncoderInput - Created by QueryInterface from IDeckLink. */
 
-class IDeckLinkEncoderInput : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderInput : public IUnknown
 {
 public:
     virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
@@ -684,7 +880,7 @@ protected:
 
 /* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
 
-class IDeckLinkVideoFrame : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoFrame : public IUnknown
 {
 public:
     virtual long GetWidth (void) = 0;
@@ -695,7 +891,7 @@ public:
     virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
 
     virtual HRESULT GetTimecode (/* in */ BMDTimecodeFormat format, /* out */ IDeckLinkTimecode **timecode) = 0;
-    virtual HRESULT GetAncillaryData (/* out */ IDeckLinkVideoFrameAncillary **ancillary) = 0;
+    virtual HRESULT GetAncillaryData (/* out */ IDeckLinkVideoFrameAncillary **ancillary) = 0; // Use of IDeckLinkVideoFrameAncillaryPackets is preferred
 
 protected:
     virtual ~IDeckLinkVideoFrame () {} // call Release method to drop reference count
@@ -703,7 +899,7 @@ protected:
 
 /* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
 
-class IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
+class BMD_PUBLIC IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
 {
 public:
     virtual HRESULT SetFlags (/* in */ BMDFrameFlags newFlags) = 0;
@@ -719,7 +915,7 @@ protected:
 
 /* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */
 
-class IDeckLinkVideoFrame3DExtensions : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoFrame3DExtensions : public IUnknown
 {
 public:
     virtual BMDVideo3DPackingFormat Get3DPackingFormat (void) = 0;
@@ -729,9 +925,23 @@ protected:
     virtual ~IDeckLinkVideoFrame3DExtensions () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkVideoFrameMetadataExtensions - Optional interface implemented on IDeckLinkVideoFrame to support frame metadata such as HDMI HDR information */
+
+class BMD_PUBLIC IDeckLinkVideoFrameMetadataExtensions : public IUnknown
+{
+public:
+    virtual HRESULT GetInt (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ int64_t *value) = 0;
+    virtual HRESULT GetFloat (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ double *value) = 0;
+    virtual HRESULT GetFlag (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ bool* value) = 0;
+    virtual HRESULT GetString (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ const char **value) = 0;
+
+protected:
+    virtual ~IDeckLinkVideoFrameMetadataExtensions () {} // call Release method to drop reference count
+};
+
 /* 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;
@@ -741,13 +951,56 @@ protected:
     virtual ~IDeckLinkVideoInputFrame () {} // call Release method to drop reference count
 };
 
-/* Interface IDeckLinkVideoFrameAncillary - Obtained through QueryInterface() on an IDeckLinkVideoFrame object. */
+/* Interface IDeckLinkAncillaryPacket - On output, user needs to implement this interface */
+
+class BMD_PUBLIC IDeckLinkAncillaryPacket : public IUnknown
+{
+public:
+
+    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 IDeckLinkVideoFrameAncillary : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoFrameAncillary : public IUnknown
 {
 public:
 
-    virtual HRESULT GetBufferForVerticalBlankingLine (/* in */ uint32_t lineNumber, /* out */ void **buffer) = 0;
+    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;
 
@@ -757,7 +1010,7 @@ protected:
 
 /* Interface IDeckLinkEncoderPacket - Interface to encapsulate an encoded packet. */
 
-class IDeckLinkEncoderPacket : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderPacket : public IUnknown
 {
 public:
     virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
@@ -771,7 +1024,7 @@ protected:
 
 /* Interface IDeckLinkEncoderVideoPacket - Provided by the IDeckLinkEncoderInput video packet arrival callback. */
 
-class IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
+class BMD_PUBLIC IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
 {
 public:
     virtual BMDPixelFormat GetPixelFormat (void) = 0;
@@ -785,7 +1038,7 @@ protected:
 
 /* Interface IDeckLinkEncoderAudioPacket - Provided by the IDeckLinkEncoderInput audio packet arrival callback. */
 
-class IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
+class BMD_PUBLIC IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
 {
 public:
     virtual BMDAudioFormat GetAudioFormat (void) = 0;
@@ -796,7 +1049,7 @@ protected:
 
 /* Interface IDeckLinkH265NALPacket - Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object */
 
-class IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
+class BMD_PUBLIC IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
 {
 public:
     virtual HRESULT GetUnitType (/* out */ uint8_t *unitType) = 0;
@@ -809,7 +1062,7 @@ protected:
 
 /* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */
 
-class IDeckLinkAudioInputPacket : public IUnknown
+class BMD_PUBLIC IDeckLinkAudioInputPacket : public IUnknown
 {
 public:
     virtual long GetSampleFrameCount (void) = 0;
@@ -822,7 +1075,7 @@ protected:
 
 /* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
 
-class IDeckLinkScreenPreviewCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkScreenPreviewCallback : public IUnknown
 {
 public:
     virtual HRESULT DrawFrame (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
@@ -833,7 +1086,7 @@ protected:
 
 /* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
 
-class IDeckLinkGLScreenPreviewHelper : public IUnknown
+class BMD_PUBLIC IDeckLinkGLScreenPreviewHelper : public IUnknown
 {
 public:
 
@@ -850,7 +1103,7 @@ protected:
 
 /* Interface IDeckLinkNotificationCallback - DeckLink Notification Callback Interface */
 
-class IDeckLinkNotificationCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkNotificationCallback : public IUnknown
 {
 public:
     virtual HRESULT Notify (/* in */ BMDNotifications topic, /* in */ uint64_t param1, /* in */ uint64_t param2) = 0;
@@ -858,7 +1111,7 @@ public:
 
 /* Interface IDeckLinkNotification - DeckLink Notification interface */
 
-class IDeckLinkNotification : public IUnknown
+class BMD_PUBLIC IDeckLinkNotification : public IUnknown
 {
 public:
     virtual HRESULT Subscribe (/* in */ BMDNotifications topic, /* in */ IDeckLinkNotificationCallback *theCallback) = 0;
@@ -867,7 +1120,7 @@ public:
 
 /* Interface IDeckLinkAttributes - DeckLink Attribute interface */
 
-class IDeckLinkAttributes : public IUnknown
+class BMD_PUBLIC IDeckLinkAttributes : public IUnknown
 {
 public:
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkAttributeID cfgID, /* out */ bool *value) = 0;
@@ -879,9 +1132,24 @@ protected:
     virtual ~IDeckLinkAttributes () {} // call Release method to drop reference count
 };
 
+/* Interface IDeckLinkStatus - DeckLink Status interface */
+
+class BMD_PUBLIC IDeckLinkStatus : public IUnknown
+{
+public:
+    virtual HRESULT GetFlag (/* in */ BMDDeckLinkStatusID statusID, /* out */ bool *value) = 0;
+    virtual HRESULT GetInt (/* in */ BMDDeckLinkStatusID statusID, /* out */ int64_t *value) = 0;
+    virtual HRESULT GetFloat (/* in */ BMDDeckLinkStatusID statusID, /* out */ double *value) = 0;
+    virtual HRESULT GetString (/* in */ BMDDeckLinkStatusID statusID, /* out */ const char **value) = 0;
+    virtual HRESULT GetBytes (/* in */ BMDDeckLinkStatusID statusID, /* out */ void *buffer, /* in, out */ uint32_t *bufferSize) = 0;
+
+protected:
+    virtual ~IDeckLinkStatus () {} // call Release method to drop reference count
+};
+
 /* Interface IDeckLinkKeyer - DeckLink Keyer interface */
 
-class IDeckLinkKeyer : public IUnknown
+class BMD_PUBLIC IDeckLinkKeyer : public IUnknown
 {
 public:
     virtual HRESULT Enable (/* in */ bool isExternal) = 0;
@@ -896,7 +1164,7 @@ protected:
 
 /* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
 
-class IDeckLinkVideoConversion : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoConversion : public IUnknown
 {
 public:
     virtual HRESULT ConvertFrame (/* in */ IDeckLinkVideoFrame* srcFrame, /* in */ IDeckLinkVideoFrame* dstFrame) = 0;
@@ -907,7 +1175,7 @@ protected:
 
 /* Interface IDeckLinkDeviceNotificationCallback - DeckLink device arrival/removal notification callbacks */
 
-class IDeckLinkDeviceNotificationCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkDeviceNotificationCallback : public IUnknown
 {
 public:
     virtual HRESULT DeckLinkDeviceArrived (/* in */ IDeckLink* deckLinkDevice) = 0;
@@ -919,7 +1187,7 @@ protected:
 
 /* Interface IDeckLinkDiscovery - DeckLink device discovery */
 
-class IDeckLinkDiscovery : public IUnknown
+class BMD_PUBLIC IDeckLinkDiscovery : public IUnknown
 {
 public:
     virtual HRESULT InstallDeviceNotifications (/* in */ IDeckLinkDeviceNotificationCallback* deviceNotificationCallback) = 0;
@@ -933,11 +1201,12 @@ protected:
 
 extern "C" {
 
-    IDeckLinkIterator* CreateDeckLinkIteratorInstance (void);
-    IDeckLinkDiscovery* CreateDeckLinkDiscoveryInstance (void);
-    IDeckLinkAPIInformation* CreateDeckLinkAPIInformationInstance (void);
-    IDeckLinkGLScreenPreviewHelper* CreateOpenGLScreenPreviewHelper (void);
-    IDeckLinkVideoConversion* CreateVideoConversionInstance (void);
+    IDeckLinkIterator* BMD_PUBLIC CreateDeckLinkIteratorInstance (void);
+    IDeckLinkDiscovery* BMD_PUBLIC CreateDeckLinkDiscoveryInstance (void);
+    IDeckLinkAPIInformation* BMD_PUBLIC CreateDeckLinkAPIInformationInstance (void);
+    IDeckLinkGLScreenPreviewHelper* BMD_PUBLIC CreateOpenGLScreenPreviewHelper (void);
+    IDeckLinkVideoConversion* BMD_PUBLIC CreateVideoConversionInstance (void);
+    IDeckLinkVideoFrameAncillaryPackets* BMD_PUBLIC CreateVideoFrameAncillaryPacketsInstance (void); // For use when creating a custom IDeckLinkVideoFrame without wrapping IDeckLinkOutput::CreateVideoFrame
 
 }
 
index cac0e2f5ad0f7b93c45448da21521973be89f666..430f87154abcede1e46b39eb0aa89f31468ba38f 100644 (file)
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2015 Blackmagic Design
+** Copyright (c) 2018 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
     #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,15 +58,12 @@ enum _BMDDeckLinkConfigurationID {
 
     bmdDeckLinkConfigSwapSerialRxTx                              = /* 'ssrt' */ 0x73737274,
 
-    /* Video Input/Output Flags */
-
-    bmdDeckLinkConfigUse1080pNotPsF                              = /* 'fpro' */ 0x6670726F,
-
     /* Video Input/Output Integers */
 
     bmdDeckLinkConfigHDMI3DPackingFormat                         = /* '3dpf' */ 0x33647066,
     bmdDeckLinkConfigBypass                                      = /* 'byps' */ 0x62797073,
     bmdDeckLinkConfigClockTimingAdjustment                       = /* 'ctad' */ 0x63746164,
+    bmdDeckLinkConfigDuplexMode                                  = /* 'dupx' */ 0x64757078,
 
     /* Audio Input/Output Flags */
 
@@ -77,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 */
 
@@ -105,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,
@@ -205,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;
@@ -224,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;
index 1b76e108c4b4eef63b49a1a2763058809791ae72..e0522a2315f7d41d9fe3ac9e1c3de57dc3690bf7 100644 (file)
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2015 Blackmagic Design
+** Copyright (c) 2018 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
     #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;
index 93ca66b6d033a2644556d369bf888f3c9d341a26..d6619caa1813ddf58264a68a141772353f40cf3d 100644 (file)
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2015 Blackmagic Design
+** Copyright (c) 2018 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
     #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;
index c508af7cb39026532303dbc8d1bd73473ca9eab0..543aaa1f7f82d1ab19137c59123e461f0bb01aeb 100644 (file)
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2015 Blackmagic Design
+** Copyright (c) 2018 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
     #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 */
 
@@ -136,7 +177,16 @@ enum _BMDPixelFormat {
     bmdFormat12BitRGBLE                                          = /* 'R12L' */ 0x5231324C,    // Little-endian RGB 12-bit per component with full range (0-4095). Packed as 12-bit per component
     bmdFormat10BitRGBXLE                                         = /* 'R10l' */ 0x5231306C,    // Little-endian 10-bit RGB with SMPTE video levels (64-940)
     bmdFormat10BitRGBX                                           = /* 'R10b' */ 0x52313062,    // Big-endian 10-bit RGB with SMPTE video levels (64-940)
-    bmdFormatH265                                                = /* 'hev1' */ 0x68657631     // High Efficiency Video Coding (HEVC/h.265)
+    bmdFormatH265                                                = /* 'hev1' */ 0x68657631,    // High Efficiency Video Coding (HEVC/h.265)
+
+    /* AVID DNxHR */
+
+    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. */
@@ -145,7 +195,8 @@ typedef uint32_t BMDDisplayModeFlags;
 enum _BMDDisplayModeFlags {
     bmdDisplayModeSupports3D                                     = 1 << 0,
     bmdDisplayModeColorspaceRec601                               = 1 << 1,
-    bmdDisplayModeColorspaceRec709                               = 1 << 2
+    bmdDisplayModeColorspaceRec709                               = 1 << 2,
+    bmdDisplayModeColorspaceRec2020                              = 1 << 3
 };
 
 // Forward Declarations
@@ -155,7 +206,7 @@ class IDeckLinkDisplayMode;
 
 /* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */
 
-class IDeckLinkDisplayModeIterator : public IUnknown
+class BMD_PUBLIC IDeckLinkDisplayModeIterator : public IUnknown
 {
 public:
     virtual HRESULT Next (/* out */ IDeckLinkDisplayMode **deckLinkDisplayMode) = 0;
@@ -166,7 +217,7 @@ protected:
 
 /* Interface IDeckLinkDisplayMode - represents a display mode */
 
-class IDeckLinkDisplayMode : public IUnknown
+class BMD_PUBLIC IDeckLinkDisplayMode : public IUnknown
 {
 public:
     virtual HRESULT GetName (/* out */ const char **name) = 0;
index bc6d581237b6f86547d8b2007f5eceaabf754c95..559126282ab63241222a639c4bcc75453925ef2c 100644 (file)
@@ -1,5 +1,5 @@
 /* -LICENSE-START-
-** Copyright (c) 2015 Blackmagic Design
+** Copyright (c) 2018 Blackmagic Design
 **
 ** Permission is hereby granted, free of charge, to any person or organization
 ** obtaining a copy of the software and accompanying documentation covered by
     #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;
index 2b13697d2b08547c5ec718669a2bf779e6f539b6..663602bc529eedbc6b74278e15028423b3fe2a7c 100644 (file)
@@ -85,8 +85,12 @@ typedef void *LPVOID;
 #define IID_IUnknown           (REFIID){0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}
 #define IUnknownUUID           IID_IUnknown
 
+#ifndef BMD_PUBLIC
+       #define BMD_PUBLIC
+#endif
+
 #ifdef __cplusplus
-class IUnknown
+class BMD_PUBLIC IUnknown
 {
     public:
        virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) = 0;
index f1e06e8902cc268f4098bf74c363698725155e1b..29cb3a816d1fb99bac47d8aeb3ddb78fca584365 100644 (file)
@@ -154,7 +154,7 @@ void DeckLinkOutput::start_output(uint32_t mode, int64_t base_pts)
                fprintf(stderr, "Failed to set video output connection for card %u\n", card_index);
                abort();
        }
-       if (config->SetFlag(bmdDeckLinkConfigUse1080pNotPsF, true) != S_OK) {
+       if (config->SetFlag(bmdDeckLinkConfigOutput1080pAsPsF, true) != S_OK) {
                fprintf(stderr, "Failed to set PsF flag for card\n");
                abort();
        }