2014-12-03 13:39:13 +00:00
/* -LICENSE-START-
2020-02-27 11:32:17 +00:00
* * Copyright ( c ) 2018 Blackmagic Design
2014-12-03 13:39:13 +00:00
* *
* * 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_H
# define BMD_DECKLINKAPICONFIGURATION_H
# ifndef BMD_CONST
# if defined(_MSC_VER)
# define BMD_CONST __declspec(selectany) static const
# else
# define BMD_CONST static const
# endif
# endif
2020-02-27 11:32:17 +00:00
# ifndef BMD_PUBLIC
# define BMD_PUBLIC
# endif
2014-12-03 13:39:13 +00:00
// Type Declarations
// Interface ID Declarations
2020-02-27 11:32:17 +00:00
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 } ;
2016-09-26 13:38:04 +00:00
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 } ;
2014-12-03 13:39:13 +00:00
/* Enum BMDDeckLinkConfigurationID - DeckLink Configuration ID */
typedef uint32_t BMDDeckLinkConfigurationID ;
enum _BMDDeckLinkConfigurationID {
/* Serial port Flags */
bmdDeckLinkConfigSwapSerialRxTx = /* 'ssrt' */ 0x73737274 ,
/* Video Input/Output Integers */
bmdDeckLinkConfigHDMI3DPackingFormat = /* '3dpf' */ 0x33647066 ,
bmdDeckLinkConfigBypass = /* 'byps' */ 0x62797073 ,
bmdDeckLinkConfigClockTimingAdjustment = /* 'ctad' */ 0x63746164 ,
2016-09-26 13:38:04 +00:00
bmdDeckLinkConfigDuplexMode = /* 'dupx' */ 0x64757078 ,
2014-12-03 13:39:13 +00:00
/* Audio Input/Output Flags */
bmdDeckLinkConfigAnalogAudioConsumerLevels = /* 'aacl' */ 0x6161636C ,
/* Video output flags */
bmdDeckLinkConfigFieldFlickerRemoval = /* 'fdfr' */ 0x66646672 ,
bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion = /* 'to59' */ 0x746F3539 ,
bmdDeckLinkConfig444SDIVideoOutput = /* '444o' */ 0x3434346F ,
bmdDeckLinkConfigBlackVideoOutputDuringCapture = /* 'bvoc' */ 0x62766F63 ,
bmdDeckLinkConfigLowLatencyVideoOutput = /* 'llvo' */ 0x6C6C766F ,
2016-09-26 13:38:04 +00:00
bmdDeckLinkConfigDownConversionOnAllAnalogOutput = /* 'caao' */ 0x6361616F ,
bmdDeckLinkConfigSMPTELevelAOutput = /* 'smta' */ 0x736D7461 ,
2020-02-27 11:32:17 +00:00
bmdDeckLinkConfigRec2020Output = /* 'rec2' */ 0x72656332 , // Ensure output is Rec.2020 colorspace
bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit = /* 'SDQS' */ 0x53445153 ,
/* Video Output Flags */
bmdDeckLinkConfigOutput1080pAsPsF = /* 'pfpr' */ 0x70667072 ,
2014-12-03 13:39:13 +00:00
/* Video Output Integers */
bmdDeckLinkConfigVideoOutputConnection = /* 'vocn' */ 0x766F636E ,
bmdDeckLinkConfigVideoOutputConversionMode = /* 'vocm' */ 0x766F636D ,
bmdDeckLinkConfigAnalogVideoOutputFlags = /* 'avof' */ 0x61766F66 ,
bmdDeckLinkConfigReferenceInputTimingOffset = /* 'glot' */ 0x676C6F74 ,
bmdDeckLinkConfigVideoOutputIdleOperation = /* 'voio' */ 0x766F696F ,
bmdDeckLinkConfigDefaultVideoOutputMode = /* 'dvom' */ 0x64766F6D ,
bmdDeckLinkConfigDefaultVideoOutputModeFlags = /* 'dvof' */ 0x64766F66 ,
2016-09-26 13:38:04 +00:00
bmdDeckLinkConfigSDIOutputLinkConfiguration = /* 'solc' */ 0x736F6C63 ,
2014-12-03 13:39:13 +00:00
/* Video Output Floats */
bmdDeckLinkConfigVideoOutputComponentLumaGain = /* 'oclg' */ 0x6F636C67 ,
bmdDeckLinkConfigVideoOutputComponentChromaBlueGain = /* 'occb' */ 0x6F636362 ,
bmdDeckLinkConfigVideoOutputComponentChromaRedGain = /* 'occr' */ 0x6F636372 ,
bmdDeckLinkConfigVideoOutputCompositeLumaGain = /* 'oilg' */ 0x6F696C67 ,
bmdDeckLinkConfigVideoOutputCompositeChromaGain = /* 'oicg' */ 0x6F696367 ,
bmdDeckLinkConfigVideoOutputSVideoLumaGain = /* 'oslg' */ 0x6F736C67 ,
bmdDeckLinkConfigVideoOutputSVideoChromaGain = /* 'oscg' */ 0x6F736367 ,
/* Video Input Flags */
bmdDeckLinkConfigVideoInputScanning = /* 'visc' */ 0x76697363 , // Applicable to H264 Pro Recorder only
bmdDeckLinkConfigUseDedicatedLTCInput = /* 'dltc' */ 0x646C7463 , // Use timecode from LTC input instead of SDI stream
2016-09-26 13:38:04 +00:00
bmdDeckLinkConfigSDIInput3DPayloadOverride = /* '3dds' */ 0x33646473 ,
2014-12-03 13:39:13 +00:00
2020-02-27 11:32:17 +00:00
/* Video Input Flags */
bmdDeckLinkConfigCapture1080pAsPsF = /* 'cfpr' */ 0x63667072 ,
2014-12-03 13:39:13 +00:00
/* Video Input Integers */
bmdDeckLinkConfigVideoInputConnection = /* 'vicn' */ 0x7669636E ,
bmdDeckLinkConfigAnalogVideoInputFlags = /* 'avif' */ 0x61766966 ,
bmdDeckLinkConfigVideoInputConversionMode = /* 'vicm' */ 0x7669636D ,
bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame = /* 'pdif' */ 0x70646966 ,
bmdDeckLinkConfigVANCSourceLine1Mapping = /* 'vsl1' */ 0x76736C31 ,
bmdDeckLinkConfigVANCSourceLine2Mapping = /* 'vsl2' */ 0x76736C32 ,
bmdDeckLinkConfigVANCSourceLine3Mapping = /* 'vsl3' */ 0x76736C33 ,
bmdDeckLinkConfigCapturePassThroughMode = /* 'cptm' */ 0x6370746D ,
/* Video Input Floats */
bmdDeckLinkConfigVideoInputComponentLumaGain = /* 'iclg' */ 0x69636C67 ,
bmdDeckLinkConfigVideoInputComponentChromaBlueGain = /* 'iccb' */ 0x69636362 ,
bmdDeckLinkConfigVideoInputComponentChromaRedGain = /* 'iccr' */ 0x69636372 ,
bmdDeckLinkConfigVideoInputCompositeLumaGain = /* 'iilg' */ 0x69696C67 ,
bmdDeckLinkConfigVideoInputCompositeChromaGain = /* 'iicg' */ 0x69696367 ,
bmdDeckLinkConfigVideoInputSVideoLumaGain = /* 'islg' */ 0x69736C67 ,
bmdDeckLinkConfigVideoInputSVideoChromaGain = /* 'iscg' */ 0x69736367 ,
2016-09-26 13:38:04 +00:00
/* Audio Input Flags */
bmdDeckLinkConfigMicrophonePhantomPower = /* 'mphp' */ 0x6D706870 ,
2014-12-03 13:39:13 +00:00
/* Audio Input Integers */
bmdDeckLinkConfigAudioInputConnection = /* 'aicn' */ 0x6169636E ,
/* Audio Input Floats */
bmdDeckLinkConfigAnalogAudioInputScaleChannel1 = /* 'ais1' */ 0x61697331 ,
bmdDeckLinkConfigAnalogAudioInputScaleChannel2 = /* 'ais2' */ 0x61697332 ,
bmdDeckLinkConfigAnalogAudioInputScaleChannel3 = /* 'ais3' */ 0x61697333 ,
bmdDeckLinkConfigAnalogAudioInputScaleChannel4 = /* 'ais4' */ 0x61697334 ,
bmdDeckLinkConfigDigitalAudioInputScale = /* 'dais' */ 0x64616973 ,
2016-09-26 13:38:04 +00:00
bmdDeckLinkConfigMicrophoneInputGain = /* 'micg' */ 0x6D696367 ,
2014-12-03 13:39:13 +00:00
/* Audio Output Integers */
bmdDeckLinkConfigAudioOutputAESAnalogSwitch = /* 'aoaa' */ 0x616F6161 ,
/* Audio Output Floats */
bmdDeckLinkConfigAnalogAudioOutputScaleChannel1 = /* 'aos1' */ 0x616F7331 ,
bmdDeckLinkConfigAnalogAudioOutputScaleChannel2 = /* 'aos2' */ 0x616F7332 ,
bmdDeckLinkConfigAnalogAudioOutputScaleChannel3 = /* 'aos3' */ 0x616F7333 ,
bmdDeckLinkConfigAnalogAudioOutputScaleChannel4 = /* 'aos4' */ 0x616F7334 ,
2016-09-26 13:38:04 +00:00
bmdDeckLinkConfigDigitalAudioOutputScale = /* 'daos' */ 0x64616F73 ,
bmdDeckLinkConfigHeadphoneVolume = /* 'hvol' */ 0x68766F6C ,
/* Device Information Strings */
bmdDeckLinkConfigDeviceInformationLabel = /* 'dila' */ 0x64696C61 ,
bmdDeckLinkConfigDeviceInformationSerialNumber = /* 'disn' */ 0x6469736E ,
bmdDeckLinkConfigDeviceInformationCompany = /* 'dico' */ 0x6469636F ,
bmdDeckLinkConfigDeviceInformationPhone = /* 'diph' */ 0x64697068 ,
bmdDeckLinkConfigDeviceInformationEmail = /* 'diem' */ 0x6469656D ,
bmdDeckLinkConfigDeviceInformationDate = /* 'dida' */ 0x64696461 ,
/* Deck Control Integers */
bmdDeckLinkConfigDeckControlConnection = /* 'dcco' */ 0x6463636F
} ;
/* Enum BMDDeckLinkEncoderConfigurationID - DeckLink Encoder Configuration ID */
typedef uint32_t BMDDeckLinkEncoderConfigurationID ;
enum _BMDDeckLinkEncoderConfigurationID {
/* Video Encoder Integers */
bmdDeckLinkEncoderConfigPreferredBitDepth = /* 'epbr' */ 0x65706272 ,
bmdDeckLinkEncoderConfigFrameCodingMode = /* 'efcm' */ 0x6566636D ,
/* HEVC/H.265 Encoder Integers */
bmdDeckLinkEncoderConfigH265TargetBitrate = /* 'htbr' */ 0x68746272 ,
/* DNxHR/DNxHD Compression ID */
bmdDeckLinkEncoderConfigDNxHRCompressionID = /* 'dcid' */ 0x64636964 ,
/* DNxHR/DNxHD Level */
bmdDeckLinkEncoderConfigDNxHRLevel = /* 'dlev' */ 0x646C6576 ,
/* Encoded Sample Decriptions */
bmdDeckLinkEncoderConfigMPEG4SampleDescription = /* 'stsE' */ 0x73747345 , // Full MPEG4 sample description (aka SampleEntry of an 'stsd' atom-box). Useful for MediaFoundation, QuickTime, MKV and more
bmdDeckLinkEncoderConfigMPEG4CodecSpecificDesc = /* 'esds' */ 0x65736473 // Sample description extensions only (atom stream, each with size and fourCC header). Useful for AVFoundation, VideoToolbox, MKV and more
2014-12-03 13:39:13 +00:00
} ;
// Forward Declarations
class IDeckLinkConfiguration ;
2016-09-26 13:38:04 +00:00
class IDeckLinkEncoderConfiguration ;
2014-12-03 13:39:13 +00:00
/* Interface IDeckLinkConfiguration - DeckLink Configuration interface */
2020-02-27 11:32:17 +00:00
class BMD_PUBLIC IDeckLinkConfiguration : public IUnknown
2014-12-03 13:39:13 +00:00
{
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 ( ) { } // call Release method to drop reference count
} ;
2016-09-26 13:38:04 +00:00
/* Interface IDeckLinkEncoderConfiguration - DeckLink Encoder Configuration interface. Obtained from IDeckLinkEncoderInput */
2020-02-27 11:32:17 +00:00
class BMD_PUBLIC IDeckLinkEncoderConfiguration : public IUnknown
2016-09-26 13:38:04 +00:00
{
public :
virtual HRESULT SetFlag ( /* in */ BMDDeckLinkEncoderConfigurationID cfgID , /* in */ bool value ) = 0 ;
virtual HRESULT GetFlag ( /* in */ BMDDeckLinkEncoderConfigurationID cfgID , /* out */ bool * value ) = 0 ;
virtual HRESULT SetInt ( /* in */ BMDDeckLinkEncoderConfigurationID cfgID , /* in */ int64_t value ) = 0 ;
virtual HRESULT GetInt ( /* in */ BMDDeckLinkEncoderConfigurationID cfgID , /* out */ int64_t * value ) = 0 ;
virtual HRESULT SetFloat ( /* in */ BMDDeckLinkEncoderConfigurationID cfgID , /* in */ double value ) = 0 ;
virtual HRESULT GetFloat ( /* in */ BMDDeckLinkEncoderConfigurationID cfgID , /* out */ double * value ) = 0 ;
virtual HRESULT SetString ( /* in */ BMDDeckLinkEncoderConfigurationID cfgID , /* in */ const char * value ) = 0 ;
virtual HRESULT GetString ( /* in */ BMDDeckLinkEncoderConfigurationID cfgID , /* out */ const char * * value ) = 0 ;
virtual HRESULT GetBytes ( /* in */ BMDDeckLinkEncoderConfigurationID cfgID , /* out */ void * buffer /* optional */ , /* in, out */ uint32_t * bufferSize ) = 0 ;
protected :
virtual ~ IDeckLinkEncoderConfiguration ( ) { } // call Release method to drop reference count
} ;
2014-12-03 13:39:13 +00:00
/* Functions */
extern " C " {
}
# endif /* defined(BMD_DECKLINKAPICONFIGURATION_H) */