Ver Fonte

Update decklink SDK to version 10.11

Colin Edwards há 7 anos atrás
pai
commit
f8e628ac36
72 ficheiros alterados com 1868 adições e 594 exclusões
  1. 175 59
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI.h
  2. 19 9
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIConfiguration.h
  3. 3 3
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIConfiguration_v10_2.h
  4. 1 1
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIConfiguration_v10_4.h
  5. 3 3
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIConfiguration_v10_5.h
  6. 62 0
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIConfiguration_v10_9.h
  7. 8 4
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIDeckControl.h
  8. 7 3
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIDiscovery.h
  9. 27 13
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIDispatch.cpp
  10. 146 0
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIDispatch_v10_8.cpp
  11. 8 8
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIDispatch_v7_6.cpp
  12. 10 10
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIDispatch_v8_0.cpp
  13. 58 12
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIModes.h
  14. 9 4
      plugins/decklink/linux/decklink-sdk/DeckLinkAPITypes.h
  15. 4 4
      plugins/decklink/linux/decklink-sdk/DeckLinkAPIVersion.h
  16. 3 3
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v10_2.h
  17. 45 0
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v10_9.h
  18. 27 27
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v7_1.h
  19. 6 6
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v7_3.h
  20. 35 35
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v7_6.h
  21. 4 4
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v7_9.h
  22. 5 5
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v8_0.h
  23. 6 6
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v8_1.h
  24. 3 3
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v9_2.h
  25. 3 3
      plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v9_9.h
  26. 13 8
      plugins/decklink/linux/decklink-sdk/LinuxCOM.h
  27. 177 61
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI.h
  28. 19 9
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIConfiguration.h
  29. 2 2
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIConfiguration_v10_2.h
  30. 2 2
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIConfiguration_v10_5.h
  31. 62 0
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIConfiguration_v10_9.h
  32. 8 4
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIDeckControl.h
  33. 7 3
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIDiscovery.h
  34. 31 18
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIDispatch.cpp
  35. 193 0
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIDispatch_v10_8.cpp
  36. 10 10
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIDispatch_v7_6.cpp
  37. 13 13
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIDispatch_v8_0.cpp
  38. 58 12
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIModes.h
  39. 21 17
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIStreaming.h
  40. 9 4
      plugins/decklink/mac/decklink-sdk/DeckLinkAPITypes.h
  41. 5 4
      plugins/decklink/mac/decklink-sdk/DeckLinkAPIVersion.h
  42. 3 3
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v10_2.h
  43. 45 0
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v10_9.h
  44. 18 18
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v7_1.h
  45. 2 2
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v7_3.h
  46. 18 18
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v7_6.h
  47. 2 2
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v7_9.h
  48. 2 2
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v8_0.h
  49. 4 4
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v8_1.h
  50. 2 2
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v9_2.h
  51. 18 18
      plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v9_9.h
  52. 167 49
      plugins/decklink/win/decklink-sdk/DeckLinkAPI.idl
  53. 15 9
      plugins/decklink/win/decklink-sdk/DeckLinkAPIConfiguration.idl
  54. 2 2
      plugins/decklink/win/decklink-sdk/DeckLinkAPIDeckControl.idl
  55. 2 2
      plugins/decklink/win/decklink-sdk/DeckLinkAPIDiscovery.idl
  56. 52 10
      plugins/decklink/win/decklink-sdk/DeckLinkAPIModes.idl
  57. 5 5
      plugins/decklink/win/decklink-sdk/DeckLinkAPIStreaming.idl
  58. 40 0
      plugins/decklink/win/decklink-sdk/DeckLinkAPIStreaming_v10_8.idl
  59. 4 3
      plugins/decklink/win/decklink-sdk/DeckLinkAPITypes.idl
  60. 4 4
      plugins/decklink/win/decklink-sdk/DeckLinkAPIVersion.h
  61. 3 3
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v10_2.idl
  62. 1 1
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v10_5.idl
  63. 46 0
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v10_8.idl
  64. 61 0
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v10_9.idl
  65. 21 21
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v7_1.idl
  66. 4 4
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v7_3.idl
  67. 9 9
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v7_6.idl
  68. 2 2
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v7_9.idl
  69. 2 2
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v8_0.idl
  70. 2 2
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v8_1.idl
  71. 2 2
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v9_2.idl
  72. 3 3
      plugins/decklink/win/decklink-sdk/DeckLinkAPI_v9_9.idl

+ 175 - 59
plugins/decklink/linux/decklink-sdk/DeckLinkAPI.h

@@ -7,14 +7,14 @@
 ** execute, and transmit the Software, and to prepare derivative works of the
 ** 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
 ** Software, and to permit third-parties to whom the Software is furnished to
 ** do so, all subject to the following:
 ** do so, all subject to the following:
-**
+** 
 ** The copyright notices in the Software and this entire statement, including
 ** The copyright notices in the Software and this entire statement, including
 ** the above license grant, this restriction and the following disclaimer,
 ** 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
 ** 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
 ** all derivative works of the Software, unless such copies or derivative
 ** works are solely in the form of machine-executable object code generated by
 ** works are solely in the form of machine-executable object code generated by
 ** a source language processor.
 ** a source language processor.
-**
+** 
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@@ -37,6 +37,10 @@
     #endif
     #endif
 #endif
 #endif
 
 
+#ifndef BMD_PUBLIC
+	#define BMD_PUBLIC
+#endif
+
 /* DeckLink API */
 /* DeckLink API */
 
 
 #include <stdint.h>
 #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_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_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_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_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_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};
 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,
     bmdFrameFlagDefault                                          = 0,
     bmdFrameFlagFlipVertical                                     = 1 << 0,
     bmdFrameFlagFlipVertical                                     = 1 << 0,
     bmdFrameContainsHDRMetadata                                  = 1 << 1,
     bmdFrameContainsHDRMetadata                                  = 1 << 1,
+    bmdFrameContainsCintelMetadata                               = 1 << 2,
 
 
     /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
     /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
 
 
+    bmdFrameCapturedAsPsF                                        = 1 << 30,
     bmdFrameHasNoInputSource                                     = 1 << 31
     bmdFrameHasNoInputSource                                     = 1 << 31
 };
 };
 
 
