1 /* -LICENSE-START- 2 ** Copyright (c) 2019 Blackmagic Design 3 ** 4 ** Permission is hereby granted, free of charge, to any person or organization 5 ** obtaining a copy of the software and accompanying documentation covered by 6 ** this license (the "Software") to use, reproduce, display, distribute, 7 ** execute, and transmit the Software, and to prepare derivative works of the 8 ** Software, and to permit third-parties to whom the Software is furnished to 9 ** do so, all subject to the following: 10 ** 11 ** The copyright notices in the Software and this entire statement, including 12 ** the above license grant, this restriction and the following disclaimer, 13 ** must be included in all copies of the Software, in whole or in part, and 14 ** all derivative works of the Software, unless such copies or derivative 15 ** works are solely in the form of machine-executable object code generated by 16 ** a source language processor. 17 ** 18 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 19 ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 20 ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT 21 ** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE 22 ** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, 23 ** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER 24 ** DEALINGS IN THE SOFTWARE. 25 ** -LICENSE-END- 26 */ 27 28 #ifndef BMD_DECKLINKAPICONFIGURATION_H 29 #define BMD_DECKLINKAPICONFIGURATION_H 30 31 32 #ifndef BMD_CONST 33 #if defined(_MSC_VER) 34 #define BMD_CONST __declspec(selectany) static const 35 #else 36 #define BMD_CONST static const 37 #endif 38 #endif 39 40 #ifndef BMD_PUBLIC 41 #define BMD_PUBLIC 42 #endif 43 44 // Type Declarations 45 46 47 // Interface ID Declarations 48 49 BMD_CONST REFIID IID_IDeckLinkConfiguration = /* 912F634B-2D4E-40A4-8AAB-8D80B73F1289 */ {0x91,0x2F,0x63,0x4B,0x2D,0x4E,0x40,0xA4,0x8A,0xAB,0x8D,0x80,0xB7,0x3F,0x12,0x89}; 50 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}; 51 52 /* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */ 53 54 typedef uint32_t BMDDeckLinkConfigurationID; 55 enum _BMDDeckLinkConfigurationID { 56 57 /* Serial port Flags */ 58 59 bmdDeckLinkConfigSwapSerialRxTx = 'ssrt', 60 61 /* Video Input/Output Integers */ 62 63 bmdDeckLinkConfigHDMI3DPackingFormat = '3dpf', 64 bmdDeckLinkConfigBypass = 'byps', 65 bmdDeckLinkConfigClockTimingAdjustment = 'ctad', 66 67 /* Audio Input/Output Flags */ 68 69 bmdDeckLinkConfigAnalogAudioConsumerLevels = 'aacl', 70 71 /* Video output flags */ 72 73 bmdDeckLinkConfigFieldFlickerRemoval = 'fdfr', 74 bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion = 'to59', 75 bmdDeckLinkConfig444SDIVideoOutput = '444o', 76 bmdDeckLinkConfigBlackVideoOutputDuringCapture = 'bvoc', 77 bmdDeckLinkConfigLowLatencyVideoOutput = 'llvo', 78 bmdDeckLinkConfigDownConversionOnAllAnalogOutput = 'caao', 79 bmdDeckLinkConfigSMPTELevelAOutput = 'smta', 80 bmdDeckLinkConfigRec2020Output = 'rec2', // Ensure output is Rec.2020 colorspace 81 bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit = 'SDQS', 82 83 /* Video Output Flags */ 84 85 bmdDeckLinkConfigOutput1080pAsPsF = 'pfpr', 86 87 /* Video Output Integers */ 88 89 bmdDeckLinkConfigVideoOutputConnection = 'vocn', 90 bmdDeckLinkConfigVideoOutputConversionMode = 'vocm', 91 bmdDeckLinkConfigAnalogVideoOutputFlags = 'avof', 92 bmdDeckLinkConfigReferenceInputTimingOffset = 'glot', 93 bmdDeckLinkConfigVideoOutputIdleOperation = 'voio', 94 bmdDeckLinkConfigDefaultVideoOutputMode = 'dvom', 95 bmdDeckLinkConfigDefaultVideoOutputModeFlags = 'dvof', 96 bmdDeckLinkConfigSDIOutputLinkConfiguration = 'solc', 97 bmdDeckLinkConfigHDMITimecodePacking = 'htpk', 98 bmdDeckLinkConfigPlaybackGroup = 'plgr', 99 100 /* Video Output Floats */ 101 102 bmdDeckLinkConfigVideoOutputComponentLumaGain = 'oclg', 103 bmdDeckLinkConfigVideoOutputComponentChromaBlueGain = 'occb', 104 bmdDeckLinkConfigVideoOutputComponentChromaRedGain = 'occr', 105 bmdDeckLinkConfigVideoOutputCompositeLumaGain = 'oilg', 106 bmdDeckLinkConfigVideoOutputCompositeChromaGain = 'oicg', 107 bmdDeckLinkConfigVideoOutputSVideoLumaGain = 'oslg', 108 bmdDeckLinkConfigVideoOutputSVideoChromaGain = 'oscg', 109 110 /* Video Input Flags */ 111 112 bmdDeckLinkConfigVideoInputScanning = 'visc', // Applicable to H264 Pro Recorder only 113 bmdDeckLinkConfigUseDedicatedLTCInput = 'dltc', // Use timecode from LTC input instead of SDI stream 114 bmdDeckLinkConfigSDIInput3DPayloadOverride = '3dds', 115 116 /* Video Input Flags */ 117 118 bmdDeckLinkConfigCapture1080pAsPsF = 'cfpr', 119 120 /* Video Input Integers */ 121 122 bmdDeckLinkConfigVideoInputConnection = 'vicn', 123 bmdDeckLinkConfigAnalogVideoInputFlags = 'avif', 124 bmdDeckLinkConfigVideoInputConversionMode = 'vicm', 125 bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame = 'pdif', 126 bmdDeckLinkConfigVANCSourceLine1Mapping = 'vsl1', 127 bmdDeckLinkConfigVANCSourceLine2Mapping = 'vsl2', 128 bmdDeckLinkConfigVANCSourceLine3Mapping = 'vsl3', 129 bmdDeckLinkConfigCapturePassThroughMode = 'cptm', 130 bmdDeckLinkConfigCaptureGroup = 'cpgr', 131 132 /* Video Input Floats */ 133 134 bmdDeckLinkConfigVideoInputComponentLumaGain = 'iclg', 135 bmdDeckLinkConfigVideoInputComponentChromaBlueGain = 'iccb', 136 bmdDeckLinkConfigVideoInputComponentChromaRedGain = 'iccr', 137 bmdDeckLinkConfigVideoInputCompositeLumaGain = 'iilg', 138 bmdDeckLinkConfigVideoInputCompositeChromaGain = 'iicg', 139 bmdDeckLinkConfigVideoInputSVideoLumaGain = 'islg', 140 bmdDeckLinkConfigVideoInputSVideoChromaGain = 'iscg', 141 142 /* Audio Input Flags */ 143 144 bmdDeckLinkConfigMicrophonePhantomPower = 'mphp', 145 146 /* Audio Input Integers */ 147 148 bmdDeckLinkConfigAudioInputConnection = 'aicn', 149 150 /* Audio Input Floats */ 151 152 bmdDeckLinkConfigAnalogAudioInputScaleChannel1 = 'ais1', 153 bmdDeckLinkConfigAnalogAudioInputScaleChannel2 = 'ais2', 154 bmdDeckLinkConfigAnalogAudioInputScaleChannel3 = 'ais3', 155 bmdDeckLinkConfigAnalogAudioInputScaleChannel4 = 'ais4', 156 bmdDeckLinkConfigDigitalAudioInputScale = 'dais', 157 bmdDeckLinkConfigMicrophoneInputGain = 'micg', 158 159 /* Audio Output Integers */ 160 161 bmdDeckLinkConfigAudioOutputAESAnalogSwitch = 'aoaa', 162 163 /* Audio Output Floats */ 164 165 bmdDeckLinkConfigAnalogAudioOutputScaleChannel1 = 'aos1', 166 bmdDeckLinkConfigAnalogAudioOutputScaleChannel2 = 'aos2', 167 bmdDeckLinkConfigAnalogAudioOutputScaleChannel3 = 'aos3', 168 bmdDeckLinkConfigAnalogAudioOutputScaleChannel4 = 'aos4', 169 bmdDeckLinkConfigDigitalAudioOutputScale = 'daos', 170 bmdDeckLinkConfigHeadphoneVolume = 'hvol', 171 172 /* Device Information Strings */ 173 174 bmdDeckLinkConfigDeviceInformationLabel = 'dila', 175 bmdDeckLinkConfigDeviceInformationSerialNumber = 'disn', 176 bmdDeckLinkConfigDeviceInformationCompany = 'dico', 177 bmdDeckLinkConfigDeviceInformationPhone = 'diph', 178 bmdDeckLinkConfigDeviceInformationEmail = 'diem', 179 bmdDeckLinkConfigDeviceInformationDate = 'dida', 180 181 /* Deck Control Integers */ 182 183 bmdDeckLinkConfigDeckControlConnection = 'dcco' 184 }; 185 186 /* Enum BMDDeckLinkEncoderConfigurationID - DeckLink Encoder Configuration ID */ 187 188 typedef uint32_t BMDDeckLinkEncoderConfigurationID; 189 enum _BMDDeckLinkEncoderConfigurationID { 190 191 /* Video Encoder Integers */ 192 193 bmdDeckLinkEncoderConfigPreferredBitDepth = 'epbr', 194 bmdDeckLinkEncoderConfigFrameCodingMode = 'efcm', 195 196 /* HEVC/H.265 Encoder Integers */ 197 198 bmdDeckLinkEncoderConfigH265TargetBitrate = 'htbr', 199 200 /* DNxHR/DNxHD Compression ID */ 201 202 bmdDeckLinkEncoderConfigDNxHRCompressionID = 'dcid', 203 204 /* DNxHR/DNxHD Level */ 205 206 bmdDeckLinkEncoderConfigDNxHRLevel = 'dlev', 207 208 /* Encoded Sample Decriptions */ 209 210 bmdDeckLinkEncoderConfigMPEG4SampleDescription = 'stsE', // Full MPEG4 sample description (aka SampleEntry of an 'stsd' atom-box). Useful for MediaFoundation, QuickTime, MKV and more 211 bmdDeckLinkEncoderConfigMPEG4CodecSpecificDesc = 'esds' // Sample description extensions only (atom stream, each with size and fourCC header). Useful for AVFoundation, VideoToolbox, MKV and more 212 }; 213 214 // Forward Declarations 215 216 class IDeckLinkConfiguration; 217 class IDeckLinkEncoderConfiguration; 218 219 /* Interface IDeckLinkConfiguration - DeckLink Configuration interface */ 220 221 class BMD_PUBLIC IDeckLinkConfiguration : public IUnknown 222 { 223 public: 224 virtual HRESULT SetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ bool value) = 0; 225 virtual HRESULT GetFlag (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ bool *value) = 0; 226 virtual HRESULT SetInt (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ int64_t value) = 0; 227 virtual HRESULT GetInt (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ int64_t *value) = 0; 228 virtual HRESULT SetFloat (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ double value) = 0; 229 virtual HRESULT GetFloat (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ double *value) = 0; 230 virtual HRESULT SetString (/* in */ BMDDeckLinkConfigurationID cfgID, /* in */ CFStringRef value) = 0; 231 virtual HRESULT GetString (/* in */ BMDDeckLinkConfigurationID cfgID, /* out */ CFStringRef *value) = 0; 232 virtual HRESULT WriteConfigurationToPreferences (void) = 0; 233 234 protected: ~IDeckLinkConfiguration()235 virtual ~IDeckLinkConfiguration () {} // call Release method to drop reference count 236 }; 237 238 /* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */ 239 240 class BMD_PUBLIC IDeckLinkEncoderConfiguration : public IUnknown 241 { 242 public: 243 virtual HRESULT SetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ bool value) = 0; 244 virtual HRESULT GetFlag (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ bool *value) = 0; 245 virtual HRESULT SetInt (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ int64_t value) = 0; 246 virtual HRESULT GetInt (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ int64_t *value) = 0; 247 virtual HRESULT SetFloat (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ double value) = 0; 248 virtual HRESULT GetFloat (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ double *value) = 0; 249 virtual HRESULT SetString (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* in */ CFStringRef value) = 0; 250 virtual HRESULT GetString (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ CFStringRef *value) = 0; 251 virtual HRESULT GetBytes (/* in */ BMDDeckLinkEncoderConfigurationID cfgID, /* out */ void *buffer /* optional */, /* in, out */ uint32_t *bufferSize) = 0; 252 253 protected: ~IDeckLinkEncoderConfiguration()254 virtual ~IDeckLinkEncoderConfiguration () {} // call Release method to drop reference count 255 }; 256 257 /* Functions */ 258 259 extern "C" { 260 261 262 } 263 264 265 #endif /* defined(BMD_DECKLINKAPICONFIGURATION_H) */ 266