diff --git a/.gitignore b/.gitignore index c4bacf2..65cf753 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ /build/ /out/ /.vs/ +/apps/*/x64/ # CMake generated files CMakeUserPresets.json @@ -11,6 +12,9 @@ CMakeFiles/ CMakeCache.txt cmake_install.cmake compile_commands.json +build.ninja +.ninja_deps +.ninja_log # Visual Studio/MSBuild *.suo diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..911cdaf --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,17 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Debug LoopThroughWithOpenGLCompositing", + "type": "cppvsdbg", + "request": "launch", + "program": "${workspaceFolder}\\apps\\LoopThroughWithOpenGLCompositing\\x64\\Debug\\LoopThroughWithOpenGLCompositing.exe", + "args": [], + "stopAtEntry": false, + "cwd": "${workspaceFolder}\\apps\\LoopThroughWithOpenGLCompositing\\x64\\Debug", + "environment": [], + "console": "internalConsole", + "preLaunchTask": "Build LoopThroughWithOpenGLCompositing Debug x64" + } + ] +} diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..ddcdea2 --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,46 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Build LoopThroughWithOpenGLCompositing Debug x64", + "type": "process", + "command": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\amd64\\MSBuild.exe", + "args": [ + "${workspaceFolder}\\apps\\LoopThroughWithOpenGLCompositing\\LoopThroughWithOpenGLCompositing.sln", + "/m", + "/p:Configuration=Debug", + "/p:Platform=x64" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "problemMatcher": "$msCompile" + }, + { + "label": "Build LoopThroughWithOpenGLCompositing Release x64", + "type": "process", + "command": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\amd64\\MSBuild.exe", + "args": [ + "${workspaceFolder}\\apps\\LoopThroughWithOpenGLCompositing\\LoopThroughWithOpenGLCompositing.sln", + "/m", + "/p:Configuration=Release", + "/p:Platform=x64" + ], + "group": "build", + "problemMatcher": "$msCompile" + }, + { + "label": "Clean LoopThroughWithOpenGLCompositing Debug x64", + "type": "process", + "command": "C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\MSBuild\\Current\\Bin\\amd64\\MSBuild.exe", + "args": [ + "${workspaceFolder}\\apps\\LoopThroughWithOpenGLCompositing\\LoopThroughWithOpenGLCompositing.sln", + "/target:Clean", + "/p:Configuration=Debug", + "/p:Platform=x64" + ], + "problemMatcher": "$msCompile" + } + ] +} diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..e1f2b90 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,89 @@ +cmake_minimum_required(VERSION 3.24) + +project(video_shader LANGUAGES C CXX RC) + +set(CMAKE_CXX_STANDARD 17) +set(CMAKE_CXX_STANDARD_REQUIRED ON) +set(CMAKE_CXX_EXTENSIONS OFF) + +set(APP_DIR "${CMAKE_CURRENT_SOURCE_DIR}/apps/LoopThroughWithOpenGLCompositing") +set(GPUDIRECT_DIR "${CMAKE_CURRENT_SOURCE_DIR}/3rdParty/Blackmagic DeckLink SDK 16.0/Win/Samples/NVIDIA_GPUDirect") + +if(NOT EXISTS "${APP_DIR}/LoopThroughWithOpenGLCompositing.cpp") + message(FATAL_ERROR "Imported app sources were not found under ${APP_DIR}") +endif() + +if(NOT EXISTS "${GPUDIRECT_DIR}/lib/x64/dvp.lib") + message(FATAL_ERROR "NVIDIA GPUDirect library not found under ${GPUDIRECT_DIR}") +endif() + +add_executable(LoopThroughWithOpenGLCompositing WIN32 + "${APP_DIR}/DeckLinkAPI_i.c" + "${APP_DIR}/GLExtensions.cpp" + "${APP_DIR}/GLExtensions.h" + "${APP_DIR}/LoopThroughWithOpenGLCompositing.cpp" + "${APP_DIR}/LoopThroughWithOpenGLCompositing.h" + "${APP_DIR}/LoopThroughWithOpenGLCompositing.rc" + "${APP_DIR}/OpenGLComposite.cpp" + "${APP_DIR}/OpenGLComposite.h" + "${APP_DIR}/resource.h" + "${APP_DIR}/stdafx.cpp" + "${APP_DIR}/stdafx.h" + "${APP_DIR}/targetver.h" + "${APP_DIR}/VideoFrameTransfer.cpp" + "${APP_DIR}/VideoFrameTransfer.h" + "${APP_DIR}/video_effect.frag" +) + +target_include_directories(LoopThroughWithOpenGLCompositing PRIVATE + "${APP_DIR}" + "${GPUDIRECT_DIR}/include" +) + +target_link_directories(LoopThroughWithOpenGLCompositing PRIVATE + "${GPUDIRECT_DIR}/lib/x64" +) + +target_link_libraries(LoopThroughWithOpenGLCompositing PRIVATE + dvp.lib + opengl32 + glu32 +) + +target_compile_definitions(LoopThroughWithOpenGLCompositing PRIVATE + _UNICODE + UNICODE +) + +set_source_files_properties("${APP_DIR}/video_effect.frag" PROPERTIES HEADER_FILE_ONLY TRUE) + +if(MSVC) + target_compile_options(LoopThroughWithOpenGLCompositing PRIVATE /W3) +endif() + +add_custom_command(TARGET LoopThroughWithOpenGLCompositing POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${GPUDIRECT_DIR}/bin/x64/dvp.dll" + "$/dvp.dll" + COMMAND ${CMAKE_COMMAND} -E copy_if_different + "${APP_DIR}/video_effect.frag" + "$/video_effect.frag" +) + +source_group(TREE "${APP_DIR}" FILES + "${APP_DIR}/DeckLinkAPI_i.c" + "${APP_DIR}/GLExtensions.cpp" + "${APP_DIR}/GLExtensions.h" + "${APP_DIR}/LoopThroughWithOpenGLCompositing.cpp" + "${APP_DIR}/LoopThroughWithOpenGLCompositing.h" + "${APP_DIR}/LoopThroughWithOpenGLCompositing.rc" + "${APP_DIR}/OpenGLComposite.cpp" + "${APP_DIR}/OpenGLComposite.h" + "${APP_DIR}/resource.h" + "${APP_DIR}/stdafx.cpp" + "${APP_DIR}/stdafx.h" + "${APP_DIR}/targetver.h" + "${APP_DIR}/VideoFrameTransfer.cpp" + "${APP_DIR}/VideoFrameTransfer.h" + "${APP_DIR}/video_effect.frag" +) diff --git a/CMakePresets.json b/CMakePresets.json new file mode 100644 index 0000000..1b3f6af --- /dev/null +++ b/CMakePresets.json @@ -0,0 +1,52 @@ +{ + "version": 6, + "cmakeMinimumRequired": { + "major": 3, + "minor": 24, + "patch": 0 + }, + "configurePresets": [ + { + "name": "vs2022-x64-debug", + "displayName": "VS2022 x64 Debug", + "description": "Configure with Visual Studio 2022 for x64 Debug builds.", + "generator": "Visual Studio 17 2022", + "architecture": { + "value": "x64", + "strategy": "external" + }, + "binaryDir": "${sourceDir}/build/vs2022-x64-debug", + "cacheVariables": { + "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/vs2022-x64-debug" + } + }, + { + "name": "vs2022-x64-release", + "displayName": "VS2022 x64 Release", + "description": "Configure with Visual Studio 2022 for x64 Release builds.", + "generator": "Visual Studio 17 2022", + "architecture": { + "value": "x64", + "strategy": "external" + }, + "binaryDir": "${sourceDir}/build/vs2022-x64-release", + "cacheVariables": { + "CMAKE_INSTALL_PREFIX": "${sourceDir}/out/install/vs2022-x64-release" + } + } + ], + "buildPresets": [ + { + "name": "build-debug", + "displayName": "Build Debug", + "configurePreset": "vs2022-x64-debug", + "configuration": "Debug" + }, + { + "name": "build-release", + "displayName": "Build Release", + "configurePreset": "vs2022-x64-release", + "configuration": "Release" + } + ] +} diff --git a/apps/LoopThroughWithOpenGLCompositing/DeckLinkAPI_h.h b/apps/LoopThroughWithOpenGLCompositing/DeckLinkAPI_h.h new file mode 100644 index 0000000..a1054c2 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/DeckLinkAPI_h.h @@ -0,0 +1,20433 @@ + + +/* this ALWAYS GENERATED file contains the definitions for the interfaces */ + + + /* File created by MIDL compiler version 8.01.0628 */ +/* at Tue Jan 19 14:14:07 2038 + */ +/* Compiler settings for ..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\include\DeckLinkAPI.idl: + Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0628 + protocol : all , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + + + +/* verify that the version is high enough to compile this file*/ +#ifndef __REQUIRED_RPCNDR_H_VERSION__ +#define __REQUIRED_RPCNDR_H_VERSION__ 500 +#endif + +#include "rpc.h" +#include "rpcndr.h" + +#ifndef __RPCNDR_H_VERSION__ +#error this stub requires an updated version of +#endif /* __RPCNDR_H_VERSION__ */ + + +#ifndef __DeckLinkAPI_h_h__ +#define __DeckLinkAPI_h_h__ + +#if defined(_MSC_VER) && (_MSC_VER >= 1020) +#pragma once +#endif + +#ifndef DECLSPEC_XFGVIRT +#if defined(_CONTROL_FLOW_GUARD_XFG) +#define DECLSPEC_XFGVIRT(base, func) __declspec(xfg_virtual(base, func)) +#else +#define DECLSPEC_XFGVIRT(base, func) +#endif +#endif + +/* Forward Declarations */ + +#ifndef __IDeckLinkTimecode_FWD_DEFINED__ +#define __IDeckLinkTimecode_FWD_DEFINED__ +typedef interface IDeckLinkTimecode IDeckLinkTimecode; + +#endif /* __IDeckLinkTimecode_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkDisplayModeIterator_FWD_DEFINED__ +#define __IDeckLinkDisplayModeIterator_FWD_DEFINED__ +typedef interface IDeckLinkDisplayModeIterator IDeckLinkDisplayModeIterator; + +#endif /* __IDeckLinkDisplayModeIterator_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkDisplayMode_FWD_DEFINED__ +#define __IDeckLinkDisplayMode_FWD_DEFINED__ +typedef interface IDeckLinkDisplayMode IDeckLinkDisplayMode; + +#endif /* __IDeckLinkDisplayMode_FWD_DEFINED__ */ + + +#ifndef __IDeckLink_FWD_DEFINED__ +#define __IDeckLink_FWD_DEFINED__ +typedef interface IDeckLink IDeckLink; + +#endif /* __IDeckLink_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkConfiguration_FWD_DEFINED__ +#define __IDeckLinkConfiguration_FWD_DEFINED__ +typedef interface IDeckLinkConfiguration IDeckLinkConfiguration; + +#endif /* __IDeckLinkConfiguration_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderConfiguration_FWD_DEFINED__ +#define __IDeckLinkEncoderConfiguration_FWD_DEFINED__ +typedef interface IDeckLinkEncoderConfiguration IDeckLinkEncoderConfiguration; + +#endif /* __IDeckLinkEncoderConfiguration_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__ +#define __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__ +typedef interface IDeckLinkDeckControlStatusCallback IDeckLinkDeckControlStatusCallback; + +#endif /* __IDeckLinkDeckControlStatusCallback_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkDeckControl_FWD_DEFINED__ +#define __IDeckLinkDeckControl_FWD_DEFINED__ +typedef interface IDeckLinkDeckControl IDeckLinkDeckControl; + +#endif /* __IDeckLinkDeckControl_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingDeviceNotificationCallback_FWD_DEFINED__ +#define __IBMDStreamingDeviceNotificationCallback_FWD_DEFINED__ +typedef interface IBMDStreamingDeviceNotificationCallback IBMDStreamingDeviceNotificationCallback; + +#endif /* __IBMDStreamingDeviceNotificationCallback_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingH264InputCallback_FWD_DEFINED__ +#define __IBMDStreamingH264InputCallback_FWD_DEFINED__ +typedef interface IBMDStreamingH264InputCallback IBMDStreamingH264InputCallback; + +#endif /* __IBMDStreamingH264InputCallback_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingDiscovery_FWD_DEFINED__ +#define __IBMDStreamingDiscovery_FWD_DEFINED__ +typedef interface IBMDStreamingDiscovery IBMDStreamingDiscovery; + +#endif /* __IBMDStreamingDiscovery_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingVideoEncodingMode_FWD_DEFINED__ +#define __IBMDStreamingVideoEncodingMode_FWD_DEFINED__ +typedef interface IBMDStreamingVideoEncodingMode IBMDStreamingVideoEncodingMode; + +#endif /* __IBMDStreamingVideoEncodingMode_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingMutableVideoEncodingMode_FWD_DEFINED__ +#define __IBMDStreamingMutableVideoEncodingMode_FWD_DEFINED__ +typedef interface IBMDStreamingMutableVideoEncodingMode IBMDStreamingMutableVideoEncodingMode; + +#endif /* __IBMDStreamingMutableVideoEncodingMode_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingVideoEncodingModePresetIterator_FWD_DEFINED__ +#define __IBMDStreamingVideoEncodingModePresetIterator_FWD_DEFINED__ +typedef interface IBMDStreamingVideoEncodingModePresetIterator IBMDStreamingVideoEncodingModePresetIterator; + +#endif /* __IBMDStreamingVideoEncodingModePresetIterator_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingDeviceInput_FWD_DEFINED__ +#define __IBMDStreamingDeviceInput_FWD_DEFINED__ +typedef interface IBMDStreamingDeviceInput IBMDStreamingDeviceInput; + +#endif /* __IBMDStreamingDeviceInput_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingH264NALPacket_FWD_DEFINED__ +#define __IBMDStreamingH264NALPacket_FWD_DEFINED__ +typedef interface IBMDStreamingH264NALPacket IBMDStreamingH264NALPacket; + +#endif /* __IBMDStreamingH264NALPacket_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingAudioPacket_FWD_DEFINED__ +#define __IBMDStreamingAudioPacket_FWD_DEFINED__ +typedef interface IBMDStreamingAudioPacket IBMDStreamingAudioPacket; + +#endif /* __IBMDStreamingAudioPacket_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingMPEG2TSPacket_FWD_DEFINED__ +#define __IBMDStreamingMPEG2TSPacket_FWD_DEFINED__ +typedef interface IBMDStreamingMPEG2TSPacket IBMDStreamingMPEG2TSPacket; + +#endif /* __IBMDStreamingMPEG2TSPacket_FWD_DEFINED__ */ + + +#ifndef __IBMDStreamingH264NALParser_FWD_DEFINED__ +#define __IBMDStreamingH264NALParser_FWD_DEFINED__ +typedef interface IBMDStreamingH264NALParser IBMDStreamingH264NALParser; + +#endif /* __IBMDStreamingH264NALParser_FWD_DEFINED__ */ + + +#ifndef __CBMDStreamingDiscovery_FWD_DEFINED__ +#define __CBMDStreamingDiscovery_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CBMDStreamingDiscovery CBMDStreamingDiscovery; +#else +typedef struct CBMDStreamingDiscovery CBMDStreamingDiscovery; +#endif /* __cplusplus */ + +#endif /* __CBMDStreamingDiscovery_FWD_DEFINED__ */ + + +#ifndef __CBMDStreamingH264NALParser_FWD_DEFINED__ +#define __CBMDStreamingH264NALParser_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CBMDStreamingH264NALParser CBMDStreamingH264NALParser; +#else +typedef struct CBMDStreamingH264NALParser CBMDStreamingH264NALParser; +#endif /* __cplusplus */ + +#endif /* __CBMDStreamingH264NALParser_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoOutputCallback_FWD_DEFINED__ +#define __IDeckLinkVideoOutputCallback_FWD_DEFINED__ +typedef interface IDeckLinkVideoOutputCallback IDeckLinkVideoOutputCallback; + +#endif /* __IDeckLinkVideoOutputCallback_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkInputCallback_FWD_DEFINED__ +#define __IDeckLinkInputCallback_FWD_DEFINED__ +typedef interface IDeckLinkInputCallback IDeckLinkInputCallback; + +#endif /* __IDeckLinkInputCallback_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderInputCallback_FWD_DEFINED__ +#define __IDeckLinkEncoderInputCallback_FWD_DEFINED__ +typedef interface IDeckLinkEncoderInputCallback IDeckLinkEncoderInputCallback; + +#endif /* __IDeckLinkEncoderInputCallback_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBufferAllocator_FWD_DEFINED__ +#define __IDeckLinkVideoBufferAllocator_FWD_DEFINED__ +typedef interface IDeckLinkVideoBufferAllocator IDeckLinkVideoBufferAllocator; + +#endif /* __IDeckLinkVideoBufferAllocator_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBufferAllocatorProvider_FWD_DEFINED__ +#define __IDeckLinkVideoBufferAllocatorProvider_FWD_DEFINED__ +typedef interface IDeckLinkVideoBufferAllocatorProvider IDeckLinkVideoBufferAllocatorProvider; + +#endif /* __IDeckLinkVideoBufferAllocatorProvider_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkAudioOutputCallback_FWD_DEFINED__ +#define __IDeckLinkAudioOutputCallback_FWD_DEFINED__ +typedef interface IDeckLinkAudioOutputCallback IDeckLinkAudioOutputCallback; + +#endif /* __IDeckLinkAudioOutputCallback_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkIterator_FWD_DEFINED__ +#define __IDeckLinkIterator_FWD_DEFINED__ +typedef interface IDeckLinkIterator IDeckLinkIterator; + +#endif /* __IDeckLinkIterator_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkAPIInformation_FWD_DEFINED__ +#define __IDeckLinkAPIInformation_FWD_DEFINED__ +typedef interface IDeckLinkAPIInformation IDeckLinkAPIInformation; + +#endif /* __IDeckLinkAPIInformation_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkIPFlowAttributes_FWD_DEFINED__ +#define __IDeckLinkIPFlowAttributes_FWD_DEFINED__ +typedef interface IDeckLinkIPFlowAttributes IDeckLinkIPFlowAttributes; + +#endif /* __IDeckLinkIPFlowAttributes_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkIPFlowStatus_FWD_DEFINED__ +#define __IDeckLinkIPFlowStatus_FWD_DEFINED__ +typedef interface IDeckLinkIPFlowStatus IDeckLinkIPFlowStatus; + +#endif /* __IDeckLinkIPFlowStatus_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkIPFlowSetting_FWD_DEFINED__ +#define __IDeckLinkIPFlowSetting_FWD_DEFINED__ +typedef interface IDeckLinkIPFlowSetting IDeckLinkIPFlowSetting; + +#endif /* __IDeckLinkIPFlowSetting_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkIPFlow_FWD_DEFINED__ +#define __IDeckLinkIPFlow_FWD_DEFINED__ +typedef interface IDeckLinkIPFlow IDeckLinkIPFlow; + +#endif /* __IDeckLinkIPFlow_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkIPFlowIterator_FWD_DEFINED__ +#define __IDeckLinkIPFlowIterator_FWD_DEFINED__ +typedef interface IDeckLinkIPFlowIterator IDeckLinkIPFlowIterator; + +#endif /* __IDeckLinkIPFlowIterator_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkOutput_FWD_DEFINED__ +#define __IDeckLinkOutput_FWD_DEFINED__ +typedef interface IDeckLinkOutput IDeckLinkOutput; + +#endif /* __IDeckLinkOutput_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkInput_FWD_DEFINED__ +#define __IDeckLinkInput_FWD_DEFINED__ +typedef interface IDeckLinkInput IDeckLinkInput; + +#endif /* __IDeckLinkInput_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkIPExtensions_FWD_DEFINED__ +#define __IDeckLinkIPExtensions_FWD_DEFINED__ +typedef interface IDeckLinkIPExtensions IDeckLinkIPExtensions; + +#endif /* __IDeckLinkIPExtensions_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkHDMIInputEDID_FWD_DEFINED__ +#define __IDeckLinkHDMIInputEDID_FWD_DEFINED__ +typedef interface IDeckLinkHDMIInputEDID IDeckLinkHDMIInputEDID; + +#endif /* __IDeckLinkHDMIInputEDID_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderInput_FWD_DEFINED__ +#define __IDeckLinkEncoderInput_FWD_DEFINED__ +typedef interface IDeckLinkEncoderInput IDeckLinkEncoderInput; + +#endif /* __IDeckLinkEncoderInput_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBuffer_FWD_DEFINED__ +#define __IDeckLinkVideoBuffer_FWD_DEFINED__ +typedef interface IDeckLinkVideoBuffer IDeckLinkVideoBuffer; + +#endif /* __IDeckLinkVideoBuffer_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrame_FWD_DEFINED__ +#define __IDeckLinkVideoFrame_FWD_DEFINED__ +typedef interface IDeckLinkVideoFrame IDeckLinkVideoFrame; + +#endif /* __IDeckLinkVideoFrame_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkMutableVideoFrame_FWD_DEFINED__ +#define __IDeckLinkMutableVideoFrame_FWD_DEFINED__ +typedef interface IDeckLinkMutableVideoFrame IDeckLinkMutableVideoFrame; + +#endif /* __IDeckLinkMutableVideoFrame_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__ +#define __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__ +typedef interface IDeckLinkVideoFrame3DExtensions IDeckLinkVideoFrame3DExtensions; + +#endif /* __IDeckLinkVideoFrame3DExtensions_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameMetadataExtensions_FWD_DEFINED__ +#define __IDeckLinkVideoFrameMetadataExtensions_FWD_DEFINED__ +typedef interface IDeckLinkVideoFrameMetadataExtensions IDeckLinkVideoFrameMetadataExtensions; + +#endif /* __IDeckLinkVideoFrameMetadataExtensions_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameMutableMetadataExtensions_FWD_DEFINED__ +#define __IDeckLinkVideoFrameMutableMetadataExtensions_FWD_DEFINED__ +typedef interface IDeckLinkVideoFrameMutableMetadataExtensions IDeckLinkVideoFrameMutableMetadataExtensions; + +#endif /* __IDeckLinkVideoFrameMutableMetadataExtensions_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoInputFrame_FWD_DEFINED__ +#define __IDeckLinkVideoInputFrame_FWD_DEFINED__ +typedef interface IDeckLinkVideoInputFrame IDeckLinkVideoInputFrame; + +#endif /* __IDeckLinkVideoInputFrame_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkAncillaryPacket_FWD_DEFINED__ +#define __IDeckLinkAncillaryPacket_FWD_DEFINED__ +typedef interface IDeckLinkAncillaryPacket IDeckLinkAncillaryPacket; + +#endif /* __IDeckLinkAncillaryPacket_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkAncillaryPacketIterator_FWD_DEFINED__ +#define __IDeckLinkAncillaryPacketIterator_FWD_DEFINED__ +typedef interface IDeckLinkAncillaryPacketIterator IDeckLinkAncillaryPacketIterator; + +#endif /* __IDeckLinkAncillaryPacketIterator_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__ +#define __IDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__ +typedef interface IDeckLinkVideoFrameAncillaryPackets IDeckLinkVideoFrameAncillaryPackets; + +#endif /* __IDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameAncillary_FWD_DEFINED__ +#define __IDeckLinkVideoFrameAncillary_FWD_DEFINED__ +typedef interface IDeckLinkVideoFrameAncillary IDeckLinkVideoFrameAncillary; + +#endif /* __IDeckLinkVideoFrameAncillary_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderPacket_FWD_DEFINED__ +#define __IDeckLinkEncoderPacket_FWD_DEFINED__ +typedef interface IDeckLinkEncoderPacket IDeckLinkEncoderPacket; + +#endif /* __IDeckLinkEncoderPacket_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderVideoPacket_FWD_DEFINED__ +#define __IDeckLinkEncoderVideoPacket_FWD_DEFINED__ +typedef interface IDeckLinkEncoderVideoPacket IDeckLinkEncoderVideoPacket; + +#endif /* __IDeckLinkEncoderVideoPacket_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderAudioPacket_FWD_DEFINED__ +#define __IDeckLinkEncoderAudioPacket_FWD_DEFINED__ +typedef interface IDeckLinkEncoderAudioPacket IDeckLinkEncoderAudioPacket; + +#endif /* __IDeckLinkEncoderAudioPacket_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkH265NALPacket_FWD_DEFINED__ +#define __IDeckLinkH265NALPacket_FWD_DEFINED__ +typedef interface IDeckLinkH265NALPacket IDeckLinkH265NALPacket; + +#endif /* __IDeckLinkH265NALPacket_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkAudioInputPacket_FWD_DEFINED__ +#define __IDeckLinkAudioInputPacket_FWD_DEFINED__ +typedef interface IDeckLinkAudioInputPacket IDeckLinkAudioInputPacket; + +#endif /* __IDeckLinkAudioInputPacket_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkScreenPreviewCallback_FWD_DEFINED__ +#define __IDeckLinkScreenPreviewCallback_FWD_DEFINED__ +typedef interface IDeckLinkScreenPreviewCallback IDeckLinkScreenPreviewCallback; + +#endif /* __IDeckLinkScreenPreviewCallback_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkGLScreenPreviewHelper_FWD_DEFINED__ +#define __IDeckLinkGLScreenPreviewHelper_FWD_DEFINED__ +typedef interface IDeckLinkGLScreenPreviewHelper IDeckLinkGLScreenPreviewHelper; + +#endif /* __IDeckLinkGLScreenPreviewHelper_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__ +#define __IDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__ +typedef interface IDeckLinkDX9ScreenPreviewHelper IDeckLinkDX9ScreenPreviewHelper; + +#endif /* __IDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkWPFDX9ScreenPreviewHelper_FWD_DEFINED__ +#define __IDeckLinkWPFDX9ScreenPreviewHelper_FWD_DEFINED__ +typedef interface IDeckLinkWPFDX9ScreenPreviewHelper IDeckLinkWPFDX9ScreenPreviewHelper; + +#endif /* __IDeckLinkWPFDX9ScreenPreviewHelper_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkNotificationCallback_FWD_DEFINED__ +#define __IDeckLinkNotificationCallback_FWD_DEFINED__ +typedef interface IDeckLinkNotificationCallback IDeckLinkNotificationCallback; + +#endif /* __IDeckLinkNotificationCallback_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkNotification_FWD_DEFINED__ +#define __IDeckLinkNotification_FWD_DEFINED__ +typedef interface IDeckLinkNotification IDeckLinkNotification; + +#endif /* __IDeckLinkNotification_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkProfileAttributes_FWD_DEFINED__ +#define __IDeckLinkProfileAttributes_FWD_DEFINED__ +typedef interface IDeckLinkProfileAttributes IDeckLinkProfileAttributes; + +#endif /* __IDeckLinkProfileAttributes_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkProfileIterator_FWD_DEFINED__ +#define __IDeckLinkProfileIterator_FWD_DEFINED__ +typedef interface IDeckLinkProfileIterator IDeckLinkProfileIterator; + +#endif /* __IDeckLinkProfileIterator_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkProfile_FWD_DEFINED__ +#define __IDeckLinkProfile_FWD_DEFINED__ +typedef interface IDeckLinkProfile IDeckLinkProfile; + +#endif /* __IDeckLinkProfile_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkProfileCallback_FWD_DEFINED__ +#define __IDeckLinkProfileCallback_FWD_DEFINED__ +typedef interface IDeckLinkProfileCallback IDeckLinkProfileCallback; + +#endif /* __IDeckLinkProfileCallback_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkProfileManager_FWD_DEFINED__ +#define __IDeckLinkProfileManager_FWD_DEFINED__ +typedef interface IDeckLinkProfileManager IDeckLinkProfileManager; + +#endif /* __IDeckLinkProfileManager_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkStatistics_FWD_DEFINED__ +#define __IDeckLinkStatistics_FWD_DEFINED__ +typedef interface IDeckLinkStatistics IDeckLinkStatistics; + +#endif /* __IDeckLinkStatistics_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkStatus_FWD_DEFINED__ +#define __IDeckLinkStatus_FWD_DEFINED__ +typedef interface IDeckLinkStatus IDeckLinkStatus; + +#endif /* __IDeckLinkStatus_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkKeyer_FWD_DEFINED__ +#define __IDeckLinkKeyer_FWD_DEFINED__ +typedef interface IDeckLinkKeyer IDeckLinkKeyer; + +#endif /* __IDeckLinkKeyer_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoConversion_FWD_DEFINED__ +#define __IDeckLinkVideoConversion_FWD_DEFINED__ +typedef interface IDeckLinkVideoConversion IDeckLinkVideoConversion; + +#endif /* __IDeckLinkVideoConversion_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkDeviceNotificationCallback_FWD_DEFINED__ +#define __IDeckLinkDeviceNotificationCallback_FWD_DEFINED__ +typedef interface IDeckLinkDeviceNotificationCallback IDeckLinkDeviceNotificationCallback; + +#endif /* __IDeckLinkDeviceNotificationCallback_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkDiscovery_FWD_DEFINED__ +#define __IDeckLinkDiscovery_FWD_DEFINED__ +typedef interface IDeckLinkDiscovery IDeckLinkDiscovery; + +#endif /* __IDeckLinkDiscovery_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkIterator_FWD_DEFINED__ +#define __CDeckLinkIterator_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkIterator CDeckLinkIterator; +#else +typedef struct CDeckLinkIterator CDeckLinkIterator; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkIterator_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkAPIInformation_FWD_DEFINED__ +#define __CDeckLinkAPIInformation_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkAPIInformation CDeckLinkAPIInformation; +#else +typedef struct CDeckLinkAPIInformation CDeckLinkAPIInformation; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkAPIInformation_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkGLScreenPreviewHelper_FWD_DEFINED__ +#define __CDeckLinkGLScreenPreviewHelper_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkGLScreenPreviewHelper CDeckLinkGLScreenPreviewHelper; +#else +typedef struct CDeckLinkGLScreenPreviewHelper CDeckLinkGLScreenPreviewHelper; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkGLScreenPreviewHelper_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkGL3ScreenPreviewHelper_FWD_DEFINED__ +#define __CDeckLinkGL3ScreenPreviewHelper_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkGL3ScreenPreviewHelper CDeckLinkGL3ScreenPreviewHelper; +#else +typedef struct CDeckLinkGL3ScreenPreviewHelper CDeckLinkGL3ScreenPreviewHelper; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkGL3ScreenPreviewHelper_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__ +#define __CDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkDX9ScreenPreviewHelper CDeckLinkDX9ScreenPreviewHelper; +#else +typedef struct CDeckLinkDX9ScreenPreviewHelper CDeckLinkDX9ScreenPreviewHelper; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkDX9ScreenPreviewHelper_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkWPFDX9ScreenPreviewHelper_FWD_DEFINED__ +#define __CDeckLinkWPFDX9ScreenPreviewHelper_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkWPFDX9ScreenPreviewHelper CDeckLinkWPFDX9ScreenPreviewHelper; +#else +typedef struct CDeckLinkWPFDX9ScreenPreviewHelper CDeckLinkWPFDX9ScreenPreviewHelper; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkWPFDX9ScreenPreviewHelper_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkVideoConversion_FWD_DEFINED__ +#define __CDeckLinkVideoConversion_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkVideoConversion CDeckLinkVideoConversion; +#else +typedef struct CDeckLinkVideoConversion CDeckLinkVideoConversion; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkVideoConversion_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkDiscovery_FWD_DEFINED__ +#define __CDeckLinkDiscovery_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkDiscovery CDeckLinkDiscovery; +#else +typedef struct CDeckLinkDiscovery CDeckLinkDiscovery; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkDiscovery_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__ +#define __CDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkVideoFrameAncillaryPackets CDeckLinkVideoFrameAncillaryPackets; +#else +typedef struct CDeckLinkVideoFrameAncillaryPackets CDeckLinkVideoFrameAncillaryPackets; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkVideoFrameAncillaryPackets_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkStatus_v15_3_1_FWD_DEFINED__ +#define __IDeckLinkStatus_v15_3_1_FWD_DEFINED__ +typedef interface IDeckLinkStatus_v15_3_1 IDeckLinkStatus_v15_3_1; + +#endif /* __IDeckLinkStatus_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkConfiguration_v15_3_1_FWD_DEFINED__ +#define __IDeckLinkConfiguration_v15_3_1_FWD_DEFINED__ +typedef interface IDeckLinkConfiguration_v15_3_1 IDeckLinkConfiguration_v15_3_1; + +#endif /* __IDeckLinkConfiguration_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBuffer_v15_3_1_FWD_DEFINED__ +#define __IDeckLinkVideoBuffer_v15_3_1_FWD_DEFINED__ +typedef interface IDeckLinkVideoBuffer_v15_3_1 IDeckLinkVideoBuffer_v15_3_1; + +#endif /* __IDeckLinkVideoBuffer_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBufferAllocator_v15_3_1_FWD_DEFINED__ +#define __IDeckLinkVideoBufferAllocator_v15_3_1_FWD_DEFINED__ +typedef interface IDeckLinkVideoBufferAllocator_v15_3_1 IDeckLinkVideoBufferAllocator_v15_3_1; + +#endif /* __IDeckLinkVideoBufferAllocator_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBufferAllocatorProvider_v15_3_1_FWD_DEFINED__ +#define __IDeckLinkVideoBufferAllocatorProvider_v15_3_1_FWD_DEFINED__ +typedef interface IDeckLinkVideoBufferAllocatorProvider_v15_3_1 IDeckLinkVideoBufferAllocatorProvider_v15_3_1; + +#endif /* __IDeckLinkVideoBufferAllocatorProvider_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkInput_v15_3_1_FWD_DEFINED__ +#define __IDeckLinkInput_v15_3_1_FWD_DEFINED__ +typedef interface IDeckLinkInput_v15_3_1 IDeckLinkInput_v15_3_1; + +#endif /* __IDeckLinkInput_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkOutput_v15_3_1_FWD_DEFINED__ +#define __IDeckLinkOutput_v15_3_1_FWD_DEFINED__ +typedef interface IDeckLinkOutput_v15_3_1 IDeckLinkOutput_v15_3_1; + +#endif /* __IDeckLinkOutput_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoConversion_v15_3_1_FWD_DEFINED__ +#define __IDeckLinkVideoConversion_v15_3_1_FWD_DEFINED__ +typedef interface IDeckLinkVideoConversion_v15_3_1 IDeckLinkVideoConversion_v15_3_1; + +#endif /* __IDeckLinkVideoConversion_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkNotification_v15_3_1_FWD_DEFINED__ +#define __IDeckLinkNotification_v15_3_1_FWD_DEFINED__ +typedef interface IDeckLinkNotification_v15_3_1 IDeckLinkNotification_v15_3_1; + +#endif /* __IDeckLinkNotification_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkVideoConversion_v15_3_1_FWD_DEFINED__ +#define __CDeckLinkVideoConversion_v15_3_1_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkVideoConversion_v15_3_1 CDeckLinkVideoConversion_v15_3_1; +#else +typedef struct CDeckLinkVideoConversion_v15_3_1 CDeckLinkVideoConversion_v15_3_1; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkVideoConversion_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkProfileAttributes_v15_3_1_FWD_DEFINED__ +#define __IDeckLinkProfileAttributes_v15_3_1_FWD_DEFINED__ +typedef interface IDeckLinkProfileAttributes_v15_3_1 IDeckLinkProfileAttributes_v15_3_1; + +#endif /* __IDeckLinkProfileAttributes_v15_3_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoOutputCallback_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkVideoOutputCallback_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkVideoOutputCallback_v14_2_1 IDeckLinkVideoOutputCallback_v14_2_1; + +#endif /* __IDeckLinkVideoOutputCallback_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkInputCallback_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkInputCallback_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkInputCallback_v14_2_1 IDeckLinkInputCallback_v14_2_1; + +#endif /* __IDeckLinkInputCallback_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkMemoryAllocator_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkMemoryAllocator_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkMemoryAllocator_v14_2_1 IDeckLinkMemoryAllocator_v14_2_1; + +#endif /* __IDeckLinkMemoryAllocator_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkOutput_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkOutput_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkOutput_v14_2_1 IDeckLinkOutput_v14_2_1; + +#endif /* __IDeckLinkOutput_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkInput_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkInput_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkInput_v14_2_1 IDeckLinkInput_v14_2_1; + +#endif /* __IDeckLinkInput_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderInput_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkEncoderInput_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkEncoderInput_v14_2_1 IDeckLinkEncoderInput_v14_2_1; + +#endif /* __IDeckLinkEncoderInput_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrame_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkVideoFrame_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkVideoFrame_v14_2_1 IDeckLinkVideoFrame_v14_2_1; + +#endif /* __IDeckLinkVideoFrame_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkMutableVideoFrame_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkMutableVideoFrame_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkMutableVideoFrame_v14_2_1 IDeckLinkMutableVideoFrame_v14_2_1; + +#endif /* __IDeckLinkMutableVideoFrame_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrame3DExtensions_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkVideoFrame3DExtensions_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkVideoFrame3DExtensions_v14_2_1 IDeckLinkVideoFrame3DExtensions_v14_2_1; + +#endif /* __IDeckLinkVideoFrame3DExtensions_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoInputFrame_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkVideoInputFrame_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkVideoInputFrame_v14_2_1 IDeckLinkVideoInputFrame_v14_2_1; + +#endif /* __IDeckLinkVideoInputFrame_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkScreenPreviewCallback_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkScreenPreviewCallback_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkScreenPreviewCallback_v14_2_1 IDeckLinkScreenPreviewCallback_v14_2_1; + +#endif /* __IDeckLinkScreenPreviewCallback_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkGLScreenPreviewHelper_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkGLScreenPreviewHelper_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkGLScreenPreviewHelper_v14_2_1 IDeckLinkGLScreenPreviewHelper_v14_2_1; + +#endif /* __IDeckLinkGLScreenPreviewHelper_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkDX9ScreenPreviewHelper_v14_2_1 IDeckLinkDX9ScreenPreviewHelper_v14_2_1; + +#endif /* __IDeckLinkDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1; + +#endif /* __IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoConversion_v14_2_1_FWD_DEFINED__ +#define __IDeckLinkVideoConversion_v14_2_1_FWD_DEFINED__ +typedef interface IDeckLinkVideoConversion_v14_2_1 IDeckLinkVideoConversion_v14_2_1; + +#endif /* __IDeckLinkVideoConversion_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkGLScreenPreviewHelper_v14_2_1_FWD_DEFINED__ +#define __CDeckLinkGLScreenPreviewHelper_v14_2_1_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkGLScreenPreviewHelper_v14_2_1 CDeckLinkGLScreenPreviewHelper_v14_2_1; +#else +typedef struct CDeckLinkGLScreenPreviewHelper_v14_2_1 CDeckLinkGLScreenPreviewHelper_v14_2_1; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkGLScreenPreviewHelper_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkGL3ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ +#define __CDeckLinkGL3ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkGL3ScreenPreviewHelper_v14_2_1 CDeckLinkGL3ScreenPreviewHelper_v14_2_1; +#else +typedef struct CDeckLinkGL3ScreenPreviewHelper_v14_2_1 CDeckLinkGL3ScreenPreviewHelper_v14_2_1; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkGL3ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ +#define __CDeckLinkDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkDX9ScreenPreviewHelper_v14_2_1 CDeckLinkDX9ScreenPreviewHelper_v14_2_1; +#else +typedef struct CDeckLinkDX9ScreenPreviewHelper_v14_2_1 CDeckLinkDX9ScreenPreviewHelper_v14_2_1; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ +#define __CDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 CDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1; +#else +typedef struct CDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 CDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkVideoConversion_v14_2_1_FWD_DEFINED__ +#define __CDeckLinkVideoConversion_v14_2_1_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkVideoConversion_v14_2_1 CDeckLinkVideoConversion_v14_2_1; +#else +typedef struct CDeckLinkVideoConversion_v14_2_1 CDeckLinkVideoConversion_v14_2_1; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkVideoConversion_v14_2_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkInputCallback_v11_5_1_FWD_DEFINED__ +#define __IDeckLinkInputCallback_v11_5_1_FWD_DEFINED__ +typedef interface IDeckLinkInputCallback_v11_5_1 IDeckLinkInputCallback_v11_5_1; + +#endif /* __IDeckLinkInputCallback_v11_5_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkInput_v11_5_1_FWD_DEFINED__ +#define __IDeckLinkInput_v11_5_1_FWD_DEFINED__ +typedef interface IDeckLinkInput_v11_5_1 IDeckLinkInput_v11_5_1; + +#endif /* __IDeckLinkInput_v11_5_1_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkConfiguration_v10_11_FWD_DEFINED__ +#define __IDeckLinkConfiguration_v10_11_FWD_DEFINED__ +typedef interface IDeckLinkConfiguration_v10_11 IDeckLinkConfiguration_v10_11; + +#endif /* __IDeckLinkConfiguration_v10_11_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkAttributes_v10_11_FWD_DEFINED__ +#define __IDeckLinkAttributes_v10_11_FWD_DEFINED__ +typedef interface IDeckLinkAttributes_v10_11 IDeckLinkAttributes_v10_11; + +#endif /* __IDeckLinkAttributes_v10_11_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkNotification_v10_11_FWD_DEFINED__ +#define __IDeckLinkNotification_v10_11_FWD_DEFINED__ +typedef interface IDeckLinkNotification_v10_11 IDeckLinkNotification_v10_11; + +#endif /* __IDeckLinkNotification_v10_11_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkOutput_v10_11_FWD_DEFINED__ +#define __IDeckLinkOutput_v10_11_FWD_DEFINED__ +typedef interface IDeckLinkOutput_v10_11 IDeckLinkOutput_v10_11; + +#endif /* __IDeckLinkOutput_v10_11_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkInput_v10_11_FWD_DEFINED__ +#define __IDeckLinkInput_v10_11_FWD_DEFINED__ +typedef interface IDeckLinkInput_v10_11 IDeckLinkInput_v10_11; + +#endif /* __IDeckLinkInput_v10_11_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderInput_v10_11_FWD_DEFINED__ +#define __IDeckLinkEncoderInput_v10_11_FWD_DEFINED__ +typedef interface IDeckLinkEncoderInput_v10_11 IDeckLinkEncoderInput_v10_11; + +#endif /* __IDeckLinkEncoderInput_v10_11_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkIterator_v10_11_FWD_DEFINED__ +#define __CDeckLinkIterator_v10_11_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkIterator_v10_11 CDeckLinkIterator_v10_11; +#else +typedef struct CDeckLinkIterator_v10_11 CDeckLinkIterator_v10_11; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkIterator_v10_11_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkDiscovery_v10_11_FWD_DEFINED__ +#define __CDeckLinkDiscovery_v10_11_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkDiscovery_v10_11 CDeckLinkDiscovery_v10_11; +#else +typedef struct CDeckLinkDiscovery_v10_11 CDeckLinkDiscovery_v10_11; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkDiscovery_v10_11_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkConfiguration_v10_9_FWD_DEFINED__ +#define __IDeckLinkConfiguration_v10_9_FWD_DEFINED__ +typedef interface IDeckLinkConfiguration_v10_9 IDeckLinkConfiguration_v10_9; + +#endif /* __IDeckLinkConfiguration_v10_9_FWD_DEFINED__ */ + + +#ifndef __CBMDStreamingDiscovery_v10_8_FWD_DEFINED__ +#define __CBMDStreamingDiscovery_v10_8_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CBMDStreamingDiscovery_v10_8 CBMDStreamingDiscovery_v10_8; +#else +typedef struct CBMDStreamingDiscovery_v10_8 CBMDStreamingDiscovery_v10_8; +#endif /* __cplusplus */ + +#endif /* __CBMDStreamingDiscovery_v10_8_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkConfiguration_v10_4_FWD_DEFINED__ +#define __IDeckLinkConfiguration_v10_4_FWD_DEFINED__ +typedef interface IDeckLinkConfiguration_v10_4 IDeckLinkConfiguration_v10_4; + +#endif /* __IDeckLinkConfiguration_v10_4_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkConfiguration_v10_2_FWD_DEFINED__ +#define __IDeckLinkConfiguration_v10_2_FWD_DEFINED__ +typedef interface IDeckLinkConfiguration_v10_2 IDeckLinkConfiguration_v10_2; + +#endif /* __IDeckLinkConfiguration_v10_2_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkAncillaryPacket_v15_2_FWD_DEFINED__ +#define __IDeckLinkAncillaryPacket_v15_2_FWD_DEFINED__ +typedef interface IDeckLinkAncillaryPacket_v15_2 IDeckLinkAncillaryPacket_v15_2; + +#endif /* __IDeckLinkAncillaryPacket_v15_2_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkAncillaryPacketIterator_v15_2_FWD_DEFINED__ +#define __IDeckLinkAncillaryPacketIterator_v15_2_FWD_DEFINED__ +typedef interface IDeckLinkAncillaryPacketIterator_v15_2 IDeckLinkAncillaryPacketIterator_v15_2; + +#endif /* __IDeckLinkAncillaryPacketIterator_v15_2_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameAncillaryPackets_v15_2_FWD_DEFINED__ +#define __IDeckLinkVideoFrameAncillaryPackets_v15_2_FWD_DEFINED__ +typedef interface IDeckLinkVideoFrameAncillaryPackets_v15_2 IDeckLinkVideoFrameAncillaryPackets_v15_2; + +#endif /* __IDeckLinkVideoFrameAncillaryPackets_v15_2_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkVideoFrameAncillaryPackets_v15_2_FWD_DEFINED__ +#define __CDeckLinkVideoFrameAncillaryPackets_v15_2_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkVideoFrameAncillaryPackets_v15_2 CDeckLinkVideoFrameAncillaryPackets_v15_2; +#else +typedef struct CDeckLinkVideoFrameAncillaryPackets_v15_2 CDeckLinkVideoFrameAncillaryPackets_v15_2; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkVideoFrameAncillaryPackets_v15_2_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameMetadataExtensions_v11_5_FWD_DEFINED__ +#define __IDeckLinkVideoFrameMetadataExtensions_v11_5_FWD_DEFINED__ +typedef interface IDeckLinkVideoFrameMetadataExtensions_v11_5 IDeckLinkVideoFrameMetadataExtensions_v11_5; + +#endif /* __IDeckLinkVideoFrameMetadataExtensions_v11_5_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkOutput_v11_4_FWD_DEFINED__ +#define __IDeckLinkOutput_v11_4_FWD_DEFINED__ +typedef interface IDeckLinkOutput_v11_4 IDeckLinkOutput_v11_4; + +#endif /* __IDeckLinkOutput_v11_4_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkInput_v11_4_FWD_DEFINED__ +#define __IDeckLinkInput_v11_4_FWD_DEFINED__ +typedef interface IDeckLinkInput_v11_4 IDeckLinkInput_v11_4; + +#endif /* __IDeckLinkInput_v11_4_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkIterator_v10_8_FWD_DEFINED__ +#define __CDeckLinkIterator_v10_8_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkIterator_v10_8 CDeckLinkIterator_v10_8; +#else +typedef struct CDeckLinkIterator_v10_8 CDeckLinkIterator_v10_8; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkIterator_v10_8_FWD_DEFINED__ */ + + +#ifndef __CDeckLinkDiscovery_v10_8_FWD_DEFINED__ +#define __CDeckLinkDiscovery_v10_8_FWD_DEFINED__ + +#ifdef __cplusplus +typedef class CDeckLinkDiscovery_v10_8 CDeckLinkDiscovery_v10_8; +#else +typedef struct CDeckLinkDiscovery_v10_8 CDeckLinkDiscovery_v10_8; +#endif /* __cplusplus */ + +#endif /* __CDeckLinkDiscovery_v10_8_FWD_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderConfiguration_v10_5_FWD_DEFINED__ +#define __IDeckLinkEncoderConfiguration_v10_5_FWD_DEFINED__ +typedef interface IDeckLinkEncoderConfiguration_v10_5 IDeckLinkEncoderConfiguration_v10_5; + +#endif /* __IDeckLinkEncoderConfiguration_v10_5_FWD_DEFINED__ */ + + +/* header files for imported files */ +#include "unknwn.h" + +#ifdef __cplusplus +extern "C"{ +#endif + + + +#ifndef __DeckLinkAPI_LIBRARY_DEFINED__ +#define __DeckLinkAPI_LIBRARY_DEFINED__ + +/* library DeckLinkAPI */ +/* [helpstring][version][uuid] */ + +typedef LONGLONG BMDTimeValue; + +typedef LONGLONG BMDTimeScale; + +typedef unsigned int BMDTimecodeBCD; + +typedef unsigned int BMDTimecodeUserBits; + +typedef LONGLONG BMDIPFlowID; + +typedef unsigned int BMDTimecodeFlags; +#if 0 +typedef enum _BMDTimecodeFlags BMDTimecodeFlags; + +#endif +/* [v1_enum] */ +enum _BMDTimecodeFlags + { + bmdTimecodeFlagDefault = 0, + bmdTimecodeIsDropFrame = ( 1 << 0 ) , + bmdTimecodeFieldMark = ( 1 << 1 ) , + bmdTimecodeColorFrame = ( 1 << 2 ) , + bmdTimecodeEmbedRecordingTrigger = ( 1 << 3 ) , + bmdTimecodeRecordingTriggered = ( 1 << 4 ) + } ; +typedef /* [v1_enum] */ +enum _BMDVideoConnection + { + bmdVideoConnectionUnspecified = 0, + bmdVideoConnectionSDI = ( 1 << 0 ) , + bmdVideoConnectionHDMI = ( 1 << 1 ) , + bmdVideoConnectionOpticalSDI = ( 1 << 2 ) , + bmdVideoConnectionComponent = ( 1 << 3 ) , + bmdVideoConnectionComposite = ( 1 << 4 ) , + bmdVideoConnectionSVideo = ( 1 << 5 ) , + bmdVideoConnectionEthernet = ( 1 << 6 ) , + bmdVideoConnectionOpticalEthernet = ( 1 << 7 ) , + bmdVideoConnectionInternal = ( 1 << 8 ) + } BMDVideoConnection; + +typedef /* [v1_enum] */ +enum _BMDAudioConnection + { + bmdAudioConnectionEmbedded = ( 1 << 0 ) , + bmdAudioConnectionAESEBU = ( 1 << 1 ) , + bmdAudioConnectionAnalog = ( 1 << 2 ) , + bmdAudioConnectionAnalogXLR = ( 1 << 3 ) , + bmdAudioConnectionAnalogRCA = ( 1 << 4 ) , + bmdAudioConnectionMicrophone = ( 1 << 5 ) , + bmdAudioConnectionHeadphones = ( 1 << 6 ) + } BMDAudioConnection; + +typedef /* [v1_enum] */ +enum _BMDDeckControlConnection + { + bmdDeckControlConnectionRS422Remote1 = ( 1 << 0 ) , + bmdDeckControlConnectionRS422Remote2 = ( 1 << 1 ) + } BMDDeckControlConnection; + + +typedef unsigned int BMDDisplayModeFlags; +#if 0 +typedef enum _BMDDisplayModeFlags BMDDisplayModeFlags; + +#endif +typedef /* [v1_enum] */ +enum _BMDDisplayMode + { + bmdModeNTSC = 0x6e747363, + bmdModeNTSC2398 = 0x6e743233, + bmdModePAL = 0x70616c20, + bmdModeNTSCp = 0x6e747370, + bmdModePALp = 0x70616c70, + bmdModeHD1080p2398 = 0x32337073, + bmdModeHD1080p24 = 0x32347073, + bmdModeHD1080p25 = 0x48703235, + bmdModeHD1080p2997 = 0x48703239, + bmdModeHD1080p30 = 0x48703330, + bmdModeHD1080p4795 = 0x48703437, + bmdModeHD1080p48 = 0x48703438, + bmdModeHD1080p50 = 0x48703530, + bmdModeHD1080p5994 = 0x48703539, + bmdModeHD1080p6000 = 0x48703630, + bmdModeHD1080p9590 = 0x48703935, + bmdModeHD1080p96 = 0x48703936, + bmdModeHD1080p100 = 0x48703130, + bmdModeHD1080p11988 = 0x48703131, + bmdModeHD1080p120 = 0x48703132, + bmdModeHD1080i50 = 0x48693530, + bmdModeHD1080i5994 = 0x48693539, + bmdModeHD1080i6000 = 0x48693630, + bmdModeHD720p50 = 0x68703530, + bmdModeHD720p5994 = 0x68703539, + bmdModeHD720p60 = 0x68703630, + bmdMode2k2398 = 0x326b3233, + bmdMode2k24 = 0x326b3234, + bmdMode2k25 = 0x326b3235, + bmdMode2kDCI2398 = 0x32643233, + bmdMode2kDCI24 = 0x32643234, + bmdMode2kDCI25 = 0x32643235, + bmdMode2kDCI2997 = 0x32643239, + bmdMode2kDCI30 = 0x32643330, + bmdMode2kDCI4795 = 0x32643437, + bmdMode2kDCI48 = 0x32643438, + bmdMode2kDCI50 = 0x32643530, + bmdMode2kDCI5994 = 0x32643539, + bmdMode2kDCI60 = 0x32643630, + bmdMode2kDCI9590 = 0x32643935, + bmdMode2kDCI96 = 0x32643936, + bmdMode2kDCI100 = 0x32643130, + bmdMode2kDCI11988 = 0x32643131, + bmdMode2kDCI120 = 0x32643132, + bmdMode4K2160p2398 = 0x346b3233, + bmdMode4K2160p24 = 0x346b3234, + bmdMode4K2160p25 = 0x346b3235, + bmdMode4K2160p2997 = 0x346b3239, + bmdMode4K2160p30 = 0x346b3330, + bmdMode4K2160p4795 = 0x346b3437, + bmdMode4K2160p48 = 0x346b3438, + bmdMode4K2160p50 = 0x346b3530, + bmdMode4K2160p5994 = 0x346b3539, + bmdMode4K2160p60 = 0x346b3630, + bmdMode4K2160p9590 = 0x346b3935, + bmdMode4K2160p96 = 0x346b3936, + bmdMode4K2160p100 = 0x346b3130, + bmdMode4K2160p11988 = 0x346b3131, + bmdMode4K2160p120 = 0x346b3132, + bmdMode4kDCI2398 = 0x34643233, + bmdMode4kDCI24 = 0x34643234, + bmdMode4kDCI25 = 0x34643235, + bmdMode4kDCI2997 = 0x34643239, + bmdMode4kDCI30 = 0x34643330, + bmdMode4kDCI4795 = 0x34643437, + bmdMode4kDCI48 = 0x34643438, + bmdMode4kDCI50 = 0x34643530, + bmdMode4kDCI5994 = 0x34643539, + bmdMode4kDCI60 = 0x34643630, + bmdMode4kDCI9590 = 0x34643935, + bmdMode4kDCI96 = 0x34643936, + bmdMode4kDCI100 = 0x34643130, + bmdMode4kDCI11988 = 0x34643131, + bmdMode4kDCI120 = 0x34643132, + bmdMode8K4320p2398 = 0x386b3233, + bmdMode8K4320p24 = 0x386b3234, + bmdMode8K4320p25 = 0x386b3235, + bmdMode8K4320p2997 = 0x386b3239, + bmdMode8K4320p30 = 0x386b3330, + bmdMode8K4320p4795 = 0x386b3437, + bmdMode8K4320p48 = 0x386b3438, + bmdMode8K4320p50 = 0x386b3530, + bmdMode8K4320p5994 = 0x386b3539, + bmdMode8K4320p60 = 0x386b3630, + bmdMode8kDCI2398 = 0x38643233, + bmdMode8kDCI24 = 0x38643234, + bmdMode8kDCI25 = 0x38643235, + bmdMode8kDCI2997 = 0x38643239, + bmdMode8kDCI30 = 0x38643330, + bmdMode8kDCI4795 = 0x38643437, + bmdMode8kDCI48 = 0x38643438, + bmdMode8kDCI50 = 0x38643530, + bmdMode8kDCI5994 = 0x38643539, + bmdMode8kDCI60 = 0x38643630, + bmdMode640x480p60 = 0x76676136, + bmdMode800x600p60 = 0x73766736, + bmdMode1440x900p50 = 0x77786735, + bmdMode1440x900p60 = 0x77786736, + bmdMode1440x1080p50 = 0x73786735, + bmdMode1440x1080p60 = 0x73786736, + bmdMode1600x1200p50 = 0x75786735, + bmdMode1600x1200p60 = 0x75786736, + bmdMode1920x1200p50 = 0x77757835, + bmdMode1920x1200p60 = 0x77757836, + bmdMode1920x1440p50 = 0x31393435, + bmdMode1920x1440p60 = 0x31393436, + bmdMode2560x1440p50 = 0x77716835, + bmdMode2560x1440p60 = 0x77716836, + bmdMode2560x1600p50 = 0x77717835, + bmdMode2560x1600p60 = 0x77717836, + bmdModeUnknown = 0x69756e6b + } BMDDisplayMode; + +typedef /* [v1_enum] */ +enum _BMDFieldDominance + { + bmdUnknownFieldDominance = 0, + bmdLowerFieldFirst = 0x6c6f7772, + bmdUpperFieldFirst = 0x75707072, + bmdProgressiveFrame = 0x70726f67, + bmdProgressiveSegmentedFrame = 0x70736620 + } BMDFieldDominance; + +typedef /* [v1_enum] */ +enum _BMDPixelFormat + { + bmdFormatUnspecified = 0, + bmdFormat8BitYUV = 0x32767579, + bmdFormat10BitYUV = 0x76323130, + bmdFormat10BitYUVA = 0x41793130, + bmdFormat8BitARGB = 32, + bmdFormat8BitBGRA = 0x42475241, + bmdFormat10BitRGB = 0x72323130, + bmdFormat12BitRGB = 0x52313242, + bmdFormat12BitRGBLE = 0x5231324c, + bmdFormat10BitRGBXLE = 0x5231306c, + bmdFormat10BitRGBX = 0x52313062, + bmdFormatH265 = 0x68657631, + bmdFormatDNxHR = 0x41566468 + } BMDPixelFormat; + +/* [v1_enum] */ +enum _BMDDisplayModeFlags + { + bmdDisplayModeSupports3D = ( 1 << 0 ) , + bmdDisplayModeColorspaceRec601 = ( 1 << 1 ) , + bmdDisplayModeColorspaceRec709 = ( 1 << 2 ) , + bmdDisplayModeColorspaceRec2020 = ( 1 << 3 ) + } ; + + +#if 0 +#endif + +#if 0 +#endif +typedef /* [v1_enum] */ +enum _BMDDeckLinkConfigurationID + { + bmdDeckLinkConfigSwapSerialRxTx = 0x73737274, + bmdDeckLinkConfigHDMI3DPackingFormat = 0x33647066, + bmdDeckLinkConfigBypass = 0x62797073, + bmdDeckLinkConfigClockTimingAdjustment = 0x63746164, + bmdDeckLinkConfigAudioMeterType = 0x61756d74, + bmdDeckLinkConfigAnalogAudioConsumerLevels = 0x6161636c, + bmdDeckLinkConfigSwapHDMICh3AndCh4OnInput = 0x68693334, + bmdDeckLinkConfigSwapHDMICh3AndCh4OnOutput = 0x686f3334, + bmdDeckLinkConfigAnalogAudioOutputChannelsMutedByHeadphone = 0x616d6870, + bmdDeckLinkConfigAnalogAudioOutputChannelsMutedBySpeaker = 0x616d7370, + bmdDeckLinkConfigFieldFlickerRemoval = 0x66646672, + bmdDeckLinkConfigHD1080p24ToHD1080i5994Conversion = 0x746f3539, + bmdDeckLinkConfig444SDIVideoOutput = 0x3434346f, + bmdDeckLinkConfigBlackVideoOutputDuringCapture = 0x62766f63, + bmdDeckLinkConfigLowLatencyVideoOutput = 0x6c6c766f, + bmdDeckLinkConfigDownConversionOnAllAnalogOutput = 0x6361616f, + bmdDeckLinkConfigSMPTELevelAOutput = 0x736d7461, + bmdDeckLinkConfigRec2020Output = 0x72656332, + bmdDeckLinkConfigQuadLinkSDIVideoOutputSquareDivisionSplit = 0x53445153, + bmdDeckLinkConfigOutput1080pAsPsF = 0x70667072, + bmdDeckLinkConfigOutputValidateEDIDForDolbyVision = 0x70726564, + bmdDeckLinkConfigExtendedDesktop = 0x65786474, + bmdDeckLinkConfigEthernetVideoOutputIP10 = 0x49503130, + bmdDeckLinkConfigVideoOutputConnection = 0x766f636e, + bmdDeckLinkConfigVideoOutputConversionMode = 0x766f636d, + bmdDeckLinkConfigVideoOutputConversionColorspaceDestination = 0x76636364, + bmdDeckLinkConfigVideoOutputConversionColorspaceSource = 0x76636373, + bmdDeckLinkConfigAnalogVideoOutputFlags = 0x61766f66, + bmdDeckLinkConfigReferenceInputTimingOffset = 0x676c6f74, + bmdDeckLinkConfigReferenceOutputMode = 0x676c4f6d, + bmdDeckLinkConfigVideoOutputIdleOperation = 0x766f696f, + bmdDeckLinkConfigDefaultVideoOutputMode = 0x64766f6d, + bmdDeckLinkConfigDefaultVideoOutputModeFlags = 0x64766f66, + bmdDeckLinkConfigSDIOutputLinkConfiguration = 0x736f6c63, + bmdDeckLinkConfigHDMITimecodePacking = 0x6874706b, + bmdDeckLinkConfigPlaybackGroup = 0x706c6772, + bmdDeckLinkConfigVideoOutputComponentLumaGain = 0x6f636c67, + bmdDeckLinkConfigVideoOutputComponentChromaBlueGain = 0x6f636362, + bmdDeckLinkConfigVideoOutputComponentChromaRedGain = 0x6f636372, + bmdDeckLinkConfigVideoOutputCompositeLumaGain = 0x6f696c67, + bmdDeckLinkConfigVideoOutputCompositeChromaGain = 0x6f696367, + bmdDeckLinkConfigVideoOutputSVideoLumaGain = 0x6f736c67, + bmdDeckLinkConfigVideoOutputSVideoChromaGain = 0x6f736367, + bmdDeckLinkConfigDolbyVisionCMVersion = 0x64767672, + bmdDeckLinkConfigDolbyVisionMasterMinimumNits = 0x6d6e6e74, + bmdDeckLinkConfigDolbyVisionMasterMaximumNits = 0x6d786e74, + bmdDeckLinkConfigVideoInputScanning = 0x76697363, + bmdDeckLinkConfigUseDedicatedLTCInput = 0x646c7463, + bmdDeckLinkConfigSDIInput3DPayloadOverride = 0x33646473, + bmdDeckLinkConfigCapture1080pAsPsF = 0x63667072, + bmdDeckLinkConfigVideoInputConnection = 0x7669636e, + bmdDeckLinkConfigAnalogVideoInputFlags = 0x61766966, + bmdDeckLinkConfigVideoInputConversionMode = 0x7669636d, + bmdDeckLinkConfig32PulldownSequenceInitialTimecodeFrame = 0x70646966, + bmdDeckLinkConfigVANCSourceLine1Mapping = 0x76736c31, + bmdDeckLinkConfigVANCSourceLine2Mapping = 0x76736c32, + bmdDeckLinkConfigVANCSourceLine3Mapping = 0x76736c33, + bmdDeckLinkConfigCapturePassThroughMode = 0x6370746d, + bmdDeckLinkConfigCaptureGroup = 0x63706772, + bmdDeckLinkConfigHANCInputFilter1 = 0x68696631, + bmdDeckLinkConfigHANCInputFilter2 = 0x68696632, + bmdDeckLinkConfigHANCInputFilter3 = 0x68696633, + bmdDeckLinkConfigHANCInputFilter4 = 0x68696634, + bmdDeckLinkConfigVideoInputComponentLumaGain = 0x69636c67, + bmdDeckLinkConfigVideoInputComponentChromaBlueGain = 0x69636362, + bmdDeckLinkConfigVideoInputComponentChromaRedGain = 0x69636372, + bmdDeckLinkConfigVideoInputCompositeLumaGain = 0x69696c67, + bmdDeckLinkConfigVideoInputCompositeChromaGain = 0x69696367, + bmdDeckLinkConfigVideoInputSVideoLumaGain = 0x69736c67, + bmdDeckLinkConfigVideoInputSVideoChromaGain = 0x69736367, + bmdDeckLinkConfigInternalKeyingAncillaryDataSource = 0x696b6173, + bmdDeckLinkConfigMicrophonePhantomPower = 0x6d706870, + bmdDeckLinkConfigAudioInputConnection = 0x6169636e, + bmdDeckLinkConfigAnalogAudioInputScaleChannel1 = 0x61697331, + bmdDeckLinkConfigAnalogAudioInputScaleChannel2 = 0x61697332, + bmdDeckLinkConfigAnalogAudioInputScaleChannel3 = 0x61697333, + bmdDeckLinkConfigAnalogAudioInputScaleChannel4 = 0x61697334, + bmdDeckLinkConfigDigitalAudioInputScale = 0x64616973, + bmdDeckLinkConfigMicrophoneInputGain = 0x6d696367, + bmdDeckLinkConfigAudioOutputXLRDelayFrames = 0x78646672, + bmdDeckLinkConfigAudioOutputAESAnalogSwitch = 0x616f6161, + bmdDeckLinkConfigAudioOutputXLRDelayTime = 0x78646d73, + bmdDeckLinkConfigAudioOutputXLRDelayType = 0x78647479, + bmdDeckLinkConfigAnalogAudioOutputScaleChannel1 = 0x616f7331, + bmdDeckLinkConfigAnalogAudioOutputScaleChannel2 = 0x616f7332, + bmdDeckLinkConfigAnalogAudioOutputScaleChannel3 = 0x616f7333, + bmdDeckLinkConfigAnalogAudioOutputScaleChannel4 = 0x616f7334, + bmdDeckLinkConfigDigitalAudioOutputScale = 0x64616f73, + bmdDeckLinkConfigHeadphoneVolume = 0x68766f6c, + bmdDeckLinkConfigSpeakerVolume = 0x73766f6c, + bmdDeckLinkConfigEthernetPTPFollowerOnly = 0x50545066, + bmdDeckLinkConfigEthernetPTPUseUDPEncapsulation = 0x50545055, + bmdDeckLinkConfigEthernetUseManualNMOSRegistry = 0x6e6d7270, + bmdDeckLinkConfigEthernetPTPPriority1 = 0x50545031, + bmdDeckLinkConfigEthernetPTPPriority2 = 0x50545032, + bmdDeckLinkConfigEthernetPTPDomain = 0x50545044, + bmdDeckLinkConfigEthernetPTPLogAnnounceInterval = 0x50545041, + bmdDeckLinkConfigEthernetAudioOutputChannelOrder = 0x6361636f, + bmdDeckLinkConfigEthernetNMOSRegistryAddress = 0x6e6d7265, + bmdDeckLinkConfigParamEthernetUseDHCP = 0x44484350, + bmdDeckLinkConfigParamEthernetStaticLocalIPAddress = 0x6e736970, + bmdDeckLinkConfigParamEthernetStaticSubnetMask = 0x6e73736d, + bmdDeckLinkConfigParamEthernetStaticGatewayIPAddress = 0x6e736777, + bmdDeckLinkConfigParamEthernetStaticPrimaryDNS = 0x6e737064, + bmdDeckLinkConfigParamEthernetStaticSecondaryDNS = 0x6e737364, + bmdDeckLinkConfigParamEthernetVideoOutputAddress = 0x6e6f6176, + bmdDeckLinkConfigParamEthernetAudioOutputAddress = 0x6e6f6161, + bmdDeckLinkConfigParamEthernetAncillaryOutputAddress = 0x6e6f6141, + bmdDeckLinkConfigDeviceInformationLabel = 0x64696c61, + bmdDeckLinkConfigDeviceInformationSerialNumber = 0x6469736e, + bmdDeckLinkConfigDeviceInformationCompany = 0x6469636f, + bmdDeckLinkConfigDeviceInformationPhone = 0x64697068, + bmdDeckLinkConfigDeviceInformationEmail = 0x6469656d, + bmdDeckLinkConfigDeviceInformationDate = 0x64696461, + bmdDeckLinkConfigDeckControlConnection = 0x6463636f, + bmdDeckLinkConfigDisplayLanguage = 0x6c616e67 + } BMDDeckLinkConfigurationID; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkEncoderConfigurationID + { + bmdDeckLinkEncoderConfigPreferredBitDepth = 0x65706272, + bmdDeckLinkEncoderConfigFrameCodingMode = 0x6566636d, + bmdDeckLinkEncoderConfigH265TargetBitrate = 0x68746272, + bmdDeckLinkEncoderConfigDNxHRCompressionID = 0x64636964, + bmdDeckLinkEncoderConfigDNxHRLevel = 0x646c6576, + bmdDeckLinkEncoderConfigMPEG4SampleDescription = 0x73747345, + bmdDeckLinkEncoderConfigMPEG4CodecSpecificDesc = 0x65736473 + } BMDDeckLinkEncoderConfigurationID; + + + +typedef unsigned int BMDDeckControlStatusFlags; +typedef unsigned int BMDDeckControlExportModeOpsFlags; +#if 0 +typedef enum _BMDDeckControlStatusFlags BMDDeckControlStatusFlags; + +typedef enum _BMDDeckControlExportModeOpsFlags BMDDeckControlExportModeOpsFlags; + +#endif +typedef /* [v1_enum] */ +enum _BMDDeckControlMode + { + bmdDeckControlNotOpened = 0x6e746f70, + bmdDeckControlVTRControlMode = 0x76747263, + bmdDeckControlExportMode = 0x6578706d, + bmdDeckControlCaptureMode = 0x6361706d + } BMDDeckControlMode; + +typedef /* [v1_enum] */ +enum _BMDDeckControlEvent + { + bmdDeckControlAbortedEvent = 0x61627465, + bmdDeckControlPrepareForExportEvent = 0x70666565, + bmdDeckControlExportCompleteEvent = 0x65786365, + bmdDeckControlPrepareForCaptureEvent = 0x70666365, + bmdDeckControlCaptureCompleteEvent = 0x63636576 + } BMDDeckControlEvent; + +typedef /* [v1_enum] */ +enum _BMDDeckControlVTRControlState + { + bmdDeckControlNotInVTRControlMode = 0x6e76636d, + bmdDeckControlVTRControlPlaying = 0x76747270, + bmdDeckControlVTRControlRecording = 0x76747272, + bmdDeckControlVTRControlStill = 0x76747261, + bmdDeckControlVTRControlShuttleForward = 0x76747366, + bmdDeckControlVTRControlShuttleReverse = 0x76747372, + bmdDeckControlVTRControlJogForward = 0x76746a66, + bmdDeckControlVTRControlJogReverse = 0x76746a72, + bmdDeckControlVTRControlStopped = 0x7674726f + } BMDDeckControlVTRControlState; + +/* [v1_enum] */ +enum _BMDDeckControlStatusFlags + { + bmdDeckControlStatusDeckConnected = ( 1 << 0 ) , + bmdDeckControlStatusRemoteMode = ( 1 << 1 ) , + bmdDeckControlStatusRecordInhibited = ( 1 << 2 ) , + bmdDeckControlStatusCassetteOut = ( 1 << 3 ) + } ; +/* [v1_enum] */ +enum _BMDDeckControlExportModeOpsFlags + { + bmdDeckControlExportModeInsertVideo = ( 1 << 0 ) , + bmdDeckControlExportModeInsertAudio1 = ( 1 << 1 ) , + bmdDeckControlExportModeInsertAudio2 = ( 1 << 2 ) , + bmdDeckControlExportModeInsertAudio3 = ( 1 << 3 ) , + bmdDeckControlExportModeInsertAudio4 = ( 1 << 4 ) , + bmdDeckControlExportModeInsertAudio5 = ( 1 << 5 ) , + bmdDeckControlExportModeInsertAudio6 = ( 1 << 6 ) , + bmdDeckControlExportModeInsertAudio7 = ( 1 << 7 ) , + bmdDeckControlExportModeInsertAudio8 = ( 1 << 8 ) , + bmdDeckControlExportModeInsertAudio9 = ( 1 << 9 ) , + bmdDeckControlExportModeInsertAudio10 = ( 1 << 10 ) , + bmdDeckControlExportModeInsertAudio11 = ( 1 << 11 ) , + bmdDeckControlExportModeInsertAudio12 = ( 1 << 12 ) , + bmdDeckControlExportModeInsertTimeCode = ( 1 << 13 ) , + bmdDeckControlExportModeInsertAssemble = ( 1 << 14 ) , + bmdDeckControlExportModeInsertPreview = ( 1 << 15 ) , + bmdDeckControlUseManualExport = ( 1 << 16 ) + } ; +typedef /* [v1_enum] */ +enum _BMDDeckControlError + { + bmdDeckControlNoError = 0x6e6f6572, + bmdDeckControlModeError = 0x6d6f6572, + bmdDeckControlMissedInPointError = 0x6d696572, + bmdDeckControlDeckTimeoutError = 0x64746572, + bmdDeckControlCommandFailedError = 0x63666572, + bmdDeckControlDeviceAlreadyOpenedError = 0x64616c6f, + bmdDeckControlFailedToOpenDeviceError = 0x66646572, + bmdDeckControlInLocalModeError = 0x6c6d6572, + bmdDeckControlEndOfTapeError = 0x65746572, + bmdDeckControlUserAbortError = 0x75616572, + bmdDeckControlNoTapeInDeckError = 0x6e746572, + bmdDeckControlNoVideoFromCardError = 0x6e766663, + bmdDeckControlNoCommunicationError = 0x6e636f6d, + bmdDeckControlBufferTooSmallError = 0x6274736d, + bmdDeckControlBadChecksumError = 0x63686b73, + bmdDeckControlUnknownError = 0x756e6572 + } BMDDeckControlError; + + + +#if 0 +#endif +typedef /* [v1_enum] */ +enum _BMDStreamingDeviceMode + { + bmdStreamingDeviceIdle = 0x69646c65, + bmdStreamingDeviceEncoding = 0x656e636f, + bmdStreamingDeviceStopping = 0x73746f70, + bmdStreamingDeviceUnknown = 0x6d756e6b + } BMDStreamingDeviceMode; + +typedef /* [v1_enum] */ +enum _BMDStreamingEncodingFrameRate + { + bmdStreamingEncodedFrameRate50i = 0x65353069, + bmdStreamingEncodedFrameRate5994i = 0x65353969, + bmdStreamingEncodedFrameRate60i = 0x65363069, + bmdStreamingEncodedFrameRate2398p = 0x65323370, + bmdStreamingEncodedFrameRate24p = 0x65323470, + bmdStreamingEncodedFrameRate25p = 0x65323570, + bmdStreamingEncodedFrameRate2997p = 0x65323970, + bmdStreamingEncodedFrameRate30p = 0x65333070, + bmdStreamingEncodedFrameRate50p = 0x65353070, + bmdStreamingEncodedFrameRate5994p = 0x65353970, + bmdStreamingEncodedFrameRate60p = 0x65363070 + } BMDStreamingEncodingFrameRate; + +typedef /* [v1_enum] */ +enum _BMDStreamingEncodingSupport + { + bmdStreamingEncodingModeNotSupported = 0, + bmdStreamingEncodingModeSupported = ( bmdStreamingEncodingModeNotSupported + 1 ) , + bmdStreamingEncodingModeSupportedWithChanges = ( bmdStreamingEncodingModeSupported + 1 ) + } BMDStreamingEncodingSupport; + +typedef /* [v1_enum] */ +enum _BMDStreamingVideoCodec + { + bmdStreamingVideoCodecH264 = 0x48323634 + } BMDStreamingVideoCodec; + +typedef /* [v1_enum] */ +enum _BMDStreamingH264Profile + { + bmdStreamingH264ProfileHigh = 0x68696768, + bmdStreamingH264ProfileMain = 0x6d61696e, + bmdStreamingH264ProfileBaseline = 0x62617365 + } BMDStreamingH264Profile; + +typedef /* [v1_enum] */ +enum _BMDStreamingH264Level + { + bmdStreamingH264Level12 = 0x6c763132, + bmdStreamingH264Level13 = 0x6c763133, + bmdStreamingH264Level2 = 0x6c763220, + bmdStreamingH264Level21 = 0x6c763231, + bmdStreamingH264Level22 = 0x6c763232, + bmdStreamingH264Level3 = 0x6c763320, + bmdStreamingH264Level31 = 0x6c763331, + bmdStreamingH264Level32 = 0x6c763332, + bmdStreamingH264Level4 = 0x6c763420, + bmdStreamingH264Level41 = 0x6c763431, + bmdStreamingH264Level42 = 0x6c763432 + } BMDStreamingH264Level; + +typedef /* [v1_enum] */ +enum _BMDStreamingH264EntropyCoding + { + bmdStreamingH264EntropyCodingCAVLC = 0x45564c43, + bmdStreamingH264EntropyCodingCABAC = 0x45424143 + } BMDStreamingH264EntropyCoding; + +typedef /* [v1_enum] */ +enum _BMDStreamingAudioCodec + { + bmdStreamingAudioCodecAAC = 0x41414320 + } BMDStreamingAudioCodec; + +typedef /* [v1_enum] */ +enum _BMDStreamingEncodingModePropertyID + { + bmdStreamingEncodingPropertyVideoFrameRate = 0x76667274, + bmdStreamingEncodingPropertyVideoBitRateKbps = 0x76627274, + bmdStreamingEncodingPropertyH264Profile = 0x68707266, + bmdStreamingEncodingPropertyH264Level = 0x686c766c, + bmdStreamingEncodingPropertyH264EntropyCoding = 0x68656e74, + bmdStreamingEncodingPropertyH264HasBFrames = 0x68426672, + bmdStreamingEncodingPropertyAudioCodec = 0x61636463, + bmdStreamingEncodingPropertyAudioSampleRate = 0x61737274, + bmdStreamingEncodingPropertyAudioChannelCount = 0x61636863, + bmdStreamingEncodingPropertyAudioBitRateKbps = 0x61627274 + } BMDStreamingEncodingModePropertyID; + + + + + + + + + + + + +typedef unsigned int BMDBufferAccessFlags; +typedef unsigned int BMDFrameFlags; +typedef unsigned int BMDVideoInputFlags; +typedef unsigned int BMDVideoInputFormatChangedEvents; +typedef unsigned int BMDDetectedVideoInputFormatFlags; +typedef unsigned int BMDDeckLinkCapturePassthroughMode; +typedef unsigned int BMDAnalogVideoFlags; +typedef unsigned int BMDAudioOutputXLRDelayType; +typedef unsigned int BMDFormatFlags; +typedef unsigned int BMDDeviceBusyState; +#if 0 +typedef enum _BMDBufferAccessFlags BMDBufferAccessFlags; + +typedef enum _BMDFrameFlags BMDFrameFlags; + +typedef enum _BMDVideoInputFlags BMDVideoInputFlags; + +typedef enum _BMDVideoInputFormatChangedEvents BMDVideoInputFormatChangedEvents; + +typedef enum _BMDDetectedVideoInputFormatFlags BMDDetectedVideoInputFormatFlags; + +typedef enum _BMDDeckLinkCapturePassthroughMode BMDDeckLinkCapturePassthroughMode; + +typedef enum _BMDAnalogVideoFlags BMDAnalogVideoFlags; + +typedef enum _BMDAudioOutputXLRDelayType BMDAudioOutputXLRDelayType; + +typedef enum _BMDFormatFlags BMDFormatFlags; + +typedef enum _BMDDeviceBusyState BMDDeviceBusyState; + +#endif +/* [v1_enum] */ +enum _BMDBufferAccessFlags + { + bmdBufferAccessReadAndWrite = ( ( 1 << 0 ) | ( 1 << 1 ) ) , + bmdBufferAccessRead = ( 1 << 0 ) , + bmdBufferAccessWrite = ( 1 << 1 ) + } ; +typedef /* [v1_enum] */ +enum _BMDVideoOutputFlags + { + bmdVideoOutputFlagDefault = 0, + bmdVideoOutputVANC = ( 1 << 0 ) , + bmdVideoOutputVITC = ( 1 << 1 ) , + bmdVideoOutputRP188 = ( 1 << 2 ) , + bmdVideoOutputDualStream3D = ( 1 << 4 ) , + bmdVideoOutputSynchronizeToPlaybackGroup = ( 1 << 6 ) , + bmdVideoOutputDolbyVision = ( 1 << 7 ) + } BMDVideoOutputFlags; + +typedef /* [v1_enum] */ +enum _BMDSupportedVideoModeFlags + { + bmdSupportedVideoModeDefault = 0, + bmdSupportedVideoModeKeying = ( 1 << 0 ) , + bmdSupportedVideoModeDualStream3D = ( 1 << 1 ) , + bmdSupportedVideoModeSDISingleLink = ( 1 << 2 ) , + bmdSupportedVideoModeSDIDualLink = ( 1 << 3 ) , + bmdSupportedVideoModeSDIQuadLink = ( 1 << 4 ) , + bmdSupportedVideoModeInAnyProfile = ( 1 << 5 ) , + bmdSupportedVideoModePsF = ( 1 << 6 ) , + bmdSupportedVideoModeDolbyVision = ( 1 << 7 ) , + bmdSupportedVideoModeEthernetIP10 = ( 1 << 8 ) + } BMDSupportedVideoModeFlags; + +typedef /* [v1_enum] */ +enum _BMDPacketType + { + bmdPacketTypeStreamInterruptedMarker = 0x73696e74, + bmdPacketTypeStreamData = 0x73646174 + } BMDPacketType; + +/* [v1_enum] */ +enum _BMDFrameFlags + { + bmdFrameFlagDefault = 0, + bmdFrameFlagFlipVertical = ( 1 << 0 ) , + bmdFrameFlagMonitorOutOnly = ( 1 << 3 ) , + bmdFrameContainsHDRMetadata = ( 1 << 1 ) , + bmdFrameContainsDolbyVisionMetadata = ( 1 << 4 ) , + bmdFrameCapturedAsPsF = ( 1 << 30 ) , + bmdFrameHasNoInputSource = ( 1 << 31 ) + } ; +/* [v1_enum] */ +enum _BMDVideoInputFlags + { + bmdVideoInputFlagDefault = 0, + bmdVideoInputEnableFormatDetection = ( 1 << 0 ) , + bmdVideoInputDualStream3D = ( 1 << 1 ) , + bmdVideoInputSynchronizeToCaptureGroup = ( 1 << 2 ) + } ; +/* [v1_enum] */ +enum _BMDVideoInputFormatChangedEvents + { + bmdVideoInputDisplayModeChanged = ( 1 << 0 ) , + bmdVideoInputFieldDominanceChanged = ( 1 << 1 ) , + bmdVideoInputColorspaceChanged = ( 1 << 2 ) + } ; +/* [v1_enum] */ +enum _BMDDetectedVideoInputFormatFlags + { + bmdDetectedVideoInputYCbCr422 = ( 1 << 0 ) , + bmdDetectedVideoInputRGB444 = ( 1 << 1 ) , + bmdDetectedVideoInputDualStream3D = ( 1 << 2 ) , + bmdDetectedVideoInput12BitDepth = ( 1 << 3 ) , + bmdDetectedVideoInput10BitDepth = ( 1 << 4 ) , + bmdDetectedVideoInput8BitDepth = ( 1 << 5 ) + } ; +/* [v1_enum] */ +enum _BMDDeckLinkCapturePassthroughMode + { + bmdDeckLinkCapturePassthroughModeDisabled = 0x70646973, + bmdDeckLinkCapturePassthroughModeDirect = 0x70646972, + bmdDeckLinkCapturePassthroughModeCleanSwitch = 0x70636c6e + } ; +typedef /* [v1_enum] */ +enum _BMDOutputFrameCompletionResult + { + bmdOutputFrameCompleted = 0, + bmdOutputFrameDisplayedLate = ( bmdOutputFrameCompleted + 1 ) , + bmdOutputFrameDropped = ( bmdOutputFrameDisplayedLate + 1 ) , + bmdOutputFrameFlushed = ( bmdOutputFrameDropped + 1 ) + } BMDOutputFrameCompletionResult; + +typedef /* [v1_enum] */ +enum _BMDReferenceStatus + { + bmdReferenceUnlocked = 0, + bmdReferenceNotSupportedByHardware = ( 1 << 0 ) , + bmdReferenceLocked = ( 1 << 1 ) + } BMDReferenceStatus; + +typedef /* [v1_enum] */ +enum _BMDEthernetNMOSRegistryState + { + bmdEthernetNMOSRegistryConnecting = 0x636f6e6e, + bmdEthernetNMOSRegistryActive = 0x676f6f64, + bmdEthernetNMOSRegistryError = 0x6572726f + } BMDEthernetNMOSRegistryState; + +typedef /* [v1_enum] */ +enum _BMDAudioFormat + { + bmdAudioFormatPCM = 0x6c70636d + } BMDAudioFormat; + +typedef /* [v1_enum] */ +enum _BMDAudioSampleRate + { + bmdAudioSampleRate48kHz = 48000 + } BMDAudioSampleRate; + +typedef /* [v1_enum] */ +enum _BMDAudioSampleType + { + bmdAudioSampleType16bitInteger = 16, + bmdAudioSampleType32bitInteger = 32 + } BMDAudioSampleType; + +typedef /* [v1_enum] */ +enum _BMDAudioOutputStreamType + { + bmdAudioOutputStreamContinuous = 0, + bmdAudioOutputStreamContinuousDontResample = ( bmdAudioOutputStreamContinuous + 1 ) , + bmdAudioOutputStreamTimestamped = ( bmdAudioOutputStreamContinuousDontResample + 1 ) + } BMDAudioOutputStreamType; + +typedef /* [v1_enum] */ +enum _BMDAncillaryPacketFormat + { + bmdAncillaryPacketFormatUInt8 = 0x75693038, + bmdAncillaryPacketFormatUInt16 = 0x75693136, + bmdAncillaryPacketFormatYCbCr10 = 0x76323130 + } BMDAncillaryPacketFormat; + +typedef /* [v1_enum] */ +enum _BMDTimecodeFormat + { + bmdTimecodeRP188VITC1 = 0x72707631, + bmdTimecodeRP188VITC2 = 0x72703132, + bmdTimecodeRP188LTC = 0x72706c74, + bmdTimecodeRP188HighFrameRate = 0x72706872, + bmdTimecodeRP188Any = 0x72703138, + bmdTimecodeVITC = 0x76697463, + bmdTimecodeVITCField2 = 0x76697432, + bmdTimecodeSerial = 0x73657269 + } BMDTimecodeFormat; + +/* [v1_enum] */ +enum _BMDAnalogVideoFlags + { + bmdAnalogVideoFlagCompositeSetup75 = ( 1 << 0 ) , + bmdAnalogVideoFlagComponentBetacamLevels = ( 1 << 1 ) + } ; +typedef /* [v1_enum] */ +enum _BMDAudioOutputAnalogAESSwitch + { + bmdAudioOutputSwitchAESEBU = 0x61657320, + bmdAudioOutputSwitchAnalog = 0x616e6c67 + } BMDAudioOutputAnalogAESSwitch; + +typedef /* [v1_enum] */ +enum _BMDVideoOutputConversionMode + { + bmdNoVideoOutputConversion = 0x6e6f6e65, + bmdVideoOutputLetterboxDownconversion = 0x6c746278, + bmdVideoOutputAnamorphicDownconversion = 0x616d7068, + bmdVideoOutputHD720toHD1080Conversion = 0x37323063, + bmdVideoOutputHardwareLetterboxDownconversion = 0x48576c62, + bmdVideoOutputHardwareAnamorphicDownconversion = 0x4857616d, + bmdVideoOutputHardwareCenterCutDownconversion = 0x48576363, + bmdVideoOutputHardware720p1080pCrossconversion = 0x78636170, + bmdVideoOutputHardwareAnamorphic720pUpconversion = 0x75613770, + bmdVideoOutputHardwareAnamorphic1080iUpconversion = 0x75613169, + bmdVideoOutputHardwareAnamorphic149To720pUpconversion = 0x75343770, + bmdVideoOutputHardwareAnamorphic149To1080iUpconversion = 0x75343169, + bmdVideoOutputHardwarePillarbox720pUpconversion = 0x75703770, + bmdVideoOutputHardwarePillarbox1080iUpconversion = 0x75703169 + } BMDVideoOutputConversionMode; + +typedef /* [v1_enum] */ +enum _BMDVideoInputConversionMode + { + bmdNoVideoInputConversion = 0x6e6f6e65, + bmdVideoInputLetterboxDownconversionFromHD1080 = 0x31306c62, + bmdVideoInputAnamorphicDownconversionFromHD1080 = 0x3130616d, + bmdVideoInputLetterboxDownconversionFromHD720 = 0x37326c62, + bmdVideoInputAnamorphicDownconversionFromHD720 = 0x3732616d, + bmdVideoInputLetterboxUpconversion = 0x6c627570, + bmdVideoInputAnamorphicUpconversion = 0x616d7570 + } BMDVideoInputConversionMode; + +typedef /* [v1_enum] */ +enum _BMDVideo3DPackingFormat + { + bmdVideo3DPackingSidebySideHalf = 0x73627368, + bmdVideo3DPackingLinebyLine = 0x6c62796c, + bmdVideo3DPackingTopAndBottom = 0x7461626f, + bmdVideo3DPackingFramePacking = 0x6672706b, + bmdVideo3DPackingLeftOnly = 0x6c656674, + bmdVideo3DPackingRightOnly = 0x72696768 + } BMDVideo3DPackingFormat; + +typedef /* [v1_enum] */ +enum _BMDIdleVideoOutputOperation + { + bmdIdleVideoOutputBlack = 0x626c6163, + bmdIdleVideoOutputLastFrame = 0x6c616661 + } BMDIdleVideoOutputOperation; + +typedef /* [v1_enum] */ +enum _BMDVideoEncoderFrameCodingMode + { + bmdVideoEncoderFrameCodingModeInter = 0x696e7465, + bmdVideoEncoderFrameCodingModeIntra = 0x696e7472 + } BMDVideoEncoderFrameCodingMode; + +typedef /* [v1_enum] */ +enum _BMDDNxHRLevel + { + bmdDNxHRLevelSQ = 0x646e7371, + bmdDNxHRLevelLB = 0x646e6c62, + bmdDNxHRLevelHQ = 0x646e6871, + bmdDNxHRLevelHQX = 0x64687178, + bmdDNxHRLevel444 = 0x64343434 + } BMDDNxHRLevel; + +typedef /* [v1_enum] */ +enum _BMDLinkConfiguration + { + bmdLinkConfigurationSingleLink = 0x6c63736c, + bmdLinkConfigurationDualLink = 0x6c63646c, + bmdLinkConfigurationQuadLink = 0x6c63716c + } BMDLinkConfiguration; + +typedef /* [v1_enum] */ +enum _BMDDeviceInterface + { + bmdDeviceInterfacePCI = 0x70636920, + bmdDeviceInterfaceUSB = 0x75736220, + bmdDeviceInterfaceThunderbolt = 0x7468756e + } BMDDeviceInterface; + +typedef /* [v1_enum] */ +enum _BMDColorspace + { + bmdColorspaceRec601 = 0x72363031, + bmdColorspaceRec709 = 0x72373039, + bmdColorspaceRec2020 = 0x32303230, + bmdColorspaceDolbyVisionNative = 0x446f5669, + bmdColorspaceP3D65 = 0x50334436, + bmdColorspaceUnknown = 0x4e636f6c + } BMDColorspace; + +typedef /* [v1_enum] */ +enum _BMDDynamicRange + { + bmdDynamicRangeSDR = 0, + bmdDynamicRangeHDRStaticPQ = ( 1 << 29 ) , + bmdDynamicRangeHDRStaticHLG = ( 1 << 30 ) + } BMDDynamicRange; + +typedef /* [v1_enum] */ +enum _BMDMezzanineType + { + bmdMezzanineTypeNone = 0, + bmdMezzanineTypeHDMI14OpticalSDI = 0x6d7a6131, + bmdMezzanineTypeQuadSDI = 0x6d7a3473, + bmdMezzanineTypeHDMI20OpticalSDI = 0x6d7a6132, + bmdMezzanineTypeHDMI21RS422 = 0x6d7a6872 + } BMDMezzanineType; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkHDMIInputEDIDID + { + bmdDeckLinkHDMIInputEDIDDynamicRange = 0x48494479 + } BMDDeckLinkHDMIInputEDIDID; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkFrameMetadataID + { + bmdDeckLinkFrameMetadataColorspace = 0x63737063, + bmdDeckLinkFrameMetadataHDRElectroOpticalTransferFunc = 0x656f7466, + bmdDeckLinkFrameMetadataRTPTimestamp = 0x72747074, + bmdDeckLinkFrameMetadataDolbyVision = 0x646f7669, + bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedX = 0x68647278, + bmdDeckLinkFrameMetadataHDRDisplayPrimariesRedY = 0x68647279, + bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenX = 0x68646778, + bmdDeckLinkFrameMetadataHDRDisplayPrimariesGreenY = 0x68646779, + bmdDeckLinkFrameMetadataHDRDisplayPrimariesBlueX = 0x68646278, + bmdDeckLinkFrameMetadataHDRDisplayPrimariesBlueY = 0x68646279, + bmdDeckLinkFrameMetadataHDRWhitePointX = 0x68647778, + bmdDeckLinkFrameMetadataHDRWhitePointY = 0x68647779, + bmdDeckLinkFrameMetadataHDRMaxDisplayMasteringLuminance = 0x68646d6c, + bmdDeckLinkFrameMetadataHDRMinDisplayMasteringLuminance = 0x686d696c, + bmdDeckLinkFrameMetadataHDRMaximumContentLightLevel = 0x6d636c6c, + bmdDeckLinkFrameMetadataHDRMaximumFrameAverageLightLevel = 0x66616c6c + } BMDDeckLinkFrameMetadataID; + +typedef /* [v1_enum] */ +enum _BMDEthernetLinkState + { + bmdEthernetLinkStateDisconnected = 0x656c6473, + bmdEthernetLinkStateConnectedUnbound = 0x656c6375, + bmdEthernetLinkStateConnectedBound = 0x656c6362 + } BMDEthernetLinkState; + +typedef /* [v1_enum] */ +enum _BMDProfileID + { + bmdProfileOneSubDeviceFullDuplex = 0x31646664, + bmdProfileOneSubDeviceHalfDuplex = 0x31646864, + bmdProfileTwoSubDevicesFullDuplex = 0x32646664, + bmdProfileTwoSubDevicesHalfDuplex = 0x32646864, + bmdProfileFourSubDevicesHalfDuplex = 0x34646864 + } BMDProfileID; + +typedef /* [v1_enum] */ +enum _BMDHDMITimecodePacking + { + bmdHDMITimecodePackingIEEEOUI000085 = 0x8500, + bmdHDMITimecodePackingIEEEOUI080046 = 0x8004601, + bmdHDMITimecodePackingIEEEOUI5CF9F0 = 0x5cf9f003 + } BMDHDMITimecodePacking; + +typedef /* [v1_enum] */ +enum _BMDInternalKeyingAncillaryDataSource + { + bmdInternalKeyingUsesAncillaryDataFromInputSignal = 0x696b6169, + bmdInternalKeyingUsesAncillaryDataFromKeyFrame = 0x696b616b + } BMDInternalKeyingAncillaryDataSource; + +/* [v1_enum] */ +enum _BMDAudioOutputXLRDelayType + { + bmdAudioOutputXLRDelayTypeTime = 0x64746d73, + bmdAudioOutputXLRDelayTypeFrames = 0x64746672 + } ; +typedef /* [v1_enum] */ +enum _BMDLanguage + { + bmdLanguageEnglish = 0x656e5553, + bmdLanguageSimplifiedChinese = 0x7a68434e, + bmdLanguageJapanese = 0x6a614a50, + bmdLanguageKorean = 0x6b6f4b52, + bmdLanguageSpanish = 0x65734553, + bmdLanguageGerman = 0x64654445, + bmdLanguageFrench = 0x66724652, + bmdLanguageRussian = 0x72755255, + bmdLanguageItalian = 0x69744954, + bmdLanguagePortuguese = 0x70744252, + bmdLanguageTurkish = 0x74725452, + bmdLanguagePolish = 0x706c504c, + bmdLanguageUkrainian = 0x756b5541 + } BMDLanguage; + +typedef /* [v1_enum] */ +enum _BMDAudioMeterType + { + bmdAudioMeterTypeVUMinus18db = 0x76753138, + bmdAudioMeterTypeVUMinus20db = 0x76753230, + bmdAudioMeterTypePPMMinus18db = 0x706d3138, + bmdAudioMeterTypePPMMinus20db = 0x706d3230 + } BMDAudioMeterType; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkAttributeID + { + BMDDeckLinkSupportsInternalKeying = 0x6b657969, + BMDDeckLinkSupportsExternalKeying = 0x6b657965, + BMDDeckLinkSupportsInputFormatDetection = 0x696e6664, + BMDDeckLinkHasReferenceInput = 0x6872696e, + BMDDeckLinkHasSerialPort = 0x68737074, + BMDDeckLinkHasAnalogVideoOutputGain = 0x61766f67, + BMDDeckLinkCanOnlyAdjustOverallVideoOutputGain = 0x6f766f67, + BMDDeckLinkHasVideoInputAntiAliasingFilter = 0x6161666c, + BMDDeckLinkHasBypass = 0x62797073, + BMDDeckLinkSupportsClockTimingAdjustment = 0x63746164, + BMDDeckLinkSupportsFullFrameReferenceInputTimingOffset = 0x6672696e, + BMDDeckLinkSupportsSMPTELevelAOutput = 0x6c766c61, + BMDDeckLinkSupportsAutoSwitchingPPsFOnInput = 0x61707366, + BMDDeckLinkSupportsDualLinkSDI = 0x73646c73, + BMDDeckLinkSupportsQuadLinkSDI = 0x73716c73, + BMDDeckLinkSupportsIdleOutput = 0x69646f75, + BMDDeckLinkVANCRequires10BitYUVVideoFrames = 0x76696f59, + BMDDeckLinkHasLTCTimecodeInput = 0x686c7463, + BMDDeckLinkSupportsHDRMetadata = 0x6864726d, + BMDDeckLinkSupportsColorspaceMetadata = 0x636d6574, + BMDDeckLinkSupportsHDMITimecode = 0x6874696d, + BMDDeckLinkSupportsHighFrameRateTimecode = 0x48465254, + BMDDeckLinkSupportsSynchronizeToCaptureGroup = 0x73746367, + BMDDeckLinkSupportsSynchronizeToPlaybackGroup = 0x73747067, + BMDDeckLinkHasMonitorOut = 0x666d6f6f, + BMDDeckLinkSupportsExtendedDesktop = 0x64746f70, + BMDDeckLinkHANCRequiresInputFilterConfiguration = 0x68726966, + BMDDeckLinkSupportsHANCOutput = 0x6473686f, + BMDDeckLinkSupportsHANCInput = 0x64736869, + BMDDeckLinkMaximumAudioChannels = 0x6d616368, + BMDDeckLinkMaximumHDMIAudioChannels = 0x6d686368, + BMDDeckLinkMaximumAnalogAudioInputChannels = 0x69616368, + BMDDeckLinkMaximumAnalogAudioOutputChannels = 0x61616368, + BMDDeckLinkNumberOfSubDevices = 0x6e736264, + BMDDeckLinkNumberOfEthernetConnectors = 0x6e657468, + BMDDeckLinkSubDeviceIndex = 0x73756269, + BMDDeckLinkPersistentID = 0x70656964, + BMDDeckLinkDeviceGroupID = 0x64676964, + BMDDeckLinkTopologicalID = 0x746f6964, + BMDDeckLinkVideoOutputConnections = 0x766f636e, + BMDDeckLinkVideoInputConnections = 0x7669636e, + BMDDeckLinkAudioOutputConnections = 0x616f636e, + BMDDeckLinkAudioInputConnections = 0x6169636e, + BMDDeckLinkVideoIOSupport = 0x76696f73, + BMDDeckLinkDeckControlConnections = 0x6463636e, + BMDDeckLinkDeviceInterface = 0x64627573, + BMDDeckLinkAudioInputRCAChannelCount = 0x61697263, + BMDDeckLinkAudioInputXLRChannelCount = 0x61697863, + BMDDeckLinkAudioOutputRCAChannelCount = 0x616f7263, + BMDDeckLinkAudioOutputXLRChannelCount = 0x616f7863, + BMDDeckLinkProfileID = 0x70726964, + BMDDeckLinkDuplex = 0x64757078, + BMDDeckLinkMinimumPrerollFrames = 0x6d707266, + BMDDeckLinkSupportedDynamicRange = 0x73756472, + BMDDeckLinkMezzanineType = 0x6d657a74, + BMDDeckLinkXLRDelayMsMaximum = 0x78647478, + BMDDeckLinkXLRDelayFramesMaximum = 0x78646678, + BMDDeckLinkOutputHANCUserDataWordsLimit = 0x6d686f77, + BMDDeckLinkInputHANCUserDataWordsLimit = 0x6d686977, + BMDDeckLinkVideoInputGainMinimum = 0x7669676d, + BMDDeckLinkVideoInputGainMaximum = 0x76696778, + BMDDeckLinkVideoOutputGainMinimum = 0x766f676d, + BMDDeckLinkVideoOutputGainMaximum = 0x766f6778, + BMDDeckLinkMicrophoneInputGainMinimum = 0x6d69676d, + BMDDeckLinkMicrophoneInputGainMaximum = 0x6d696778, + BMDDeckLinkSerialPortDeviceName = 0x736c706e, + BMDDeckLinkVendorName = 0x766e6472, + BMDDeckLinkDisplayName = 0x6473706e, + BMDDeckLinkModelName = 0x6d646c6e, + BMDDeckLinkDeviceHandle = 0x64657668, + BMDDeckLinkParamEthernetMACAddress = 0x704d4143 + } BMDDeckLinkAttributeID; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkAPIInformationID + { + BMDDeckLinkAPIVersion = 0x76657273 + } BMDDeckLinkAPIInformationID; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkStatisticID + { + bmdDeckLinkStatisticPTPLossOfLock = 0x6e6c6f6c, + bmdDeckLinkStatisticPTPDPLLMarginOfError = 0x70747065, + bmdDeckLinkStatisticDeviceTemperature = 0x53746d70, + bmdDeckLinkStatisticParamEthernetRxPackets = 0x6e747278, + bmdDeckLinkStatisticParamEthernetRxDroppedPackets = 0x6e647278, + bmdDeckLinkStatisticParamEthernetSFPDynamicInfo = 0x73667073 + } BMDDeckLinkStatisticID; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkStatusID + { + bmdDeckLinkStatusDetectedVideoInputMode = 0x6476696d, + bmdDeckLinkStatusCurrentVideoInputMode = 0x6376696d, + bmdDeckLinkStatusCurrentVideoOutputMode = 0x63766f6d, + bmdDeckLinkStatusHDMIOutputActualMode = 0x6869616d, + bmdDeckLinkStatusDetectedVideoInputFormatFlags = 0x64766666, + bmdDeckLinkStatusDetectedVideoInputFieldDominance = 0x64766664, + bmdDeckLinkStatusDetectedVideoInputColorspace = 0x6473636c, + bmdDeckLinkStatusDetectedVideoInputDynamicRange = 0x64736472, + bmdDeckLinkStatusDetectedSDILinkConfiguration = 0x64736c63, + bmdDeckLinkStatusCurrentVideoInputPixelFormat = 0x63766970, + bmdDeckLinkStatusCurrentVideoInputFlags = 0x63766966, + bmdDeckLinkStatusCurrentVideoOutputFlags = 0x63766f66, + bmdDeckLinkStatusPCIExpressLinkWidth = 0x70776964, + bmdDeckLinkStatusPCIExpressLinkSpeed = 0x706c6e6b, + bmdDeckLinkStatusLastVideoOutputPixelFormat = 0x6f706978, + bmdDeckLinkStatusReferenceSignalMode = 0x7265666d, + bmdDeckLinkStatusReferenceSignalFlags = 0x72656666, + bmdDeckLinkStatusBusy = 0x62757379, + bmdDeckLinkStatusInterchangeablePanelType = 0x69637074, + bmdDeckLinkStatusHDMIOutputActualFormatFlags = 0x68696166, + bmdDeckLinkStatusHDMIOutputFRLRate = 0x68696f66, + bmdDeckLinkStatusHDMIInputFRLRate = 0x68696966, + bmdDeckLinkStatusEthernetManualNMOSRegistry = 0x6e6d6d65, + bmdDeckLinkStatusHDMIOutputTMDSLineRate = 0x68696c72, + bmdDeckLinkStatusSinkSupportsDolbyVision = 0x64767672, + bmdDeckLinkStatusVideoInputSignalLocked = 0x7669736c, + bmdDeckLinkStatusAncillaryInputSignalLocked = 0x6169736c, + bmdDeckLinkStatusReferenceSignalLocked = 0x7265666c, + bmdDeckLinkStatusEthernetPTPGrandmasterIdentity = 0x73706964, + bmdDeckLinkStatusEthernetAudioInputChannelOrder = 0x7361636f, + bmdDeckLinkStatusEthernetCurrentNMOSRegistry = 0x6e6d7265, + bmdDeckLinkStatusReceivedEDID = 0x65646964, + bmdDeckLinkStatusParamEthernetLink = 0x73656c73, + bmdDeckLinkStatusParamEthernetLinkMbps = 0x73657370, + bmdDeckLinkStatusParamEthernetLocalIPAddress = 0x73656970, + bmdDeckLinkStatusParamEthernetSubnetMask = 0x7365736d, + bmdDeckLinkStatusParamEthernetGatewayIPAddress = 0x73656777, + bmdDeckLinkStatusParamEthernetPrimaryDNS = 0x73657064, + bmdDeckLinkStatusParamEthernetSecondaryDNS = 0x73657364, + bmdDeckLinkStatusParamEthernetSFPStaticInfo = 0x73667069, + bmdDeckLinkStatusParamEthernetVideoOutputAddress = 0x736f6176, + bmdDeckLinkStatusParamEthernetAudioOutputAddress = 0x736f6161, + bmdDeckLinkStatusParamEthernetAncillaryOutputAddress = 0x736f6141 + } BMDDeckLinkStatusID; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkVideoStatusFlags + { + bmdDeckLinkVideoStatusPsF = ( 1 << 0 ) , + bmdDeckLinkVideoStatusDualStream3D = ( 1 << 1 ) + } BMDDeckLinkVideoStatusFlags; + +typedef /* [v1_enum] */ +enum _BMDDuplexMode + { + bmdDuplexFull = 0x64786675, + bmdDuplexHalf = 0x64786861, + bmdDuplexSimplex = 0x64787370, + bmdDuplexInactive = 0x6478696e + } BMDDuplexMode; + +typedef /* [v1_enum] */ +enum _BMDPanelType + { + bmdPanelNotDetected = 0x6e706e6c, + bmdPanelTeranexMiniSmartPanel = 0x746d736d + } BMDPanelType; + +/* [v1_enum] */ +enum _BMDFormatFlags + { + bmdFormatRGB444 = ( 1 << 0 ) , + bmdFormatYUV444 = ( 1 << 1 ) , + bmdFormatYUV422 = ( 1 << 2 ) , + bmdFormatYUV420 = ( 1 << 3 ) , + bmdFormat8BitDepth = ( 1 << 4 ) , + bmdFormat10BitDepth = ( 1 << 5 ) , + bmdFormat12BitDepth = ( 1 << 6 ) + } ; +/* [v1_enum] */ +enum _BMDDeviceBusyState + { + bmdDeviceCaptureBusy = ( 1 << 0 ) , + bmdDevicePlaybackBusy = ( 1 << 1 ) , + bmdDeviceSerialPortBusy = ( 1 << 2 ) + } ; +typedef /* [v1_enum] */ +enum _BMDVideoIOSupport + { + bmdDeviceSupportsCapture = ( 1 << 0 ) , + bmdDeviceSupportsPlayback = ( 1 << 1 ) + } BMDVideoIOSupport; + +typedef /* [v1_enum] */ +enum _BMD3DPreviewFormat + { + bmd3DPreviewFormatDefault = 0x64656661, + bmd3DPreviewFormatLeftOnly = 0x6c656674, + bmd3DPreviewFormatRightOnly = 0x72696768, + bmd3DPreviewFormatSideBySide = 0x73696465, + bmd3DPreviewFormatTopBottom = 0x746f7062 + } BMD3DPreviewFormat; + +typedef /* [v1_enum] */ +enum _BMDAncillaryDataSpace + { + bmdAncillaryDataSpaceVANC = 0, + bmdAncillaryDataSpaceHANC = 1 + } BMDAncillaryDataSpace; + +typedef /* [v1_enum] */ +enum _BMDIPFlowDirection + { + bmdDeckLinkIPFlowDirectionOutput = 0, + bmdDeckLinkIPFlowDirectionInput = 1 + } BMDIPFlowDirection; + +typedef /* [v1_enum] */ +enum _BMDIPFlowType + { + bmdDeckLinkIPFlowTypeVideo = 0, + bmdDeckLinkIPFlowTypeAudio = 1, + bmdDeckLinkIPFlowTypeAncillary = 2 + } BMDIPFlowType; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkIPFlowAttributeID + { + bmdDeckLinkIPFlowID = 0x32666169, + bmdDeckLinkIPFlowDirection = 0x32666164, + bmdDeckLinkIPFlowType = 0x32666174 + } BMDDeckLinkIPFlowAttributeID; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkIPFlowStatusID + { + bmdDeckLinkIPFlowSDP = 0x32666173 + } BMDDeckLinkIPFlowStatusID; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkIPFlowSettingID + { + bmdDeckLinkIPFlowPeerSDP = 0x32667073 + } BMDDeckLinkIPFlowSettingID; + +typedef /* [v1_enum] */ +enum _BMDNotifications + { + bmdPreferencesChanged = 0x70726566, + bmdStatusChanged = 0x73746174, + bmdIPFlowStatusChanged = 0x62667363, + bmdIPFlowSettingChanged = 0x62666363 + } BMDNotifications; + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +typedef /* [v1_enum] */ +enum _BMDDeckLinkStatusID_v15_3_1 + { + bmdDeckLinkStatusDeviceTemperature_v15_3_1 = 0x64746d70, + bmdDeckLinkStatusEthernetLink_v15_3_1 = 0x73656c73, + bmdDeckLinkStatusEthernetLinkMbps_v15_3_1 = 0x73657370, + bmdDeckLinkStatusEthernetLocalIPAddress_v15_3_1 = 0x73656970, + bmdDeckLinkStatusEthernetSubnetMask_v15_3_1 = 0x7365736d, + bmdDeckLinkStatusEthernetGatewayIPAddress_v15_3_1 = 0x73656777, + bmdDeckLinkStatusEthernetPrimaryDNS_v15_3_1 = 0x73657064, + bmdDeckLinkStatusEthernetSecondaryDNS_v15_3_1 = 0x73657364, + bmdDeckLinkStatusEthernetVideoOutputAddress_v15_3_1 = 0x736f6176, + bmdDeckLinkStatusEthernetAudioOutputAddress_v15_3_1 = 0x736f6161, + bmdDeckLinkStatusEthernetAncillaryOutputAddress_v15_3_1 = 0x736f6141 + } BMDDeckLinkStatusID_v15_3_1; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkConfigurationID_v15_3_1 + { + bmdDeckLinkConfigEthernetUseDHCP_v15_3_1 = 0x44484350, + bmdDeckLinkConfigEthernetStaticLocalIPAddress_v15_3_1 = 0x6e736970, + bmdDeckLinkConfigEthernetStaticSubnetMask_v15_3_1 = 0x6e73736d, + bmdDeckLinkConfigEthernetStaticGatewayIPAddress_v15_3_1 = 0x6e736777, + bmdDeckLinkConfigEthernetStaticPrimaryDNS_v15_3_1 = 0x6e737064, + bmdDeckLinkConfigEthernetStaticSecondaryDNS_v15_3_1 = 0x6e737364, + bmdDeckLinkConfigEthernetVideoOutputAddress_v15_3_1 = 0x6e6f6176, + bmdDeckLinkConfigEthernetAudioOutputAddress_v15_3_1 = 0x6e6f6161, + bmdDeckLinkConfigEthernetAncillaryOutputAddress_v15_3_1 = 0x6e6f6141 + } BMDDeckLinkConfigurationID_v15_3_1; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkAttributeID_v15_3_1 + { + BMDDeckLinkEthernetMACAddress_v15_3_1 = 0x654d4143 + } BMDDeckLinkAttributeID_v15_3_1; + + + + + + + + + + + + + + + + + +typedef /* [v1_enum] */ +enum _BMDDeckLinkStatusID_v11_5_1 + { + bmdDeckLinkStatusDetectedVideoInputFlags_v11_5_1 = 0x64766966 + } BMDDeckLinkStatusID_v11_5_1; + +typedef /* [v1_enum] */ +enum _BMDDisplayModeSupport_v10_11 + { + bmdDisplayModeNotSupported_v10_11 = 0, + bmdDisplayModeSupported_v10_11 = ( bmdDisplayModeNotSupported_v10_11 + 1 ) , + bmdDisplayModeSupportedWithConversion_v10_11 = ( bmdDisplayModeSupported_v10_11 + 1 ) + } BMDDisplayModeSupport_v10_11; + +typedef /* [v1_enum] */ +enum _BMDDuplexMode_v10_11 + { + bmdDuplexModeFull_v10_11 = 0x66647570, + bmdDuplexModeHalf_v10_11 = 0x68647570 + } BMDDuplexMode_v10_11; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkConfigurationID_v10_11 + { + bmdDeckLinkConfigDuplexMode_v10_11 = 0x64757078 + } BMDDeckLinkConfigurationID_v10_11; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkAttributeID_v10_11 + { + BMDDeckLinkSupportsDuplexModeConfiguration_v10_11 = 0x64757078, + BMDDeckLinkSupportsHDKeying_v10_11 = 0x6b657968, + BMDDeckLinkPairedDevicePersistentID_v10_11 = 0x70706964, + BMDDeckLinkSupportsFullDuplex_v10_11 = 0x66647570 + } BMDDeckLinkAttributeID_v10_11; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkStatusID_v10_11 + { + bmdDeckLinkStatusDuplexMode_v10_11 = 0x64757078 + } BMDDeckLinkStatusID_v10_11; + +typedef /* [v1_enum] */ +enum _BMDDuplexStatus_v10_11 + { + bmdDuplexFullDuplex_v10_11 = 0x66647570, + bmdDuplexHalfDuplex_v10_11 = 0x68647570, + bmdDuplexSimplex_v10_11 = 0x73706c78, + bmdDuplexInactive_v10_11 = 0x696e6163 + } BMDDuplexStatus_v10_11; + + + + +typedef /* [v1_enum] */ +enum _BMDDeckLinkConfigurationID_v10_9 + { + bmdDeckLinkConfig1080pNotPsF_v10_9 = 0x6670726f + } BMDDeckLinkConfigurationID_v10_9; + + +typedef /* [v1_enum] */ +enum _BMDDeckLinkConfigurationID_v10_4 + { + bmdDeckLinkConfigSingleLinkVideoOutput_v10_4 = 0x73676c6f + } BMDDeckLinkConfigurationID_v10_4; + + +typedef /* [v1_enum] */ +enum _BMDDeckLinkConfigurationID_v10_2 + { + bmdDeckLinkConfig3GBpsVideoOutput_v10_2 = 0x33676273 + } BMDDeckLinkConfigurationID_v10_2; + +typedef /* [v1_enum] */ +enum _BMDAudioConnection_v10_2 + { + bmdAudioConnectionEmbedded_v10_2 = 0x656d6264, + bmdAudioConnectionAESEBU_v10_2 = 0x61657320, + bmdAudioConnectionAnalog_v10_2 = 0x616e6c67, + bmdAudioConnectionAnalogXLR_v10_2 = 0x61786c72, + bmdAudioConnectionAnalogRCA_v10_2 = 0x61726361 + } BMDAudioConnection_v10_2; + + + + + +typedef /* [v1_enum] */ +enum _BMDDeckLinkFrameMetadataID_v11_5 + { + bmdDeckLinkFrameMetadataCintelFilmType_v11_5 = 0x63667479, + bmdDeckLinkFrameMetadataCintelFilmGauge_v11_5 = 0x63666761, + bmdDeckLinkFrameMetadataCintelKeykodeLow_v11_5 = 0x636b6b6c, + bmdDeckLinkFrameMetadataCintelKeykodeHigh_v11_5 = 0x636b6b68, + bmdDeckLinkFrameMetadataCintelTile1Size_v11_5 = 0x63743173, + bmdDeckLinkFrameMetadataCintelTile2Size_v11_5 = 0x63743273, + bmdDeckLinkFrameMetadataCintelTile3Size_v11_5 = 0x63743373, + bmdDeckLinkFrameMetadataCintelTile4Size_v11_5 = 0x63743473, + bmdDeckLinkFrameMetadataCintelImageWidth_v11_5 = 0x49575078, + bmdDeckLinkFrameMetadataCintelImageHeight_v11_5 = 0x49485078, + bmdDeckLinkFrameMetadataCintelLinearMaskingRedInRed_v11_5 = 0x6d726972, + bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInRed_v11_5 = 0x6d676972, + bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInRed_v11_5 = 0x6d626972, + bmdDeckLinkFrameMetadataCintelLinearMaskingRedInGreen_v11_5 = 0x6d726967, + bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInGreen_v11_5 = 0x6d676967, + bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInGreen_v11_5 = 0x6d626967, + bmdDeckLinkFrameMetadataCintelLinearMaskingRedInBlue_v11_5 = 0x6d726962, + bmdDeckLinkFrameMetadataCintelLinearMaskingGreenInBlue_v11_5 = 0x6d676962, + bmdDeckLinkFrameMetadataCintelLinearMaskingBlueInBlue_v11_5 = 0x6d626962, + bmdDeckLinkFrameMetadataCintelLogMaskingRedInRed_v11_5 = 0x6d6c7272, + bmdDeckLinkFrameMetadataCintelLogMaskingGreenInRed_v11_5 = 0x6d6c6772, + bmdDeckLinkFrameMetadataCintelLogMaskingBlueInRed_v11_5 = 0x6d6c6272, + bmdDeckLinkFrameMetadataCintelLogMaskingRedInGreen_v11_5 = 0x6d6c7267, + bmdDeckLinkFrameMetadataCintelLogMaskingGreenInGreen_v11_5 = 0x6d6c6767, + bmdDeckLinkFrameMetadataCintelLogMaskingBlueInGreen_v11_5 = 0x6d6c6267, + bmdDeckLinkFrameMetadataCintelLogMaskingRedInBlue_v11_5 = 0x6d6c7262, + bmdDeckLinkFrameMetadataCintelLogMaskingGreenInBlue_v11_5 = 0x6d6c6762, + bmdDeckLinkFrameMetadataCintelLogMaskingBlueInBlue_v11_5 = 0x6d6c6262, + bmdDeckLinkFrameMetadataCintelFilmFrameRate_v11_5 = 0x63666672, + bmdDeckLinkFrameMetadataCintelOffsetToApplyHorizontal_v11_5 = 0x6f746168, + bmdDeckLinkFrameMetadataCintelOffsetToApplyVertical_v11_5 = 0x6f746176, + bmdDeckLinkFrameMetadataCintelGainRed_v11_5 = 0x4c665264, + bmdDeckLinkFrameMetadataCintelGainGreen_v11_5 = 0x4c664772, + bmdDeckLinkFrameMetadataCintelGainBlue_v11_5 = 0x4c66426c, + bmdDeckLinkFrameMetadataCintelLiftRed_v11_5 = 0x476e5264, + bmdDeckLinkFrameMetadataCintelLiftGreen_v11_5 = 0x476e4772, + bmdDeckLinkFrameMetadataCintelLiftBlue_v11_5 = 0x476e426c, + bmdDeckLinkFrameMetadataCintelHDRGainRed_v11_5 = 0x48475264, + bmdDeckLinkFrameMetadataCintelHDRGainGreen_v11_5 = 0x48474772, + bmdDeckLinkFrameMetadataCintelHDRGainBlue_v11_5 = 0x4847426c, + bmdDeckLinkFrameMetadataCintel16mmCropRequired_v11_5 = 0x63313663, + bmdDeckLinkFrameMetadataCintelInversionRequired_v11_5 = 0x63696e76, + bmdDeckLinkFrameMetadataCintelFlipRequired_v11_5 = 0x63666c72, + bmdDeckLinkFrameMetadataCintelFocusAssistEnabled_v11_5 = 0x63666165, + bmdDeckLinkFrameMetadataCintelKeykodeIsInterpolated_v11_5 = 0x6b6b6969 + } BMDDeckLinkFrameMetadataID_v11_5; + + +typedef /* [v1_enum] */ +enum _BMDDeckLinkAttributeID_v10_6 + { + BMDDeckLinkSupportsDesktopDisplay_v10_6 = 0x65787464 + } BMDDeckLinkAttributeID_v10_6; + +typedef /* [v1_enum] */ +enum _BMDIdleVideoOutputOperation_v10_6 + { + bmdIdleVideoOutputDesktop_v10_6 = 0x6465736b + } BMDIdleVideoOutputOperation_v10_6; + +typedef /* [v1_enum] */ +enum _BMDDeckLinkAttributeID_v10_5 + { + BMDDeckLinkDeviceBusyState_v10_5 = 0x64627374 + } BMDDeckLinkAttributeID_v10_5; + + + +EXTERN_C const IID LIBID_DeckLinkAPI; + +#ifndef __IDeckLinkTimecode_INTERFACE_DEFINED__ +#define __IDeckLinkTimecode_INTERFACE_DEFINED__ + +/* interface IDeckLinkTimecode */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkTimecode; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("BC6CFBD3-8317-4325-AC1C-1216391E9340") + IDeckLinkTimecode : public IUnknown + { + public: + virtual BMDTimecodeBCD STDMETHODCALLTYPE GetBCD( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetComponents( + /* [out] */ unsigned char *hours, + /* [out] */ unsigned char *minutes, + /* [out] */ unsigned char *seconds, + /* [out] */ unsigned char *frames) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [out] */ BSTR *timecode) = 0; + + virtual BMDTimecodeFlags STDMETHODCALLTYPE GetFlags( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimecodeUserBits( + /* [out] */ BMDTimecodeUserBits *userBits) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkTimecodeVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkTimecode * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkTimecode * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkTimecode * This); + + DECLSPEC_XFGVIRT(IDeckLinkTimecode, GetBCD) + BMDTimecodeBCD ( STDMETHODCALLTYPE *GetBCD )( + IDeckLinkTimecode * This); + + DECLSPEC_XFGVIRT(IDeckLinkTimecode, GetComponents) + HRESULT ( STDMETHODCALLTYPE *GetComponents )( + IDeckLinkTimecode * This, + /* [out] */ unsigned char *hours, + /* [out] */ unsigned char *minutes, + /* [out] */ unsigned char *seconds, + /* [out] */ unsigned char *frames); + + DECLSPEC_XFGVIRT(IDeckLinkTimecode, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkTimecode * This, + /* [out] */ BSTR *timecode); + + DECLSPEC_XFGVIRT(IDeckLinkTimecode, GetFlags) + BMDTimecodeFlags ( STDMETHODCALLTYPE *GetFlags )( + IDeckLinkTimecode * This); + + DECLSPEC_XFGVIRT(IDeckLinkTimecode, GetTimecodeUserBits) + HRESULT ( STDMETHODCALLTYPE *GetTimecodeUserBits )( + IDeckLinkTimecode * This, + /* [out] */ BMDTimecodeUserBits *userBits); + + END_INTERFACE + } IDeckLinkTimecodeVtbl; + + interface IDeckLinkTimecode + { + CONST_VTBL struct IDeckLinkTimecodeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkTimecode_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkTimecode_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkTimecode_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkTimecode_GetBCD(This) \ + ( (This)->lpVtbl -> GetBCD(This) ) + +#define IDeckLinkTimecode_GetComponents(This,hours,minutes,seconds,frames) \ + ( (This)->lpVtbl -> GetComponents(This,hours,minutes,seconds,frames) ) + +#define IDeckLinkTimecode_GetString(This,timecode) \ + ( (This)->lpVtbl -> GetString(This,timecode) ) + +#define IDeckLinkTimecode_GetFlags(This) \ + ( (This)->lpVtbl -> GetFlags(This) ) + +#define IDeckLinkTimecode_GetTimecodeUserBits(This,userBits) \ + ( (This)->lpVtbl -> GetTimecodeUserBits(This,userBits) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkTimecode_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkDisplayModeIterator_INTERFACE_DEFINED__ +#define __IDeckLinkDisplayModeIterator_INTERFACE_DEFINED__ + +/* interface IDeckLinkDisplayModeIterator */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkDisplayModeIterator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9C88499F-F601-4021-B80B-032E4EB41C35") + IDeckLinkDisplayModeIterator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [out] */ IDeckLinkDisplayMode **deckLinkDisplayMode) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkDisplayModeIteratorVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkDisplayModeIterator * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkDisplayModeIterator * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkDisplayModeIterator * This); + + DECLSPEC_XFGVIRT(IDeckLinkDisplayModeIterator, Next) + HRESULT ( STDMETHODCALLTYPE *Next )( + IDeckLinkDisplayModeIterator * This, + /* [out] */ IDeckLinkDisplayMode **deckLinkDisplayMode); + + END_INTERFACE + } IDeckLinkDisplayModeIteratorVtbl; + + interface IDeckLinkDisplayModeIterator + { + CONST_VTBL struct IDeckLinkDisplayModeIteratorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkDisplayModeIterator_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkDisplayModeIterator_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkDisplayModeIterator_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkDisplayModeIterator_Next(This,deckLinkDisplayMode) \ + ( (This)->lpVtbl -> Next(This,deckLinkDisplayMode) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkDisplayModeIterator_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkDisplayMode_INTERFACE_DEFINED__ +#define __IDeckLinkDisplayMode_INTERFACE_DEFINED__ + +/* interface IDeckLinkDisplayMode */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkDisplayMode; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3EB2C1AB-0A3D-4523-A3AD-F40D7FB14E78") + IDeckLinkDisplayMode : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetName( + /* [out] */ BSTR *name) = 0; + + virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode( void) = 0; + + virtual long STDMETHODCALLTYPE GetWidth( void) = 0; + + virtual long STDMETHODCALLTYPE GetHeight( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameRate( + /* [out] */ BMDTimeValue *frameDuration, + /* [out] */ BMDTimeScale *timeScale) = 0; + + virtual BMDFieldDominance STDMETHODCALLTYPE GetFieldDominance( void) = 0; + + virtual BMDDisplayModeFlags STDMETHODCALLTYPE GetFlags( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkDisplayModeVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkDisplayMode * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkDisplayMode * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkDisplayMode * This); + + DECLSPEC_XFGVIRT(IDeckLinkDisplayMode, GetName) + HRESULT ( STDMETHODCALLTYPE *GetName )( + IDeckLinkDisplayMode * This, + /* [out] */ BSTR *name); + + DECLSPEC_XFGVIRT(IDeckLinkDisplayMode, GetDisplayMode) + BMDDisplayMode ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkDisplayMode * This); + + DECLSPEC_XFGVIRT(IDeckLinkDisplayMode, GetWidth) + long ( STDMETHODCALLTYPE *GetWidth )( + IDeckLinkDisplayMode * This); + + DECLSPEC_XFGVIRT(IDeckLinkDisplayMode, GetHeight) + long ( STDMETHODCALLTYPE *GetHeight )( + IDeckLinkDisplayMode * This); + + DECLSPEC_XFGVIRT(IDeckLinkDisplayMode, GetFrameRate) + HRESULT ( STDMETHODCALLTYPE *GetFrameRate )( + IDeckLinkDisplayMode * This, + /* [out] */ BMDTimeValue *frameDuration, + /* [out] */ BMDTimeScale *timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkDisplayMode, GetFieldDominance) + BMDFieldDominance ( STDMETHODCALLTYPE *GetFieldDominance )( + IDeckLinkDisplayMode * This); + + DECLSPEC_XFGVIRT(IDeckLinkDisplayMode, GetFlags) + BMDDisplayModeFlags ( STDMETHODCALLTYPE *GetFlags )( + IDeckLinkDisplayMode * This); + + END_INTERFACE + } IDeckLinkDisplayModeVtbl; + + interface IDeckLinkDisplayMode + { + CONST_VTBL struct IDeckLinkDisplayModeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkDisplayMode_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkDisplayMode_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkDisplayMode_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkDisplayMode_GetName(This,name) \ + ( (This)->lpVtbl -> GetName(This,name) ) + +#define IDeckLinkDisplayMode_GetDisplayMode(This) \ + ( (This)->lpVtbl -> GetDisplayMode(This) ) + +#define IDeckLinkDisplayMode_GetWidth(This) \ + ( (This)->lpVtbl -> GetWidth(This) ) + +#define IDeckLinkDisplayMode_GetHeight(This) \ + ( (This)->lpVtbl -> GetHeight(This) ) + +#define IDeckLinkDisplayMode_GetFrameRate(This,frameDuration,timeScale) \ + ( (This)->lpVtbl -> GetFrameRate(This,frameDuration,timeScale) ) + +#define IDeckLinkDisplayMode_GetFieldDominance(This) \ + ( (This)->lpVtbl -> GetFieldDominance(This) ) + +#define IDeckLinkDisplayMode_GetFlags(This) \ + ( (This)->lpVtbl -> GetFlags(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkDisplayMode_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLink_INTERFACE_DEFINED__ +#define __IDeckLink_INTERFACE_DEFINED__ + +/* interface IDeckLink */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLink; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C418FBDD-0587-48ED-8FE5-640F0A14AF91") + IDeckLink : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetModelName( + /* [out] */ BSTR *modelName) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayName( + /* [out] */ BSTR *displayName) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLink * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLink * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLink * This); + + DECLSPEC_XFGVIRT(IDeckLink, GetModelName) + HRESULT ( STDMETHODCALLTYPE *GetModelName )( + IDeckLink * This, + /* [out] */ BSTR *modelName); + + DECLSPEC_XFGVIRT(IDeckLink, GetDisplayName) + HRESULT ( STDMETHODCALLTYPE *GetDisplayName )( + IDeckLink * This, + /* [out] */ BSTR *displayName); + + END_INTERFACE + } IDeckLinkVtbl; + + interface IDeckLink + { + CONST_VTBL struct IDeckLinkVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLink_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLink_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLink_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLink_GetModelName(This,modelName) \ + ( (This)->lpVtbl -> GetModelName(This,modelName) ) + +#define IDeckLink_GetDisplayName(This,displayName) \ + ( (This)->lpVtbl -> GetDisplayName(This,displayName) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLink_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkConfiguration_INTERFACE_DEFINED__ +#define __IDeckLinkConfiguration_INTERFACE_DEFINED__ + +/* interface IDeckLinkConfiguration */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkConfiguration; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5a68ffd4-1c12-4ede-a6d2-45451d385fc1") + IDeckLinkConfiguration : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFlagWithParam( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlagWithParam( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetIntWithParam( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetIntWithParam( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloatWithParam( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloatWithParam( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStringWithParam( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [in] */ BSTR value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStringWithParam( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkConfigurationVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkConfiguration * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkConfiguration * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkConfiguration * This); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, SetFlagWithParam) + HRESULT ( STDMETHODCALLTYPE *SetFlagWithParam )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, GetFlagWithParam) + HRESULT ( STDMETHODCALLTYPE *GetFlagWithParam )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, SetIntWithParam) + HRESULT ( STDMETHODCALLTYPE *SetIntWithParam )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, GetIntWithParam) + HRESULT ( STDMETHODCALLTYPE *GetIntWithParam )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, SetFloatWithParam) + HRESULT ( STDMETHODCALLTYPE *SetFloatWithParam )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, GetFloatWithParam) + HRESULT ( STDMETHODCALLTYPE *GetFloatWithParam )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, SetStringWithParam) + HRESULT ( STDMETHODCALLTYPE *SetStringWithParam )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [in] */ BSTR value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, GetStringWithParam) + HRESULT ( STDMETHODCALLTYPE *GetStringWithParam )( + IDeckLinkConfiguration * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ ULONGLONG param, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration, WriteConfigurationToPreferences) + HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( + IDeckLinkConfiguration * This); + + END_INTERFACE + } IDeckLinkConfigurationVtbl; + + interface IDeckLinkConfiguration + { + CONST_VTBL struct IDeckLinkConfigurationVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkConfiguration_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkConfiguration_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkConfiguration_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkConfiguration_SetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_SetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_SetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_SetString(This,cfgID,value) \ + ( (This)->lpVtbl -> SetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_SetFlagWithParam(This,cfgID,param,value) \ + ( (This)->lpVtbl -> SetFlagWithParam(This,cfgID,param,value) ) + +#define IDeckLinkConfiguration_GetFlagWithParam(This,cfgID,param,value) \ + ( (This)->lpVtbl -> GetFlagWithParam(This,cfgID,param,value) ) + +#define IDeckLinkConfiguration_SetIntWithParam(This,cfgID,param,value) \ + ( (This)->lpVtbl -> SetIntWithParam(This,cfgID,param,value) ) + +#define IDeckLinkConfiguration_GetIntWithParam(This,cfgID,param,value) \ + ( (This)->lpVtbl -> GetIntWithParam(This,cfgID,param,value) ) + +#define IDeckLinkConfiguration_SetFloatWithParam(This,cfgID,param,value) \ + ( (This)->lpVtbl -> SetFloatWithParam(This,cfgID,param,value) ) + +#define IDeckLinkConfiguration_GetFloatWithParam(This,cfgID,param,value) \ + ( (This)->lpVtbl -> GetFloatWithParam(This,cfgID,param,value) ) + +#define IDeckLinkConfiguration_SetStringWithParam(This,cfgID,param,value) \ + ( (This)->lpVtbl -> SetStringWithParam(This,cfgID,param,value) ) + +#define IDeckLinkConfiguration_GetStringWithParam(This,cfgID,param,value) \ + ( (This)->lpVtbl -> GetStringWithParam(This,cfgID,param,value) ) + +#define IDeckLinkConfiguration_WriteConfigurationToPreferences(This) \ + ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkConfiguration_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderConfiguration_INTERFACE_DEFINED__ +#define __IDeckLinkEncoderConfiguration_INTERFACE_DEFINED__ + +/* interface IDeckLinkEncoderConfiguration */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkEncoderConfiguration; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("138050E5-C60A-4552-BF3F-0F358049327E") + IDeckLinkEncoderConfiguration : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ BSTR value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkEncoderConfigurationVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkEncoderConfiguration * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkEncoderConfiguration * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkEncoderConfiguration * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IDeckLinkEncoderConfiguration * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkEncoderConfiguration * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkEncoderConfiguration * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkEncoderConfiguration * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IDeckLinkEncoderConfiguration * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkEncoderConfiguration * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IDeckLinkEncoderConfiguration * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ BSTR value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkEncoderConfiguration * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkEncoderConfiguration * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize); + + END_INTERFACE + } IDeckLinkEncoderConfigurationVtbl; + + interface IDeckLinkEncoderConfiguration + { + CONST_VTBL struct IDeckLinkEncoderConfigurationVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkEncoderConfiguration_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkEncoderConfiguration_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkEncoderConfiguration_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkEncoderConfiguration_SetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_SetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_SetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_SetString(This,cfgID,value) \ + ( (This)->lpVtbl -> SetString(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_GetBytes(This,cfgID,buffer,bufferSize) \ + ( (This)->lpVtbl -> GetBytes(This,cfgID,buffer,bufferSize) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkEncoderConfiguration_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkDeckControlStatusCallback_INTERFACE_DEFINED__ +#define __IDeckLinkDeckControlStatusCallback_INTERFACE_DEFINED__ + +/* interface IDeckLinkDeckControlStatusCallback */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkDeckControlStatusCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("53436FFB-B434-4906-BADC-AE3060FFE8EF") + IDeckLinkDeckControlStatusCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE TimecodeUpdate( + /* [in] */ BMDTimecodeBCD currentTimecode) = 0; + + virtual HRESULT STDMETHODCALLTYPE VTRControlStateChanged( + /* [in] */ BMDDeckControlVTRControlState newState, + /* [in] */ BMDDeckControlError error) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeckControlEventReceived( + /* [in] */ BMDDeckControlEvent event, + /* [in] */ BMDDeckControlError error) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeckControlStatusChanged( + /* [in] */ BMDDeckControlStatusFlags flags, + /* [in] */ unsigned int mask) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkDeckControlStatusCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkDeckControlStatusCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkDeckControlStatusCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkDeckControlStatusCallback * This); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControlStatusCallback, TimecodeUpdate) + HRESULT ( STDMETHODCALLTYPE *TimecodeUpdate )( + IDeckLinkDeckControlStatusCallback * This, + /* [in] */ BMDTimecodeBCD currentTimecode); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControlStatusCallback, VTRControlStateChanged) + HRESULT ( STDMETHODCALLTYPE *VTRControlStateChanged )( + IDeckLinkDeckControlStatusCallback * This, + /* [in] */ BMDDeckControlVTRControlState newState, + /* [in] */ BMDDeckControlError error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControlStatusCallback, DeckControlEventReceived) + HRESULT ( STDMETHODCALLTYPE *DeckControlEventReceived )( + IDeckLinkDeckControlStatusCallback * This, + /* [in] */ BMDDeckControlEvent event, + /* [in] */ BMDDeckControlError error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControlStatusCallback, DeckControlStatusChanged) + HRESULT ( STDMETHODCALLTYPE *DeckControlStatusChanged )( + IDeckLinkDeckControlStatusCallback * This, + /* [in] */ BMDDeckControlStatusFlags flags, + /* [in] */ unsigned int mask); + + END_INTERFACE + } IDeckLinkDeckControlStatusCallbackVtbl; + + interface IDeckLinkDeckControlStatusCallback + { + CONST_VTBL struct IDeckLinkDeckControlStatusCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkDeckControlStatusCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkDeckControlStatusCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkDeckControlStatusCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkDeckControlStatusCallback_TimecodeUpdate(This,currentTimecode) \ + ( (This)->lpVtbl -> TimecodeUpdate(This,currentTimecode) ) + +#define IDeckLinkDeckControlStatusCallback_VTRControlStateChanged(This,newState,error) \ + ( (This)->lpVtbl -> VTRControlStateChanged(This,newState,error) ) + +#define IDeckLinkDeckControlStatusCallback_DeckControlEventReceived(This,event,error) \ + ( (This)->lpVtbl -> DeckControlEventReceived(This,event,error) ) + +#define IDeckLinkDeckControlStatusCallback_DeckControlStatusChanged(This,flags,mask) \ + ( (This)->lpVtbl -> DeckControlStatusChanged(This,flags,mask) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkDeckControlStatusCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkDeckControl_INTERFACE_DEFINED__ +#define __IDeckLinkDeckControl_INTERFACE_DEFINED__ + +/* interface IDeckLinkDeckControl */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkDeckControl; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8E1C3ACE-19C7-4E00-8B92-D80431D958BE") + IDeckLinkDeckControl : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Open( + /* [in] */ BMDTimeScale timeScale, + /* [in] */ BMDTimeValue timeValue, + /* [in] */ BOOL timecodeIsDropFrame, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE Close( + /* [in] */ BOOL standbyOn) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentState( + /* [out] */ BMDDeckControlMode *mode, + /* [out] */ BMDDeckControlVTRControlState *vtrControlState, + /* [out] */ BMDDeckControlStatusFlags *flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetStandby( + /* [in] */ BOOL standbyOn) = 0; + + virtual HRESULT STDMETHODCALLTYPE SendCommand( + /* [in] */ unsigned char *inBuffer, + /* [in] */ unsigned int inBufferSize, + /* [out] */ unsigned char *outBuffer, + /* [out] */ unsigned int *outDataSize, + /* [in] */ unsigned int outBufferSize, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE Play( + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE Stop( + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE TogglePlayStop( + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE Eject( + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE GoToTimecode( + /* [in] */ BMDTimecodeBCD timecode, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE FastForward( + /* [in] */ BOOL viewTape, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE Rewind( + /* [in] */ BOOL viewTape, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE StepForward( + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE StepBack( + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE Jog( + /* [in] */ double rate, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE Shuttle( + /* [in] */ double rate, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimecodeString( + /* [out] */ BSTR *currentTimeCode, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimecode( + /* [out] */ IDeckLinkTimecode **currentTimecode, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimecodeBCD( + /* [out] */ BMDTimecodeBCD *currentTimecode, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetPreroll( + /* [in] */ unsigned int prerollSeconds) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPreroll( + /* [out] */ unsigned int *prerollSeconds) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetExportOffset( + /* [in] */ int exportOffsetFields) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetExportOffset( + /* [out] */ int *exportOffsetFields) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetManualExportOffset( + /* [out] */ int *deckManualExportOffsetFields) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCaptureOffset( + /* [in] */ int captureOffsetFields) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCaptureOffset( + /* [out] */ int *captureOffsetFields) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartExport( + /* [in] */ BMDTimecodeBCD inTimecode, + /* [in] */ BMDTimecodeBCD outTimecode, + /* [in] */ BMDDeckControlExportModeOpsFlags exportModeOps, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartCapture( + /* [in] */ BOOL useVITC, + /* [in] */ BMDTimecodeBCD inTimecode, + /* [in] */ BMDTimecodeBCD outTimecode, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDeviceID( + /* [out] */ unsigned short *deviceId, + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE Abort( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE CrashRecordStart( + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE CrashRecordStop( + /* [out] */ BMDDeckControlError *error) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IDeckLinkDeckControlStatusCallback *callback) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkDeckControlVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkDeckControl * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkDeckControl * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkDeckControl * This); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, Open) + HRESULT ( STDMETHODCALLTYPE *Open )( + IDeckLinkDeckControl * This, + /* [in] */ BMDTimeScale timeScale, + /* [in] */ BMDTimeValue timeValue, + /* [in] */ BOOL timecodeIsDropFrame, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, Close) + HRESULT ( STDMETHODCALLTYPE *Close )( + IDeckLinkDeckControl * This, + /* [in] */ BOOL standbyOn); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, GetCurrentState) + HRESULT ( STDMETHODCALLTYPE *GetCurrentState )( + IDeckLinkDeckControl * This, + /* [out] */ BMDDeckControlMode *mode, + /* [out] */ BMDDeckControlVTRControlState *vtrControlState, + /* [out] */ BMDDeckControlStatusFlags *flags); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, SetStandby) + HRESULT ( STDMETHODCALLTYPE *SetStandby )( + IDeckLinkDeckControl * This, + /* [in] */ BOOL standbyOn); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, SendCommand) + HRESULT ( STDMETHODCALLTYPE *SendCommand )( + IDeckLinkDeckControl * This, + /* [in] */ unsigned char *inBuffer, + /* [in] */ unsigned int inBufferSize, + /* [out] */ unsigned char *outBuffer, + /* [out] */ unsigned int *outDataSize, + /* [in] */ unsigned int outBufferSize, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, Play) + HRESULT ( STDMETHODCALLTYPE *Play )( + IDeckLinkDeckControl * This, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, Stop) + HRESULT ( STDMETHODCALLTYPE *Stop )( + IDeckLinkDeckControl * This, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, TogglePlayStop) + HRESULT ( STDMETHODCALLTYPE *TogglePlayStop )( + IDeckLinkDeckControl * This, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, Eject) + HRESULT ( STDMETHODCALLTYPE *Eject )( + IDeckLinkDeckControl * This, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, GoToTimecode) + HRESULT ( STDMETHODCALLTYPE *GoToTimecode )( + IDeckLinkDeckControl * This, + /* [in] */ BMDTimecodeBCD timecode, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, FastForward) + HRESULT ( STDMETHODCALLTYPE *FastForward )( + IDeckLinkDeckControl * This, + /* [in] */ BOOL viewTape, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, Rewind) + HRESULT ( STDMETHODCALLTYPE *Rewind )( + IDeckLinkDeckControl * This, + /* [in] */ BOOL viewTape, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, StepForward) + HRESULT ( STDMETHODCALLTYPE *StepForward )( + IDeckLinkDeckControl * This, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, StepBack) + HRESULT ( STDMETHODCALLTYPE *StepBack )( + IDeckLinkDeckControl * This, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, Jog) + HRESULT ( STDMETHODCALLTYPE *Jog )( + IDeckLinkDeckControl * This, + /* [in] */ double rate, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, Shuttle) + HRESULT ( STDMETHODCALLTYPE *Shuttle )( + IDeckLinkDeckControl * This, + /* [in] */ double rate, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, GetTimecodeString) + HRESULT ( STDMETHODCALLTYPE *GetTimecodeString )( + IDeckLinkDeckControl * This, + /* [out] */ BSTR *currentTimeCode, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, GetTimecode) + HRESULT ( STDMETHODCALLTYPE *GetTimecode )( + IDeckLinkDeckControl * This, + /* [out] */ IDeckLinkTimecode **currentTimecode, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, GetTimecodeBCD) + HRESULT ( STDMETHODCALLTYPE *GetTimecodeBCD )( + IDeckLinkDeckControl * This, + /* [out] */ BMDTimecodeBCD *currentTimecode, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, SetPreroll) + HRESULT ( STDMETHODCALLTYPE *SetPreroll )( + IDeckLinkDeckControl * This, + /* [in] */ unsigned int prerollSeconds); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, GetPreroll) + HRESULT ( STDMETHODCALLTYPE *GetPreroll )( + IDeckLinkDeckControl * This, + /* [out] */ unsigned int *prerollSeconds); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, SetExportOffset) + HRESULT ( STDMETHODCALLTYPE *SetExportOffset )( + IDeckLinkDeckControl * This, + /* [in] */ int exportOffsetFields); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, GetExportOffset) + HRESULT ( STDMETHODCALLTYPE *GetExportOffset )( + IDeckLinkDeckControl * This, + /* [out] */ int *exportOffsetFields); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, GetManualExportOffset) + HRESULT ( STDMETHODCALLTYPE *GetManualExportOffset )( + IDeckLinkDeckControl * This, + /* [out] */ int *deckManualExportOffsetFields); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, SetCaptureOffset) + HRESULT ( STDMETHODCALLTYPE *SetCaptureOffset )( + IDeckLinkDeckControl * This, + /* [in] */ int captureOffsetFields); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, GetCaptureOffset) + HRESULT ( STDMETHODCALLTYPE *GetCaptureOffset )( + IDeckLinkDeckControl * This, + /* [out] */ int *captureOffsetFields); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, StartExport) + HRESULT ( STDMETHODCALLTYPE *StartExport )( + IDeckLinkDeckControl * This, + /* [in] */ BMDTimecodeBCD inTimecode, + /* [in] */ BMDTimecodeBCD outTimecode, + /* [in] */ BMDDeckControlExportModeOpsFlags exportModeOps, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, StartCapture) + HRESULT ( STDMETHODCALLTYPE *StartCapture )( + IDeckLinkDeckControl * This, + /* [in] */ BOOL useVITC, + /* [in] */ BMDTimecodeBCD inTimecode, + /* [in] */ BMDTimecodeBCD outTimecode, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, GetDeviceID) + HRESULT ( STDMETHODCALLTYPE *GetDeviceID )( + IDeckLinkDeckControl * This, + /* [out] */ unsigned short *deviceId, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, Abort) + HRESULT ( STDMETHODCALLTYPE *Abort )( + IDeckLinkDeckControl * This); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, CrashRecordStart) + HRESULT ( STDMETHODCALLTYPE *CrashRecordStart )( + IDeckLinkDeckControl * This, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, CrashRecordStop) + HRESULT ( STDMETHODCALLTYPE *CrashRecordStop )( + IDeckLinkDeckControl * This, + /* [out] */ BMDDeckControlError *error); + + DECLSPEC_XFGVIRT(IDeckLinkDeckControl, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkDeckControl * This, + /* [in] */ IDeckLinkDeckControlStatusCallback *callback); + + END_INTERFACE + } IDeckLinkDeckControlVtbl; + + interface IDeckLinkDeckControl + { + CONST_VTBL struct IDeckLinkDeckControlVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkDeckControl_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkDeckControl_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkDeckControl_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkDeckControl_Open(This,timeScale,timeValue,timecodeIsDropFrame,error) \ + ( (This)->lpVtbl -> Open(This,timeScale,timeValue,timecodeIsDropFrame,error) ) + +#define IDeckLinkDeckControl_Close(This,standbyOn) \ + ( (This)->lpVtbl -> Close(This,standbyOn) ) + +#define IDeckLinkDeckControl_GetCurrentState(This,mode,vtrControlState,flags) \ + ( (This)->lpVtbl -> GetCurrentState(This,mode,vtrControlState,flags) ) + +#define IDeckLinkDeckControl_SetStandby(This,standbyOn) \ + ( (This)->lpVtbl -> SetStandby(This,standbyOn) ) + +#define IDeckLinkDeckControl_SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error) \ + ( (This)->lpVtbl -> SendCommand(This,inBuffer,inBufferSize,outBuffer,outDataSize,outBufferSize,error) ) + +#define IDeckLinkDeckControl_Play(This,error) \ + ( (This)->lpVtbl -> Play(This,error) ) + +#define IDeckLinkDeckControl_Stop(This,error) \ + ( (This)->lpVtbl -> Stop(This,error) ) + +#define IDeckLinkDeckControl_TogglePlayStop(This,error) \ + ( (This)->lpVtbl -> TogglePlayStop(This,error) ) + +#define IDeckLinkDeckControl_Eject(This,error) \ + ( (This)->lpVtbl -> Eject(This,error) ) + +#define IDeckLinkDeckControl_GoToTimecode(This,timecode,error) \ + ( (This)->lpVtbl -> GoToTimecode(This,timecode,error) ) + +#define IDeckLinkDeckControl_FastForward(This,viewTape,error) \ + ( (This)->lpVtbl -> FastForward(This,viewTape,error) ) + +#define IDeckLinkDeckControl_Rewind(This,viewTape,error) \ + ( (This)->lpVtbl -> Rewind(This,viewTape,error) ) + +#define IDeckLinkDeckControl_StepForward(This,error) \ + ( (This)->lpVtbl -> StepForward(This,error) ) + +#define IDeckLinkDeckControl_StepBack(This,error) \ + ( (This)->lpVtbl -> StepBack(This,error) ) + +#define IDeckLinkDeckControl_Jog(This,rate,error) \ + ( (This)->lpVtbl -> Jog(This,rate,error) ) + +#define IDeckLinkDeckControl_Shuttle(This,rate,error) \ + ( (This)->lpVtbl -> Shuttle(This,rate,error) ) + +#define IDeckLinkDeckControl_GetTimecodeString(This,currentTimeCode,error) \ + ( (This)->lpVtbl -> GetTimecodeString(This,currentTimeCode,error) ) + +#define IDeckLinkDeckControl_GetTimecode(This,currentTimecode,error) \ + ( (This)->lpVtbl -> GetTimecode(This,currentTimecode,error) ) + +#define IDeckLinkDeckControl_GetTimecodeBCD(This,currentTimecode,error) \ + ( (This)->lpVtbl -> GetTimecodeBCD(This,currentTimecode,error) ) + +#define IDeckLinkDeckControl_SetPreroll(This,prerollSeconds) \ + ( (This)->lpVtbl -> SetPreroll(This,prerollSeconds) ) + +#define IDeckLinkDeckControl_GetPreroll(This,prerollSeconds) \ + ( (This)->lpVtbl -> GetPreroll(This,prerollSeconds) ) + +#define IDeckLinkDeckControl_SetExportOffset(This,exportOffsetFields) \ + ( (This)->lpVtbl -> SetExportOffset(This,exportOffsetFields) ) + +#define IDeckLinkDeckControl_GetExportOffset(This,exportOffsetFields) \ + ( (This)->lpVtbl -> GetExportOffset(This,exportOffsetFields) ) + +#define IDeckLinkDeckControl_GetManualExportOffset(This,deckManualExportOffsetFields) \ + ( (This)->lpVtbl -> GetManualExportOffset(This,deckManualExportOffsetFields) ) + +#define IDeckLinkDeckControl_SetCaptureOffset(This,captureOffsetFields) \ + ( (This)->lpVtbl -> SetCaptureOffset(This,captureOffsetFields) ) + +#define IDeckLinkDeckControl_GetCaptureOffset(This,captureOffsetFields) \ + ( (This)->lpVtbl -> GetCaptureOffset(This,captureOffsetFields) ) + +#define IDeckLinkDeckControl_StartExport(This,inTimecode,outTimecode,exportModeOps,error) \ + ( (This)->lpVtbl -> StartExport(This,inTimecode,outTimecode,exportModeOps,error) ) + +#define IDeckLinkDeckControl_StartCapture(This,useVITC,inTimecode,outTimecode,error) \ + ( (This)->lpVtbl -> StartCapture(This,useVITC,inTimecode,outTimecode,error) ) + +#define IDeckLinkDeckControl_GetDeviceID(This,deviceId,error) \ + ( (This)->lpVtbl -> GetDeviceID(This,deviceId,error) ) + +#define IDeckLinkDeckControl_Abort(This) \ + ( (This)->lpVtbl -> Abort(This) ) + +#define IDeckLinkDeckControl_CrashRecordStart(This,error) \ + ( (This)->lpVtbl -> CrashRecordStart(This,error) ) + +#define IDeckLinkDeckControl_CrashRecordStop(This,error) \ + ( (This)->lpVtbl -> CrashRecordStop(This,error) ) + +#define IDeckLinkDeckControl_SetCallback(This,callback) \ + ( (This)->lpVtbl -> SetCallback(This,callback) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkDeckControl_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingDeviceNotificationCallback_INTERFACE_DEFINED__ +#define __IBMDStreamingDeviceNotificationCallback_INTERFACE_DEFINED__ + +/* interface IBMDStreamingDeviceNotificationCallback */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingDeviceNotificationCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F9531D64-3305-4B29-A387-7F74BB0D0E84") + IBMDStreamingDeviceNotificationCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE StreamingDeviceArrived( + /* [in] */ IDeckLink *device) = 0; + + virtual HRESULT STDMETHODCALLTYPE StreamingDeviceRemoved( + /* [in] */ IDeckLink *device) = 0; + + virtual HRESULT STDMETHODCALLTYPE StreamingDeviceModeChanged( + /* [in] */ IDeckLink *device, + /* [in] */ BMDStreamingDeviceMode mode) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingDeviceNotificationCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingDeviceNotificationCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingDeviceNotificationCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingDeviceNotificationCallback * This); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceNotificationCallback, StreamingDeviceArrived) + HRESULT ( STDMETHODCALLTYPE *StreamingDeviceArrived )( + IBMDStreamingDeviceNotificationCallback * This, + /* [in] */ IDeckLink *device); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceNotificationCallback, StreamingDeviceRemoved) + HRESULT ( STDMETHODCALLTYPE *StreamingDeviceRemoved )( + IBMDStreamingDeviceNotificationCallback * This, + /* [in] */ IDeckLink *device); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceNotificationCallback, StreamingDeviceModeChanged) + HRESULT ( STDMETHODCALLTYPE *StreamingDeviceModeChanged )( + IBMDStreamingDeviceNotificationCallback * This, + /* [in] */ IDeckLink *device, + /* [in] */ BMDStreamingDeviceMode mode); + + END_INTERFACE + } IBMDStreamingDeviceNotificationCallbackVtbl; + + interface IBMDStreamingDeviceNotificationCallback + { + CONST_VTBL struct IBMDStreamingDeviceNotificationCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingDeviceNotificationCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingDeviceNotificationCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingDeviceNotificationCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingDeviceNotificationCallback_StreamingDeviceArrived(This,device) \ + ( (This)->lpVtbl -> StreamingDeviceArrived(This,device) ) + +#define IBMDStreamingDeviceNotificationCallback_StreamingDeviceRemoved(This,device) \ + ( (This)->lpVtbl -> StreamingDeviceRemoved(This,device) ) + +#define IBMDStreamingDeviceNotificationCallback_StreamingDeviceModeChanged(This,device,mode) \ + ( (This)->lpVtbl -> StreamingDeviceModeChanged(This,device,mode) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingDeviceNotificationCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingH264InputCallback_INTERFACE_DEFINED__ +#define __IBMDStreamingH264InputCallback_INTERFACE_DEFINED__ + +/* interface IBMDStreamingH264InputCallback */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingH264InputCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("823C475F-55AE-46F9-890C-537CC5CEDCCA") + IBMDStreamingH264InputCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE H264NALPacketArrived( + /* [in] */ IBMDStreamingH264NALPacket *nalPacket) = 0; + + virtual HRESULT STDMETHODCALLTYPE H264AudioPacketArrived( + /* [in] */ IBMDStreamingAudioPacket *audioPacket) = 0; + + virtual HRESULT STDMETHODCALLTYPE MPEG2TSPacketArrived( + /* [in] */ IBMDStreamingMPEG2TSPacket *tsPacket) = 0; + + virtual HRESULT STDMETHODCALLTYPE H264VideoInputConnectorScanningChanged( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE H264VideoInputConnectorChanged( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE H264VideoInputModeChanged( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingH264InputCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingH264InputCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingH264InputCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingH264InputCallback * This); + + DECLSPEC_XFGVIRT(IBMDStreamingH264InputCallback, H264NALPacketArrived) + HRESULT ( STDMETHODCALLTYPE *H264NALPacketArrived )( + IBMDStreamingH264InputCallback * This, + /* [in] */ IBMDStreamingH264NALPacket *nalPacket); + + DECLSPEC_XFGVIRT(IBMDStreamingH264InputCallback, H264AudioPacketArrived) + HRESULT ( STDMETHODCALLTYPE *H264AudioPacketArrived )( + IBMDStreamingH264InputCallback * This, + /* [in] */ IBMDStreamingAudioPacket *audioPacket); + + DECLSPEC_XFGVIRT(IBMDStreamingH264InputCallback, MPEG2TSPacketArrived) + HRESULT ( STDMETHODCALLTYPE *MPEG2TSPacketArrived )( + IBMDStreamingH264InputCallback * This, + /* [in] */ IBMDStreamingMPEG2TSPacket *tsPacket); + + DECLSPEC_XFGVIRT(IBMDStreamingH264InputCallback, H264VideoInputConnectorScanningChanged) + HRESULT ( STDMETHODCALLTYPE *H264VideoInputConnectorScanningChanged )( + IBMDStreamingH264InputCallback * This); + + DECLSPEC_XFGVIRT(IBMDStreamingH264InputCallback, H264VideoInputConnectorChanged) + HRESULT ( STDMETHODCALLTYPE *H264VideoInputConnectorChanged )( + IBMDStreamingH264InputCallback * This); + + DECLSPEC_XFGVIRT(IBMDStreamingH264InputCallback, H264VideoInputModeChanged) + HRESULT ( STDMETHODCALLTYPE *H264VideoInputModeChanged )( + IBMDStreamingH264InputCallback * This); + + END_INTERFACE + } IBMDStreamingH264InputCallbackVtbl; + + interface IBMDStreamingH264InputCallback + { + CONST_VTBL struct IBMDStreamingH264InputCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingH264InputCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingH264InputCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingH264InputCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingH264InputCallback_H264NALPacketArrived(This,nalPacket) \ + ( (This)->lpVtbl -> H264NALPacketArrived(This,nalPacket) ) + +#define IBMDStreamingH264InputCallback_H264AudioPacketArrived(This,audioPacket) \ + ( (This)->lpVtbl -> H264AudioPacketArrived(This,audioPacket) ) + +#define IBMDStreamingH264InputCallback_MPEG2TSPacketArrived(This,tsPacket) \ + ( (This)->lpVtbl -> MPEG2TSPacketArrived(This,tsPacket) ) + +#define IBMDStreamingH264InputCallback_H264VideoInputConnectorScanningChanged(This) \ + ( (This)->lpVtbl -> H264VideoInputConnectorScanningChanged(This) ) + +#define IBMDStreamingH264InputCallback_H264VideoInputConnectorChanged(This) \ + ( (This)->lpVtbl -> H264VideoInputConnectorChanged(This) ) + +#define IBMDStreamingH264InputCallback_H264VideoInputModeChanged(This) \ + ( (This)->lpVtbl -> H264VideoInputModeChanged(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingH264InputCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingDiscovery_INTERFACE_DEFINED__ +#define __IBMDStreamingDiscovery_INTERFACE_DEFINED__ + +/* interface IBMDStreamingDiscovery */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingDiscovery; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2C837444-F989-4D87-901A-47C8A36D096D") + IBMDStreamingDiscovery : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE InstallDeviceNotifications( + /* [in] */ IBMDStreamingDeviceNotificationCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE UninstallDeviceNotifications( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingDiscoveryVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingDiscovery * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingDiscovery * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingDiscovery * This); + + DECLSPEC_XFGVIRT(IBMDStreamingDiscovery, InstallDeviceNotifications) + HRESULT ( STDMETHODCALLTYPE *InstallDeviceNotifications )( + IBMDStreamingDiscovery * This, + /* [in] */ IBMDStreamingDeviceNotificationCallback *theCallback); + + DECLSPEC_XFGVIRT(IBMDStreamingDiscovery, UninstallDeviceNotifications) + HRESULT ( STDMETHODCALLTYPE *UninstallDeviceNotifications )( + IBMDStreamingDiscovery * This); + + END_INTERFACE + } IBMDStreamingDiscoveryVtbl; + + interface IBMDStreamingDiscovery + { + CONST_VTBL struct IBMDStreamingDiscoveryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingDiscovery_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingDiscovery_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingDiscovery_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingDiscovery_InstallDeviceNotifications(This,theCallback) \ + ( (This)->lpVtbl -> InstallDeviceNotifications(This,theCallback) ) + +#define IBMDStreamingDiscovery_UninstallDeviceNotifications(This) \ + ( (This)->lpVtbl -> UninstallDeviceNotifications(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingDiscovery_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingVideoEncodingMode_INTERFACE_DEFINED__ +#define __IBMDStreamingVideoEncodingMode_INTERFACE_DEFINED__ + +/* interface IBMDStreamingVideoEncodingMode */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingVideoEncodingMode; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1AB8035B-CD13-458D-B6DF-5E8F7C2141D9") + IBMDStreamingVideoEncodingMode : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetName( + /* [out] */ BSTR *name) = 0; + + virtual unsigned int STDMETHODCALLTYPE GetPresetID( void) = 0; + + virtual unsigned int STDMETHODCALLTYPE GetSourcePositionX( void) = 0; + + virtual unsigned int STDMETHODCALLTYPE GetSourcePositionY( void) = 0; + + virtual unsigned int STDMETHODCALLTYPE GetSourceWidth( void) = 0; + + virtual unsigned int STDMETHODCALLTYPE GetSourceHeight( void) = 0; + + virtual unsigned int STDMETHODCALLTYPE GetDestWidth( void) = 0; + + virtual unsigned int STDMETHODCALLTYPE GetDestHeight( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateMutableVideoEncodingMode( + /* [out] */ IBMDStreamingMutableVideoEncodingMode **newEncodingMode) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingVideoEncodingModeVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingVideoEncodingMode * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetName) + HRESULT ( STDMETHODCALLTYPE *GetName )( + IBMDStreamingVideoEncodingMode * This, + /* [out] */ BSTR *name); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetPresetID) + unsigned int ( STDMETHODCALLTYPE *GetPresetID )( + IBMDStreamingVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetSourcePositionX) + unsigned int ( STDMETHODCALLTYPE *GetSourcePositionX )( + IBMDStreamingVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetSourcePositionY) + unsigned int ( STDMETHODCALLTYPE *GetSourcePositionY )( + IBMDStreamingVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetSourceWidth) + unsigned int ( STDMETHODCALLTYPE *GetSourceWidth )( + IBMDStreamingVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetSourceHeight) + unsigned int ( STDMETHODCALLTYPE *GetSourceHeight )( + IBMDStreamingVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetDestWidth) + unsigned int ( STDMETHODCALLTYPE *GetDestWidth )( + IBMDStreamingVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetDestHeight) + unsigned int ( STDMETHODCALLTYPE *GetDestHeight )( + IBMDStreamingVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IBMDStreamingVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IBMDStreamingVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IBMDStreamingVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IBMDStreamingVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, CreateMutableVideoEncodingMode) + HRESULT ( STDMETHODCALLTYPE *CreateMutableVideoEncodingMode )( + IBMDStreamingVideoEncodingMode * This, + /* [out] */ IBMDStreamingMutableVideoEncodingMode **newEncodingMode); + + END_INTERFACE + } IBMDStreamingVideoEncodingModeVtbl; + + interface IBMDStreamingVideoEncodingMode + { + CONST_VTBL struct IBMDStreamingVideoEncodingModeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingVideoEncodingMode_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingVideoEncodingMode_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingVideoEncodingMode_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingVideoEncodingMode_GetName(This,name) \ + ( (This)->lpVtbl -> GetName(This,name) ) + +#define IBMDStreamingVideoEncodingMode_GetPresetID(This) \ + ( (This)->lpVtbl -> GetPresetID(This) ) + +#define IBMDStreamingVideoEncodingMode_GetSourcePositionX(This) \ + ( (This)->lpVtbl -> GetSourcePositionX(This) ) + +#define IBMDStreamingVideoEncodingMode_GetSourcePositionY(This) \ + ( (This)->lpVtbl -> GetSourcePositionY(This) ) + +#define IBMDStreamingVideoEncodingMode_GetSourceWidth(This) \ + ( (This)->lpVtbl -> GetSourceWidth(This) ) + +#define IBMDStreamingVideoEncodingMode_GetSourceHeight(This) \ + ( (This)->lpVtbl -> GetSourceHeight(This) ) + +#define IBMDStreamingVideoEncodingMode_GetDestWidth(This) \ + ( (This)->lpVtbl -> GetDestWidth(This) ) + +#define IBMDStreamingVideoEncodingMode_GetDestHeight(This) \ + ( (This)->lpVtbl -> GetDestHeight(This) ) + +#define IBMDStreamingVideoEncodingMode_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IBMDStreamingVideoEncodingMode_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IBMDStreamingVideoEncodingMode_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IBMDStreamingVideoEncodingMode_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IBMDStreamingVideoEncodingMode_CreateMutableVideoEncodingMode(This,newEncodingMode) \ + ( (This)->lpVtbl -> CreateMutableVideoEncodingMode(This,newEncodingMode) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingVideoEncodingMode_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingMutableVideoEncodingMode_INTERFACE_DEFINED__ +#define __IBMDStreamingMutableVideoEncodingMode_INTERFACE_DEFINED__ + +/* interface IBMDStreamingMutableVideoEncodingMode */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingMutableVideoEncodingMode; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("19BF7D90-1E0A-400D-B2C6-FFC4E78AD49D") + IBMDStreamingMutableVideoEncodingMode : public IBMDStreamingVideoEncodingMode + { + public: + virtual HRESULT STDMETHODCALLTYPE SetSourceRect( + /* [in] */ unsigned int posX, + /* [in] */ unsigned int posY, + /* [in] */ unsigned int width, + /* [in] */ unsigned int height) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetDestSize( + /* [in] */ unsigned int width, + /* [in] */ unsigned int height) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [in] */ BSTR value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingMutableVideoEncodingModeVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingMutableVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingMutableVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetName) + HRESULT ( STDMETHODCALLTYPE *GetName )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [out] */ BSTR *name); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetPresetID) + unsigned int ( STDMETHODCALLTYPE *GetPresetID )( + IBMDStreamingMutableVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetSourcePositionX) + unsigned int ( STDMETHODCALLTYPE *GetSourcePositionX )( + IBMDStreamingMutableVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetSourcePositionY) + unsigned int ( STDMETHODCALLTYPE *GetSourcePositionY )( + IBMDStreamingMutableVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetSourceWidth) + unsigned int ( STDMETHODCALLTYPE *GetSourceWidth )( + IBMDStreamingMutableVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetSourceHeight) + unsigned int ( STDMETHODCALLTYPE *GetSourceHeight )( + IBMDStreamingMutableVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetDestWidth) + unsigned int ( STDMETHODCALLTYPE *GetDestWidth )( + IBMDStreamingMutableVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetDestHeight) + unsigned int ( STDMETHODCALLTYPE *GetDestHeight )( + IBMDStreamingMutableVideoEncodingMode * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingMode, CreateMutableVideoEncodingMode) + HRESULT ( STDMETHODCALLTYPE *CreateMutableVideoEncodingMode )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [out] */ IBMDStreamingMutableVideoEncodingMode **newEncodingMode); + + DECLSPEC_XFGVIRT(IBMDStreamingMutableVideoEncodingMode, SetSourceRect) + HRESULT ( STDMETHODCALLTYPE *SetSourceRect )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ unsigned int posX, + /* [in] */ unsigned int posY, + /* [in] */ unsigned int width, + /* [in] */ unsigned int height); + + DECLSPEC_XFGVIRT(IBMDStreamingMutableVideoEncodingMode, SetDestSize) + HRESULT ( STDMETHODCALLTYPE *SetDestSize )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ unsigned int width, + /* [in] */ unsigned int height); + + DECLSPEC_XFGVIRT(IBMDStreamingMutableVideoEncodingMode, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IBMDStreamingMutableVideoEncodingMode, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IBMDStreamingMutableVideoEncodingMode, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IBMDStreamingMutableVideoEncodingMode, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IBMDStreamingMutableVideoEncodingMode * This, + /* [in] */ BMDStreamingEncodingModePropertyID cfgID, + /* [in] */ BSTR value); + + END_INTERFACE + } IBMDStreamingMutableVideoEncodingModeVtbl; + + interface IBMDStreamingMutableVideoEncodingMode + { + CONST_VTBL struct IBMDStreamingMutableVideoEncodingModeVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingMutableVideoEncodingMode_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingMutableVideoEncodingMode_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingMutableVideoEncodingMode_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingMutableVideoEncodingMode_GetName(This,name) \ + ( (This)->lpVtbl -> GetName(This,name) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetPresetID(This) \ + ( (This)->lpVtbl -> GetPresetID(This) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetSourcePositionX(This) \ + ( (This)->lpVtbl -> GetSourcePositionX(This) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetSourcePositionY(This) \ + ( (This)->lpVtbl -> GetSourcePositionY(This) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetSourceWidth(This) \ + ( (This)->lpVtbl -> GetSourceWidth(This) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetSourceHeight(This) \ + ( (This)->lpVtbl -> GetSourceHeight(This) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetDestWidth(This) \ + ( (This)->lpVtbl -> GetDestWidth(This) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetDestHeight(This) \ + ( (This)->lpVtbl -> GetDestHeight(This) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IBMDStreamingMutableVideoEncodingMode_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IBMDStreamingMutableVideoEncodingMode_CreateMutableVideoEncodingMode(This,newEncodingMode) \ + ( (This)->lpVtbl -> CreateMutableVideoEncodingMode(This,newEncodingMode) ) + + +#define IBMDStreamingMutableVideoEncodingMode_SetSourceRect(This,posX,posY,width,height) \ + ( (This)->lpVtbl -> SetSourceRect(This,posX,posY,width,height) ) + +#define IBMDStreamingMutableVideoEncodingMode_SetDestSize(This,width,height) \ + ( (This)->lpVtbl -> SetDestSize(This,width,height) ) + +#define IBMDStreamingMutableVideoEncodingMode_SetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) + +#define IBMDStreamingMutableVideoEncodingMode_SetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) + +#define IBMDStreamingMutableVideoEncodingMode_SetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) + +#define IBMDStreamingMutableVideoEncodingMode_SetString(This,cfgID,value) \ + ( (This)->lpVtbl -> SetString(This,cfgID,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingMutableVideoEncodingMode_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingVideoEncodingModePresetIterator_INTERFACE_DEFINED__ +#define __IBMDStreamingVideoEncodingModePresetIterator_INTERFACE_DEFINED__ + +/* interface IBMDStreamingVideoEncodingModePresetIterator */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingVideoEncodingModePresetIterator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7AC731A3-C950-4AD0-804A-8377AA51C6C4") + IBMDStreamingVideoEncodingModePresetIterator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [out] */ IBMDStreamingVideoEncodingMode **videoEncodingMode) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingVideoEncodingModePresetIteratorVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingVideoEncodingModePresetIterator * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingVideoEncodingModePresetIterator * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingVideoEncodingModePresetIterator * This); + + DECLSPEC_XFGVIRT(IBMDStreamingVideoEncodingModePresetIterator, Next) + HRESULT ( STDMETHODCALLTYPE *Next )( + IBMDStreamingVideoEncodingModePresetIterator * This, + /* [out] */ IBMDStreamingVideoEncodingMode **videoEncodingMode); + + END_INTERFACE + } IBMDStreamingVideoEncodingModePresetIteratorVtbl; + + interface IBMDStreamingVideoEncodingModePresetIterator + { + CONST_VTBL struct IBMDStreamingVideoEncodingModePresetIteratorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingVideoEncodingModePresetIterator_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingVideoEncodingModePresetIterator_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingVideoEncodingModePresetIterator_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingVideoEncodingModePresetIterator_Next(This,videoEncodingMode) \ + ( (This)->lpVtbl -> Next(This,videoEncodingMode) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingVideoEncodingModePresetIterator_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingDeviceInput_INTERFACE_DEFINED__ +#define __IBMDStreamingDeviceInput_INTERFACE_DEFINED__ + +/* interface IBMDStreamingDeviceInput */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingDeviceInput; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("24B6B6EC-1727-44BB-9818-34FF086ACF98") + IBMDStreamingDeviceInput : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoInputMode( + /* [in] */ BMDDisplayMode inputMode, + /* [out] */ BOOL *result) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVideoInputModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoInputMode( + /* [in] */ BMDDisplayMode inputMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetCurrentDetectedVideoInputMode( + /* [out] */ BMDDisplayMode *detectedMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVideoEncodingMode( + /* [out] */ IBMDStreamingVideoEncodingMode **encodingMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetVideoEncodingModePresetIterator( + /* [in] */ BMDDisplayMode inputMode, + /* [out] */ IBMDStreamingVideoEncodingModePresetIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoEncodingMode( + /* [in] */ BMDDisplayMode inputMode, + /* [in] */ IBMDStreamingVideoEncodingMode *encodingMode, + /* [out] */ BMDStreamingEncodingSupport *result, + /* [out] */ IBMDStreamingVideoEncodingMode **changedEncodingMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoEncodingMode( + /* [in] */ IBMDStreamingVideoEncodingMode *encodingMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartCapture( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopCapture( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IUnknown *theCallback) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingDeviceInputVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingDeviceInput * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingDeviceInput * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingDeviceInput * This); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, DoesSupportVideoInputMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoInputMode )( + IBMDStreamingDeviceInput * This, + /* [in] */ BMDDisplayMode inputMode, + /* [out] */ BOOL *result); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, GetVideoInputModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetVideoInputModeIterator )( + IBMDStreamingDeviceInput * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, SetVideoInputMode) + HRESULT ( STDMETHODCALLTYPE *SetVideoInputMode )( + IBMDStreamingDeviceInput * This, + /* [in] */ BMDDisplayMode inputMode); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, GetCurrentDetectedVideoInputMode) + HRESULT ( STDMETHODCALLTYPE *GetCurrentDetectedVideoInputMode )( + IBMDStreamingDeviceInput * This, + /* [out] */ BMDDisplayMode *detectedMode); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, GetVideoEncodingMode) + HRESULT ( STDMETHODCALLTYPE *GetVideoEncodingMode )( + IBMDStreamingDeviceInput * This, + /* [out] */ IBMDStreamingVideoEncodingMode **encodingMode); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, GetVideoEncodingModePresetIterator) + HRESULT ( STDMETHODCALLTYPE *GetVideoEncodingModePresetIterator )( + IBMDStreamingDeviceInput * This, + /* [in] */ BMDDisplayMode inputMode, + /* [out] */ IBMDStreamingVideoEncodingModePresetIterator **iterator); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, DoesSupportVideoEncodingMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoEncodingMode )( + IBMDStreamingDeviceInput * This, + /* [in] */ BMDDisplayMode inputMode, + /* [in] */ IBMDStreamingVideoEncodingMode *encodingMode, + /* [out] */ BMDStreamingEncodingSupport *result, + /* [out] */ IBMDStreamingVideoEncodingMode **changedEncodingMode); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, SetVideoEncodingMode) + HRESULT ( STDMETHODCALLTYPE *SetVideoEncodingMode )( + IBMDStreamingDeviceInput * This, + /* [in] */ IBMDStreamingVideoEncodingMode *encodingMode); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, StartCapture) + HRESULT ( STDMETHODCALLTYPE *StartCapture )( + IBMDStreamingDeviceInput * This); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, StopCapture) + HRESULT ( STDMETHODCALLTYPE *StopCapture )( + IBMDStreamingDeviceInput * This); + + DECLSPEC_XFGVIRT(IBMDStreamingDeviceInput, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IBMDStreamingDeviceInput * This, + /* [in] */ IUnknown *theCallback); + + END_INTERFACE + } IBMDStreamingDeviceInputVtbl; + + interface IBMDStreamingDeviceInput + { + CONST_VTBL struct IBMDStreamingDeviceInputVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingDeviceInput_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingDeviceInput_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingDeviceInput_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingDeviceInput_DoesSupportVideoInputMode(This,inputMode,result) \ + ( (This)->lpVtbl -> DoesSupportVideoInputMode(This,inputMode,result) ) + +#define IBMDStreamingDeviceInput_GetVideoInputModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetVideoInputModeIterator(This,iterator) ) + +#define IBMDStreamingDeviceInput_SetVideoInputMode(This,inputMode) \ + ( (This)->lpVtbl -> SetVideoInputMode(This,inputMode) ) + +#define IBMDStreamingDeviceInput_GetCurrentDetectedVideoInputMode(This,detectedMode) \ + ( (This)->lpVtbl -> GetCurrentDetectedVideoInputMode(This,detectedMode) ) + +#define IBMDStreamingDeviceInput_GetVideoEncodingMode(This,encodingMode) \ + ( (This)->lpVtbl -> GetVideoEncodingMode(This,encodingMode) ) + +#define IBMDStreamingDeviceInput_GetVideoEncodingModePresetIterator(This,inputMode,iterator) \ + ( (This)->lpVtbl -> GetVideoEncodingModePresetIterator(This,inputMode,iterator) ) + +#define IBMDStreamingDeviceInput_DoesSupportVideoEncodingMode(This,inputMode,encodingMode,result,changedEncodingMode) \ + ( (This)->lpVtbl -> DoesSupportVideoEncodingMode(This,inputMode,encodingMode,result,changedEncodingMode) ) + +#define IBMDStreamingDeviceInput_SetVideoEncodingMode(This,encodingMode) \ + ( (This)->lpVtbl -> SetVideoEncodingMode(This,encodingMode) ) + +#define IBMDStreamingDeviceInput_StartCapture(This) \ + ( (This)->lpVtbl -> StartCapture(This) ) + +#define IBMDStreamingDeviceInput_StopCapture(This) \ + ( (This)->lpVtbl -> StopCapture(This) ) + +#define IBMDStreamingDeviceInput_SetCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetCallback(This,theCallback) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingDeviceInput_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingH264NALPacket_INTERFACE_DEFINED__ +#define __IBMDStreamingH264NALPacket_INTERFACE_DEFINED__ + +/* interface IBMDStreamingH264NALPacket */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingH264NALPacket; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E260E955-14BE-4395-9775-9F02CC0A9D89") + IBMDStreamingH264NALPacket : public IUnknown + { + public: + virtual long STDMETHODCALLTYPE GetPayloadSize( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [out] */ void **buffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytesWithSizePrefix( + /* [out] */ void **buffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayTime( + /* [in] */ ULONGLONG requestedTimeScale, + /* [out] */ ULONGLONG *displayTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPacketIndex( + /* [out] */ unsigned int *packetIndex) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingH264NALPacketVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingH264NALPacket * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingH264NALPacket * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingH264NALPacket * This); + + DECLSPEC_XFGVIRT(IBMDStreamingH264NALPacket, GetPayloadSize) + long ( STDMETHODCALLTYPE *GetPayloadSize )( + IBMDStreamingH264NALPacket * This); + + DECLSPEC_XFGVIRT(IBMDStreamingH264NALPacket, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IBMDStreamingH264NALPacket * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IBMDStreamingH264NALPacket, GetBytesWithSizePrefix) + HRESULT ( STDMETHODCALLTYPE *GetBytesWithSizePrefix )( + IBMDStreamingH264NALPacket * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IBMDStreamingH264NALPacket, GetDisplayTime) + HRESULT ( STDMETHODCALLTYPE *GetDisplayTime )( + IBMDStreamingH264NALPacket * This, + /* [in] */ ULONGLONG requestedTimeScale, + /* [out] */ ULONGLONG *displayTime); + + DECLSPEC_XFGVIRT(IBMDStreamingH264NALPacket, GetPacketIndex) + HRESULT ( STDMETHODCALLTYPE *GetPacketIndex )( + IBMDStreamingH264NALPacket * This, + /* [out] */ unsigned int *packetIndex); + + END_INTERFACE + } IBMDStreamingH264NALPacketVtbl; + + interface IBMDStreamingH264NALPacket + { + CONST_VTBL struct IBMDStreamingH264NALPacketVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingH264NALPacket_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingH264NALPacket_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingH264NALPacket_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingH264NALPacket_GetPayloadSize(This) \ + ( (This)->lpVtbl -> GetPayloadSize(This) ) + +#define IBMDStreamingH264NALPacket_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IBMDStreamingH264NALPacket_GetBytesWithSizePrefix(This,buffer) \ + ( (This)->lpVtbl -> GetBytesWithSizePrefix(This,buffer) ) + +#define IBMDStreamingH264NALPacket_GetDisplayTime(This,requestedTimeScale,displayTime) \ + ( (This)->lpVtbl -> GetDisplayTime(This,requestedTimeScale,displayTime) ) + +#define IBMDStreamingH264NALPacket_GetPacketIndex(This,packetIndex) \ + ( (This)->lpVtbl -> GetPacketIndex(This,packetIndex) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingH264NALPacket_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingAudioPacket_INTERFACE_DEFINED__ +#define __IBMDStreamingAudioPacket_INTERFACE_DEFINED__ + +/* interface IBMDStreamingAudioPacket */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingAudioPacket; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D9EB5902-1AD2-43F4-9E2C-3CFA50B5EE19") + IBMDStreamingAudioPacket : public IUnknown + { + public: + virtual BMDStreamingAudioCodec STDMETHODCALLTYPE GetCodec( void) = 0; + + virtual long STDMETHODCALLTYPE GetPayloadSize( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [out] */ void **buffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPlayTime( + /* [in] */ ULONGLONG requestedTimeScale, + /* [out] */ ULONGLONG *playTime) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPacketIndex( + /* [out] */ unsigned int *packetIndex) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingAudioPacketVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingAudioPacket * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingAudioPacket * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingAudioPacket * This); + + DECLSPEC_XFGVIRT(IBMDStreamingAudioPacket, GetCodec) + BMDStreamingAudioCodec ( STDMETHODCALLTYPE *GetCodec )( + IBMDStreamingAudioPacket * This); + + DECLSPEC_XFGVIRT(IBMDStreamingAudioPacket, GetPayloadSize) + long ( STDMETHODCALLTYPE *GetPayloadSize )( + IBMDStreamingAudioPacket * This); + + DECLSPEC_XFGVIRT(IBMDStreamingAudioPacket, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IBMDStreamingAudioPacket * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IBMDStreamingAudioPacket, GetPlayTime) + HRESULT ( STDMETHODCALLTYPE *GetPlayTime )( + IBMDStreamingAudioPacket * This, + /* [in] */ ULONGLONG requestedTimeScale, + /* [out] */ ULONGLONG *playTime); + + DECLSPEC_XFGVIRT(IBMDStreamingAudioPacket, GetPacketIndex) + HRESULT ( STDMETHODCALLTYPE *GetPacketIndex )( + IBMDStreamingAudioPacket * This, + /* [out] */ unsigned int *packetIndex); + + END_INTERFACE + } IBMDStreamingAudioPacketVtbl; + + interface IBMDStreamingAudioPacket + { + CONST_VTBL struct IBMDStreamingAudioPacketVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingAudioPacket_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingAudioPacket_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingAudioPacket_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingAudioPacket_GetCodec(This) \ + ( (This)->lpVtbl -> GetCodec(This) ) + +#define IBMDStreamingAudioPacket_GetPayloadSize(This) \ + ( (This)->lpVtbl -> GetPayloadSize(This) ) + +#define IBMDStreamingAudioPacket_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IBMDStreamingAudioPacket_GetPlayTime(This,requestedTimeScale,playTime) \ + ( (This)->lpVtbl -> GetPlayTime(This,requestedTimeScale,playTime) ) + +#define IBMDStreamingAudioPacket_GetPacketIndex(This,packetIndex) \ + ( (This)->lpVtbl -> GetPacketIndex(This,packetIndex) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingAudioPacket_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingMPEG2TSPacket_INTERFACE_DEFINED__ +#define __IBMDStreamingMPEG2TSPacket_INTERFACE_DEFINED__ + +/* interface IBMDStreamingMPEG2TSPacket */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingMPEG2TSPacket; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("91810D1C-4FB3-4AAA-AE56-FA301D3DFA4C") + IBMDStreamingMPEG2TSPacket : public IUnknown + { + public: + virtual long STDMETHODCALLTYPE GetPayloadSize( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [out] */ void **buffer) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingMPEG2TSPacketVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingMPEG2TSPacket * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingMPEG2TSPacket * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingMPEG2TSPacket * This); + + DECLSPEC_XFGVIRT(IBMDStreamingMPEG2TSPacket, GetPayloadSize) + long ( STDMETHODCALLTYPE *GetPayloadSize )( + IBMDStreamingMPEG2TSPacket * This); + + DECLSPEC_XFGVIRT(IBMDStreamingMPEG2TSPacket, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IBMDStreamingMPEG2TSPacket * This, + /* [out] */ void **buffer); + + END_INTERFACE + } IBMDStreamingMPEG2TSPacketVtbl; + + interface IBMDStreamingMPEG2TSPacket + { + CONST_VTBL struct IBMDStreamingMPEG2TSPacketVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingMPEG2TSPacket_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingMPEG2TSPacket_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingMPEG2TSPacket_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingMPEG2TSPacket_GetPayloadSize(This) \ + ( (This)->lpVtbl -> GetPayloadSize(This) ) + +#define IBMDStreamingMPEG2TSPacket_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingMPEG2TSPacket_INTERFACE_DEFINED__ */ + + +#ifndef __IBMDStreamingH264NALParser_INTERFACE_DEFINED__ +#define __IBMDStreamingH264NALParser_INTERFACE_DEFINED__ + +/* interface IBMDStreamingH264NALParser */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IBMDStreamingH264NALParser; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5867F18C-5BFA-4CCC-B2A7-9DFD140417D2") + IBMDStreamingH264NALParser : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE IsNALSequenceParameterSet( + /* [in] */ IBMDStreamingH264NALPacket *nal) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsNALPictureParameterSet( + /* [in] */ IBMDStreamingH264NALPacket *nal) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProfileAndLevelFromSPS( + /* [in] */ IBMDStreamingH264NALPacket *nal, + /* [out] */ unsigned int *profileIdc, + /* [out] */ unsigned int *profileCompatability, + /* [out] */ unsigned int *levelIdc) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IBMDStreamingH264NALParserVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IBMDStreamingH264NALParser * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IBMDStreamingH264NALParser * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IBMDStreamingH264NALParser * This); + + DECLSPEC_XFGVIRT(IBMDStreamingH264NALParser, IsNALSequenceParameterSet) + HRESULT ( STDMETHODCALLTYPE *IsNALSequenceParameterSet )( + IBMDStreamingH264NALParser * This, + /* [in] */ IBMDStreamingH264NALPacket *nal); + + DECLSPEC_XFGVIRT(IBMDStreamingH264NALParser, IsNALPictureParameterSet) + HRESULT ( STDMETHODCALLTYPE *IsNALPictureParameterSet )( + IBMDStreamingH264NALParser * This, + /* [in] */ IBMDStreamingH264NALPacket *nal); + + DECLSPEC_XFGVIRT(IBMDStreamingH264NALParser, GetProfileAndLevelFromSPS) + HRESULT ( STDMETHODCALLTYPE *GetProfileAndLevelFromSPS )( + IBMDStreamingH264NALParser * This, + /* [in] */ IBMDStreamingH264NALPacket *nal, + /* [out] */ unsigned int *profileIdc, + /* [out] */ unsigned int *profileCompatability, + /* [out] */ unsigned int *levelIdc); + + END_INTERFACE + } IBMDStreamingH264NALParserVtbl; + + interface IBMDStreamingH264NALParser + { + CONST_VTBL struct IBMDStreamingH264NALParserVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IBMDStreamingH264NALParser_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IBMDStreamingH264NALParser_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IBMDStreamingH264NALParser_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IBMDStreamingH264NALParser_IsNALSequenceParameterSet(This,nal) \ + ( (This)->lpVtbl -> IsNALSequenceParameterSet(This,nal) ) + +#define IBMDStreamingH264NALParser_IsNALPictureParameterSet(This,nal) \ + ( (This)->lpVtbl -> IsNALPictureParameterSet(This,nal) ) + +#define IBMDStreamingH264NALParser_GetProfileAndLevelFromSPS(This,nal,profileIdc,profileCompatability,levelIdc) \ + ( (This)->lpVtbl -> GetProfileAndLevelFromSPS(This,nal,profileIdc,profileCompatability,levelIdc) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IBMDStreamingH264NALParser_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_CBMDStreamingDiscovery; + +#ifdef __cplusplus + +class DECLSPEC_UUID("23A4EDF5-A0E5-432C-94EF-3BABB5F81C82") +CBMDStreamingDiscovery; +#endif + +EXTERN_C const CLSID CLSID_CBMDStreamingH264NALParser; + +#ifdef __cplusplus + +class DECLSPEC_UUID("7753EFBD-951C-407C-97A5-23C737B73B52") +CBMDStreamingH264NALParser; +#endif + +#ifndef __IDeckLinkVideoOutputCallback_INTERFACE_DEFINED__ +#define __IDeckLinkVideoOutputCallback_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoOutputCallback */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoOutputCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5BE6DF26-02CE-433E-99D9-9A87C3AC171F") + IDeckLinkVideoOutputCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted( + /* [in] */ IDeckLinkVideoFrame *completedFrame, + /* [in] */ BMDOutputFrameCompletionResult result) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduledPlaybackHasStopped( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoOutputCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoOutputCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoOutputCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoOutputCallback * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoOutputCallback, ScheduledFrameCompleted) + HRESULT ( STDMETHODCALLTYPE *ScheduledFrameCompleted )( + IDeckLinkVideoOutputCallback * This, + /* [in] */ IDeckLinkVideoFrame *completedFrame, + /* [in] */ BMDOutputFrameCompletionResult result); + + DECLSPEC_XFGVIRT(IDeckLinkVideoOutputCallback, ScheduledPlaybackHasStopped) + HRESULT ( STDMETHODCALLTYPE *ScheduledPlaybackHasStopped )( + IDeckLinkVideoOutputCallback * This); + + END_INTERFACE + } IDeckLinkVideoOutputCallbackVtbl; + + interface IDeckLinkVideoOutputCallback + { + CONST_VTBL struct IDeckLinkVideoOutputCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoOutputCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoOutputCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoOutputCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoOutputCallback_ScheduledFrameCompleted(This,completedFrame,result) \ + ( (This)->lpVtbl -> ScheduledFrameCompleted(This,completedFrame,result) ) + +#define IDeckLinkVideoOutputCallback_ScheduledPlaybackHasStopped(This) \ + ( (This)->lpVtbl -> ScheduledPlaybackHasStopped(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoOutputCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkInputCallback_INTERFACE_DEFINED__ +#define __IDeckLinkInputCallback_INTERFACE_DEFINED__ + +/* interface IDeckLinkInputCallback */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkInputCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3A94F075-C37D-4BA8-BCC0-1D778C8F881B") + IDeckLinkInputCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged( + /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents, + /* [in] */ IDeckLinkDisplayMode *newDisplayMode, + /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived( + /* [in] */ IDeckLinkVideoInputFrame *videoFrame, + /* [in] */ IDeckLinkAudioInputPacket *audioPacket) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkInputCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkInputCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkInputCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkInputCallback * This); + + DECLSPEC_XFGVIRT(IDeckLinkInputCallback, VideoInputFormatChanged) + HRESULT ( STDMETHODCALLTYPE *VideoInputFormatChanged )( + IDeckLinkInputCallback * This, + /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents, + /* [in] */ IDeckLinkDisplayMode *newDisplayMode, + /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags); + + DECLSPEC_XFGVIRT(IDeckLinkInputCallback, VideoInputFrameArrived) + HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( + IDeckLinkInputCallback * This, + /* [in] */ IDeckLinkVideoInputFrame *videoFrame, + /* [in] */ IDeckLinkAudioInputPacket *audioPacket); + + END_INTERFACE + } IDeckLinkInputCallbackVtbl; + + interface IDeckLinkInputCallback + { + CONST_VTBL struct IDeckLinkInputCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkInputCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkInputCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkInputCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkInputCallback_VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) \ + ( (This)->lpVtbl -> VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) ) + +#define IDeckLinkInputCallback_VideoInputFrameArrived(This,videoFrame,audioPacket) \ + ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkInputCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderInputCallback_INTERFACE_DEFINED__ +#define __IDeckLinkEncoderInputCallback_INTERFACE_DEFINED__ + +/* interface IDeckLinkEncoderInputCallback */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkEncoderInputCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ACF13E61-F4A0-4974-A6A7-59AFF6268B31") + IDeckLinkEncoderInputCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE VideoInputSignalChanged( + /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents, + /* [in] */ IDeckLinkDisplayMode *newDisplayMode, + /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE VideoPacketArrived( + /* [in] */ IDeckLinkEncoderVideoPacket *videoPacket) = 0; + + virtual HRESULT STDMETHODCALLTYPE AudioPacketArrived( + /* [in] */ IDeckLinkEncoderAudioPacket *audioPacket) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkEncoderInputCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkEncoderInputCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkEncoderInputCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkEncoderInputCallback * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInputCallback, VideoInputSignalChanged) + HRESULT ( STDMETHODCALLTYPE *VideoInputSignalChanged )( + IDeckLinkEncoderInputCallback * This, + /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents, + /* [in] */ IDeckLinkDisplayMode *newDisplayMode, + /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInputCallback, VideoPacketArrived) + HRESULT ( STDMETHODCALLTYPE *VideoPacketArrived )( + IDeckLinkEncoderInputCallback * This, + /* [in] */ IDeckLinkEncoderVideoPacket *videoPacket); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInputCallback, AudioPacketArrived) + HRESULT ( STDMETHODCALLTYPE *AudioPacketArrived )( + IDeckLinkEncoderInputCallback * This, + /* [in] */ IDeckLinkEncoderAudioPacket *audioPacket); + + END_INTERFACE + } IDeckLinkEncoderInputCallbackVtbl; + + interface IDeckLinkEncoderInputCallback + { + CONST_VTBL struct IDeckLinkEncoderInputCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkEncoderInputCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkEncoderInputCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkEncoderInputCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkEncoderInputCallback_VideoInputSignalChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) \ + ( (This)->lpVtbl -> VideoInputSignalChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) ) + +#define IDeckLinkEncoderInputCallback_VideoPacketArrived(This,videoPacket) \ + ( (This)->lpVtbl -> VideoPacketArrived(This,videoPacket) ) + +#define IDeckLinkEncoderInputCallback_AudioPacketArrived(This,audioPacket) \ + ( (This)->lpVtbl -> AudioPacketArrived(This,audioPacket) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkEncoderInputCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBufferAllocator_INTERFACE_DEFINED__ +#define __IDeckLinkVideoBufferAllocator_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoBufferAllocator */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoBufferAllocator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F35DFA8D-9078-4622-95BB-56894054EB0F") + IDeckLinkVideoBufferAllocator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE AllocateVideoBuffer( + /* [out] */ IDeckLinkVideoBuffer **allocatedBuffer) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoBufferAllocatorVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoBufferAllocator * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoBufferAllocator * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoBufferAllocator * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBufferAllocator, AllocateVideoBuffer) + HRESULT ( STDMETHODCALLTYPE *AllocateVideoBuffer )( + IDeckLinkVideoBufferAllocator * This, + /* [out] */ IDeckLinkVideoBuffer **allocatedBuffer); + + END_INTERFACE + } IDeckLinkVideoBufferAllocatorVtbl; + + interface IDeckLinkVideoBufferAllocator + { + CONST_VTBL struct IDeckLinkVideoBufferAllocatorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoBufferAllocator_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoBufferAllocator_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoBufferAllocator_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoBufferAllocator_AllocateVideoBuffer(This,allocatedBuffer) \ + ( (This)->lpVtbl -> AllocateVideoBuffer(This,allocatedBuffer) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoBufferAllocator_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBufferAllocatorProvider_INTERFACE_DEFINED__ +#define __IDeckLinkVideoBufferAllocatorProvider_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoBufferAllocatorProvider */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoBufferAllocatorProvider; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6DF6F20A-D8DF-45D2-8914-383CE7E6243F") + IDeckLinkVideoBufferAllocatorProvider : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetVideoBufferAllocator( + /* [in] */ unsigned int bufferSize, + /* [in] */ unsigned int width, + /* [in] */ unsigned int height, + /* [in] */ unsigned int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoBufferAllocator **allocator) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoBufferAllocatorProviderVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoBufferAllocatorProvider * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoBufferAllocatorProvider * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoBufferAllocatorProvider * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBufferAllocatorProvider, GetVideoBufferAllocator) + HRESULT ( STDMETHODCALLTYPE *GetVideoBufferAllocator )( + IDeckLinkVideoBufferAllocatorProvider * This, + /* [in] */ unsigned int bufferSize, + /* [in] */ unsigned int width, + /* [in] */ unsigned int height, + /* [in] */ unsigned int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoBufferAllocator **allocator); + + END_INTERFACE + } IDeckLinkVideoBufferAllocatorProviderVtbl; + + interface IDeckLinkVideoBufferAllocatorProvider + { + CONST_VTBL struct IDeckLinkVideoBufferAllocatorProviderVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoBufferAllocatorProvider_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoBufferAllocatorProvider_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoBufferAllocatorProvider_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoBufferAllocatorProvider_GetVideoBufferAllocator(This,bufferSize,width,height,rowBytes,pixelFormat,allocator) \ + ( (This)->lpVtbl -> GetVideoBufferAllocator(This,bufferSize,width,height,rowBytes,pixelFormat,allocator) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoBufferAllocatorProvider_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkAudioOutputCallback_INTERFACE_DEFINED__ +#define __IDeckLinkAudioOutputCallback_INTERFACE_DEFINED__ + +/* interface IDeckLinkAudioOutputCallback */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkAudioOutputCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("403C681B-7F46-4A12-B993-2BB127084EE6") + IDeckLinkAudioOutputCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE RenderAudioSamples( + /* [in] */ BOOL preroll) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkAudioOutputCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkAudioOutputCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkAudioOutputCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkAudioOutputCallback * This); + + DECLSPEC_XFGVIRT(IDeckLinkAudioOutputCallback, RenderAudioSamples) + HRESULT ( STDMETHODCALLTYPE *RenderAudioSamples )( + IDeckLinkAudioOutputCallback * This, + /* [in] */ BOOL preroll); + + END_INTERFACE + } IDeckLinkAudioOutputCallbackVtbl; + + interface IDeckLinkAudioOutputCallback + { + CONST_VTBL struct IDeckLinkAudioOutputCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkAudioOutputCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkAudioOutputCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkAudioOutputCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkAudioOutputCallback_RenderAudioSamples(This,preroll) \ + ( (This)->lpVtbl -> RenderAudioSamples(This,preroll) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkAudioOutputCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkIterator_INTERFACE_DEFINED__ +#define __IDeckLinkIterator_INTERFACE_DEFINED__ + +/* interface IDeckLinkIterator */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkIterator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("50FB36CD-3063-4B73-BDBB-958087F2D8BA") + IDeckLinkIterator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [out] */ IDeckLink **deckLinkInstance) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkIteratorVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkIterator * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkIterator * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkIterator * This); + + DECLSPEC_XFGVIRT(IDeckLinkIterator, Next) + HRESULT ( STDMETHODCALLTYPE *Next )( + IDeckLinkIterator * This, + /* [out] */ IDeckLink **deckLinkInstance); + + END_INTERFACE + } IDeckLinkIteratorVtbl; + + interface IDeckLinkIterator + { + CONST_VTBL struct IDeckLinkIteratorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkIterator_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkIterator_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkIterator_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkIterator_Next(This,deckLinkInstance) \ + ( (This)->lpVtbl -> Next(This,deckLinkInstance) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkIterator_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkAPIInformation_INTERFACE_DEFINED__ +#define __IDeckLinkAPIInformation_INTERFACE_DEFINED__ + +/* interface IDeckLinkAPIInformation */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkAPIInformation; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("7BEA3C68-730D-4322-AF34-8A7152B532A4") + IDeckLinkAPIInformation : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkAPIInformationID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkAPIInformationID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkAPIInformationID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkAPIInformationID cfgID, + /* [out] */ BSTR *value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkAPIInformationVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkAPIInformation * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkAPIInformation * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkAPIInformation * This); + + DECLSPEC_XFGVIRT(IDeckLinkAPIInformation, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkAPIInformation * This, + /* [in] */ BMDDeckLinkAPIInformationID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkAPIInformation, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkAPIInformation * This, + /* [in] */ BMDDeckLinkAPIInformationID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkAPIInformation, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkAPIInformation * This, + /* [in] */ BMDDeckLinkAPIInformationID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkAPIInformation, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkAPIInformation * This, + /* [in] */ BMDDeckLinkAPIInformationID cfgID, + /* [out] */ BSTR *value); + + END_INTERFACE + } IDeckLinkAPIInformationVtbl; + + interface IDeckLinkAPIInformation + { + CONST_VTBL struct IDeckLinkAPIInformationVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkAPIInformation_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkAPIInformation_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkAPIInformation_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkAPIInformation_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkAPIInformation_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkAPIInformation_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkAPIInformation_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkAPIInformation_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkIPFlowAttributes_INTERFACE_DEFINED__ +#define __IDeckLinkIPFlowAttributes_INTERFACE_DEFINED__ + +/* interface IDeckLinkIPFlowAttributes */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkIPFlowAttributes; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CDA938DA-6479-40C6-B2EC-A3579B3AEECD") + IDeckLinkIPFlowAttributes : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkIPFlowAttributeID attrID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkIPFlowAttributeID attrID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkIPFlowAttributeID attrID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkIPFlowAttributeID attrID, + /* [out] */ BSTR *value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkIPFlowAttributesVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkIPFlowAttributes * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkIPFlowAttributes * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkIPFlowAttributes * This); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowAttributes, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkIPFlowAttributes * This, + /* [in] */ BMDDeckLinkIPFlowAttributeID attrID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowAttributes, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkIPFlowAttributes * This, + /* [in] */ BMDDeckLinkIPFlowAttributeID attrID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowAttributes, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkIPFlowAttributes * This, + /* [in] */ BMDDeckLinkIPFlowAttributeID attrID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowAttributes, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkIPFlowAttributes * This, + /* [in] */ BMDDeckLinkIPFlowAttributeID attrID, + /* [out] */ BSTR *value); + + END_INTERFACE + } IDeckLinkIPFlowAttributesVtbl; + + interface IDeckLinkIPFlowAttributes + { + CONST_VTBL struct IDeckLinkIPFlowAttributesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkIPFlowAttributes_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkIPFlowAttributes_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkIPFlowAttributes_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkIPFlowAttributes_GetInt(This,attrID,value) \ + ( (This)->lpVtbl -> GetInt(This,attrID,value) ) + +#define IDeckLinkIPFlowAttributes_GetFlag(This,attrID,value) \ + ( (This)->lpVtbl -> GetFlag(This,attrID,value) ) + +#define IDeckLinkIPFlowAttributes_GetFloat(This,attrID,value) \ + ( (This)->lpVtbl -> GetFloat(This,attrID,value) ) + +#define IDeckLinkIPFlowAttributes_GetString(This,attrID,value) \ + ( (This)->lpVtbl -> GetString(This,attrID,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkIPFlowAttributes_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkIPFlowStatus_INTERFACE_DEFINED__ +#define __IDeckLinkIPFlowStatus_INTERFACE_DEFINED__ + +/* interface IDeckLinkIPFlowStatus */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkIPFlowStatus; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("31C41656-4992-4396-BBE9-5F8406AAB5AF") + IDeckLinkIPFlowStatus : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkIPFlowStatusID statusID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkIPFlowStatusID statusID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkIPFlowStatusID statusID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkIPFlowStatusID statusID, + /* [out] */ BSTR *value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkIPFlowStatusVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkIPFlowStatus * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkIPFlowStatus * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkIPFlowStatus * This); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowStatus, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkIPFlowStatus * This, + /* [in] */ BMDDeckLinkIPFlowStatusID statusID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowStatus, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkIPFlowStatus * This, + /* [in] */ BMDDeckLinkIPFlowStatusID statusID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowStatus, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkIPFlowStatus * This, + /* [in] */ BMDDeckLinkIPFlowStatusID statusID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowStatus, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkIPFlowStatus * This, + /* [in] */ BMDDeckLinkIPFlowStatusID statusID, + /* [out] */ BSTR *value); + + END_INTERFACE + } IDeckLinkIPFlowStatusVtbl; + + interface IDeckLinkIPFlowStatus + { + CONST_VTBL struct IDeckLinkIPFlowStatusVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkIPFlowStatus_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkIPFlowStatus_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkIPFlowStatus_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkIPFlowStatus_GetInt(This,statusID,value) \ + ( (This)->lpVtbl -> GetInt(This,statusID,value) ) + +#define IDeckLinkIPFlowStatus_GetFlag(This,statusID,value) \ + ( (This)->lpVtbl -> GetFlag(This,statusID,value) ) + +#define IDeckLinkIPFlowStatus_GetFloat(This,statusID,value) \ + ( (This)->lpVtbl -> GetFloat(This,statusID,value) ) + +#define IDeckLinkIPFlowStatus_GetString(This,statusID,value) \ + ( (This)->lpVtbl -> GetString(This,statusID,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkIPFlowStatus_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkIPFlowSetting_INTERFACE_DEFINED__ +#define __IDeckLinkIPFlowSetting_INTERFACE_DEFINED__ + +/* interface IDeckLinkIPFlowSetting */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkIPFlowSetting; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("86DD9174-27D3-4032-B2AD-6067C3BB2424") + IDeckLinkIPFlowSetting : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [in] */ BSTR value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkIPFlowSettingVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkIPFlowSetting * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkIPFlowSetting * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkIPFlowSetting * This); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowSetting, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkIPFlowSetting * This, + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowSetting, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkIPFlowSetting * This, + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowSetting, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkIPFlowSetting * This, + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowSetting, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkIPFlowSetting * This, + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowSetting, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkIPFlowSetting * This, + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowSetting, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IDeckLinkIPFlowSetting * This, + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowSetting, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IDeckLinkIPFlowSetting * This, + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowSetting, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IDeckLinkIPFlowSetting * This, + /* [in] */ BMDDeckLinkIPFlowSettingID settingID, + /* [in] */ BSTR value); + + END_INTERFACE + } IDeckLinkIPFlowSettingVtbl; + + interface IDeckLinkIPFlowSetting + { + CONST_VTBL struct IDeckLinkIPFlowSettingVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkIPFlowSetting_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkIPFlowSetting_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkIPFlowSetting_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkIPFlowSetting_GetInt(This,settingID,value) \ + ( (This)->lpVtbl -> GetInt(This,settingID,value) ) + +#define IDeckLinkIPFlowSetting_GetFlag(This,settingID,value) \ + ( (This)->lpVtbl -> GetFlag(This,settingID,value) ) + +#define IDeckLinkIPFlowSetting_GetFloat(This,settingID,value) \ + ( (This)->lpVtbl -> GetFloat(This,settingID,value) ) + +#define IDeckLinkIPFlowSetting_GetString(This,settingID,value) \ + ( (This)->lpVtbl -> GetString(This,settingID,value) ) + +#define IDeckLinkIPFlowSetting_SetInt(This,settingID,value) \ + ( (This)->lpVtbl -> SetInt(This,settingID,value) ) + +#define IDeckLinkIPFlowSetting_SetFlag(This,settingID,value) \ + ( (This)->lpVtbl -> SetFlag(This,settingID,value) ) + +#define IDeckLinkIPFlowSetting_SetFloat(This,settingID,value) \ + ( (This)->lpVtbl -> SetFloat(This,settingID,value) ) + +#define IDeckLinkIPFlowSetting_SetString(This,settingID,value) \ + ( (This)->lpVtbl -> SetString(This,settingID,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkIPFlowSetting_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkIPFlow_INTERFACE_DEFINED__ +#define __IDeckLinkIPFlow_INTERFACE_DEFINED__ + +/* interface IDeckLinkIPFlow */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkIPFlow; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C5FC83C7-5B8E-42A7-9A40-7C065955D4E1") + IDeckLinkIPFlow : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Enable( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Disable( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkIPFlowVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkIPFlow * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkIPFlow * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkIPFlow * This); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlow, Enable) + HRESULT ( STDMETHODCALLTYPE *Enable )( + IDeckLinkIPFlow * This); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlow, Disable) + HRESULT ( STDMETHODCALLTYPE *Disable )( + IDeckLinkIPFlow * This); + + END_INTERFACE + } IDeckLinkIPFlowVtbl; + + interface IDeckLinkIPFlow + { + CONST_VTBL struct IDeckLinkIPFlowVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkIPFlow_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkIPFlow_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkIPFlow_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkIPFlow_Enable(This) \ + ( (This)->lpVtbl -> Enable(This) ) + +#define IDeckLinkIPFlow_Disable(This) \ + ( (This)->lpVtbl -> Disable(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkIPFlow_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkIPFlowIterator_INTERFACE_DEFINED__ +#define __IDeckLinkIPFlowIterator_INTERFACE_DEFINED__ + +/* interface IDeckLinkIPFlowIterator */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkIPFlowIterator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("BD296AB2-A5C5-4153-888F-AAB1FDBD8A5C") + IDeckLinkIPFlowIterator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [out] */ IDeckLinkIPFlow **deckLinkIPFlowInstance) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkIPFlowIteratorVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkIPFlowIterator * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkIPFlowIterator * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkIPFlowIterator * This); + + DECLSPEC_XFGVIRT(IDeckLinkIPFlowIterator, Next) + HRESULT ( STDMETHODCALLTYPE *Next )( + IDeckLinkIPFlowIterator * This, + /* [out] */ IDeckLinkIPFlow **deckLinkIPFlowInstance); + + END_INTERFACE + } IDeckLinkIPFlowIteratorVtbl; + + interface IDeckLinkIPFlowIterator + { + CONST_VTBL struct IDeckLinkIPFlowIteratorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkIPFlowIterator_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkIPFlowIterator_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkIPFlowIterator_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkIPFlowIterator_Next(This,deckLinkIPFlowInstance) \ + ( (This)->lpVtbl -> Next(This,deckLinkIPFlowInstance) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkIPFlowIterator_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkOutput_INTERFACE_DEFINED__ +#define __IDeckLinkOutput_INTERFACE_DEFINED__ + +/* interface IDeckLinkOutput */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkOutput; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5F227C95-39D7-46C7-8B7D-9C81795FBBE4") + IDeckLinkOutput : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDVideoOutputConversionMode conversionMode, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDVideoOutputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( + /* [in] */ int width, + /* [in] */ int height, + /* [in] */ int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDFrameFlags flags, + /* [out] */ IDeckLinkMutableVideoFrame **outFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateVideoFrameWithBuffer( + /* [in] */ int width, + /* [in] */ int height, + /* [in] */ int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDFrameFlags flags, + /* [in] */ IDeckLinkVideoBuffer *buffer, + /* [out] */ IDeckLinkMutableVideoFrame **outFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE RowBytesForPixelFormat( + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ int width, + /* [out] */ int *rowBytes) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( + /* [in] */ IDeckLinkVideoFrame *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( + /* [in] */ IDeckLinkVideoFrame *theFrame, + /* [in] */ BMDTimeValue displayTime, + /* [in] */ BMDTimeValue displayDuration, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( + /* [in] */ IDeckLinkVideoOutputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount( + /* [out] */ unsigned int *bufferedFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount, + /* [in] */ BMDAudioOutputStreamType streamType) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [out] */ unsigned int *sampleFramesWritten) = 0; + + virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [in] */ BMDTimeValue streamTime, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ unsigned int *sampleFramesWritten) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( + /* [out] */ unsigned int *bufferedSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( + /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( + /* [in] */ BMDTimeValue playbackStartTime, + /* [in] */ BMDTimeScale timeScale, + /* [in] */ double playbackSpeed) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( + /* [in] */ BMDTimeValue stopPlaybackAtTime, + /* [out] */ BMDTimeValue *actualStopTime, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( + /* [out] */ BOOL *active) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *streamTime, + /* [out] */ double *playbackSpeed) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus( + /* [out] */ BMDReferenceStatus *referenceStatus) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameCompletionReferenceTimestamp( + /* [in] */ IDeckLinkVideoFrame *theFrame, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *frameCompletionTimestamp) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkOutputVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkOutput * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkOutput * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkOutput * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkOutput * This, + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDVideoOutputConversionMode conversionMode, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkOutput * This, + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkOutput * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkOutput * This, + /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, EnableVideoOutput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( + IDeckLinkOutput * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDVideoOutputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, DisableVideoOutput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( + IDeckLinkOutput * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, CreateVideoFrame) + HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( + IDeckLinkOutput * This, + /* [in] */ int width, + /* [in] */ int height, + /* [in] */ int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDFrameFlags flags, + /* [out] */ IDeckLinkMutableVideoFrame **outFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, CreateVideoFrameWithBuffer) + HRESULT ( STDMETHODCALLTYPE *CreateVideoFrameWithBuffer )( + IDeckLinkOutput * This, + /* [in] */ int width, + /* [in] */ int height, + /* [in] */ int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDFrameFlags flags, + /* [in] */ IDeckLinkVideoBuffer *buffer, + /* [out] */ IDeckLinkMutableVideoFrame **outFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, RowBytesForPixelFormat) + HRESULT ( STDMETHODCALLTYPE *RowBytesForPixelFormat )( + IDeckLinkOutput * This, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ int width, + /* [out] */ int *rowBytes); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, CreateAncillaryData) + HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( + IDeckLinkOutput * This, + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, DisplayVideoFrameSync) + HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( + IDeckLinkOutput * This, + /* [in] */ IDeckLinkVideoFrame *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, ScheduleVideoFrame) + HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( + IDeckLinkOutput * This, + /* [in] */ IDeckLinkVideoFrame *theFrame, + /* [in] */ BMDTimeValue displayTime, + /* [in] */ BMDTimeValue displayDuration, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, SetScheduledFrameCompletionCallback) + HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( + IDeckLinkOutput * This, + /* [in] */ IDeckLinkVideoOutputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, GetBufferedVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( + IDeckLinkOutput * This, + /* [out] */ unsigned int *bufferedFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, EnableAudioOutput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( + IDeckLinkOutput * This, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount, + /* [in] */ BMDAudioOutputStreamType streamType); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, DisableAudioOutput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( + IDeckLinkOutput * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, WriteAudioSamplesSync) + HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( + IDeckLinkOutput * This, + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [out] */ unsigned int *sampleFramesWritten); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, BeginAudioPreroll) + HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( + IDeckLinkOutput * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, EndAudioPreroll) + HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( + IDeckLinkOutput * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, ScheduleAudioSamples) + HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( + IDeckLinkOutput * This, + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [in] */ BMDTimeValue streamTime, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ unsigned int *sampleFramesWritten); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, GetBufferedAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( + IDeckLinkOutput * This, + /* [out] */ unsigned int *bufferedSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, FlushBufferedAudioSamples) + HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( + IDeckLinkOutput * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, SetAudioCallback) + HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( + IDeckLinkOutput * This, + /* [in] */ IDeckLinkAudioOutputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, StartScheduledPlayback) + HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( + IDeckLinkOutput * This, + /* [in] */ BMDTimeValue playbackStartTime, + /* [in] */ BMDTimeScale timeScale, + /* [in] */ double playbackSpeed); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, StopScheduledPlayback) + HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( + IDeckLinkOutput * This, + /* [in] */ BMDTimeValue stopPlaybackAtTime, + /* [out] */ BMDTimeValue *actualStopTime, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, IsScheduledPlaybackRunning) + HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( + IDeckLinkOutput * This, + /* [out] */ BOOL *active); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, GetScheduledStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetScheduledStreamTime )( + IDeckLinkOutput * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *streamTime, + /* [out] */ double *playbackSpeed); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, GetReferenceStatus) + HRESULT ( STDMETHODCALLTYPE *GetReferenceStatus )( + IDeckLinkOutput * This, + /* [out] */ BMDReferenceStatus *referenceStatus); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkOutput * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput, GetFrameCompletionReferenceTimestamp) + HRESULT ( STDMETHODCALLTYPE *GetFrameCompletionReferenceTimestamp )( + IDeckLinkOutput * This, + /* [in] */ IDeckLinkVideoFrame *theFrame, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *frameCompletionTimestamp); + + END_INTERFACE + } IDeckLinkOutputVtbl; + + interface IDeckLinkOutput + { + CONST_VTBL struct IDeckLinkOutputVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkOutput_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkOutput_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkOutput_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkOutput_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) ) + +#define IDeckLinkOutput_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkOutput_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkOutput_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkOutput_EnableVideoOutput(This,displayMode,flags) \ + ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode,flags) ) + +#define IDeckLinkOutput_DisableVideoOutput(This) \ + ( (This)->lpVtbl -> DisableVideoOutput(This) ) + +#define IDeckLinkOutput_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) \ + ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) + +#define IDeckLinkOutput_CreateVideoFrameWithBuffer(This,width,height,rowBytes,pixelFormat,flags,buffer,outFrame) \ + ( (This)->lpVtbl -> CreateVideoFrameWithBuffer(This,width,height,rowBytes,pixelFormat,flags,buffer,outFrame) ) + +#define IDeckLinkOutput_RowBytesForPixelFormat(This,pixelFormat,width,rowBytes) \ + ( (This)->lpVtbl -> RowBytesForPixelFormat(This,pixelFormat,width,rowBytes) ) + +#define IDeckLinkOutput_CreateAncillaryData(This,pixelFormat,outBuffer) \ + ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) + +#define IDeckLinkOutput_DisplayVideoFrameSync(This,theFrame) \ + ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) + +#define IDeckLinkOutput_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) \ + ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) + +#define IDeckLinkOutput_SetScheduledFrameCompletionCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) + +#define IDeckLinkOutput_GetBufferedVideoFrameCount(This,bufferedFrameCount) \ + ( (This)->lpVtbl -> GetBufferedVideoFrameCount(This,bufferedFrameCount) ) + +#define IDeckLinkOutput_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) \ + ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) ) + +#define IDeckLinkOutput_DisableAudioOutput(This) \ + ( (This)->lpVtbl -> DisableAudioOutput(This) ) + +#define IDeckLinkOutput_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) \ + ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) + +#define IDeckLinkOutput_BeginAudioPreroll(This) \ + ( (This)->lpVtbl -> BeginAudioPreroll(This) ) + +#define IDeckLinkOutput_EndAudioPreroll(This) \ + ( (This)->lpVtbl -> EndAudioPreroll(This) ) + +#define IDeckLinkOutput_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) \ + ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) + +#define IDeckLinkOutput_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) \ + ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) ) + +#define IDeckLinkOutput_FlushBufferedAudioSamples(This) \ + ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) + +#define IDeckLinkOutput_SetAudioCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) + +#define IDeckLinkOutput_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) \ + ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) + +#define IDeckLinkOutput_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) \ + ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) + +#define IDeckLinkOutput_IsScheduledPlaybackRunning(This,active) \ + ( (This)->lpVtbl -> IsScheduledPlaybackRunning(This,active) ) + +#define IDeckLinkOutput_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) \ + ( (This)->lpVtbl -> GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) ) + +#define IDeckLinkOutput_GetReferenceStatus(This,referenceStatus) \ + ( (This)->lpVtbl -> GetReferenceStatus(This,referenceStatus) ) + +#define IDeckLinkOutput_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#define IDeckLinkOutput_GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) \ + ( (This)->lpVtbl -> GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkOutput_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkInput_INTERFACE_DEFINED__ +#define __IDeckLinkInput_INTERFACE_DEFINED__ + +/* interface IDeckLinkInput */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkInput; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6A515F8A-FBCE-4853-B0F7-2A09DB1ECA0B") + IDeckLinkInput : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDVideoInputConversionMode conversionMode, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInputWithAllocatorProvider( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags, + /* [in] */ IDeckLinkVideoBufferAllocatorProvider *allocatorProvider) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( + /* [out] */ unsigned int *availableFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( + /* [out] */ unsigned int *availableSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IDeckLinkInputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkInputVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkInput * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkInput * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkInput * This, + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDVideoInputConversionMode conversionMode, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkInput, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkInput * This, + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkInput, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkInput * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkInput, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkInput * This, + /* [in] */ IDeckLinkScreenPreviewCallback *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput, EnableVideoInput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( + IDeckLinkInput * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkInput, EnableVideoInputWithAllocatorProvider) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInputWithAllocatorProvider )( + IDeckLinkInput * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags, + /* [in] */ IDeckLinkVideoBufferAllocatorProvider *allocatorProvider); + + DECLSPEC_XFGVIRT(IDeckLinkInput, DisableVideoInput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( + IDeckLinkInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput, GetAvailableVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( + IDeckLinkInput * This, + /* [out] */ unsigned int *availableFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput, EnableAudioInput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( + IDeckLinkInput * This, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput, DisableAudioInput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( + IDeckLinkInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput, GetAvailableAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( + IDeckLinkInput * This, + /* [out] */ unsigned int *availableSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput, StartStreams) + HRESULT ( STDMETHODCALLTYPE *StartStreams )( + IDeckLinkInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput, StopStreams) + HRESULT ( STDMETHODCALLTYPE *StopStreams )( + IDeckLinkInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput, PauseStreams) + HRESULT ( STDMETHODCALLTYPE *PauseStreams )( + IDeckLinkInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput, FlushStreams) + HRESULT ( STDMETHODCALLTYPE *FlushStreams )( + IDeckLinkInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkInput * This, + /* [in] */ IDeckLinkInputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkInput * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + END_INTERFACE + } IDeckLinkInputVtbl; + + interface IDeckLinkInput + { + CONST_VTBL struct IDeckLinkInputVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkInput_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkInput_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkInput_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkInput_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) ) + +#define IDeckLinkInput_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkInput_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkInput_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkInput_EnableVideoInput(This,displayMode,pixelFormat,flags) \ + ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) + +#define IDeckLinkInput_EnableVideoInputWithAllocatorProvider(This,displayMode,pixelFormat,flags,allocatorProvider) \ + ( (This)->lpVtbl -> EnableVideoInputWithAllocatorProvider(This,displayMode,pixelFormat,flags,allocatorProvider) ) + +#define IDeckLinkInput_DisableVideoInput(This) \ + ( (This)->lpVtbl -> DisableVideoInput(This) ) + +#define IDeckLinkInput_GetAvailableVideoFrameCount(This,availableFrameCount) \ + ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) + +#define IDeckLinkInput_EnableAudioInput(This,sampleRate,sampleType,channelCount) \ + ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) + +#define IDeckLinkInput_DisableAudioInput(This) \ + ( (This)->lpVtbl -> DisableAudioInput(This) ) + +#define IDeckLinkInput_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) \ + ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) + +#define IDeckLinkInput_StartStreams(This) \ + ( (This)->lpVtbl -> StartStreams(This) ) + +#define IDeckLinkInput_StopStreams(This) \ + ( (This)->lpVtbl -> StopStreams(This) ) + +#define IDeckLinkInput_PauseStreams(This) \ + ( (This)->lpVtbl -> PauseStreams(This) ) + +#define IDeckLinkInput_FlushStreams(This) \ + ( (This)->lpVtbl -> FlushStreams(This) ) + +#define IDeckLinkInput_SetCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetCallback(This,theCallback) ) + +#define IDeckLinkInput_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkInput_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkIPExtensions_INTERFACE_DEFINED__ +#define __IDeckLinkIPExtensions_INTERFACE_DEFINED__ + +/* interface IDeckLinkIPExtensions */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkIPExtensions; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("46CF7903-A9FD-4D0B-8FFC-0103722AB442") + IDeckLinkIPExtensions : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetDeckLinkIPFlowIterator( + /* [out] */ IDeckLinkIPFlowIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetIPFlowByID( + /* [in] */ BMDIPFlowID id, + /* [out] */ IDeckLinkIPFlow **flow) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkIPExtensionsVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkIPExtensions * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkIPExtensions * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkIPExtensions * This); + + DECLSPEC_XFGVIRT(IDeckLinkIPExtensions, GetDeckLinkIPFlowIterator) + HRESULT ( STDMETHODCALLTYPE *GetDeckLinkIPFlowIterator )( + IDeckLinkIPExtensions * This, + /* [out] */ IDeckLinkIPFlowIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkIPExtensions, GetIPFlowByID) + HRESULT ( STDMETHODCALLTYPE *GetIPFlowByID )( + IDeckLinkIPExtensions * This, + /* [in] */ BMDIPFlowID id, + /* [out] */ IDeckLinkIPFlow **flow); + + END_INTERFACE + } IDeckLinkIPExtensionsVtbl; + + interface IDeckLinkIPExtensions + { + CONST_VTBL struct IDeckLinkIPExtensionsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkIPExtensions_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkIPExtensions_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkIPExtensions_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkIPExtensions_GetDeckLinkIPFlowIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDeckLinkIPFlowIterator(This,iterator) ) + +#define IDeckLinkIPExtensions_GetIPFlowByID(This,id,flow) \ + ( (This)->lpVtbl -> GetIPFlowByID(This,id,flow) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkIPExtensions_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkHDMIInputEDID_INTERFACE_DEFINED__ +#define __IDeckLinkHDMIInputEDID_INTERFACE_DEFINED__ + +/* interface IDeckLinkHDMIInputEDID */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkHDMIInputEDID; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ABBBACBC-45BC-4665-9D92-ACE6E5A97902") + IDeckLinkHDMIInputEDID : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkHDMIInputEDIDID cfgID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkHDMIInputEDIDID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteToEDID( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkHDMIInputEDIDVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkHDMIInputEDID * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkHDMIInputEDID * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkHDMIInputEDID * This); + + DECLSPEC_XFGVIRT(IDeckLinkHDMIInputEDID, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkHDMIInputEDID * This, + /* [in] */ BMDDeckLinkHDMIInputEDIDID cfgID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkHDMIInputEDID, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkHDMIInputEDID * This, + /* [in] */ BMDDeckLinkHDMIInputEDIDID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkHDMIInputEDID, WriteToEDID) + HRESULT ( STDMETHODCALLTYPE *WriteToEDID )( + IDeckLinkHDMIInputEDID * This); + + END_INTERFACE + } IDeckLinkHDMIInputEDIDVtbl; + + interface IDeckLinkHDMIInputEDID + { + CONST_VTBL struct IDeckLinkHDMIInputEDIDVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkHDMIInputEDID_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkHDMIInputEDID_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkHDMIInputEDID_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkHDMIInputEDID_SetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) + +#define IDeckLinkHDMIInputEDID_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkHDMIInputEDID_WriteToEDID(This) \ + ( (This)->lpVtbl -> WriteToEDID(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkHDMIInputEDID_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderInput_INTERFACE_DEFINED__ +#define __IDeckLinkEncoderInput_INTERFACE_DEFINED__ + +/* interface IDeckLinkEncoderInput */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkEncoderInput; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("46C1332E-6FD9-472A-8591-FE59C22192E1") + IDeckLinkEncoderInput : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedCodec, + /* [in] */ unsigned int requestedCodecProfile, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailablePacketsCount( + /* [out] */ unsigned int *availablePacketsCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( + /* [in] */ BMDAudioFormat audioFormat, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( + /* [out] */ unsigned int *availableSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IDeckLinkEncoderInputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkEncoderInputVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkEncoderInput * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkEncoderInput * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkEncoderInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkEncoderInput * This, + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedCodec, + /* [in] */ unsigned int requestedCodecProfile, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkEncoderInput * This, + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkEncoderInput * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, EnableVideoInput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( + IDeckLinkEncoderInput * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, DisableVideoInput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( + IDeckLinkEncoderInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, GetAvailablePacketsCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailablePacketsCount )( + IDeckLinkEncoderInput * This, + /* [out] */ unsigned int *availablePacketsCount); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, EnableAudioInput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( + IDeckLinkEncoderInput * This, + /* [in] */ BMDAudioFormat audioFormat, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, DisableAudioInput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( + IDeckLinkEncoderInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, GetAvailableAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( + IDeckLinkEncoderInput * This, + /* [out] */ unsigned int *availableSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, StartStreams) + HRESULT ( STDMETHODCALLTYPE *StartStreams )( + IDeckLinkEncoderInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, StopStreams) + HRESULT ( STDMETHODCALLTYPE *StopStreams )( + IDeckLinkEncoderInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, PauseStreams) + HRESULT ( STDMETHODCALLTYPE *PauseStreams )( + IDeckLinkEncoderInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, FlushStreams) + HRESULT ( STDMETHODCALLTYPE *FlushStreams )( + IDeckLinkEncoderInput * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkEncoderInput * This, + /* [in] */ IDeckLinkEncoderInputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkEncoderInput * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + END_INTERFACE + } IDeckLinkEncoderInputVtbl; + + interface IDeckLinkEncoderInput + { + CONST_VTBL struct IDeckLinkEncoderInputVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkEncoderInput_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkEncoderInput_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkEncoderInput_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkEncoderInput_DoesSupportVideoMode(This,connection,requestedMode,requestedCodec,requestedCodecProfile,flags,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedCodec,requestedCodecProfile,flags,supported) ) + +#define IDeckLinkEncoderInput_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkEncoderInput_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkEncoderInput_EnableVideoInput(This,displayMode,pixelFormat,flags) \ + ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) + +#define IDeckLinkEncoderInput_DisableVideoInput(This) \ + ( (This)->lpVtbl -> DisableVideoInput(This) ) + +#define IDeckLinkEncoderInput_GetAvailablePacketsCount(This,availablePacketsCount) \ + ( (This)->lpVtbl -> GetAvailablePacketsCount(This,availablePacketsCount) ) + +#define IDeckLinkEncoderInput_EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount) \ + ( (This)->lpVtbl -> EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount) ) + +#define IDeckLinkEncoderInput_DisableAudioInput(This) \ + ( (This)->lpVtbl -> DisableAudioInput(This) ) + +#define IDeckLinkEncoderInput_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) \ + ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) + +#define IDeckLinkEncoderInput_StartStreams(This) \ + ( (This)->lpVtbl -> StartStreams(This) ) + +#define IDeckLinkEncoderInput_StopStreams(This) \ + ( (This)->lpVtbl -> StopStreams(This) ) + +#define IDeckLinkEncoderInput_PauseStreams(This) \ + ( (This)->lpVtbl -> PauseStreams(This) ) + +#define IDeckLinkEncoderInput_FlushStreams(This) \ + ( (This)->lpVtbl -> FlushStreams(This) ) + +#define IDeckLinkEncoderInput_SetCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetCallback(This,theCallback) ) + +#define IDeckLinkEncoderInput_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkEncoderInput_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBuffer_INTERFACE_DEFINED__ +#define __IDeckLinkVideoBuffer_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoBuffer */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoBuffer; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("81F03D70-DE13-4B17-873A-C8AC9689C682") + IDeckLinkVideoBuffer : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [out] */ void **buffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetSize( + /* [out] */ ULONGLONG *size) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartAccess( + /* [in] */ BMDBufferAccessFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndAccess( + /* [in] */ BMDBufferAccessFlags flags) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoBufferVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoBuffer * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoBuffer * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoBuffer * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBuffer, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkVideoBuffer * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBuffer, GetSize) + HRESULT ( STDMETHODCALLTYPE *GetSize )( + IDeckLinkVideoBuffer * This, + /* [out] */ ULONGLONG *size); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBuffer, StartAccess) + HRESULT ( STDMETHODCALLTYPE *StartAccess )( + IDeckLinkVideoBuffer * This, + /* [in] */ BMDBufferAccessFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBuffer, EndAccess) + HRESULT ( STDMETHODCALLTYPE *EndAccess )( + IDeckLinkVideoBuffer * This, + /* [in] */ BMDBufferAccessFlags flags); + + END_INTERFACE + } IDeckLinkVideoBufferVtbl; + + interface IDeckLinkVideoBuffer + { + CONST_VTBL struct IDeckLinkVideoBufferVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoBuffer_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoBuffer_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoBuffer_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoBuffer_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IDeckLinkVideoBuffer_GetSize(This,size) \ + ( (This)->lpVtbl -> GetSize(This,size) ) + +#define IDeckLinkVideoBuffer_StartAccess(This,flags) \ + ( (This)->lpVtbl -> StartAccess(This,flags) ) + +#define IDeckLinkVideoBuffer_EndAccess(This,flags) \ + ( (This)->lpVtbl -> EndAccess(This,flags) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoBuffer_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrame_INTERFACE_DEFINED__ +#define __IDeckLinkVideoFrame_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoFrame */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoFrame; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6502091C-615F-4F51-BAF6-45C4256DD5B0") + IDeckLinkVideoFrame : public IUnknown + { + public: + virtual long STDMETHODCALLTYPE GetWidth( void) = 0; + + virtual long STDMETHODCALLTYPE GetHeight( void) = 0; + + virtual long STDMETHODCALLTYPE GetRowBytes( void) = 0; + + virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0; + + virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimecode( + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAncillaryData( + /* [out] */ IDeckLinkVideoFrameAncillary **ancillary) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoFrameVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoFrame * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoFrame * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetWidth) + long ( STDMETHODCALLTYPE *GetWidth )( + IDeckLinkVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetHeight) + long ( STDMETHODCALLTYPE *GetHeight )( + IDeckLinkVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetRowBytes) + long ( STDMETHODCALLTYPE *GetRowBytes )( + IDeckLinkVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetPixelFormat) + BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( + IDeckLinkVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetFlags) + BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( + IDeckLinkVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetTimecode) + HRESULT ( STDMETHODCALLTYPE *GetTimecode )( + IDeckLinkVideoFrame * This, + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetAncillaryData) + HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( + IDeckLinkVideoFrame * This, + /* [out] */ IDeckLinkVideoFrameAncillary **ancillary); + + END_INTERFACE + } IDeckLinkVideoFrameVtbl; + + interface IDeckLinkVideoFrame + { + CONST_VTBL struct IDeckLinkVideoFrameVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoFrame_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoFrame_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoFrame_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoFrame_GetWidth(This) \ + ( (This)->lpVtbl -> GetWidth(This) ) + +#define IDeckLinkVideoFrame_GetHeight(This) \ + ( (This)->lpVtbl -> GetHeight(This) ) + +#define IDeckLinkVideoFrame_GetRowBytes(This) \ + ( (This)->lpVtbl -> GetRowBytes(This) ) + +#define IDeckLinkVideoFrame_GetPixelFormat(This) \ + ( (This)->lpVtbl -> GetPixelFormat(This) ) + +#define IDeckLinkVideoFrame_GetFlags(This) \ + ( (This)->lpVtbl -> GetFlags(This) ) + +#define IDeckLinkVideoFrame_GetTimecode(This,format,timecode) \ + ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) + +#define IDeckLinkVideoFrame_GetAncillaryData(This,ancillary) \ + ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoFrame_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkMutableVideoFrame_INTERFACE_DEFINED__ +#define __IDeckLinkMutableVideoFrame_INTERFACE_DEFINED__ + +/* interface IDeckLinkMutableVideoFrame */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkMutableVideoFrame; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CF9EB134-0374-4C5B-95FA-1EC14819FF62") + IDeckLinkMutableVideoFrame : public IDeckLinkVideoFrame + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFlags( + /* [in] */ BMDFrameFlags newFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimecode( + /* [in] */ BMDTimecodeFormat format, + /* [in] */ IDeckLinkTimecode *timecode) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimecodeFromComponents( + /* [in] */ BMDTimecodeFormat format, + /* [in] */ unsigned char hours, + /* [in] */ unsigned char minutes, + /* [in] */ unsigned char seconds, + /* [in] */ unsigned char frames, + /* [in] */ BMDTimecodeFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAncillaryData( + /* [in] */ IDeckLinkVideoFrameAncillary *ancillary) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimecodeUserBits( + /* [in] */ BMDTimecodeFormat format, + /* [in] */ BMDTimecodeUserBits userBits) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInterfaceProvider( + /* [in] */ REFIID iid, + /* [in] */ IUnknown *iface) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkMutableVideoFrameVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkMutableVideoFrame * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkMutableVideoFrame * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkMutableVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetWidth) + long ( STDMETHODCALLTYPE *GetWidth )( + IDeckLinkMutableVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetHeight) + long ( STDMETHODCALLTYPE *GetHeight )( + IDeckLinkMutableVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetRowBytes) + long ( STDMETHODCALLTYPE *GetRowBytes )( + IDeckLinkMutableVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetPixelFormat) + BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( + IDeckLinkMutableVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetFlags) + BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( + IDeckLinkMutableVideoFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetTimecode) + HRESULT ( STDMETHODCALLTYPE *GetTimecode )( + IDeckLinkMutableVideoFrame * This, + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetAncillaryData) + HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( + IDeckLinkMutableVideoFrame * This, + /* [out] */ IDeckLinkVideoFrameAncillary **ancillary); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame, SetFlags) + HRESULT ( STDMETHODCALLTYPE *SetFlags )( + IDeckLinkMutableVideoFrame * This, + /* [in] */ BMDFrameFlags newFlags); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame, SetTimecode) + HRESULT ( STDMETHODCALLTYPE *SetTimecode )( + IDeckLinkMutableVideoFrame * This, + /* [in] */ BMDTimecodeFormat format, + /* [in] */ IDeckLinkTimecode *timecode); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame, SetTimecodeFromComponents) + HRESULT ( STDMETHODCALLTYPE *SetTimecodeFromComponents )( + IDeckLinkMutableVideoFrame * This, + /* [in] */ BMDTimecodeFormat format, + /* [in] */ unsigned char hours, + /* [in] */ unsigned char minutes, + /* [in] */ unsigned char seconds, + /* [in] */ unsigned char frames, + /* [in] */ BMDTimecodeFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame, SetAncillaryData) + HRESULT ( STDMETHODCALLTYPE *SetAncillaryData )( + IDeckLinkMutableVideoFrame * This, + /* [in] */ IDeckLinkVideoFrameAncillary *ancillary); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame, SetTimecodeUserBits) + HRESULT ( STDMETHODCALLTYPE *SetTimecodeUserBits )( + IDeckLinkMutableVideoFrame * This, + /* [in] */ BMDTimecodeFormat format, + /* [in] */ BMDTimecodeUserBits userBits); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame, SetInterfaceProvider) + HRESULT ( STDMETHODCALLTYPE *SetInterfaceProvider )( + IDeckLinkMutableVideoFrame * This, + /* [in] */ REFIID iid, + /* [in] */ IUnknown *iface); + + END_INTERFACE + } IDeckLinkMutableVideoFrameVtbl; + + interface IDeckLinkMutableVideoFrame + { + CONST_VTBL struct IDeckLinkMutableVideoFrameVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkMutableVideoFrame_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkMutableVideoFrame_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkMutableVideoFrame_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkMutableVideoFrame_GetWidth(This) \ + ( (This)->lpVtbl -> GetWidth(This) ) + +#define IDeckLinkMutableVideoFrame_GetHeight(This) \ + ( (This)->lpVtbl -> GetHeight(This) ) + +#define IDeckLinkMutableVideoFrame_GetRowBytes(This) \ + ( (This)->lpVtbl -> GetRowBytes(This) ) + +#define IDeckLinkMutableVideoFrame_GetPixelFormat(This) \ + ( (This)->lpVtbl -> GetPixelFormat(This) ) + +#define IDeckLinkMutableVideoFrame_GetFlags(This) \ + ( (This)->lpVtbl -> GetFlags(This) ) + +#define IDeckLinkMutableVideoFrame_GetTimecode(This,format,timecode) \ + ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) + +#define IDeckLinkMutableVideoFrame_GetAncillaryData(This,ancillary) \ + ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) + + +#define IDeckLinkMutableVideoFrame_SetFlags(This,newFlags) \ + ( (This)->lpVtbl -> SetFlags(This,newFlags) ) + +#define IDeckLinkMutableVideoFrame_SetTimecode(This,format,timecode) \ + ( (This)->lpVtbl -> SetTimecode(This,format,timecode) ) + +#define IDeckLinkMutableVideoFrame_SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags) \ + ( (This)->lpVtbl -> SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags) ) + +#define IDeckLinkMutableVideoFrame_SetAncillaryData(This,ancillary) \ + ( (This)->lpVtbl -> SetAncillaryData(This,ancillary) ) + +#define IDeckLinkMutableVideoFrame_SetTimecodeUserBits(This,format,userBits) \ + ( (This)->lpVtbl -> SetTimecodeUserBits(This,format,userBits) ) + +#define IDeckLinkMutableVideoFrame_SetInterfaceProvider(This,iid,iface) \ + ( (This)->lpVtbl -> SetInterfaceProvider(This,iid,iface) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkMutableVideoFrame_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__ +#define __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoFrame3DExtensions */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoFrame3DExtensions; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D4DBE9C6-B4D2-49D3-ABF2-B4E86C7391B0") + IDeckLinkVideoFrame3DExtensions : public IUnknown + { + public: + virtual BMDVideo3DPackingFormat STDMETHODCALLTYPE Get3DPackingFormat( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameForRightEye( + /* [out] */ IDeckLinkVideoFrame **rightEyeFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoFrame3DExtensionsVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoFrame3DExtensions * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoFrame3DExtensions * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoFrame3DExtensions * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame3DExtensions, Get3DPackingFormat) + BMDVideo3DPackingFormat ( STDMETHODCALLTYPE *Get3DPackingFormat )( + IDeckLinkVideoFrame3DExtensions * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame3DExtensions, GetFrameForRightEye) + HRESULT ( STDMETHODCALLTYPE *GetFrameForRightEye )( + IDeckLinkVideoFrame3DExtensions * This, + /* [out] */ IDeckLinkVideoFrame **rightEyeFrame); + + END_INTERFACE + } IDeckLinkVideoFrame3DExtensionsVtbl; + + interface IDeckLinkVideoFrame3DExtensions + { + CONST_VTBL struct IDeckLinkVideoFrame3DExtensionsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoFrame3DExtensions_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoFrame3DExtensions_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoFrame3DExtensions_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoFrame3DExtensions_Get3DPackingFormat(This) \ + ( (This)->lpVtbl -> Get3DPackingFormat(This) ) + +#define IDeckLinkVideoFrame3DExtensions_GetFrameForRightEye(This,rightEyeFrame) \ + ( (This)->lpVtbl -> GetFrameForRightEye(This,rightEyeFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoFrame3DExtensions_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameMetadataExtensions_INTERFACE_DEFINED__ +#define __IDeckLinkVideoFrameMetadataExtensions_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoFrameMetadataExtensions */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoFrameMetadataExtensions; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E232A5B7-4DB4-44C9-9152-F47C12E5F051") + IDeckLinkVideoFrameMetadataExtensions : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoFrameMetadataExtensionsVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoFrameMetadataExtensions * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoFrameMetadataExtensions * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoFrameMetadataExtensions * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkVideoFrameMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkVideoFrameMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkVideoFrameMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkVideoFrameMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkVideoFrameMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize); + + END_INTERFACE + } IDeckLinkVideoFrameMetadataExtensionsVtbl; + + interface IDeckLinkVideoFrameMetadataExtensions + { + CONST_VTBL struct IDeckLinkVideoFrameMetadataExtensionsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoFrameMetadataExtensions_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoFrameMetadataExtensions_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoFrameMetadataExtensions_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoFrameMetadataExtensions_GetInt(This,metadataID,value) \ + ( (This)->lpVtbl -> GetInt(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMetadataExtensions_GetFloat(This,metadataID,value) \ + ( (This)->lpVtbl -> GetFloat(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMetadataExtensions_GetFlag(This,metadataID,value) \ + ( (This)->lpVtbl -> GetFlag(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMetadataExtensions_GetString(This,metadataID,value) \ + ( (This)->lpVtbl -> GetString(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMetadataExtensions_GetBytes(This,metadataID,buffer,bufferSize) \ + ( (This)->lpVtbl -> GetBytes(This,metadataID,buffer,bufferSize) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoFrameMetadataExtensions_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameMutableMetadataExtensions_INTERFACE_DEFINED__ +#define __IDeckLinkVideoFrameMutableMetadataExtensions_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoFrameMutableMetadataExtensions */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoFrameMutableMetadataExtensions; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CC198FC6-8298-4419-942D-8357EC355E58") + IDeckLinkVideoFrameMutableMetadataExtensions : public IDeckLinkVideoFrameMetadataExtensions + { + public: + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [in] */ BSTR value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetBytes( + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [in] */ void *buffer, + /* [in] */ unsigned int bufferSize) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoFrameMutableMetadataExtensionsVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoFrameMutableMetadataExtensions * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoFrameMutableMetadataExtensions * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMutableMetadataExtensions, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMutableMetadataExtensions, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMutableMetadataExtensions, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMutableMetadataExtensions, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [in] */ BSTR value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMutableMetadataExtensions, SetBytes) + HRESULT ( STDMETHODCALLTYPE *SetBytes )( + IDeckLinkVideoFrameMutableMetadataExtensions * This, + /* [in] */ BMDDeckLinkFrameMetadataID metadataID, + /* [in] */ void *buffer, + /* [in] */ unsigned int bufferSize); + + END_INTERFACE + } IDeckLinkVideoFrameMutableMetadataExtensionsVtbl; + + interface IDeckLinkVideoFrameMutableMetadataExtensions + { + CONST_VTBL struct IDeckLinkVideoFrameMutableMetadataExtensionsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoFrameMutableMetadataExtensions_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoFrameMutableMetadataExtensions_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoFrameMutableMetadataExtensions_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoFrameMutableMetadataExtensions_GetInt(This,metadataID,value) \ + ( (This)->lpVtbl -> GetInt(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMutableMetadataExtensions_GetFloat(This,metadataID,value) \ + ( (This)->lpVtbl -> GetFloat(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMutableMetadataExtensions_GetFlag(This,metadataID,value) \ + ( (This)->lpVtbl -> GetFlag(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMutableMetadataExtensions_GetString(This,metadataID,value) \ + ( (This)->lpVtbl -> GetString(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMutableMetadataExtensions_GetBytes(This,metadataID,buffer,bufferSize) \ + ( (This)->lpVtbl -> GetBytes(This,metadataID,buffer,bufferSize) ) + + +#define IDeckLinkVideoFrameMutableMetadataExtensions_SetInt(This,metadataID,value) \ + ( (This)->lpVtbl -> SetInt(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMutableMetadataExtensions_SetFloat(This,metadataID,value) \ + ( (This)->lpVtbl -> SetFloat(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMutableMetadataExtensions_SetFlag(This,metadataID,value) \ + ( (This)->lpVtbl -> SetFlag(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMutableMetadataExtensions_SetString(This,metadataID,value) \ + ( (This)->lpVtbl -> SetString(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMutableMetadataExtensions_SetBytes(This,metadataID,buffer,bufferSize) \ + ( (This)->lpVtbl -> SetBytes(This,metadataID,buffer,bufferSize) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoFrameMutableMetadataExtensions_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__ +#define __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoInputFrame */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoInputFrame; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C9ADD3D2-BE52-488D-AB2D-7FDEF7AF0C95") + IDeckLinkVideoInputFrame : public IDeckLinkVideoFrame + { + public: + virtual HRESULT STDMETHODCALLTYPE GetStreamTime( + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceTimestamp( + /* [in] */ BMDTimeScale timeScale, + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoInputFrameVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoInputFrame * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoInputFrame * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoInputFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetWidth) + long ( STDMETHODCALLTYPE *GetWidth )( + IDeckLinkVideoInputFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetHeight) + long ( STDMETHODCALLTYPE *GetHeight )( + IDeckLinkVideoInputFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetRowBytes) + long ( STDMETHODCALLTYPE *GetRowBytes )( + IDeckLinkVideoInputFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetPixelFormat) + BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( + IDeckLinkVideoInputFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetFlags) + BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( + IDeckLinkVideoInputFrame * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetTimecode) + HRESULT ( STDMETHODCALLTYPE *GetTimecode )( + IDeckLinkVideoInputFrame * This, + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame, GetAncillaryData) + HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( + IDeckLinkVideoInputFrame * This, + /* [out] */ IDeckLinkVideoFrameAncillary **ancillary); + + DECLSPEC_XFGVIRT(IDeckLinkVideoInputFrame, GetStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( + IDeckLinkVideoInputFrame * This, + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkVideoInputFrame, GetHardwareReferenceTimestamp) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceTimestamp )( + IDeckLinkVideoInputFrame * This, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration); + + END_INTERFACE + } IDeckLinkVideoInputFrameVtbl; + + interface IDeckLinkVideoInputFrame + { + CONST_VTBL struct IDeckLinkVideoInputFrameVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoInputFrame_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoInputFrame_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoInputFrame_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoInputFrame_GetWidth(This) \ + ( (This)->lpVtbl -> GetWidth(This) ) + +#define IDeckLinkVideoInputFrame_GetHeight(This) \ + ( (This)->lpVtbl -> GetHeight(This) ) + +#define IDeckLinkVideoInputFrame_GetRowBytes(This) \ + ( (This)->lpVtbl -> GetRowBytes(This) ) + +#define IDeckLinkVideoInputFrame_GetPixelFormat(This) \ + ( (This)->lpVtbl -> GetPixelFormat(This) ) + +#define IDeckLinkVideoInputFrame_GetFlags(This) \ + ( (This)->lpVtbl -> GetFlags(This) ) + +#define IDeckLinkVideoInputFrame_GetTimecode(This,format,timecode) \ + ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) + +#define IDeckLinkVideoInputFrame_GetAncillaryData(This,ancillary) \ + ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) + + +#define IDeckLinkVideoInputFrame_GetStreamTime(This,frameTime,frameDuration,timeScale) \ + ( (This)->lpVtbl -> GetStreamTime(This,frameTime,frameDuration,timeScale) ) + +#define IDeckLinkVideoInputFrame_GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) \ + ( (This)->lpVtbl -> GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoInputFrame_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkAncillaryPacket_INTERFACE_DEFINED__ +#define __IDeckLinkAncillaryPacket_INTERFACE_DEFINED__ + +/* interface IDeckLinkAncillaryPacket */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkAncillaryPacket; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F5C0D498-5CD3-4C77-9773-8EFA20BB334B") + IDeckLinkAncillaryPacket : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [in] */ BMDAncillaryPacketFormat format, + /* [out] */ const void **data, + /* [out] */ unsigned int *size) = 0; + + virtual unsigned char STDMETHODCALLTYPE GetDID( void) = 0; + + virtual unsigned char STDMETHODCALLTYPE GetSDID( void) = 0; + + virtual unsigned int STDMETHODCALLTYPE GetLineNumber( void) = 0; + + virtual unsigned char STDMETHODCALLTYPE GetDataStreamIndex( void) = 0; + + virtual BMDAncillaryDataSpace STDMETHODCALLTYPE GetDataSpace( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkAncillaryPacketVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkAncillaryPacket * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkAncillaryPacket * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkAncillaryPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkAncillaryPacket * This, + /* [in] */ BMDAncillaryPacketFormat format, + /* [out] */ const void **data, + /* [out] */ unsigned int *size); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket, GetDID) + unsigned char ( STDMETHODCALLTYPE *GetDID )( + IDeckLinkAncillaryPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket, GetSDID) + unsigned char ( STDMETHODCALLTYPE *GetSDID )( + IDeckLinkAncillaryPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket, GetLineNumber) + unsigned int ( STDMETHODCALLTYPE *GetLineNumber )( + IDeckLinkAncillaryPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket, GetDataStreamIndex) + unsigned char ( STDMETHODCALLTYPE *GetDataStreamIndex )( + IDeckLinkAncillaryPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket, GetDataSpace) + BMDAncillaryDataSpace ( STDMETHODCALLTYPE *GetDataSpace )( + IDeckLinkAncillaryPacket * This); + + END_INTERFACE + } IDeckLinkAncillaryPacketVtbl; + + interface IDeckLinkAncillaryPacket + { + CONST_VTBL struct IDeckLinkAncillaryPacketVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkAncillaryPacket_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkAncillaryPacket_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkAncillaryPacket_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkAncillaryPacket_GetBytes(This,format,data,size) \ + ( (This)->lpVtbl -> GetBytes(This,format,data,size) ) + +#define IDeckLinkAncillaryPacket_GetDID(This) \ + ( (This)->lpVtbl -> GetDID(This) ) + +#define IDeckLinkAncillaryPacket_GetSDID(This) \ + ( (This)->lpVtbl -> GetSDID(This) ) + +#define IDeckLinkAncillaryPacket_GetLineNumber(This) \ + ( (This)->lpVtbl -> GetLineNumber(This) ) + +#define IDeckLinkAncillaryPacket_GetDataStreamIndex(This) \ + ( (This)->lpVtbl -> GetDataStreamIndex(This) ) + +#define IDeckLinkAncillaryPacket_GetDataSpace(This) \ + ( (This)->lpVtbl -> GetDataSpace(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkAncillaryPacket_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkAncillaryPacketIterator_INTERFACE_DEFINED__ +#define __IDeckLinkAncillaryPacketIterator_INTERFACE_DEFINED__ + +/* interface IDeckLinkAncillaryPacketIterator */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkAncillaryPacketIterator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("10F1AA88-54BE-42F7-B9F8-EC2F5F099551") + IDeckLinkAncillaryPacketIterator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [out] */ IDeckLinkAncillaryPacket **packet) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkAncillaryPacketIteratorVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkAncillaryPacketIterator * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkAncillaryPacketIterator * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkAncillaryPacketIterator * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacketIterator, Next) + HRESULT ( STDMETHODCALLTYPE *Next )( + IDeckLinkAncillaryPacketIterator * This, + /* [out] */ IDeckLinkAncillaryPacket **packet); + + END_INTERFACE + } IDeckLinkAncillaryPacketIteratorVtbl; + + interface IDeckLinkAncillaryPacketIterator + { + CONST_VTBL struct IDeckLinkAncillaryPacketIteratorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkAncillaryPacketIterator_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkAncillaryPacketIterator_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkAncillaryPacketIterator_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkAncillaryPacketIterator_Next(This,packet) \ + ( (This)->lpVtbl -> Next(This,packet) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkAncillaryPacketIterator_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameAncillaryPackets_INTERFACE_DEFINED__ +#define __IDeckLinkVideoFrameAncillaryPackets_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoFrameAncillaryPackets */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoFrameAncillaryPackets; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("8A72D630-8070-4D05-8A93-E60C40EE088A") + IDeckLinkVideoFrameAncillaryPackets : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetPacketIterator( + /* [out] */ IDeckLinkAncillaryPacketIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFirstPacketByID( + /* [in] */ unsigned char DID, + /* [in] */ unsigned char SDID, + /* [out] */ IDeckLinkAncillaryPacket **packet) = 0; + + virtual HRESULT STDMETHODCALLTYPE AttachPacket( + /* [in] */ IDeckLinkAncillaryPacket *packet) = 0; + + virtual HRESULT STDMETHODCALLTYPE DetachPacket( + /* [in] */ IDeckLinkAncillaryPacket *packet) = 0; + + virtual HRESULT STDMETHODCALLTYPE DetachAllPackets( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoFrameAncillaryPacketsVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoFrameAncillaryPackets * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoFrameAncillaryPackets * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoFrameAncillaryPackets * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillaryPackets, GetPacketIterator) + HRESULT ( STDMETHODCALLTYPE *GetPacketIterator )( + IDeckLinkVideoFrameAncillaryPackets * This, + /* [out] */ IDeckLinkAncillaryPacketIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillaryPackets, GetFirstPacketByID) + HRESULT ( STDMETHODCALLTYPE *GetFirstPacketByID )( + IDeckLinkVideoFrameAncillaryPackets * This, + /* [in] */ unsigned char DID, + /* [in] */ unsigned char SDID, + /* [out] */ IDeckLinkAncillaryPacket **packet); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillaryPackets, AttachPacket) + HRESULT ( STDMETHODCALLTYPE *AttachPacket )( + IDeckLinkVideoFrameAncillaryPackets * This, + /* [in] */ IDeckLinkAncillaryPacket *packet); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillaryPackets, DetachPacket) + HRESULT ( STDMETHODCALLTYPE *DetachPacket )( + IDeckLinkVideoFrameAncillaryPackets * This, + /* [in] */ IDeckLinkAncillaryPacket *packet); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillaryPackets, DetachAllPackets) + HRESULT ( STDMETHODCALLTYPE *DetachAllPackets )( + IDeckLinkVideoFrameAncillaryPackets * This); + + END_INTERFACE + } IDeckLinkVideoFrameAncillaryPacketsVtbl; + + interface IDeckLinkVideoFrameAncillaryPackets + { + CONST_VTBL struct IDeckLinkVideoFrameAncillaryPacketsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoFrameAncillaryPackets_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoFrameAncillaryPackets_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoFrameAncillaryPackets_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoFrameAncillaryPackets_GetPacketIterator(This,iterator) \ + ( (This)->lpVtbl -> GetPacketIterator(This,iterator) ) + +#define IDeckLinkVideoFrameAncillaryPackets_GetFirstPacketByID(This,DID,SDID,packet) \ + ( (This)->lpVtbl -> GetFirstPacketByID(This,DID,SDID,packet) ) + +#define IDeckLinkVideoFrameAncillaryPackets_AttachPacket(This,packet) \ + ( (This)->lpVtbl -> AttachPacket(This,packet) ) + +#define IDeckLinkVideoFrameAncillaryPackets_DetachPacket(This,packet) \ + ( (This)->lpVtbl -> DetachPacket(This,packet) ) + +#define IDeckLinkVideoFrameAncillaryPackets_DetachAllPackets(This) \ + ( (This)->lpVtbl -> DetachAllPackets(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoFrameAncillaryPackets_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameAncillary_INTERFACE_DEFINED__ +#define __IDeckLinkVideoFrameAncillary_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoFrameAncillary */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoFrameAncillary; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("732E723C-D1A4-4E29-9E8E-4A88797A0004") + IDeckLinkVideoFrameAncillary : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetBufferForVerticalBlankingLine( + /* [in] */ unsigned int lineNumber, + /* [out] */ void **buffer) = 0; + + virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0; + + virtual BMDDisplayMode STDMETHODCALLTYPE GetDisplayMode( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoFrameAncillaryVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoFrameAncillary * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoFrameAncillary * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoFrameAncillary * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillary, GetBufferForVerticalBlankingLine) + HRESULT ( STDMETHODCALLTYPE *GetBufferForVerticalBlankingLine )( + IDeckLinkVideoFrameAncillary * This, + /* [in] */ unsigned int lineNumber, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillary, GetPixelFormat) + BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( + IDeckLinkVideoFrameAncillary * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillary, GetDisplayMode) + BMDDisplayMode ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkVideoFrameAncillary * This); + + END_INTERFACE + } IDeckLinkVideoFrameAncillaryVtbl; + + interface IDeckLinkVideoFrameAncillary + { + CONST_VTBL struct IDeckLinkVideoFrameAncillaryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoFrameAncillary_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoFrameAncillary_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoFrameAncillary_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoFrameAncillary_GetBufferForVerticalBlankingLine(This,lineNumber,buffer) \ + ( (This)->lpVtbl -> GetBufferForVerticalBlankingLine(This,lineNumber,buffer) ) + +#define IDeckLinkVideoFrameAncillary_GetPixelFormat(This) \ + ( (This)->lpVtbl -> GetPixelFormat(This) ) + +#define IDeckLinkVideoFrameAncillary_GetDisplayMode(This) \ + ( (This)->lpVtbl -> GetDisplayMode(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoFrameAncillary_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderPacket_INTERFACE_DEFINED__ +#define __IDeckLinkEncoderPacket_INTERFACE_DEFINED__ + +/* interface IDeckLinkEncoderPacket */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkEncoderPacket; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B693F36C-316E-4AF1-B6C2-F389A4BCA620") + IDeckLinkEncoderPacket : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [out] */ void **buffer) = 0; + + virtual long STDMETHODCALLTYPE GetSize( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStreamTime( + /* [out] */ BMDTimeValue *frameTime, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual BMDPacketType STDMETHODCALLTYPE GetPacketType( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkEncoderPacketVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkEncoderPacket * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkEncoderPacket * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkEncoderPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkEncoderPacket * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetSize) + long ( STDMETHODCALLTYPE *GetSize )( + IDeckLinkEncoderPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( + IDeckLinkEncoderPacket * This, + /* [out] */ BMDTimeValue *frameTime, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetPacketType) + BMDPacketType ( STDMETHODCALLTYPE *GetPacketType )( + IDeckLinkEncoderPacket * This); + + END_INTERFACE + } IDeckLinkEncoderPacketVtbl; + + interface IDeckLinkEncoderPacket + { + CONST_VTBL struct IDeckLinkEncoderPacketVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkEncoderPacket_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkEncoderPacket_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkEncoderPacket_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkEncoderPacket_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IDeckLinkEncoderPacket_GetSize(This) \ + ( (This)->lpVtbl -> GetSize(This) ) + +#define IDeckLinkEncoderPacket_GetStreamTime(This,frameTime,timeScale) \ + ( (This)->lpVtbl -> GetStreamTime(This,frameTime,timeScale) ) + +#define IDeckLinkEncoderPacket_GetPacketType(This) \ + ( (This)->lpVtbl -> GetPacketType(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkEncoderPacket_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderVideoPacket_INTERFACE_DEFINED__ +#define __IDeckLinkEncoderVideoPacket_INTERFACE_DEFINED__ + +/* interface IDeckLinkEncoderVideoPacket */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkEncoderVideoPacket; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4E7FD944-E8C7-4EAC-B8C0-7B77F80F5AE0") + IDeckLinkEncoderVideoPacket : public IDeckLinkEncoderPacket + { + public: + virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceTimestamp( + /* [in] */ BMDTimeScale timeScale, + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimecode( + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkEncoderVideoPacketVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkEncoderVideoPacket * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkEncoderVideoPacket * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkEncoderVideoPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkEncoderVideoPacket * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetSize) + long ( STDMETHODCALLTYPE *GetSize )( + IDeckLinkEncoderVideoPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( + IDeckLinkEncoderVideoPacket * This, + /* [out] */ BMDTimeValue *frameTime, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetPacketType) + BMDPacketType ( STDMETHODCALLTYPE *GetPacketType )( + IDeckLinkEncoderVideoPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderVideoPacket, GetPixelFormat) + BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( + IDeckLinkEncoderVideoPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderVideoPacket, GetHardwareReferenceTimestamp) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceTimestamp )( + IDeckLinkEncoderVideoPacket * This, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderVideoPacket, GetTimecode) + HRESULT ( STDMETHODCALLTYPE *GetTimecode )( + IDeckLinkEncoderVideoPacket * This, + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode); + + END_INTERFACE + } IDeckLinkEncoderVideoPacketVtbl; + + interface IDeckLinkEncoderVideoPacket + { + CONST_VTBL struct IDeckLinkEncoderVideoPacketVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkEncoderVideoPacket_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkEncoderVideoPacket_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkEncoderVideoPacket_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkEncoderVideoPacket_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IDeckLinkEncoderVideoPacket_GetSize(This) \ + ( (This)->lpVtbl -> GetSize(This) ) + +#define IDeckLinkEncoderVideoPacket_GetStreamTime(This,frameTime,timeScale) \ + ( (This)->lpVtbl -> GetStreamTime(This,frameTime,timeScale) ) + +#define IDeckLinkEncoderVideoPacket_GetPacketType(This) \ + ( (This)->lpVtbl -> GetPacketType(This) ) + + +#define IDeckLinkEncoderVideoPacket_GetPixelFormat(This) \ + ( (This)->lpVtbl -> GetPixelFormat(This) ) + +#define IDeckLinkEncoderVideoPacket_GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) \ + ( (This)->lpVtbl -> GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) ) + +#define IDeckLinkEncoderVideoPacket_GetTimecode(This,format,timecode) \ + ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkEncoderVideoPacket_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderAudioPacket_INTERFACE_DEFINED__ +#define __IDeckLinkEncoderAudioPacket_INTERFACE_DEFINED__ + +/* interface IDeckLinkEncoderAudioPacket */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkEncoderAudioPacket; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("49E8EDC8-693B-4E14-8EF6-12C658F5A07A") + IDeckLinkEncoderAudioPacket : public IDeckLinkEncoderPacket + { + public: + virtual BMDAudioFormat STDMETHODCALLTYPE GetAudioFormat( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkEncoderAudioPacketVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkEncoderAudioPacket * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkEncoderAudioPacket * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkEncoderAudioPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkEncoderAudioPacket * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetSize) + long ( STDMETHODCALLTYPE *GetSize )( + IDeckLinkEncoderAudioPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( + IDeckLinkEncoderAudioPacket * This, + /* [out] */ BMDTimeValue *frameTime, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetPacketType) + BMDPacketType ( STDMETHODCALLTYPE *GetPacketType )( + IDeckLinkEncoderAudioPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderAudioPacket, GetAudioFormat) + BMDAudioFormat ( STDMETHODCALLTYPE *GetAudioFormat )( + IDeckLinkEncoderAudioPacket * This); + + END_INTERFACE + } IDeckLinkEncoderAudioPacketVtbl; + + interface IDeckLinkEncoderAudioPacket + { + CONST_VTBL struct IDeckLinkEncoderAudioPacketVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkEncoderAudioPacket_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkEncoderAudioPacket_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkEncoderAudioPacket_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkEncoderAudioPacket_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IDeckLinkEncoderAudioPacket_GetSize(This) \ + ( (This)->lpVtbl -> GetSize(This) ) + +#define IDeckLinkEncoderAudioPacket_GetStreamTime(This,frameTime,timeScale) \ + ( (This)->lpVtbl -> GetStreamTime(This,frameTime,timeScale) ) + +#define IDeckLinkEncoderAudioPacket_GetPacketType(This) \ + ( (This)->lpVtbl -> GetPacketType(This) ) + + +#define IDeckLinkEncoderAudioPacket_GetAudioFormat(This) \ + ( (This)->lpVtbl -> GetAudioFormat(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkEncoderAudioPacket_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkH265NALPacket_INTERFACE_DEFINED__ +#define __IDeckLinkH265NALPacket_INTERFACE_DEFINED__ + +/* interface IDeckLinkH265NALPacket */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkH265NALPacket; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("639C8E0B-68D5-4BDE-A6D4-95F3AEAFF2E7") + IDeckLinkH265NALPacket : public IDeckLinkEncoderVideoPacket + { + public: + virtual HRESULT STDMETHODCALLTYPE GetUnitType( + /* [out] */ unsigned char *unitType) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytesNoPrefix( + /* [out] */ void **buffer) = 0; + + virtual long STDMETHODCALLTYPE GetSizeNoPrefix( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkH265NALPacketVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkH265NALPacket * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkH265NALPacket * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkH265NALPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkH265NALPacket * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetSize) + long ( STDMETHODCALLTYPE *GetSize )( + IDeckLinkH265NALPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( + IDeckLinkH265NALPacket * This, + /* [out] */ BMDTimeValue *frameTime, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderPacket, GetPacketType) + BMDPacketType ( STDMETHODCALLTYPE *GetPacketType )( + IDeckLinkH265NALPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderVideoPacket, GetPixelFormat) + BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( + IDeckLinkH265NALPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderVideoPacket, GetHardwareReferenceTimestamp) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceTimestamp )( + IDeckLinkH265NALPacket * This, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderVideoPacket, GetTimecode) + HRESULT ( STDMETHODCALLTYPE *GetTimecode )( + IDeckLinkH265NALPacket * This, + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode); + + DECLSPEC_XFGVIRT(IDeckLinkH265NALPacket, GetUnitType) + HRESULT ( STDMETHODCALLTYPE *GetUnitType )( + IDeckLinkH265NALPacket * This, + /* [out] */ unsigned char *unitType); + + DECLSPEC_XFGVIRT(IDeckLinkH265NALPacket, GetBytesNoPrefix) + HRESULT ( STDMETHODCALLTYPE *GetBytesNoPrefix )( + IDeckLinkH265NALPacket * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkH265NALPacket, GetSizeNoPrefix) + long ( STDMETHODCALLTYPE *GetSizeNoPrefix )( + IDeckLinkH265NALPacket * This); + + END_INTERFACE + } IDeckLinkH265NALPacketVtbl; + + interface IDeckLinkH265NALPacket + { + CONST_VTBL struct IDeckLinkH265NALPacketVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkH265NALPacket_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkH265NALPacket_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkH265NALPacket_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkH265NALPacket_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IDeckLinkH265NALPacket_GetSize(This) \ + ( (This)->lpVtbl -> GetSize(This) ) + +#define IDeckLinkH265NALPacket_GetStreamTime(This,frameTime,timeScale) \ + ( (This)->lpVtbl -> GetStreamTime(This,frameTime,timeScale) ) + +#define IDeckLinkH265NALPacket_GetPacketType(This) \ + ( (This)->lpVtbl -> GetPacketType(This) ) + + +#define IDeckLinkH265NALPacket_GetPixelFormat(This) \ + ( (This)->lpVtbl -> GetPixelFormat(This) ) + +#define IDeckLinkH265NALPacket_GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) \ + ( (This)->lpVtbl -> GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) ) + +#define IDeckLinkH265NALPacket_GetTimecode(This,format,timecode) \ + ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) + + +#define IDeckLinkH265NALPacket_GetUnitType(This,unitType) \ + ( (This)->lpVtbl -> GetUnitType(This,unitType) ) + +#define IDeckLinkH265NALPacket_GetBytesNoPrefix(This,buffer) \ + ( (This)->lpVtbl -> GetBytesNoPrefix(This,buffer) ) + +#define IDeckLinkH265NALPacket_GetSizeNoPrefix(This) \ + ( (This)->lpVtbl -> GetSizeNoPrefix(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkH265NALPacket_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkAudioInputPacket_INTERFACE_DEFINED__ +#define __IDeckLinkAudioInputPacket_INTERFACE_DEFINED__ + +/* interface IDeckLinkAudioInputPacket */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkAudioInputPacket; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("E43D5870-2894-11DE-8C30-0800200C9A66") + IDeckLinkAudioInputPacket : public IUnknown + { + public: + virtual long STDMETHODCALLTYPE GetSampleFrameCount( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [out] */ void **buffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPacketTime( + /* [out] */ BMDTimeValue *packetTime, + /* [in] */ BMDTimeScale timeScale) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkAudioInputPacketVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkAudioInputPacket * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkAudioInputPacket * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkAudioInputPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkAudioInputPacket, GetSampleFrameCount) + long ( STDMETHODCALLTYPE *GetSampleFrameCount )( + IDeckLinkAudioInputPacket * This); + + DECLSPEC_XFGVIRT(IDeckLinkAudioInputPacket, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkAudioInputPacket * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkAudioInputPacket, GetPacketTime) + HRESULT ( STDMETHODCALLTYPE *GetPacketTime )( + IDeckLinkAudioInputPacket * This, + /* [out] */ BMDTimeValue *packetTime, + /* [in] */ BMDTimeScale timeScale); + + END_INTERFACE + } IDeckLinkAudioInputPacketVtbl; + + interface IDeckLinkAudioInputPacket + { + CONST_VTBL struct IDeckLinkAudioInputPacketVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkAudioInputPacket_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkAudioInputPacket_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkAudioInputPacket_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkAudioInputPacket_GetSampleFrameCount(This) \ + ( (This)->lpVtbl -> GetSampleFrameCount(This) ) + +#define IDeckLinkAudioInputPacket_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IDeckLinkAudioInputPacket_GetPacketTime(This,packetTime,timeScale) \ + ( (This)->lpVtbl -> GetPacketTime(This,packetTime,timeScale) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkAudioInputPacket_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkScreenPreviewCallback_INTERFACE_DEFINED__ +#define __IDeckLinkScreenPreviewCallback_INTERFACE_DEFINED__ + +/* interface IDeckLinkScreenPreviewCallback */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkScreenPreviewCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D4FA2345-9FBA-4497-95C3-C0C3CED3CDA8") + IDeckLinkScreenPreviewCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DrawFrame( + /* [in] */ IDeckLinkVideoFrame *theFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkScreenPreviewCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkScreenPreviewCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkScreenPreviewCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkScreenPreviewCallback * This); + + DECLSPEC_XFGVIRT(IDeckLinkScreenPreviewCallback, DrawFrame) + HRESULT ( STDMETHODCALLTYPE *DrawFrame )( + IDeckLinkScreenPreviewCallback * This, + /* [in] */ IDeckLinkVideoFrame *theFrame); + + END_INTERFACE + } IDeckLinkScreenPreviewCallbackVtbl; + + interface IDeckLinkScreenPreviewCallback + { + CONST_VTBL struct IDeckLinkScreenPreviewCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkScreenPreviewCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkScreenPreviewCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkScreenPreviewCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkScreenPreviewCallback_DrawFrame(This,theFrame) \ + ( (This)->lpVtbl -> DrawFrame(This,theFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkScreenPreviewCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkGLScreenPreviewHelper_INTERFACE_DEFINED__ +#define __IDeckLinkGLScreenPreviewHelper_INTERFACE_DEFINED__ + +/* interface IDeckLinkGLScreenPreviewHelper */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkGLScreenPreviewHelper; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CEB778E2-C202-4EC8-9085-0CD285CC5522") + IDeckLinkGLScreenPreviewHelper : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE InitializeGL( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PaintGL( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFrame( + /* [in] */ IDeckLinkVideoFrame *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat( + /* [in] */ BMD3DPreviewFormat previewFormat) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkGLScreenPreviewHelperVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkGLScreenPreviewHelper * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkGLScreenPreviewHelper * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkGLScreenPreviewHelper * This); + + DECLSPEC_XFGVIRT(IDeckLinkGLScreenPreviewHelper, InitializeGL) + HRESULT ( STDMETHODCALLTYPE *InitializeGL )( + IDeckLinkGLScreenPreviewHelper * This); + + DECLSPEC_XFGVIRT(IDeckLinkGLScreenPreviewHelper, PaintGL) + HRESULT ( STDMETHODCALLTYPE *PaintGL )( + IDeckLinkGLScreenPreviewHelper * This); + + DECLSPEC_XFGVIRT(IDeckLinkGLScreenPreviewHelper, SetFrame) + HRESULT ( STDMETHODCALLTYPE *SetFrame )( + IDeckLinkGLScreenPreviewHelper * This, + /* [in] */ IDeckLinkVideoFrame *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkGLScreenPreviewHelper, Set3DPreviewFormat) + HRESULT ( STDMETHODCALLTYPE *Set3DPreviewFormat )( + IDeckLinkGLScreenPreviewHelper * This, + /* [in] */ BMD3DPreviewFormat previewFormat); + + END_INTERFACE + } IDeckLinkGLScreenPreviewHelperVtbl; + + interface IDeckLinkGLScreenPreviewHelper + { + CONST_VTBL struct IDeckLinkGLScreenPreviewHelperVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkGLScreenPreviewHelper_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkGLScreenPreviewHelper_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkGLScreenPreviewHelper_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkGLScreenPreviewHelper_InitializeGL(This) \ + ( (This)->lpVtbl -> InitializeGL(This) ) + +#define IDeckLinkGLScreenPreviewHelper_PaintGL(This) \ + ( (This)->lpVtbl -> PaintGL(This) ) + +#define IDeckLinkGLScreenPreviewHelper_SetFrame(This,theFrame) \ + ( (This)->lpVtbl -> SetFrame(This,theFrame) ) + +#define IDeckLinkGLScreenPreviewHelper_Set3DPreviewFormat(This,previewFormat) \ + ( (This)->lpVtbl -> Set3DPreviewFormat(This,previewFormat) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkGLScreenPreviewHelper_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkDX9ScreenPreviewHelper_INTERFACE_DEFINED__ +#define __IDeckLinkDX9ScreenPreviewHelper_INTERFACE_DEFINED__ + +/* interface IDeckLinkDX9ScreenPreviewHelper */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkDX9ScreenPreviewHelper; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F2DD78CA-2921-4AC2-B5BC-BFDCC2035A1F") + IDeckLinkDX9ScreenPreviewHelper : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Initialize( + /* [in] */ void *device) = 0; + + virtual HRESULT STDMETHODCALLTYPE Render( + /* [in] */ RECT *rc) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFrame( + /* [in] */ IDeckLinkVideoFrame *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat( + /* [in] */ BMD3DPreviewFormat previewFormat) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkDX9ScreenPreviewHelperVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkDX9ScreenPreviewHelper * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkDX9ScreenPreviewHelper * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkDX9ScreenPreviewHelper * This); + + DECLSPEC_XFGVIRT(IDeckLinkDX9ScreenPreviewHelper, Initialize) + HRESULT ( STDMETHODCALLTYPE *Initialize )( + IDeckLinkDX9ScreenPreviewHelper * This, + /* [in] */ void *device); + + DECLSPEC_XFGVIRT(IDeckLinkDX9ScreenPreviewHelper, Render) + HRESULT ( STDMETHODCALLTYPE *Render )( + IDeckLinkDX9ScreenPreviewHelper * This, + /* [in] */ RECT *rc); + + DECLSPEC_XFGVIRT(IDeckLinkDX9ScreenPreviewHelper, SetFrame) + HRESULT ( STDMETHODCALLTYPE *SetFrame )( + IDeckLinkDX9ScreenPreviewHelper * This, + /* [in] */ IDeckLinkVideoFrame *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkDX9ScreenPreviewHelper, Set3DPreviewFormat) + HRESULT ( STDMETHODCALLTYPE *Set3DPreviewFormat )( + IDeckLinkDX9ScreenPreviewHelper * This, + /* [in] */ BMD3DPreviewFormat previewFormat); + + END_INTERFACE + } IDeckLinkDX9ScreenPreviewHelperVtbl; + + interface IDeckLinkDX9ScreenPreviewHelper + { + CONST_VTBL struct IDeckLinkDX9ScreenPreviewHelperVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkDX9ScreenPreviewHelper_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkDX9ScreenPreviewHelper_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkDX9ScreenPreviewHelper_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkDX9ScreenPreviewHelper_Initialize(This,device) \ + ( (This)->lpVtbl -> Initialize(This,device) ) + +#define IDeckLinkDX9ScreenPreviewHelper_Render(This,rc) \ + ( (This)->lpVtbl -> Render(This,rc) ) + +#define IDeckLinkDX9ScreenPreviewHelper_SetFrame(This,theFrame) \ + ( (This)->lpVtbl -> SetFrame(This,theFrame) ) + +#define IDeckLinkDX9ScreenPreviewHelper_Set3DPreviewFormat(This,previewFormat) \ + ( (This)->lpVtbl -> Set3DPreviewFormat(This,previewFormat) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkDX9ScreenPreviewHelper_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkWPFDX9ScreenPreviewHelper_INTERFACE_DEFINED__ +#define __IDeckLinkWPFDX9ScreenPreviewHelper_INTERFACE_DEFINED__ + +/* interface IDeckLinkWPFDX9ScreenPreviewHelper */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkWPFDX9ScreenPreviewHelper; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C59346CD-9326-4266-AC2D-5C190F5799EE") + IDeckLinkWPFDX9ScreenPreviewHelper : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Initialize( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Render( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSurfaceSize( + /* [in] */ unsigned int width, + /* [in] */ unsigned int height) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFrame( + /* [in] */ IDeckLinkVideoFrame *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat( + /* [in] */ BMD3DPreviewFormat previewFormat) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBackBuffer( + /* [out] */ void **backBuffer) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkWPFDX9ScreenPreviewHelperVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkWPFDX9ScreenPreviewHelper * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkWPFDX9ScreenPreviewHelper * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkWPFDX9ScreenPreviewHelper * This); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper, Initialize) + HRESULT ( STDMETHODCALLTYPE *Initialize )( + IDeckLinkWPFDX9ScreenPreviewHelper * This); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper, Render) + HRESULT ( STDMETHODCALLTYPE *Render )( + IDeckLinkWPFDX9ScreenPreviewHelper * This); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper, SetSurfaceSize) + HRESULT ( STDMETHODCALLTYPE *SetSurfaceSize )( + IDeckLinkWPFDX9ScreenPreviewHelper * This, + /* [in] */ unsigned int width, + /* [in] */ unsigned int height); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper, SetFrame) + HRESULT ( STDMETHODCALLTYPE *SetFrame )( + IDeckLinkWPFDX9ScreenPreviewHelper * This, + /* [in] */ IDeckLinkVideoFrame *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper, Set3DPreviewFormat) + HRESULT ( STDMETHODCALLTYPE *Set3DPreviewFormat )( + IDeckLinkWPFDX9ScreenPreviewHelper * This, + /* [in] */ BMD3DPreviewFormat previewFormat); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper, GetBackBuffer) + HRESULT ( STDMETHODCALLTYPE *GetBackBuffer )( + IDeckLinkWPFDX9ScreenPreviewHelper * This, + /* [out] */ void **backBuffer); + + END_INTERFACE + } IDeckLinkWPFDX9ScreenPreviewHelperVtbl; + + interface IDeckLinkWPFDX9ScreenPreviewHelper + { + CONST_VTBL struct IDeckLinkWPFDX9ScreenPreviewHelperVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkWPFDX9ScreenPreviewHelper_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkWPFDX9ScreenPreviewHelper_Initialize(This) \ + ( (This)->lpVtbl -> Initialize(This) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_Render(This) \ + ( (This)->lpVtbl -> Render(This) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_SetSurfaceSize(This,width,height) \ + ( (This)->lpVtbl -> SetSurfaceSize(This,width,height) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_SetFrame(This,theFrame) \ + ( (This)->lpVtbl -> SetFrame(This,theFrame) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_Set3DPreviewFormat(This,previewFormat) \ + ( (This)->lpVtbl -> Set3DPreviewFormat(This,previewFormat) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_GetBackBuffer(This,backBuffer) \ + ( (This)->lpVtbl -> GetBackBuffer(This,backBuffer) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkWPFDX9ScreenPreviewHelper_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkNotificationCallback_INTERFACE_DEFINED__ +#define __IDeckLinkNotificationCallback_INTERFACE_DEFINED__ + +/* interface IDeckLinkNotificationCallback */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkNotificationCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("b002a1ec-070d-4288-8289-bd5d36e5ff0d") + IDeckLinkNotificationCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Notify( + /* [in] */ BMDNotifications topic, + /* [in] */ ULONGLONG param1, + /* [in] */ ULONGLONG param2) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkNotificationCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkNotificationCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkNotificationCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkNotificationCallback * This); + + DECLSPEC_XFGVIRT(IDeckLinkNotificationCallback, Notify) + HRESULT ( STDMETHODCALLTYPE *Notify )( + IDeckLinkNotificationCallback * This, + /* [in] */ BMDNotifications topic, + /* [in] */ ULONGLONG param1, + /* [in] */ ULONGLONG param2); + + END_INTERFACE + } IDeckLinkNotificationCallbackVtbl; + + interface IDeckLinkNotificationCallback + { + CONST_VTBL struct IDeckLinkNotificationCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkNotificationCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkNotificationCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkNotificationCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkNotificationCallback_Notify(This,topic,param1,param2) \ + ( (This)->lpVtbl -> Notify(This,topic,param1,param2) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkNotificationCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkNotification_INTERFACE_DEFINED__ +#define __IDeckLinkNotification_INTERFACE_DEFINED__ + +/* interface IDeckLinkNotification */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkNotification; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1d70faac-fd27-4866-9de6-0939d1e4c7f1") + IDeckLinkNotification : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Subscribe( + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE Unsubscribe( + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkNotificationVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkNotification * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkNotification * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkNotification * This); + + DECLSPEC_XFGVIRT(IDeckLinkNotification, Subscribe) + HRESULT ( STDMETHODCALLTYPE *Subscribe )( + IDeckLinkNotification * This, + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkNotification, Unsubscribe) + HRESULT ( STDMETHODCALLTYPE *Unsubscribe )( + IDeckLinkNotification * This, + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback); + + END_INTERFACE + } IDeckLinkNotificationVtbl; + + interface IDeckLinkNotification + { + CONST_VTBL struct IDeckLinkNotificationVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkNotification_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkNotification_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkNotification_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkNotification_Subscribe(This,topic,theCallback) \ + ( (This)->lpVtbl -> Subscribe(This,topic,theCallback) ) + +#define IDeckLinkNotification_Unsubscribe(This,topic,theCallback) \ + ( (This)->lpVtbl -> Unsubscribe(This,topic,theCallback) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkNotification_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkProfileAttributes_INTERFACE_DEFINED__ +#define __IDeckLinkProfileAttributes_INTERFACE_DEFINED__ + +/* interface IDeckLinkProfileAttributes */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkProfileAttributes; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F47551D7-AD22-47AF-BCFD-6BE88AA879D9") + IDeckLinkProfileAttributes : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStringWithParam( + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [in] */ ULONGLONG param, + /* [out] */ BSTR *value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkProfileAttributesVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkProfileAttributes * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkProfileAttributes * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkProfileAttributes * This); + + DECLSPEC_XFGVIRT(IDeckLinkProfileAttributes, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkProfileAttributes * This, + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkProfileAttributes, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkProfileAttributes * This, + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkProfileAttributes, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkProfileAttributes * This, + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkProfileAttributes, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkProfileAttributes * This, + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkProfileAttributes, GetStringWithParam) + HRESULT ( STDMETHODCALLTYPE *GetStringWithParam )( + IDeckLinkProfileAttributes * This, + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [in] */ ULONGLONG param, + /* [out] */ BSTR *value); + + END_INTERFACE + } IDeckLinkProfileAttributesVtbl; + + interface IDeckLinkProfileAttributes + { + CONST_VTBL struct IDeckLinkProfileAttributesVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkProfileAttributes_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkProfileAttributes_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkProfileAttributes_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkProfileAttributes_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkProfileAttributes_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkProfileAttributes_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkProfileAttributes_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IDeckLinkProfileAttributes_GetStringWithParam(This,cfgID,param,value) \ + ( (This)->lpVtbl -> GetStringWithParam(This,cfgID,param,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkProfileAttributes_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkProfileIterator_INTERFACE_DEFINED__ +#define __IDeckLinkProfileIterator_INTERFACE_DEFINED__ + +/* interface IDeckLinkProfileIterator */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkProfileIterator; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("29E5A8C0-8BE4-46EB-93AC-31DAAB5B7BF2") + IDeckLinkProfileIterator : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [out] */ IDeckLinkProfile **profile) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkProfileIteratorVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkProfileIterator * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkProfileIterator * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkProfileIterator * This); + + DECLSPEC_XFGVIRT(IDeckLinkProfileIterator, Next) + HRESULT ( STDMETHODCALLTYPE *Next )( + IDeckLinkProfileIterator * This, + /* [out] */ IDeckLinkProfile **profile); + + END_INTERFACE + } IDeckLinkProfileIteratorVtbl; + + interface IDeckLinkProfileIterator + { + CONST_VTBL struct IDeckLinkProfileIteratorVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkProfileIterator_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkProfileIterator_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkProfileIterator_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkProfileIterator_Next(This,profile) \ + ( (This)->lpVtbl -> Next(This,profile) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkProfileIterator_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkProfile_INTERFACE_DEFINED__ +#define __IDeckLinkProfile_INTERFACE_DEFINED__ + +/* interface IDeckLinkProfile */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkProfile; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("16093466-674A-432B-9DA0-1AC2C5A8241C") + IDeckLinkProfile : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetDevice( + /* [out] */ IDeckLink **device) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsActive( + /* [out] */ BOOL *isActive) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetActive( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetPeers( + /* [out] */ IDeckLinkProfileIterator **profileIterator) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkProfileVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkProfile * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkProfile * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkProfile * This); + + DECLSPEC_XFGVIRT(IDeckLinkProfile, GetDevice) + HRESULT ( STDMETHODCALLTYPE *GetDevice )( + IDeckLinkProfile * This, + /* [out] */ IDeckLink **device); + + DECLSPEC_XFGVIRT(IDeckLinkProfile, IsActive) + HRESULT ( STDMETHODCALLTYPE *IsActive )( + IDeckLinkProfile * This, + /* [out] */ BOOL *isActive); + + DECLSPEC_XFGVIRT(IDeckLinkProfile, SetActive) + HRESULT ( STDMETHODCALLTYPE *SetActive )( + IDeckLinkProfile * This); + + DECLSPEC_XFGVIRT(IDeckLinkProfile, GetPeers) + HRESULT ( STDMETHODCALLTYPE *GetPeers )( + IDeckLinkProfile * This, + /* [out] */ IDeckLinkProfileIterator **profileIterator); + + END_INTERFACE + } IDeckLinkProfileVtbl; + + interface IDeckLinkProfile + { + CONST_VTBL struct IDeckLinkProfileVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkProfile_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkProfile_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkProfile_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkProfile_GetDevice(This,device) \ + ( (This)->lpVtbl -> GetDevice(This,device) ) + +#define IDeckLinkProfile_IsActive(This,isActive) \ + ( (This)->lpVtbl -> IsActive(This,isActive) ) + +#define IDeckLinkProfile_SetActive(This) \ + ( (This)->lpVtbl -> SetActive(This) ) + +#define IDeckLinkProfile_GetPeers(This,profileIterator) \ + ( (This)->lpVtbl -> GetPeers(This,profileIterator) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkProfile_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkProfileCallback_INTERFACE_DEFINED__ +#define __IDeckLinkProfileCallback_INTERFACE_DEFINED__ + +/* interface IDeckLinkProfileCallback */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkProfileCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("A4F9341E-97AA-4E04-8935-15F809898CEA") + IDeckLinkProfileCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ProfileChanging( + /* [in] */ IDeckLinkProfile *profileToBeActivated, + /* [in] */ BOOL streamsWillBeForcedToStop) = 0; + + virtual HRESULT STDMETHODCALLTYPE ProfileActivated( + /* [in] */ IDeckLinkProfile *activatedProfile) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkProfileCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkProfileCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkProfileCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkProfileCallback * This); + + DECLSPEC_XFGVIRT(IDeckLinkProfileCallback, ProfileChanging) + HRESULT ( STDMETHODCALLTYPE *ProfileChanging )( + IDeckLinkProfileCallback * This, + /* [in] */ IDeckLinkProfile *profileToBeActivated, + /* [in] */ BOOL streamsWillBeForcedToStop); + + DECLSPEC_XFGVIRT(IDeckLinkProfileCallback, ProfileActivated) + HRESULT ( STDMETHODCALLTYPE *ProfileActivated )( + IDeckLinkProfileCallback * This, + /* [in] */ IDeckLinkProfile *activatedProfile); + + END_INTERFACE + } IDeckLinkProfileCallbackVtbl; + + interface IDeckLinkProfileCallback + { + CONST_VTBL struct IDeckLinkProfileCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkProfileCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkProfileCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkProfileCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkProfileCallback_ProfileChanging(This,profileToBeActivated,streamsWillBeForcedToStop) \ + ( (This)->lpVtbl -> ProfileChanging(This,profileToBeActivated,streamsWillBeForcedToStop) ) + +#define IDeckLinkProfileCallback_ProfileActivated(This,activatedProfile) \ + ( (This)->lpVtbl -> ProfileActivated(This,activatedProfile) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkProfileCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkProfileManager_INTERFACE_DEFINED__ +#define __IDeckLinkProfileManager_INTERFACE_DEFINED__ + +/* interface IDeckLinkProfileManager */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkProfileManager; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("30D41429-3998-4B6D-84F8-78C94A797C6E") + IDeckLinkProfileManager : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetProfiles( + /* [out] */ IDeckLinkProfileIterator **profileIterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetProfile( + /* [in] */ BMDProfileID profileID, + /* [out] */ IDeckLinkProfile **profile) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IDeckLinkProfileCallback *callback) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkProfileManagerVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkProfileManager * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkProfileManager * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkProfileManager * This); + + DECLSPEC_XFGVIRT(IDeckLinkProfileManager, GetProfiles) + HRESULT ( STDMETHODCALLTYPE *GetProfiles )( + IDeckLinkProfileManager * This, + /* [out] */ IDeckLinkProfileIterator **profileIterator); + + DECLSPEC_XFGVIRT(IDeckLinkProfileManager, GetProfile) + HRESULT ( STDMETHODCALLTYPE *GetProfile )( + IDeckLinkProfileManager * This, + /* [in] */ BMDProfileID profileID, + /* [out] */ IDeckLinkProfile **profile); + + DECLSPEC_XFGVIRT(IDeckLinkProfileManager, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkProfileManager * This, + /* [in] */ IDeckLinkProfileCallback *callback); + + END_INTERFACE + } IDeckLinkProfileManagerVtbl; + + interface IDeckLinkProfileManager + { + CONST_VTBL struct IDeckLinkProfileManagerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkProfileManager_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkProfileManager_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkProfileManager_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkProfileManager_GetProfiles(This,profileIterator) \ + ( (This)->lpVtbl -> GetProfiles(This,profileIterator) ) + +#define IDeckLinkProfileManager_GetProfile(This,profileID,profile) \ + ( (This)->lpVtbl -> GetProfile(This,profileID,profile) ) + +#define IDeckLinkProfileManager_SetCallback(This,callback) \ + ( (This)->lpVtbl -> SetCallback(This,callback) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkProfileManager_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkStatistics_INTERFACE_DEFINED__ +#define __IDeckLinkStatistics_INTERFACE_DEFINED__ + +/* interface IDeckLinkStatistics */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkStatistics; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("21CB2ED1-4429-42BE-AAF3-22A3B1DD3AE0") + IDeckLinkStatistics : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkStatisticID statID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetIntWithParam( + /* [in] */ BMDDeckLinkStatisticID statID, + /* [in] */ ULONGLONG param, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStringWithParam( + /* [in] */ BMDDeckLinkStatisticID statID, + /* [in] */ ULONGLONG param, + /* [out] */ BSTR *value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkStatisticsVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkStatistics * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkStatistics * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkStatistics * This); + + DECLSPEC_XFGVIRT(IDeckLinkStatistics, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkStatistics * This, + /* [in] */ BMDDeckLinkStatisticID statID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatistics, GetIntWithParam) + HRESULT ( STDMETHODCALLTYPE *GetIntWithParam )( + IDeckLinkStatistics * This, + /* [in] */ BMDDeckLinkStatisticID statID, + /* [in] */ ULONGLONG param, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatistics, GetStringWithParam) + HRESULT ( STDMETHODCALLTYPE *GetStringWithParam )( + IDeckLinkStatistics * This, + /* [in] */ BMDDeckLinkStatisticID statID, + /* [in] */ ULONGLONG param, + /* [out] */ BSTR *value); + + END_INTERFACE + } IDeckLinkStatisticsVtbl; + + interface IDeckLinkStatistics + { + CONST_VTBL struct IDeckLinkStatisticsVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkStatistics_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkStatistics_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkStatistics_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkStatistics_GetInt(This,statID,value) \ + ( (This)->lpVtbl -> GetInt(This,statID,value) ) + +#define IDeckLinkStatistics_GetIntWithParam(This,statID,param,value) \ + ( (This)->lpVtbl -> GetIntWithParam(This,statID,param,value) ) + +#define IDeckLinkStatistics_GetStringWithParam(This,statID,param,value) \ + ( (This)->lpVtbl -> GetStringWithParam(This,statID,param,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkStatistics_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkStatus_INTERFACE_DEFINED__ +#define __IDeckLinkStatus_INTERFACE_DEFINED__ + +/* interface IDeckLinkStatus */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkStatus; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2A04A635-ED42-41EF-9342-0E11F8CF6B5E") + IDeckLinkStatus : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInterface( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ void **iface) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlagWithParam( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [in] */ ULONGLONG param, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetIntWithParam( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [in] */ ULONGLONG param, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloatWithParam( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [in] */ ULONGLONG param, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetStringWithParam( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [in] */ ULONGLONG param, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytesWithParam( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [in] */ ULONGLONG param, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkStatusVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkStatus * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkStatus * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkStatus * This); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetInterface) + HRESULT ( STDMETHODCALLTYPE *GetInterface )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ void **iface); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetFlagWithParam) + HRESULT ( STDMETHODCALLTYPE *GetFlagWithParam )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [in] */ ULONGLONG param, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetIntWithParam) + HRESULT ( STDMETHODCALLTYPE *GetIntWithParam )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [in] */ ULONGLONG param, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetFloatWithParam) + HRESULT ( STDMETHODCALLTYPE *GetFloatWithParam )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [in] */ ULONGLONG param, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetStringWithParam) + HRESULT ( STDMETHODCALLTYPE *GetStringWithParam )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [in] */ ULONGLONG param, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus, GetBytesWithParam) + HRESULT ( STDMETHODCALLTYPE *GetBytesWithParam )( + IDeckLinkStatus * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [in] */ ULONGLONG param, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize); + + END_INTERFACE + } IDeckLinkStatusVtbl; + + interface IDeckLinkStatus + { + CONST_VTBL struct IDeckLinkStatusVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkStatus_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkStatus_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkStatus_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkStatus_GetFlag(This,statusID,value) \ + ( (This)->lpVtbl -> GetFlag(This,statusID,value) ) + +#define IDeckLinkStatus_GetInt(This,statusID,value) \ + ( (This)->lpVtbl -> GetInt(This,statusID,value) ) + +#define IDeckLinkStatus_GetFloat(This,statusID,value) \ + ( (This)->lpVtbl -> GetFloat(This,statusID,value) ) + +#define IDeckLinkStatus_GetString(This,statusID,value) \ + ( (This)->lpVtbl -> GetString(This,statusID,value) ) + +#define IDeckLinkStatus_GetBytes(This,statusID,buffer,bufferSize) \ + ( (This)->lpVtbl -> GetBytes(This,statusID,buffer,bufferSize) ) + +#define IDeckLinkStatus_GetInterface(This,statusID,iface) \ + ( (This)->lpVtbl -> GetInterface(This,statusID,iface) ) + +#define IDeckLinkStatus_GetFlagWithParam(This,statusID,param,value) \ + ( (This)->lpVtbl -> GetFlagWithParam(This,statusID,param,value) ) + +#define IDeckLinkStatus_GetIntWithParam(This,statusID,param,value) \ + ( (This)->lpVtbl -> GetIntWithParam(This,statusID,param,value) ) + +#define IDeckLinkStatus_GetFloatWithParam(This,statusID,param,value) \ + ( (This)->lpVtbl -> GetFloatWithParam(This,statusID,param,value) ) + +#define IDeckLinkStatus_GetStringWithParam(This,statusID,param,value) \ + ( (This)->lpVtbl -> GetStringWithParam(This,statusID,param,value) ) + +#define IDeckLinkStatus_GetBytesWithParam(This,statusID,param,buffer,bufferSize) \ + ( (This)->lpVtbl -> GetBytesWithParam(This,statusID,param,buffer,bufferSize) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkStatus_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkKeyer_INTERFACE_DEFINED__ +#define __IDeckLinkKeyer_INTERFACE_DEFINED__ + +/* interface IDeckLinkKeyer */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkKeyer; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("89AFCAF5-65F8-421E-98F7-96FE5F5BFBA3") + IDeckLinkKeyer : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Enable( + /* [in] */ BOOL isExternal) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetLevel( + /* [in] */ unsigned char level) = 0; + + virtual HRESULT STDMETHODCALLTYPE RampUp( + /* [in] */ unsigned int numberOfFrames) = 0; + + virtual HRESULT STDMETHODCALLTYPE RampDown( + /* [in] */ unsigned int numberOfFrames) = 0; + + virtual HRESULT STDMETHODCALLTYPE Disable( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkKeyerVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkKeyer * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkKeyer * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkKeyer * This); + + DECLSPEC_XFGVIRT(IDeckLinkKeyer, Enable) + HRESULT ( STDMETHODCALLTYPE *Enable )( + IDeckLinkKeyer * This, + /* [in] */ BOOL isExternal); + + DECLSPEC_XFGVIRT(IDeckLinkKeyer, SetLevel) + HRESULT ( STDMETHODCALLTYPE *SetLevel )( + IDeckLinkKeyer * This, + /* [in] */ unsigned char level); + + DECLSPEC_XFGVIRT(IDeckLinkKeyer, RampUp) + HRESULT ( STDMETHODCALLTYPE *RampUp )( + IDeckLinkKeyer * This, + /* [in] */ unsigned int numberOfFrames); + + DECLSPEC_XFGVIRT(IDeckLinkKeyer, RampDown) + HRESULT ( STDMETHODCALLTYPE *RampDown )( + IDeckLinkKeyer * This, + /* [in] */ unsigned int numberOfFrames); + + DECLSPEC_XFGVIRT(IDeckLinkKeyer, Disable) + HRESULT ( STDMETHODCALLTYPE *Disable )( + IDeckLinkKeyer * This); + + END_INTERFACE + } IDeckLinkKeyerVtbl; + + interface IDeckLinkKeyer + { + CONST_VTBL struct IDeckLinkKeyerVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkKeyer_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkKeyer_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkKeyer_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkKeyer_Enable(This,isExternal) \ + ( (This)->lpVtbl -> Enable(This,isExternal) ) + +#define IDeckLinkKeyer_SetLevel(This,level) \ + ( (This)->lpVtbl -> SetLevel(This,level) ) + +#define IDeckLinkKeyer_RampUp(This,numberOfFrames) \ + ( (This)->lpVtbl -> RampUp(This,numberOfFrames) ) + +#define IDeckLinkKeyer_RampDown(This,numberOfFrames) \ + ( (This)->lpVtbl -> RampDown(This,numberOfFrames) ) + +#define IDeckLinkKeyer_Disable(This) \ + ( (This)->lpVtbl -> Disable(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkKeyer_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoConversion_INTERFACE_DEFINED__ +#define __IDeckLinkVideoConversion_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoConversion */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoConversion; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("94C536D6-C821-42F5-A600-C66629955101") + IDeckLinkVideoConversion : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ConvertFrame( + /* [in] */ IDeckLinkVideoFrame *srcFrame, + /* [in] */ IDeckLinkVideoFrame *dstFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertNewFrame( + /* [in] */ IDeckLinkVideoFrame *srcFrame, + /* [in] */ BMDPixelFormat dstPixelFormat, + /* [in] */ BMDColorspace dstColorspace, + /* [in] */ IDeckLinkVideoBuffer *dstBuffer, + /* [out] */ IDeckLinkVideoFrame **dstFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoConversionVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoConversion * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoConversion * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoConversion * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoConversion, ConvertFrame) + HRESULT ( STDMETHODCALLTYPE *ConvertFrame )( + IDeckLinkVideoConversion * This, + /* [in] */ IDeckLinkVideoFrame *srcFrame, + /* [in] */ IDeckLinkVideoFrame *dstFrame); + + DECLSPEC_XFGVIRT(IDeckLinkVideoConversion, ConvertNewFrame) + HRESULT ( STDMETHODCALLTYPE *ConvertNewFrame )( + IDeckLinkVideoConversion * This, + /* [in] */ IDeckLinkVideoFrame *srcFrame, + /* [in] */ BMDPixelFormat dstPixelFormat, + /* [in] */ BMDColorspace dstColorspace, + /* [in] */ IDeckLinkVideoBuffer *dstBuffer, + /* [out] */ IDeckLinkVideoFrame **dstFrame); + + END_INTERFACE + } IDeckLinkVideoConversionVtbl; + + interface IDeckLinkVideoConversion + { + CONST_VTBL struct IDeckLinkVideoConversionVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoConversion_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoConversion_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoConversion_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoConversion_ConvertFrame(This,srcFrame,dstFrame) \ + ( (This)->lpVtbl -> ConvertFrame(This,srcFrame,dstFrame) ) + +#define IDeckLinkVideoConversion_ConvertNewFrame(This,srcFrame,dstPixelFormat,dstColorspace,dstBuffer,dstFrame) \ + ( (This)->lpVtbl -> ConvertNewFrame(This,srcFrame,dstPixelFormat,dstColorspace,dstBuffer,dstFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoConversion_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkDeviceNotificationCallback_INTERFACE_DEFINED__ +#define __IDeckLinkDeviceNotificationCallback_INTERFACE_DEFINED__ + +/* interface IDeckLinkDeviceNotificationCallback */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkDeviceNotificationCallback; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4997053B-0ADF-4CC8-AC70-7A50C4BE728F") + IDeckLinkDeviceNotificationCallback : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DeckLinkDeviceArrived( + /* [in] */ IDeckLink *deckLinkDevice) = 0; + + virtual HRESULT STDMETHODCALLTYPE DeckLinkDeviceRemoved( + /* [in] */ IDeckLink *deckLinkDevice) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkDeviceNotificationCallbackVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkDeviceNotificationCallback * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkDeviceNotificationCallback * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkDeviceNotificationCallback * This); + + DECLSPEC_XFGVIRT(IDeckLinkDeviceNotificationCallback, DeckLinkDeviceArrived) + HRESULT ( STDMETHODCALLTYPE *DeckLinkDeviceArrived )( + IDeckLinkDeviceNotificationCallback * This, + /* [in] */ IDeckLink *deckLinkDevice); + + DECLSPEC_XFGVIRT(IDeckLinkDeviceNotificationCallback, DeckLinkDeviceRemoved) + HRESULT ( STDMETHODCALLTYPE *DeckLinkDeviceRemoved )( + IDeckLinkDeviceNotificationCallback * This, + /* [in] */ IDeckLink *deckLinkDevice); + + END_INTERFACE + } IDeckLinkDeviceNotificationCallbackVtbl; + + interface IDeckLinkDeviceNotificationCallback + { + CONST_VTBL struct IDeckLinkDeviceNotificationCallbackVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkDeviceNotificationCallback_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkDeviceNotificationCallback_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkDeviceNotificationCallback_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkDeviceNotificationCallback_DeckLinkDeviceArrived(This,deckLinkDevice) \ + ( (This)->lpVtbl -> DeckLinkDeviceArrived(This,deckLinkDevice) ) + +#define IDeckLinkDeviceNotificationCallback_DeckLinkDeviceRemoved(This,deckLinkDevice) \ + ( (This)->lpVtbl -> DeckLinkDeviceRemoved(This,deckLinkDevice) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkDeviceNotificationCallback_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkDiscovery_INTERFACE_DEFINED__ +#define __IDeckLinkDiscovery_INTERFACE_DEFINED__ + +/* interface IDeckLinkDiscovery */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkDiscovery; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CDBF631C-BC76-45FA-B44D-C55059BC6101") + IDeckLinkDiscovery : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE InstallDeviceNotifications( + /* [in] */ IDeckLinkDeviceNotificationCallback *deviceNotificationCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE UninstallDeviceNotifications( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkDiscoveryVtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkDiscovery * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkDiscovery * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkDiscovery * This); + + DECLSPEC_XFGVIRT(IDeckLinkDiscovery, InstallDeviceNotifications) + HRESULT ( STDMETHODCALLTYPE *InstallDeviceNotifications )( + IDeckLinkDiscovery * This, + /* [in] */ IDeckLinkDeviceNotificationCallback *deviceNotificationCallback); + + DECLSPEC_XFGVIRT(IDeckLinkDiscovery, UninstallDeviceNotifications) + HRESULT ( STDMETHODCALLTYPE *UninstallDeviceNotifications )( + IDeckLinkDiscovery * This); + + END_INTERFACE + } IDeckLinkDiscoveryVtbl; + + interface IDeckLinkDiscovery + { + CONST_VTBL struct IDeckLinkDiscoveryVtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkDiscovery_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkDiscovery_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkDiscovery_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkDiscovery_InstallDeviceNotifications(This,deviceNotificationCallback) \ + ( (This)->lpVtbl -> InstallDeviceNotifications(This,deviceNotificationCallback) ) + +#define IDeckLinkDiscovery_UninstallDeviceNotifications(This) \ + ( (This)->lpVtbl -> UninstallDeviceNotifications(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkDiscovery_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_CDeckLinkIterator; + +#ifdef __cplusplus + +class DECLSPEC_UUID("BA6C6F44-6DA5-4DCE-94AA-EE2D1372A676") +CDeckLinkIterator; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkAPIInformation; + +#ifdef __cplusplus + +class DECLSPEC_UUID("263CA19F-ED09-482E-9F9D-84005783A237") +CDeckLinkAPIInformation; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkGLScreenPreviewHelper; + +#ifdef __cplusplus + +class DECLSPEC_UUID("1E332DAE-0D04-49EB-B8A1-B6E00B2B6BD0") +CDeckLinkGLScreenPreviewHelper; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkGL3ScreenPreviewHelper; + +#ifdef __cplusplus + +class DECLSPEC_UUID("166804E4-15EF-4BFD-B623-B5BA921667C5") +CDeckLinkGL3ScreenPreviewHelper; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkDX9ScreenPreviewHelper; + +#ifdef __cplusplus + +class DECLSPEC_UUID("0EB111ED-ADA6-43A6-8B16-CA5D27EEA15E") +CDeckLinkDX9ScreenPreviewHelper; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkWPFDX9ScreenPreviewHelper; + +#ifdef __cplusplus + +class DECLSPEC_UUID("5E64496D-4BB2-45D5-9B63-BF1B463B18AF") +CDeckLinkWPFDX9ScreenPreviewHelper; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkVideoConversion; + +#ifdef __cplusplus + +class DECLSPEC_UUID("771AD62D-671F-4442-AC90-B070C541090A") +CDeckLinkVideoConversion; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkDiscovery; + +#ifdef __cplusplus + +class DECLSPEC_UUID("22FBFC33-8D07-495C-A5BF-DAB5EA9B82DB") +CDeckLinkDiscovery; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkVideoFrameAncillaryPackets; + +#ifdef __cplusplus + +class DECLSPEC_UUID("6F47097E-B390-4650-BCB6-C4D52FAA1643") +CDeckLinkVideoFrameAncillaryPackets; +#endif + +#ifndef __IDeckLinkStatus_v15_3_1_INTERFACE_DEFINED__ +#define __IDeckLinkStatus_v15_3_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkStatus_v15_3_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkStatus_v15_3_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("5F558200-4028-49BC-BEAC-DB3FA4A96E46") + IDeckLinkStatus_v15_3_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkStatus_v15_3_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkStatus_v15_3_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkStatus_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkStatus_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkStatus_v15_3_1, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkStatus_v15_3_1 * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus_v15_3_1, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkStatus_v15_3_1 * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus_v15_3_1, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkStatus_v15_3_1 * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus_v15_3_1, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkStatus_v15_3_1 * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkStatus_v15_3_1, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkStatus_v15_3_1 * This, + /* [in] */ BMDDeckLinkStatusID statusID, + /* [out] */ void *buffer, + /* [out][in] */ unsigned int *bufferSize); + + END_INTERFACE + } IDeckLinkStatus_v15_3_1Vtbl; + + interface IDeckLinkStatus_v15_3_1 + { + CONST_VTBL struct IDeckLinkStatus_v15_3_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkStatus_v15_3_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkStatus_v15_3_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkStatus_v15_3_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkStatus_v15_3_1_GetFlag(This,statusID,value) \ + ( (This)->lpVtbl -> GetFlag(This,statusID,value) ) + +#define IDeckLinkStatus_v15_3_1_GetInt(This,statusID,value) \ + ( (This)->lpVtbl -> GetInt(This,statusID,value) ) + +#define IDeckLinkStatus_v15_3_1_GetFloat(This,statusID,value) \ + ( (This)->lpVtbl -> GetFloat(This,statusID,value) ) + +#define IDeckLinkStatus_v15_3_1_GetString(This,statusID,value) \ + ( (This)->lpVtbl -> GetString(This,statusID,value) ) + +#define IDeckLinkStatus_v15_3_1_GetBytes(This,statusID,buffer,bufferSize) \ + ( (This)->lpVtbl -> GetBytes(This,statusID,buffer,bufferSize) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkStatus_v15_3_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkConfiguration_v15_3_1_INTERFACE_DEFINED__ +#define __IDeckLinkConfiguration_v15_3_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkConfiguration_v15_3_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkConfiguration_v15_3_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("912F634B-2D4E-40A4-8AAB-8D80B73F1289") + IDeckLinkConfiguration_v15_3_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkConfiguration_v15_3_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkConfiguration_v15_3_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkConfiguration_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkConfiguration_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v15_3_1, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IDeckLinkConfiguration_v15_3_1 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v15_3_1, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkConfiguration_v15_3_1 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v15_3_1, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkConfiguration_v15_3_1 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v15_3_1, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkConfiguration_v15_3_1 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v15_3_1, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IDeckLinkConfiguration_v15_3_1 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v15_3_1, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkConfiguration_v15_3_1 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v15_3_1, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IDeckLinkConfiguration_v15_3_1 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v15_3_1, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkConfiguration_v15_3_1 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v15_3_1, WriteConfigurationToPreferences) + HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( + IDeckLinkConfiguration_v15_3_1 * This); + + END_INTERFACE + } IDeckLinkConfiguration_v15_3_1Vtbl; + + interface IDeckLinkConfiguration_v15_3_1 + { + CONST_VTBL struct IDeckLinkConfiguration_v15_3_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkConfiguration_v15_3_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkConfiguration_v15_3_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkConfiguration_v15_3_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkConfiguration_v15_3_1_SetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v15_3_1_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v15_3_1_SetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v15_3_1_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v15_3_1_SetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v15_3_1_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v15_3_1_SetString(This,cfgID,value) \ + ( (This)->lpVtbl -> SetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v15_3_1_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v15_3_1_WriteConfigurationToPreferences(This) \ + ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkConfiguration_v15_3_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBuffer_v15_3_1_INTERFACE_DEFINED__ +#define __IDeckLinkVideoBuffer_v15_3_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoBuffer_v15_3_1 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoBuffer_v15_3_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CCB4B64A-5C86-4E02-B778-885D352709FE") + IDeckLinkVideoBuffer_v15_3_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetBytes( + void **buffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartAccess( + BMDBufferAccessFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndAccess( + BMDBufferAccessFlags flags) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoBuffer_v15_3_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoBuffer_v15_3_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoBuffer_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoBuffer_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBuffer_v15_3_1, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkVideoBuffer_v15_3_1 * This, + void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBuffer_v15_3_1, StartAccess) + HRESULT ( STDMETHODCALLTYPE *StartAccess )( + IDeckLinkVideoBuffer_v15_3_1 * This, + BMDBufferAccessFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBuffer_v15_3_1, EndAccess) + HRESULT ( STDMETHODCALLTYPE *EndAccess )( + IDeckLinkVideoBuffer_v15_3_1 * This, + BMDBufferAccessFlags flags); + + END_INTERFACE + } IDeckLinkVideoBuffer_v15_3_1Vtbl; + + interface IDeckLinkVideoBuffer_v15_3_1 + { + CONST_VTBL struct IDeckLinkVideoBuffer_v15_3_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoBuffer_v15_3_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoBuffer_v15_3_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoBuffer_v15_3_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoBuffer_v15_3_1_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IDeckLinkVideoBuffer_v15_3_1_StartAccess(This,flags) \ + ( (This)->lpVtbl -> StartAccess(This,flags) ) + +#define IDeckLinkVideoBuffer_v15_3_1_EndAccess(This,flags) \ + ( (This)->lpVtbl -> EndAccess(This,flags) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoBuffer_v15_3_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBufferAllocator_v15_3_1_INTERFACE_DEFINED__ +#define __IDeckLinkVideoBufferAllocator_v15_3_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoBufferAllocator_v15_3_1 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoBufferAllocator_v15_3_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3481A4DF-2B11-4E55-AC61-836B87985E9A") + IDeckLinkVideoBufferAllocator_v15_3_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE AllocateVideoBuffer( + IDeckLinkVideoBuffer_v15_3_1 **allocatedBuffer) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoBufferAllocator_v15_3_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoBufferAllocator_v15_3_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoBufferAllocator_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoBufferAllocator_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBufferAllocator_v15_3_1, AllocateVideoBuffer) + HRESULT ( STDMETHODCALLTYPE *AllocateVideoBuffer )( + IDeckLinkVideoBufferAllocator_v15_3_1 * This, + IDeckLinkVideoBuffer_v15_3_1 **allocatedBuffer); + + END_INTERFACE + } IDeckLinkVideoBufferAllocator_v15_3_1Vtbl; + + interface IDeckLinkVideoBufferAllocator_v15_3_1 + { + CONST_VTBL struct IDeckLinkVideoBufferAllocator_v15_3_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoBufferAllocator_v15_3_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoBufferAllocator_v15_3_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoBufferAllocator_v15_3_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoBufferAllocator_v15_3_1_AllocateVideoBuffer(This,allocatedBuffer) \ + ( (This)->lpVtbl -> AllocateVideoBuffer(This,allocatedBuffer) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoBufferAllocator_v15_3_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoBufferAllocatorProvider_v15_3_1_INTERFACE_DEFINED__ +#define __IDeckLinkVideoBufferAllocatorProvider_v15_3_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoBufferAllocatorProvider_v15_3_1 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoBufferAllocatorProvider_v15_3_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("08B80403-BFF2-49D0-B448-8C908B9E9FC9") + IDeckLinkVideoBufferAllocatorProvider_v15_3_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetVideoBufferAllocator( + unsigned int bufferSize, + unsigned int width, + unsigned int height, + unsigned int rowBytes, + BMDPixelFormat pixelFormat, + IDeckLinkVideoBufferAllocator_v15_3_1 **allocator) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoBufferAllocatorProvider_v15_3_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoBufferAllocatorProvider_v15_3_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoBufferAllocatorProvider_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoBufferAllocatorProvider_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoBufferAllocatorProvider_v15_3_1, GetVideoBufferAllocator) + HRESULT ( STDMETHODCALLTYPE *GetVideoBufferAllocator )( + IDeckLinkVideoBufferAllocatorProvider_v15_3_1 * This, + unsigned int bufferSize, + unsigned int width, + unsigned int height, + unsigned int rowBytes, + BMDPixelFormat pixelFormat, + IDeckLinkVideoBufferAllocator_v15_3_1 **allocator); + + END_INTERFACE + } IDeckLinkVideoBufferAllocatorProvider_v15_3_1Vtbl; + + interface IDeckLinkVideoBufferAllocatorProvider_v15_3_1 + { + CONST_VTBL struct IDeckLinkVideoBufferAllocatorProvider_v15_3_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoBufferAllocatorProvider_v15_3_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoBufferAllocatorProvider_v15_3_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoBufferAllocatorProvider_v15_3_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoBufferAllocatorProvider_v15_3_1_GetVideoBufferAllocator(This,bufferSize,width,height,rowBytes,pixelFormat,allocator) \ + ( (This)->lpVtbl -> GetVideoBufferAllocator(This,bufferSize,width,height,rowBytes,pixelFormat,allocator) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoBufferAllocatorProvider_v15_3_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkInput_v15_3_1_INTERFACE_DEFINED__ +#define __IDeckLinkInput_v15_3_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkInput_v15_3_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkInput_v15_3_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("4095DB82-E294-4B8C-AAA8-3B9E80C49336") + IDeckLinkInput_v15_3_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + BMDVideoConnection connection, + BMDDisplayMode requestedMode, + BMDPixelFormat requestedPixelFormat, + BMDVideoInputConversionMode conversionMode, + BMDSupportedVideoModeFlags flags, + BMDDisplayMode *actualMode, + BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + BMDDisplayMode displayMode, + IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + IDeckLinkScreenPreviewCallback *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( + BMDDisplayMode displayMode, + BMDPixelFormat pixelFormat, + BMDVideoInputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInputWithAllocatorProvider( + BMDDisplayMode displayMode, + BMDPixelFormat pixelFormat, + BMDVideoInputFlags flags, + IDeckLinkVideoBufferAllocatorProvider_v15_3_1 *allocatorProvider) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( + unsigned int *availableFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( + BMDAudioSampleRate sampleRate, + BMDAudioSampleType sampleType, + unsigned int channelCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( + unsigned int *availableSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + IDeckLinkInputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + BMDTimeScale desiredTimeScale, + BMDTimeValue *hardwareTime, + BMDTimeValue *timeInFrame, + BMDTimeValue *ticksPerFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkInput_v15_3_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkInput_v15_3_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkInput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkInput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkInput_v15_3_1 * This, + BMDVideoConnection connection, + BMDDisplayMode requestedMode, + BMDPixelFormat requestedPixelFormat, + BMDVideoInputConversionMode conversionMode, + BMDSupportedVideoModeFlags flags, + BMDDisplayMode *actualMode, + BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkInput_v15_3_1 * This, + BMDDisplayMode displayMode, + IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkInput_v15_3_1 * This, + IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkInput_v15_3_1 * This, + IDeckLinkScreenPreviewCallback *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, EnableVideoInput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( + IDeckLinkInput_v15_3_1 * This, + BMDDisplayMode displayMode, + BMDPixelFormat pixelFormat, + BMDVideoInputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, EnableVideoInputWithAllocatorProvider) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInputWithAllocatorProvider )( + IDeckLinkInput_v15_3_1 * This, + BMDDisplayMode displayMode, + BMDPixelFormat pixelFormat, + BMDVideoInputFlags flags, + IDeckLinkVideoBufferAllocatorProvider_v15_3_1 *allocatorProvider); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, DisableVideoInput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( + IDeckLinkInput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, GetAvailableVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( + IDeckLinkInput_v15_3_1 * This, + unsigned int *availableFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, EnableAudioInput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( + IDeckLinkInput_v15_3_1 * This, + BMDAudioSampleRate sampleRate, + BMDAudioSampleType sampleType, + unsigned int channelCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, DisableAudioInput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( + IDeckLinkInput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, GetAvailableAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( + IDeckLinkInput_v15_3_1 * This, + unsigned int *availableSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, StartStreams) + HRESULT ( STDMETHODCALLTYPE *StartStreams )( + IDeckLinkInput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, StopStreams) + HRESULT ( STDMETHODCALLTYPE *StopStreams )( + IDeckLinkInput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, PauseStreams) + HRESULT ( STDMETHODCALLTYPE *PauseStreams )( + IDeckLinkInput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, FlushStreams) + HRESULT ( STDMETHODCALLTYPE *FlushStreams )( + IDeckLinkInput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkInput_v15_3_1 * This, + IDeckLinkInputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v15_3_1, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkInput_v15_3_1 * This, + BMDTimeScale desiredTimeScale, + BMDTimeValue *hardwareTime, + BMDTimeValue *timeInFrame, + BMDTimeValue *ticksPerFrame); + + END_INTERFACE + } IDeckLinkInput_v15_3_1Vtbl; + + interface IDeckLinkInput_v15_3_1 + { + CONST_VTBL struct IDeckLinkInput_v15_3_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkInput_v15_3_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkInput_v15_3_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkInput_v15_3_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkInput_v15_3_1_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) ) + +#define IDeckLinkInput_v15_3_1_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkInput_v15_3_1_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkInput_v15_3_1_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkInput_v15_3_1_EnableVideoInput(This,displayMode,pixelFormat,flags) \ + ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) + +#define IDeckLinkInput_v15_3_1_EnableVideoInputWithAllocatorProvider(This,displayMode,pixelFormat,flags,allocatorProvider) \ + ( (This)->lpVtbl -> EnableVideoInputWithAllocatorProvider(This,displayMode,pixelFormat,flags,allocatorProvider) ) + +#define IDeckLinkInput_v15_3_1_DisableVideoInput(This) \ + ( (This)->lpVtbl -> DisableVideoInput(This) ) + +#define IDeckLinkInput_v15_3_1_GetAvailableVideoFrameCount(This,availableFrameCount) \ + ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) + +#define IDeckLinkInput_v15_3_1_EnableAudioInput(This,sampleRate,sampleType,channelCount) \ + ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) + +#define IDeckLinkInput_v15_3_1_DisableAudioInput(This) \ + ( (This)->lpVtbl -> DisableAudioInput(This) ) + +#define IDeckLinkInput_v15_3_1_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) \ + ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) + +#define IDeckLinkInput_v15_3_1_StartStreams(This) \ + ( (This)->lpVtbl -> StartStreams(This) ) + +#define IDeckLinkInput_v15_3_1_StopStreams(This) \ + ( (This)->lpVtbl -> StopStreams(This) ) + +#define IDeckLinkInput_v15_3_1_PauseStreams(This) \ + ( (This)->lpVtbl -> PauseStreams(This) ) + +#define IDeckLinkInput_v15_3_1_FlushStreams(This) \ + ( (This)->lpVtbl -> FlushStreams(This) ) + +#define IDeckLinkInput_v15_3_1_SetCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetCallback(This,theCallback) ) + +#define IDeckLinkInput_v15_3_1_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkInput_v15_3_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkOutput_v15_3_1_INTERFACE_DEFINED__ +#define __IDeckLinkOutput_v15_3_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkOutput_v15_3_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkOutput_v15_3_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1A8077F1-9FE2-4533-8147-2294305E253F") + IDeckLinkOutput_v15_3_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + BMDVideoConnection connection, + BMDDisplayMode requestedMode, + BMDPixelFormat requestedPixelFormat, + BMDVideoOutputConversionMode conversionMode, + BMDSupportedVideoModeFlags flags, + BMDDisplayMode *actualMode, + BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + BMDDisplayMode displayMode, + IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + IDeckLinkScreenPreviewCallback *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( + BMDDisplayMode displayMode, + BMDVideoOutputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( + int width, + int height, + int rowBytes, + BMDPixelFormat pixelFormat, + BMDFrameFlags flags, + IDeckLinkMutableVideoFrame **outFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateVideoFrameWithBuffer( + int width, + int height, + int rowBytes, + BMDPixelFormat pixelFormat, + BMDFrameFlags flags, + IDeckLinkVideoBuffer_v15_3_1 *buffer, + IDeckLinkMutableVideoFrame **outFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE RowBytesForPixelFormat( + BMDPixelFormat pixelFormat, + int width, + int *rowBytes) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( + BMDPixelFormat pixelFormat, + IDeckLinkVideoFrameAncillary **outBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( + IDeckLinkVideoFrame *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( + IDeckLinkVideoFrame *theFrame, + BMDTimeValue displayTime, + BMDTimeValue displayDuration, + BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( + IDeckLinkVideoOutputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount( + unsigned int *bufferedFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( + BMDAudioSampleRate sampleRate, + BMDAudioSampleType sampleType, + unsigned int channelCount, + BMDAudioOutputStreamType streamType) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( + void *buffer, + unsigned int sampleFrameCount, + unsigned int *sampleFramesWritten) = 0; + + virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( + void *buffer, + unsigned int sampleFrameCount, + BMDTimeValue streamTime, + BMDTimeScale timeScale, + unsigned int *sampleFramesWritten) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( + unsigned int *bufferedSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( + IDeckLinkAudioOutputCallback *theCallback) = 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 IsScheduledPlaybackRunning( + BOOL *active) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime( + BMDTimeScale desiredTimeScale, + BMDTimeValue *streamTime, + double *playbackSpeed) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus( + BMDReferenceStatus *referenceStatus) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + BMDTimeScale desiredTimeScale, + BMDTimeValue *hardwareTime, + BMDTimeValue *timeInFrame, + BMDTimeValue *ticksPerFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameCompletionReferenceTimestamp( + IDeckLinkVideoFrame *theFrame, + BMDTimeScale desiredTimeScale, + BMDTimeValue *frameCompletionTimestamp) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkOutput_v15_3_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkOutput_v15_3_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkOutput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkOutput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkOutput_v15_3_1 * This, + BMDVideoConnection connection, + BMDDisplayMode requestedMode, + BMDPixelFormat requestedPixelFormat, + BMDVideoOutputConversionMode conversionMode, + BMDSupportedVideoModeFlags flags, + BMDDisplayMode *actualMode, + BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkOutput_v15_3_1 * This, + BMDDisplayMode displayMode, + IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkOutput_v15_3_1 * This, + IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkOutput_v15_3_1 * This, + IDeckLinkScreenPreviewCallback *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, EnableVideoOutput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( + IDeckLinkOutput_v15_3_1 * This, + BMDDisplayMode displayMode, + BMDVideoOutputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, DisableVideoOutput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( + IDeckLinkOutput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, CreateVideoFrame) + HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( + IDeckLinkOutput_v15_3_1 * This, + int width, + int height, + int rowBytes, + BMDPixelFormat pixelFormat, + BMDFrameFlags flags, + IDeckLinkMutableVideoFrame **outFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, CreateVideoFrameWithBuffer) + HRESULT ( STDMETHODCALLTYPE *CreateVideoFrameWithBuffer )( + IDeckLinkOutput_v15_3_1 * This, + int width, + int height, + int rowBytes, + BMDPixelFormat pixelFormat, + BMDFrameFlags flags, + IDeckLinkVideoBuffer_v15_3_1 *buffer, + IDeckLinkMutableVideoFrame **outFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, RowBytesForPixelFormat) + HRESULT ( STDMETHODCALLTYPE *RowBytesForPixelFormat )( + IDeckLinkOutput_v15_3_1 * This, + BMDPixelFormat pixelFormat, + int width, + int *rowBytes); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, CreateAncillaryData) + HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( + IDeckLinkOutput_v15_3_1 * This, + BMDPixelFormat pixelFormat, + IDeckLinkVideoFrameAncillary **outBuffer); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, DisplayVideoFrameSync) + HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( + IDeckLinkOutput_v15_3_1 * This, + IDeckLinkVideoFrame *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, ScheduleVideoFrame) + HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( + IDeckLinkOutput_v15_3_1 * This, + IDeckLinkVideoFrame *theFrame, + BMDTimeValue displayTime, + BMDTimeValue displayDuration, + BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, SetScheduledFrameCompletionCallback) + HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( + IDeckLinkOutput_v15_3_1 * This, + IDeckLinkVideoOutputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, GetBufferedVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( + IDeckLinkOutput_v15_3_1 * This, + unsigned int *bufferedFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, EnableAudioOutput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( + IDeckLinkOutput_v15_3_1 * This, + BMDAudioSampleRate sampleRate, + BMDAudioSampleType sampleType, + unsigned int channelCount, + BMDAudioOutputStreamType streamType); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, DisableAudioOutput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( + IDeckLinkOutput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, WriteAudioSamplesSync) + HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( + IDeckLinkOutput_v15_3_1 * This, + void *buffer, + unsigned int sampleFrameCount, + unsigned int *sampleFramesWritten); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, BeginAudioPreroll) + HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( + IDeckLinkOutput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, EndAudioPreroll) + HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( + IDeckLinkOutput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, ScheduleAudioSamples) + HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( + IDeckLinkOutput_v15_3_1 * This, + void *buffer, + unsigned int sampleFrameCount, + BMDTimeValue streamTime, + BMDTimeScale timeScale, + unsigned int *sampleFramesWritten); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, GetBufferedAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( + IDeckLinkOutput_v15_3_1 * This, + unsigned int *bufferedSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, FlushBufferedAudioSamples) + HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( + IDeckLinkOutput_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, SetAudioCallback) + HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( + IDeckLinkOutput_v15_3_1 * This, + IDeckLinkAudioOutputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, StartScheduledPlayback) + HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( + IDeckLinkOutput_v15_3_1 * This, + BMDTimeValue playbackStartTime, + BMDTimeScale timeScale, + double playbackSpeed); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, StopScheduledPlayback) + HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( + IDeckLinkOutput_v15_3_1 * This, + BMDTimeValue stopPlaybackAtTime, + BMDTimeValue *actualStopTime, + BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, IsScheduledPlaybackRunning) + HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( + IDeckLinkOutput_v15_3_1 * This, + BOOL *active); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, GetScheduledStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetScheduledStreamTime )( + IDeckLinkOutput_v15_3_1 * This, + BMDTimeScale desiredTimeScale, + BMDTimeValue *streamTime, + double *playbackSpeed); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, GetReferenceStatus) + HRESULT ( STDMETHODCALLTYPE *GetReferenceStatus )( + IDeckLinkOutput_v15_3_1 * This, + BMDReferenceStatus *referenceStatus); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkOutput_v15_3_1 * This, + BMDTimeScale desiredTimeScale, + BMDTimeValue *hardwareTime, + BMDTimeValue *timeInFrame, + BMDTimeValue *ticksPerFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v15_3_1, GetFrameCompletionReferenceTimestamp) + HRESULT ( STDMETHODCALLTYPE *GetFrameCompletionReferenceTimestamp )( + IDeckLinkOutput_v15_3_1 * This, + IDeckLinkVideoFrame *theFrame, + BMDTimeScale desiredTimeScale, + BMDTimeValue *frameCompletionTimestamp); + + END_INTERFACE + } IDeckLinkOutput_v15_3_1Vtbl; + + interface IDeckLinkOutput_v15_3_1 + { + CONST_VTBL struct IDeckLinkOutput_v15_3_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkOutput_v15_3_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkOutput_v15_3_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkOutput_v15_3_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkOutput_v15_3_1_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) ) + +#define IDeckLinkOutput_v15_3_1_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkOutput_v15_3_1_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkOutput_v15_3_1_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkOutput_v15_3_1_EnableVideoOutput(This,displayMode,flags) \ + ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode,flags) ) + +#define IDeckLinkOutput_v15_3_1_DisableVideoOutput(This) \ + ( (This)->lpVtbl -> DisableVideoOutput(This) ) + +#define IDeckLinkOutput_v15_3_1_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) \ + ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) + +#define IDeckLinkOutput_v15_3_1_CreateVideoFrameWithBuffer(This,width,height,rowBytes,pixelFormat,flags,buffer,outFrame) \ + ( (This)->lpVtbl -> CreateVideoFrameWithBuffer(This,width,height,rowBytes,pixelFormat,flags,buffer,outFrame) ) + +#define IDeckLinkOutput_v15_3_1_RowBytesForPixelFormat(This,pixelFormat,width,rowBytes) \ + ( (This)->lpVtbl -> RowBytesForPixelFormat(This,pixelFormat,width,rowBytes) ) + +#define IDeckLinkOutput_v15_3_1_CreateAncillaryData(This,pixelFormat,outBuffer) \ + ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) + +#define IDeckLinkOutput_v15_3_1_DisplayVideoFrameSync(This,theFrame) \ + ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) + +#define IDeckLinkOutput_v15_3_1_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) \ + ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) + +#define IDeckLinkOutput_v15_3_1_SetScheduledFrameCompletionCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) + +#define IDeckLinkOutput_v15_3_1_GetBufferedVideoFrameCount(This,bufferedFrameCount) \ + ( (This)->lpVtbl -> GetBufferedVideoFrameCount(This,bufferedFrameCount) ) + +#define IDeckLinkOutput_v15_3_1_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) \ + ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) ) + +#define IDeckLinkOutput_v15_3_1_DisableAudioOutput(This) \ + ( (This)->lpVtbl -> DisableAudioOutput(This) ) + +#define IDeckLinkOutput_v15_3_1_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) \ + ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) + +#define IDeckLinkOutput_v15_3_1_BeginAudioPreroll(This) \ + ( (This)->lpVtbl -> BeginAudioPreroll(This) ) + +#define IDeckLinkOutput_v15_3_1_EndAudioPreroll(This) \ + ( (This)->lpVtbl -> EndAudioPreroll(This) ) + +#define IDeckLinkOutput_v15_3_1_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) \ + ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) + +#define IDeckLinkOutput_v15_3_1_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) \ + ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) ) + +#define IDeckLinkOutput_v15_3_1_FlushBufferedAudioSamples(This) \ + ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) + +#define IDeckLinkOutput_v15_3_1_SetAudioCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) + +#define IDeckLinkOutput_v15_3_1_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) \ + ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) + +#define IDeckLinkOutput_v15_3_1_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) \ + ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) + +#define IDeckLinkOutput_v15_3_1_IsScheduledPlaybackRunning(This,active) \ + ( (This)->lpVtbl -> IsScheduledPlaybackRunning(This,active) ) + +#define IDeckLinkOutput_v15_3_1_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) \ + ( (This)->lpVtbl -> GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) ) + +#define IDeckLinkOutput_v15_3_1_GetReferenceStatus(This,referenceStatus) \ + ( (This)->lpVtbl -> GetReferenceStatus(This,referenceStatus) ) + +#define IDeckLinkOutput_v15_3_1_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#define IDeckLinkOutput_v15_3_1_GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) \ + ( (This)->lpVtbl -> GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkOutput_v15_3_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoConversion_v15_3_1_INTERFACE_DEFINED__ +#define __IDeckLinkVideoConversion_v15_3_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoConversion_v15_3_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoConversion_v15_3_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("A48755D9-8BD5-4727-A1E9-069FDEDBA6E9") + IDeckLinkVideoConversion_v15_3_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ConvertFrame( + /* [in] */ IDeckLinkVideoFrame *srcFrame, + /* [in] */ IDeckLinkVideoFrame *dstFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE ConvertNewFrame( + /* [in] */ IDeckLinkVideoFrame *srcFrame, + /* [in] */ BMDPixelFormat dstPixelFormat, + /* [in] */ BMDColorspace dstColorspace, + /* [in] */ IDeckLinkVideoBuffer_v15_3_1 *dstBuffer, + /* [out] */ IDeckLinkVideoFrame **dstFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoConversion_v15_3_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoConversion_v15_3_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoConversion_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoConversion_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoConversion_v15_3_1, ConvertFrame) + HRESULT ( STDMETHODCALLTYPE *ConvertFrame )( + IDeckLinkVideoConversion_v15_3_1 * This, + /* [in] */ IDeckLinkVideoFrame *srcFrame, + /* [in] */ IDeckLinkVideoFrame *dstFrame); + + DECLSPEC_XFGVIRT(IDeckLinkVideoConversion_v15_3_1, ConvertNewFrame) + HRESULT ( STDMETHODCALLTYPE *ConvertNewFrame )( + IDeckLinkVideoConversion_v15_3_1 * This, + /* [in] */ IDeckLinkVideoFrame *srcFrame, + /* [in] */ BMDPixelFormat dstPixelFormat, + /* [in] */ BMDColorspace dstColorspace, + /* [in] */ IDeckLinkVideoBuffer_v15_3_1 *dstBuffer, + /* [out] */ IDeckLinkVideoFrame **dstFrame); + + END_INTERFACE + } IDeckLinkVideoConversion_v15_3_1Vtbl; + + interface IDeckLinkVideoConversion_v15_3_1 + { + CONST_VTBL struct IDeckLinkVideoConversion_v15_3_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoConversion_v15_3_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoConversion_v15_3_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoConversion_v15_3_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoConversion_v15_3_1_ConvertFrame(This,srcFrame,dstFrame) \ + ( (This)->lpVtbl -> ConvertFrame(This,srcFrame,dstFrame) ) + +#define IDeckLinkVideoConversion_v15_3_1_ConvertNewFrame(This,srcFrame,dstPixelFormat,dstColorspace,dstBuffer,dstFrame) \ + ( (This)->lpVtbl -> ConvertNewFrame(This,srcFrame,dstPixelFormat,dstColorspace,dstBuffer,dstFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoConversion_v15_3_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkNotification_v15_3_1_INTERFACE_DEFINED__ +#define __IDeckLinkNotification_v15_3_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkNotification_v15_3_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkNotification_v15_3_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B85DF4C8-BDF5-47C1-8064-28162EBDD4EB") + IDeckLinkNotification_v15_3_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Subscribe( + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE Unsubscribe( + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkNotification_v15_3_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkNotification_v15_3_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkNotification_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkNotification_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkNotification_v15_3_1, Subscribe) + HRESULT ( STDMETHODCALLTYPE *Subscribe )( + IDeckLinkNotification_v15_3_1 * This, + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkNotification_v15_3_1, Unsubscribe) + HRESULT ( STDMETHODCALLTYPE *Unsubscribe )( + IDeckLinkNotification_v15_3_1 * This, + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback); + + END_INTERFACE + } IDeckLinkNotification_v15_3_1Vtbl; + + interface IDeckLinkNotification_v15_3_1 + { + CONST_VTBL struct IDeckLinkNotification_v15_3_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkNotification_v15_3_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkNotification_v15_3_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkNotification_v15_3_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkNotification_v15_3_1_Subscribe(This,topic,theCallback) \ + ( (This)->lpVtbl -> Subscribe(This,topic,theCallback) ) + +#define IDeckLinkNotification_v15_3_1_Unsubscribe(This,topic,theCallback) \ + ( (This)->lpVtbl -> Unsubscribe(This,topic,theCallback) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkNotification_v15_3_1_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_CDeckLinkVideoConversion_v15_3_1; + +#ifdef __cplusplus + +class DECLSPEC_UUID("89BA47BD-1FE2-4D76-9BFE-DE85049C4987") +CDeckLinkVideoConversion_v15_3_1; +#endif + +#ifndef __IDeckLinkProfileAttributes_v15_3_1_INTERFACE_DEFINED__ +#define __IDeckLinkProfileAttributes_v15_3_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkProfileAttributes_v15_3_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkProfileAttributes_v15_3_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("17D4BF8E-4911-473A-80A0-731CF6FF345B") + IDeckLinkProfileAttributes_v15_3_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkAttributeID attrID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkAttributeID attrID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkAttributeID attrID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkAttributeID attrID, + /* [out] */ BSTR *value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkProfileAttributes_v15_3_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkProfileAttributes_v15_3_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkProfileAttributes_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkProfileAttributes_v15_3_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkProfileAttributes_v15_3_1, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkProfileAttributes_v15_3_1 * This, + /* [in] */ BMDDeckLinkAttributeID attrID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkProfileAttributes_v15_3_1, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkProfileAttributes_v15_3_1 * This, + /* [in] */ BMDDeckLinkAttributeID attrID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkProfileAttributes_v15_3_1, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkProfileAttributes_v15_3_1 * This, + /* [in] */ BMDDeckLinkAttributeID attrID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkProfileAttributes_v15_3_1, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkProfileAttributes_v15_3_1 * This, + /* [in] */ BMDDeckLinkAttributeID attrID, + /* [out] */ BSTR *value); + + END_INTERFACE + } IDeckLinkProfileAttributes_v15_3_1Vtbl; + + interface IDeckLinkProfileAttributes_v15_3_1 + { + CONST_VTBL struct IDeckLinkProfileAttributes_v15_3_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkProfileAttributes_v15_3_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkProfileAttributes_v15_3_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkProfileAttributes_v15_3_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkProfileAttributes_v15_3_1_GetFlag(This,attrID,value) \ + ( (This)->lpVtbl -> GetFlag(This,attrID,value) ) + +#define IDeckLinkProfileAttributes_v15_3_1_GetInt(This,attrID,value) \ + ( (This)->lpVtbl -> GetInt(This,attrID,value) ) + +#define IDeckLinkProfileAttributes_v15_3_1_GetFloat(This,attrID,value) \ + ( (This)->lpVtbl -> GetFloat(This,attrID,value) ) + +#define IDeckLinkProfileAttributes_v15_3_1_GetString(This,attrID,value) \ + ( (This)->lpVtbl -> GetString(This,attrID,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkProfileAttributes_v15_3_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoOutputCallback_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkVideoOutputCallback_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoOutputCallback_v14_2_1 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoOutputCallback_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("20AA5225-1958-47CB-820B-80A8D521A6EE") + IDeckLinkVideoOutputCallback_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *completedFrame, + /* [in] */ BMDOutputFrameCompletionResult result) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduledPlaybackHasStopped( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoOutputCallback_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoOutputCallback_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoOutputCallback_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoOutputCallback_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoOutputCallback_v14_2_1, ScheduledFrameCompleted) + HRESULT ( STDMETHODCALLTYPE *ScheduledFrameCompleted )( + IDeckLinkVideoOutputCallback_v14_2_1 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *completedFrame, + /* [in] */ BMDOutputFrameCompletionResult result); + + DECLSPEC_XFGVIRT(IDeckLinkVideoOutputCallback_v14_2_1, ScheduledPlaybackHasStopped) + HRESULT ( STDMETHODCALLTYPE *ScheduledPlaybackHasStopped )( + IDeckLinkVideoOutputCallback_v14_2_1 * This); + + END_INTERFACE + } IDeckLinkVideoOutputCallback_v14_2_1Vtbl; + + interface IDeckLinkVideoOutputCallback_v14_2_1 + { + CONST_VTBL struct IDeckLinkVideoOutputCallback_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoOutputCallback_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoOutputCallback_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoOutputCallback_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoOutputCallback_v14_2_1_ScheduledFrameCompleted(This,completedFrame,result) \ + ( (This)->lpVtbl -> ScheduledFrameCompleted(This,completedFrame,result) ) + +#define IDeckLinkVideoOutputCallback_v14_2_1_ScheduledPlaybackHasStopped(This) \ + ( (This)->lpVtbl -> ScheduledPlaybackHasStopped(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoOutputCallback_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkInputCallback_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkInputCallback_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkInputCallback_v14_2_1 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkInputCallback_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C6FCE4C9-C4E4-4047-82FB-5D238232A902") + IDeckLinkInputCallback_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged( + /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents, + /* [in] */ IDeckLinkDisplayMode *newDisplayMode, + /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived( + /* [in] */ IDeckLinkVideoInputFrame_v14_2_1 *videoFrame, + /* [in] */ IDeckLinkAudioInputPacket *audioPacket) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkInputCallback_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkInputCallback_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkInputCallback_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkInputCallback_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInputCallback_v14_2_1, VideoInputFormatChanged) + HRESULT ( STDMETHODCALLTYPE *VideoInputFormatChanged )( + IDeckLinkInputCallback_v14_2_1 * This, + /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents, + /* [in] */ IDeckLinkDisplayMode *newDisplayMode, + /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags); + + DECLSPEC_XFGVIRT(IDeckLinkInputCallback_v14_2_1, VideoInputFrameArrived) + HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( + IDeckLinkInputCallback_v14_2_1 * This, + /* [in] */ IDeckLinkVideoInputFrame_v14_2_1 *videoFrame, + /* [in] */ IDeckLinkAudioInputPacket *audioPacket); + + END_INTERFACE + } IDeckLinkInputCallback_v14_2_1Vtbl; + + interface IDeckLinkInputCallback_v14_2_1 + { + CONST_VTBL struct IDeckLinkInputCallback_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkInputCallback_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkInputCallback_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkInputCallback_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkInputCallback_v14_2_1_VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) \ + ( (This)->lpVtbl -> VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) ) + +#define IDeckLinkInputCallback_v14_2_1_VideoInputFrameArrived(This,videoFrame,audioPacket) \ + ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkInputCallback_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkMemoryAllocator_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkMemoryAllocator_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkMemoryAllocator_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkMemoryAllocator_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B36EB6E7-9D29-4AA8-92EF-843B87A289E8") + IDeckLinkMemoryAllocator_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE AllocateBuffer( + /* [in] */ unsigned int bufferSize, + /* [out] */ void **allocatedBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE ReleaseBuffer( + /* [in] */ void *buffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE Commit( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Decommit( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkMemoryAllocator_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkMemoryAllocator_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkMemoryAllocator_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkMemoryAllocator_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkMemoryAllocator_v14_2_1, AllocateBuffer) + HRESULT ( STDMETHODCALLTYPE *AllocateBuffer )( + IDeckLinkMemoryAllocator_v14_2_1 * This, + /* [in] */ unsigned int bufferSize, + /* [out] */ void **allocatedBuffer); + + DECLSPEC_XFGVIRT(IDeckLinkMemoryAllocator_v14_2_1, ReleaseBuffer) + HRESULT ( STDMETHODCALLTYPE *ReleaseBuffer )( + IDeckLinkMemoryAllocator_v14_2_1 * This, + /* [in] */ void *buffer); + + DECLSPEC_XFGVIRT(IDeckLinkMemoryAllocator_v14_2_1, Commit) + HRESULT ( STDMETHODCALLTYPE *Commit )( + IDeckLinkMemoryAllocator_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkMemoryAllocator_v14_2_1, Decommit) + HRESULT ( STDMETHODCALLTYPE *Decommit )( + IDeckLinkMemoryAllocator_v14_2_1 * This); + + END_INTERFACE + } IDeckLinkMemoryAllocator_v14_2_1Vtbl; + + interface IDeckLinkMemoryAllocator_v14_2_1 + { + CONST_VTBL struct IDeckLinkMemoryAllocator_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkMemoryAllocator_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkMemoryAllocator_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkMemoryAllocator_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkMemoryAllocator_v14_2_1_AllocateBuffer(This,bufferSize,allocatedBuffer) \ + ( (This)->lpVtbl -> AllocateBuffer(This,bufferSize,allocatedBuffer) ) + +#define IDeckLinkMemoryAllocator_v14_2_1_ReleaseBuffer(This,buffer) \ + ( (This)->lpVtbl -> ReleaseBuffer(This,buffer) ) + +#define IDeckLinkMemoryAllocator_v14_2_1_Commit(This) \ + ( (This)->lpVtbl -> Commit(This) ) + +#define IDeckLinkMemoryAllocator_v14_2_1_Decommit(This) \ + ( (This)->lpVtbl -> Decommit(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkMemoryAllocator_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkOutput_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkOutput_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkOutput_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkOutput_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("BE2D9020-461E-442F-84B7-E949CB953B9D") + IDeckLinkOutput_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDVideoOutputConversionMode conversionMode, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDVideoOutputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator( + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( + /* [in] */ int width, + /* [in] */ int height, + /* [in] */ int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDFrameFlags flags, + /* [out] */ IDeckLinkMutableVideoFrame_v14_2_1 **outFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeValue displayTime, + /* [in] */ BMDTimeValue displayDuration, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( + /* [in] */ IDeckLinkVideoOutputCallback_v14_2_1 *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount( + /* [out] */ unsigned int *bufferedFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount, + /* [in] */ BMDAudioOutputStreamType streamType) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [out] */ unsigned int *sampleFramesWritten) = 0; + + virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [in] */ BMDTimeValue streamTime, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ unsigned int *sampleFramesWritten) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( + /* [out] */ unsigned int *bufferedSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( + /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( + /* [in] */ BMDTimeValue playbackStartTime, + /* [in] */ BMDTimeScale timeScale, + /* [in] */ double playbackSpeed) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( + /* [in] */ BMDTimeValue stopPlaybackAtTime, + /* [out] */ BMDTimeValue *actualStopTime, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( + /* [out] */ BOOL *active) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *streamTime, + /* [out] */ double *playbackSpeed) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus( + /* [out] */ BMDReferenceStatus *referenceStatus) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameCompletionReferenceTimestamp( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *frameCompletionTimestamp) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkOutput_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkOutput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkOutput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDVideoOutputConversionMode conversionMode, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkOutput_v14_2_1 * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, EnableVideoOutput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDVideoOutputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, DisableVideoOutput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( + IDeckLinkOutput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, SetVideoOutputFrameMemoryAllocator) + HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, CreateVideoFrame) + HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ int width, + /* [in] */ int height, + /* [in] */ int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDFrameFlags flags, + /* [out] */ IDeckLinkMutableVideoFrame_v14_2_1 **outFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, CreateAncillaryData) + HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, DisplayVideoFrameSync) + HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, ScheduleVideoFrame) + HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeValue displayTime, + /* [in] */ BMDTimeValue displayDuration, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, SetScheduledFrameCompletionCallback) + HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ IDeckLinkVideoOutputCallback_v14_2_1 *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, GetBufferedVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( + IDeckLinkOutput_v14_2_1 * This, + /* [out] */ unsigned int *bufferedFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, EnableAudioOutput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount, + /* [in] */ BMDAudioOutputStreamType streamType); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, DisableAudioOutput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( + IDeckLinkOutput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, WriteAudioSamplesSync) + HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [out] */ unsigned int *sampleFramesWritten); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, BeginAudioPreroll) + HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( + IDeckLinkOutput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, EndAudioPreroll) + HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( + IDeckLinkOutput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, ScheduleAudioSamples) + HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [in] */ BMDTimeValue streamTime, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ unsigned int *sampleFramesWritten); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, GetBufferedAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( + IDeckLinkOutput_v14_2_1 * This, + /* [out] */ unsigned int *bufferedSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, FlushBufferedAudioSamples) + HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( + IDeckLinkOutput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, SetAudioCallback) + HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ IDeckLinkAudioOutputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, StartScheduledPlayback) + HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ BMDTimeValue playbackStartTime, + /* [in] */ BMDTimeScale timeScale, + /* [in] */ double playbackSpeed); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, StopScheduledPlayback) + HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ BMDTimeValue stopPlaybackAtTime, + /* [out] */ BMDTimeValue *actualStopTime, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, IsScheduledPlaybackRunning) + HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( + IDeckLinkOutput_v14_2_1 * This, + /* [out] */ BOOL *active); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, GetScheduledStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetScheduledStreamTime )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *streamTime, + /* [out] */ double *playbackSpeed); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, GetReferenceStatus) + HRESULT ( STDMETHODCALLTYPE *GetReferenceStatus )( + IDeckLinkOutput_v14_2_1 * This, + /* [out] */ BMDReferenceStatus *referenceStatus); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v14_2_1, GetFrameCompletionReferenceTimestamp) + HRESULT ( STDMETHODCALLTYPE *GetFrameCompletionReferenceTimestamp )( + IDeckLinkOutput_v14_2_1 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *frameCompletionTimestamp); + + END_INTERFACE + } IDeckLinkOutput_v14_2_1Vtbl; + + interface IDeckLinkOutput_v14_2_1 + { + CONST_VTBL struct IDeckLinkOutput_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkOutput_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkOutput_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkOutput_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkOutput_v14_2_1_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) ) + +#define IDeckLinkOutput_v14_2_1_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkOutput_v14_2_1_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkOutput_v14_2_1_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkOutput_v14_2_1_EnableVideoOutput(This,displayMode,flags) \ + ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode,flags) ) + +#define IDeckLinkOutput_v14_2_1_DisableVideoOutput(This) \ + ( (This)->lpVtbl -> DisableVideoOutput(This) ) + +#define IDeckLinkOutput_v14_2_1_SetVideoOutputFrameMemoryAllocator(This,theAllocator) \ + ( (This)->lpVtbl -> SetVideoOutputFrameMemoryAllocator(This,theAllocator) ) + +#define IDeckLinkOutput_v14_2_1_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) \ + ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) + +#define IDeckLinkOutput_v14_2_1_CreateAncillaryData(This,pixelFormat,outBuffer) \ + ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) + +#define IDeckLinkOutput_v14_2_1_DisplayVideoFrameSync(This,theFrame) \ + ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) + +#define IDeckLinkOutput_v14_2_1_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) \ + ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) + +#define IDeckLinkOutput_v14_2_1_SetScheduledFrameCompletionCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) + +#define IDeckLinkOutput_v14_2_1_GetBufferedVideoFrameCount(This,bufferedFrameCount) \ + ( (This)->lpVtbl -> GetBufferedVideoFrameCount(This,bufferedFrameCount) ) + +#define IDeckLinkOutput_v14_2_1_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) \ + ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) ) + +#define IDeckLinkOutput_v14_2_1_DisableAudioOutput(This) \ + ( (This)->lpVtbl -> DisableAudioOutput(This) ) + +#define IDeckLinkOutput_v14_2_1_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) \ + ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) + +#define IDeckLinkOutput_v14_2_1_BeginAudioPreroll(This) \ + ( (This)->lpVtbl -> BeginAudioPreroll(This) ) + +#define IDeckLinkOutput_v14_2_1_EndAudioPreroll(This) \ + ( (This)->lpVtbl -> EndAudioPreroll(This) ) + +#define IDeckLinkOutput_v14_2_1_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) \ + ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) + +#define IDeckLinkOutput_v14_2_1_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) \ + ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) ) + +#define IDeckLinkOutput_v14_2_1_FlushBufferedAudioSamples(This) \ + ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) + +#define IDeckLinkOutput_v14_2_1_SetAudioCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) + +#define IDeckLinkOutput_v14_2_1_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) \ + ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) + +#define IDeckLinkOutput_v14_2_1_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) \ + ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) + +#define IDeckLinkOutput_v14_2_1_IsScheduledPlaybackRunning(This,active) \ + ( (This)->lpVtbl -> IsScheduledPlaybackRunning(This,active) ) + +#define IDeckLinkOutput_v14_2_1_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) \ + ( (This)->lpVtbl -> GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) ) + +#define IDeckLinkOutput_v14_2_1_GetReferenceStatus(This,referenceStatus) \ + ( (This)->lpVtbl -> GetReferenceStatus(This,referenceStatus) ) + +#define IDeckLinkOutput_v14_2_1_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#define IDeckLinkOutput_v14_2_1_GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) \ + ( (This)->lpVtbl -> GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkOutput_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkInput_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkInput_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkInput_v14_2_1 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkInput_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C21CDB6E-F414-46E4-A636-80A566E0ED37") + IDeckLinkInput_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDVideoInputConversionMode conversionMode, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( + /* [out] */ unsigned int *availableFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoInputFrameMemoryAllocator( + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( + /* [out] */ unsigned int *availableSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IDeckLinkInputCallback_v14_2_1 *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkInput_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkInput_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkInput_v14_2_1 * This, + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDVideoInputConversionMode conversionMode, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkInput_v14_2_1 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkInput_v14_2_1 * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkInput_v14_2_1 * This, + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, EnableVideoInput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( + IDeckLinkInput_v14_2_1 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, DisableVideoInput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( + IDeckLinkInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, GetAvailableVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( + IDeckLinkInput_v14_2_1 * This, + /* [out] */ unsigned int *availableFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, SetVideoInputFrameMemoryAllocator) + HRESULT ( STDMETHODCALLTYPE *SetVideoInputFrameMemoryAllocator )( + IDeckLinkInput_v14_2_1 * This, + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, EnableAudioInput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( + IDeckLinkInput_v14_2_1 * This, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, DisableAudioInput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( + IDeckLinkInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, GetAvailableAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( + IDeckLinkInput_v14_2_1 * This, + /* [out] */ unsigned int *availableSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, StartStreams) + HRESULT ( STDMETHODCALLTYPE *StartStreams )( + IDeckLinkInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, StopStreams) + HRESULT ( STDMETHODCALLTYPE *StopStreams )( + IDeckLinkInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, PauseStreams) + HRESULT ( STDMETHODCALLTYPE *PauseStreams )( + IDeckLinkInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, FlushStreams) + HRESULT ( STDMETHODCALLTYPE *FlushStreams )( + IDeckLinkInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkInput_v14_2_1 * This, + /* [in] */ IDeckLinkInputCallback_v14_2_1 *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v14_2_1, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkInput_v14_2_1 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + END_INTERFACE + } IDeckLinkInput_v14_2_1Vtbl; + + interface IDeckLinkInput_v14_2_1 + { + CONST_VTBL struct IDeckLinkInput_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkInput_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkInput_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkInput_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkInput_v14_2_1_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) ) + +#define IDeckLinkInput_v14_2_1_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkInput_v14_2_1_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkInput_v14_2_1_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkInput_v14_2_1_EnableVideoInput(This,displayMode,pixelFormat,flags) \ + ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) + +#define IDeckLinkInput_v14_2_1_DisableVideoInput(This) \ + ( (This)->lpVtbl -> DisableVideoInput(This) ) + +#define IDeckLinkInput_v14_2_1_GetAvailableVideoFrameCount(This,availableFrameCount) \ + ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) + +#define IDeckLinkInput_v14_2_1_SetVideoInputFrameMemoryAllocator(This,theAllocator) \ + ( (This)->lpVtbl -> SetVideoInputFrameMemoryAllocator(This,theAllocator) ) + +#define IDeckLinkInput_v14_2_1_EnableAudioInput(This,sampleRate,sampleType,channelCount) \ + ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) + +#define IDeckLinkInput_v14_2_1_DisableAudioInput(This) \ + ( (This)->lpVtbl -> DisableAudioInput(This) ) + +#define IDeckLinkInput_v14_2_1_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) \ + ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) + +#define IDeckLinkInput_v14_2_1_StartStreams(This) \ + ( (This)->lpVtbl -> StartStreams(This) ) + +#define IDeckLinkInput_v14_2_1_StopStreams(This) \ + ( (This)->lpVtbl -> StopStreams(This) ) + +#define IDeckLinkInput_v14_2_1_PauseStreams(This) \ + ( (This)->lpVtbl -> PauseStreams(This) ) + +#define IDeckLinkInput_v14_2_1_FlushStreams(This) \ + ( (This)->lpVtbl -> FlushStreams(This) ) + +#define IDeckLinkInput_v14_2_1_SetCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetCallback(This,theCallback) ) + +#define IDeckLinkInput_v14_2_1_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkInput_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderInput_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkEncoderInput_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkEncoderInput_v14_2_1 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkEncoderInput_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("F222551D-13DF-4FD8-B587-9D4F19EC12C9") + IDeckLinkEncoderInput_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedCodec, + /* [in] */ unsigned int requestedCodecProfile, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailablePacketsCount( + /* [out] */ unsigned int *availablePacketsCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMemoryAllocator( + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( + /* [in] */ BMDAudioFormat audioFormat, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( + /* [out] */ unsigned int *availableSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IDeckLinkEncoderInputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkEncoderInput_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkEncoderInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkEncoderInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedCodec, + /* [in] */ unsigned int requestedCodecProfile, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, EnableVideoInput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, DisableVideoInput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( + IDeckLinkEncoderInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, GetAvailablePacketsCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailablePacketsCount )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [out] */ unsigned int *availablePacketsCount); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, SetMemoryAllocator) + HRESULT ( STDMETHODCALLTYPE *SetMemoryAllocator )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, EnableAudioInput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [in] */ BMDAudioFormat audioFormat, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, DisableAudioInput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( + IDeckLinkEncoderInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, GetAvailableAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [out] */ unsigned int *availableSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, StartStreams) + HRESULT ( STDMETHODCALLTYPE *StartStreams )( + IDeckLinkEncoderInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, StopStreams) + HRESULT ( STDMETHODCALLTYPE *StopStreams )( + IDeckLinkEncoderInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, PauseStreams) + HRESULT ( STDMETHODCALLTYPE *PauseStreams )( + IDeckLinkEncoderInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, FlushStreams) + HRESULT ( STDMETHODCALLTYPE *FlushStreams )( + IDeckLinkEncoderInput_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [in] */ IDeckLinkEncoderInputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v14_2_1, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkEncoderInput_v14_2_1 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + END_INTERFACE + } IDeckLinkEncoderInput_v14_2_1Vtbl; + + interface IDeckLinkEncoderInput_v14_2_1 + { + CONST_VTBL struct IDeckLinkEncoderInput_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkEncoderInput_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkEncoderInput_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkEncoderInput_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkEncoderInput_v14_2_1_DoesSupportVideoMode(This,connection,requestedMode,requestedCodec,requestedCodecProfile,flags,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedCodec,requestedCodecProfile,flags,supported) ) + +#define IDeckLinkEncoderInput_v14_2_1_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkEncoderInput_v14_2_1_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkEncoderInput_v14_2_1_EnableVideoInput(This,displayMode,pixelFormat,flags) \ + ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) + +#define IDeckLinkEncoderInput_v14_2_1_DisableVideoInput(This) \ + ( (This)->lpVtbl -> DisableVideoInput(This) ) + +#define IDeckLinkEncoderInput_v14_2_1_GetAvailablePacketsCount(This,availablePacketsCount) \ + ( (This)->lpVtbl -> GetAvailablePacketsCount(This,availablePacketsCount) ) + +#define IDeckLinkEncoderInput_v14_2_1_SetMemoryAllocator(This,theAllocator) \ + ( (This)->lpVtbl -> SetMemoryAllocator(This,theAllocator) ) + +#define IDeckLinkEncoderInput_v14_2_1_EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount) \ + ( (This)->lpVtbl -> EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount) ) + +#define IDeckLinkEncoderInput_v14_2_1_DisableAudioInput(This) \ + ( (This)->lpVtbl -> DisableAudioInput(This) ) + +#define IDeckLinkEncoderInput_v14_2_1_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) \ + ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) + +#define IDeckLinkEncoderInput_v14_2_1_StartStreams(This) \ + ( (This)->lpVtbl -> StartStreams(This) ) + +#define IDeckLinkEncoderInput_v14_2_1_StopStreams(This) \ + ( (This)->lpVtbl -> StopStreams(This) ) + +#define IDeckLinkEncoderInput_v14_2_1_PauseStreams(This) \ + ( (This)->lpVtbl -> PauseStreams(This) ) + +#define IDeckLinkEncoderInput_v14_2_1_FlushStreams(This) \ + ( (This)->lpVtbl -> FlushStreams(This) ) + +#define IDeckLinkEncoderInput_v14_2_1_SetCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetCallback(This,theCallback) ) + +#define IDeckLinkEncoderInput_v14_2_1_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkEncoderInput_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrame_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkVideoFrame_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoFrame_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoFrame_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3F716FE0-F023-4111-BE5D-EF4414C05B17") + IDeckLinkVideoFrame_v14_2_1 : public IUnknown + { + public: + virtual long STDMETHODCALLTYPE GetWidth( void) = 0; + + virtual long STDMETHODCALLTYPE GetHeight( void) = 0; + + virtual long STDMETHODCALLTYPE GetRowBytes( void) = 0; + + virtual BMDPixelFormat STDMETHODCALLTYPE GetPixelFormat( void) = 0; + + virtual BMDFrameFlags STDMETHODCALLTYPE GetFlags( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [out] */ void **buffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetTimecode( + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAncillaryData( + /* [out] */ IDeckLinkVideoFrameAncillary **ancillary) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoFrame_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoFrame_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetWidth) + long ( STDMETHODCALLTYPE *GetWidth )( + IDeckLinkVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetHeight) + long ( STDMETHODCALLTYPE *GetHeight )( + IDeckLinkVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetRowBytes) + long ( STDMETHODCALLTYPE *GetRowBytes )( + IDeckLinkVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetPixelFormat) + BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( + IDeckLinkVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetFlags) + BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( + IDeckLinkVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkVideoFrame_v14_2_1 * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetTimecode) + HRESULT ( STDMETHODCALLTYPE *GetTimecode )( + IDeckLinkVideoFrame_v14_2_1 * This, + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetAncillaryData) + HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( + IDeckLinkVideoFrame_v14_2_1 * This, + /* [out] */ IDeckLinkVideoFrameAncillary **ancillary); + + END_INTERFACE + } IDeckLinkVideoFrame_v14_2_1Vtbl; + + interface IDeckLinkVideoFrame_v14_2_1 + { + CONST_VTBL struct IDeckLinkVideoFrame_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoFrame_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoFrame_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoFrame_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoFrame_v14_2_1_GetWidth(This) \ + ( (This)->lpVtbl -> GetWidth(This) ) + +#define IDeckLinkVideoFrame_v14_2_1_GetHeight(This) \ + ( (This)->lpVtbl -> GetHeight(This) ) + +#define IDeckLinkVideoFrame_v14_2_1_GetRowBytes(This) \ + ( (This)->lpVtbl -> GetRowBytes(This) ) + +#define IDeckLinkVideoFrame_v14_2_1_GetPixelFormat(This) \ + ( (This)->lpVtbl -> GetPixelFormat(This) ) + +#define IDeckLinkVideoFrame_v14_2_1_GetFlags(This) \ + ( (This)->lpVtbl -> GetFlags(This) ) + +#define IDeckLinkVideoFrame_v14_2_1_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IDeckLinkVideoFrame_v14_2_1_GetTimecode(This,format,timecode) \ + ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) + +#define IDeckLinkVideoFrame_v14_2_1_GetAncillaryData(This,ancillary) \ + ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoFrame_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkMutableVideoFrame_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkMutableVideoFrame_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkMutableVideoFrame_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkMutableVideoFrame_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("69E2639F-40DA-4E19-B6F2-20ACE815C390") + IDeckLinkMutableVideoFrame_v14_2_1 : public IDeckLinkVideoFrame_v14_2_1 + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFlags( + /* [in] */ BMDFrameFlags newFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimecode( + /* [in] */ BMDTimecodeFormat format, + /* [in] */ IDeckLinkTimecode *timecode) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimecodeFromComponents( + /* [in] */ BMDTimecodeFormat format, + /* [in] */ unsigned char hours, + /* [in] */ unsigned char minutes, + /* [in] */ unsigned char seconds, + /* [in] */ unsigned char frames, + /* [in] */ BMDTimecodeFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAncillaryData( + /* [in] */ IDeckLinkVideoFrameAncillary *ancillary) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetTimecodeUserBits( + /* [in] */ BMDTimecodeFormat format, + /* [in] */ BMDTimecodeUserBits userBits) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkMutableVideoFrame_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkMutableVideoFrame_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkMutableVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkMutableVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetWidth) + long ( STDMETHODCALLTYPE *GetWidth )( + IDeckLinkMutableVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetHeight) + long ( STDMETHODCALLTYPE *GetHeight )( + IDeckLinkMutableVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetRowBytes) + long ( STDMETHODCALLTYPE *GetRowBytes )( + IDeckLinkMutableVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetPixelFormat) + BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( + IDeckLinkMutableVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetFlags) + BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( + IDeckLinkMutableVideoFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkMutableVideoFrame_v14_2_1 * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetTimecode) + HRESULT ( STDMETHODCALLTYPE *GetTimecode )( + IDeckLinkMutableVideoFrame_v14_2_1 * This, + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetAncillaryData) + HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( + IDeckLinkMutableVideoFrame_v14_2_1 * This, + /* [out] */ IDeckLinkVideoFrameAncillary **ancillary); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame_v14_2_1, SetFlags) + HRESULT ( STDMETHODCALLTYPE *SetFlags )( + IDeckLinkMutableVideoFrame_v14_2_1 * This, + /* [in] */ BMDFrameFlags newFlags); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame_v14_2_1, SetTimecode) + HRESULT ( STDMETHODCALLTYPE *SetTimecode )( + IDeckLinkMutableVideoFrame_v14_2_1 * This, + /* [in] */ BMDTimecodeFormat format, + /* [in] */ IDeckLinkTimecode *timecode); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame_v14_2_1, SetTimecodeFromComponents) + HRESULT ( STDMETHODCALLTYPE *SetTimecodeFromComponents )( + IDeckLinkMutableVideoFrame_v14_2_1 * This, + /* [in] */ BMDTimecodeFormat format, + /* [in] */ unsigned char hours, + /* [in] */ unsigned char minutes, + /* [in] */ unsigned char seconds, + /* [in] */ unsigned char frames, + /* [in] */ BMDTimecodeFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame_v14_2_1, SetAncillaryData) + HRESULT ( STDMETHODCALLTYPE *SetAncillaryData )( + IDeckLinkMutableVideoFrame_v14_2_1 * This, + /* [in] */ IDeckLinkVideoFrameAncillary *ancillary); + + DECLSPEC_XFGVIRT(IDeckLinkMutableVideoFrame_v14_2_1, SetTimecodeUserBits) + HRESULT ( STDMETHODCALLTYPE *SetTimecodeUserBits )( + IDeckLinkMutableVideoFrame_v14_2_1 * This, + /* [in] */ BMDTimecodeFormat format, + /* [in] */ BMDTimecodeUserBits userBits); + + END_INTERFACE + } IDeckLinkMutableVideoFrame_v14_2_1Vtbl; + + interface IDeckLinkMutableVideoFrame_v14_2_1 + { + CONST_VTBL struct IDeckLinkMutableVideoFrame_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkMutableVideoFrame_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkMutableVideoFrame_v14_2_1_GetWidth(This) \ + ( (This)->lpVtbl -> GetWidth(This) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_GetHeight(This) \ + ( (This)->lpVtbl -> GetHeight(This) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_GetRowBytes(This) \ + ( (This)->lpVtbl -> GetRowBytes(This) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_GetPixelFormat(This) \ + ( (This)->lpVtbl -> GetPixelFormat(This) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_GetFlags(This) \ + ( (This)->lpVtbl -> GetFlags(This) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_GetTimecode(This,format,timecode) \ + ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_GetAncillaryData(This,ancillary) \ + ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) + + +#define IDeckLinkMutableVideoFrame_v14_2_1_SetFlags(This,newFlags) \ + ( (This)->lpVtbl -> SetFlags(This,newFlags) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_SetTimecode(This,format,timecode) \ + ( (This)->lpVtbl -> SetTimecode(This,format,timecode) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags) \ + ( (This)->lpVtbl -> SetTimecodeFromComponents(This,format,hours,minutes,seconds,frames,flags) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_SetAncillaryData(This,ancillary) \ + ( (This)->lpVtbl -> SetAncillaryData(This,ancillary) ) + +#define IDeckLinkMutableVideoFrame_v14_2_1_SetTimecodeUserBits(This,format,userBits) \ + ( (This)->lpVtbl -> SetTimecodeUserBits(This,format,userBits) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkMutableVideoFrame_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrame3DExtensions_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkVideoFrame3DExtensions_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoFrame3DExtensions_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoFrame3DExtensions_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("DA0F7E4A-EDC7-48A8-9CDD-2DB51C729CD7") + IDeckLinkVideoFrame3DExtensions_v14_2_1 : public IUnknown + { + public: + virtual BMDVideo3DPackingFormat STDMETHODCALLTYPE Get3DPackingFormat( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameForRightEye( + /* [out] */ IDeckLinkVideoFrame_v14_2_1 **rightEyeFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoFrame3DExtensions_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoFrame3DExtensions_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoFrame3DExtensions_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoFrame3DExtensions_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame3DExtensions_v14_2_1, Get3DPackingFormat) + BMDVideo3DPackingFormat ( STDMETHODCALLTYPE *Get3DPackingFormat )( + IDeckLinkVideoFrame3DExtensions_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame3DExtensions_v14_2_1, GetFrameForRightEye) + HRESULT ( STDMETHODCALLTYPE *GetFrameForRightEye )( + IDeckLinkVideoFrame3DExtensions_v14_2_1 * This, + /* [out] */ IDeckLinkVideoFrame_v14_2_1 **rightEyeFrame); + + END_INTERFACE + } IDeckLinkVideoFrame3DExtensions_v14_2_1Vtbl; + + interface IDeckLinkVideoFrame3DExtensions_v14_2_1 + { + CONST_VTBL struct IDeckLinkVideoFrame3DExtensions_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoFrame3DExtensions_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoFrame3DExtensions_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoFrame3DExtensions_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoFrame3DExtensions_v14_2_1_Get3DPackingFormat(This) \ + ( (This)->lpVtbl -> Get3DPackingFormat(This) ) + +#define IDeckLinkVideoFrame3DExtensions_v14_2_1_GetFrameForRightEye(This,rightEyeFrame) \ + ( (This)->lpVtbl -> GetFrameForRightEye(This,rightEyeFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoFrame3DExtensions_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoInputFrame_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkVideoInputFrame_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoInputFrame_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoInputFrame_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("05CFE374-537C-4094-9A57-680525118F44") + IDeckLinkVideoInputFrame_v14_2_1 : public IDeckLinkVideoFrame_v14_2_1 + { + public: + virtual HRESULT STDMETHODCALLTYPE GetStreamTime( + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceTimestamp( + /* [in] */ BMDTimeScale timeScale, + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoInputFrame_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoInputFrame_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoInputFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoInputFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetWidth) + long ( STDMETHODCALLTYPE *GetWidth )( + IDeckLinkVideoInputFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetHeight) + long ( STDMETHODCALLTYPE *GetHeight )( + IDeckLinkVideoInputFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetRowBytes) + long ( STDMETHODCALLTYPE *GetRowBytes )( + IDeckLinkVideoInputFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetPixelFormat) + BMDPixelFormat ( STDMETHODCALLTYPE *GetPixelFormat )( + IDeckLinkVideoInputFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetFlags) + BMDFrameFlags ( STDMETHODCALLTYPE *GetFlags )( + IDeckLinkVideoInputFrame_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkVideoInputFrame_v14_2_1 * This, + /* [out] */ void **buffer); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetTimecode) + HRESULT ( STDMETHODCALLTYPE *GetTimecode )( + IDeckLinkVideoInputFrame_v14_2_1 * This, + /* [in] */ BMDTimecodeFormat format, + /* [out] */ IDeckLinkTimecode **timecode); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrame_v14_2_1, GetAncillaryData) + HRESULT ( STDMETHODCALLTYPE *GetAncillaryData )( + IDeckLinkVideoInputFrame_v14_2_1 * This, + /* [out] */ IDeckLinkVideoFrameAncillary **ancillary); + + DECLSPEC_XFGVIRT(IDeckLinkVideoInputFrame_v14_2_1, GetStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetStreamTime )( + IDeckLinkVideoInputFrame_v14_2_1 * This, + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkVideoInputFrame_v14_2_1, GetHardwareReferenceTimestamp) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceTimestamp )( + IDeckLinkVideoInputFrame_v14_2_1 * This, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ BMDTimeValue *frameTime, + /* [out] */ BMDTimeValue *frameDuration); + + END_INTERFACE + } IDeckLinkVideoInputFrame_v14_2_1Vtbl; + + interface IDeckLinkVideoInputFrame_v14_2_1 + { + CONST_VTBL struct IDeckLinkVideoInputFrame_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoInputFrame_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoInputFrame_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoInputFrame_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoInputFrame_v14_2_1_GetWidth(This) \ + ( (This)->lpVtbl -> GetWidth(This) ) + +#define IDeckLinkVideoInputFrame_v14_2_1_GetHeight(This) \ + ( (This)->lpVtbl -> GetHeight(This) ) + +#define IDeckLinkVideoInputFrame_v14_2_1_GetRowBytes(This) \ + ( (This)->lpVtbl -> GetRowBytes(This) ) + +#define IDeckLinkVideoInputFrame_v14_2_1_GetPixelFormat(This) \ + ( (This)->lpVtbl -> GetPixelFormat(This) ) + +#define IDeckLinkVideoInputFrame_v14_2_1_GetFlags(This) \ + ( (This)->lpVtbl -> GetFlags(This) ) + +#define IDeckLinkVideoInputFrame_v14_2_1_GetBytes(This,buffer) \ + ( (This)->lpVtbl -> GetBytes(This,buffer) ) + +#define IDeckLinkVideoInputFrame_v14_2_1_GetTimecode(This,format,timecode) \ + ( (This)->lpVtbl -> GetTimecode(This,format,timecode) ) + +#define IDeckLinkVideoInputFrame_v14_2_1_GetAncillaryData(This,ancillary) \ + ( (This)->lpVtbl -> GetAncillaryData(This,ancillary) ) + + +#define IDeckLinkVideoInputFrame_v14_2_1_GetStreamTime(This,frameTime,frameDuration,timeScale) \ + ( (This)->lpVtbl -> GetStreamTime(This,frameTime,frameDuration,timeScale) ) + +#define IDeckLinkVideoInputFrame_v14_2_1_GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) \ + ( (This)->lpVtbl -> GetHardwareReferenceTimestamp(This,timeScale,frameTime,frameDuration) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoInputFrame_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkScreenPreviewCallback_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkScreenPreviewCallback_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkScreenPreviewCallback_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkScreenPreviewCallback_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("B1D3F49A-85FE-4C5D-95C8-0B5D5DCCD438") + IDeckLinkScreenPreviewCallback_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DrawFrame( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkScreenPreviewCallback_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkScreenPreviewCallback_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkScreenPreviewCallback_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkScreenPreviewCallback_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkScreenPreviewCallback_v14_2_1, DrawFrame) + HRESULT ( STDMETHODCALLTYPE *DrawFrame )( + IDeckLinkScreenPreviewCallback_v14_2_1 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame); + + END_INTERFACE + } IDeckLinkScreenPreviewCallback_v14_2_1Vtbl; + + interface IDeckLinkScreenPreviewCallback_v14_2_1 + { + CONST_VTBL struct IDeckLinkScreenPreviewCallback_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkScreenPreviewCallback_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkScreenPreviewCallback_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkScreenPreviewCallback_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkScreenPreviewCallback_v14_2_1_DrawFrame(This,theFrame) \ + ( (This)->lpVtbl -> DrawFrame(This,theFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkScreenPreviewCallback_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkGLScreenPreviewHelper_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkGLScreenPreviewHelper_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkGLScreenPreviewHelper_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkGLScreenPreviewHelper_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("504E2209-CAC7-4C1A-9FB4-C5BB6274D22F") + IDeckLinkGLScreenPreviewHelper_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE InitializeGL( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PaintGL( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFrame( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat( + /* [in] */ BMD3DPreviewFormat previewFormat) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkGLScreenPreviewHelper_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkGLScreenPreviewHelper_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkGLScreenPreviewHelper_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkGLScreenPreviewHelper_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkGLScreenPreviewHelper_v14_2_1, InitializeGL) + HRESULT ( STDMETHODCALLTYPE *InitializeGL )( + IDeckLinkGLScreenPreviewHelper_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkGLScreenPreviewHelper_v14_2_1, PaintGL) + HRESULT ( STDMETHODCALLTYPE *PaintGL )( + IDeckLinkGLScreenPreviewHelper_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkGLScreenPreviewHelper_v14_2_1, SetFrame) + HRESULT ( STDMETHODCALLTYPE *SetFrame )( + IDeckLinkGLScreenPreviewHelper_v14_2_1 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkGLScreenPreviewHelper_v14_2_1, Set3DPreviewFormat) + HRESULT ( STDMETHODCALLTYPE *Set3DPreviewFormat )( + IDeckLinkGLScreenPreviewHelper_v14_2_1 * This, + /* [in] */ BMD3DPreviewFormat previewFormat); + + END_INTERFACE + } IDeckLinkGLScreenPreviewHelper_v14_2_1Vtbl; + + interface IDeckLinkGLScreenPreviewHelper_v14_2_1 + { + CONST_VTBL struct IDeckLinkGLScreenPreviewHelper_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkGLScreenPreviewHelper_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkGLScreenPreviewHelper_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkGLScreenPreviewHelper_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkGLScreenPreviewHelper_v14_2_1_InitializeGL(This) \ + ( (This)->lpVtbl -> InitializeGL(This) ) + +#define IDeckLinkGLScreenPreviewHelper_v14_2_1_PaintGL(This) \ + ( (This)->lpVtbl -> PaintGL(This) ) + +#define IDeckLinkGLScreenPreviewHelper_v14_2_1_SetFrame(This,theFrame) \ + ( (This)->lpVtbl -> SetFrame(This,theFrame) ) + +#define IDeckLinkGLScreenPreviewHelper_v14_2_1_Set3DPreviewFormat(This,previewFormat) \ + ( (This)->lpVtbl -> Set3DPreviewFormat(This,previewFormat) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkGLScreenPreviewHelper_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkDX9ScreenPreviewHelper_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkDX9ScreenPreviewHelper_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkDX9ScreenPreviewHelper_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkDX9ScreenPreviewHelper_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2094B522-D1A1-40C0-9AC7-1C012218EF02") + IDeckLinkDX9ScreenPreviewHelper_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Initialize( + /* [in] */ void *device) = 0; + + virtual HRESULT STDMETHODCALLTYPE Render( + /* [in] */ RECT *rc) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFrame( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat( + /* [in] */ BMD3DPreviewFormat previewFormat) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkDX9ScreenPreviewHelper_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkDX9ScreenPreviewHelper_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkDX9ScreenPreviewHelper_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkDX9ScreenPreviewHelper_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkDX9ScreenPreviewHelper_v14_2_1, Initialize) + HRESULT ( STDMETHODCALLTYPE *Initialize )( + IDeckLinkDX9ScreenPreviewHelper_v14_2_1 * This, + /* [in] */ void *device); + + DECLSPEC_XFGVIRT(IDeckLinkDX9ScreenPreviewHelper_v14_2_1, Render) + HRESULT ( STDMETHODCALLTYPE *Render )( + IDeckLinkDX9ScreenPreviewHelper_v14_2_1 * This, + /* [in] */ RECT *rc); + + DECLSPEC_XFGVIRT(IDeckLinkDX9ScreenPreviewHelper_v14_2_1, SetFrame) + HRESULT ( STDMETHODCALLTYPE *SetFrame )( + IDeckLinkDX9ScreenPreviewHelper_v14_2_1 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkDX9ScreenPreviewHelper_v14_2_1, Set3DPreviewFormat) + HRESULT ( STDMETHODCALLTYPE *Set3DPreviewFormat )( + IDeckLinkDX9ScreenPreviewHelper_v14_2_1 * This, + /* [in] */ BMD3DPreviewFormat previewFormat); + + END_INTERFACE + } IDeckLinkDX9ScreenPreviewHelper_v14_2_1Vtbl; + + interface IDeckLinkDX9ScreenPreviewHelper_v14_2_1 + { + CONST_VTBL struct IDeckLinkDX9ScreenPreviewHelper_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkDX9ScreenPreviewHelper_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkDX9ScreenPreviewHelper_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkDX9ScreenPreviewHelper_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkDX9ScreenPreviewHelper_v14_2_1_Initialize(This,device) \ + ( (This)->lpVtbl -> Initialize(This,device) ) + +#define IDeckLinkDX9ScreenPreviewHelper_v14_2_1_Render(This,rc) \ + ( (This)->lpVtbl -> Render(This,rc) ) + +#define IDeckLinkDX9ScreenPreviewHelper_v14_2_1_SetFrame(This,theFrame) \ + ( (This)->lpVtbl -> SetFrame(This,theFrame) ) + +#define IDeckLinkDX9ScreenPreviewHelper_v14_2_1_Set3DPreviewFormat(This,previewFormat) \ + ( (This)->lpVtbl -> Set3DPreviewFormat(This,previewFormat) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkDX9ScreenPreviewHelper_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("AD8EC84A-7DDE-11E9-8F9E-2A86E4085A59") + IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Initialize( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE Render( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetSurfaceSize( + /* [in] */ unsigned int width, + /* [in] */ unsigned int height) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFrame( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE Set3DPreviewFormat( + /* [in] */ BMD3DPreviewFormat previewFormat) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBackBuffer( + /* [out] */ void **backBuffer) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1, Initialize) + HRESULT ( STDMETHODCALLTYPE *Initialize )( + IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1, Render) + HRESULT ( STDMETHODCALLTYPE *Render )( + IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1, SetSurfaceSize) + HRESULT ( STDMETHODCALLTYPE *SetSurfaceSize )( + IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 * This, + /* [in] */ unsigned int width, + /* [in] */ unsigned int height); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1, SetFrame) + HRESULT ( STDMETHODCALLTYPE *SetFrame )( + IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1, Set3DPreviewFormat) + HRESULT ( STDMETHODCALLTYPE *Set3DPreviewFormat )( + IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 * This, + /* [in] */ BMD3DPreviewFormat previewFormat); + + DECLSPEC_XFGVIRT(IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1, GetBackBuffer) + HRESULT ( STDMETHODCALLTYPE *GetBackBuffer )( + IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 * This, + /* [out] */ void **backBuffer); + + END_INTERFACE + } IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1Vtbl; + + interface IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1 + { + CONST_VTBL struct IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_Initialize(This) \ + ( (This)->lpVtbl -> Initialize(This) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_Render(This) \ + ( (This)->lpVtbl -> Render(This) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_SetSurfaceSize(This,width,height) \ + ( (This)->lpVtbl -> SetSurfaceSize(This,width,height) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_SetFrame(This,theFrame) \ + ( (This)->lpVtbl -> SetFrame(This,theFrame) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_Set3DPreviewFormat(This,previewFormat) \ + ( (This)->lpVtbl -> Set3DPreviewFormat(This,previewFormat) ) + +#define IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_GetBackBuffer(This,backBuffer) \ + ( (This)->lpVtbl -> GetBackBuffer(This,backBuffer) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoConversion_v14_2_1_INTERFACE_DEFINED__ +#define __IDeckLinkVideoConversion_v14_2_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoConversion_v14_2_1 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoConversion_v14_2_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3BBCB8A2-DA2C-42D9-B5D8-88083644E99A") + IDeckLinkVideoConversion_v14_2_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE ConvertFrame( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *srcFrame, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *dstFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoConversion_v14_2_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoConversion_v14_2_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoConversion_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoConversion_v14_2_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoConversion_v14_2_1, ConvertFrame) + HRESULT ( STDMETHODCALLTYPE *ConvertFrame )( + IDeckLinkVideoConversion_v14_2_1 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *srcFrame, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *dstFrame); + + END_INTERFACE + } IDeckLinkVideoConversion_v14_2_1Vtbl; + + interface IDeckLinkVideoConversion_v14_2_1 + { + CONST_VTBL struct IDeckLinkVideoConversion_v14_2_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoConversion_v14_2_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoConversion_v14_2_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoConversion_v14_2_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoConversion_v14_2_1_ConvertFrame(This,srcFrame,dstFrame) \ + ( (This)->lpVtbl -> ConvertFrame(This,srcFrame,dstFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoConversion_v14_2_1_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_CDeckLinkGLScreenPreviewHelper_v14_2_1; + +#ifdef __cplusplus + +class DECLSPEC_UUID("F63E77C7-B655-4A4A-9AD0-3CA85D394343") +CDeckLinkGLScreenPreviewHelper_v14_2_1; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkGL3ScreenPreviewHelper_v14_2_1; + +#ifdef __cplusplus + +class DECLSPEC_UUID("00696A71-EBC7-491F-AC02-18D3393F33F0") +CDeckLinkGL3ScreenPreviewHelper_v14_2_1; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkDX9ScreenPreviewHelper_v14_2_1; + +#ifdef __cplusplus + +class DECLSPEC_UUID("CC010023-E01D-4525-9D59-80C8AB3DC7A0") +CDeckLinkDX9ScreenPreviewHelper_v14_2_1; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1; + +#ifdef __cplusplus + +class DECLSPEC_UUID("EF2A8478-7DDF-11E9-8F9E-2A86E4085A59") +CDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkVideoConversion_v14_2_1; + +#ifdef __cplusplus + +class DECLSPEC_UUID("7DBBBB11-5B7B-467D-AEA4-CEA468FD368C") +CDeckLinkVideoConversion_v14_2_1; +#endif + +#ifndef __IDeckLinkInputCallback_v11_5_1_INTERFACE_DEFINED__ +#define __IDeckLinkInputCallback_v11_5_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkInputCallback_v11_5_1 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkInputCallback_v11_5_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("DD04E5EC-7415-42AB-AE4A-E80C4DFC044A") + IDeckLinkInputCallback_v11_5_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged( + /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents, + /* [in] */ IDeckLinkDisplayMode *newDisplayMode, + /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags) = 0; + + virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived( + /* [in] */ IDeckLinkVideoInputFrame_v14_2_1 *videoFrame, + /* [in] */ IDeckLinkAudioInputPacket *audioPacket) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkInputCallback_v11_5_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkInputCallback_v11_5_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkInputCallback_v11_5_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkInputCallback_v11_5_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInputCallback_v11_5_1, VideoInputFormatChanged) + HRESULT ( STDMETHODCALLTYPE *VideoInputFormatChanged )( + IDeckLinkInputCallback_v11_5_1 * This, + /* [in] */ BMDVideoInputFormatChangedEvents notificationEvents, + /* [in] */ IDeckLinkDisplayMode *newDisplayMode, + /* [in] */ BMDDetectedVideoInputFormatFlags detectedSignalFlags); + + DECLSPEC_XFGVIRT(IDeckLinkInputCallback_v11_5_1, VideoInputFrameArrived) + HRESULT ( STDMETHODCALLTYPE *VideoInputFrameArrived )( + IDeckLinkInputCallback_v11_5_1 * This, + /* [in] */ IDeckLinkVideoInputFrame_v14_2_1 *videoFrame, + /* [in] */ IDeckLinkAudioInputPacket *audioPacket); + + END_INTERFACE + } IDeckLinkInputCallback_v11_5_1Vtbl; + + interface IDeckLinkInputCallback_v11_5_1 + { + CONST_VTBL struct IDeckLinkInputCallback_v11_5_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkInputCallback_v11_5_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkInputCallback_v11_5_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkInputCallback_v11_5_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkInputCallback_v11_5_1_VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) \ + ( (This)->lpVtbl -> VideoInputFormatChanged(This,notificationEvents,newDisplayMode,detectedSignalFlags) ) + +#define IDeckLinkInputCallback_v11_5_1_VideoInputFrameArrived(This,videoFrame,audioPacket) \ + ( (This)->lpVtbl -> VideoInputFrameArrived(This,videoFrame,audioPacket) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkInputCallback_v11_5_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkInput_v11_5_1_INTERFACE_DEFINED__ +#define __IDeckLinkInput_v11_5_1_INTERFACE_DEFINED__ + +/* interface IDeckLinkInput_v11_5_1 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkInput_v11_5_1; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("9434C6E4-B15D-4B1C-979E-661E3DDCB4B9") + IDeckLinkInput_v11_5_1 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDVideoInputConversionMode conversionMode, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( + /* [out] */ unsigned int *availableFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoInputFrameMemoryAllocator( + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( + /* [out] */ unsigned int *availableSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IDeckLinkInputCallback_v11_5_1 *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkInput_v11_5_1Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkInput_v11_5_1 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkInput_v11_5_1 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkInput_v11_5_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkInput_v11_5_1 * This, + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDVideoInputConversionMode conversionMode, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkInput_v11_5_1 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkInput_v11_5_1 * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkInput_v11_5_1 * This, + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, EnableVideoInput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( + IDeckLinkInput_v11_5_1 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, DisableVideoInput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( + IDeckLinkInput_v11_5_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, GetAvailableVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( + IDeckLinkInput_v11_5_1 * This, + /* [out] */ unsigned int *availableFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, SetVideoInputFrameMemoryAllocator) + HRESULT ( STDMETHODCALLTYPE *SetVideoInputFrameMemoryAllocator )( + IDeckLinkInput_v11_5_1 * This, + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, EnableAudioInput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( + IDeckLinkInput_v11_5_1 * This, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, DisableAudioInput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( + IDeckLinkInput_v11_5_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, GetAvailableAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( + IDeckLinkInput_v11_5_1 * This, + /* [out] */ unsigned int *availableSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, StartStreams) + HRESULT ( STDMETHODCALLTYPE *StartStreams )( + IDeckLinkInput_v11_5_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, StopStreams) + HRESULT ( STDMETHODCALLTYPE *StopStreams )( + IDeckLinkInput_v11_5_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, PauseStreams) + HRESULT ( STDMETHODCALLTYPE *PauseStreams )( + IDeckLinkInput_v11_5_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, FlushStreams) + HRESULT ( STDMETHODCALLTYPE *FlushStreams )( + IDeckLinkInput_v11_5_1 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkInput_v11_5_1 * This, + /* [in] */ IDeckLinkInputCallback_v11_5_1 *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_5_1, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkInput_v11_5_1 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + END_INTERFACE + } IDeckLinkInput_v11_5_1Vtbl; + + interface IDeckLinkInput_v11_5_1 + { + CONST_VTBL struct IDeckLinkInput_v11_5_1Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkInput_v11_5_1_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkInput_v11_5_1_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkInput_v11_5_1_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkInput_v11_5_1_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,conversionMode,flags,actualMode,supported) ) + +#define IDeckLinkInput_v11_5_1_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkInput_v11_5_1_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkInput_v11_5_1_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkInput_v11_5_1_EnableVideoInput(This,displayMode,pixelFormat,flags) \ + ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) + +#define IDeckLinkInput_v11_5_1_DisableVideoInput(This) \ + ( (This)->lpVtbl -> DisableVideoInput(This) ) + +#define IDeckLinkInput_v11_5_1_GetAvailableVideoFrameCount(This,availableFrameCount) \ + ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) + +#define IDeckLinkInput_v11_5_1_SetVideoInputFrameMemoryAllocator(This,theAllocator) \ + ( (This)->lpVtbl -> SetVideoInputFrameMemoryAllocator(This,theAllocator) ) + +#define IDeckLinkInput_v11_5_1_EnableAudioInput(This,sampleRate,sampleType,channelCount) \ + ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) + +#define IDeckLinkInput_v11_5_1_DisableAudioInput(This) \ + ( (This)->lpVtbl -> DisableAudioInput(This) ) + +#define IDeckLinkInput_v11_5_1_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) \ + ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) + +#define IDeckLinkInput_v11_5_1_StartStreams(This) \ + ( (This)->lpVtbl -> StartStreams(This) ) + +#define IDeckLinkInput_v11_5_1_StopStreams(This) \ + ( (This)->lpVtbl -> StopStreams(This) ) + +#define IDeckLinkInput_v11_5_1_PauseStreams(This) \ + ( (This)->lpVtbl -> PauseStreams(This) ) + +#define IDeckLinkInput_v11_5_1_FlushStreams(This) \ + ( (This)->lpVtbl -> FlushStreams(This) ) + +#define IDeckLinkInput_v11_5_1_SetCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetCallback(This,theCallback) ) + +#define IDeckLinkInput_v11_5_1_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkInput_v11_5_1_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkConfiguration_v10_11_INTERFACE_DEFINED__ +#define __IDeckLinkConfiguration_v10_11_INTERFACE_DEFINED__ + +/* interface IDeckLinkConfiguration_v10_11 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkConfiguration_v10_11; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("EF90380B-4AE5-4346-9077-E288E149F129") + IDeckLinkConfiguration_v10_11 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkConfiguration_v10_11Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkConfiguration_v10_11 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkConfiguration_v10_11 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkConfiguration_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_11, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IDeckLinkConfiguration_v10_11 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_11, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkConfiguration_v10_11 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_11, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkConfiguration_v10_11 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_11, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkConfiguration_v10_11 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_11, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IDeckLinkConfiguration_v10_11 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_11, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkConfiguration_v10_11 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_11, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IDeckLinkConfiguration_v10_11 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_11, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkConfiguration_v10_11 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_11, WriteConfigurationToPreferences) + HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( + IDeckLinkConfiguration_v10_11 * This); + + END_INTERFACE + } IDeckLinkConfiguration_v10_11Vtbl; + + interface IDeckLinkConfiguration_v10_11 + { + CONST_VTBL struct IDeckLinkConfiguration_v10_11Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkConfiguration_v10_11_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkConfiguration_v10_11_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkConfiguration_v10_11_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkConfiguration_v10_11_SetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_11_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_11_SetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_11_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_11_SetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_11_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_11_SetString(This,cfgID,value) \ + ( (This)->lpVtbl -> SetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_11_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_11_WriteConfigurationToPreferences(This) \ + ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkConfiguration_v10_11_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkAttributes_v10_11_INTERFACE_DEFINED__ +#define __IDeckLinkAttributes_v10_11_INTERFACE_DEFINED__ + +/* interface IDeckLinkAttributes_v10_11 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkAttributes_v10_11; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("ABC11843-D966-44CB-96E2-A1CB5D3135C4") + IDeckLinkAttributes_v10_11 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ BSTR *value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkAttributes_v10_11Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkAttributes_v10_11 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkAttributes_v10_11 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkAttributes_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkAttributes_v10_11, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkAttributes_v10_11 * This, + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkAttributes_v10_11, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkAttributes_v10_11 * This, + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkAttributes_v10_11, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkAttributes_v10_11 * This, + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkAttributes_v10_11, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkAttributes_v10_11 * This, + /* [in] */ BMDDeckLinkAttributeID cfgID, + /* [out] */ BSTR *value); + + END_INTERFACE + } IDeckLinkAttributes_v10_11Vtbl; + + interface IDeckLinkAttributes_v10_11 + { + CONST_VTBL struct IDeckLinkAttributes_v10_11Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkAttributes_v10_11_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkAttributes_v10_11_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkAttributes_v10_11_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkAttributes_v10_11_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkAttributes_v10_11_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkAttributes_v10_11_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkAttributes_v10_11_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkAttributes_v10_11_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkNotification_v10_11_INTERFACE_DEFINED__ +#define __IDeckLinkNotification_v10_11_INTERFACE_DEFINED__ + +/* interface IDeckLinkNotification_v10_11 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkNotification_v10_11; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("0A1FB207-E215-441B-9B19-6FA1575946C5") + IDeckLinkNotification_v10_11 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Subscribe( + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE Unsubscribe( + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkNotification_v10_11Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkNotification_v10_11 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkNotification_v10_11 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkNotification_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkNotification_v10_11, Subscribe) + HRESULT ( STDMETHODCALLTYPE *Subscribe )( + IDeckLinkNotification_v10_11 * This, + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkNotification_v10_11, Unsubscribe) + HRESULT ( STDMETHODCALLTYPE *Unsubscribe )( + IDeckLinkNotification_v10_11 * This, + /* [in] */ BMDNotifications topic, + /* [in] */ IDeckLinkNotificationCallback *theCallback); + + END_INTERFACE + } IDeckLinkNotification_v10_11Vtbl; + + interface IDeckLinkNotification_v10_11 + { + CONST_VTBL struct IDeckLinkNotification_v10_11Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkNotification_v10_11_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkNotification_v10_11_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkNotification_v10_11_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkNotification_v10_11_Subscribe(This,topic,theCallback) \ + ( (This)->lpVtbl -> Subscribe(This,topic,theCallback) ) + +#define IDeckLinkNotification_v10_11_Unsubscribe(This,topic,theCallback) \ + ( (This)->lpVtbl -> Unsubscribe(This,topic,theCallback) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkNotification_v10_11_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkOutput_v10_11_INTERFACE_DEFINED__ +#define __IDeckLinkOutput_v10_11_INTERFACE_DEFINED__ + +/* interface IDeckLinkOutput_v10_11 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkOutput_v10_11; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CC5C8A6E-3F2F-4B3A-87EA-FD78AF300564") + IDeckLinkOutput_v10_11 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoOutputFlags flags, + /* [out] */ BMDDisplayModeSupport_v10_11 *result, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDVideoOutputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator( + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( + /* [in] */ int width, + /* [in] */ int height, + /* [in] */ int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDFrameFlags flags, + /* [out] */ IDeckLinkMutableVideoFrame_v14_2_1 **outFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeValue displayTime, + /* [in] */ BMDTimeValue displayDuration, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( + /* [in] */ IDeckLinkVideoOutputCallback_v14_2_1 *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount( + /* [out] */ unsigned int *bufferedFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount, + /* [in] */ BMDAudioOutputStreamType streamType) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [out] */ unsigned int *sampleFramesWritten) = 0; + + virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [in] */ BMDTimeValue streamTime, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ unsigned int *sampleFramesWritten) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( + /* [out] */ unsigned int *bufferedSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( + /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( + /* [in] */ BMDTimeValue playbackStartTime, + /* [in] */ BMDTimeScale timeScale, + /* [in] */ double playbackSpeed) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( + /* [in] */ BMDTimeValue stopPlaybackAtTime, + /* [out] */ BMDTimeValue *actualStopTime, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( + /* [out] */ BOOL *active) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *streamTime, + /* [out] */ double *playbackSpeed) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus( + /* [out] */ BMDReferenceStatus *referenceStatus) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameCompletionReferenceTimestamp( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *frameCompletionTimestamp) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkOutput_v10_11Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkOutput_v10_11 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkOutput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoOutputFlags flags, + /* [out] */ BMDDisplayModeSupport_v10_11 *result, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkOutput_v10_11 * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, EnableVideoOutput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDVideoOutputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, DisableVideoOutput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( + IDeckLinkOutput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, SetVideoOutputFrameMemoryAllocator) + HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, CreateVideoFrame) + HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ int width, + /* [in] */ int height, + /* [in] */ int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDFrameFlags flags, + /* [out] */ IDeckLinkMutableVideoFrame_v14_2_1 **outFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, CreateAncillaryData) + HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, DisplayVideoFrameSync) + HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, ScheduleVideoFrame) + HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeValue displayTime, + /* [in] */ BMDTimeValue displayDuration, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, SetScheduledFrameCompletionCallback) + HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ IDeckLinkVideoOutputCallback_v14_2_1 *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, GetBufferedVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( + IDeckLinkOutput_v10_11 * This, + /* [out] */ unsigned int *bufferedFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, EnableAudioOutput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount, + /* [in] */ BMDAudioOutputStreamType streamType); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, DisableAudioOutput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( + IDeckLinkOutput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, WriteAudioSamplesSync) + HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [out] */ unsigned int *sampleFramesWritten); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, BeginAudioPreroll) + HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( + IDeckLinkOutput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, EndAudioPreroll) + HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( + IDeckLinkOutput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, ScheduleAudioSamples) + HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [in] */ BMDTimeValue streamTime, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ unsigned int *sampleFramesWritten); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, GetBufferedAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( + IDeckLinkOutput_v10_11 * This, + /* [out] */ unsigned int *bufferedSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, FlushBufferedAudioSamples) + HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( + IDeckLinkOutput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, SetAudioCallback) + HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ IDeckLinkAudioOutputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, StartScheduledPlayback) + HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ BMDTimeValue playbackStartTime, + /* [in] */ BMDTimeScale timeScale, + /* [in] */ double playbackSpeed); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, StopScheduledPlayback) + HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ BMDTimeValue stopPlaybackAtTime, + /* [out] */ BMDTimeValue *actualStopTime, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, IsScheduledPlaybackRunning) + HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( + IDeckLinkOutput_v10_11 * This, + /* [out] */ BOOL *active); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, GetScheduledStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetScheduledStreamTime )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *streamTime, + /* [out] */ double *playbackSpeed); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, GetReferenceStatus) + HRESULT ( STDMETHODCALLTYPE *GetReferenceStatus )( + IDeckLinkOutput_v10_11 * This, + /* [out] */ BMDReferenceStatus *referenceStatus); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v10_11, GetFrameCompletionReferenceTimestamp) + HRESULT ( STDMETHODCALLTYPE *GetFrameCompletionReferenceTimestamp )( + IDeckLinkOutput_v10_11 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *frameCompletionTimestamp); + + END_INTERFACE + } IDeckLinkOutput_v10_11Vtbl; + + interface IDeckLinkOutput_v10_11 + { + CONST_VTBL struct IDeckLinkOutput_v10_11Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkOutput_v10_11_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkOutput_v10_11_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkOutput_v10_11_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkOutput_v10_11_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) ) + +#define IDeckLinkOutput_v10_11_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkOutput_v10_11_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkOutput_v10_11_EnableVideoOutput(This,displayMode,flags) \ + ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode,flags) ) + +#define IDeckLinkOutput_v10_11_DisableVideoOutput(This) \ + ( (This)->lpVtbl -> DisableVideoOutput(This) ) + +#define IDeckLinkOutput_v10_11_SetVideoOutputFrameMemoryAllocator(This,theAllocator) \ + ( (This)->lpVtbl -> SetVideoOutputFrameMemoryAllocator(This,theAllocator) ) + +#define IDeckLinkOutput_v10_11_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) \ + ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) + +#define IDeckLinkOutput_v10_11_CreateAncillaryData(This,pixelFormat,outBuffer) \ + ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) + +#define IDeckLinkOutput_v10_11_DisplayVideoFrameSync(This,theFrame) \ + ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) + +#define IDeckLinkOutput_v10_11_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) \ + ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) + +#define IDeckLinkOutput_v10_11_SetScheduledFrameCompletionCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) + +#define IDeckLinkOutput_v10_11_GetBufferedVideoFrameCount(This,bufferedFrameCount) \ + ( (This)->lpVtbl -> GetBufferedVideoFrameCount(This,bufferedFrameCount) ) + +#define IDeckLinkOutput_v10_11_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) \ + ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) ) + +#define IDeckLinkOutput_v10_11_DisableAudioOutput(This) \ + ( (This)->lpVtbl -> DisableAudioOutput(This) ) + +#define IDeckLinkOutput_v10_11_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) \ + ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) + +#define IDeckLinkOutput_v10_11_BeginAudioPreroll(This) \ + ( (This)->lpVtbl -> BeginAudioPreroll(This) ) + +#define IDeckLinkOutput_v10_11_EndAudioPreroll(This) \ + ( (This)->lpVtbl -> EndAudioPreroll(This) ) + +#define IDeckLinkOutput_v10_11_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) \ + ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) + +#define IDeckLinkOutput_v10_11_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) \ + ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) ) + +#define IDeckLinkOutput_v10_11_FlushBufferedAudioSamples(This) \ + ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) + +#define IDeckLinkOutput_v10_11_SetAudioCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) + +#define IDeckLinkOutput_v10_11_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) \ + ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) + +#define IDeckLinkOutput_v10_11_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) \ + ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) + +#define IDeckLinkOutput_v10_11_IsScheduledPlaybackRunning(This,active) \ + ( (This)->lpVtbl -> IsScheduledPlaybackRunning(This,active) ) + +#define IDeckLinkOutput_v10_11_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) \ + ( (This)->lpVtbl -> GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) ) + +#define IDeckLinkOutput_v10_11_GetReferenceStatus(This,referenceStatus) \ + ( (This)->lpVtbl -> GetReferenceStatus(This,referenceStatus) ) + +#define IDeckLinkOutput_v10_11_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#define IDeckLinkOutput_v10_11_GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) \ + ( (This)->lpVtbl -> GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkOutput_v10_11_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkInput_v10_11_INTERFACE_DEFINED__ +#define __IDeckLinkInput_v10_11_INTERFACE_DEFINED__ + +/* interface IDeckLinkInput_v10_11 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkInput_v10_11; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("AF22762B-DFAC-4846-AA79-FA8883560995") + IDeckLinkInput_v10_11 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags, + /* [out] */ BMDDisplayModeSupport_v10_11 *result, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( + /* [out] */ unsigned int *availableFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoInputFrameMemoryAllocator( + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( + /* [out] */ unsigned int *availableSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IDeckLinkInputCallback_v11_5_1 *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkInput_v10_11Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkInput_v10_11 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkInput_v10_11 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags, + /* [out] */ BMDDisplayModeSupport_v10_11 *result, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkInput_v10_11 * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkInput_v10_11 * This, + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, EnableVideoInput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( + IDeckLinkInput_v10_11 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, DisableVideoInput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( + IDeckLinkInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, GetAvailableVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( + IDeckLinkInput_v10_11 * This, + /* [out] */ unsigned int *availableFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, SetVideoInputFrameMemoryAllocator) + HRESULT ( STDMETHODCALLTYPE *SetVideoInputFrameMemoryAllocator )( + IDeckLinkInput_v10_11 * This, + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, EnableAudioInput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( + IDeckLinkInput_v10_11 * This, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, DisableAudioInput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( + IDeckLinkInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, GetAvailableAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( + IDeckLinkInput_v10_11 * This, + /* [out] */ unsigned int *availableSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, StartStreams) + HRESULT ( STDMETHODCALLTYPE *StartStreams )( + IDeckLinkInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, StopStreams) + HRESULT ( STDMETHODCALLTYPE *StopStreams )( + IDeckLinkInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, PauseStreams) + HRESULT ( STDMETHODCALLTYPE *PauseStreams )( + IDeckLinkInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, FlushStreams) + HRESULT ( STDMETHODCALLTYPE *FlushStreams )( + IDeckLinkInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkInput_v10_11 * This, + /* [in] */ IDeckLinkInputCallback_v11_5_1 *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v10_11, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkInput_v10_11 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + END_INTERFACE + } IDeckLinkInput_v10_11Vtbl; + + interface IDeckLinkInput_v10_11 + { + CONST_VTBL struct IDeckLinkInput_v10_11Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkInput_v10_11_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkInput_v10_11_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkInput_v10_11_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkInput_v10_11_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) ) + +#define IDeckLinkInput_v10_11_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkInput_v10_11_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkInput_v10_11_EnableVideoInput(This,displayMode,pixelFormat,flags) \ + ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) + +#define IDeckLinkInput_v10_11_DisableVideoInput(This) \ + ( (This)->lpVtbl -> DisableVideoInput(This) ) + +#define IDeckLinkInput_v10_11_GetAvailableVideoFrameCount(This,availableFrameCount) \ + ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) + +#define IDeckLinkInput_v10_11_SetVideoInputFrameMemoryAllocator(This,theAllocator) \ + ( (This)->lpVtbl -> SetVideoInputFrameMemoryAllocator(This,theAllocator) ) + +#define IDeckLinkInput_v10_11_EnableAudioInput(This,sampleRate,sampleType,channelCount) \ + ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) + +#define IDeckLinkInput_v10_11_DisableAudioInput(This) \ + ( (This)->lpVtbl -> DisableAudioInput(This) ) + +#define IDeckLinkInput_v10_11_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) \ + ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) + +#define IDeckLinkInput_v10_11_StartStreams(This) \ + ( (This)->lpVtbl -> StartStreams(This) ) + +#define IDeckLinkInput_v10_11_StopStreams(This) \ + ( (This)->lpVtbl -> StopStreams(This) ) + +#define IDeckLinkInput_v10_11_PauseStreams(This) \ + ( (This)->lpVtbl -> PauseStreams(This) ) + +#define IDeckLinkInput_v10_11_FlushStreams(This) \ + ( (This)->lpVtbl -> FlushStreams(This) ) + +#define IDeckLinkInput_v10_11_SetCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetCallback(This,theCallback) ) + +#define IDeckLinkInput_v10_11_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkInput_v10_11_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkEncoderInput_v10_11_INTERFACE_DEFINED__ +#define __IDeckLinkEncoderInput_v10_11_INTERFACE_DEFINED__ + +/* interface IDeckLinkEncoderInput_v10_11 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkEncoderInput_v10_11; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("270587DA-6B7D-42E7-A1F0-6D853F581185") + IDeckLinkEncoderInput_v10_11 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags, + /* [out] */ BMDDisplayModeSupport_v10_11 *result, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailablePacketsCount( + /* [out] */ unsigned int *availablePacketsCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetMemoryAllocator( + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( + /* [in] */ BMDAudioFormat audioFormat, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( + /* [out] */ unsigned int *availableSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IDeckLinkEncoderInputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkEncoderInput_v10_11Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkEncoderInput_v10_11 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkEncoderInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkEncoderInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkEncoderInput_v10_11 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags, + /* [out] */ BMDDisplayModeSupport_v10_11 *result, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkEncoderInput_v10_11 * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, EnableVideoInput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( + IDeckLinkEncoderInput_v10_11 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, DisableVideoInput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( + IDeckLinkEncoderInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, GetAvailablePacketsCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailablePacketsCount )( + IDeckLinkEncoderInput_v10_11 * This, + /* [out] */ unsigned int *availablePacketsCount); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, SetMemoryAllocator) + HRESULT ( STDMETHODCALLTYPE *SetMemoryAllocator )( + IDeckLinkEncoderInput_v10_11 * This, + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, EnableAudioInput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( + IDeckLinkEncoderInput_v10_11 * This, + /* [in] */ BMDAudioFormat audioFormat, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, DisableAudioInput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( + IDeckLinkEncoderInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, GetAvailableAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( + IDeckLinkEncoderInput_v10_11 * This, + /* [out] */ unsigned int *availableSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, StartStreams) + HRESULT ( STDMETHODCALLTYPE *StartStreams )( + IDeckLinkEncoderInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, StopStreams) + HRESULT ( STDMETHODCALLTYPE *StopStreams )( + IDeckLinkEncoderInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, PauseStreams) + HRESULT ( STDMETHODCALLTYPE *PauseStreams )( + IDeckLinkEncoderInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, FlushStreams) + HRESULT ( STDMETHODCALLTYPE *FlushStreams )( + IDeckLinkEncoderInput_v10_11 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkEncoderInput_v10_11 * This, + /* [in] */ IDeckLinkEncoderInputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderInput_v10_11, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkEncoderInput_v10_11 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + END_INTERFACE + } IDeckLinkEncoderInput_v10_11Vtbl; + + interface IDeckLinkEncoderInput_v10_11 + { + CONST_VTBL struct IDeckLinkEncoderInput_v10_11Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkEncoderInput_v10_11_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkEncoderInput_v10_11_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkEncoderInput_v10_11_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkEncoderInput_v10_11_DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,displayMode,pixelFormat,flags,result,resultDisplayMode) ) + +#define IDeckLinkEncoderInput_v10_11_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkEncoderInput_v10_11_EnableVideoInput(This,displayMode,pixelFormat,flags) \ + ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) + +#define IDeckLinkEncoderInput_v10_11_DisableVideoInput(This) \ + ( (This)->lpVtbl -> DisableVideoInput(This) ) + +#define IDeckLinkEncoderInput_v10_11_GetAvailablePacketsCount(This,availablePacketsCount) \ + ( (This)->lpVtbl -> GetAvailablePacketsCount(This,availablePacketsCount) ) + +#define IDeckLinkEncoderInput_v10_11_SetMemoryAllocator(This,theAllocator) \ + ( (This)->lpVtbl -> SetMemoryAllocator(This,theAllocator) ) + +#define IDeckLinkEncoderInput_v10_11_EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount) \ + ( (This)->lpVtbl -> EnableAudioInput(This,audioFormat,sampleRate,sampleType,channelCount) ) + +#define IDeckLinkEncoderInput_v10_11_DisableAudioInput(This) \ + ( (This)->lpVtbl -> DisableAudioInput(This) ) + +#define IDeckLinkEncoderInput_v10_11_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) \ + ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) + +#define IDeckLinkEncoderInput_v10_11_StartStreams(This) \ + ( (This)->lpVtbl -> StartStreams(This) ) + +#define IDeckLinkEncoderInput_v10_11_StopStreams(This) \ + ( (This)->lpVtbl -> StopStreams(This) ) + +#define IDeckLinkEncoderInput_v10_11_PauseStreams(This) \ + ( (This)->lpVtbl -> PauseStreams(This) ) + +#define IDeckLinkEncoderInput_v10_11_FlushStreams(This) \ + ( (This)->lpVtbl -> FlushStreams(This) ) + +#define IDeckLinkEncoderInput_v10_11_SetCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetCallback(This,theCallback) ) + +#define IDeckLinkEncoderInput_v10_11_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkEncoderInput_v10_11_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_CDeckLinkIterator_v10_11; + +#ifdef __cplusplus + +class DECLSPEC_UUID("87D2693F-8D4A-45C7-B43F-10ACBA25E68F") +CDeckLinkIterator_v10_11; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkDiscovery_v10_11; + +#ifdef __cplusplus + +class DECLSPEC_UUID("652615D4-26CD-4514-B161-2FD5072ED008") +CDeckLinkDiscovery_v10_11; +#endif + +#ifndef __IDeckLinkConfiguration_v10_9_INTERFACE_DEFINED__ +#define __IDeckLinkConfiguration_v10_9_INTERFACE_DEFINED__ + +/* interface IDeckLinkConfiguration_v10_9 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkConfiguration_v10_9; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CB71734A-FE37-4E8D-8E13-802133A1C3F2") + IDeckLinkConfiguration_v10_9 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkConfiguration_v10_9Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkConfiguration_v10_9 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkConfiguration_v10_9 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkConfiguration_v10_9 * This); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_9, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IDeckLinkConfiguration_v10_9 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_9, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkConfiguration_v10_9 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_9, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkConfiguration_v10_9 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_9, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkConfiguration_v10_9 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_9, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IDeckLinkConfiguration_v10_9 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_9, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkConfiguration_v10_9 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_9, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IDeckLinkConfiguration_v10_9 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_9, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkConfiguration_v10_9 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_9, WriteConfigurationToPreferences) + HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( + IDeckLinkConfiguration_v10_9 * This); + + END_INTERFACE + } IDeckLinkConfiguration_v10_9Vtbl; + + interface IDeckLinkConfiguration_v10_9 + { + CONST_VTBL struct IDeckLinkConfiguration_v10_9Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkConfiguration_v10_9_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkConfiguration_v10_9_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkConfiguration_v10_9_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkConfiguration_v10_9_SetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_9_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_9_SetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_9_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_9_SetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_9_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_9_SetString(This,cfgID,value) \ + ( (This)->lpVtbl -> SetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_9_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_9_WriteConfigurationToPreferences(This) \ + ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkConfiguration_v10_9_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_CBMDStreamingDiscovery_v10_8; + +#ifdef __cplusplus + +class DECLSPEC_UUID("0CAA31F6-8A26-40B0-86A4-BF58DCCA710C") +CBMDStreamingDiscovery_v10_8; +#endif + +#ifndef __IDeckLinkConfiguration_v10_4_INTERFACE_DEFINED__ +#define __IDeckLinkConfiguration_v10_4_INTERFACE_DEFINED__ + +/* interface IDeckLinkConfiguration_v10_4 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkConfiguration_v10_4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("1E69FCF6-4203-4936-8076-2A9F4CFD50CB") + IDeckLinkConfiguration_v10_4 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkConfiguration_v10_4Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkConfiguration_v10_4 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkConfiguration_v10_4 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkConfiguration_v10_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_4, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IDeckLinkConfiguration_v10_4 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_4, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkConfiguration_v10_4 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_4, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkConfiguration_v10_4 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_4, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkConfiguration_v10_4 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_4, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IDeckLinkConfiguration_v10_4 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_4, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkConfiguration_v10_4 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_4, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IDeckLinkConfiguration_v10_4 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_4, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkConfiguration_v10_4 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_4, WriteConfigurationToPreferences) + HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( + IDeckLinkConfiguration_v10_4 * This); + + END_INTERFACE + } IDeckLinkConfiguration_v10_4Vtbl; + + interface IDeckLinkConfiguration_v10_4 + { + CONST_VTBL struct IDeckLinkConfiguration_v10_4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkConfiguration_v10_4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkConfiguration_v10_4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkConfiguration_v10_4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkConfiguration_v10_4_SetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_4_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_4_SetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_4_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_4_SetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_4_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_4_SetString(This,cfgID,value) \ + ( (This)->lpVtbl -> SetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_4_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_4_WriteConfigurationToPreferences(This) \ + ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkConfiguration_v10_4_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkConfiguration_v10_2_INTERFACE_DEFINED__ +#define __IDeckLinkConfiguration_v10_2_INTERFACE_DEFINED__ + +/* interface IDeckLinkConfiguration_v10_2 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkConfiguration_v10_2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("C679A35B-610C-4D09-B748-1D0478100FC0") + IDeckLinkConfiguration_v10_2 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteConfigurationToPreferences( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkConfiguration_v10_2Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkConfiguration_v10_2 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkConfiguration_v10_2 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkConfiguration_v10_2 * This); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_2, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IDeckLinkConfiguration_v10_2 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_2, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkConfiguration_v10_2 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_2, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkConfiguration_v10_2 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_2, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkConfiguration_v10_2 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_2, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IDeckLinkConfiguration_v10_2 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_2, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkConfiguration_v10_2 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_2, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IDeckLinkConfiguration_v10_2 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [in] */ BSTR value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_2, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkConfiguration_v10_2 * This, + /* [in] */ BMDDeckLinkConfigurationID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkConfiguration_v10_2, WriteConfigurationToPreferences) + HRESULT ( STDMETHODCALLTYPE *WriteConfigurationToPreferences )( + IDeckLinkConfiguration_v10_2 * This); + + END_INTERFACE + } IDeckLinkConfiguration_v10_2Vtbl; + + interface IDeckLinkConfiguration_v10_2 + { + CONST_VTBL struct IDeckLinkConfiguration_v10_2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkConfiguration_v10_2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkConfiguration_v10_2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkConfiguration_v10_2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkConfiguration_v10_2_SetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_2_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_2_SetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_2_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_2_SetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_2_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_2_SetString(This,cfgID,value) \ + ( (This)->lpVtbl -> SetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_2_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IDeckLinkConfiguration_v10_2_WriteConfigurationToPreferences(This) \ + ( (This)->lpVtbl -> WriteConfigurationToPreferences(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkConfiguration_v10_2_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkAncillaryPacket_v15_2_INTERFACE_DEFINED__ +#define __IDeckLinkAncillaryPacket_v15_2_INTERFACE_DEFINED__ + +/* interface IDeckLinkAncillaryPacket_v15_2 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkAncillaryPacket_v15_2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("CC5BBF7E-029C-4D3B-9158-6000EF5E3670") + IDeckLinkAncillaryPacket_v15_2 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetBytes( + /* [in] */ BMDAncillaryPacketFormat format, + /* [out] */ const void **data, + /* [out] */ unsigned int *size) = 0; + + virtual unsigned char STDMETHODCALLTYPE GetDID( void) = 0; + + virtual unsigned char STDMETHODCALLTYPE GetSDID( void) = 0; + + virtual unsigned int STDMETHODCALLTYPE GetLineNumber( void) = 0; + + virtual unsigned char STDMETHODCALLTYPE GetDataStreamIndex( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkAncillaryPacket_v15_2Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkAncillaryPacket_v15_2 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkAncillaryPacket_v15_2 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkAncillaryPacket_v15_2 * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket_v15_2, GetBytes) + HRESULT ( STDMETHODCALLTYPE *GetBytes )( + IDeckLinkAncillaryPacket_v15_2 * This, + /* [in] */ BMDAncillaryPacketFormat format, + /* [out] */ const void **data, + /* [out] */ unsigned int *size); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket_v15_2, GetDID) + unsigned char ( STDMETHODCALLTYPE *GetDID )( + IDeckLinkAncillaryPacket_v15_2 * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket_v15_2, GetSDID) + unsigned char ( STDMETHODCALLTYPE *GetSDID )( + IDeckLinkAncillaryPacket_v15_2 * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket_v15_2, GetLineNumber) + unsigned int ( STDMETHODCALLTYPE *GetLineNumber )( + IDeckLinkAncillaryPacket_v15_2 * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacket_v15_2, GetDataStreamIndex) + unsigned char ( STDMETHODCALLTYPE *GetDataStreamIndex )( + IDeckLinkAncillaryPacket_v15_2 * This); + + END_INTERFACE + } IDeckLinkAncillaryPacket_v15_2Vtbl; + + interface IDeckLinkAncillaryPacket_v15_2 + { + CONST_VTBL struct IDeckLinkAncillaryPacket_v15_2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkAncillaryPacket_v15_2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkAncillaryPacket_v15_2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkAncillaryPacket_v15_2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkAncillaryPacket_v15_2_GetBytes(This,format,data,size) \ + ( (This)->lpVtbl -> GetBytes(This,format,data,size) ) + +#define IDeckLinkAncillaryPacket_v15_2_GetDID(This) \ + ( (This)->lpVtbl -> GetDID(This) ) + +#define IDeckLinkAncillaryPacket_v15_2_GetSDID(This) \ + ( (This)->lpVtbl -> GetSDID(This) ) + +#define IDeckLinkAncillaryPacket_v15_2_GetLineNumber(This) \ + ( (This)->lpVtbl -> GetLineNumber(This) ) + +#define IDeckLinkAncillaryPacket_v15_2_GetDataStreamIndex(This) \ + ( (This)->lpVtbl -> GetDataStreamIndex(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkAncillaryPacket_v15_2_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkAncillaryPacketIterator_v15_2_INTERFACE_DEFINED__ +#define __IDeckLinkAncillaryPacketIterator_v15_2_INTERFACE_DEFINED__ + +/* interface IDeckLinkAncillaryPacketIterator_v15_2 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkAncillaryPacketIterator_v15_2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("3FC8994B-88FB-4C17-968F-9AAB69D964A7") + IDeckLinkAncillaryPacketIterator_v15_2 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE Next( + /* [out] */ IDeckLinkAncillaryPacket_v15_2 **packet) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkAncillaryPacketIterator_v15_2Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkAncillaryPacketIterator_v15_2 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkAncillaryPacketIterator_v15_2 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkAncillaryPacketIterator_v15_2 * This); + + DECLSPEC_XFGVIRT(IDeckLinkAncillaryPacketIterator_v15_2, Next) + HRESULT ( STDMETHODCALLTYPE *Next )( + IDeckLinkAncillaryPacketIterator_v15_2 * This, + /* [out] */ IDeckLinkAncillaryPacket_v15_2 **packet); + + END_INTERFACE + } IDeckLinkAncillaryPacketIterator_v15_2Vtbl; + + interface IDeckLinkAncillaryPacketIterator_v15_2 + { + CONST_VTBL struct IDeckLinkAncillaryPacketIterator_v15_2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkAncillaryPacketIterator_v15_2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkAncillaryPacketIterator_v15_2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkAncillaryPacketIterator_v15_2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkAncillaryPacketIterator_v15_2_Next(This,packet) \ + ( (This)->lpVtbl -> Next(This,packet) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkAncillaryPacketIterator_v15_2_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkVideoFrameAncillaryPackets_v15_2_INTERFACE_DEFINED__ +#define __IDeckLinkVideoFrameAncillaryPackets_v15_2_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoFrameAncillaryPackets_v15_2 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoFrameAncillaryPackets_v15_2; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("6C186C0F-459E-41D8-AEE2-4812D81AEE68") + IDeckLinkVideoFrameAncillaryPackets_v15_2 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetPacketIterator( + /* [out] */ IDeckLinkAncillaryPacketIterator_v15_2 **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFirstPacketByID( + /* [in] */ unsigned char DID, + /* [in] */ unsigned char SDID, + /* [out] */ IDeckLinkAncillaryPacket_v15_2 **packet) = 0; + + virtual HRESULT STDMETHODCALLTYPE AttachPacket( + /* [in] */ IDeckLinkAncillaryPacket_v15_2 *packet) = 0; + + virtual HRESULT STDMETHODCALLTYPE DetachPacket( + /* [in] */ IDeckLinkAncillaryPacket_v15_2 *packet) = 0; + + virtual HRESULT STDMETHODCALLTYPE DetachAllPackets( void) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoFrameAncillaryPackets_v15_2Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoFrameAncillaryPackets_v15_2 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoFrameAncillaryPackets_v15_2 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoFrameAncillaryPackets_v15_2 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillaryPackets_v15_2, GetPacketIterator) + HRESULT ( STDMETHODCALLTYPE *GetPacketIterator )( + IDeckLinkVideoFrameAncillaryPackets_v15_2 * This, + /* [out] */ IDeckLinkAncillaryPacketIterator_v15_2 **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillaryPackets_v15_2, GetFirstPacketByID) + HRESULT ( STDMETHODCALLTYPE *GetFirstPacketByID )( + IDeckLinkVideoFrameAncillaryPackets_v15_2 * This, + /* [in] */ unsigned char DID, + /* [in] */ unsigned char SDID, + /* [out] */ IDeckLinkAncillaryPacket_v15_2 **packet); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillaryPackets_v15_2, AttachPacket) + HRESULT ( STDMETHODCALLTYPE *AttachPacket )( + IDeckLinkVideoFrameAncillaryPackets_v15_2 * This, + /* [in] */ IDeckLinkAncillaryPacket_v15_2 *packet); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillaryPackets_v15_2, DetachPacket) + HRESULT ( STDMETHODCALLTYPE *DetachPacket )( + IDeckLinkVideoFrameAncillaryPackets_v15_2 * This, + /* [in] */ IDeckLinkAncillaryPacket_v15_2 *packet); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameAncillaryPackets_v15_2, DetachAllPackets) + HRESULT ( STDMETHODCALLTYPE *DetachAllPackets )( + IDeckLinkVideoFrameAncillaryPackets_v15_2 * This); + + END_INTERFACE + } IDeckLinkVideoFrameAncillaryPackets_v15_2Vtbl; + + interface IDeckLinkVideoFrameAncillaryPackets_v15_2 + { + CONST_VTBL struct IDeckLinkVideoFrameAncillaryPackets_v15_2Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoFrameAncillaryPackets_v15_2_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoFrameAncillaryPackets_v15_2_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoFrameAncillaryPackets_v15_2_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoFrameAncillaryPackets_v15_2_GetPacketIterator(This,iterator) \ + ( (This)->lpVtbl -> GetPacketIterator(This,iterator) ) + +#define IDeckLinkVideoFrameAncillaryPackets_v15_2_GetFirstPacketByID(This,DID,SDID,packet) \ + ( (This)->lpVtbl -> GetFirstPacketByID(This,DID,SDID,packet) ) + +#define IDeckLinkVideoFrameAncillaryPackets_v15_2_AttachPacket(This,packet) \ + ( (This)->lpVtbl -> AttachPacket(This,packet) ) + +#define IDeckLinkVideoFrameAncillaryPackets_v15_2_DetachPacket(This,packet) \ + ( (This)->lpVtbl -> DetachPacket(This,packet) ) + +#define IDeckLinkVideoFrameAncillaryPackets_v15_2_DetachAllPackets(This) \ + ( (This)->lpVtbl -> DetachAllPackets(This) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoFrameAncillaryPackets_v15_2_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_CDeckLinkVideoFrameAncillaryPackets_v15_2; + +#ifdef __cplusplus + +class DECLSPEC_UUID("F891AD29-D0C2-46E9-A926-4E2D0DD8CFAD") +CDeckLinkVideoFrameAncillaryPackets_v15_2; +#endif + +#ifndef __IDeckLinkVideoFrameMetadataExtensions_v11_5_INTERFACE_DEFINED__ +#define __IDeckLinkVideoFrameMetadataExtensions_v11_5_INTERFACE_DEFINED__ + +/* interface IDeckLinkVideoFrameMetadataExtensions_v11_5 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkVideoFrameMetadataExtensions_v11_5; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("D5973DC9-6432-46D0-8F0B-2496F8A1238F") + IDeckLinkVideoFrameMetadataExtensions_v11_5 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkFrameMetadataID_v11_5 metadataID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkFrameMetadataID_v11_5 metadataID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkFrameMetadataID_v11_5 metadataID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkFrameMetadataID_v11_5 metadataID, + /* [out] */ BSTR *value) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkVideoFrameMetadataExtensions_v11_5Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkVideoFrameMetadataExtensions_v11_5 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkVideoFrameMetadataExtensions_v11_5 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkVideoFrameMetadataExtensions_v11_5 * This); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions_v11_5, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkVideoFrameMetadataExtensions_v11_5 * This, + /* [in] */ BMDDeckLinkFrameMetadataID_v11_5 metadataID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions_v11_5, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkVideoFrameMetadataExtensions_v11_5 * This, + /* [in] */ BMDDeckLinkFrameMetadataID_v11_5 metadataID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions_v11_5, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkVideoFrameMetadataExtensions_v11_5 * This, + /* [in] */ BMDDeckLinkFrameMetadataID_v11_5 metadataID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkVideoFrameMetadataExtensions_v11_5, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkVideoFrameMetadataExtensions_v11_5 * This, + /* [in] */ BMDDeckLinkFrameMetadataID_v11_5 metadataID, + /* [out] */ BSTR *value); + + END_INTERFACE + } IDeckLinkVideoFrameMetadataExtensions_v11_5Vtbl; + + interface IDeckLinkVideoFrameMetadataExtensions_v11_5 + { + CONST_VTBL struct IDeckLinkVideoFrameMetadataExtensions_v11_5Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkVideoFrameMetadataExtensions_v11_5_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkVideoFrameMetadataExtensions_v11_5_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkVideoFrameMetadataExtensions_v11_5_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkVideoFrameMetadataExtensions_v11_5_GetInt(This,metadataID,value) \ + ( (This)->lpVtbl -> GetInt(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMetadataExtensions_v11_5_GetFloat(This,metadataID,value) \ + ( (This)->lpVtbl -> GetFloat(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMetadataExtensions_v11_5_GetFlag(This,metadataID,value) \ + ( (This)->lpVtbl -> GetFlag(This,metadataID,value) ) + +#define IDeckLinkVideoFrameMetadataExtensions_v11_5_GetString(This,metadataID,value) \ + ( (This)->lpVtbl -> GetString(This,metadataID,value) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkVideoFrameMetadataExtensions_v11_5_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkOutput_v11_4_INTERFACE_DEFINED__ +#define __IDeckLinkOutput_v11_4_INTERFACE_DEFINED__ + +/* interface IDeckLinkOutput_v11_4 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkOutput_v11_4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("065A0F6C-C508-4D0D-B919-F5EB0EBFC96B") + IDeckLinkOutput_v11_4 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoOutput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDVideoOutputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoOutput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoOutputFrameMemoryAllocator( + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateVideoFrame( + /* [in] */ int width, + /* [in] */ int height, + /* [in] */ int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDFrameFlags flags, + /* [out] */ IDeckLinkMutableVideoFrame_v14_2_1 **outFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE CreateAncillaryData( + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisplayVideoFrameSync( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleVideoFrame( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeValue displayTime, + /* [in] */ BMDTimeValue displayDuration, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScheduledFrameCompletionCallback( + /* [in] */ IDeckLinkVideoOutputCallback_v14_2_1 *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferedVideoFrameCount( + /* [out] */ unsigned int *bufferedFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioOutput( + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount, + /* [in] */ BMDAudioOutputStreamType streamType) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioOutput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE WriteAudioSamplesSync( + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [out] */ unsigned int *sampleFramesWritten) = 0; + + virtual HRESULT STDMETHODCALLTYPE BeginAudioPreroll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE EndAudioPreroll( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE ScheduleAudioSamples( + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [in] */ BMDTimeValue streamTime, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ unsigned int *sampleFramesWritten) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetBufferedAudioSampleFrameCount( + /* [out] */ unsigned int *bufferedSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushBufferedAudioSamples( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetAudioCallback( + /* [in] */ IDeckLinkAudioOutputCallback *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartScheduledPlayback( + /* [in] */ BMDTimeValue playbackStartTime, + /* [in] */ BMDTimeScale timeScale, + /* [in] */ double playbackSpeed) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopScheduledPlayback( + /* [in] */ BMDTimeValue stopPlaybackAtTime, + /* [out] */ BMDTimeValue *actualStopTime, + /* [in] */ BMDTimeScale timeScale) = 0; + + virtual HRESULT STDMETHODCALLTYPE IsScheduledPlaybackRunning( + /* [out] */ BOOL *active) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetScheduledStreamTime( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *streamTime, + /* [out] */ double *playbackSpeed) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetReferenceStatus( + /* [out] */ BMDReferenceStatus *referenceStatus) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFrameCompletionReferenceTimestamp( + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *frameCompletionTimestamp) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkOutput_v11_4Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkOutput_v11_4 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkOutput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BMDDisplayMode *actualMode, + /* [out] */ BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkOutput_v11_4 * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, EnableVideoOutput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoOutput )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDVideoOutputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, DisableVideoOutput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoOutput )( + IDeckLinkOutput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, SetVideoOutputFrameMemoryAllocator) + HRESULT ( STDMETHODCALLTYPE *SetVideoOutputFrameMemoryAllocator )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, CreateVideoFrame) + HRESULT ( STDMETHODCALLTYPE *CreateVideoFrame )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ int width, + /* [in] */ int height, + /* [in] */ int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDFrameFlags flags, + /* [out] */ IDeckLinkMutableVideoFrame_v14_2_1 **outFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, CreateAncillaryData) + HRESULT ( STDMETHODCALLTYPE *CreateAncillaryData )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoFrameAncillary **outBuffer); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, DisplayVideoFrameSync) + HRESULT ( STDMETHODCALLTYPE *DisplayVideoFrameSync )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, ScheduleVideoFrame) + HRESULT ( STDMETHODCALLTYPE *ScheduleVideoFrame )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeValue displayTime, + /* [in] */ BMDTimeValue displayDuration, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, SetScheduledFrameCompletionCallback) + HRESULT ( STDMETHODCALLTYPE *SetScheduledFrameCompletionCallback )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ IDeckLinkVideoOutputCallback_v14_2_1 *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, GetBufferedVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetBufferedVideoFrameCount )( + IDeckLinkOutput_v11_4 * This, + /* [out] */ unsigned int *bufferedFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, EnableAudioOutput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioOutput )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount, + /* [in] */ BMDAudioOutputStreamType streamType); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, DisableAudioOutput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioOutput )( + IDeckLinkOutput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, WriteAudioSamplesSync) + HRESULT ( STDMETHODCALLTYPE *WriteAudioSamplesSync )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [out] */ unsigned int *sampleFramesWritten); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, BeginAudioPreroll) + HRESULT ( STDMETHODCALLTYPE *BeginAudioPreroll )( + IDeckLinkOutput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, EndAudioPreroll) + HRESULT ( STDMETHODCALLTYPE *EndAudioPreroll )( + IDeckLinkOutput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, ScheduleAudioSamples) + HRESULT ( STDMETHODCALLTYPE *ScheduleAudioSamples )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ void *buffer, + /* [in] */ unsigned int sampleFrameCount, + /* [in] */ BMDTimeValue streamTime, + /* [in] */ BMDTimeScale timeScale, + /* [out] */ unsigned int *sampleFramesWritten); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, GetBufferedAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetBufferedAudioSampleFrameCount )( + IDeckLinkOutput_v11_4 * This, + /* [out] */ unsigned int *bufferedSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, FlushBufferedAudioSamples) + HRESULT ( STDMETHODCALLTYPE *FlushBufferedAudioSamples )( + IDeckLinkOutput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, SetAudioCallback) + HRESULT ( STDMETHODCALLTYPE *SetAudioCallback )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ IDeckLinkAudioOutputCallback *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, StartScheduledPlayback) + HRESULT ( STDMETHODCALLTYPE *StartScheduledPlayback )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ BMDTimeValue playbackStartTime, + /* [in] */ BMDTimeScale timeScale, + /* [in] */ double playbackSpeed); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, StopScheduledPlayback) + HRESULT ( STDMETHODCALLTYPE *StopScheduledPlayback )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ BMDTimeValue stopPlaybackAtTime, + /* [out] */ BMDTimeValue *actualStopTime, + /* [in] */ BMDTimeScale timeScale); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, IsScheduledPlaybackRunning) + HRESULT ( STDMETHODCALLTYPE *IsScheduledPlaybackRunning )( + IDeckLinkOutput_v11_4 * This, + /* [out] */ BOOL *active); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, GetScheduledStreamTime) + HRESULT ( STDMETHODCALLTYPE *GetScheduledStreamTime )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *streamTime, + /* [out] */ double *playbackSpeed); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, GetReferenceStatus) + HRESULT ( STDMETHODCALLTYPE *GetReferenceStatus )( + IDeckLinkOutput_v11_4 * This, + /* [out] */ BMDReferenceStatus *referenceStatus); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + DECLSPEC_XFGVIRT(IDeckLinkOutput_v11_4, GetFrameCompletionReferenceTimestamp) + HRESULT ( STDMETHODCALLTYPE *GetFrameCompletionReferenceTimestamp )( + IDeckLinkOutput_v11_4 * This, + /* [in] */ IDeckLinkVideoFrame_v14_2_1 *theFrame, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *frameCompletionTimestamp); + + END_INTERFACE + } IDeckLinkOutput_v11_4Vtbl; + + interface IDeckLinkOutput_v11_4 + { + CONST_VTBL struct IDeckLinkOutput_v11_4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkOutput_v11_4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkOutput_v11_4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkOutput_v11_4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkOutput_v11_4_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,flags,actualMode,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,flags,actualMode,supported) ) + +#define IDeckLinkOutput_v11_4_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkOutput_v11_4_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkOutput_v11_4_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkOutput_v11_4_EnableVideoOutput(This,displayMode,flags) \ + ( (This)->lpVtbl -> EnableVideoOutput(This,displayMode,flags) ) + +#define IDeckLinkOutput_v11_4_DisableVideoOutput(This) \ + ( (This)->lpVtbl -> DisableVideoOutput(This) ) + +#define IDeckLinkOutput_v11_4_SetVideoOutputFrameMemoryAllocator(This,theAllocator) \ + ( (This)->lpVtbl -> SetVideoOutputFrameMemoryAllocator(This,theAllocator) ) + +#define IDeckLinkOutput_v11_4_CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) \ + ( (This)->lpVtbl -> CreateVideoFrame(This,width,height,rowBytes,pixelFormat,flags,outFrame) ) + +#define IDeckLinkOutput_v11_4_CreateAncillaryData(This,pixelFormat,outBuffer) \ + ( (This)->lpVtbl -> CreateAncillaryData(This,pixelFormat,outBuffer) ) + +#define IDeckLinkOutput_v11_4_DisplayVideoFrameSync(This,theFrame) \ + ( (This)->lpVtbl -> DisplayVideoFrameSync(This,theFrame) ) + +#define IDeckLinkOutput_v11_4_ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) \ + ( (This)->lpVtbl -> ScheduleVideoFrame(This,theFrame,displayTime,displayDuration,timeScale) ) + +#define IDeckLinkOutput_v11_4_SetScheduledFrameCompletionCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetScheduledFrameCompletionCallback(This,theCallback) ) + +#define IDeckLinkOutput_v11_4_GetBufferedVideoFrameCount(This,bufferedFrameCount) \ + ( (This)->lpVtbl -> GetBufferedVideoFrameCount(This,bufferedFrameCount) ) + +#define IDeckLinkOutput_v11_4_EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) \ + ( (This)->lpVtbl -> EnableAudioOutput(This,sampleRate,sampleType,channelCount,streamType) ) + +#define IDeckLinkOutput_v11_4_DisableAudioOutput(This) \ + ( (This)->lpVtbl -> DisableAudioOutput(This) ) + +#define IDeckLinkOutput_v11_4_WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) \ + ( (This)->lpVtbl -> WriteAudioSamplesSync(This,buffer,sampleFrameCount,sampleFramesWritten) ) + +#define IDeckLinkOutput_v11_4_BeginAudioPreroll(This) \ + ( (This)->lpVtbl -> BeginAudioPreroll(This) ) + +#define IDeckLinkOutput_v11_4_EndAudioPreroll(This) \ + ( (This)->lpVtbl -> EndAudioPreroll(This) ) + +#define IDeckLinkOutput_v11_4_ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) \ + ( (This)->lpVtbl -> ScheduleAudioSamples(This,buffer,sampleFrameCount,streamTime,timeScale,sampleFramesWritten) ) + +#define IDeckLinkOutput_v11_4_GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) \ + ( (This)->lpVtbl -> GetBufferedAudioSampleFrameCount(This,bufferedSampleFrameCount) ) + +#define IDeckLinkOutput_v11_4_FlushBufferedAudioSamples(This) \ + ( (This)->lpVtbl -> FlushBufferedAudioSamples(This) ) + +#define IDeckLinkOutput_v11_4_SetAudioCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetAudioCallback(This,theCallback) ) + +#define IDeckLinkOutput_v11_4_StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) \ + ( (This)->lpVtbl -> StartScheduledPlayback(This,playbackStartTime,timeScale,playbackSpeed) ) + +#define IDeckLinkOutput_v11_4_StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) \ + ( (This)->lpVtbl -> StopScheduledPlayback(This,stopPlaybackAtTime,actualStopTime,timeScale) ) + +#define IDeckLinkOutput_v11_4_IsScheduledPlaybackRunning(This,active) \ + ( (This)->lpVtbl -> IsScheduledPlaybackRunning(This,active) ) + +#define IDeckLinkOutput_v11_4_GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) \ + ( (This)->lpVtbl -> GetScheduledStreamTime(This,desiredTimeScale,streamTime,playbackSpeed) ) + +#define IDeckLinkOutput_v11_4_GetReferenceStatus(This,referenceStatus) \ + ( (This)->lpVtbl -> GetReferenceStatus(This,referenceStatus) ) + +#define IDeckLinkOutput_v11_4_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#define IDeckLinkOutput_v11_4_GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) \ + ( (This)->lpVtbl -> GetFrameCompletionReferenceTimestamp(This,theFrame,desiredTimeScale,frameCompletionTimestamp) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkOutput_v11_4_INTERFACE_DEFINED__ */ + + +#ifndef __IDeckLinkInput_v11_4_INTERFACE_DEFINED__ +#define __IDeckLinkInput_v11_4_INTERFACE_DEFINED__ + +/* interface IDeckLinkInput_v11_4 */ +/* [helpstring][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkInput_v11_4; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("2A88CF76-F494-4216-A7EF-DC74EEB83882") + IDeckLinkInput_v11_4 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE DoesSupportVideoMode( + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BOOL *supported) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayMode( + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDisplayModeIterator( + /* [out] */ IDeckLinkDisplayModeIterator **iterator) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetScreenPreviewCallback( + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableVideoInput( + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableVideoInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableVideoFrameCount( + /* [out] */ unsigned int *availableFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetVideoInputFrameMemoryAllocator( + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator) = 0; + + virtual HRESULT STDMETHODCALLTYPE EnableAudioInput( + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE DisableAudioInput( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetAvailableAudioSampleFrameCount( + /* [out] */ unsigned int *availableSampleFrameCount) = 0; + + virtual HRESULT STDMETHODCALLTYPE StartStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE StopStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE PauseStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE FlushStreams( void) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetCallback( + /* [in] */ IDeckLinkInputCallback_v11_5_1 *theCallback) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetHardwareReferenceClock( + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkInput_v11_4Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkInput_v11_4 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkInput_v11_4 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkInput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, DoesSupportVideoMode) + HRESULT ( STDMETHODCALLTYPE *DoesSupportVideoMode )( + IDeckLinkInput_v11_4 * This, + /* [in] */ BMDVideoConnection connection, + /* [in] */ BMDDisplayMode requestedMode, + /* [in] */ BMDPixelFormat requestedPixelFormat, + /* [in] */ BMDSupportedVideoModeFlags flags, + /* [out] */ BOOL *supported); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, GetDisplayMode) + HRESULT ( STDMETHODCALLTYPE *GetDisplayMode )( + IDeckLinkInput_v11_4 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [out] */ IDeckLinkDisplayMode **resultDisplayMode); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, GetDisplayModeIterator) + HRESULT ( STDMETHODCALLTYPE *GetDisplayModeIterator )( + IDeckLinkInput_v11_4 * This, + /* [out] */ IDeckLinkDisplayModeIterator **iterator); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, SetScreenPreviewCallback) + HRESULT ( STDMETHODCALLTYPE *SetScreenPreviewCallback )( + IDeckLinkInput_v11_4 * This, + /* [in] */ IDeckLinkScreenPreviewCallback_v14_2_1 *previewCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, EnableVideoInput) + HRESULT ( STDMETHODCALLTYPE *EnableVideoInput )( + IDeckLinkInput_v11_4 * This, + /* [in] */ BMDDisplayMode displayMode, + /* [in] */ BMDPixelFormat pixelFormat, + /* [in] */ BMDVideoInputFlags flags); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, DisableVideoInput) + HRESULT ( STDMETHODCALLTYPE *DisableVideoInput )( + IDeckLinkInput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, GetAvailableVideoFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableVideoFrameCount )( + IDeckLinkInput_v11_4 * This, + /* [out] */ unsigned int *availableFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, SetVideoInputFrameMemoryAllocator) + HRESULT ( STDMETHODCALLTYPE *SetVideoInputFrameMemoryAllocator )( + IDeckLinkInput_v11_4 * This, + /* [in] */ IDeckLinkMemoryAllocator_v14_2_1 *theAllocator); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, EnableAudioInput) + HRESULT ( STDMETHODCALLTYPE *EnableAudioInput )( + IDeckLinkInput_v11_4 * This, + /* [in] */ BMDAudioSampleRate sampleRate, + /* [in] */ BMDAudioSampleType sampleType, + /* [in] */ unsigned int channelCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, DisableAudioInput) + HRESULT ( STDMETHODCALLTYPE *DisableAudioInput )( + IDeckLinkInput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, GetAvailableAudioSampleFrameCount) + HRESULT ( STDMETHODCALLTYPE *GetAvailableAudioSampleFrameCount )( + IDeckLinkInput_v11_4 * This, + /* [out] */ unsigned int *availableSampleFrameCount); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, StartStreams) + HRESULT ( STDMETHODCALLTYPE *StartStreams )( + IDeckLinkInput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, StopStreams) + HRESULT ( STDMETHODCALLTYPE *StopStreams )( + IDeckLinkInput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, PauseStreams) + HRESULT ( STDMETHODCALLTYPE *PauseStreams )( + IDeckLinkInput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, FlushStreams) + HRESULT ( STDMETHODCALLTYPE *FlushStreams )( + IDeckLinkInput_v11_4 * This); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, SetCallback) + HRESULT ( STDMETHODCALLTYPE *SetCallback )( + IDeckLinkInput_v11_4 * This, + /* [in] */ IDeckLinkInputCallback_v11_5_1 *theCallback); + + DECLSPEC_XFGVIRT(IDeckLinkInput_v11_4, GetHardwareReferenceClock) + HRESULT ( STDMETHODCALLTYPE *GetHardwareReferenceClock )( + IDeckLinkInput_v11_4 * This, + /* [in] */ BMDTimeScale desiredTimeScale, + /* [out] */ BMDTimeValue *hardwareTime, + /* [out] */ BMDTimeValue *timeInFrame, + /* [out] */ BMDTimeValue *ticksPerFrame); + + END_INTERFACE + } IDeckLinkInput_v11_4Vtbl; + + interface IDeckLinkInput_v11_4 + { + CONST_VTBL struct IDeckLinkInput_v11_4Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkInput_v11_4_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkInput_v11_4_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkInput_v11_4_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkInput_v11_4_DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,flags,supported) \ + ( (This)->lpVtbl -> DoesSupportVideoMode(This,connection,requestedMode,requestedPixelFormat,flags,supported) ) + +#define IDeckLinkInput_v11_4_GetDisplayMode(This,displayMode,resultDisplayMode) \ + ( (This)->lpVtbl -> GetDisplayMode(This,displayMode,resultDisplayMode) ) + +#define IDeckLinkInput_v11_4_GetDisplayModeIterator(This,iterator) \ + ( (This)->lpVtbl -> GetDisplayModeIterator(This,iterator) ) + +#define IDeckLinkInput_v11_4_SetScreenPreviewCallback(This,previewCallback) \ + ( (This)->lpVtbl -> SetScreenPreviewCallback(This,previewCallback) ) + +#define IDeckLinkInput_v11_4_EnableVideoInput(This,displayMode,pixelFormat,flags) \ + ( (This)->lpVtbl -> EnableVideoInput(This,displayMode,pixelFormat,flags) ) + +#define IDeckLinkInput_v11_4_DisableVideoInput(This) \ + ( (This)->lpVtbl -> DisableVideoInput(This) ) + +#define IDeckLinkInput_v11_4_GetAvailableVideoFrameCount(This,availableFrameCount) \ + ( (This)->lpVtbl -> GetAvailableVideoFrameCount(This,availableFrameCount) ) + +#define IDeckLinkInput_v11_4_SetVideoInputFrameMemoryAllocator(This,theAllocator) \ + ( (This)->lpVtbl -> SetVideoInputFrameMemoryAllocator(This,theAllocator) ) + +#define IDeckLinkInput_v11_4_EnableAudioInput(This,sampleRate,sampleType,channelCount) \ + ( (This)->lpVtbl -> EnableAudioInput(This,sampleRate,sampleType,channelCount) ) + +#define IDeckLinkInput_v11_4_DisableAudioInput(This) \ + ( (This)->lpVtbl -> DisableAudioInput(This) ) + +#define IDeckLinkInput_v11_4_GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) \ + ( (This)->lpVtbl -> GetAvailableAudioSampleFrameCount(This,availableSampleFrameCount) ) + +#define IDeckLinkInput_v11_4_StartStreams(This) \ + ( (This)->lpVtbl -> StartStreams(This) ) + +#define IDeckLinkInput_v11_4_StopStreams(This) \ + ( (This)->lpVtbl -> StopStreams(This) ) + +#define IDeckLinkInput_v11_4_PauseStreams(This) \ + ( (This)->lpVtbl -> PauseStreams(This) ) + +#define IDeckLinkInput_v11_4_FlushStreams(This) \ + ( (This)->lpVtbl -> FlushStreams(This) ) + +#define IDeckLinkInput_v11_4_SetCallback(This,theCallback) \ + ( (This)->lpVtbl -> SetCallback(This,theCallback) ) + +#define IDeckLinkInput_v11_4_GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) \ + ( (This)->lpVtbl -> GetHardwareReferenceClock(This,desiredTimeScale,hardwareTime,timeInFrame,ticksPerFrame) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkInput_v11_4_INTERFACE_DEFINED__ */ + + +EXTERN_C const CLSID CLSID_CDeckLinkIterator_v10_8; + +#ifdef __cplusplus + +class DECLSPEC_UUID("1F2E109A-8F4F-49E4-9203-135595CB6FA5") +CDeckLinkIterator_v10_8; +#endif + +EXTERN_C const CLSID CLSID_CDeckLinkDiscovery_v10_8; + +#ifdef __cplusplus + +class DECLSPEC_UUID("1073A05C-D885-47E9-B3C6-129B3F9F648B") +CDeckLinkDiscovery_v10_8; +#endif + +#ifndef __IDeckLinkEncoderConfiguration_v10_5_INTERFACE_DEFINED__ +#define __IDeckLinkEncoderConfiguration_v10_5_INTERFACE_DEFINED__ + +/* interface IDeckLinkEncoderConfiguration_v10_5 */ +/* [helpstring][local][uuid][object] */ + + +EXTERN_C const IID IID_IDeckLinkEncoderConfiguration_v10_5; + +#if defined(__cplusplus) && !defined(CINTERFACE) + + MIDL_INTERFACE("67455668-0848-45DF-8D8E-350A77C9A028") + IDeckLinkEncoderConfiguration_v10_5 : public IUnknown + { + public: + virtual HRESULT STDMETHODCALLTYPE SetFlag( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ BOOL value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFlag( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ BOOL *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetInt( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ LONGLONG value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetInt( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ LONGLONG *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetFloat( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ double value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetFloat( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ double *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE SetString( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ BSTR value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetString( + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ BSTR *value) = 0; + + virtual HRESULT STDMETHODCALLTYPE GetDecoderConfigurationInfo( + /* [out] */ void *buffer, + /* [in] */ long bufferSize, + /* [out] */ long *returnedSize) = 0; + + }; + + +#else /* C style interface */ + + typedef struct IDeckLinkEncoderConfiguration_v10_5Vtbl + { + BEGIN_INTERFACE + + DECLSPEC_XFGVIRT(IUnknown, QueryInterface) + HRESULT ( STDMETHODCALLTYPE *QueryInterface )( + IDeckLinkEncoderConfiguration_v10_5 * This, + /* [in] */ REFIID riid, + /* [annotation][iid_is][out] */ + _COM_Outptr_ void **ppvObject); + + DECLSPEC_XFGVIRT(IUnknown, AddRef) + ULONG ( STDMETHODCALLTYPE *AddRef )( + IDeckLinkEncoderConfiguration_v10_5 * This); + + DECLSPEC_XFGVIRT(IUnknown, Release) + ULONG ( STDMETHODCALLTYPE *Release )( + IDeckLinkEncoderConfiguration_v10_5 * This); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration_v10_5, SetFlag) + HRESULT ( STDMETHODCALLTYPE *SetFlag )( + IDeckLinkEncoderConfiguration_v10_5 * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ BOOL value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration_v10_5, GetFlag) + HRESULT ( STDMETHODCALLTYPE *GetFlag )( + IDeckLinkEncoderConfiguration_v10_5 * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ BOOL *value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration_v10_5, SetInt) + HRESULT ( STDMETHODCALLTYPE *SetInt )( + IDeckLinkEncoderConfiguration_v10_5 * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ LONGLONG value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration_v10_5, GetInt) + HRESULT ( STDMETHODCALLTYPE *GetInt )( + IDeckLinkEncoderConfiguration_v10_5 * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ LONGLONG *value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration_v10_5, SetFloat) + HRESULT ( STDMETHODCALLTYPE *SetFloat )( + IDeckLinkEncoderConfiguration_v10_5 * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ double value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration_v10_5, GetFloat) + HRESULT ( STDMETHODCALLTYPE *GetFloat )( + IDeckLinkEncoderConfiguration_v10_5 * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ double *value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration_v10_5, SetString) + HRESULT ( STDMETHODCALLTYPE *SetString )( + IDeckLinkEncoderConfiguration_v10_5 * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [in] */ BSTR value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration_v10_5, GetString) + HRESULT ( STDMETHODCALLTYPE *GetString )( + IDeckLinkEncoderConfiguration_v10_5 * This, + /* [in] */ BMDDeckLinkEncoderConfigurationID cfgID, + /* [out] */ BSTR *value); + + DECLSPEC_XFGVIRT(IDeckLinkEncoderConfiguration_v10_5, GetDecoderConfigurationInfo) + HRESULT ( STDMETHODCALLTYPE *GetDecoderConfigurationInfo )( + IDeckLinkEncoderConfiguration_v10_5 * This, + /* [out] */ void *buffer, + /* [in] */ long bufferSize, + /* [out] */ long *returnedSize); + + END_INTERFACE + } IDeckLinkEncoderConfiguration_v10_5Vtbl; + + interface IDeckLinkEncoderConfiguration_v10_5 + { + CONST_VTBL struct IDeckLinkEncoderConfiguration_v10_5Vtbl *lpVtbl; + }; + + + +#ifdef COBJMACROS + + +#define IDeckLinkEncoderConfiguration_v10_5_QueryInterface(This,riid,ppvObject) \ + ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) + +#define IDeckLinkEncoderConfiguration_v10_5_AddRef(This) \ + ( (This)->lpVtbl -> AddRef(This) ) + +#define IDeckLinkEncoderConfiguration_v10_5_Release(This) \ + ( (This)->lpVtbl -> Release(This) ) + + +#define IDeckLinkEncoderConfiguration_v10_5_SetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFlag(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_v10_5_GetFlag(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFlag(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_v10_5_SetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> SetInt(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_v10_5_GetInt(This,cfgID,value) \ + ( (This)->lpVtbl -> GetInt(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_v10_5_SetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> SetFloat(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_v10_5_GetFloat(This,cfgID,value) \ + ( (This)->lpVtbl -> GetFloat(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_v10_5_SetString(This,cfgID,value) \ + ( (This)->lpVtbl -> SetString(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_v10_5_GetString(This,cfgID,value) \ + ( (This)->lpVtbl -> GetString(This,cfgID,value) ) + +#define IDeckLinkEncoderConfiguration_v10_5_GetDecoderConfigurationInfo(This,buffer,bufferSize,returnedSize) \ + ( (This)->lpVtbl -> GetDecoderConfigurationInfo(This,buffer,bufferSize,returnedSize) ) + +#endif /* COBJMACROS */ + + +#endif /* C style interface */ + + + + +#endif /* __IDeckLinkEncoderConfiguration_v10_5_INTERFACE_DEFINED__ */ + +#endif /* __DeckLinkAPI_LIBRARY_DEFINED__ */ + +/* Additional Prototypes for ALL interfaces */ + +/* end of Additional Prototypes */ + +#ifdef __cplusplus +} +#endif + +#endif + + diff --git a/apps/LoopThroughWithOpenGLCompositing/DeckLinkAPI_i.c b/apps/LoopThroughWithOpenGLCompositing/DeckLinkAPI_i.c new file mode 100644 index 0000000..df3177a --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/DeckLinkAPI_i.c @@ -0,0 +1,486 @@ + + +/* this ALWAYS GENERATED file contains the IIDs and CLSIDs */ + +/* link this file in with the server and any clients */ + + + /* File created by MIDL compiler version 8.01.0628 */ +/* at Tue Jan 19 14:14:07 2038 + */ +/* Compiler settings for ..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\include\DeckLinkAPI.idl: + Oicf, W1, Zp8, env=Win64 (32b run), target_arch=AMD64 8.01.0628 + protocol : all , ms_ext, c_ext, robust + error checks: allocation ref bounds_check enum stub_data + VC __declspec() decoration level: + __declspec(uuid()), __declspec(selectany), __declspec(novtable) + DECLSPEC_UUID(), MIDL_INTERFACE() +*/ +/* @@MIDL_FILE_HEADING( ) */ + + + +#ifdef __cplusplus +extern "C"{ +#endif + + +#include +#include + +#ifdef _MIDL_USE_GUIDDEF_ + +#ifndef INITGUID +#define INITGUID +#include +#undef INITGUID +#else +#include +#endif + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + DEFINE_GUID(name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) + +#else // !_MIDL_USE_GUIDDEF_ + +#ifndef __IID_DEFINED__ +#define __IID_DEFINED__ + +typedef struct _IID +{ + unsigned long x; + unsigned short s1; + unsigned short s2; + unsigned char c[8]; +} IID; + +#endif // __IID_DEFINED__ + +#ifndef CLSID_DEFINED +#define CLSID_DEFINED +typedef IID CLSID; +#endif // CLSID_DEFINED + +#define MIDL_DEFINE_GUID(type,name,l,w1,w2,b1,b2,b3,b4,b5,b6,b7,b8) \ + EXTERN_C __declspec(selectany) const type name = {l,w1,w2,{b1,b2,b3,b4,b5,b6,b7,b8}} + +#endif // !_MIDL_USE_GUIDDEF_ + +MIDL_DEFINE_GUID(IID, LIBID_DeckLinkAPI,0xD864517A,0xEDD5,0x466D,0x86,0x7D,0xC8,0x19,0xF1,0xC0,0x52,0xBB); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkTimecode,0xBC6CFBD3,0x8317,0x4325,0xAC,0x1C,0x12,0x16,0x39,0x1E,0x93,0x40); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayModeIterator,0x9C88499F,0xF601,0x4021,0xB8,0x0B,0x03,0x2E,0x4E,0xB4,0x1C,0x35); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkDisplayMode,0x3EB2C1AB,0x0A3D,0x4523,0xA3,0xAD,0xF4,0x0D,0x7F,0xB1,0x4E,0x78); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLink,0xC418FBDD,0x0587,0x48ED,0x8F,0xE5,0x64,0x0F,0x0A,0x14,0xAF,0x91); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration,0x5a68ffd4,0x1c12,0x4ede,0xa6,0xd2,0x45,0x45,0x1d,0x38,0x5f,0xc1); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderConfiguration,0x138050E5,0xC60A,0x4552,0xBF,0x3F,0x0F,0x35,0x80,0x49,0x32,0x7E); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkDeckControlStatusCallback,0x53436FFB,0xB434,0x4906,0xBA,0xDC,0xAE,0x30,0x60,0xFF,0xE8,0xEF); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkDeckControl,0x8E1C3ACE,0x19C7,0x4E00,0x8B,0x92,0xD8,0x04,0x31,0xD9,0x58,0xBE); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingDeviceNotificationCallback,0xF9531D64,0x3305,0x4B29,0xA3,0x87,0x7F,0x74,0xBB,0x0D,0x0E,0x84); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingH264InputCallback,0x823C475F,0x55AE,0x46F9,0x89,0x0C,0x53,0x7C,0xC5,0xCE,0xDC,0xCA); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingDiscovery,0x2C837444,0xF989,0x4D87,0x90,0x1A,0x47,0xC8,0xA3,0x6D,0x09,0x6D); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingVideoEncodingMode,0x1AB8035B,0xCD13,0x458D,0xB6,0xDF,0x5E,0x8F,0x7C,0x21,0x41,0xD9); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingMutableVideoEncodingMode,0x19BF7D90,0x1E0A,0x400D,0xB2,0xC6,0xFF,0xC4,0xE7,0x8A,0xD4,0x9D); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingVideoEncodingModePresetIterator,0x7AC731A3,0xC950,0x4AD0,0x80,0x4A,0x83,0x77,0xAA,0x51,0xC6,0xC4); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingDeviceInput,0x24B6B6EC,0x1727,0x44BB,0x98,0x18,0x34,0xFF,0x08,0x6A,0xCF,0x98); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingH264NALPacket,0xE260E955,0x14BE,0x4395,0x97,0x75,0x9F,0x02,0xCC,0x0A,0x9D,0x89); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingAudioPacket,0xD9EB5902,0x1AD2,0x43F4,0x9E,0x2C,0x3C,0xFA,0x50,0xB5,0xEE,0x19); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingMPEG2TSPacket,0x91810D1C,0x4FB3,0x4AAA,0xAE,0x56,0xFA,0x30,0x1D,0x3D,0xFA,0x4C); + + +MIDL_DEFINE_GUID(IID, IID_IBMDStreamingH264NALParser,0x5867F18C,0x5BFA,0x4CCC,0xB2,0xA7,0x9D,0xFD,0x14,0x04,0x17,0xD2); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CBMDStreamingDiscovery,0x23A4EDF5,0xA0E5,0x432C,0x94,0xEF,0x3B,0xAB,0xB5,0xF8,0x1C,0x82); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CBMDStreamingH264NALParser,0x7753EFBD,0x951C,0x407C,0x97,0xA5,0x23,0xC7,0x37,0xB7,0x3B,0x52); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoOutputCallback,0x5BE6DF26,0x02CE,0x433E,0x99,0xD9,0x9A,0x87,0xC3,0xAC,0x17,0x1F); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback,0x3A94F075,0xC37D,0x4BA8,0xBC,0xC0,0x1D,0x77,0x8C,0x8F,0x88,0x1B); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderInputCallback,0xACF13E61,0xF4A0,0x4974,0xA6,0xA7,0x59,0xAF,0xF6,0x26,0x8B,0x31); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoBufferAllocator,0xF35DFA8D,0x9078,0x4622,0x95,0xBB,0x56,0x89,0x40,0x54,0xEB,0x0F); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoBufferAllocatorProvider,0x6DF6F20A,0xD8DF,0x45D2,0x89,0x14,0x38,0x3C,0xE7,0xE6,0x24,0x3F); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkAudioOutputCallback,0x403C681B,0x7F46,0x4A12,0xB9,0x93,0x2B,0xB1,0x27,0x08,0x4E,0xE6); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkIterator,0x50FB36CD,0x3063,0x4B73,0xBD,0xBB,0x95,0x80,0x87,0xF2,0xD8,0xBA); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkAPIInformation,0x7BEA3C68,0x730D,0x4322,0xAF,0x34,0x8A,0x71,0x52,0xB5,0x32,0xA4); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkIPFlowAttributes,0xCDA938DA,0x6479,0x40C6,0xB2,0xEC,0xA3,0x57,0x9B,0x3A,0xEE,0xCD); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkIPFlowStatus,0x31C41656,0x4992,0x4396,0xBB,0xE9,0x5F,0x84,0x06,0xAA,0xB5,0xAF); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkIPFlowSetting,0x86DD9174,0x27D3,0x4032,0xB2,0xAD,0x60,0x67,0xC3,0xBB,0x24,0x24); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkIPFlow,0xC5FC83C7,0x5B8E,0x42A7,0x9A,0x40,0x7C,0x06,0x59,0x55,0xD4,0xE1); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkIPFlowIterator,0xBD296AB2,0xA5C5,0x4153,0x88,0x8F,0xAA,0xB1,0xFD,0xBD,0x8A,0x5C); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput,0x5F227C95,0x39D7,0x46C7,0x8B,0x7D,0x9C,0x81,0x79,0x5F,0xBB,0xE4); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput,0x6A515F8A,0xFBCE,0x4853,0xB0,0xF7,0x2A,0x09,0xDB,0x1E,0xCA,0x0B); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkIPExtensions,0x46CF7903,0xA9FD,0x4D0B,0x8F,0xFC,0x01,0x03,0x72,0x2A,0xB4,0x42); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkHDMIInputEDID,0xABBBACBC,0x45BC,0x4665,0x9D,0x92,0xAC,0xE6,0xE5,0xA9,0x79,0x02); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderInput,0x46C1332E,0x6FD9,0x472A,0x85,0x91,0xFE,0x59,0xC2,0x21,0x92,0xE1); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoBuffer,0x81F03D70,0xDE13,0x4B17,0x87,0x3A,0xC8,0xAC,0x96,0x89,0xC6,0x82); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame,0x6502091C,0x615F,0x4F51,0xBA,0xF6,0x45,0xC4,0x25,0x6D,0xD5,0xB0); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkMutableVideoFrame,0xCF9EB134,0x0374,0x4C5B,0x95,0xFA,0x1E,0xC1,0x48,0x19,0xFF,0x62); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame3DExtensions,0xD4DBE9C6,0xB4D2,0x49D3,0xAB,0xF2,0xB4,0xE8,0x6C,0x73,0x91,0xB0); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameMetadataExtensions,0xE232A5B7,0x4DB4,0x44C9,0x91,0x52,0xF4,0x7C,0x12,0xE5,0xF0,0x51); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameMutableMetadataExtensions,0xCC198FC6,0x8298,0x4419,0x94,0x2D,0x83,0x57,0xEC,0x35,0x5E,0x58); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame,0xC9ADD3D2,0xBE52,0x488D,0xAB,0x2D,0x7F,0xDE,0xF7,0xAF,0x0C,0x95); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkAncillaryPacket,0xF5C0D498,0x5CD3,0x4C77,0x97,0x73,0x8E,0xFA,0x20,0xBB,0x33,0x4B); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkAncillaryPacketIterator,0x10F1AA88,0x54BE,0x42F7,0xB9,0xF8,0xEC,0x2F,0x5F,0x09,0x95,0x51); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameAncillaryPackets,0x8A72D630,0x8070,0x4D05,0x8A,0x93,0xE6,0x0C,0x40,0xEE,0x08,0x8A); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameAncillary,0x732E723C,0xD1A4,0x4E29,0x9E,0x8E,0x4A,0x88,0x79,0x7A,0x00,0x04); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderPacket,0xB693F36C,0x316E,0x4AF1,0xB6,0xC2,0xF3,0x89,0xA4,0xBC,0xA6,0x20); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderVideoPacket,0x4E7FD944,0xE8C7,0x4EAC,0xB8,0xC0,0x7B,0x77,0xF8,0x0F,0x5A,0xE0); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderAudioPacket,0x49E8EDC8,0x693B,0x4E14,0x8E,0xF6,0x12,0xC6,0x58,0xF5,0xA0,0x7A); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkH265NALPacket,0x639C8E0B,0x68D5,0x4BDE,0xA6,0xD4,0x95,0xF3,0xAE,0xAF,0xF2,0xE7); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkAudioInputPacket,0xE43D5870,0x2894,0x11DE,0x8C,0x30,0x08,0x00,0x20,0x0C,0x9A,0x66); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkScreenPreviewCallback,0xD4FA2345,0x9FBA,0x4497,0x95,0xC3,0xC0,0xC3,0xCE,0xD3,0xCD,0xA8); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkGLScreenPreviewHelper,0xCEB778E2,0xC202,0x4EC8,0x90,0x85,0x0C,0xD2,0x85,0xCC,0x55,0x22); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkDX9ScreenPreviewHelper,0xF2DD78CA,0x2921,0x4AC2,0xB5,0xBC,0xBF,0xDC,0xC2,0x03,0x5A,0x1F); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkWPFDX9ScreenPreviewHelper,0xC59346CD,0x9326,0x4266,0xAC,0x2D,0x5C,0x19,0x0F,0x57,0x99,0xEE); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkNotificationCallback,0xb002a1ec,0x070d,0x4288,0x82,0x89,0xbd,0x5d,0x36,0xe5,0xff,0x0d); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkNotification,0x1d70faac,0xfd27,0x4866,0x9d,0xe6,0x09,0x39,0xd1,0xe4,0xc7,0xf1); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkProfileAttributes,0xF47551D7,0xAD22,0x47AF,0xBC,0xFD,0x6B,0xE8,0x8A,0xA8,0x79,0xD9); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkProfileIterator,0x29E5A8C0,0x8BE4,0x46EB,0x93,0xAC,0x31,0xDA,0xAB,0x5B,0x7B,0xF2); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkProfile,0x16093466,0x674A,0x432B,0x9D,0xA0,0x1A,0xC2,0xC5,0xA8,0x24,0x1C); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkProfileCallback,0xA4F9341E,0x97AA,0x4E04,0x89,0x35,0x15,0xF8,0x09,0x89,0x8C,0xEA); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkProfileManager,0x30D41429,0x3998,0x4B6D,0x84,0xF8,0x78,0xC9,0x4A,0x79,0x7C,0x6E); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkStatistics,0x21CB2ED1,0x4429,0x42BE,0xAA,0xF3,0x22,0xA3,0xB1,0xDD,0x3A,0xE0); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkStatus,0x2A04A635,0xED42,0x41EF,0x93,0x42,0x0E,0x11,0xF8,0xCF,0x6B,0x5E); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkKeyer,0x89AFCAF5,0x65F8,0x421E,0x98,0xF7,0x96,0xFE,0x5F,0x5B,0xFB,0xA3); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoConversion,0x94C536D6,0xC821,0x42F5,0xA6,0x00,0xC6,0x66,0x29,0x95,0x51,0x01); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkDeviceNotificationCallback,0x4997053B,0x0ADF,0x4CC8,0xAC,0x70,0x7A,0x50,0xC4,0xBE,0x72,0x8F); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkDiscovery,0xCDBF631C,0xBC76,0x45FA,0xB4,0x4D,0xC5,0x50,0x59,0xBC,0x61,0x01); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkIterator,0xBA6C6F44,0x6DA5,0x4DCE,0x94,0xAA,0xEE,0x2D,0x13,0x72,0xA6,0x76); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkAPIInformation,0x263CA19F,0xED09,0x482E,0x9F,0x9D,0x84,0x00,0x57,0x83,0xA2,0x37); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkGLScreenPreviewHelper,0x1E332DAE,0x0D04,0x49EB,0xB8,0xA1,0xB6,0xE0,0x0B,0x2B,0x6B,0xD0); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkGL3ScreenPreviewHelper,0x166804E4,0x15EF,0x4BFD,0xB6,0x23,0xB5,0xBA,0x92,0x16,0x67,0xC5); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkDX9ScreenPreviewHelper,0x0EB111ED,0xADA6,0x43A6,0x8B,0x16,0xCA,0x5D,0x27,0xEE,0xA1,0x5E); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkWPFDX9ScreenPreviewHelper,0x5E64496D,0x4BB2,0x45D5,0x9B,0x63,0xBF,0x1B,0x46,0x3B,0x18,0xAF); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoConversion,0x771AD62D,0x671F,0x4442,0xAC,0x90,0xB0,0x70,0xC5,0x41,0x09,0x0A); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkDiscovery,0x22FBFC33,0x8D07,0x495C,0xA5,0xBF,0xDA,0xB5,0xEA,0x9B,0x82,0xDB); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoFrameAncillaryPackets,0x6F47097E,0xB390,0x4650,0xBC,0xB6,0xC4,0xD5,0x2F,0xAA,0x16,0x43); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkStatus_v15_3_1,0x5F558200,0x4028,0x49BC,0xBE,0xAC,0xDB,0x3F,0xA4,0xA9,0x6E,0x46); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration_v15_3_1,0x912F634B,0x2D4E,0x40A4,0x8A,0xAB,0x8D,0x80,0xB7,0x3F,0x12,0x89); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoBuffer_v15_3_1,0xCCB4B64A,0x5C86,0x4E02,0xB7,0x78,0x88,0x5D,0x35,0x27,0x09,0xFE); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoBufferAllocator_v15_3_1,0x3481A4DF,0x2B11,0x4E55,0xAC,0x61,0x83,0x6B,0x87,0x98,0x5E,0x9A); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoBufferAllocatorProvider_v15_3_1,0x08B80403,0xBFF2,0x49D0,0xB4,0x48,0x8C,0x90,0x8B,0x9E,0x9F,0xC9); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v15_3_1,0x4095DB82,0xE294,0x4B8C,0xAA,0xA8,0x3B,0x9E,0x80,0xC4,0x93,0x36); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v15_3_1,0x1A8077F1,0x9FE2,0x4533,0x81,0x47,0x22,0x94,0x30,0x5E,0x25,0x3F); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoConversion_v15_3_1,0xA48755D9,0x8BD5,0x4727,0xA1,0xE9,0x06,0x9F,0xDE,0xDB,0xA6,0xE9); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkNotification_v15_3_1,0xB85DF4C8,0xBDF5,0x47C1,0x80,0x64,0x28,0x16,0x2E,0xBD,0xD4,0xEB); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoConversion_v15_3_1,0x89BA47BD,0x1FE2,0x4D76,0x9B,0xFE,0xDE,0x85,0x04,0x9C,0x49,0x87); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkProfileAttributes_v15_3_1,0x17D4BF8E,0x4911,0x473A,0x80,0xA0,0x73,0x1C,0xF6,0xFF,0x34,0x5B); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoOutputCallback_v14_2_1,0x20AA5225,0x1958,0x47CB,0x82,0x0B,0x80,0xA8,0xD5,0x21,0xA6,0xEE); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback_v14_2_1,0xC6FCE4C9,0xC4E4,0x4047,0x82,0xFB,0x5D,0x23,0x82,0x32,0xA9,0x02); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkMemoryAllocator_v14_2_1,0xB36EB6E7,0x9D29,0x4AA8,0x92,0xEF,0x84,0x3B,0x87,0xA2,0x89,0xE8); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v14_2_1,0xBE2D9020,0x461E,0x442F,0x84,0xB7,0xE9,0x49,0xCB,0x95,0x3B,0x9D); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v14_2_1,0xC21CDB6E,0xF414,0x46E4,0xA6,0x36,0x80,0xA5,0x66,0xE0,0xED,0x37); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderInput_v14_2_1,0xF222551D,0x13DF,0x4FD8,0xB5,0x87,0x9D,0x4F,0x19,0xEC,0x12,0xC9); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame_v14_2_1,0x3F716FE0,0xF023,0x4111,0xBE,0x5D,0xEF,0x44,0x14,0xC0,0x5B,0x17); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkMutableVideoFrame_v14_2_1,0x69E2639F,0x40DA,0x4E19,0xB6,0xF2,0x20,0xAC,0xE8,0x15,0xC3,0x90); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrame3DExtensions_v14_2_1,0xDA0F7E4A,0xEDC7,0x48A8,0x9C,0xDD,0x2D,0xB5,0x1C,0x72,0x9C,0xD7); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoInputFrame_v14_2_1,0x05CFE374,0x537C,0x4094,0x9A,0x57,0x68,0x05,0x25,0x11,0x8F,0x44); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkScreenPreviewCallback_v14_2_1,0xB1D3F49A,0x85FE,0x4C5D,0x95,0xC8,0x0B,0x5D,0x5D,0xCC,0xD4,0x38); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkGLScreenPreviewHelper_v14_2_1,0x504E2209,0xCAC7,0x4C1A,0x9F,0xB4,0xC5,0xBB,0x62,0x74,0xD2,0x2F); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkDX9ScreenPreviewHelper_v14_2_1,0x2094B522,0xD1A1,0x40C0,0x9A,0xC7,0x1C,0x01,0x22,0x18,0xEF,0x02); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1,0xAD8EC84A,0x7DDE,0x11E9,0x8F,0x9E,0x2A,0x86,0xE4,0x08,0x5A,0x59); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoConversion_v14_2_1,0x3BBCB8A2,0xDA2C,0x42D9,0xB5,0xD8,0x88,0x08,0x36,0x44,0xE9,0x9A); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkGLScreenPreviewHelper_v14_2_1,0xF63E77C7,0xB655,0x4A4A,0x9A,0xD0,0x3C,0xA8,0x5D,0x39,0x43,0x43); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkGL3ScreenPreviewHelper_v14_2_1,0x00696A71,0xEBC7,0x491F,0xAC,0x02,0x18,0xD3,0x39,0x3F,0x33,0xF0); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkDX9ScreenPreviewHelper_v14_2_1,0xCC010023,0xE01D,0x4525,0x9D,0x59,0x80,0xC8,0xAB,0x3D,0xC7,0xA0); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkWPFDX9ScreenPreviewHelper_v14_2_1,0xEF2A8478,0x7DDF,0x11E9,0x8F,0x9E,0x2A,0x86,0xE4,0x08,0x5A,0x59); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoConversion_v14_2_1,0x7DBBBB11,0x5B7B,0x467D,0xAE,0xA4,0xCE,0xA4,0x68,0xFD,0x36,0x8C); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkInputCallback_v11_5_1,0xDD04E5EC,0x7415,0x42AB,0xAE,0x4A,0xE8,0x0C,0x4D,0xFC,0x04,0x4A); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v11_5_1,0x9434C6E4,0xB15D,0x4B1C,0x97,0x9E,0x66,0x1E,0x3D,0xDC,0xB4,0xB9); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration_v10_11,0xEF90380B,0x4AE5,0x4346,0x90,0x77,0xE2,0x88,0xE1,0x49,0xF1,0x29); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkAttributes_v10_11,0xABC11843,0xD966,0x44CB,0x96,0xE2,0xA1,0xCB,0x5D,0x31,0x35,0xC4); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkNotification_v10_11,0x0A1FB207,0xE215,0x441B,0x9B,0x19,0x6F,0xA1,0x57,0x59,0x46,0xC5); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v10_11,0xCC5C8A6E,0x3F2F,0x4B3A,0x87,0xEA,0xFD,0x78,0xAF,0x30,0x05,0x64); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v10_11,0xAF22762B,0xDFAC,0x4846,0xAA,0x79,0xFA,0x88,0x83,0x56,0x09,0x95); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderInput_v10_11,0x270587DA,0x6B7D,0x42E7,0xA1,0xF0,0x6D,0x85,0x3F,0x58,0x11,0x85); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkIterator_v10_11,0x87D2693F,0x8D4A,0x45C7,0xB4,0x3F,0x10,0xAC,0xBA,0x25,0xE6,0x8F); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkDiscovery_v10_11,0x652615D4,0x26CD,0x4514,0xB1,0x61,0x2F,0xD5,0x07,0x2E,0xD0,0x08); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration_v10_9,0xCB71734A,0xFE37,0x4E8D,0x8E,0x13,0x80,0x21,0x33,0xA1,0xC3,0xF2); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CBMDStreamingDiscovery_v10_8,0x0CAA31F6,0x8A26,0x40B0,0x86,0xA4,0xBF,0x58,0xDC,0xCA,0x71,0x0C); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration_v10_4,0x1E69FCF6,0x4203,0x4936,0x80,0x76,0x2A,0x9F,0x4C,0xFD,0x50,0xCB); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkConfiguration_v10_2,0xC679A35B,0x610C,0x4D09,0xB7,0x48,0x1D,0x04,0x78,0x10,0x0F,0xC0); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkAncillaryPacket_v15_2,0xCC5BBF7E,0x029C,0x4D3B,0x91,0x58,0x60,0x00,0xEF,0x5E,0x36,0x70); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkAncillaryPacketIterator_v15_2,0x3FC8994B,0x88FB,0x4C17,0x96,0x8F,0x9A,0xAB,0x69,0xD9,0x64,0xA7); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameAncillaryPackets_v15_2,0x6C186C0F,0x459E,0x41D8,0xAE,0xE2,0x48,0x12,0xD8,0x1A,0xEE,0x68); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkVideoFrameAncillaryPackets_v15_2,0xF891AD29,0xD0C2,0x46E9,0xA9,0x26,0x4E,0x2D,0x0D,0xD8,0xCF,0xAD); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkVideoFrameMetadataExtensions_v11_5,0xD5973DC9,0x6432,0x46D0,0x8F,0x0B,0x24,0x96,0xF8,0xA1,0x23,0x8F); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkOutput_v11_4,0x065A0F6C,0xC508,0x4D0D,0xB9,0x19,0xF5,0xEB,0x0E,0xBF,0xC9,0x6B); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkInput_v11_4,0x2A88CF76,0xF494,0x4216,0xA7,0xEF,0xDC,0x74,0xEE,0xB8,0x38,0x82); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkIterator_v10_8,0x1F2E109A,0x8F4F,0x49E4,0x92,0x03,0x13,0x55,0x95,0xCB,0x6F,0xA5); + + +MIDL_DEFINE_GUID(CLSID, CLSID_CDeckLinkDiscovery_v10_8,0x1073A05C,0xD885,0x47E9,0xB3,0xC6,0x12,0x9B,0x3F,0x9F,0x64,0x8B); + + +MIDL_DEFINE_GUID(IID, IID_IDeckLinkEncoderConfiguration_v10_5,0x67455668,0x0848,0x45DF,0x8D,0x8E,0x35,0x0A,0x77,0xC9,0xA0,0x28); + +#undef MIDL_DEFINE_GUID + +#ifdef __cplusplus +} +#endif + + + diff --git a/apps/LoopThroughWithOpenGLCompositing/GLExtensions.cpp b/apps/LoopThroughWithOpenGLCompositing/GLExtensions.cpp new file mode 100644 index 0000000..7c783d7 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/GLExtensions.cpp @@ -0,0 +1,148 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ +// +// GLExtensions.cpp +// LoopThroughWithOpenGLCompositing +// + +#include "GLExtensions.h" + +PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT; +PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT; +PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT; +PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT; +PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT; +PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT; +PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT; +PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT; +PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT; +PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT; +PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT; +PFNGLFENCESYNCPROC glFenceSync; +PFNGLCLIENTWAITSYNCPROC glClientWaitSync; +PFNGLDELETESYNCPROC glDeleteSync; +PFNGLGENBUFFERSPROC glGenBuffers; +PFNGLDELETEBUFFERSPROC glDeleteBuffers; +PFNGLBINDBUFFERPROC glBindBuffer; +PFNGLBUFFERDATAPROC glBufferData; +PFNGLCREATESHADERPROC glCreateShader; +PFNGLSHADERSOURCEPROC glShaderSource; +PFNGLCOMPILESHADERPROC glCompileShader; +PFNGLGETSHADERIVPROC glGetShaderiv; +PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog; +PFNGLCREATEPROGRAMPROC glCreateProgram; +PFNGLATTACHSHADERPROC glAttachShader; +PFNGLLINKPROGRAMPROC glLinkProgram; +PFNGLGETPROGRAMIVPROC glGetProgramiv; +PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog; +PFNGLUSEPROGRAMPROC glUseProgram; +PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation; +PFNGLUNIFORM1IPROC glUniform1i; +PFNGLUNIFORM1FPROC glUniform1f; + +bool ResolveGLExtensions() +{ + glGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC) wglGetProcAddress("glGenFramebuffersEXT"); + glGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC) wglGetProcAddress("glGenRenderbuffersEXT"); + glBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC) wglGetProcAddress("glBindRenderbufferEXT"); + glRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC) wglGetProcAddress("glRenderbufferStorageEXT"); + glDeleteFramebuffersEXT = (PFNGLDELETEFRAMEBUFFERSEXTPROC) wglGetProcAddress("glDeleteFramebuffersEXT"); + glDeleteRenderbuffersEXT = (PFNGLDELETERENDERBUFFERSEXTPROC) wglGetProcAddress("glDeleteRenderbuffersEXT"); + glBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC) wglGetProcAddress("glBindFramebufferEXT"); + glFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) wglGetProcAddress("glFramebufferTexture2DEXT"); + glFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) wglGetProcAddress("glFramebufferRenderbufferEXT"); + glCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) wglGetProcAddress("glCheckFramebufferStatusEXT"); + glBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC) wglGetProcAddress("glBlitFramebufferEXT"); + glFenceSync = (PFNGLFENCESYNCPROC) wglGetProcAddress("glFenceSync"); + glClientWaitSync = (PFNGLCLIENTWAITSYNCPROC) wglGetProcAddress("glClientWaitSync"); + glDeleteSync = (PFNGLDELETESYNCPROC) wglGetProcAddress("glDeleteSync"); + glGenBuffers = (PFNGLGENBUFFERSPROC) wglGetProcAddress("glGenBuffers"); + glDeleteBuffers = (PFNGLDELETEBUFFERSPROC) wglGetProcAddress("glDeleteBuffers"); + glBindBuffer = (PFNGLBINDBUFFERPROC) wglGetProcAddress("glBindBuffer"); + glBufferData = (PFNGLBUFFERDATAPROC) wglGetProcAddress("glBufferData"); + glCreateShader = (PFNGLCREATESHADERPROC) wglGetProcAddress("glCreateShader"); + glShaderSource = (PFNGLSHADERSOURCEPROC) wglGetProcAddress("glShaderSource"); + glCompileShader = (PFNGLCOMPILESHADERPROC) wglGetProcAddress("glCompileShader"); + glGetShaderiv = (PFNGLGETSHADERIVPROC) wglGetProcAddress("glGetShaderiv"); + glGetShaderInfoLog = (PFNGLGETSHADERINFOLOGPROC) wglGetProcAddress("glGetShaderInfoLog"); + glCreateProgram = (PFNGLCREATEPROGRAMPROC) wglGetProcAddress("glCreateProgram"); + glAttachShader = (PFNGLATTACHSHADERPROC) wglGetProcAddress("glAttachShader"); + glLinkProgram = (PFNGLLINKPROGRAMPROC) wglGetProcAddress("glLinkProgram"); + glGetProgramiv = (PFNGLGETPROGRAMIVPROC) wglGetProcAddress("glGetProgramiv"); + glGetProgramInfoLog = (PFNGLGETPROGRAMINFOLOGPROC) wglGetProcAddress("glGetProgramInfoLog"); + glUseProgram = (PFNGLUSEPROGRAMPROC) wglGetProcAddress("glUseProgram"); + glGetUniformLocation = (PFNGLGETUNIFORMLOCATIONPROC) wglGetProcAddress("glGetUniformLocation"); + glUniform1i = (PFNGLUNIFORM1IPROC) wglGetProcAddress("glUniform1i"); + glUniform1f = (PFNGLUNIFORM1FPROC) wglGetProcAddress("glUniform1f"); + + return glGenFramebuffersEXT + && glGenRenderbuffersEXT + && glBindRenderbufferEXT + && glRenderbufferStorageEXT + && glDeleteFramebuffersEXT + && glDeleteRenderbuffersEXT + && glBindFramebufferEXT + && glFramebufferTexture2DEXT + && glFramebufferRenderbufferEXT + && glCheckFramebufferStatusEXT + && glBlitFramebufferEXT + && glFenceSync + && glClientWaitSync + && glDeleteSync + && glGenBuffers + && glDeleteBuffers + && glBindBuffer + && glBufferData + && glCreateShader + && glShaderSource + && glCompileShader + && glGetShaderiv + && glGetShaderInfoLog + && glCreateProgram + && glAttachShader + && glLinkProgram + && glGetProgramiv + && glGetProgramInfoLog + && glUseProgram + && glGetUniformLocation + && glUniform1i + && glUniform1f + ; +} diff --git a/apps/LoopThroughWithOpenGLCompositing/GLExtensions.h b/apps/LoopThroughWithOpenGLCompositing/GLExtensions.h new file mode 100644 index 0000000..d8020fb --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/GLExtensions.h @@ -0,0 +1,154 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ +// +// GLExtensions.h +// LoopThroughWithOpenGLCompositing +// + +#ifndef __GLEXTENSIONS_H__ +#define __GLEXTENSIONS_H__ + +#include +#include + +#ifndef APIENTRYP +#define APIENTRYP APIENTRY * +#endif + +#define GL_BGRA 0x80E1 +#define GL_UNSIGNED_INT_8_8_8_8_REV 0x8367 +#define GL_STREAM_DRAW 0x88E0 +#define GL_STREAM_READ 0x88E1 +#define GL_STREAM_COPY 0x88E2 +#define GL_DYNAMIC_DRAW 0x88E8 +#define GL_ARRAY_BUFFER 0x8892 +#define GL_PIXEL_PACK_BUFFER 0x88EB +#define GL_PIXEL_UNPACK_BUFFER 0x88EC +#define GL_FRAGMENT_SHADER 0x8B30 +#define GL_VERTEX_SHADER 0x8B31 +#define GL_COMPILE_STATUS 0x8B81 +#define GL_LINK_STATUS 0x8B82 +#define GL_RENDERBUFFER_EXT 0x8D41 +#define GL_FRAMEBUFFER_EXT 0x8D40 +#define GL_FRAMEBUFFER_COMPLETE_EXT 0x8CD5 +#define GL_COLOR_ATTACHMENT0_EXT 0x8CE0 +#define GL_READ_FRAMEBUFFER 0x8CA8 +#define GL_DRAW_FRAMEBUFFER 0x8CA9 +#define GL_DEPTH_ATTACHMENT_EXT 0x8D00 +#define GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD 0x9160 +#define GL_SYNC_GPU_COMMANDS_COMPLETE 0x9117 +#define GL_SYNC_FLUSH_COMMANDS_BIT 0x00000001 + +typedef struct __GLsync *GLsync; +typedef unsigned __int64 GLuint64; +typedef ptrdiff_t GLintptr; +typedef ptrdiff_t GLsizeiptr; +typedef char GLchar; + +typedef void (APIENTRYP PFNGLBINDBUFFERPROC) (GLenum target, GLuint buffer); +typedef void (APIENTRYP PFNGLDELETEBUFFERSPROC) (GLsizei n, const GLuint *buffers); +typedef void (APIENTRYP PFNGLGENBUFFERSPROC) (GLsizei n, GLuint *buffers); +typedef void (APIENTRYP PFNGLBUFFERDATAPROC) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage); +typedef void (APIENTRYP PFNGLATTACHSHADERPROC) (GLuint program, GLuint shader); +typedef void (APIENTRYP PFNGLCOMPILESHADERPROC) (GLuint shader); +typedef GLuint (APIENTRYP PFNGLCREATEPROGRAMPROC) (void); +typedef GLuint (APIENTRYP PFNGLCREATESHADERPROC) (GLenum type); +typedef void (APIENTRYP PFNGLGETPROGRAMIVPROC) (GLuint program, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETPROGRAMINFOLOGPROC) (GLuint program, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef void (APIENTRYP PFNGLGETSHADERIVPROC) (GLuint shader, GLenum pname, GLint *params); +typedef void (APIENTRYP PFNGLGETSHADERINFOLOGPROC) (GLuint shader, GLsizei bufSize, GLsizei *length, GLchar *infoLog); +typedef GLint (APIENTRYP PFNGLGETUNIFORMLOCATIONPROC) (GLuint program, const GLchar *name); +typedef void (APIENTRYP PFNGLLINKPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLSHADERSOURCEPROC) (GLuint shader, GLsizei count, const GLchar* *string, const GLint *length); +typedef void (APIENTRYP PFNGLUSEPROGRAMPROC) (GLuint program); +typedef void (APIENTRYP PFNGLUNIFORM1FPROC) (GLint location, GLfloat v0); +typedef void (APIENTRYP PFNGLUNIFORM1IPROC) (GLint location, GLint v0); +typedef GLsync (APIENTRYP PFNGLFENCESYNCPROC) (GLenum condition, GLbitfield flags); +typedef void (APIENTRYP PFNGLDELETESYNCPROC) (GLsync sync); +typedef GLenum (APIENTRYP PFNGLCLIENTWAITSYNCPROC) (GLsync sync, GLbitfield flags, GLuint64 timeout); +typedef void (APIENTRYP PFNGLBINDRENDERBUFFEREXTPROC) (GLenum target, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLDELETERENDERBUFFERSEXTPROC) (GLsizei n, const GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLGENRENDERBUFFERSEXTPROC) (GLsizei n, GLuint *renderbuffers); +typedef void (APIENTRYP PFNGLRENDERBUFFERSTORAGEEXTPROC) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height); +typedef void (APIENTRYP PFNGLBINDFRAMEBUFFEREXTPROC) (GLenum target, GLuint framebuffer); +typedef void (APIENTRYP PFNGLDELETEFRAMEBUFFERSEXTPROC) (GLsizei n, const GLuint *framebuffers); +typedef void (APIENTRYP PFNGLGENFRAMEBUFFERSEXTPROC) (GLsizei n, GLuint *framebuffers); +typedef GLenum (APIENTRYP PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) (GLenum target); +typedef void (APIENTRYP PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level); +typedef void (APIENTRYP PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer); +typedef void (APIENTRYP PFNGLBLITFRAMEBUFFEREXTPROC) (GLint srcX0, GLint srcY0, GLint srcX1, GLint srcY1, GLint dstX0, GLint dstY0, GLint dstX1, GLint dstY1, GLbitfield mask, GLenum filter); + +extern PFNGLGENFRAMEBUFFERSEXTPROC glGenFramebuffersEXT; +extern PFNGLGENRENDERBUFFERSEXTPROC glGenRenderbuffersEXT; +extern PFNGLBINDRENDERBUFFEREXTPROC glBindRenderbufferEXT; +extern PFNGLRENDERBUFFERSTORAGEEXTPROC glRenderbufferStorageEXT; +extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT; +extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT; +extern PFNGLBINDFRAMEBUFFEREXTPROC glBindFramebufferEXT; +extern PFNGLFRAMEBUFFERTEXTURE2DEXTPROC glFramebufferTexture2DEXT; +extern PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC glFramebufferRenderbufferEXT; +extern PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC glCheckFramebufferStatusEXT; +extern PFNGLBLITFRAMEBUFFEREXTPROC glBlitFramebufferEXT; +extern PFNGLFENCESYNCPROC glFenceSync; +extern PFNGLCLIENTWAITSYNCPROC glClientWaitSync; +extern PFNGLDELETESYNCPROC glDeleteSync; +extern PFNGLGENBUFFERSPROC glGenBuffers; +extern PFNGLDELETEBUFFERSPROC glDeleteBuffers; +extern PFNGLBINDBUFFERPROC glBindBuffer; +extern PFNGLBUFFERDATAPROC glBufferData; +extern PFNGLCREATESHADERPROC glCreateShader; +extern PFNGLSHADERSOURCEPROC glShaderSource; +extern PFNGLCOMPILESHADERPROC glCompileShader; +extern PFNGLGETSHADERIVPROC glGetShaderiv; +extern PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog; +extern PFNGLCREATEPROGRAMPROC glCreateProgram; +extern PFNGLATTACHSHADERPROC glAttachShader; +extern PFNGLLINKPROGRAMPROC glLinkProgram; +extern PFNGLGETPROGRAMIVPROC glGetProgramiv; +extern PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog; +extern PFNGLUSEPROGRAMPROC glUseProgram; +extern PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation; +extern PFNGLUNIFORM1IPROC glUniform1i; +extern PFNGLUNIFORM1FPROC glUniform1f; + +bool ResolveGLExtensions(); + +#endif // __GLEXTENSIONS_H__ + diff --git a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.cpp b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.cpp new file mode 100644 index 0000000..7aca22f --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.cpp @@ -0,0 +1,219 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ +// +// LoopThroughWithOpenGLCompositing.cpp +// LoopThroughWithOpenGLCompositing +// + +#include "stdafx.h" +#include "resource.h" +#include "OpenGLComposite.h" + + +#define MAX_LOADSTRING 100 + +// Declaration for Window procedure +LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam); + +// Select the pixel format for a given device context +void SetDCPixelFormat(HDC hDC) +{ + int nPixelFormat; + + static PIXELFORMATDESCRIPTOR pfd = { + sizeof(PIXELFORMATDESCRIPTOR), // Size of this structure + 1, // Version of this structure + PFD_DRAW_TO_WINDOW | // Draw to Window (not to bitmap) + PFD_SUPPORT_OPENGL | // Support OpenGL calls in window + PFD_DOUBLEBUFFER, // Double buffered mode + PFD_TYPE_RGBA, // RGBA Color mode + 32, // Want 32 bit color + 0,0,0,0,0,0, // Not used to select mode + 0,0, // Not used to select mode + 0,0,0,0,0, // Not used to select mode + 16, // Size of depth buffer + 0, // Not used + 0, // Not used + 0, // Not used + 0, // Not used + 0,0,0 }; // Not used + + // Choose a pixel format that best matches that described in pfd + nPixelFormat = ChoosePixelFormat(hDC, &pfd); + + // Set the pixel format for the device context + SetPixelFormat(hDC, nPixelFormat, &pfd); +} + +int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) +{ + MSG msg; // Windows message structure + WNDCLASS wc; // Windows class structure + HWND hWnd; // Storeage for window handle + TCHAR szTitle[MAX_LOADSTRING]; // The title bar text + TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name + + // Initialize global strings + LoadString(hInstance, IDS_APP_TITLE, szTitle, MAX_LOADSTRING); + LoadString(hInstance, IDC_OPENGLOUTPUT, szWindowClass, MAX_LOADSTRING); + + // Register Window style + wc.style = CS_HREDRAW | CS_VREDRAW | CS_OWNDC; + wc.lpfnWndProc = (WNDPROC) WndProc; + wc.cbClsExtra = 0; + wc.cbWndExtra = 0; + wc.hInstance = hInstance; + wc.hIcon = NULL; + wc.hCursor = LoadCursor(NULL, IDC_ARROW); + + // No need for background brush for OpenGL window + wc.hbrBackground = NULL; + wc.lpszMenuName = NULL; + wc.lpszClassName = szWindowClass; + + // Register the window class + if (RegisterClass(&wc) == 0) + return FALSE; + + // Create the main application window + hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW | WS_CLIPCHILDREN | WS_CLIPSIBLINGS, + CW_USEDEFAULT, 0, 250, 250, NULL, NULL, hInstance, NULL); + + // If window was not created, quit + if (hWnd == NULL) + return FALSE; + + // Display the window + ShowWindow(hWnd,SW_SHOW); + UpdateWindow(hWnd); + + // Process application messages until the application closes + while (GetMessage(&msg, NULL, 0, 0)) + { + TranslateMessage(&msg); + DispatchMessage(&msg); + } + + return (int)msg.wParam; +} + +// Window procedure, handles all messages for this program +LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam) +{ + static HGLRC hRC = NULL; // Permenant Rendering context + static HDC hDC = NULL; // Private GDI Device context + static OpenGLComposite* pOpenGLComposite = NULL; + + switch (message) + { + // Window creation, setup for OpenGL context + case WM_CREATE: + // Store the device context + hDC = GetDC(hWnd); + + // Select the pixel format + SetDCPixelFormat(hDC); + + // Create the rendering context and make it current + hRC = wglCreateContext(hDC); + wglMakeCurrent(hDC, hRC); + + // Initialize COM + HRESULT result; + result = CoInitialize(NULL); + if (FAILED(result)) + { + MessageBox(NULL, _T("Initialization of COM failed."), _T("Application initialization Error."),MB_OK); + PostMessage(hWnd, WM_CLOSE, 0, 0); + break; + } + + // Setup OpenGL and DeckLink capture and playout object + pOpenGLComposite = new OpenGLComposite(hWnd, hDC, hRC); + + if (pOpenGLComposite->InitDeckLink()) + { + wglMakeCurrent( NULL, NULL ); + if (pOpenGLComposite->Start()) + break; // success + } + + // Failed to initialize - cleanup + delete pOpenGLComposite; + pOpenGLComposite = NULL; + PostMessage(hWnd, WM_CLOSE, 0, 0); + break; + + case WM_DESTROY: + if (pOpenGLComposite) + { + pOpenGLComposite->Stop(); + delete pOpenGLComposite; + } + + // Deselect the current rendering context and delete it + wglMakeCurrent(hDC, NULL); + wglDeleteContext(hRC); + + // Tell the application to terminate after the window is gone + PostQuitMessage(0); + break; + + case WM_SIZE: + if (pOpenGLComposite) + pOpenGLComposite->resizeGL(LOWORD(lParam), HIWORD(lParam)); + break; + + case WM_PAINT: + wglMakeCurrent(hDC, hRC); + + if (pOpenGLComposite) + pOpenGLComposite->paintGL(); + + wglMakeCurrent( NULL, NULL ); + break; + + default: + return (DefWindowProc(hWnd, message, wParam, lParam)); + } + + return (0L); +} + diff --git a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.h b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.h new file mode 100644 index 0000000..1a188c5 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.h @@ -0,0 +1,47 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ +// +// LoopThroughWithOpenGLCompositing.h +// LoopThroughWithOpenGLCompositing +// + +#pragma once + +#include "resource.h" diff --git a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.ico b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.ico new file mode 100644 index 0000000..d551aa3 Binary files /dev/null and b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.ico differ diff --git a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.rc b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.rc new file mode 100644 index 0000000..dd71b71 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.rc @@ -0,0 +1,95 @@ +// Microsoft Visual C++ generated resource script. +// +#include "resource.h" + +#define APSTUDIO_READONLY_SYMBOLS +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 2 resource. +// +#ifndef APSTUDIO_INVOKED +#include "targetver.h" +#endif +#define APSTUDIO_HIDDEN_SYMBOLS +#include "windows.h" +#undef APSTUDIO_HIDDEN_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +#undef APSTUDIO_READONLY_SYMBOLS + +///////////////////////////////////////////////////////////////////////////// +// English (U.S.) resources + +#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU) +#ifdef _WIN32 +LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US +#pragma code_page(1252) +#endif //_WIN32 + +///////////////////////////////////////////////////////////////////////////// +// +// Icon +// + +// Icon with lowest ID value placed first to ensure application icon +// remains consistent on all systems. +IDI_OPENGLOUTPUT ICON "LoopThroughWithOpenGLCompositing.ico" +IDI_SMALL ICON "small.ico" + +#ifdef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// TEXTINCLUDE +// + +1 TEXTINCLUDE +BEGIN + "resource.h\0" +END + +2 TEXTINCLUDE +BEGIN + "#ifndef APSTUDIO_INVOKED\r\n" + "#include ""targetver.h""\r\n" + "#endif\r\n" + "#define APSTUDIO_HIDDEN_SYMBOLS\r\n" + "#include ""windows.h""\r\n" + "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n" + "\0" +END + +3 TEXTINCLUDE +BEGIN + "\r\n" + "\0" +END + +#endif // APSTUDIO_INVOKED + + +///////////////////////////////////////////////////////////////////////////// +// +// String Table +// + +STRINGTABLE +BEGIN + IDS_APP_TITLE "LoopThroughWithOpenGLCompositing" + IDC_OPENGLOUTPUT "OPENGLOUTPUT" +END + +#endif // English (U.S.) resources +///////////////////////////////////////////////////////////////////////////// + + + +#ifndef APSTUDIO_INVOKED +///////////////////////////////////////////////////////////////////////////// +// +// Generated from the TEXTINCLUDE 3 resource. +// + + +///////////////////////////////////////////////////////////////////////////// +#endif // not APSTUDIO_INVOKED + diff --git a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.sln b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.sln new file mode 100644 index 0000000..e4f57c3 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.sln @@ -0,0 +1,28 @@ + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio 2013 +VisualStudioVersion = 12.0.21005.1 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "LoopThroughWithOpenGLCompositing", "LoopThroughWithOpenGLCompositing.vcxproj", "{92C79085-CA51-4008-95DB-5403D2E19885}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|Win32 = Debug|Win32 + Debug|x64 = Debug|x64 + Release|Win32 = Release|Win32 + Release|x64 = Release|x64 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {92C79085-CA51-4008-95DB-5403D2E19885}.Debug|Win32.ActiveCfg = Debug|Win32 + {92C79085-CA51-4008-95DB-5403D2E19885}.Debug|Win32.Build.0 = Debug|Win32 + {92C79085-CA51-4008-95DB-5403D2E19885}.Debug|x64.ActiveCfg = Debug|x64 + {92C79085-CA51-4008-95DB-5403D2E19885}.Debug|x64.Build.0 = Debug|x64 + {92C79085-CA51-4008-95DB-5403D2E19885}.Release|Win32.ActiveCfg = Release|Win32 + {92C79085-CA51-4008-95DB-5403D2E19885}.Release|Win32.Build.0 = Release|Win32 + {92C79085-CA51-4008-95DB-5403D2E19885}.Release|x64.ActiveCfg = Release|x64 + {92C79085-CA51-4008-95DB-5403D2E19885}.Release|x64.Build.0 = Release|x64 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection +EndGlobal diff --git a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj new file mode 100644 index 0000000..d1e3a73 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj @@ -0,0 +1,232 @@ + + + + + Debug + Win32 + + + Debug + x64 + + + Release + Win32 + + + Release + x64 + + + + {92C79085-CA51-4008-95DB-5403D2E19885} + LoopThroughWithOpenGLCompositing + Win32Proj + 10.0.26100.0 + + + + Application + v143 + MultiByte + true + + + Application + v143 + MultiByte + + + Application + v143 + MultiByte + true + + + Application + v143 + MultiByte + + + + + + + + + + + + + + + + + + + <_ProjectFileVersion>12.0.21005.1 + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + true + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + true + + + $(SolutionDir)$(Configuration)\ + $(Configuration)\ + false + + + $(SolutionDir)$(Platform)\$(Configuration)\ + $(Platform)\$(Configuration)\ + false + + + + Disabled + ..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + Level3 + EditAndContinue + + + dvp.lib;opengl32.lib;Glu32.lib;%(AdditionalDependencies) + ..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\lib\win32;%(AdditionalLibraryDirectories) + true + Windows + MachineX86 + + + copy /y "..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\bin\$(Platform)\dvp.dll" "$(TargetDir)" +copy /y "video_effect.frag" "$(TargetDir)" + + + + + X64 + + + Disabled + ..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\include;%(AdditionalIncludeDirectories) + WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions) + EnableFastChecks + MultiThreadedDebugDLL + + Level3 + ProgramDatabase + + + dvp.lib;opengl32.lib;Glu32.lib;%(AdditionalDependencies) + ..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + MachineX64 + + + copy /y "..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\bin\$(Platform)\dvp.dll" "$(TargetDir)" +copy /y "video_effect.frag" "$(TargetDir)" + + + + + MaxSpeed + true + ..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + Level3 + ProgramDatabase + + + dvp.lib;opengl32.lib;Glu32.lib;%(AdditionalDependencies) + ..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\lib\win32;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX86 + + + Copy nececssary DLLs to target directory + copy /y "..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\bin\$(Platform)\dvp.dll" "$(TargetDir)" +copy /y "video_effect.frag" "$(TargetDir)" + + + + + X64 + + + MaxSpeed + true + ..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\include;%(AdditionalIncludeDirectories) + WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions) + MultiThreadedDLL + true + + Level3 + ProgramDatabase + + + dvp.lib;opengl32.lib;Glu32.lib;%(AdditionalDependencies) + ..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\lib\x64;%(AdditionalLibraryDirectories) + true + Windows + true + true + MachineX64 + + + copy /y "..\..\3rdParty\Blackmagic DeckLink SDK 16.0\Win\Samples\NVIDIA_GPUDirect\bin\$(Platform)\dvp.dll" "$(TargetDir)" +copy /y "video_effect.frag" "$(TargetDir)" + + + + + + + + Create + Create + Create + Create + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj.filters b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj.filters new file mode 100644 index 0000000..aeb0f34 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/LoopThroughWithOpenGLCompositing.vcxproj.filters @@ -0,0 +1,81 @@ + + + + + {4FC737F1-C7A5-4376-A066-2A32D752A2FF} + cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx + + + {93995380-89BD-4b04-88EB-625FBE52EBFB} + h;hpp;hxx;hm;inl;inc;xsd + + + {67DA6AB6-F800-4c08-8B7A-83BB121AAD01} + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav + + + {1eab21d6-58f8-49e0-929b-8a4482e04756} + + + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + Source Files + + + DeckLink API + + + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + Header Files + + + + + Resource Files + + + Resource Files + + + + + Resource Files + + + + + DeckLink API + + + \ No newline at end of file diff --git a/apps/LoopThroughWithOpenGLCompositing/OpenGLComposite.cpp b/apps/LoopThroughWithOpenGLCompositing/OpenGLComposite.cpp new file mode 100644 index 0000000..da7cb67 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/OpenGLComposite.cpp @@ -0,0 +1,1261 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ + +#include "OpenGLComposite.h" +#include "GLExtensions.h" + +#include +#include +#include + +#include +DEFINE_GUID(IID_PinnedMemoryAllocator, + 0xddf921a6, 0x279d, 0x4dcd, 0x86, 0x26, 0x75, 0x7f, 0x58, 0xa8, 0xc4, 0x35); + +namespace +{ +const char* kFragmentShaderFilename = "video_effect.frag"; + +std::string GetExecutableDirectory() +{ + char modulePath[MAX_PATH] = {}; + DWORD pathLength = GetModuleFileNameA(NULL, modulePath, MAX_PATH); + if (pathLength == 0 || pathLength == MAX_PATH) + return std::string(); + + std::string path(modulePath, pathLength); + std::string::size_type slashIndex = path.find_last_of("\\/"); + if (slashIndex == std::string::npos) + return std::string(); + + return path.substr(0, slashIndex); +} + +void CopyErrorMessage(const std::string& message, int errorMessageSize, char* errorMessage) +{ + if (!errorMessage || errorMessageSize <= 0) + return; + + strncpy_s(errorMessage, errorMessageSize, message.c_str(), _TRUNCATE); +} + +bool LoadTextFile(const std::string& path, std::string& contents, std::string& error) +{ + std::ifstream input(path.c_str(), std::ios::binary); + if (!input) + { + error = "Could not open fragment shader file: " + path; + return false; + } + + std::ostringstream buffer; + buffer << input.rdbuf(); + contents = buffer.str(); + + if (contents.empty()) + { + error = "Fragment shader file is empty: " + path; + return false; + } + + return true; +} +} + +OpenGLComposite::OpenGLComposite(HWND hWnd, HDC hDC, HGLRC hRC) : + hGLWnd(hWnd), hGLDC(hDC), hGLRC(hRC), + mCaptureDelegate(NULL), mPlayoutDelegate(NULL), + mDLInput(NULL), mDLOutput(NULL), + mPlayoutAllocator(NULL), + mFrameWidth(0), mFrameHeight(0), + mHasNoInputSource(true), + mFastTransferExtensionAvailable(false), + mCaptureTexture(0), + mFBOTexture(0), + mRotateAngle(0.0f), + mRotateAngleRate(0.0f) +{ + InitializeCriticalSection(&pMutex); +} + +OpenGLComposite::~OpenGLComposite() +{ + // Cleanup for Capture + if (mDLInput != NULL) + { + mDLInput->SetCallback(NULL); + + mDLInput->Release(); + mDLInput = NULL; + } + + if (mCaptureDelegate != NULL) + { + mCaptureDelegate->Release(); + mCaptureDelegate = NULL; + } + + // Cleanup for Playout + while (!mDLOutputVideoFrameQueue.empty()) + { + IDeckLinkMutableVideoFrame* frameToRelease = mDLOutputVideoFrameQueue.front(); + if (frameToRelease != NULL) + { + frameToRelease->Release(); + frameToRelease = NULL; + } + mDLOutputVideoFrameQueue.pop_front(); + } + + if (mDLOutput != NULL) + { + mDLOutput->SetScheduledFrameCompletionCallback(NULL); + + mDLOutput->Release(); + mDLOutput = NULL; + } + + if (mPlayoutDelegate != NULL) + { + mPlayoutDelegate->Release(); + mPlayoutDelegate = NULL; + } + + if (mPlayoutAllocator != NULL) + { + mPlayoutAllocator->Release(); + mPlayoutAllocator = NULL; + } + + DeleteCriticalSection(&pMutex); +} + +bool OpenGLComposite::InitDeckLink() +{ + bool bSuccess = false; + IDeckLinkIterator* pDLIterator = NULL; + IDeckLink* pDL = NULL; + IDeckLinkProfileAttributes* deckLinkAttributes = NULL; + IDeckLinkDisplayModeIterator* pDLDisplayModeIterator = NULL; + IDeckLinkDisplayMode* pDLDisplayMode = NULL; + BMDDisplayMode displayMode = bmdModeHD1080p5994; // mode to use for capture and playout + int outputFrameRowBytes; + float fps; + HRESULT result; + + result = CoCreateInstance(CLSID_CDeckLinkIterator, NULL, CLSCTX_ALL, IID_IDeckLinkIterator, (void**)&pDLIterator); + if (FAILED(result)) + { + MessageBox(NULL, _T("Please install the Blackmagic DeckLink drivers to use the features of this application."), _T("This application requires the DeckLink drivers installed."), MB_OK); + return false; + } + + while (pDLIterator->Next(&pDL) == S_OK) + { + int64_t duplexMode; + + if (result = pDL->QueryInterface(IID_IDeckLinkProfileAttributes, (void**)&deckLinkAttributes) != S_OK) + { + printf("Could not obtain the IDeckLinkProfileAttributes interface - result %08x\n", result); + pDL->Release(); + pDL = NULL; + continue; + } + + result = deckLinkAttributes->GetInt(BMDDeckLinkDuplex, &duplexMode); + deckLinkAttributes->Release(); + deckLinkAttributes = NULL; + + if (result != S_OK || duplexMode == bmdDuplexInactive) + { + pDL->Release(); + pDL = NULL; + continue; + } + + // Use a full duplex device as capture and playback, or half-duplex device + // as capture or playback. + bool inputUsed = false; + if (!mDLInput && pDL->QueryInterface(IID_IDeckLinkInput, (void**)&mDLInput) == S_OK) + inputUsed = true; + + if (!mDLOutput && (!inputUsed || (duplexMode == bmdDuplexFull))) + { + if (pDL->QueryInterface(IID_IDeckLinkOutput, (void**)&mDLOutput) != S_OK) + mDLOutput = NULL; + } + + pDL->Release(); + pDL = NULL; + + if (mDLOutput && mDLInput) + break; + } + + if (! mDLOutput || ! mDLInput) + { + MessageBox(NULL, _T("Expected both Input and Output DeckLink devices"), _T("This application requires two DeckLink devices."), MB_OK); + goto error; + } + + if (mDLOutput->GetDisplayModeIterator(&pDLDisplayModeIterator) != S_OK) + { + MessageBox(NULL, _T("Cannot get Display Mode Iterator."), _T("DeckLink error."), MB_OK); + goto error; + } + + while (pDLDisplayModeIterator->Next(&pDLDisplayMode) == S_OK) + { + if (pDLDisplayMode->GetDisplayMode() == displayMode) + break; + + pDLDisplayMode->Release(); + pDLDisplayMode = NULL; + } + pDLDisplayModeIterator->Release(); + pDLDisplayModeIterator = NULL; + + if (pDLDisplayMode == NULL) + { + MessageBox(NULL, _T("Cannot get specified BMDDisplayMode."), _T("DeckLink error."), MB_OK); + goto error; + } + + mFrameWidth = pDLDisplayMode->GetWidth(); + mFrameHeight = pDLDisplayMode->GetHeight(); + + if (! CheckOpenGLExtensions()) + goto error; + + if (! InitOpenGLState()) + goto error; + + // Compute a rotate angle rate so box will spin at a rate independent of video mode frame rate + pDLDisplayMode->GetFrameRate(&mFrameDuration, &mFrameTimescale); + fps = (float)mFrameTimescale / (float)mFrameDuration; + mRotateAngleRate = 35.0f / fps; // rotate box through 35 degrees every second + + // Resize window to match video frame, but scale large formats down by half for viewing + if (mFrameWidth < 1920) + resizeWindow(mFrameWidth, mFrameHeight); + else + resizeWindow(mFrameWidth / 2, mFrameHeight / 2); + + if (mFastTransferExtensionAvailable) + { + // Initialize fast video frame transfers + if (! VideoFrameTransfer::initialize(mFrameWidth, mFrameHeight, mCaptureTexture, mFBOTexture)) + { + MessageBox(NULL, _T("Cannot initialize video transfers."), _T("VideoFrameTransfer error."), MB_OK); + goto error; + } + } + + { + // Use custom allocators so we pin only once then recycle them + CComPtr captureAllocator(new (std::nothrow) InputAllocatorPool(hGLDC, hGLRC)); + + if (mDLInput->EnableVideoInputWithAllocatorProvider(displayMode, bmdFormat8BitYUV, bmdVideoInputFlagDefault, captureAllocator) != S_OK) + goto error; + } + + mCaptureDelegate = new CaptureDelegate(this); + if (mDLInput->SetCallback(mCaptureDelegate) != S_OK) + goto error; + + if (mDLOutput->RowBytesForPixelFormat(bmdFormat8BitBGRA, mFrameWidth, &outputFrameRowBytes) != S_OK) + goto error; + + // Use a custom allocator so we pin only once then recycle them + mPlayoutAllocator = new PinnedMemoryAllocator(hGLDC, hGLRC, VideoFrameTransfer::GPUtoCPU, 1, outputFrameRowBytes * mFrameHeight); + + if (mDLOutput->EnableVideoOutput(displayMode, bmdVideoOutputFlagDefault) != S_OK) + goto error; + + // Create a queue of 10 IDeckLinkMutableVideoFrame objects to use for scheduling output video frames. + // The ScheduledFrameCompleted() callback will immediately schedule a new frame using the next video frame from this queue. + for (int i = 0; i < 10; i++) + { + // The frame read back from the GPU frame buffer and used for the playout video frame is in BGRA format. + // The BGRA frame will be converted on playout to YCbCr either in hardware on most DeckLink cards or in software + // within the DeckLink API for DeckLink devices without this hardware conversion. + // If you want RGB 4:4:4 format to be played out "over the wire" in SDI, turn on the "Use 4:4:4 SDI" in the control + // panel or turn on the bmdDeckLinkConfig444SDIVideoOutput flag using the IDeckLinkConfiguration interface. + IDeckLinkMutableVideoFrame* outputFrame; + IDeckLinkVideoBuffer* outputFrameBuffer = NULL; + + if (mPlayoutAllocator->AllocateVideoBuffer(&outputFrameBuffer) != S_OK) + goto error; + + if (mDLOutput->CreateVideoFrameWithBuffer(mFrameWidth, mFrameHeight, outputFrameRowBytes, bmdFormat8BitBGRA, bmdFrameFlagFlipVertical, outputFrameBuffer, &outputFrame) != S_OK) + goto error; + + mDLOutputVideoFrameQueue.push_back(outputFrame); + } + + mPlayoutDelegate = new PlayoutDelegate(this); + if (mPlayoutDelegate == NULL) + goto error; + + if (mDLOutput->SetScheduledFrameCompletionCallback(mPlayoutDelegate) != S_OK) + goto error; + + bSuccess = true; + +error: + if (!bSuccess) + { + if (mDLInput != NULL) + { + mDLInput->Release(); + mDLInput = NULL; + } + if (mDLOutput != NULL) + { + mDLOutput->Release(); + mDLOutput = NULL; + } + } + + if (pDL != NULL) + { + pDL->Release(); + pDL = NULL; + } + + if (pDLDisplayMode != NULL) + { + pDLDisplayMode->Release(); + pDLDisplayMode = NULL; + } + + if (pDLIterator != NULL) + { + pDLIterator->Release(); + pDLIterator = NULL; + } + + return bSuccess; +} + +void OpenGLComposite::paintGL() +{ + // The DeckLink API provides IDeckLinkGLScreenPreviewHelper as a convenient way to view the playout video frames + // in a window. However, it performs a copy from host memory to the GPU which is wasteful in this case since + // we already have the rendered frame to be played out sitting in the GPU in the mIdFrameBuf frame buffer. + + // Simply copy the off-screen frame buffer to on-screen frame buffer, scaling to the viewing window size. + glBindFramebufferEXT(GL_READ_FRAMEBUFFER, mIdFrameBuf); + glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER, 0); + glViewport(0, 0, mViewWidth, mViewHeight); + glBlitFramebufferEXT(0, 0, mFrameWidth, mFrameHeight, 0, 0, mViewWidth, mViewHeight, GL_COLOR_BUFFER_BIT, GL_LINEAR); + + SwapBuffers(hGLDC); + ValidateRect(hGLWnd, NULL); +} + +void OpenGLComposite::resizeGL(WORD width, WORD height) +{ + // We don't set the project or model matrices here since the window data is copied directly from + // an off-screen FBO in paintGL(). Just save the width and height for use in paintGL(). + mViewWidth = width; + mViewHeight = height; +} + +void OpenGLComposite::resizeWindow(int width, int height) +{ + RECT r; + if (GetWindowRect(hGLWnd, &r)) + { + SetWindowPos(hGLWnd, HWND_TOP, r.left, r.top, r.left + width, r.top + height, 0); + } +} + +bool OpenGLComposite::InitOpenGLState() +{ + if (! ResolveGLExtensions()) + return false; + + // Prepare the shader used to perform colour space conversion on the video texture + char compilerErrorMessage[1024]; + if (! compileFragmentShader(sizeof(compilerErrorMessage), compilerErrorMessage)) + { + MessageBoxA(NULL, compilerErrorMessage, "OpenGL shader failed to load or compile", MB_OK); + return false; + } + + // Setup the scene + glShadeModel( GL_SMOOTH ); // Enable smooth shading + glClearColor( 0.0f, 0.0f, 0.0f, 0.5f ); // Black background + glClearDepth( 1.0f ); // Depth buffer setup + glEnable( GL_DEPTH_TEST ); // Enable depth testing + glDepthFunc( GL_LEQUAL ); // Type of depth test to do + glHint( GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST ); + + if (! mFastTransferExtensionAvailable) + { + glGenBuffers(1, &mUnpinnedTextureBuffer); + } + + // Setup the texture which will hold the captured video frame pixels + glEnable(GL_TEXTURE_2D); + glGenTextures(1, &mCaptureTexture); + glBindTexture(GL_TEXTURE_2D, mCaptureTexture); + + // Parameters to control how texels are sampled from the texture + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP); + glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); + + // Create texture with empty data, we will update it using glTexSubImage2D each frame. + // The captured video is YCbCr 4:2:2 packed into a UYVY macropixel. OpenGL has no YCbCr format + // so treat it as RGBA 4:4:4:4 by halving the width and using GL_RGBA internal format. + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, mFrameWidth/2, mFrameHeight, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL); + glBindTexture(GL_TEXTURE_2D, 0); + + + // Create Frame Buffer Object (FBO) to perform off-screen rendering of scene. + // This allows the render to be done on a framebuffer with width and height exactly matching the video format. + glGenFramebuffersEXT(1, &mIdFrameBuf); + glGenRenderbuffersEXT(1, &mIdColorBuf); + glGenRenderbuffersEXT(1, &mIdDepthBuf); + + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mIdFrameBuf); + + // Texture for FBO + glGenTextures(1, &mFBOTexture); + glBindTexture(GL_TEXTURE_2D, mFBOTexture); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, mFrameWidth, mFrameHeight, 0, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL); + + // Attach a depth buffer + glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, mIdDepthBuf); + glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT, mFrameWidth, mFrameHeight); + + glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, mIdDepthBuf); + + // Attach the texture which stores the playback image + glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, mFBOTexture, 0); + glBindTexture(GL_TEXTURE_2D, 0); + glDisable(GL_TEXTURE_2D); + + GLenum glStatus = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); + if (glStatus != GL_FRAMEBUFFER_COMPLETE_EXT) + { + MessageBox(NULL, _T("Cannot initialize framebuffer."), _T("OpenGL initialization error."), MB_OK); + return false; + } + + return true; +} + +// +// Update the captured video frame texture +// +void OpenGLComposite::VideoFrameArrived(IDeckLinkVideoInputFrame* inputFrame, bool hasNoInputSource) +{ + mHasNoInputSource = hasNoInputSource; + if (mHasNoInputSource) + return; // don't transfer texture when there's no input + + long textureSize = inputFrame->GetRowBytes() * inputFrame->GetHeight(); + IDeckLinkVideoBuffer* inputFrameBuffer = NULL; + void* videoPixels; + + if (inputFrame->QueryInterface(IID_IDeckLinkVideoBuffer, (void**)&inputFrameBuffer) != S_OK) + return; + + if (inputFrameBuffer->StartAccess(bmdBufferAccessRead) != S_OK) + { + inputFrameBuffer->Release(); + return; + } + inputFrameBuffer->GetBytes(&videoPixels); + + EnterCriticalSection(&pMutex); + + wglMakeCurrent( hGLDC, hGLRC ); // make OpenGL context current in this thread + + if (mFastTransferExtensionAvailable) + { + CComQIPtr allocator(inputFrameBuffer); + if (!allocator || !allocator->transferFrame(videoPixels, mCaptureTexture)) + OutputDebugStringA("Capture: transferFrame() failed\n"); + + allocator->waitForTransferComplete(videoPixels); + } + else + { + glEnable(GL_TEXTURE_2D); + + // Use a straightforward texture buffer + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, mUnpinnedTextureBuffer); + glBufferData(GL_PIXEL_UNPACK_BUFFER, textureSize, videoPixels, GL_DYNAMIC_DRAW); + glBindTexture(GL_TEXTURE_2D, mCaptureTexture); + + // NULL for last arg indicates use current GL_PIXEL_UNPACK_BUFFER target as texture data + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, mFrameWidth/2, mFrameHeight, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL); + + glBindTexture(GL_TEXTURE_2D, 0); + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + glDisable(GL_TEXTURE_2D); + } + + wglMakeCurrent( NULL, NULL ); + + LeaveCriticalSection(&pMutex); + + inputFrameBuffer->EndAccess(bmdBufferAccessRead); + inputFrameBuffer->Release(); +} + +// Draw the captured video frame texture onto a box, rendering to the off-screen frame buffer. +// Read the rendered scene back from the frame buffer and schedule it for playout. +void OpenGLComposite::PlayoutFrameCompleted(IDeckLinkVideoFrame* completedFrame, BMDOutputFrameCompletionResult completionResult) +{ + EnterCriticalSection(&pMutex); + + // Get the first frame from the queue + IDeckLinkMutableVideoFrame* outputVideoFrame = mDLOutputVideoFrameQueue.front(); + mDLOutputVideoFrameQueue.push_back(outputVideoFrame); + mDLOutputVideoFrameQueue.pop_front(); + + // make GL context current in this thread + wglMakeCurrent( hGLDC, hGLRC ); + + // Draw OpenGL scene to the off-screen frame buffer + glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, mIdFrameBuf); + + // Setup view and projection + GLfloat aspectRatio = (GLfloat)mFrameWidth / (GLfloat)mFrameHeight; + glViewport (0, 0, mFrameWidth, mFrameHeight); + glMatrixMode( GL_PROJECTION ); + glLoadIdentity(); + gluPerspective( 45.0f, aspectRatio, 0.1f, 100.0f ); + glMatrixMode( GL_MODELVIEW ); + glLoadIdentity(); + + glClear( GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT ); + glScalef( aspectRatio, 1.0f, 1.0f ); // Scale x for correct aspect ratio + glTranslatef( 0.0f, 0.0f, -4.0f ); // Move into screen + glRotatef( mRotateAngle, 1.0f, 1.0f, 1.0f ); // Rotate model around a vector + mRotateAngle -= mRotateAngleRate; // update the rotation angle for next iteration + glFinish(); // Ensure changes to GL state are complete + + // Draw a colourful frame around the front face of the box + // (provides a pleasing nesting effect when you connect the playout output to the capture input) + glBegin(GL_QUAD_STRIP); + glColor3f( 1.0f, 0.0f, 0.0f ); + glVertex3f( 1.2f, 1.2f, 1.0f); + glVertex3f( 1.0f, 1.0f, 1.0f); + glColor3f( 0.0f, 0.0f, 1.0f ); + glVertex3f( 1.2f, -1.2f, 1.0f); + glVertex3f( 1.0f, -1.0f, 1.0f); + glColor3f( 0.0f, 1.0f, 0.0f ); + glVertex3f(-1.2f, -1.2f, 1.0f); + glVertex3f(-1.0f, -1.0f, 1.0f); + glColor3f( 1.0f, 1.0f, 0.0f ); + glVertex3f(-1.2f, 1.2f, 1.0f); + glVertex3f(-1.0f, 1.0f, 1.0f); + glColor3f( 1.0f, 0.0f, 0.0f ); + glVertex3f( 1.2f, 1.2f, 1.0f); + glVertex3f( 1.0f, 1.0f, 1.0f); + glEnd(); + + if (mHasNoInputSource) + { + // Draw a big X when no input is available on capture + glBegin( GL_QUADS ); + glColor3f( 1.0f, 0.0f, 1.0f ); + glVertex3f( 0.8f, 0.9f, 1.0f ); + glVertex3f( 0.9f, 0.8f, 1.0f ); + glColor3f( 1.0f, 1.0f, 0.0f ); + glVertex3f( -0.8f, -0.9f, 1.0f ); + glVertex3f( -0.9f, -0.8f, 1.0f ); + glColor3f( 1.0f, 0.0f, 1.0f ); + glVertex3f( -0.8f, 0.9f, 1.0f ); + glVertex3f( -0.9f, 0.8f, 1.0f ); + glColor3f( 1.0f, 1.0f, 0.0f ); + glVertex3f( 0.8f, -0.9f, 1.0f ); + glVertex3f( 0.9f, -0.8f, 1.0f ); + glEnd(); + } + else + { + if (mFastTransferExtensionAvailable) + { + // Signal that we're about to draw using mCaptureTexture onto mFBOTexture + VideoFrameTransfer::beginTextureInUse(VideoFrameTransfer::CPUtoGPU); + } + + // Pass texture unit 0 to the fragment shader as a uniform variable + glEnable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, mCaptureTexture); + glUseProgram(mProgram); + GLint locUYVYtex = glGetUniformLocation(mProgram, "UYVYtex"); + glUniform1i(locUYVYtex, 0); // Bind texture unit 0 + + // Draw front and back faces of box applying video texture to each face + glBegin(GL_QUADS); + glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f ); // Top right of front side + glTexCoord2f(0.0f, 0.0f); glVertex3f( -1.0f, 1.0f, 1.0f ); // Top left of front side + glTexCoord2f(0.0f, 1.0f); glVertex3f( -1.0f, -1.0f, 1.0f ); // Bottom left of front side + glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f ); // Bottom right of front side + + glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f ); // Top right of back side + glTexCoord2f(0.0f, 1.0f); glVertex3f( -1.0f, -1.0f, -1.0f ); // Top left of back side + glTexCoord2f(0.0f, 0.0f); glVertex3f( -1.0f, 1.0f, -1.0f ); // Bottom left of back side + glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, -1.0f ); // Bottom right of back side + glEnd(); + + // Draw left and right sides of box with partially transparent video texture + glEnable(GL_BLEND); + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + glBegin(GL_QUADS); + glTexCoord2f(0.1f, 0.0f); glVertex3f( -1.0f, 1.0f, 1.0f ); // Top right of left side + glTexCoord2f(1.0f, 0.0f); glVertex3f( -1.0f, 1.0f, -1.0f ); // Top left of left side + glTexCoord2f(1.0f, 1.0f); glVertex3f( -1.0f, -1.0f, -1.0f ); // Bottom left of left side + glTexCoord2f(0.1f, 1.0f); glVertex3f( -1.0f, -1.0f, 1.0f ); // Bottom right of left side + + glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, -1.0f ); // Top right of right side + glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f ); // Top left of right side + glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, 1.0f ); // Bottom left of right side + glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f ); // Bottom right of right side + glEnd(); + glDisable(GL_BLEND); + + glUseProgram(0); + glDisable(GL_TEXTURE_2D); + glBindTexture(GL_TEXTURE_2D, 0); + } + + IDeckLinkVideoBuffer* outputVideoFrameBuffer; + if (outputVideoFrame->QueryInterface(IID_IDeckLinkVideoBuffer, (void**)&outputVideoFrameBuffer) != S_OK) + { + LeaveCriticalSection(&pMutex); + return; + } + + if (outputVideoFrameBuffer->StartAccess(bmdBufferAccessWrite) != S_OK) + { + outputVideoFrameBuffer->Release(); + LeaveCriticalSection(&pMutex); + return; + } + + void* pFrame; + outputVideoFrameBuffer->GetBytes(&pFrame); + + if (mFastTransferExtensionAvailable) + { + // Finished with mCaptureTexture + VideoFrameTransfer::endTextureInUse(VideoFrameTransfer::CPUtoGPU); + + if (! mPlayoutAllocator->transferFrame(pFrame, mFBOTexture)) + OutputDebugStringA("Playback: transferFrame() failed\n"); + + paintGL(); + + // Wait for transfer to system memory to complete + mPlayoutAllocator->waitForTransferComplete(pFrame); + } + else + { + glReadPixels(0, 0, mFrameWidth, mFrameHeight, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, pFrame); + paintGL(); + } + + outputVideoFrameBuffer->EndAccess(bmdBufferAccessWrite); + outputVideoFrameBuffer->Release(); + + // If the last completed frame was late or dropped, bump the scheduled time further into the future + if (completionResult == bmdOutputFrameDisplayedLate || completionResult == bmdOutputFrameDropped) + mTotalPlayoutFrames += 2; + + // Schedule the next frame for playout + HRESULT hr = mDLOutput->ScheduleVideoFrame(outputVideoFrame, (mTotalPlayoutFrames * mFrameDuration), mFrameDuration, mFrameTimescale); + if (SUCCEEDED(hr)) + mTotalPlayoutFrames++; + + wglMakeCurrent( NULL, NULL ); + + LeaveCriticalSection(&pMutex); +} + +bool OpenGLComposite::Start() +{ + mTotalPlayoutFrames = 0; + + // Preroll frames + for (unsigned i = 0; i < 5; i++) + { + // Take each video frame from the front of the queue and move it to the back + IDeckLinkMutableVideoFrame* outputVideoFrame = mDLOutputVideoFrameQueue.front(); + mDLOutputVideoFrameQueue.push_back(outputVideoFrame); + mDLOutputVideoFrameQueue.pop_front(); + + // Start with a black frame for playout + IDeckLinkVideoBuffer* outputVideoFrameBuffer; + if (outputVideoFrame->QueryInterface(IID_IDeckLinkVideoBuffer, (void**)&outputVideoFrameBuffer) != S_OK) + return false; + + if (outputVideoFrameBuffer->StartAccess(bmdBufferAccessWrite) != S_OK) + { + outputVideoFrameBuffer->Release(); + return false; + } + + void* pFrame; + outputVideoFrameBuffer->GetBytes((void**)&pFrame); + memset(pFrame, 0, outputVideoFrame->GetRowBytes() * mFrameHeight); // 0 is black in RGBA format + + outputVideoFrameBuffer->EndAccess(bmdBufferAccessWrite); + outputVideoFrameBuffer->Release(); + + if (mDLOutput->ScheduleVideoFrame(outputVideoFrame, (mTotalPlayoutFrames * mFrameDuration), mFrameDuration, mFrameTimescale) != S_OK) + return false; + + mTotalPlayoutFrames++; + } + + mDLInput->StartStreams(); + mDLOutput->StartScheduledPlayback(0, mFrameTimescale, 1.0); + + return true; +} + +bool OpenGLComposite::Stop() +{ + mDLInput->StopStreams(); + mDLInput->DisableVideoInput(); + + mDLOutput->StopScheduledPlayback(0, NULL, 0); + mDLOutput->DisableVideoOutput(); + + return true; +} + +// Setup fragment shader to take YCbCr 4:2:2 video texture in UYVY macropixel format +// and perform colour space conversion to RGBA in the GPU. +bool OpenGLComposite::compileFragmentShader(int errorMessageSize, char* errorMessage) +{ + GLsizei errorBufferSize; + GLint compileResult, linkResult; + std::string shaderPath = GetExecutableDirectory(); + std::string fragmentShaderSource; + std::string loadError; + + if (shaderPath.empty()) + { + CopyErrorMessage("Could not determine executable directory for fragment shader loading.", errorMessageSize, errorMessage); + return false; + } + + shaderPath += "\\"; + shaderPath += kFragmentShaderFilename; + + if (!LoadTextFile(shaderPath, fragmentShaderSource, loadError)) + { + CopyErrorMessage(loadError, errorMessageSize, errorMessage); + return false; + } + + const char* fragmentSource = fragmentShaderSource.c_str(); + + mFragmentShader = glCreateShader(GL_FRAGMENT_SHADER); + + glShaderSource(mFragmentShader, 1, (const GLchar**)&fragmentSource, NULL); + glCompileShader(mFragmentShader); + + glGetShaderiv(mFragmentShader, GL_COMPILE_STATUS, &compileResult); + if (compileResult == GL_FALSE) + { + glGetShaderInfoLog(mFragmentShader, errorMessageSize, &errorBufferSize, errorMessage); + return false; + } + + mProgram = glCreateProgram(); + + glAttachShader(mProgram, mFragmentShader); + glLinkProgram(mProgram); + + glGetProgramiv(mProgram, GL_LINK_STATUS, &linkResult); + if (linkResult == GL_FALSE) + { + glGetProgramInfoLog(mProgram, errorMessageSize, &errorBufferSize, errorMessage); + return false; + } + + return true; +} + +bool OpenGLComposite::CheckOpenGLExtensions() +{ + const GLubyte* strExt; + bool hasFBO; + + // The GL_EXT_framebuffer_object extension is required but GL_AMD_pinned_memory is optional + strExt = glGetString (GL_EXTENSIONS); + hasFBO = strstr((char*)strExt, "GL_EXT_framebuffer_object") != NULL; + + mFastTransferExtensionAvailable = VideoFrameTransfer::checkFastMemoryTransferAvailable(); + + if (!hasFBO) + { + MessageBox(NULL, _T("Required OpenGL extension \"GL_EXT_framebuffer_object\" is not available."), _T("OpenGL initialization error."), MB_OK); + return false; + } + + if (!mFastTransferExtensionAvailable) + OutputDebugStringA("Fast memory transfer extension not available, using regular OpenGL transfer fallback instead\n"); + + return true; +} + +//////////////////////////////////////////// +// PinnedMemoryAllocator +//////////////////////////////////////////// + +// PinnedMemoryAllocator implements the IDeckLinkVideoBufferAllocator interface to be used instead of the +// built-in buffer allocator +// +// For this sample application a custom buffer allocator is used to ensure each address +// of buffer memory is aligned on a 4kB boundary required by the OpenGL pinned memory extension. +// If the pinned memory extension is not available, this allocator will still be used and +// demonstrates how to cache buffer allocations for efficiency. +// +// The frame cache delays the releasing of buffers until the cache fills up, thereby avoiding an +// allocate plus pin operation for every frame, followed by an unpin and deallocate on every frame. + +PinnedMemoryAllocator::PinnedMemoryAllocator(HDC hdc, HGLRC hglrc, VideoFrameTransfer::Direction direction, unsigned cacheSize, unsigned bufferSize) : + mHGLDC(hdc), + mHGLRC(hglrc), + mRefCount(1), + mDirection(direction), + mBufferSize(bufferSize), + mFrameCacheSize(cacheSize) // large cache size will keep more memory pinned and may result in out of memory errors +{ +} + +PinnedMemoryAllocator::~PinnedMemoryAllocator() +{ + // Cleanup any unused buffers that remain in the cache + while (!mFrameCache.empty()) + { + unPinAddress(mFrameCache.back()); + VirtualFree(mFrameCache.back(), 0, MEM_RELEASE); + mFrameCache.pop_back(); + } + + for (auto iter = mFrameTransfer.begin(); iter != mFrameTransfer.end(); ++iter) + { + delete iter->second; + } + mFrameTransfer.clear(); +} + +bool PinnedMemoryAllocator::transferFrame(void* address, GLuint gpuTexture) +{ + if (mFrameTransfer.count(address) == 0) + { + // VideoFrameTransfer prepares and pins address + mFrameTransfer[address] = new VideoFrameTransfer(mBufferSize, address, mDirection); + } + + return mFrameTransfer[address]->performFrameTransfer(); +} + +void PinnedMemoryAllocator::waitForTransferComplete(void* address) +{ + if (mFrameTransfer.count(address)) + mFrameTransfer[address]->waitForTransferComplete(); +} + +void PinnedMemoryAllocator::unPinAddress(void* address) +{ + // un-pin address only if it has been pinned for transfer + if (mFrameTransfer.count(address) > 0) + { + wglMakeCurrent( mHGLDC, mHGLRC ); + + mFrameTransfer.erase(address); + + wglMakeCurrent( NULL, NULL ); + } +} + +// IUnknown methods +HRESULT STDMETHODCALLTYPE PinnedMemoryAllocator::QueryInterface(REFIID iid, LPVOID* ppv) +{ + if (!ppv) + { + return E_POINTER; + } + if (iid == IID_IUnknown || iid == IID_PinnedMemoryAllocator) + { + *ppv = this; + } + else if (iid == IID_IDeckLinkVideoBufferAllocator) + { + *ppv = static_cast(this); + } + else + { + *ppv = nullptr; + return E_NOINTERFACE; + } + AddRef(); + return S_OK; +} + +ULONG STDMETHODCALLTYPE PinnedMemoryAllocator::AddRef(void) +{ + return ++mRefCount; +} + +ULONG STDMETHODCALLTYPE PinnedMemoryAllocator::Release(void) +{ + int newCount = --mRefCount; + if (newCount == 0) + delete this; + return newCount; +} + +// IDeckLinkMemoryAllocator methods +HRESULT STDMETHODCALLTYPE PinnedMemoryAllocator::AllocateVideoBuffer (IDeckLinkVideoBuffer** allocatedBuffer) +{ + std::shared_ptr sharedMemBuffer; + + // Manage caching of allocated buffers via shared_ptr deleter. + auto deleter = [this](void* buffer) mutable { + if (mFrameCache.size() < mFrameCacheSize) + { + mFrameCache.push_back(buffer); + } + else + { + // No room left in cache, so un-pin (if it was pinned) and free this buffer + unPinAddress(buffer); + VirtualFree(buffer, 0, MEM_RELEASE); + } + // We AddRef this class once the deleter is used because this class owns the mem + Release(); + }; + + if (mFrameCache.empty()) + { + // Allocate memory on a page boundary + void* memBuffer = VirtualAlloc(NULL, mBufferSize, MEM_COMMIT | MEM_RESERVE | MEM_WRITE_WATCH, PAGE_READWRITE); + + if (!memBuffer) + return E_OUTOFMEMORY; + + sharedMemBuffer = std::shared_ptr(memBuffer, deleter); + } + else + { + // Re-use most recently released address + sharedMemBuffer = std::shared_ptr(mFrameCache.back(), deleter); + mFrameCache.pop_back(); + } + + // This class owns the mem so the buffer we return needs to AddRef() this, and Release() in the deleter + AddRef(); + + *allocatedBuffer = new DeckLinkVideoBuffer(sharedMemBuffer, this); + + return S_OK; +} + +//////////////////////////////////////////// +// InputAllocatorPool Class +//////////////////////////////////////////// + +InputAllocatorPool::InputAllocatorPool(HDC hdc, HGLRC hglrc) +{ + mHDC = hdc; + mHGLRC = hglrc; +} + +HRESULT InputAllocatorPool::QueryInterface(REFIID iid, void** ppv) +{ + if (!ppv) + { + return E_POINTER; + } + if (iid == IID_IUnknown) + { + *ppv = this; + } + else if (iid == IID_IDeckLinkVideoBufferAllocatorProvider) + { + *ppv = static_cast(this); + } + else + { + *ppv = nullptr; + return E_NOINTERFACE; + } + AddRef(); + return S_OK; +} + +ULONG InputAllocatorPool::AddRef(void) +{ + return ++mRefCount; +} + +ULONG InputAllocatorPool::Release(void) +{ + int newCount = --mRefCount; + if (newCount == 0) + delete this; + return newCount; +} + +HRESULT InputAllocatorPool::GetVideoBufferAllocator( + /* [in] */ unsigned int bufferSize, + /* [in] */ unsigned int, + /* [in] */ unsigned int, + /* [in] */ unsigned int, + /* [in] */ BMDPixelFormat, + /* [out] */ IDeckLinkVideoBufferAllocator **allocator) +{ + if (!allocator) + return E_POINTER; + + auto existing = mAllocatorBySize.find(bufferSize); + if (existing != mAllocatorBySize.end()) + { + *allocator = &*existing->second; + (*allocator)->AddRef(); + return S_OK; + } + + CComPtr newAllocator; + newAllocator.Attach(new (std::nothrow) PinnedMemoryAllocator(mHDC, mHGLRC, VideoFrameTransfer::CPUtoGPU, 3, bufferSize)); + if (!newAllocator) + return E_OUTOFMEMORY; + + mAllocatorBySize.emplace(std::make_pair(bufferSize, newAllocator)); + *allocator = newAllocator.Detach(); + return S_OK; +} + +//////////////////////////////////////////// +// DeckLink Video Buffer Class +//////////////////////////////////////////// + +DeckLinkVideoBuffer::DeckLinkVideoBuffer(std::shared_ptr& buffer, PinnedMemoryAllocator* parent) : + mParentAllocator(parent), + mRefCount(1), + mBuffer(buffer) +{ +} + +HRESULT STDMETHODCALLTYPE DeckLinkVideoBuffer::QueryInterface(REFIID riid, void** ppvObject) +{ + HRESULT result = S_OK; + + if (ppvObject == nullptr) + return E_POINTER; + + if (riid == IID_IUnknown) + { + *ppvObject = this; + AddRef(); + } + else if (riid == IID_IDeckLinkVideoBuffer) + { + *ppvObject = static_cast(this); + AddRef(); + } + else if (riid == IID_PinnedMemoryAllocator) + { + result = mParentAllocator->QueryInterface(riid, ppvObject); + } + else + { + *ppvObject = nullptr; + result = E_NOINTERFACE; + } + + return result; +} + +ULONG STDMETHODCALLTYPE DeckLinkVideoBuffer::AddRef() +{ + return ++mRefCount; +} + +ULONG STDMETHODCALLTYPE DeckLinkVideoBuffer::Release() +{ + int newValue = --mRefCount; + if (newValue == 0) + delete this; + + return newValue; +} + +HRESULT STDMETHODCALLTYPE DeckLinkVideoBuffer::GetBytes(void** buffer) +{ + if (buffer == nullptr) + return E_POINTER; + + *buffer = mBuffer.get(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DeckLinkVideoBuffer::GetSize(uint64_t* size) +{ + if (size == nullptr) + return E_POINTER; + + *size = mParentAllocator->bufferSize(); + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DeckLinkVideoBuffer::StartAccess(BMDBufferAccessFlags) +{ + return S_OK; +} + +HRESULT STDMETHODCALLTYPE DeckLinkVideoBuffer::EndAccess(BMDBufferAccessFlags) +{ + return S_OK; +} + +//////////////////////////////////////////// +// DeckLink Capture Delegate Class +//////////////////////////////////////////// +CaptureDelegate::CaptureDelegate(OpenGLComposite* pOwner) : + m_pOwner(pOwner), + mRefCount(1) +{ +} + +HRESULT CaptureDelegate::QueryInterface(REFIID iid, LPVOID *ppv) +{ + *ppv = NULL; + return E_NOINTERFACE; +} +ULONG CaptureDelegate::AddRef() +{ + return InterlockedIncrement(&mRefCount); +} +ULONG CaptureDelegate::Release() +{ + int newCount = InterlockedDecrement(&mRefCount); + if (newCount == 0) + delete this; + return newCount; +} + +HRESULT CaptureDelegate::VideoInputFrameArrived(IDeckLinkVideoInputFrame* inputFrame, IDeckLinkAudioInputPacket* /*audioPacket*/) +{ + if (! inputFrame) + { + // It's possible to receive a NULL inputFrame, but a valid audioPacket. Ignore audio-only frame. + return S_OK; + } + + bool hasNoInputSource = (inputFrame->GetFlags() & bmdFrameHasNoInputSource) == bmdFrameHasNoInputSource; + + m_pOwner->VideoFrameArrived(inputFrame, hasNoInputSource); + return S_OK; +} + +HRESULT CaptureDelegate::VideoInputFormatChanged(BMDVideoInputFormatChangedEvents notificationEvents, IDeckLinkDisplayMode *newDisplayMode, BMDDetectedVideoInputFormatFlags detectedSignalFlags) +{ + return S_OK; +} + +//////////////////////////////////////////// +// DeckLink Playout Delegate Class +//////////////////////////////////////////// +PlayoutDelegate::PlayoutDelegate(OpenGLComposite* pOwner) : + m_pOwner(pOwner), + mRefCount(1) +{ +} + +HRESULT PlayoutDelegate::QueryInterface(REFIID iid, LPVOID *ppv) +{ + *ppv = NULL; + return E_NOINTERFACE; +} +ULONG PlayoutDelegate::AddRef() +{ + return InterlockedIncrement(&mRefCount); +} +ULONG PlayoutDelegate::Release() +{ + int newCount = InterlockedDecrement(&mRefCount); + if (newCount == 0) + delete this; + return newCount; +} + +HRESULT PlayoutDelegate::ScheduledFrameCompleted (IDeckLinkVideoFrame* completedFrame, BMDOutputFrameCompletionResult result) +{ + switch (result) + { + case bmdOutputFrameDisplayedLate: + OutputDebugStringA("ScheduledFrameCompleted() frame did not complete: Frame Displayed Late\n"); + break; + case bmdOutputFrameDropped: + OutputDebugStringA("ScheduledFrameCompleted() frame did not complete: Frame Dropped\n"); + break; + case bmdOutputFrameCompleted: + case bmdOutputFrameFlushed: + // Don't log bmdOutputFrameFlushed result since it is expected when Stop() is called + break; + default: + OutputDebugStringA("ScheduledFrameCompleted() frame did not complete: Unknown error\n"); + } + + m_pOwner->PlayoutFrameCompleted(completedFrame, result); + return S_OK; +} + +HRESULT PlayoutDelegate::ScheduledPlaybackHasStopped () +{ + return S_OK; +} diff --git a/apps/LoopThroughWithOpenGLCompositing/OpenGLComposite.h b/apps/LoopThroughWithOpenGLCompositing/OpenGLComposite.h new file mode 100644 index 0000000..5c28f08 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/OpenGLComposite.h @@ -0,0 +1,261 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ + +#ifndef __OPENGL_COMPOSITE_H__ +#define __OPENGL_COMPOSITE_H__ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include "DeckLinkAPI_h.h" + +#include "VideoFrameTransfer.h" + +#include +#include +#include +#include +#include + +class PlayoutDelegate; +class CaptureDelegate; +class PinnedMemoryAllocator; + + +class OpenGLComposite +{ +public: + OpenGLComposite(HWND hWnd, HDC hDC, HGLRC hRC); + ~OpenGLComposite(); + + bool InitDeckLink(); + bool Start(); + bool Stop(); + + void resizeGL(WORD width, WORD height); + void paintGL(); + + void VideoFrameArrived(IDeckLinkVideoInputFrame* inputFrame, bool hasNoInputSource); + void PlayoutFrameCompleted(IDeckLinkVideoFrame* completedFrame, BMDOutputFrameCompletionResult result); + +private: + void resizeWindow(int width, int height); + bool CheckOpenGLExtensions(); + + CaptureDelegate* mCaptureDelegate; + PlayoutDelegate* mPlayoutDelegate; + HWND hGLWnd; + HDC hGLDC; + HGLRC hGLRC; + CRITICAL_SECTION pMutex; + + // DeckLink + IDeckLinkInput* mDLInput; + IDeckLinkOutput* mDLOutput; + std::deque mDLOutputVideoFrameQueue; + PinnedMemoryAllocator* mPlayoutAllocator; + BMDTimeValue mFrameDuration; + BMDTimeScale mFrameTimescale; + unsigned mTotalPlayoutFrames; + unsigned mFrameWidth; + unsigned mFrameHeight; + bool mHasNoInputSource; + + // OpenGL data + bool mFastTransferExtensionAvailable; + GLuint mCaptureTexture; + GLuint mFBOTexture; + GLuint mUnpinnedTextureBuffer; + GLuint mIdFrameBuf; + GLuint mIdColorBuf; + GLuint mIdDepthBuf; + GLuint mProgram; + GLuint mFragmentShader; + GLfloat mRotateAngle; + GLfloat mRotateAngleRate; + int mViewWidth; + int mViewHeight; + + bool InitOpenGLState(); + bool compileFragmentShader(int errorMessageSize, char* errorMessage); +}; + +//////////////////////////////////////////// +// PinnedMemoryAllocator +//////////////////////////////////////////// +class PinnedMemoryAllocator : public IDeckLinkVideoBufferAllocator +{ +public: + PinnedMemoryAllocator(HDC hdc, HGLRC hglrc, VideoFrameTransfer::Direction direction, unsigned cacheSize, unsigned bufferSize); + virtual ~PinnedMemoryAllocator(); + + bool transferFrame(void* address, GLuint gpuTexture); + void waitForTransferComplete(void* address); + unsigned bufferSize() { return mBufferSize; } + + // IUnknown methods + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, LPVOID *ppv) override; + virtual ULONG STDMETHODCALLTYPE AddRef(void) override; + virtual ULONG STDMETHODCALLTYPE Release(void) override; + + // IDeckLinkVideoBufferAllocator methods + virtual HRESULT STDMETHODCALLTYPE AllocateVideoBuffer (IDeckLinkVideoBuffer** allocatedBuffer) override; + +private: + + void unPinAddress(void* address); + +private: + HDC mHGLDC; + HGLRC mHGLRC; + std::atomic mRefCount; + VideoFrameTransfer::Direction mDirection; + std::map mFrameTransfer; + unsigned mBufferSize; + std::vector mFrameCache; + unsigned mFrameCacheSize; +}; + +//////////////////////////////////////////// +// InputAllocatorPool +//////////////////////////////////////////// + +class InputAllocatorPool : public IDeckLinkVideoBufferAllocatorProvider +{ +public: + InputAllocatorPool(HDC hdc, HGLRC hglrc); + + // IUnknown interface + ULONG STDMETHODCALLTYPE AddRef() override; + ULONG STDMETHODCALLTYPE Release() override; + HRESULT STDMETHODCALLTYPE QueryInterface(REFIID iid, void** ppv) override; + + // IDeckLinkVideoBufferAllocatorProvider interface + HRESULT STDMETHODCALLTYPE GetVideoBufferAllocator( + /* [in] */ unsigned int bufferSize, + /* [in] */ unsigned int width, + /* [in] */ unsigned int height, + /* [in] */ unsigned int rowBytes, + /* [in] */ BMDPixelFormat pixelFormat, + /* [out] */ IDeckLinkVideoBufferAllocator **allocator) override; + +private: + std::atomic mRefCount; + std::map > mAllocatorBySize; + HDC mHDC; + HGLRC mHGLRC; +}; + +//////////////////////////////////////////// +// DeckLinkVideoBuffer +//////////////////////////////////////////// +class DeckLinkVideoBuffer : public IDeckLinkVideoBuffer +{ +public: + explicit DeckLinkVideoBuffer(std::shared_ptr& buffer, PinnedMemoryAllocator* parent); + virtual ~DeckLinkVideoBuffer() = default; + + // IUnknown interface + virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject) override; + virtual ULONG STDMETHODCALLTYPE AddRef(void) override; + virtual ULONG STDMETHODCALLTYPE Release(void) override; + + // IDeckLinkVideoBuffer interface + virtual HRESULT STDMETHODCALLTYPE GetBytes(void** buffer) override; + virtual HRESULT STDMETHODCALLTYPE GetSize(uint64_t* size) override; + virtual HRESULT STDMETHODCALLTYPE StartAccess(BMDBufferAccessFlags flags) override; + virtual HRESULT STDMETHODCALLTYPE EndAccess(BMDBufferAccessFlags flags) override; + +private: + CComPtr mParentAllocator; // Dual-purpose: allocator owns mem this points to, and to access transferFrame() via a QueryInterface + std::atomic mRefCount; + std::shared_ptr mBuffer; +}; + + +//////////////////////////////////////////// +// Capture Delegate Class +//////////////////////////////////////////// + +class CaptureDelegate : public IDeckLinkInputCallback +{ + OpenGLComposite* m_pOwner; + LONG mRefCount; + +public: + CaptureDelegate (OpenGLComposite* pOwner); + + // IUnknown needs only a dummy implementation + virtual HRESULT STDMETHODCALLTYPE QueryInterface (REFIID iid, LPVOID *ppv); + virtual ULONG STDMETHODCALLTYPE AddRef (); + virtual ULONG STDMETHODCALLTYPE Release (); + + virtual HRESULT STDMETHODCALLTYPE VideoInputFrameArrived (IDeckLinkVideoInputFrame *videoFrame, IDeckLinkAudioInputPacket *audioPacket); + virtual HRESULT STDMETHODCALLTYPE VideoInputFormatChanged (BMDVideoInputFormatChangedEvents notificationEvents, IDeckLinkDisplayMode *newDisplayMode, BMDDetectedVideoInputFormatFlags detectedSignalFlags); +}; + +//////////////////////////////////////////// +// Render Delegate Class +//////////////////////////////////////////// + +class PlayoutDelegate : public IDeckLinkVideoOutputCallback +{ + OpenGLComposite* m_pOwner; + LONG mRefCount; + +public: + PlayoutDelegate (OpenGLComposite* pOwner); + + // IUnknown needs only a dummy implementation + virtual HRESULT STDMETHODCALLTYPE QueryInterface (REFIID iid, LPVOID *ppv); + virtual ULONG STDMETHODCALLTYPE AddRef (); + virtual ULONG STDMETHODCALLTYPE Release (); + + virtual HRESULT STDMETHODCALLTYPE ScheduledFrameCompleted (IDeckLinkVideoFrame* completedFrame, BMDOutputFrameCompletionResult result); + virtual HRESULT STDMETHODCALLTYPE ScheduledPlaybackHasStopped (); +}; + +#endif // __OPENGL_COMPOSITE_H__ diff --git a/apps/LoopThroughWithOpenGLCompositing/VideoFrameTransfer.cpp b/apps/LoopThroughWithOpenGLCompositing/VideoFrameTransfer.cpp new file mode 100644 index 0000000..848d8fb --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/VideoFrameTransfer.cpp @@ -0,0 +1,367 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ + +#include "VideoFrameTransfer.h" + + +#define DVP_CHECK(cmd) { \ + DVPStatus hr = (cmd); \ + if (DVP_STATUS_OK != hr) { \ + OutputDebugStringA( #cmd " failed\n" ); \ + ExitProcess(hr); \ + } \ +} + + +// Initialise static members +bool VideoFrameTransfer::mInitialized = false; +bool VideoFrameTransfer::mUseDvp = false; +unsigned VideoFrameTransfer::mWidth = 0; +unsigned VideoFrameTransfer::mHeight = 0; +GLuint VideoFrameTransfer::mCaptureTexture = 0; + +// NVIDIA specific static members +DVPBufferHandle VideoFrameTransfer::mDvpCaptureTextureHandle = 0; +DVPBufferHandle VideoFrameTransfer::mDvpPlaybackTextureHandle = 0; +uint32_t VideoFrameTransfer::mBufferAddrAlignment = 0; +uint32_t VideoFrameTransfer::mBufferGpuStrideAlignment = 0; +uint32_t VideoFrameTransfer::mSemaphoreAddrAlignment = 0; +uint32_t VideoFrameTransfer::mSemaphoreAllocSize = 0; +uint32_t VideoFrameTransfer::mSemaphorePayloadOffset = 0; +uint32_t VideoFrameTransfer::mSemaphorePayloadSize = 0; + + +bool VideoFrameTransfer::isNvidiaDvpAvailable() +{ + // Look for supported graphics boards + const GLubyte* renderer = glGetString(GL_RENDERER); + bool hasDvp = (strstr((char*)renderer, "Quadro") != NULL); + return hasDvp; +} + +bool VideoFrameTransfer::isAMDPinnedMemoryAvailable() +{ + // GL_AMD_pinned_memory presence indicates GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD buffer target is supported + const GLubyte* strExt = glGetString(GL_EXTENSIONS); + bool hasAMDPinned = (strstr((char*)strExt, "GL_AMD_pinned_memory") != NULL); + return hasAMDPinned; +} + +bool VideoFrameTransfer::checkFastMemoryTransferAvailable() +{ + return (isNvidiaDvpAvailable() || isAMDPinnedMemoryAvailable()); +} + +bool VideoFrameTransfer::initialize(unsigned width, unsigned height, GLuint captureTexture, GLuint playbackTexture) +{ + if (mInitialized) + return false; + + bool hasDvp = isNvidiaDvpAvailable(); + bool hasAMDPinned = isAMDPinnedMemoryAvailable(); + + if (!hasDvp && !hasAMDPinned) + return false; + + mUseDvp = hasDvp; + mWidth = width; + mHeight = height; + mCaptureTexture = captureTexture; + + if (! initializeMemoryLocking(mWidth * mHeight * 4)) // BGRA uses 4 bytes per pixel + return false; + + if (mUseDvp) + { + // DVP initialisation + DVP_CHECK(dvpInitGLContext(DVP_DEVICE_FLAGS_SHARE_APP_CONTEXT)); + DVP_CHECK(dvpGetRequiredConstantsGLCtx( &mBufferAddrAlignment, &mBufferGpuStrideAlignment, + &mSemaphoreAddrAlignment, &mSemaphoreAllocSize, + &mSemaphorePayloadOffset, &mSemaphorePayloadSize)); + + // Register textures with DVP + DVP_CHECK(dvpCreateGPUTextureGL(captureTexture, &mDvpCaptureTextureHandle)); + DVP_CHECK(dvpCreateGPUTextureGL(playbackTexture, &mDvpPlaybackTextureHandle)); + } + + mInitialized = true; + + return true; +} + +bool VideoFrameTransfer::initializeMemoryLocking(unsigned memSize) +{ + // Increase the process working set size to allow pinning of memory. + static SIZE_T dwMin = 0, dwMax = 0; + HANDLE hProcess = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_SET_QUOTA, FALSE, GetCurrentProcessId()); + if (!hProcess) + return false; + + // Retrieve the working set size of the process. + if (!dwMin && !GetProcessWorkingSetSize(hProcess, &dwMin, &dwMax)) + return false; + + // Allow for 80 frames to be locked + BOOL res = SetProcessWorkingSetSize(hProcess, memSize * 80 + dwMin, memSize * 80 + (dwMax-dwMin)); + if (!res) + return false; + + CloseHandle(hProcess); + return true; +} + +// SyncInfo sets up a semaphore which is shared between the GPU and CPU and used to +// synchronise access to DVP buffers. +struct SyncInfo +{ + SyncInfo(uint32_t semaphoreAllocSize, uint32_t semaphoreAddrAlignment); + ~SyncInfo(); + + volatile uint32_t* mSem; + volatile uint32_t mReleaseValue; + volatile uint32_t mAcquireValue; + DVPSyncObjectHandle mDvpSync; +}; + +SyncInfo::SyncInfo(uint32_t semaphoreAllocSize, uint32_t semaphoreAddrAlignment) +{ + mSem = (uint32_t*)_aligned_malloc(semaphoreAllocSize, semaphoreAddrAlignment); + + // Initialise + mSem[0] = 0; + mReleaseValue = 0; + mAcquireValue = 0; + + // Setup DVP sync object and import it + DVPSyncObjectDesc syncObjectDesc; + syncObjectDesc.externalClientWaitFunc = NULL; + syncObjectDesc.sem = (uint32_t*)mSem; + + DVP_CHECK(dvpImportSyncObject(&syncObjectDesc, &mDvpSync)); +} + +SyncInfo::~SyncInfo() +{ + DVP_CHECK(dvpFreeSyncObject(mDvpSync)); + _aligned_free((void*)mSem); +} + +VideoFrameTransfer::VideoFrameTransfer(unsigned long memSize, void* address, Direction direction) : + mBuffer(address), + mMemSize(memSize), + mDirection(direction), + mExtSync(NULL), + mGpuSync(NULL), + mDvpSysMemHandle(0), + mBufferHandle(0) +{ + if (mUseDvp) + { + // Pin the memory + if (! VirtualLock(mBuffer, mMemSize)) + throw std::runtime_error("Error pinning memory with VirtualLock"); + + // Create necessary sysmem and gpu sync objects + mExtSync = new SyncInfo(mSemaphoreAllocSize, mSemaphoreAddrAlignment); + mGpuSync = new SyncInfo(mSemaphoreAllocSize, mSemaphoreAddrAlignment); + + // Register system memory buffers with DVP + DVPSysmemBufferDesc sysMemBuffersDesc; + sysMemBuffersDesc.width = mWidth; + sysMemBuffersDesc.height = mHeight; + sysMemBuffersDesc.stride = mWidth * 4; + sysMemBuffersDesc.format = DVP_BGRA; + sysMemBuffersDesc.type = DVP_UNSIGNED_BYTE; + sysMemBuffersDesc.size = mMemSize; + sysMemBuffersDesc.bufAddr = mBuffer; + + if (mDirection == CPUtoGPU) + { + // A UYVY 4:2:2 frame is transferred to the GPU, rather than RGB 4:4:4, so width is halved + sysMemBuffersDesc.width /= 2; + sysMemBuffersDesc.stride /= 2; + } + + DVP_CHECK(dvpCreateBuffer(&sysMemBuffersDesc, &mDvpSysMemHandle)); + DVP_CHECK(dvpBindToGLCtx(mDvpSysMemHandle)); + } + else + { + // Create an OpenGL buffer handle to use for pinned memory + GLuint bufferHandle; + glGenBuffers(1, &bufferHandle); + + // Pin memory by binding buffer to special AMD target. + glBindBuffer(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, bufferHandle); + + // glBufferData() sets up the address so any OpenGL operation on this buffer will use system memory directly + // (assumes address is aligned to 4k boundary). + glBufferData(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, mMemSize, address, GL_STREAM_DRAW); + GLenum result = glGetError(); + if (result != GL_NO_ERROR) + { + throw std::runtime_error("Error pinning memory with glBufferData(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, ...)"); + } + glBindBuffer(GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD, 0); // Unbind buffer to target + + mBufferHandle = bufferHandle; + } +} + +VideoFrameTransfer::~VideoFrameTransfer() +{ + if (mUseDvp) + { + DVP_CHECK(dvpUnbindFromGLCtx(mDvpSysMemHandle)); + DVP_CHECK(dvpDestroyBuffer(mDvpSysMemHandle)); + + delete mExtSync; + delete mGpuSync; + + VirtualUnlock(mBuffer, mMemSize); + } + else + { + // The buffer is un-pinned by the GPU when the buffer is deleted + glDeleteBuffers(1, &mBufferHandle); + } +} + +bool VideoFrameTransfer::performFrameTransfer() +{ + if (mUseDvp) + { + // NVIDIA DVP transfers + DVPStatus status; + + mGpuSync->mReleaseValue++; + + dvpBegin(); + if (mDirection == CPUtoGPU) + { + // Copy from system memory to GPU texture + dvpMapBufferWaitDVP(mDvpCaptureTextureHandle); + status = dvpMemcpyLined( mDvpSysMemHandle, mExtSync->mDvpSync, mExtSync->mAcquireValue, DVP_TIMEOUT_IGNORED, + mDvpCaptureTextureHandle, mGpuSync->mDvpSync, mGpuSync->mReleaseValue, 0, mHeight); + dvpMapBufferEndDVP(mDvpCaptureTextureHandle); + } + else + { + // Copy from GPU texture to system memory + dvpMapBufferWaitDVP(mDvpPlaybackTextureHandle); + status = dvpMemcpyLined( mDvpPlaybackTextureHandle, mExtSync->mDvpSync, mExtSync->mReleaseValue, DVP_TIMEOUT_IGNORED, + mDvpSysMemHandle, mGpuSync->mDvpSync, mGpuSync->mReleaseValue, 0, mHeight); + dvpMapBufferEndDVP(mDvpPlaybackTextureHandle); + } + dvpEnd(); + + return (status == DVP_STATUS_OK); + } + else + { + // AMD pinned memory transfers + if (mDirection == CPUtoGPU) + { + glEnable(GL_TEXTURE_2D); + + // Use a pinned buffer for the GL_PIXEL_UNPACK_BUFFER target + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, mBufferHandle); + glBindTexture(GL_TEXTURE_2D, mCaptureTexture); + + // NULL for last arg indicates use current GL_PIXEL_UNPACK_BUFFER target as texture data + glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, mWidth/2, mHeight, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL); + + // Ensure pinned texture has been transferred to GPU before we draw with it + GLsync fence = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); + glClientWaitSync(fence, GL_SYNC_FLUSH_COMMANDS_BIT, 40 * 1000 * 1000); // timeout in nanosec + glDeleteSync(fence); + + glBindTexture(GL_TEXTURE_2D, 0); + glBindBuffer(GL_PIXEL_UNPACK_BUFFER, 0); + glDisable(GL_TEXTURE_2D); + } + else + { + // Use a PIXEL PACK BUFFER to read back pixels + glBindBuffer(GL_PIXEL_PACK_BUFFER, mBufferHandle); + glReadPixels(0, 0, mWidth, mHeight, GL_BGRA, GL_UNSIGNED_INT_8_8_8_8_REV, NULL); + + // Ensure GPU has processed all commands in the pipeline up to this point, before memory is read by the CPU + GLsync fence = glFenceSync(GL_SYNC_GPU_COMMANDS_COMPLETE, 0); + glClientWaitSync(fence, GL_SYNC_FLUSH_COMMANDS_BIT, 40 * 1000 * 1000); // timeout in nanosec + glDeleteSync(fence); + } + + return (glGetError() == GL_NO_ERROR); + } +} + +void VideoFrameTransfer::waitForTransferComplete() +{ + if (!mUseDvp) + return; + + // Block until buffer has completely transferred between GPU and CPU buffer + dvpBegin(); + dvpSyncObjClientWaitComplete(mGpuSync->mDvpSync, DVP_TIMEOUT_IGNORED); + dvpEnd(); +} + +void VideoFrameTransfer::beginTextureInUse(Direction direction) +{ + if (!mUseDvp) + return; + + if (direction == CPUtoGPU) + dvpMapBufferWaitAPI(mDvpCaptureTextureHandle); + else + dvpMapBufferWaitAPI(mDvpPlaybackTextureHandle); +} + +void VideoFrameTransfer::endTextureInUse(Direction direction) +{ + if (!mUseDvp) + return; + + if (direction == CPUtoGPU) + dvpMapBufferEndAPI(mDvpCaptureTextureHandle); + else + dvpMapBufferEndAPI(mDvpPlaybackTextureHandle); +} diff --git a/apps/LoopThroughWithOpenGLCompositing/VideoFrameTransfer.h b/apps/LoopThroughWithOpenGLCompositing/VideoFrameTransfer.h new file mode 100644 index 0000000..41f6247 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/VideoFrameTransfer.h @@ -0,0 +1,109 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ +#ifndef __VIDEO_FRAME_TRANSFER_H__ +#define __VIDEO_FRAME_TRANSFER_H__ + +#include "GLExtensions.h" +#include +#include + +// NVIDIA GPU Direct For Video with OpenGL requires the following two headers. +// See the NVIDIA website to check if your graphics card is supported. +#include +#include + +struct SyncInfo; + + +// Class for performing efficient frame memory transfers between the CPU and GPU, +// using NVIDIA and AMD extensions. +class VideoFrameTransfer +{ +public: + enum Direction + { + CPUtoGPU, + GPUtoCPU + }; + + VideoFrameTransfer(unsigned long memSize, void* address, Direction direction); + ~VideoFrameTransfer(); + + static bool checkFastMemoryTransferAvailable(); + static bool initialize(unsigned width, unsigned height, GLuint captureTexture, GLuint playbackTexture); + static void beginTextureInUse(Direction direction); + static void endTextureInUse(Direction direction); + + bool performFrameTransfer(); + void waitForTransferComplete(); + +private: + static bool isNvidiaDvpAvailable(); + static bool isAMDPinnedMemoryAvailable(); + static bool initializeMemoryLocking(unsigned memSize); + + void* mBuffer; + unsigned long mMemSize; + Direction mDirection; + static bool mInitialized; + static bool mUseDvp; + static unsigned mWidth; + static unsigned mHeight; + static GLuint mCaptureTexture; + + // NVIDIA GPU Direct for Video support + SyncInfo* mExtSync; + SyncInfo* mGpuSync; + DVPBufferHandle mDvpSysMemHandle; + + static DVPBufferHandle mDvpCaptureTextureHandle; + static DVPBufferHandle mDvpPlaybackTextureHandle; + static uint32_t mBufferAddrAlignment; + static uint32_t mBufferGpuStrideAlignment; + static uint32_t mSemaphoreAddrAlignment; + static uint32_t mSemaphoreAllocSize; + static uint32_t mSemaphorePayloadOffset; + static uint32_t mSemaphorePayloadSize; + + // GPU buffer bound to the target GL_EXTERNAL_VIRTUAL_MEMORY_BUFFER_AMD for pinned memory + GLuint mBufferHandle; +}; + +#endif \ No newline at end of file diff --git a/apps/LoopThroughWithOpenGLCompositing/resource.h b/apps/LoopThroughWithOpenGLCompositing/resource.h new file mode 100644 index 0000000..6d8b8e9 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/resource.h @@ -0,0 +1,24 @@ +//{{NO_DEPENDENCIES}} +// Microsoft Visual C++ generated include file. +// Used by LoopThroughWithOpenGLCompositing.rc +// +#define IDC_MYICON 2 +#define IDD_OPENGLOUTPUT_DIALOG 102 +#define IDS_APP_TITLE 103 +#define IDI_OPENGLOUTPUT 107 +#define IDI_SMALL 108 +#define IDC_OPENGLOUTPUT 109 +#define IDR_MAINFRAME 128 +#define IDC_STATIC -1 + +// Next default values for new objects +// +#ifdef APSTUDIO_INVOKED +#ifndef APSTUDIO_READONLY_SYMBOLS +#define _APS_NO_MFC 1 +#define _APS_NEXT_RESOURCE_VALUE 129 +#define _APS_NEXT_COMMAND_VALUE 32771 +#define _APS_NEXT_CONTROL_VALUE 1000 +#define _APS_NEXT_SYMED_VALUE 110 +#endif +#endif diff --git a/apps/LoopThroughWithOpenGLCompositing/small.ico b/apps/LoopThroughWithOpenGLCompositing/small.ico new file mode 100644 index 0000000..d551aa3 Binary files /dev/null and b/apps/LoopThroughWithOpenGLCompositing/small.ico differ diff --git a/apps/LoopThroughWithOpenGLCompositing/stdafx.cpp b/apps/LoopThroughWithOpenGLCompositing/stdafx.cpp new file mode 100644 index 0000000..463afa8 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/stdafx.cpp @@ -0,0 +1,46 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ +// +// stdafx.cpp : source file that includes just the standard includes +// LoopThroughWithOpenGLCompositing.pch will be the pre-compiled header +// stdafx.obj will contain the pre-compiled type information + +#include "stdafx.h" + diff --git a/apps/LoopThroughWithOpenGLCompositing/stdafx.h b/apps/LoopThroughWithOpenGLCompositing/stdafx.h new file mode 100644 index 0000000..fd91902 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/stdafx.h @@ -0,0 +1,59 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ +// +// stdafx.h : include file for standard system include files, +// or project specific include files that are used frequently, but +// are changed infrequently +// + +#pragma once + +#include "targetver.h" + +#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers +// Windows Header Files: +#include + +// C RunTime Header Files +#include +#include +#include +#include + diff --git a/apps/LoopThroughWithOpenGLCompositing/targetver.h b/apps/LoopThroughWithOpenGLCompositing/targetver.h new file mode 100644 index 0000000..ae55070 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/targetver.h @@ -0,0 +1,64 @@ +/* -LICENSE-START- + ** Copyright (c) 2012 Blackmagic Design + ** + ** Permission is hereby granted, free of charge, to any person or organization + ** obtaining a copy of the software and accompanying documentation (the + ** "Software") to use, reproduce, display, distribute, sub-license, 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, in + ** accordance with: + ** + ** (1) if the Software is obtained from Blackmagic Design, the End User License + ** Agreement for the Software Development Kit ("EULA") available at + ** https://www.blackmagicdesign.com/EULA/DeckLinkSDK; or + ** + ** (2) if the Software is obtained from any third party, such licensing terms + ** as notified by that third party, + ** + ** and all subject to the following: + ** + ** (3) 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. + ** + ** (4) 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. + ** + ** A copy of the Software is available free of charge at + ** https://www.blackmagicdesign.com/desktopvideo_sdk under the EULA. + ** + ** -LICENSE-END- + */ +// +#pragma once + +// The following macros define the minimum required platform. The minimum required platform +// is the earliest version of Windows, Internet Explorer etc. that has the necessary features to run +// your application. The macros work by enabling all features available on platform versions up to and +// including the version specified. + +// Modify the following defines if you have to target a platform prior to the ones specified below. +// Refer to MSDN for the latest info on corresponding values for different platforms. +#ifndef WINVER // Specifies that the minimum required platform is Windows Vista. +#define WINVER 0x0600 // Change this to the appropriate value to target other versions of Windows. +#endif + +#ifndef _WIN32_WINNT // Specifies that the minimum required platform is Windows Vista. +#define _WIN32_WINNT 0x0600 // Change this to the appropriate value to target other versions of Windows. +#endif + +#ifndef _WIN32_WINDOWS // Specifies that the minimum required platform is Windows 98. +#define _WIN32_WINDOWS 0x0410 // Change this to the appropriate value to target Windows Me or later. +#endif + +#ifndef _WIN32_IE // Specifies that the minimum required platform is Internet Explorer 7.0. +#define _WIN32_IE 0x0700 // Change this to the appropriate value to target other versions of IE. +#endif diff --git a/apps/LoopThroughWithOpenGLCompositing/video_effect.frag b/apps/LoopThroughWithOpenGLCompositing/video_effect.frag new file mode 100644 index 0000000..36d1421 --- /dev/null +++ b/apps/LoopThroughWithOpenGLCompositing/video_effect.frag @@ -0,0 +1,61 @@ +#version 130 + +uniform sampler2D UYVYtex; + +vec4 rec709YCbCr2rgba(float Y, float Cb, float Cr, float a) +{ + float r, g, b; + Y = (Y * 256.0 - 16.0) / 219.0; + Cb = (Cb * 256.0 - 16.0) / 224.0 - 0.5; + Cr = (Cr * 256.0 - 16.0) / 224.0 - 0.5; + r = Y + 1.5748 * Cr; + g = Y - 0.1873 * Cb - 0.4681 * Cr; + b = Y + 1.8556 * Cb; + return vec4(r, g, b, a); +} + +vec4 bilinear(vec4 W, vec4 X, vec4 Y, vec4 Z, vec2 weight) +{ + vec4 m0 = mix(W, Z, weight.x); + vec4 m1 = mix(X, Y, weight.x); + return mix(m0, m1, weight.y); +} + +void textureGatherYUV(sampler2D UYVYsampler, vec2 tc, out vec4 W, out vec4 X, out vec4 Y, out vec4 Z) +{ + ivec2 tx = ivec2(tc * textureSize(UYVYsampler, 0)); + ivec2 tmin = ivec2(0, 0); + ivec2 tmax = textureSize(UYVYsampler, 0) - ivec2(1, 1); + W = texelFetch(UYVYsampler, tx, 0); + X = texelFetch(UYVYsampler, clamp(tx + ivec2(0, 1), tmin, tmax), 0); + Y = texelFetch(UYVYsampler, clamp(tx + ivec2(1, 1), tmin, tmax), 0); + Z = texelFetch(UYVYsampler, clamp(tx + ivec2(1, 0), tmin, tmax), 0); +} + +void main(void) +{ + vec2 tc = gl_TexCoord[0].st; + float alpha = 0.7; + + vec4 macro, macro_u, macro_r, macro_ur; + vec4 pixel, pixel_r, pixel_u, pixel_ur; + textureGatherYUV(UYVYtex, tc, macro, macro_u, macro_ur, macro_r); + + vec2 off = fract(tc * textureSize(UYVYtex, 0)); + if (off.x > 0.5) + { + pixel = rec709YCbCr2rgba(macro.a, macro.b, macro.r, alpha); + pixel_r = rec709YCbCr2rgba(macro_r.g, macro_r.b, macro_r.r, alpha); + pixel_u = rec709YCbCr2rgba(macro_u.a, macro_u.b, macro_u.r, alpha); + pixel_ur = rec709YCbCr2rgba(macro_ur.g, macro_ur.b, macro_ur.r, alpha); + } + else + { + pixel = rec709YCbCr2rgba(macro.g, macro.b, macro.r, alpha); + pixel_r = rec709YCbCr2rgba(macro.a, macro.b, macro.r, alpha); + pixel_u = rec709YCbCr2rgba(macro_u.g, macro_u.b, macro_u.r, alpha); + pixel_ur = rec709YCbCr2rgba(macro_u.a, macro_u.b, macro_u.r, alpha); + } + + gl_FragColor = bilinear(pixel, pixel_u, pixel_ur, pixel_r, off); +}