@@ -159,10 +168,10 @@ enum _BMDDeckLinkCapturePassthroughMode {
 
 
 typedef uint32_t BMDOutputFrameCompletionResult;
 typedef uint32_t BMDOutputFrameCompletionResult;
 enum _BMDOutputFrameCompletionResult {
 enum _BMDOutputFrameCompletionResult {
-    bmdOutputFrameCompleted,
-    bmdOutputFrameDisplayedLate,
-    bmdOutputFrameDropped,
-    bmdOutputFrameFlushed
+    bmdOutputFrameCompleted,                                    
+    bmdOutputFrameDisplayedLate,                                
+    bmdOutputFrameDropped,                                      
+    bmdOutputFrameFlushed                                       
 };
 };
 
 
 /* Enum BMDReferenceStatus - GenLock input status */
 /* Enum BMDReferenceStatus - GenLock input status */
@@ -199,9 +208,9 @@ enum _BMDAudioSampleType {
 
 
 typedef uint32_t BMDAudioOutputStreamType;
 typedef uint32_t BMDAudioOutputStreamType;
 enum _BMDAudioOutputStreamType {
 enum _BMDAudioOutputStreamType {
-    bmdAudioOutputStreamContinuous,
-    bmdAudioOutputStreamContinuousDontResample,
-    bmdAudioOutputStreamTimestamped
+    bmdAudioOutputStreamContinuous,                             
+    bmdAudioOutputStreamContinuousDontResample,                 
+    bmdAudioOutputStreamTimestamped                             
 };
 };
 
 
 /* Enum BMDDisplayModeSupport - Output mode supported flags */
 /* Enum BMDDisplayModeSupport - Output mode supported flags */
@@ -209,8 +218,17 @@ enum _BMDAudioOutputStreamType {
 typedef uint32_t BMDDisplayModeSupport;
 typedef uint32_t BMDDisplayModeSupport;
 enum _BMDDisplayModeSupport {
 enum _BMDDisplayModeSupport {
     bmdDisplayModeNotSupported                                   = 0,
     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 */
 /* Enum BMDTimecodeFormat - Timecode formats for frame metadata */
@@ -337,6 +355,37 @@ enum _BMDDeviceInterface {
 typedef uint32_t BMDDeckLinkFrameMetadataID;
 typedef uint32_t BMDDeckLinkFrameMetadataID;
 enum _BMDDeckLinkFrameMetadataID {
 enum _BMDDeckLinkFrameMetadataID {
     bmdDeckLinkFrameMetadataHDRElectroOpticalTransferFunc        = /* 'eotf' */ 0x656F7466,	// EOTF in range 0-7 as per CEA 861.3
     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
     bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedX              = /* 'hdrx' */ 0x68647278,	// Red display primaries in range 0.0 - 1.0
     bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedY              = /* 'hdry' */ 0x68647279,	// 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
     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
     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
     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
     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 */
 /* Enum BMDDuplexMode - Duplex for configurable ports */
@@ -390,18 +447,19 @@ enum _BMDDeckLinkAttributeID {
     /* Integers */
     /* Integers */
 
 
     BMDDeckLinkMaximumAudioChannels                              = /* 'mach' */ 0x6D616368,
     BMDDeckLinkMaximumAudioChannels                              = /* 'mach' */ 0x6D616368,
-    BMDDeckLinkMaximumAnalogAudioChannels                        = /* 'aach' */ 0x61616368,
+    BMDDeckLinkMaximumAnalogAudioInputChannels                   = /* 'iach' */ 0x69616368,
+    BMDDeckLinkMaximumAnalogAudioOutputChannels                  = /* 'aach' */ 0x61616368,
     BMDDeckLinkNumberOfSubDevices                                = /* 'nsbd' */ 0x6E736264,
     BMDDeckLinkNumberOfSubDevices                                = /* 'nsbd' */ 0x6E736264,
     BMDDeckLinkSubDeviceIndex                                    = /* 'subi' */ 0x73756269,
     BMDDeckLinkSubDeviceIndex                                    = /* 'subi' */ 0x73756269,
     BMDDeckLinkPersistentID                                      = /* 'peid' */ 0x70656964,
     BMDDeckLinkPersistentID                                      = /* 'peid' */ 0x70656964,
     BMDDeckLinkDeviceGroupID                                     = /* 'dgid' */ 0x64676964,
     BMDDeckLinkDeviceGroupID                                     = /* 'dgid' */ 0x64676964,
     BMDDeckLinkTopologicalID                                     = /* 'toid' */ 0x746F6964,
     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
     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
     BMDDeckLinkDeviceInterface                                   = /* 'dbus' */ 0x64627573,	// Returns a BMDDeviceInterface
     BMDDeckLinkAudioInputRCAChannelCount                         = /* 'airc' */ 0x61697263,
     BMDDeckLinkAudioInputRCAChannelCount                         = /* 'airc' */ 0x61697263,
     BMDDeckLinkAudioInputXLRChannelCount                         = /* 'aixc' */ 0x61697863,
     BMDDeckLinkAudioInputXLRChannelCount                         = /* 'aixc' */ 0x61697863,
@@ -455,11 +513,14 @@ enum _BMDDeckLinkStatusID {
     bmdDeckLinkStatusReferenceSignalFlags                        = /* 'reff' */ 0x72656666,
     bmdDeckLinkStatusReferenceSignalFlags                        = /* 'reff' */ 0x72656666,
     bmdDeckLinkStatusDuplexMode                                  = /* 'dupx' */ 0x64757078,
     bmdDeckLinkStatusDuplexMode                                  = /* 'dupx' */ 0x64757078,
     bmdDeckLinkStatusBusy                                        = /* 'busy' */ 0x62757379,
     bmdDeckLinkStatusBusy                                        = /* 'busy' */ 0x62757379,
+    bmdDeckLinkStatusInterchangeablePanelType                    = /* 'icpt' */ 0x69637074,
+    bmdDeckLinkStatusDeviceTemperature                           = /* 'dtmp' */ 0x64746D70,
 
 
     /* Flags */
     /* Flags */
 
 
     bmdDeckLinkStatusVideoInputSignalLocked                      = /* 'visl' */ 0x7669736C,
     bmdDeckLinkStatusVideoInputSignalLocked                      = /* 'visl' */ 0x7669736C,
-    bmdDeckLinkStatusReferenceSignalLocked                       = /* 'refl' */ 0x7265666C
+    bmdDeckLinkStatusReferenceSignalLocked                       = /* 'refl' */ 0x7265666C,
+    bmdDeckLinkStatusReceivedEDID                                = /* 'edid' */ 0x65646964
 };
 };
 
 
 /* Enum BMDDeckLinkVideoStatusFlags -  */
 /* Enum BMDDeckLinkVideoStatusFlags -  */
@@ -480,6 +541,14 @@ enum _BMDDuplexStatus {
     bmdDuplexStatusInactive                                      = /* 'inac' */ 0x696E6163
     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 */
 /* Enum BMDDeviceBusyState - Current device busy state */
 
 
 typedef uint32_t BMDDeviceBusyState;
 typedef uint32_t BMDDeviceBusyState;
@@ -535,6 +604,9 @@ class IDeckLinkMutableVideoFrame;
 class IDeckLinkVideoFrame3DExtensions;
 class IDeckLinkVideoFrame3DExtensions;
 class IDeckLinkVideoFrameMetadataExtensions;
 class IDeckLinkVideoFrameMetadataExtensions;
 class IDeckLinkVideoInputFrame;
 class IDeckLinkVideoInputFrame;
+class IDeckLinkAncillaryPacket;
+class IDeckLinkAncillaryPacketIterator;
+class IDeckLinkVideoFrameAncillaryPackets;
 class IDeckLinkVideoFrameAncillary;
 class IDeckLinkVideoFrameAncillary;
 class IDeckLinkEncoderPacket;
 class IDeckLinkEncoderPacket;
 class IDeckLinkEncoderVideoPacket;
 class IDeckLinkEncoderVideoPacket;
@@ -554,7 +626,7 @@ class IDeckLinkDiscovery;
 
 
 /* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
 /* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
 
 
-class IDeckLinkVideoOutputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoOutputCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT ScheduledFrameCompleted (/* in */ IDeckLinkVideoFrame *completedFrame, /* in */ BMDOutputFrameCompletionResult result) = 0;
     virtual HRESULT ScheduledFrameCompleted (/* in */ IDeckLinkVideoFrame *completedFrame, /* in */ BMDOutputFrameCompletionResult result) = 0;
@@ -566,7 +638,7 @@ protected:
 
 
 /* Interface IDeckLinkInputCallback - Frame arrival callback. */
 /* Interface IDeckLinkInputCallback - Frame arrival callback. */
 
 
-class IDeckLinkInputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkInputCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT VideoInputFormatChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
     virtual HRESULT VideoInputFormatChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
@@ -578,7 +650,7 @@ protected:
 
 
 /* Interface IDeckLinkEncoderInputCallback - Frame arrival callback. */
 /* Interface IDeckLinkEncoderInputCallback - Frame arrival callback. */
 
 
-class IDeckLinkEncoderInputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderInputCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT VideoInputSignalChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
     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. */
 /* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */
 
 
-class IDeckLinkMemoryAllocator : public IUnknown
+class BMD_PUBLIC IDeckLinkMemoryAllocator : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT AllocateBuffer (/* in */ uint32_t bufferSize, /* out */ void **allocatedBuffer) = 0;
     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. */
 /* Interface IDeckLinkAudioOutputCallback - Optional callback to allow audio samples to be pulled as required. */
 
 
-class IDeckLinkAudioOutputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkAudioOutputCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT RenderAudioSamples (/* in */ bool preroll) = 0;
     virtual HRESULT RenderAudioSamples (/* in */ bool preroll) = 0;
@@ -611,7 +683,7 @@ public:
 
 
 /* Interface IDeckLinkIterator - enumerates installed DeckLink hardware */
 /* Interface IDeckLinkIterator - enumerates installed DeckLink hardware */
 
 
-class IDeckLinkIterator : public IUnknown
+class BMD_PUBLIC IDeckLinkIterator : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT Next (/* out */ IDeckLink **deckLinkInstance) = 0;
     virtual HRESULT Next (/* out */ IDeckLink **deckLinkInstance) = 0;
@@ -619,7 +691,7 @@ public:
 
 
 /* Interface IDeckLinkAPIInformation - DeckLinkAPI attribute interface */
 /* Interface IDeckLinkAPIInformation - DeckLinkAPI attribute interface */
 
 
-class IDeckLinkAPIInformation : public IUnknown
+class BMD_PUBLIC IDeckLinkAPIInformation : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkAPIInformationID cfgID, /* out */ bool *value) = 0;
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkAPIInformationID cfgID, /* out */ bool *value) = 0;
@@ -633,7 +705,7 @@ protected:
 
 
 /* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
 /* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
 
 
-class IDeckLinkOutput : public IUnknown
+class BMD_PUBLIC IDeckLinkOutput : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoOutputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
     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 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 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 DisplayVideoFrameSync (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
     virtual HRESULT ScheduleVideoFrame (/* in */ IDeckLinkVideoFrame *theFrame, /* in */ BMDTimeValue displayTime, /* in */ BMDTimeValue displayDuration, /* in */ BMDTimeScale timeScale) = 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. */
 /* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
 
 
-class IDeckLinkInput : public IUnknown
+class BMD_PUBLIC IDeckLinkInput : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
     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. */
 /* Interface IDeckLinkEncoderInput - Created by QueryInterface from IDeckLink. */
 
 
-class IDeckLinkEncoderInput : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderInput : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
     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. */
 /* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
 
 
-class IDeckLinkVideoFrame : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoFrame : public IUnknown
 {
 {
 public:
 public:
     virtual long GetWidth (void) = 0;
     virtual long GetWidth (void) = 0;
@@ -777,7 +849,7 @@ public:
     virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
     virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
 
 
     virtual HRESULT GetTimecode (/* in */ BMDTimecodeFormat format, /* out */ IDeckLinkTimecode **timecode) = 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:
 protected:
     virtual ~IDeckLinkVideoFrame () {} // call Release method to drop reference count
     virtual ~IDeckLinkVideoFrame () {} // call Release method to drop reference count
@@ -785,7 +857,7 @@ protected:
 
 
 /* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
 /* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
 
 
-class IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
+class BMD_PUBLIC IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
 {
 {
 public:
 public:
     virtual HRESULT SetFlags (/* in */ BMDFrameFlags newFlags) = 0;
     virtual HRESULT SetFlags (/* in */ BMDFrameFlags newFlags) = 0;
@@ -801,7 +873,7 @@ protected:
 
 
 /* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */
 /* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */
 
 
-class IDeckLinkVideoFrame3DExtensions : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoFrame3DExtensions : public IUnknown
 {
 {
 public:
 public:
     virtual BMDVideo3DPackingFormat Get3DPackingFormat (void) = 0;
     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 */
 /* 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:
 public:
     virtual HRESULT GetInt (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ int64_t *value) = 0;
     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. */
 /* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
 
 
-class IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
+class BMD_PUBLIC IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
 {
 {
 public:
 public:
     virtual HRESULT GetStreamTime (/* out */ BMDTimeValue *frameTime, /* out */ BMDTimeValue *frameDuration, /* in */ BMDTimeScale timeScale) = 0;
     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
     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:
 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 BMDPixelFormat GetPixelFormat (void) = 0;
     virtual BMDDisplayMode GetDisplayMode (void) = 0;
     virtual BMDDisplayMode GetDisplayMode (void) = 0;
 
 
@@ -853,7 +968,7 @@ protected:
 
 
 /* Interface IDeckLinkEncoderPacket - Interface to encapsulate an encoded packet. */
 /* Interface IDeckLinkEncoderPacket - Interface to encapsulate an encoded packet. */
 
 
-class IDeckLinkEncoderPacket : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderPacket : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
     virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
@@ -867,7 +982,7 @@ protected:
 
 
 /* Interface IDeckLinkEncoderVideoPacket - Provided by the IDeckLinkEncoderInput video packet arrival callback. */
 /* Interface IDeckLinkEncoderVideoPacket - Provided by the IDeckLinkEncoderInput video packet arrival callback. */
 
 
-class IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
+class BMD_PUBLIC IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
 {
 {
 public:
 public:
     virtual BMDPixelFormat GetPixelFormat (void) = 0;
     virtual BMDPixelFormat GetPixelFormat (void) = 0;
@@ -881,7 +996,7 @@ protected:
 
 
 /* Interface IDeckLinkEncoderAudioPacket - Provided by the IDeckLinkEncoderInput audio packet arrival callback. */
 /* Interface IDeckLinkEncoderAudioPacket - Provided by the IDeckLinkEncoderInput audio packet arrival callback. */
 
 
-class IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
+class BMD_PUBLIC IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
 {
 {
 public:
 public:
     virtual BMDAudioFormat GetAudioFormat (void) = 0;
     virtual BMDAudioFormat GetAudioFormat (void) = 0;
@@ -892,7 +1007,7 @@ protected:
 
 
 /* Interface IDeckLinkH265NALPacket - Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object */
 /* Interface IDeckLinkH265NALPacket - Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object */
 
 
-class IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
+class BMD_PUBLIC IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
 {
 {
 public:
 public:
     virtual HRESULT GetUnitType (/* out */ uint8_t *unitType) = 0;
     virtual HRESULT GetUnitType (/* out */ uint8_t *unitType) = 0;
@@ -905,7 +1020,7 @@ protected:
 
 
 /* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */
 /* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */
 
 
-class IDeckLinkAudioInputPacket : public IUnknown
+class BMD_PUBLIC IDeckLinkAudioInputPacket : public IUnknown
 {
 {
 public:
 public:
     virtual long GetSampleFrameCount (void) = 0;
     virtual long GetSampleFrameCount (void) = 0;
@@ -918,7 +1033,7 @@ protected:
 
 
 /* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
 /* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
 
 
-class IDeckLinkScreenPreviewCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkScreenPreviewCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT DrawFrame (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
     virtual HRESULT DrawFrame (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
@@ -929,7 +1044,7 @@ protected:
 
 
 /* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
 /* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
 
 
-class IDeckLinkGLScreenPreviewHelper : public IUnknown
+class BMD_PUBLIC IDeckLinkGLScreenPreviewHelper : public IUnknown
 {
 {
 public:
 public:
 
 
@@ -946,7 +1061,7 @@ protected:
 
 
 /* Interface IDeckLinkNotificationCallback - DeckLink Notification Callback Interface */
 /* Interface IDeckLinkNotificationCallback - DeckLink Notification Callback Interface */
 
 
-class IDeckLinkNotificationCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkNotificationCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT Notify (/* in */ BMDNotifications topic, /* in */ uint64_t param1, /* in */ uint64_t param2) = 0;
     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 */
 /* Interface IDeckLinkNotification - DeckLink Notification interface */
 
 
-class IDeckLinkNotification : public IUnknown
+class BMD_PUBLIC IDeckLinkNotification : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT Subscribe (/* in */ BMDNotifications topic, /* in */ IDeckLinkNotificationCallback *theCallback) = 0;
     virtual HRESULT Subscribe (/* in */ BMDNotifications topic, /* in */ IDeckLinkNotificationCallback *theCallback) = 0;
@@ -963,7 +1078,7 @@ public:
 
 
 /* Interface IDeckLinkAttributes - DeckLink Attribute interface */
 /* Interface IDeckLinkAttributes - DeckLink Attribute interface */
 
 
-class IDeckLinkAttributes : public IUnknown
+class BMD_PUBLIC IDeckLinkAttributes : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkAttributeID cfgID, /* out */ bool *value) = 0;
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkAttributeID cfgID, /* out */ bool *value) = 0;
@@ -977,7 +1092,7 @@ protected:
 
 
 /* Interface IDeckLinkStatus - DeckLink Status interface */
 /* Interface IDeckLinkStatus - DeckLink Status interface */
 
 
-class IDeckLinkStatus : public IUnknown
+class BMD_PUBLIC IDeckLinkStatus : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkStatusID statusID, /* out */ bool *value) = 0;
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkStatusID statusID, /* out */ bool *value) = 0;
@@ -992,7 +1107,7 @@ protected:
 
 
 /* Interface IDeckLinkKeyer - DeckLink Keyer interface */
 /* Interface IDeckLinkKeyer - DeckLink Keyer interface */
 
 
-class IDeckLinkKeyer : public IUnknown
+class BMD_PUBLIC IDeckLinkKeyer : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT Enable (/* in */ bool isExternal) = 0;
     virtual HRESULT Enable (/* in */ bool isExternal) = 0;
@@ -1007,7 +1122,7 @@ protected:
 
 
 /* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
 /* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
 
 
-class IDeckLinkVideoConversion : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoConversion : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT ConvertFrame (/* in */ IDeckLinkVideoFrame* srcFrame, /* in */ IDeckLinkVideoFrame* dstFrame) = 0;
     virtual HRESULT ConvertFrame (/* in */ IDeckLinkVideoFrame* srcFrame, /* in */ IDeckLinkVideoFrame* dstFrame) = 0;
@@ -1018,7 +1133,7 @@ protected:
 
 
 /* Interface IDeckLinkDeviceNotificationCallback - DeckLink device arrival/removal notification callbacks */
 /* Interface IDeckLinkDeviceNotificationCallback - DeckLink device arrival/removal notification callbacks */
 
 
-class IDeckLinkDeviceNotificationCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkDeviceNotificationCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT DeckLinkDeviceArrived (/* in */ IDeckLink* deckLinkDevice) = 0;
     virtual HRESULT DeckLinkDeviceArrived (/* in */ IDeckLink* deckLinkDevice) = 0;
@@ -1030,7 +1145,7 @@ protected:
 
 
 /* Interface IDeckLinkDiscovery - DeckLink device discovery */
 /* Interface IDeckLinkDiscovery - DeckLink device discovery */
 
 
-class IDeckLinkDiscovery : public IUnknown
+class BMD_PUBLIC IDeckLinkDiscovery : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT InstallDeviceNotifications (/* in */ IDeckLinkDeviceNotificationCallback* deviceNotificationCallback) = 0;
     virtual HRESULT InstallDeviceNotifications (/* in */ IDeckLinkDeviceNotificationCallback* deviceNotificationCallback) = 0;
@@ -1044,11 +1159,12 @@ protected:
 
 
 extern "C" {
 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
 
 
 }
 }
 
 

+ 19 - 9
plugins/decklink/linux/decklink-sdk/DeckLinkAPIConfiguration.h

@@ -7,14 +7,14 @@
 ** execute, and transmit the Software, and to prepare derivative works of the
 ** 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
 ** Software, and to permit third-parties to whom the Software is furnished to
 ** do so, all subject to the following:
 ** do so, all subject to the following:
-**
+** 
 ** The copyright notices in the Software and this entire statement, including
 ** The copyright notices in the Software and this entire statement, including
 ** the above license grant, this restriction and the following disclaimer,
 ** 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
 ** 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
 ** all derivative works of the Software, unless such copies or derivative
 ** works are solely in the form of machine-executable object code generated by
 ** works are solely in the form of machine-executable object code generated by
 ** a source language processor.
 ** a source language processor.
-**
+** 
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@@ -37,12 +37,16 @@
     #endif
     #endif
 #endif
 #endif
 
 
+#ifndef BMD_PUBLIC
+	#define BMD_PUBLIC
+#endif
+
 // Type Declarations
 // Type Declarations
 
 
 
 
 // Interface ID 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};
 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 */
 /* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
@@ -54,10 +58,6 @@ enum _BMDDeckLinkConfigurationID {
 
 
     bmdDeckLinkConfigSwapSerialRxTx                              = /* 'ssrt' */ 0x73737274,
     bmdDeckLinkConfigSwapSerialRxTx                              = /* 'ssrt' */ 0x73737274,
 
 
-    /* Video Input/Output Flags */
-
-    bmdDeckLinkConfigUse1080pNotPsF                              = /* 'fpro' */ 0x6670726F,
-
     /* Video Input/Output Integers */
     /* Video Input/Output Integers */
 
 
     bmdDeckLinkConfigHDMI3DPackingFormat                         = /* '3dpf' */ 0x33647066,
     bmdDeckLinkConfigHDMI3DPackingFormat                         = /* '3dpf' */ 0x33647066,
@@ -78,6 +78,12 @@ enum _BMDDeckLinkConfigurationID {
     bmdDeckLinkConfigLowLatencyVideoOutput                       = /* 'llvo' */ 0x6C6C766F,
     bmdDeckLinkConfigLowLatencyVideoOutput                       = /* 'llvo' */ 0x6C6C766F,
     bmdDeckLinkConfigDownConversionOnAllAnalogOutput             = /* 'caao' */ 0x6361616F,
     bmdDeckLinkConfigDownConversionOnAllAnalogOutput             = /* 'caao' */ 0x6361616F,
     bmdDeckLinkConfigSMPTELevelAOutput                           = /* 'smta' */ 0x736D7461,
     bmdDeckLinkConfigSMPTELevelAOutput                           = /* 'smta' */ 0x736D7461,
+    bmdDeckLinkConfigRec2020Output                               = /* 'rec2' */ 0x72656332,	// Ensure output is Rec.2020 colorspace
+    bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit   = /* 'SDQS' */ 0x53445153,
+
+    /* Video Output Flags */
+
+    bmdDeckLinkConfigOutput1080pAsPsF                            = /* 'pfpr' */ 0x70667072,
 
 
     /* Video Output Integers */
     /* Video Output Integers */
 
 
@@ -106,6 +112,10 @@ enum _BMDDeckLinkConfigurationID {
     bmdDeckLinkConfigUseDedicatedLTCInput                        = /* 'dltc' */ 0x646C7463,	// Use timecode from LTC input instead of SDI stream
     bmdDeckLinkConfigUseDedicatedLTCInput                        = /* 'dltc' */ 0x646C7463,	// Use timecode from LTC input instead of SDI stream
     bmdDeckLinkConfigSDIInput3DPayloadOverride                   = /* '3dds' */ 0x33646473,
     bmdDeckLinkConfigSDIInput3DPayloadOverride                   = /* '3dds' */ 0x33646473,
 
 
+    /* Video Input Flags */
+
+    bmdDeckLinkConfigCapture1080pAsPsF                           = /* 'cfpr' */ 0x63667072,
+
     /* Video Input Integers */
     /* Video Input Integers */
 
 
     bmdDeckLinkConfigVideoInputConnection                        = /* 'vicn' */ 0x7669636E,
     bmdDeckLinkConfigVideoInputConnection                        = /* 'vicn' */ 0x7669636E,
@@ -206,7 +216,7 @@ class IDeckLinkEncoderConfiguration;
 
 
 /* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
 /* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
 
 
-class IDeckLinkConfiguration : public IUnknown
+class BMD_PUBLIC IDeckLinkConfiguration : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;
     virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;
@@ -225,7 +235,7 @@ protected:
 
 
 /* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
 /* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
 
 
-class IDeckLinkEncoderConfiguration : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderConfiguration : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;
     virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;

+ 3 - 3
plugins/decklink/linux/decklink-sdk/DeckLinkAPIConfiguration_v10_2.h

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

+ 1 - 1
plugins/decklink/linux/decklink-sdk/DeckLinkAPIConfiguration_v10_4.h

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

+ 3 - 3
plugins/decklink/linux/decklink-sdk/DeckLinkAPIConfiguration_v10_5.h

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

+ 62 - 0
plugins/decklink/linux/decklink-sdk/DeckLinkAPIConfiguration_v10_9.h

@@ -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) */

+ 8 - 4
plugins/decklink/linux/decklink-sdk/DeckLinkAPIDeckControl.h

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

+ 7 - 3
plugins/decklink/linux/decklink-sdk/DeckLinkAPIDiscovery.h

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

+ 27 - 13
plugins/decklink/linux/decklink-sdk/DeckLinkAPIDispatch.cpp

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

+ 146 - 0
plugins/decklink/linux/decklink-sdk/DeckLinkAPIDispatch_v10_8.cpp

@@ -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();
+}

+ 8 - 8
plugins/decklink/linux/decklink-sdk/DeckLinkAPIDispatch_v7_6.cpp

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

+ 10 - 10
plugins/decklink/linux/decklink-sdk/DeckLinkAPIDispatch_v8_0.cpp

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

+ 58 - 12
plugins/decklink/linux/decklink-sdk/DeckLinkAPIModes.h

@@ -7,14 +7,14 @@
 ** execute, and transmit the Software, and to prepare derivative works of the
 ** 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
 ** Software, and to permit third-parties to whom the Software is furnished to
 ** do so, all subject to the following:
 ** do so, all subject to the following:
-**
+** 
 ** The copyright notices in the Software and this entire statement, including
 ** The copyright notices in the Software and this entire statement, including
 ** the above license grant, this restriction and the following disclaimer,
 ** 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
 ** 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
 ** all derivative works of the Software, unless such copies or derivative
 ** works are solely in the form of machine-executable object code generated by
 ** works are solely in the form of machine-executable object code generated by
 ** a source language processor.
 ** a source language processor.
-**
+** 
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@@ -37,6 +37,10 @@
     #endif
     #endif
 #endif
 #endif
 
 
+#ifndef BMD_PUBLIC
+	#define BMD_PUBLIC
+#endif
+
 // Type Declarations
 // Type Declarations
 
 
 
 
@@ -65,12 +69,12 @@ enum _BMDDisplayMode {
     bmdModeHD1080p25                                             = /* 'Hp25' */ 0x48703235,
     bmdModeHD1080p25                                             = /* 'Hp25' */ 0x48703235,
     bmdModeHD1080p2997                                           = /* 'Hp29' */ 0x48703239,
     bmdModeHD1080p2997                                           = /* 'Hp29' */ 0x48703239,
     bmdModeHD1080p30                                             = /* 'Hp30' */ 0x48703330,
     bmdModeHD1080p30                                             = /* 'Hp30' */ 0x48703330,
-    bmdModeHD1080i50                                             = /* 'Hi50' */ 0x48693530,
-    bmdModeHD1080i5994                                           = /* 'Hi59' */ 0x48693539,
-    bmdModeHD1080i6000                                           = /* 'Hi60' */ 0x48693630,	// N.B. This _really_ is 60.00 Hz.
     bmdModeHD1080p50                                             = /* 'Hp50' */ 0x48703530,
     bmdModeHD1080p50                                             = /* 'Hp50' */ 0x48703530,
     bmdModeHD1080p5994                                           = /* 'Hp59' */ 0x48703539,
     bmdModeHD1080p5994                                           = /* 'Hp59' */ 0x48703539,
     bmdModeHD1080p6000                                           = /* 'Hp60' */ 0x48703630,	// N.B. This _really_ is 60.00 Hz.
     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 */
     /* HD 720 Modes */
 
 
@@ -78,19 +82,24 @@ enum _BMDDisplayMode {
     bmdModeHD720p5994                                            = /* 'hp59' */ 0x68703539,
     bmdModeHD720p5994                                            = /* 'hp59' */ 0x68703539,
     bmdModeHD720p60                                              = /* 'hp60' */ 0x68703630,
     bmdModeHD720p60                                              = /* 'hp60' */ 0x68703630,
 
 
-    /* 2k Modes */
+    /* 2K Modes */
 
 
     bmdMode2k2398                                                = /* '2k23' */ 0x326B3233,
     bmdMode2k2398                                                = /* '2k23' */ 0x326B3233,
     bmdMode2k24                                                  = /* '2k24' */ 0x326B3234,
     bmdMode2k24                                                  = /* '2k24' */ 0x326B3234,
     bmdMode2k25                                                  = /* '2k25' */ 0x326B3235,
     bmdMode2k25                                                  = /* '2k25' */ 0x326B3235,
 
 
-    /* DCI Modes (output only) */
+    /* 2K DCI Modes */
 
 
     bmdMode2kDCI2398                                             = /* '2d23' */ 0x32643233,
     bmdMode2kDCI2398                                             = /* '2d23' */ 0x32643233,
     bmdMode2kDCI24                                               = /* '2d24' */ 0x32643234,
     bmdMode2kDCI24                                               = /* '2d24' */ 0x32643234,
     bmdMode2kDCI25                                               = /* '2d25' */ 0x32643235,
     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,
     bmdMode4K2160p2398                                           = /* '4k23' */ 0x346B3233,
     bmdMode4K2160p24                                             = /* '4k24' */ 0x346B3234,
     bmdMode4K2160p24                                             = /* '4k24' */ 0x346B3234,
@@ -101,11 +110,43 @@ enum _BMDDisplayMode {
     bmdMode4K2160p5994                                           = /* '4k59' */ 0x346B3539,
     bmdMode4K2160p5994                                           = /* '4k59' */ 0x346B3539,
     bmdMode4K2160p60                                             = /* '4k60' */ 0x346B3630,
     bmdMode4K2160p60                                             = /* '4k60' */ 0x346B3630,
 
 
-    /* DCI Modes (output only) */
+    /* 4K DCI Modes */
 
 
     bmdMode4kDCI2398                                             = /* '4d23' */ 0x34643233,
     bmdMode4kDCI2398                                             = /* '4d23' */ 0x34643233,
     bmdMode4kDCI24                                               = /* '4d24' */ 0x34643234,
     bmdMode4kDCI24                                               = /* '4d24' */ 0x34643234,
     bmdMode4kDCI25                                               = /* '4d25' */ 0x34643235,
     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 */
     /* Special Modes */
 
 
@@ -140,7 +181,12 @@ enum _BMDPixelFormat {
 
 
     /* AVID DNxHR */
     /* 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. */
 /* 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. */
 /* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */
 
 
-class IDeckLinkDisplayModeIterator : public IUnknown
+class BMD_PUBLIC IDeckLinkDisplayModeIterator : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT Next (/* out */ IDeckLinkDisplayMode **deckLinkDisplayMode) = 0;
     virtual HRESULT Next (/* out */ IDeckLinkDisplayMode **deckLinkDisplayMode) = 0;
@@ -170,7 +216,7 @@ protected:
 
 
 /* Interface IDeckLinkDisplayMode - represents a display mode */
 /* Interface IDeckLinkDisplayMode - represents a display mode */
 
 
-class IDeckLinkDisplayMode : public IUnknown
+class BMD_PUBLIC IDeckLinkDisplayMode : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT GetName (/* out */ const char **name) = 0;
     virtual HRESULT GetName (/* out */ const char **name) = 0;

+ 9 - 4
plugins/decklink/linux/decklink-sdk/DeckLinkAPITypes.h

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

+ 4 - 4
plugins/decklink/linux/decklink-sdk/DeckLinkAPIVersion.h

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

+ 3 - 3
plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v10_2.h

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

+ 45 - 0
plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v10_9.h

@@ -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) */

+ 27 - 27
plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v7_1.h

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

+ 6 - 6
plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v7_3.h

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

+ 35 - 35
plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v7_6.h

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

+ 4 - 4
plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v7_9.h

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

+ 5 - 5
plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v8_0.h

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

+ 6 - 6
plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v8_1.h

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

+ 3 - 3
plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v9_2.h

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

+ 3 - 3
plugins/decklink/linux/decklink-sdk/DeckLinkAPI_v9_9.h

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

+ 13 - 8
plugins/decklink/linux/decklink-sdk/LinuxCOM.h

@@ -7,14 +7,14 @@
 ** execute, and transmit the Software, and to prepare derivative works of the
 ** 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
 ** Software, and to permit third-parties to whom the Software is furnished to
 ** do so, all subject to the following:
 ** do so, all subject to the following:
-**
+** 
 ** The copyright notices in the Software and this entire statement, including
 ** The copyright notices in the Software and this entire statement, including
 ** the above license grant, this restriction and the following disclaimer,
 ** 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
 ** 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
 ** all derivative works of the Software, unless such copies or derivative
 ** works are solely in the form of machine-executable object code generated by
 ** works are solely in the form of machine-executable object code generated by
 ** a source language processor.
 ** a source language processor.
-**
+** 
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@@ -29,7 +29,7 @@
 #define __LINUX_COM_H_
 #define __LINUX_COM_H_
 
 
 struct REFIID
 struct REFIID
-{
+{	
 	unsigned char byte0;
 	unsigned char byte0;
 	unsigned char byte1;
 	unsigned char byte1;
 	unsigned char byte2;
 	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 IID_IUnknown		(REFIID){0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x46}
 #define IUnknownUUID		IID_IUnknown
 #define IUnknownUUID		IID_IUnknown
 
 
+#ifndef BMD_PUBLIC
+	#define BMD_PUBLIC
+#endif
+
 #ifdef __cplusplus
 #ifdef __cplusplus
-class IUnknown
+class BMD_PUBLIC IUnknown
 {
 {
     public:
     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
+#endif 
+

+ 177 - 61
plugins/decklink/mac/decklink-sdk/DeckLinkAPI.h

@@ -7,14 +7,14 @@
 ** execute, and transmit the Software, and to prepare derivative works of the
 ** 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
 ** Software, and to permit third-parties to whom the Software is furnished to
 ** do so, all subject to the following:
 ** do so, all subject to the following:
-**
+** 
 ** The copyright notices in the Software and this entire statement, including
 ** The copyright notices in the Software and this entire statement, including
 ** the above license grant, this restriction and the following disclaimer,
 ** 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
 ** 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
 ** all derivative works of the Software, unless such copies or derivative
 ** works are solely in the form of machine-executable object code generated by
 ** works are solely in the form of machine-executable object code generated by
 ** a source language processor.
 ** a source language processor.
-**
+** 
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@@ -37,6 +37,10 @@
     #endif
     #endif
 #endif
 #endif
 
 
+#ifndef BMD_PUBLIC
+	#define BMD_PUBLIC
+#endif
+
 /* DeckLink API */
 /* DeckLink API */
 
 
 #include <CoreFoundation/CoreFoundation.h>
 #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_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_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_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_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_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};
 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,
     bmdFrameFlagDefault                                          = 0,
     bmdFrameFlagFlipVertical                                     = 1 << 0,
     bmdFrameFlagFlipVertical                                     = 1 << 0,
     bmdFrameContainsHDRMetadata                                  = 1 << 1,
     bmdFrameContainsHDRMetadata                                  = 1 << 1,
+    bmdFrameContainsCintelMetadata                               = 1 << 2,
 
 
     /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
     /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
 
 
+    bmdFrameCapturedAsPsF                                        = 1 << 30,
     bmdFrameHasNoInputSource                                     = 1 << 31
     bmdFrameHasNoInputSource                                     = 1 << 31
 };
 };
 
 
@@ -163,10 +172,10 @@ enum _BMDDeckLinkCapturePassthroughMode {
 
 
 typedef uint32_t BMDOutputFrameCompletionResult;
 typedef uint32_t BMDOutputFrameCompletionResult;
 enum _BMDOutputFrameCompletionResult {
 enum _BMDOutputFrameCompletionResult {
-    bmdOutputFrameCompleted,
-    bmdOutputFrameDisplayedLate,
-    bmdOutputFrameDropped,
-    bmdOutputFrameFlushed
+    bmdOutputFrameCompleted,                                    
+    bmdOutputFrameDisplayedLate,                                
+    bmdOutputFrameDropped,                                      
+    bmdOutputFrameFlushed                                       
 };
 };
 
 
 /* Enum BMDReferenceStatus - GenLock input status */
 /* Enum BMDReferenceStatus - GenLock input status */
@@ -203,9 +212,9 @@ enum _BMDAudioSampleType {
 
 
 typedef uint32_t BMDAudioOutputStreamType;
 typedef uint32_t BMDAudioOutputStreamType;
 enum _BMDAudioOutputStreamType {
 enum _BMDAudioOutputStreamType {
-    bmdAudioOutputStreamContinuous,
-    bmdAudioOutputStreamContinuousDontResample,
-    bmdAudioOutputStreamTimestamped
+    bmdAudioOutputStreamContinuous,                             
+    bmdAudioOutputStreamContinuousDontResample,                 
+    bmdAudioOutputStreamTimestamped                             
 };
 };
 
 
 /* Enum BMDDisplayModeSupport - Output mode supported flags */
 /* Enum BMDDisplayModeSupport - Output mode supported flags */
@@ -213,8 +222,17 @@ enum _BMDAudioOutputStreamType {
 typedef uint32_t BMDDisplayModeSupport;
 typedef uint32_t BMDDisplayModeSupport;
 enum _BMDDisplayModeSupport {
 enum _BMDDisplayModeSupport {
     bmdDisplayModeNotSupported                                   = 0,
     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 */
 /* Enum BMDTimecodeFormat - Timecode formats for frame metadata */
@@ -341,6 +359,37 @@ enum _BMDDeviceInterface {
 typedef uint32_t BMDDeckLinkFrameMetadataID;
 typedef uint32_t BMDDeckLinkFrameMetadataID;
 enum _BMDDeckLinkFrameMetadataID {
 enum _BMDDeckLinkFrameMetadataID {
     bmdDeckLinkFrameMetadataHDRElectroOpticalTransferFunc        = 'eotf',	// EOTF in range 0-7 as per CEA 861.3
     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
     bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedX              = 'hdrx',	// Red display primaries in range 0.0 - 1.0
     bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedY              = 'hdry',	// 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
     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
     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
     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
     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 */
 /* Enum BMDDuplexMode - Duplex for configurable ports */
@@ -394,18 +451,19 @@ enum _BMDDeckLinkAttributeID {
     /* Integers */
     /* Integers */
 
 
     BMDDeckLinkMaximumAudioChannels                              = 'mach',
     BMDDeckLinkMaximumAudioChannels                              = 'mach',
-    BMDDeckLinkMaximumAnalogAudioChannels                        = 'aach',
+    BMDDeckLinkMaximumAnalogAudioInputChannels                   = 'iach',
+    BMDDeckLinkMaximumAnalogAudioOutputChannels                  = 'aach',
     BMDDeckLinkNumberOfSubDevices                                = 'nsbd',
     BMDDeckLinkNumberOfSubDevices                                = 'nsbd',
     BMDDeckLinkSubDeviceIndex                                    = 'subi',
     BMDDeckLinkSubDeviceIndex                                    = 'subi',
     BMDDeckLinkPersistentID                                      = 'peid',
     BMDDeckLinkPersistentID                                      = 'peid',
     BMDDeckLinkDeviceGroupID                                     = 'dgid',
     BMDDeckLinkDeviceGroupID                                     = 'dgid',
     BMDDeckLinkTopologicalID                                     = 'toid',
     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
     BMDDeckLinkVideoIOSupport                                    = 'vios',	// Returns a BMDVideoIOSupport bit field
-    BMDDeckLinkDeckControlConnections                            = 'dccn',
+    BMDDeckLinkDeckControlConnections                            = 'dccn',	// Returns a BMDDeckControlConnection bit field
     BMDDeckLinkDeviceInterface                                   = 'dbus',	// Returns a BMDDeviceInterface
     BMDDeckLinkDeviceInterface                                   = 'dbus',	// Returns a BMDDeviceInterface
     BMDDeckLinkAudioInputRCAChannelCount                         = 'airc',
     BMDDeckLinkAudioInputRCAChannelCount                         = 'airc',
     BMDDeckLinkAudioInputXLRChannelCount                         = 'aixc',
     BMDDeckLinkAudioInputXLRChannelCount                         = 'aixc',
@@ -459,11 +517,14 @@ enum _BMDDeckLinkStatusID {
     bmdDeckLinkStatusReferenceSignalFlags                        = 'reff',
     bmdDeckLinkStatusReferenceSignalFlags                        = 'reff',
     bmdDeckLinkStatusDuplexMode                                  = 'dupx',
     bmdDeckLinkStatusDuplexMode                                  = 'dupx',
     bmdDeckLinkStatusBusy                                        = 'busy',
     bmdDeckLinkStatusBusy                                        = 'busy',
+    bmdDeckLinkStatusInterchangeablePanelType                    = 'icpt',
+    bmdDeckLinkStatusDeviceTemperature                           = 'dtmp',
 
 
     /* Flags */
     /* Flags */
 
 
     bmdDeckLinkStatusVideoInputSignalLocked                      = 'visl',
     bmdDeckLinkStatusVideoInputSignalLocked                      = 'visl',
-    bmdDeckLinkStatusReferenceSignalLocked                       = 'refl'
+    bmdDeckLinkStatusReferenceSignalLocked                       = 'refl',
+    bmdDeckLinkStatusReceivedEDID                                = 'edid'
 };
 };
 
 
 /* Enum BMDDeckLinkVideoStatusFlags -  */
 /* Enum BMDDeckLinkVideoStatusFlags -  */
@@ -484,6 +545,14 @@ enum _BMDDuplexStatus {
     bmdDuplexStatusInactive                                      = 'inac'
     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 */
 /* Enum BMDDeviceBusyState - Current device busy state */
 
 
 typedef uint32_t BMDDeviceBusyState;
 typedef uint32_t BMDDeviceBusyState;
@@ -539,6 +608,9 @@ class IDeckLinkMutableVideoFrame;
 class IDeckLinkVideoFrame3DExtensions;
 class IDeckLinkVideoFrame3DExtensions;
 class IDeckLinkVideoFrameMetadataExtensions;
 class IDeckLinkVideoFrameMetadataExtensions;
 class IDeckLinkVideoInputFrame;
 class IDeckLinkVideoInputFrame;
+class IDeckLinkAncillaryPacket;
+class IDeckLinkAncillaryPacketIterator;
+class IDeckLinkVideoFrameAncillaryPackets;
 class IDeckLinkVideoFrameAncillary;
 class IDeckLinkVideoFrameAncillary;
 class IDeckLinkEncoderPacket;
 class IDeckLinkEncoderPacket;
 class IDeckLinkEncoderVideoPacket;
 class IDeckLinkEncoderVideoPacket;
@@ -559,7 +631,7 @@ class IDeckLinkDiscovery;
 
 
 /* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
 /* Interface IDeckLinkVideoOutputCallback - Frame completion callback. */
 
 
-class IDeckLinkVideoOutputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoOutputCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT ScheduledFrameCompleted (/* in */ IDeckLinkVideoFrame *completedFrame, /* in */ BMDOutputFrameCompletionResult result) = 0;
     virtual HRESULT ScheduledFrameCompleted (/* in */ IDeckLinkVideoFrame *completedFrame, /* in */ BMDOutputFrameCompletionResult result) = 0;
@@ -571,7 +643,7 @@ protected:
 
 
 /* Interface IDeckLinkInputCallback - Frame arrival callback. */
 /* Interface IDeckLinkInputCallback - Frame arrival callback. */
 
 
-class IDeckLinkInputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkInputCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT VideoInputFormatChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
     virtual HRESULT VideoInputFormatChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
@@ -583,7 +655,7 @@ protected:
 
 
 /* Interface IDeckLinkEncoderInputCallback - Frame arrival callback. */
 /* Interface IDeckLinkEncoderInputCallback - Frame arrival callback. */
 
 
-class IDeckLinkEncoderInputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderInputCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT VideoInputSignalChanged (/* in */ BMDVideoInputFormatChangedEvents notificationEvents, /* in */ IDeckLinkDisplayMode *newDisplayMode, /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0;
     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. */
 /* Interface IDeckLinkMemoryAllocator - Memory allocator for video frames. */
 
 
-class IDeckLinkMemoryAllocator : public IUnknown
+class BMD_PUBLIC IDeckLinkMemoryAllocator : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT AllocateBuffer (/* in */ uint32_t bufferSize, /* out */ void **allocatedBuffer) = 0;
     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. */
 /* Interface IDeckLinkAudioOutputCallback - Optional callback to allow audio samples to be pulled as required. */
 
 
-class IDeckLinkAudioOutputCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkAudioOutputCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT RenderAudioSamples (/* in */ bool preroll) = 0;
     virtual HRESULT RenderAudioSamples (/* in */ bool preroll) = 0;
@@ -616,7 +688,7 @@ public:
 
 
 /* Interface IDeckLinkIterator - enumerates installed DeckLink hardware */
 /* Interface IDeckLinkIterator - enumerates installed DeckLink hardware */
 
 
-class IDeckLinkIterator : public IUnknown
+class BMD_PUBLIC IDeckLinkIterator : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT Next (/* out */ IDeckLink **deckLinkInstance) = 0;
     virtual HRESULT Next (/* out */ IDeckLink **deckLinkInstance) = 0;
@@ -624,7 +696,7 @@ public:
 
 
 /* Interface IDeckLinkAPIInformation - DeckLinkAPI attribute interface */
 /* Interface IDeckLinkAPIInformation - DeckLinkAPI attribute interface */
 
 
-class IDeckLinkAPIInformation : public IUnknown
+class BMD_PUBLIC IDeckLinkAPIInformation : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkAPIInformationID cfgID, /* out */ bool *value) = 0;
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkAPIInformationID cfgID, /* out */ bool *value) = 0;
@@ -638,7 +710,7 @@ protected:
 
 
 /* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
 /* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
 
 
-class IDeckLinkOutput : public IUnknown
+class BMD_PUBLIC IDeckLinkOutput : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoOutputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
     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 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 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 DisplayVideoFrameSync (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
     virtual HRESULT ScheduleVideoFrame (/* in */ IDeckLinkVideoFrame *theFrame, /* in */ BMDTimeValue displayTime, /* in */ BMDTimeValue displayDuration, /* in */ BMDTimeScale timeScale) = 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. */
 /* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
 
 
-class IDeckLinkInput : public IUnknown
+class BMD_PUBLIC IDeckLinkInput : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
     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. */
 /* Interface IDeckLinkEncoderInput - Created by QueryInterface from IDeckLink. */
 
 
-class IDeckLinkEncoderInput : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderInput : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT DoesSupportVideoMode (/* in */ BMDDisplayMode displayMode, /* in */ BMDPixelFormat pixelFormat, /* in */ BMDVideoInputFlags flags, /* out */ BMDDisplayModeSupport *result, /* out */ IDeckLinkDisplayMode **resultDisplayMode) = 0;
     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. */
 /* Interface IDeckLinkVideoFrame - Interface to encapsulate a video frame; can be caller-implemented. */
 
 
-class IDeckLinkVideoFrame : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoFrame : public IUnknown
 {
 {
 public:
 public:
     virtual long GetWidth (void) = 0;
     virtual long GetWidth (void) = 0;
@@ -782,7 +854,7 @@ public:
     virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
     virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
 
 
     virtual HRESULT GetTimecode (/* in */ BMDTimecodeFormat format, /* out */ IDeckLinkTimecode **timecode) = 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:
 protected:
     virtual ~IDeckLinkVideoFrame () {} // call Release method to drop reference count
     virtual ~IDeckLinkVideoFrame () {} // call Release method to drop reference count
@@ -790,7 +862,7 @@ protected:
 
 
 /* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
 /* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
 
 
-class IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
+class BMD_PUBLIC IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame
 {
 {
 public:
 public:
     virtual HRESULT SetFlags (/* in */ BMDFrameFlags newFlags) = 0;
     virtual HRESULT SetFlags (/* in */ BMDFrameFlags newFlags) = 0;
@@ -806,7 +878,7 @@ protected:
 
 
 /* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */
 /* Interface IDeckLinkVideoFrame3DExtensions - Optional interface implemented on IDeckLinkVideoFrame to support 3D frames */
 
 
-class IDeckLinkVideoFrame3DExtensions : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoFrame3DExtensions : public IUnknown
 {
 {
 public:
 public:
     virtual BMDVideo3DPackingFormat Get3DPackingFormat (void) = 0;
     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 */
 /* 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:
 public:
     virtual HRESULT GetInt (/* in */ BMDDeckLinkFrameMetadataID metadataID, /* out */ int64_t *value) = 0;
     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. */
 /* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
 
 
-class IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
+class BMD_PUBLIC IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame
 {
 {
 public:
 public:
     virtual HRESULT GetStreamTime (/* out */ BMDTimeValue *frameTime, /* out */ BMDTimeValue *frameDuration, /* in */ BMDTimeScale timeScale) = 0;
     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
     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:
 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 BMDPixelFormat GetPixelFormat (void) = 0;
     virtual BMDDisplayMode GetDisplayMode (void) = 0;
     virtual BMDDisplayMode GetDisplayMode (void) = 0;
 
 
@@ -858,7 +973,7 @@ protected:
 
 
 /* Interface IDeckLinkEncoderPacket - Interface to encapsulate an encoded packet. */
 /* Interface IDeckLinkEncoderPacket - Interface to encapsulate an encoded packet. */
 
 
-class IDeckLinkEncoderPacket : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderPacket : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
     virtual HRESULT GetBytes (/* out */ void **buffer) = 0;
@@ -872,7 +987,7 @@ protected:
 
 
 /* Interface IDeckLinkEncoderVideoPacket - Provided by the IDeckLinkEncoderInput video packet arrival callback. */
 /* Interface IDeckLinkEncoderVideoPacket - Provided by the IDeckLinkEncoderInput video packet arrival callback. */
 
 
-class IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
+class BMD_PUBLIC IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket
 {
 {
 public:
 public:
     virtual BMDPixelFormat GetPixelFormat (void) = 0;
     virtual BMDPixelFormat GetPixelFormat (void) = 0;
@@ -886,7 +1001,7 @@ protected:
 
 
 /* Interface IDeckLinkEncoderAudioPacket - Provided by the IDeckLinkEncoderInput audio packet arrival callback. */
 /* Interface IDeckLinkEncoderAudioPacket - Provided by the IDeckLinkEncoderInput audio packet arrival callback. */
 
 
-class IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
+class BMD_PUBLIC IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket
 {
 {
 public:
 public:
     virtual BMDAudioFormat GetAudioFormat (void) = 0;
     virtual BMDAudioFormat GetAudioFormat (void) = 0;
@@ -897,7 +1012,7 @@ protected:
 
 
 /* Interface IDeckLinkH265NALPacket - Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object */
 /* Interface IDeckLinkH265NALPacket - Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object */
 
 
-class IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
+class BMD_PUBLIC IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket
 {
 {
 public:
 public:
     virtual HRESULT GetUnitType (/* out */ uint8_t *unitType) = 0;
     virtual HRESULT GetUnitType (/* out */ uint8_t *unitType) = 0;
@@ -910,7 +1025,7 @@ protected:
 
 
 /* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */
 /* Interface IDeckLinkAudioInputPacket - Provided by the IDeckLinkInput callback. */
 
 
-class IDeckLinkAudioInputPacket : public IUnknown
+class BMD_PUBLIC IDeckLinkAudioInputPacket : public IUnknown
 {
 {
 public:
 public:
     virtual long GetSampleFrameCount (void) = 0;
     virtual long GetSampleFrameCount (void) = 0;
@@ -923,7 +1038,7 @@ protected:
 
 
 /* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
 /* Interface IDeckLinkScreenPreviewCallback - Screen preview callback */
 
 
-class IDeckLinkScreenPreviewCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkScreenPreviewCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT DrawFrame (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
     virtual HRESULT DrawFrame (/* in */ IDeckLinkVideoFrame *theFrame) = 0;
@@ -934,7 +1049,7 @@ protected:
 
 
 /* Interface IDeckLinkCocoaScreenPreviewCallback - Screen preview callback for Cocoa-based applications */
 /* Interface IDeckLinkCocoaScreenPreviewCallback - Screen preview callback for Cocoa-based applications */
 
 
-class IDeckLinkCocoaScreenPreviewCallback : public IDeckLinkScreenPreviewCallback
+class BMD_PUBLIC IDeckLinkCocoaScreenPreviewCallback : public IDeckLinkScreenPreviewCallback
 {
 {
 public:
 public:
 
 
@@ -944,7 +1059,7 @@ protected:
 
 
 /* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
 /* Interface IDeckLinkGLScreenPreviewHelper - Created with CoCreateInstance(). */
 
 
-class IDeckLinkGLScreenPreviewHelper : public IUnknown
+class BMD_PUBLIC IDeckLinkGLScreenPreviewHelper : public IUnknown
 {
 {
 public:
 public:
 
 
@@ -961,7 +1076,7 @@ protected:
 
 
 /* Interface IDeckLinkNotificationCallback - DeckLink Notification Callback Interface */
 /* Interface IDeckLinkNotificationCallback - DeckLink Notification Callback Interface */
 
 
-class IDeckLinkNotificationCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkNotificationCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT Notify (/* in */ BMDNotifications topic, /* in */ uint64_t param1, /* in */ uint64_t param2) = 0;
     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 */
 /* Interface IDeckLinkNotification - DeckLink Notification interface */
 
 
-class IDeckLinkNotification : public IUnknown
+class BMD_PUBLIC IDeckLinkNotification : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT Subscribe (/* in */ BMDNotifications topic, /* in */ IDeckLinkNotificationCallback *theCallback) = 0;
     virtual HRESULT Subscribe (/* in */ BMDNotifications topic, /* in */ IDeckLinkNotificationCallback *theCallback) = 0;
@@ -978,7 +1093,7 @@ public:
 
 
 /* Interface IDeckLinkAttributes - DeckLink Attribute interface */
 /* Interface IDeckLinkAttributes - DeckLink Attribute interface */
 
 
-class IDeckLinkAttributes : public IUnknown
+class BMD_PUBLIC IDeckLinkAttributes : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkAttributeID cfgID, /* out */ bool *value) = 0;
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkAttributeID cfgID, /* out */ bool *value) = 0;
@@ -992,7 +1107,7 @@ protected:
 
 
 /* Interface IDeckLinkStatus - DeckLink Status interface */
 /* Interface IDeckLinkStatus - DeckLink Status interface */
 
 
-class IDeckLinkStatus : public IUnknown
+class BMD_PUBLIC IDeckLinkStatus : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkStatusID statusID, /* out */ bool *value) = 0;
     virtual HRESULT GetFlag (/* in */ BMDDeckLinkStatusID statusID, /* out */ bool *value) = 0;
@@ -1007,7 +1122,7 @@ protected:
 
 
 /* Interface IDeckLinkKeyer - DeckLink Keyer interface */
 /* Interface IDeckLinkKeyer - DeckLink Keyer interface */
 
 
-class IDeckLinkKeyer : public IUnknown
+class BMD_PUBLIC IDeckLinkKeyer : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT Enable (/* in */ bool isExternal) = 0;
     virtual HRESULT Enable (/* in */ bool isExternal) = 0;
@@ -1022,7 +1137,7 @@ protected:
 
 
 /* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
 /* Interface IDeckLinkVideoConversion - Created with CoCreateInstance(). */
 
 
-class IDeckLinkVideoConversion : public IUnknown
+class BMD_PUBLIC IDeckLinkVideoConversion : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT ConvertFrame (/* in */ IDeckLinkVideoFrame* srcFrame, /* in */ IDeckLinkVideoFrame* dstFrame) = 0;
     virtual HRESULT ConvertFrame (/* in */ IDeckLinkVideoFrame* srcFrame, /* in */ IDeckLinkVideoFrame* dstFrame) = 0;
@@ -1033,7 +1148,7 @@ protected:
 
 
 /* Interface IDeckLinkDeviceNotificationCallback - DeckLink device arrival/removal notification callbacks */
 /* Interface IDeckLinkDeviceNotificationCallback - DeckLink device arrival/removal notification callbacks */
 
 
-class IDeckLinkDeviceNotificationCallback : public IUnknown
+class BMD_PUBLIC IDeckLinkDeviceNotificationCallback : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT DeckLinkDeviceArrived (/* in */ IDeckLink* deckLinkDevice) = 0;
     virtual HRESULT DeckLinkDeviceArrived (/* in */ IDeckLink* deckLinkDevice) = 0;
@@ -1045,7 +1160,7 @@ protected:
 
 
 /* Interface IDeckLinkDiscovery - DeckLink device discovery */
 /* Interface IDeckLinkDiscovery - DeckLink device discovery */
 
 
-class IDeckLinkDiscovery : public IUnknown
+class BMD_PUBLIC IDeckLinkDiscovery : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT InstallDeviceNotifications (/* in */ IDeckLinkDeviceNotificationCallback* deviceNotificationCallback) = 0;
     virtual HRESULT InstallDeviceNotifications (/* in */ IDeckLinkDeviceNotificationCallback* deviceNotificationCallback) = 0;
@@ -1059,12 +1174,13 @@ protected:
 
 
 extern "C" {
 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
 
 
 }
 }
 
 

+ 19 - 9
plugins/decklink/mac/decklink-sdk/DeckLinkAPIConfiguration.h

@@ -7,14 +7,14 @@
 ** execute, and transmit the Software, and to prepare derivative works of the
 ** 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
 ** Software, and to permit third-parties to whom the Software is furnished to
 ** do so, all subject to the following:
 ** do so, all subject to the following:
-**
+** 
 ** The copyright notices in the Software and this entire statement, including
 ** The copyright notices in the Software and this entire statement, including
 ** the above license grant, this restriction and the following disclaimer,
 ** 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
 ** 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
 ** all derivative works of the Software, unless such copies or derivative
 ** works are solely in the form of machine-executable object code generated by
 ** works are solely in the form of machine-executable object code generated by
 ** a source language processor.
 ** a source language processor.
-**
+** 
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@@ -37,12 +37,16 @@
     #endif
     #endif
 #endif
 #endif
 
 
+#ifndef BMD_PUBLIC
+	#define BMD_PUBLIC
+#endif
+
 // Type Declarations
 // Type Declarations
 
 
 
 
 // Interface ID 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};
 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 */
 /* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
@@ -54,10 +58,6 @@ enum _BMDDeckLinkConfigurationID {
 
 
     bmdDeckLinkConfigSwapSerialRxTx                              = 'ssrt',
     bmdDeckLinkConfigSwapSerialRxTx                              = 'ssrt',
 
 
-    /* Video Input/Output Flags */
-
-    bmdDeckLinkConfigUse1080pNotPsF                              = 'fpro',
-
     /* Video Input/Output Integers */
     /* Video Input/Output Integers */
 
 
     bmdDeckLinkConfigHDMI3DPackingFormat                         = '3dpf',
     bmdDeckLinkConfigHDMI3DPackingFormat                         = '3dpf',
@@ -78,6 +78,12 @@ enum _BMDDeckLinkConfigurationID {
     bmdDeckLinkConfigLowLatencyVideoOutput                       = 'llvo',
     bmdDeckLinkConfigLowLatencyVideoOutput                       = 'llvo',
     bmdDeckLinkConfigDownConversionOnAllAnalogOutput             = 'caao',
     bmdDeckLinkConfigDownConversionOnAllAnalogOutput             = 'caao',
     bmdDeckLinkConfigSMPTELevelAOutput                           = 'smta',
     bmdDeckLinkConfigSMPTELevelAOutput                           = 'smta',
+    bmdDeckLinkConfigRec2020Output                               = 'rec2',	// Ensure output is Rec.2020 colorspace
+    bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit   = 'SDQS',
+
+    /* Video Output Flags */
+
+    bmdDeckLinkConfigOutput1080pAsPsF                            = 'pfpr',
 
 
     /* Video Output Integers */
     /* Video Output Integers */
 
 
@@ -106,6 +112,10 @@ enum _BMDDeckLinkConfigurationID {
     bmdDeckLinkConfigUseDedicatedLTCInput                        = 'dltc',	// Use timecode from LTC input instead of SDI stream
     bmdDeckLinkConfigUseDedicatedLTCInput                        = 'dltc',	// Use timecode from LTC input instead of SDI stream
     bmdDeckLinkConfigSDIInput3DPayloadOverride                   = '3dds',
     bmdDeckLinkConfigSDIInput3DPayloadOverride                   = '3dds',
 
 
+    /* Video Input Flags */
+
+    bmdDeckLinkConfigCapture1080pAsPsF                           = 'cfpr',
+
     /* Video Input Integers */
     /* Video Input Integers */
 
 
     bmdDeckLinkConfigVideoInputConnection                        = 'vicn',
     bmdDeckLinkConfigVideoInputConnection                        = 'vicn',
@@ -206,7 +216,7 @@ class IDeckLinkEncoderConfiguration;
 
 
 /* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
 /* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
 
 
-class IDeckLinkConfiguration : public IUnknown
+class BMD_PUBLIC IDeckLinkConfiguration : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;
     virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0;
@@ -225,7 +235,7 @@ protected:
 
 
 /* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
 /* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
 
 
-class IDeckLinkEncoderConfiguration : public IUnknown
+class BMD_PUBLIC IDeckLinkEncoderConfiguration : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;
     virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0;

+ 2 - 2
plugins/decklink/mac/decklink-sdk/DeckLinkAPIConfiguration_v10_2.h

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

+ 2 - 2
plugins/decklink/mac/decklink-sdk/DeckLinkAPIConfiguration_v10_5.h

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

+ 62 - 0
plugins/decklink/mac/decklink-sdk/DeckLinkAPIConfiguration_v10_9.h

@@ -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) */

+ 8 - 4
plugins/decklink/mac/decklink-sdk/DeckLinkAPIDeckControl.h

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

+ 7 - 3
plugins/decklink/mac/decklink-sdk/DeckLinkAPIDiscovery.h

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

+ 31 - 18
plugins/decklink/mac/decklink-sdk/DeckLinkAPIDispatch.cpp

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

+ 193 - 0
plugins/decklink/mac/decklink-sdk/DeckLinkAPIDispatch_v10_8.cpp

@@ -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();
+}

+ 10 - 10
plugins/decklink/mac/decklink-sdk/DeckLinkAPIDispatch_v7_6.cpp

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

+ 13 - 13
plugins/decklink/mac/decklink-sdk/DeckLinkAPIDispatch_v8_0.cpp

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

+ 58 - 12
plugins/decklink/mac/decklink-sdk/DeckLinkAPIModes.h

@@ -7,14 +7,14 @@
 ** execute, and transmit the Software, and to prepare derivative works of the
 ** 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
 ** Software, and to permit third-parties to whom the Software is furnished to
 ** do so, all subject to the following:
 ** do so, all subject to the following:
-**
+** 
 ** The copyright notices in the Software and this entire statement, including
 ** The copyright notices in the Software and this entire statement, including
 ** the above license grant, this restriction and the following disclaimer,
 ** 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
 ** 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
 ** all derivative works of the Software, unless such copies or derivative
 ** works are solely in the form of machine-executable object code generated by
 ** works are solely in the form of machine-executable object code generated by
 ** a source language processor.
 ** a source language processor.
-**
+** 
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@@ -37,6 +37,10 @@
     #endif
     #endif
 #endif
 #endif
 
 
+#ifndef BMD_PUBLIC
+	#define BMD_PUBLIC
+#endif
+
 // Type Declarations
 // Type Declarations
 
 
 
 
@@ -65,12 +69,12 @@ enum _BMDDisplayMode {
     bmdModeHD1080p25                                             = 'Hp25',
     bmdModeHD1080p25                                             = 'Hp25',
     bmdModeHD1080p2997                                           = 'Hp29',
     bmdModeHD1080p2997                                           = 'Hp29',
     bmdModeHD1080p30                                             = 'Hp30',
     bmdModeHD1080p30                                             = 'Hp30',
-    bmdModeHD1080i50                                             = 'Hi50',
-    bmdModeHD1080i5994                                           = 'Hi59',
-    bmdModeHD1080i6000                                           = 'Hi60',	// N.B. This _really_ is 60.00 Hz.
     bmdModeHD1080p50                                             = 'Hp50',
     bmdModeHD1080p50                                             = 'Hp50',
     bmdModeHD1080p5994                                           = 'Hp59',
     bmdModeHD1080p5994                                           = 'Hp59',
     bmdModeHD1080p6000                                           = 'Hp60',	// N.B. This _really_ is 60.00 Hz.
     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 */
     /* HD 720 Modes */
 
 
@@ -78,19 +82,24 @@ enum _BMDDisplayMode {
     bmdModeHD720p5994                                            = 'hp59',
     bmdModeHD720p5994                                            = 'hp59',
     bmdModeHD720p60                                              = 'hp60',
     bmdModeHD720p60                                              = 'hp60',
 
 
-    /* 2k Modes */
+    /* 2K Modes */
 
 
     bmdMode2k2398                                                = '2k23',
     bmdMode2k2398                                                = '2k23',
     bmdMode2k24                                                  = '2k24',
     bmdMode2k24                                                  = '2k24',
     bmdMode2k25                                                  = '2k25',
     bmdMode2k25                                                  = '2k25',
 
 
-    /* DCI Modes (output only) */
+    /* 2K DCI Modes */
 
 
     bmdMode2kDCI2398                                             = '2d23',
     bmdMode2kDCI2398                                             = '2d23',
     bmdMode2kDCI24                                               = '2d24',
     bmdMode2kDCI24                                               = '2d24',
     bmdMode2kDCI25                                               = '2d25',
     bmdMode2kDCI25                                               = '2d25',
+    bmdMode2kDCI2997                                             = '2d29',
+    bmdMode2kDCI30                                               = '2d30',
+    bmdMode2kDCI50                                               = '2d50',
+    bmdMode2kDCI5994                                             = '2d59',
+    bmdMode2kDCI60                                               = '2d60',
 
 
-    /* 4k Modes */
+    /* 4K UHD Modes */
 
 
     bmdMode4K2160p2398                                           = '4k23',
     bmdMode4K2160p2398                                           = '4k23',
     bmdMode4K2160p24                                             = '4k24',
     bmdMode4K2160p24                                             = '4k24',
@@ -101,11 +110,43 @@ enum _BMDDisplayMode {
     bmdMode4K2160p5994                                           = '4k59',
     bmdMode4K2160p5994                                           = '4k59',
     bmdMode4K2160p60                                             = '4k60',
     bmdMode4K2160p60                                             = '4k60',
 
 
-    /* DCI Modes (output only) */
+    /* 4K DCI Modes */
 
 
     bmdMode4kDCI2398                                             = '4d23',
     bmdMode4kDCI2398                                             = '4d23',
     bmdMode4kDCI24                                               = '4d24',
     bmdMode4kDCI24                                               = '4d24',
     bmdMode4kDCI25                                               = '4d25',
     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 */
     /* Special Modes */
 
 
@@ -140,7 +181,12 @@ enum _BMDPixelFormat {
 
 
     /* AVID DNxHR */
     /* 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. */
 /* 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. */
 /* Interface IDeckLinkDisplayModeIterator - enumerates over supported input/output display modes. */
 
 
-class IDeckLinkDisplayModeIterator : public IUnknown
+class BMD_PUBLIC IDeckLinkDisplayModeIterator : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT Next (/* out */ IDeckLinkDisplayMode **deckLinkDisplayMode) = 0;
     virtual HRESULT Next (/* out */ IDeckLinkDisplayMode **deckLinkDisplayMode) = 0;
@@ -170,7 +216,7 @@ protected:
 
 
 /* Interface IDeckLinkDisplayMode - represents a display mode */
 /* Interface IDeckLinkDisplayMode - represents a display mode */
 
 
-class IDeckLinkDisplayMode : public IUnknown
+class BMD_PUBLIC IDeckLinkDisplayMode : public IUnknown
 {
 {
 public:
 public:
     virtual HRESULT GetName (/* out */ CFStringRef *name) = 0;
     virtual HRESULT GetName (/* out */ CFStringRef *name) = 0;

+ 21 - 17
plugins/decklink/mac/decklink-sdk/DeckLinkAPIStreaming.h

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

+ 9 - 4
plugins/decklink/mac/decklink-sdk/DeckLinkAPITypes.h

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

+ 5 - 4
plugins/decklink/mac/decklink-sdk/DeckLinkAPIVersion.h

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

+ 3 - 3
plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v10_2.h

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

+ 45 - 0
plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v10_9.h

@@ -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) */

+ 18 - 18
plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v7_1.h

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

+ 2 - 2
plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v7_3.h

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

+ 18 - 18
plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v7_6.h

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

+ 2 - 2
plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v7_9.h

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

+ 2 - 2
plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v8_0.h

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

+ 4 - 4
plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v8_1.h

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

+ 2 - 2
plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v9_2.h

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

+ 18 - 18
plugins/decklink/mac/decklink-sdk/DeckLinkAPI_v9_9.h

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

+ 167 - 49
plugins/decklink/win/decklink-sdk/DeckLinkAPI.idl

@@ -7,14 +7,14 @@
 ** execute, and transmit the Software, and to prepare derivative works of the
 ** 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
 ** Software, and to permit third-parties to whom the Software is furnished to
 ** do so, all subject to the following:
 ** do so, all subject to the following:
-**
+** 
 ** The copyright notices in the Software and this entire statement, including
 ** The copyright notices in the Software and this entire statement, including
 ** the above license grant, this restriction and the following disclaimer,
 ** 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
 ** 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
 ** all derivative works of the Software, unless such copies or derivative
 ** works are solely in the form of machine-executable object code generated by
 ** works are solely in the form of machine-executable object code generated by
 ** a source language processor.
 ** a source language processor.
-**
+** 
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@@ -95,9 +95,11 @@ typedef [v1_enum] enum	_BMDPacketType {
     bmdFrameFlagDefault                                          = 0,
     bmdFrameFlagDefault                                          = 0,
     bmdFrameFlagFlipVertical                                     = 1 << 0,
     bmdFrameFlagFlipVertical                                     = 1 << 0,
     bmdFrameContainsHDRMetadata                                  = 1 << 1,
     bmdFrameContainsHDRMetadata                                  = 1 << 1,
+    bmdFrameContainsCintelMetadata                               = 1 << 2,
 
 
     /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
     /* Flags that are applicable only to instances of IDeckLinkVideoInputFrame */
 
 
+    bmdFrameCapturedAsPsF                                        = 1 << 30,
     bmdFrameHasNoInputSource                                     = 1 << 31
     bmdFrameHasNoInputSource                                     = 1 << 31
 };
 };
 
 
@@ -136,10 +138,10 @@ typedef [v1_enum] enum	_BMDPacketType {
 /* Enum BMDOutputFrameCompletionResult - Frame Completion Callback */
 /* Enum BMDOutputFrameCompletionResult - Frame Completion Callback */
 
 
 typedef [v1_enum] enum	_BMDOutputFrameCompletionResult {
 typedef [v1_enum] enum	_BMDOutputFrameCompletionResult {
-    bmdOutputFrameCompleted,
-    bmdOutputFrameDisplayedLate,
-    bmdOutputFrameDropped,
-    bmdOutputFrameFlushed
+    bmdOutputFrameCompleted,                                    
+    bmdOutputFrameDisplayedLate,                                
+    bmdOutputFrameDropped,                                      
+    bmdOutputFrameFlushed                                       
 } BMDOutputFrameCompletionResult;
 } BMDOutputFrameCompletionResult;
 
 
 /* Enum BMDReferenceStatus - GenLock input status */
 /* Enum BMDReferenceStatus - GenLock input status */
@@ -171,19 +173,27 @@ typedef [v1_enum] enum	_BMDAudioSampleType {
 /* Enum BMDAudioOutputStreamType - Audio output stream type */
 /* Enum BMDAudioOutputStreamType - Audio output stream type */
 
 
 typedef [v1_enum] enum	_BMDAudioOutputStreamType {
 typedef [v1_enum] enum	_BMDAudioOutputStreamType {
-    bmdAudioOutputStreamContinuous,
-    bmdAudioOutputStreamContinuousDontResample,
-    bmdAudioOutputStreamTimestamped
+    bmdAudioOutputStreamContinuous,                             
+    bmdAudioOutputStreamContinuousDontResample,                 
+    bmdAudioOutputStreamTimestamped                             
 } BMDAudioOutputStreamType;
 } BMDAudioOutputStreamType;
 
 
 /* Enum BMDDisplayModeSupport - Output mode supported flags */
 /* Enum BMDDisplayModeSupport - Output mode supported flags */
 
 
 typedef [v1_enum] enum	_BMDDisplayModeSupport {
 typedef [v1_enum] enum	_BMDDisplayModeSupport {
     bmdDisplayModeNotSupported                                   = 0,
     bmdDisplayModeNotSupported                                   = 0,
-    bmdDisplayModeSupported,
-    bmdDisplayModeSupportedWithConversion
+    bmdDisplayModeSupported,                                    
+    bmdDisplayModeSupportedWithConversion                       
 } BMDDisplayModeSupport;
 } 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 */
 /* Enum BMDTimecodeFormat - Timecode formats for frame metadata */
 
 
 typedef [v1_enum] enum	_BMDTimecodeFormat {
 typedef [v1_enum] enum	_BMDTimecodeFormat {
@@ -296,6 +306,37 @@ typedef [v1_enum] enum	_BMDDeviceInterface {
 
 
 typedef [v1_enum] enum	_BMDDeckLinkFrameMetadataID {
 typedef [v1_enum] enum	_BMDDeckLinkFrameMetadataID {
     bmdDeckLinkFrameMetadataHDRElectroOpticalTransferFunc        = /* 'eotf' */ 0x656F7466,	// EOTF in range 0-7 as per CEA 861.3
     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
     bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedX              = /* 'hdrx' */ 0x68647278,	// Red display primaries in range 0.0 - 1.0
     bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedY              = /* 'hdry' */ 0x68647279,	// 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
     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
     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
     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
     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;
 } BMDDeckLinkFrameMetadataID;
 
 
 /* Enum BMDDuplexMode - Duplex for configurable ports */
 /* Enum BMDDuplexMode - Duplex for configurable ports */
@@ -347,18 +396,19 @@ typedef [v1_enum] enum	_BMDDeckLinkAttributeID {
     /* Integers */
     /* Integers */
 
 
     BMDDeckLinkMaximumAudioChannels                              = /* 'mach' */ 0x6D616368,
     BMDDeckLinkMaximumAudioChannels                              = /* 'mach' */ 0x6D616368,
-    BMDDeckLinkMaximumAnalogAudioChannels                        = /* 'aach' */ 0x61616368,
+    BMDDeckLinkMaximumAnalogAudioInputChannels                   = /* 'iach' */ 0x69616368,
+    BMDDeckLinkMaximumAnalogAudioOutputChannels                  = /* 'aach' */ 0x61616368,
     BMDDeckLinkNumberOfSubDevices                                = /* 'nsbd' */ 0x6E736264,
     BMDDeckLinkNumberOfSubDevices                                = /* 'nsbd' */ 0x6E736264,
     BMDDeckLinkSubDeviceIndex                                    = /* 'subi' */ 0x73756269,
     BMDDeckLinkSubDeviceIndex                                    = /* 'subi' */ 0x73756269,
     BMDDeckLinkPersistentID                                      = /* 'peid' */ 0x70656964,
     BMDDeckLinkPersistentID                                      = /* 'peid' */ 0x70656964,
     BMDDeckLinkDeviceGroupID                                     = /* 'dgid' */ 0x64676964,
     BMDDeckLinkDeviceGroupID                                     = /* 'dgid' */ 0x64676964,
     BMDDeckLinkTopologicalID                                     = /* 'toid' */ 0x746F6964,
     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
     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
     BMDDeckLinkDeviceInterface                                   = /* 'dbus' */ 0x64627573,	// Returns a BMDDeviceInterface
     BMDDeckLinkAudioInputRCAChannelCount                         = /* 'airc' */ 0x61697263,
     BMDDeckLinkAudioInputRCAChannelCount                         = /* 'airc' */ 0x61697263,
     BMDDeckLinkAudioInputXLRChannelCount                         = /* 'aixc' */ 0x61697863,
     BMDDeckLinkAudioInputXLRChannelCount                         = /* 'aixc' */ 0x61697863,
@@ -410,11 +460,14 @@ typedef [v1_enum] enum	_BMDDeckLinkStatusID {
     bmdDeckLinkStatusReferenceSignalFlags                        = /* 'reff' */ 0x72656666,
     bmdDeckLinkStatusReferenceSignalFlags                        = /* 'reff' */ 0x72656666,
     bmdDeckLinkStatusDuplexMode                                  = /* 'dupx' */ 0x64757078,
     bmdDeckLinkStatusDuplexMode                                  = /* 'dupx' */ 0x64757078,
     bmdDeckLinkStatusBusy                                        = /* 'busy' */ 0x62757379,
     bmdDeckLinkStatusBusy                                        = /* 'busy' */ 0x62757379,
+    bmdDeckLinkStatusInterchangeablePanelType                    = /* 'icpt' */ 0x69637074,
+    bmdDeckLinkStatusDeviceTemperature                           = /* 'dtmp' */ 0x64746D70,
 
 
     /* Flags */
     /* Flags */
 
 
     bmdDeckLinkStatusVideoInputSignalLocked                      = /* 'visl' */ 0x7669736C,
     bmdDeckLinkStatusVideoInputSignalLocked                      = /* 'visl' */ 0x7669736C,
-    bmdDeckLinkStatusReferenceSignalLocked                       = /* 'refl' */ 0x7265666C
+    bmdDeckLinkStatusReferenceSignalLocked                       = /* 'refl' */ 0x7265666C,
+    bmdDeckLinkStatusReceivedEDID                                = /* 'edid' */ 0x65646964
 } BMDDeckLinkStatusID;
 } BMDDeckLinkStatusID;
 
 
 /* Enum BMDDeckLinkVideoStatusFlags -  */
 /* Enum BMDDeckLinkVideoStatusFlags -  */
@@ -433,6 +486,13 @@ typedef [v1_enum] enum	_BMDDuplexStatus {
     bmdDuplexStatusInactive                                      = /* 'inac' */ 0x696E6163
     bmdDuplexStatusInactive                                      = /* 'inac' */ 0x696E6163
 } BMDDuplexStatus;
 } 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 */
 /* Enum BMDDeviceBusyState - Current device busy state */
 
 
 [v1_enum] enum	_BMDDeviceBusyState {
 [v1_enum] enum	_BMDDeviceBusyState {
@@ -482,6 +542,9 @@ interface IDeckLinkMutableVideoFrame;
 interface IDeckLinkVideoFrame3DExtensions;
 interface IDeckLinkVideoFrame3DExtensions;
 interface IDeckLinkVideoFrameMetadataExtensions;
 interface IDeckLinkVideoFrameMetadataExtensions;
 interface IDeckLinkVideoInputFrame;
 interface IDeckLinkVideoInputFrame;
+interface IDeckLinkAncillaryPacket;
+interface IDeckLinkAncillaryPacketIterator;
+interface IDeckLinkVideoFrameAncillaryPackets;
 interface IDeckLinkVideoFrameAncillary;
 interface IDeckLinkVideoFrameAncillary;
 interface IDeckLinkEncoderPacket;
 interface IDeckLinkEncoderPacket;
 interface IDeckLinkEncoderVideoPacket;
 interface IDeckLinkEncoderVideoPacket;
@@ -542,7 +605,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(B36EB6E7-9D29-4AA8-92EF-843B87A289E8),
     uuid(B36EB6E7-9D29-4AA8-92EF-843B87A289E8),
-    local,
+    local, 
     helpstring("Memory allocator for video frames.")
     helpstring("Memory allocator for video frames.")
 ] interface IDeckLinkMemoryAllocator : IUnknown
 ] interface IDeckLinkMemoryAllocator : IUnknown
 {
 {
@@ -558,7 +621,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(403C681B-7F46-4A12-B993-2BB127084EE6),
     uuid(403C681B-7F46-4A12-B993-2BB127084EE6),
-    local,
+    local, 
     helpstring("Optional callback to allow audio samples to be pulled as required.")
     helpstring("Optional callback to allow audio samples to be pulled as required.")
 ] interface IDeckLinkAudioOutputCallback : IUnknown
 ] interface IDeckLinkAudioOutputCallback : IUnknown
 {
 {
@@ -595,7 +658,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(CC5C8A6E-3F2F-4B3A-87EA-FD78AF300564),
     uuid(CC5C8A6E-3F2F-4B3A-87EA-FD78AF300564),
-    local,
+    local, 
     helpstring("Created by QueryInterface from IDeckLink.")
     helpstring("Created by QueryInterface from IDeckLink.")
 ] interface IDeckLinkOutput : IUnknown
 ] interface IDeckLinkOutput : IUnknown
 {
 {
@@ -611,7 +674,7 @@ interface IDeckLinkDiscovery;
 
 
     HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator);
     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 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 DisplayVideoFrameSync([in] IDeckLinkVideoFrame *theFrame);
     HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, [in] BMDTimeValue displayTime, [in] BMDTimeValue displayDuration, [in] BMDTimeScale timeScale);
     HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, [in] BMDTimeValue displayTime, [in] BMDTimeValue displayDuration, [in] BMDTimeScale timeScale);
@@ -729,7 +792,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(3F716FE0-F023-4111-BE5D-EF4414C05B17),
     uuid(3F716FE0-F023-4111-BE5D-EF4414C05B17),
-    local,
+    local, 
     helpstring("Interface to encapsulate a video frame; can be caller-implemented.")
     helpstring("Interface to encapsulate a video frame; can be caller-implemented.")
 ] interface IDeckLinkVideoFrame : IUnknown
 ] interface IDeckLinkVideoFrame : IUnknown
 {
 {
@@ -741,7 +804,7 @@ interface IDeckLinkDiscovery;
     HRESULT GetBytes([out] void **buffer);
     HRESULT GetBytes([out] void **buffer);
 
 
     HRESULT GetTimecode([in] BMDTimecodeFormat format, [out] IDeckLinkTimecode **timecode);
     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. */
 /* Interface IDeckLinkMutableVideoFrame - Created by IDeckLinkOutput::CreateVideoFrame. */
@@ -749,7 +812,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(69E2639F-40DA-4E19-B6F2-20ACE815C390),
     uuid(69E2639F-40DA-4E19-B6F2-20ACE815C390),
-    local,
+    local, 
     helpstring("Created by IDeckLinkOutput::CreateVideoFrame.")
     helpstring("Created by IDeckLinkOutput::CreateVideoFrame.")
 ] interface IDeckLinkMutableVideoFrame : IDeckLinkVideoFrame
 ] interface IDeckLinkMutableVideoFrame : IDeckLinkVideoFrame
 {
 {
@@ -766,7 +829,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7),
     uuid(DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7),
-    local,
+    local, 
     helpstring("Optional interface implemented on IDeckLinkVideoFrame to support 3D frames")
     helpstring("Optional interface implemented on IDeckLinkVideoFrame to support 3D frames")
 ] interface IDeckLinkVideoFrame3DExtensions : IUnknown
 ] interface IDeckLinkVideoFrame3DExtensions : IUnknown
 {
 {
@@ -779,7 +842,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(D5973DC9-6432-46D0-8F0B-2496F8A1238F),
     uuid(D5973DC9-6432-46D0-8F0B-2496F8A1238F),
-    local,
+    local, 
     helpstring("Optional interface implemented on IDeckLinkVideoFrame to support frame metadata such as HDMI HDR information")
     helpstring("Optional interface implemented on IDeckLinkVideoFrame to support frame metadata such as HDMI HDR information")
 ] interface IDeckLinkVideoFrameMetadataExtensions : IUnknown
 ] interface IDeckLinkVideoFrameMetadataExtensions : IUnknown
 {
 {
@@ -794,7 +857,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(05CFE374-537C-4094-9A57-680525118F44),
     uuid(05CFE374-537C-4094-9A57-680525118F44),
-    local,
+    local, 
     helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")
     helpstring("Provided by the IDeckLinkVideoInput frame arrival callback.")
 ] interface IDeckLinkVideoInputFrame : IDeckLinkVideoFrame
 ] interface IDeckLinkVideoInputFrame : IDeckLinkVideoFrame
 {
 {
@@ -802,17 +865,61 @@ interface IDeckLinkDiscovery;
     HRESULT GetHardwareReferenceTimestamp([in] BMDTimeScale timeScale, [out] BMDTimeValue *frameTime, [out] BMDTimeValue *frameDuration);
     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,
     object,
-    uuid(732E723C-D1A4-4E29-9E8E-4A88797A0004),
-    local,
+    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.")
     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("Use of IDeckLinkVideoFrameAncillaryPackets is preferred. Obtained through QueryInterface() on an IDeckLinkVideoFrame object.")
 ] interface IDeckLinkVideoFrameAncillary : IUnknown
 ] 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);
     BMDPixelFormat GetPixelFormat(void);
     BMDDisplayMode GetDisplayMode(void);
     BMDDisplayMode GetDisplayMode(void);
 };
 };
@@ -822,7 +929,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(B693F36C-316E-4AF1-B6C2-F389A4BCA620),
     uuid(B693F36C-316E-4AF1-B6C2-F389A4BCA620),
-    local,
+    local, 
     helpstring("Interface to encapsulate an encoded packet.")
     helpstring("Interface to encapsulate an encoded packet.")
 ] interface IDeckLinkEncoderPacket : IUnknown
 ] interface IDeckLinkEncoderPacket : IUnknown
 {
 {
@@ -837,7 +944,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(4E7FD944-E8C7-4EAC-B8C0-7B77F80F5AE0),
     uuid(4E7FD944-E8C7-4EAC-B8C0-7B77F80F5AE0),
-    local,
+    local, 
     helpstring("Provided by the IDeckLinkEncoderInput video packet arrival callback.")
     helpstring("Provided by the IDeckLinkEncoderInput video packet arrival callback.")
 ] interface IDeckLinkEncoderVideoPacket : IDeckLinkEncoderPacket
 ] interface IDeckLinkEncoderVideoPacket : IDeckLinkEncoderPacket
 {
 {
@@ -852,7 +959,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(49E8EDC8-693B-4E14-8EF6-12C658F5A07A),
     uuid(49E8EDC8-693B-4E14-8EF6-12C658F5A07A),
-    local,
+    local, 
     helpstring("Provided by the IDeckLinkEncoderInput audio packet arrival callback.")
     helpstring("Provided by the IDeckLinkEncoderInput audio packet arrival callback.")
 ] interface IDeckLinkEncoderAudioPacket : IDeckLinkEncoderPacket
 ] interface IDeckLinkEncoderAudioPacket : IDeckLinkEncoderPacket
 {
 {
@@ -864,7 +971,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(639C8E0B-68D5-4BDE-A6D4-95F3AEAFF2E7),
     uuid(639C8E0B-68D5-4BDE-A6D4-95F3AEAFF2E7),
-    local,
+    local, 
     helpstring("Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object")
     helpstring("Obtained through QueryInterface() on an IDeckLinkEncoderVideoPacket object")
 ] interface IDeckLinkH265NALPacket : IDeckLinkEncoderVideoPacket
 ] interface IDeckLinkH265NALPacket : IDeckLinkEncoderVideoPacket
 {
 {
@@ -878,7 +985,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(E43D5870-2894-11DE-8C30-0800200C9A66),
     uuid(E43D5870-2894-11DE-8C30-0800200C9A66),
-    local,
+    local, 
     helpstring("Provided by the IDeckLinkInput callback.")
     helpstring("Provided by the IDeckLinkInput callback.")
 ] interface IDeckLinkAudioInputPacket : IUnknown
 ] interface IDeckLinkAudioInputPacket : IUnknown
 {
 {
@@ -892,7 +999,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438),
     uuid(B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438),
-    local,
+    local, 
     helpstring("Screen preview callback")
     helpstring("Screen preview callback")
 ] interface IDeckLinkScreenPreviewCallback : IUnknown
 ] interface IDeckLinkScreenPreviewCallback : IUnknown
 {
 {
@@ -904,7 +1011,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(504E2209-CAC7-4C1A-9FB4-C5BB6274D22F),
     uuid(504E2209-CAC7-4C1A-9FB4-C5BB6274D22F),
-    local,
+    local, 
     helpstring("Created with CoCreateInstance().")
     helpstring("Created with CoCreateInstance().")
 ] interface IDeckLinkGLScreenPreviewHelper : IUnknown
 ] interface IDeckLinkGLScreenPreviewHelper : IUnknown
 {
 {
@@ -922,7 +1029,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(2094B522-D1A1-40C0-9AC7-1C012218EF02),
     uuid(2094B522-D1A1-40C0-9AC7-1C012218EF02),
-    local,
+    local, 
     helpstring("Created with CoCreateInstance().")
     helpstring("Created with CoCreateInstance().")
 ] interface IDeckLinkDX9ScreenPreviewHelper : IUnknown
 ] interface IDeckLinkDX9ScreenPreviewHelper : IUnknown
 {
 {
@@ -937,7 +1044,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(b002a1ec-070d-4288-8289-bd5d36e5ff0d),
     uuid(b002a1ec-070d-4288-8289-bd5d36e5ff0d),
-    local,
+    local, 
     helpstring("DeckLink Notification Callback Interface")
     helpstring("DeckLink Notification Callback Interface")
 ] interface IDeckLinkNotificationCallback : IUnknown
 ] interface IDeckLinkNotificationCallback : IUnknown
 {
 {
@@ -949,7 +1056,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(0a1fb207-e215-441b-9b19-6fa1575946c5),
     uuid(0a1fb207-e215-441b-9b19-6fa1575946c5),
-    local,
+    local, 
     helpstring("DeckLink Notification interface")
     helpstring("DeckLink Notification interface")
 ] interface IDeckLinkNotification : IUnknown
 ] interface IDeckLinkNotification : IUnknown
 {
 {
@@ -962,7 +1069,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(ABC11843-D966-44CB-96E2-A1CB5D3135C4),
     uuid(ABC11843-D966-44CB-96E2-A1CB5D3135C4),
-    local,
+    local, 
     helpstring("DeckLink Attribute interface")
     helpstring("DeckLink Attribute interface")
 ] interface IDeckLinkAttributes : IUnknown
 ] interface IDeckLinkAttributes : IUnknown
 {
 {
@@ -977,7 +1084,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(5F558200-4028-49BC-BEAC-DB3FA4A96E46),
     uuid(5F558200-4028-49BC-BEAC-DB3FA4A96E46),
-    local,
+    local, 
     helpstring("DeckLink Status interface")
     helpstring("DeckLink Status interface")
 ] interface IDeckLinkStatus : IUnknown
 ] interface IDeckLinkStatus : IUnknown
 {
 {
@@ -993,7 +1100,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(89AFCAF5-65F8-421E-98F7-96FE5F5BFBA3),
     uuid(89AFCAF5-65F8-421E-98F7-96FE5F5BFBA3),
-    local,
+    local, 
     helpstring("DeckLink Keyer interface")
     helpstring("DeckLink Keyer interface")
 ] interface IDeckLinkKeyer : IUnknown
 ] interface IDeckLinkKeyer : IUnknown
 {
 {
@@ -1009,7 +1116,7 @@ interface IDeckLinkDiscovery;
 [
 [
     object,
     object,
     uuid(3BBCB8A2-DA2C-42D9-B5D8-88083644E99A),
     uuid(3BBCB8A2-DA2C-42D9-B5D8-88083644E99A),
-    local,
+    local, 
     helpstring("Created with CoCreateInstance().")
     helpstring("Created with CoCreateInstance().")
 ] interface IDeckLinkVideoConversion : IUnknown
 ] interface IDeckLinkVideoConversion : IUnknown
 {
 {
@@ -1045,7 +1152,7 @@ interface IDeckLinkDiscovery;
 importlib("stdole2.tlb");
 importlib("stdole2.tlb");
 
 
 [
 [
-    uuid(1F2E109A-8F4F-49E4-9203-135595CB6FA5),
+    uuid(87D2693F-8D4A-45C7-B43F-10ACBA25E68F),
     helpstring("CDeckLinkIterator Class")
     helpstring("CDeckLinkIterator Class")
 ] coclass CDeckLinkIterator
 ] coclass CDeckLinkIterator
 {
 {
@@ -1085,15 +1192,26 @@ importlib("stdole2.tlb");
 };
 };
 
 
 [
 [
-    uuid(1073A05C-D885-47E9-B3C6-129B3F9F648B),
+    uuid(652615D4-26CD-4514-B161-2FD5072ED008),
     helpstring("CDeckLinkDiscovery Class")
     helpstring("CDeckLinkDiscovery Class")
 ] coclass CDeckLinkDiscovery
 ] coclass CDeckLinkDiscovery
 {
 {
     [default] interface IDeckLinkDiscovery;
     [default] interface IDeckLinkDiscovery;
 };
 };
 
 
+[
+    uuid(F891AD29-D0C2-46E9-A926-4E2D0DD8CFAD),
+    helpstring("CDeckLinkVideoFrameAncillaryPackets Class")
+] coclass CDeckLinkVideoFrameAncillaryPackets
+{
+    [default] interface IDeckLinkVideoFrameAncillaryPackets;
+};
+
 
 
 // import deprecated interfaces
 // 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_6.idl"
 #include "DeckLinkAPI_v10_5.idl"
 #include "DeckLinkAPI_v10_5.idl"
 #include "DeckLinkAPI_v10_4.idl"
 #include "DeckLinkAPI_v10_4.idl"

+ 15 - 9
plugins/decklink/win/decklink-sdk/DeckLinkAPIConfiguration.idl

@@ -7,14 +7,14 @@
 ** execute, and transmit the Software, and to prepare derivative works of the
 ** 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
 ** Software, and to permit third-parties to whom the Software is furnished to
 ** do so, all subject to the following:
 ** do so, all subject to the following:
-**
+** 
 ** The copyright notices in the Software and this entire statement, including
 ** The copyright notices in the Software and this entire statement, including
 ** the above license grant, this restriction and the following disclaimer,
 ** 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
 ** 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
 ** all derivative works of the Software, unless such copies or derivative
 ** works are solely in the form of machine-executable object code generated by
 ** works are solely in the form of machine-executable object code generated by
 ** a source language processor.
 ** a source language processor.
-**
+** 
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@@ -50,10 +50,6 @@ typedef [v1_enum] enum	_BMDDeckLinkConfigurationID {
 
 
     bmdDeckLinkConfigSwapSerialRxTx                              = /* 'ssrt' */ 0x73737274,
     bmdDeckLinkConfigSwapSerialRxTx                              = /* 'ssrt' */ 0x73737274,
 
 
-    /* Video Input/Output Flags */
-
-    bmdDeckLinkConfigUse1080pNotPsF                              = /* 'fpro' */ 0x6670726F,
-
     /* Video Input/Output Integers */
     /* Video Input/Output Integers */
 
 
     bmdDeckLinkConfigHDMI3DPackingFormat                         = /* '3dpf' */ 0x33647066,
     bmdDeckLinkConfigHDMI3DPackingFormat                         = /* '3dpf' */ 0x33647066,
@@ -74,6 +70,12 @@ typedef [v1_enum] enum	_BMDDeckLinkConfigurationID {
     bmdDeckLinkConfigLowLatencyVideoOutput                       = /* 'llvo' */ 0x6C6C766F,
     bmdDeckLinkConfigLowLatencyVideoOutput                       = /* 'llvo' */ 0x6C6C766F,
     bmdDeckLinkConfigDownConversionOnAllAnalogOutput             = /* 'caao' */ 0x6361616F,
     bmdDeckLinkConfigDownConversionOnAllAnalogOutput             = /* 'caao' */ 0x6361616F,
     bmdDeckLinkConfigSMPTELevelAOutput                           = /* 'smta' */ 0x736D7461,
     bmdDeckLinkConfigSMPTELevelAOutput                           = /* 'smta' */ 0x736D7461,
+    bmdDeckLinkConfigRec2020Output                               = /* 'rec2' */ 0x72656332,	// Ensure output is Rec.2020 colorspace
+    bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit   = /* 'SDQS' */ 0x53445153,
+
+    /* Video Output Flags */
+
+    bmdDeckLinkConfigOutput1080pAsPsF                            = /* 'pfpr' */ 0x70667072,
 
 
     /* Video Output Integers */
     /* Video Output Integers */
 
 
@@ -102,6 +104,10 @@ typedef [v1_enum] enum	_BMDDeckLinkConfigurationID {
     bmdDeckLinkConfigUseDedicatedLTCInput                        = /* 'dltc' */ 0x646C7463,	// Use timecode from LTC input instead of SDI stream
     bmdDeckLinkConfigUseDedicatedLTCInput                        = /* 'dltc' */ 0x646C7463,	// Use timecode from LTC input instead of SDI stream
     bmdDeckLinkConfigSDIInput3DPayloadOverride                   = /* '3dds' */ 0x33646473,
     bmdDeckLinkConfigSDIInput3DPayloadOverride                   = /* '3dds' */ 0x33646473,
 
 
+    /* Video Input Flags */
+
+    bmdDeckLinkConfigCapture1080pAsPsF                           = /* 'cfpr' */ 0x63667072,
+
     /* Video Input Integers */
     /* Video Input Integers */
 
 
     bmdDeckLinkConfigVideoInputConnection                        = /* 'vicn' */ 0x7669636E,
     bmdDeckLinkConfigVideoInputConnection                        = /* 'vicn' */ 0x7669636E,
@@ -203,8 +209,8 @@ interface IDeckLinkEncoderConfiguration;
 
 
 [
 [
     object,
     object,
-    uuid(CB71734A-FE37-4E8D-8E13-802133A1C3F2),
-    local,
+    uuid(EF90380B-4AE5-4346-9077-E288E149F129),
+    local, 
     helpstring("DeckLink Configuration interface")
     helpstring("DeckLink Configuration interface")
 ] interface IDeckLinkConfiguration : IUnknown
 ] interface IDeckLinkConfiguration : IUnknown
 {
 {
@@ -224,7 +230,7 @@ interface IDeckLinkEncoderConfiguration;
 [
 [
     object,
     object,
     uuid(138050E5-C60A-4552-BF3F-0F358049327E),
     uuid(138050E5-C60A-4552-BF3F-0F358049327E),
-    local,
+    local, 
     helpstring("DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput")
     helpstring("DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput")
 ] interface IDeckLinkEncoderConfiguration : IUnknown
 ] interface IDeckLinkEncoderConfiguration : IUnknown
 {
 {

+ 2 - 2
plugins/decklink/win/decklink-sdk/DeckLinkAPIDeckControl.idl

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

+ 2 - 2
plugins/decklink/win/decklink-sdk/DeckLinkAPIDiscovery.idl

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

+ 52 - 10
plugins/decklink/win/decklink-sdk/DeckLinkAPIModes.idl

@@ -7,14 +7,14 @@
 ** execute, and transmit the Software, and to prepare derivative works of the
 ** 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
 ** Software, and to permit third-parties to whom the Software is furnished to
 ** do so, all subject to the following:
 ** do so, all subject to the following:
-**
+** 
 ** The copyright notices in the Software and this entire statement, including
 ** The copyright notices in the Software and this entire statement, including
 ** the above license grant, this restriction and the following disclaimer,
 ** 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
 ** 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
 ** all derivative works of the Software, unless such copies or derivative
 ** works are solely in the form of machine-executable object code generated by
 ** works are solely in the form of machine-executable object code generated by
 ** a source language processor.
 ** a source language processor.
-**
+** 
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
@@ -63,12 +63,12 @@ typedef [v1_enum] enum	_BMDDisplayMode {
     bmdModeHD1080p25                                             = /* 'Hp25' */ 0x48703235,
     bmdModeHD1080p25                                             = /* 'Hp25' */ 0x48703235,
     bmdModeHD1080p2997                                           = /* 'Hp29' */ 0x48703239,
     bmdModeHD1080p2997                                           = /* 'Hp29' */ 0x48703239,
     bmdModeHD1080p30                                             = /* 'Hp30' */ 0x48703330,
     bmdModeHD1080p30                                             = /* 'Hp30' */ 0x48703330,
-    bmdModeHD1080i50                                             = /* 'Hi50' */ 0x48693530,
-    bmdModeHD1080i5994                                           = /* 'Hi59' */ 0x48693539,
-    bmdModeHD1080i6000                                           = /* 'Hi60' */ 0x48693630,	// N.B. This _really_ is 60.00 Hz.
     bmdModeHD1080p50                                             = /* 'Hp50' */ 0x48703530,
     bmdModeHD1080p50                                             = /* 'Hp50' */ 0x48703530,
     bmdModeHD1080p5994                                           = /* 'Hp59' */ 0x48703539,
     bmdModeHD1080p5994                                           = /* 'Hp59' */ 0x48703539,
     bmdModeHD1080p6000                                           = /* 'Hp60' */ 0x48703630,	// N.B. This _really_ is 60.00 Hz.
     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 */
     /* HD 720 Modes */
 
 
@@ -76,19 +76,24 @@ typedef [v1_enum] enum	_BMDDisplayMode {
     bmdModeHD720p5994                                            = /* 'hp59' */ 0x68703539,
     bmdModeHD720p5994                                            = /* 'hp59' */ 0x68703539,
     bmdModeHD720p60                                              = /* 'hp60' */ 0x68703630,
     bmdModeHD720p60                                              = /* 'hp60' */ 0x68703630,
 
 
-    /* 2k Modes */
+    /* 2K Modes */
 
 
     bmdMode2k2398                                                = /* '2k23' */ 0x326B3233,
     bmdMode2k2398                                                = /* '2k23' */ 0x326B3233,
     bmdMode2k24                                                  = /* '2k24' */ 0x326B3234,
     bmdMode2k24                                                  = /* '2k24' */ 0x326B3234,
     bmdMode2k25                                                  = /* '2k25' */ 0x326B3235,
     bmdMode2k25                                                  = /* '2k25' */ 0x326B3235,
 
 
-    /* DCI Modes (output only) */
+    /* 2K DCI Modes */
 
 
     bmdMode2kDCI2398                                             = /* '2d23' */ 0x32643233,
     bmdMode2kDCI2398                                             = /* '2d23' */ 0x32643233,
     bmdMode2kDCI24                                               = /* '2d24' */ 0x32643234,
     bmdMode2kDCI24                                               = /* '2d24' */ 0x32643234,
     bmdMode2kDCI25                                               = /* '2d25' */ 0x32643235,
     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,
     bmdMode4K2160p2398                                           = /* '4k23' */ 0x346B3233,
     bmdMode4K2160p24                                             = /* '4k24' */ 0x346B3234,
     bmdMode4K2160p24                                             = /* '4k24' */ 0x346B3234,
@@ -99,11 +104,43 @@ typedef [v1_enum] enum	_BMDDisplayMode {
     bmdMode4K2160p5994                                           = /* '4k59' */ 0x346B3539,
     bmdMode4K2160p5994                                           = /* '4k59' */ 0x346B3539,
     bmdMode4K2160p60                                             = /* '4k60' */ 0x346B3630,
     bmdMode4K2160p60                                             = /* '4k60' */ 0x346B3630,
 
 
-    /* DCI Modes (output only) */
+    /* 4K DCI Modes */
 
 
     bmdMode4kDCI2398                                             = /* '4d23' */ 0x34643233,
     bmdMode4kDCI2398                                             = /* '4d23' */ 0x34643233,
     bmdMode4kDCI24                                               = /* '4d24' */ 0x34643234,
     bmdMode4kDCI24                                               = /* '4d24' */ 0x34643234,
     bmdMode4kDCI25                                               = /* '4d25' */ 0x34643235,
     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 */
     /* Special Modes */
 
 
@@ -136,7 +173,12 @@ typedef [v1_enum] enum	_BMDPixelFormat {
 
 
     /* AVID DNxHR */
     /* 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;
 } BMDPixelFormat;
 
 
 /* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */
 /* Enum BMDDisplayModeFlags - Flags to describe the characteristics of an IDeckLinkDisplayMode. */

+ 5 - 5
plugins/decklink/win/decklink-sdk/DeckLinkAPIStreaming.idl

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

+ 40 - 0
plugins/decklink/win/decklink-sdk/DeckLinkAPIStreaming_v10_8.idl

@@ -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;
+};

+ 4 - 3
plugins/decklink/win/decklink-sdk/DeckLinkAPITypes.idl

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

+ 4 - 4
plugins/decklink/win/decklink-sdk/DeckLinkAPIVersion.h

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

+ 3 - 3
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v10_2.idl

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

+ 1 - 1
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v10_5.idl

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

+ 46 - 0
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v10_8.idl

@@ -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;
+};

+ 61 - 0
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v10_9.idl

@@ -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);
+};

+ 21 - 21
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v7_1.idl

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

+ 4 - 4
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v7_3.idl

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

+ 9 - 9
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v7_6.idl

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

+ 2 - 2
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v7_9.idl

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

+ 2 - 2
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v8_0.idl

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

+ 2 - 2
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v8_1.idl

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

+ 2 - 2
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v9_2.idl

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

+ 3 - 3
plugins/decklink/win/decklink-sdk/DeckLinkAPI_v9_9.idl

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