2017-04-19 19:54:15 +00:00
/* -LICENSE-START-
* * Copyright ( c ) 2009 Blackmagic Design
* *
* * Permission is hereby granted , free of charge , to any person or organization
* * obtaining a copy of the software and accompanying documentation covered by
* * this license ( the " Software " ) to use , reproduce , display , distribute ,
* * execute , and transmit the Software , and to prepare derivative works of the
* * Software , and to permit third - parties to whom the Software is furnished to
* * do so , all subject to the following :
2019-07-27 12:47:10 +00:00
* *
2017-04-19 19:54:15 +00:00
* * 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 .
2019-07-27 12:47:10 +00:00
* *
2017-04-19 19:54:15 +00:00
* * THE SOFTWARE IS PROVIDED " AS IS " , WITHOUT WARRANTY OF ANY KIND , EXPRESS OR
* * IMPLIED , INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY ,
* * FITNESS FOR A PARTICULAR PURPOSE , TITLE AND NON - INFRINGEMENT . IN NO EVENT
* * SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
* * FOR ANY DAMAGES OR OTHER LIABILITY , WHETHER IN CONTRACT , TORT OR OTHERWISE ,
* * ARISING FROM , OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
* * DEALINGS IN THE SOFTWARE .
* * - LICENSE - END -
*/
/* DeckLinkAPI_v7_3.h */
# ifndef __DeckLink_API_v7_3_h__
# define __DeckLink_API_v7_3_h__
# include "DeckLinkAPI.h"
# include "DeckLinkAPI_v7_6.h"
/* Interface ID Declarations */
# define IID_IDeckLinkInputCallback_v7_3 /* FD6F311D-4D00-444B-9ED4-1F25B5730AD0 */ (REFIID){0xFD,0x6F,0x31,0x1D,0x4D,0x00,0x44,0x4B,0x9E,0xD4,0x1F,0x25,0xB5,0x73,0x0A,0xD0}
# define IID_IDeckLinkOutput_v7_3 /* 271C65E3-C323-4344-A30F-D908BCB20AA3 */ (REFIID){0x27,0x1C,0x65,0xE3,0xC3,0x23,0x43,0x44,0xA3,0x0F,0xD9,0x08,0xBC,0xB2,0x0A,0xA3}
# define IID_IDeckLinkInput_v7_3 /* 4973F012-9925-458C-871C-18774CDBBECB */ (REFIID){0x49,0x73,0xF0,0x12,0x99,0x25,0x45,0x8C,0x87,0x1C,0x18,0x77,0x4C,0xDB,0xBE,0xCB}
# define IID_IDeckLinkVideoInputFrame_v7_3 /* CF317790-2894-11DE-8C30-0800200C9A66 */ (REFIID){0xCF,0x31,0x77,0x90,0x28,0x94,0x11,0xDE,0x8C,0x30,0x08,0x00,0x20,0x0C,0x9A,0x66}
/* End Interface ID Declarations */
# if defined(__cplusplus)
/* Forward Declarations */
class IDeckLinkVideoInputFrame_v7_3 ;
/* End Forward Declarations */
/* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */
class IDeckLinkOutput_v7_3 : public IUnknown
{
public :
2020-12-22 17:32:50 +00:00
virtual HRESULT DoesSupportVideoMode ( BMDDisplayMode displayMode , BMDPixelFormat pixelFormat , /* out */ BMDDisplayModeSupport_v10_11 * result ) = 0 ;
2017-04-19 19:54:15 +00:00
virtual HRESULT GetDisplayModeIterator ( /* out */ IDeckLinkDisplayModeIterator_v7_6 * * iterator ) = 0 ;
virtual HRESULT SetScreenPreviewCallback ( /* in */ IDeckLinkScreenPreviewCallback * previewCallback ) = 0 ;
/* Video Output */
virtual HRESULT EnableVideoOutput ( BMDDisplayMode displayMode , BMDVideoOutputFlags flags ) = 0 ;
virtual HRESULT DisableVideoOutput ( void ) = 0 ;
virtual HRESULT SetVideoOutputFrameMemoryAllocator ( /* in */ IDeckLinkMemoryAllocator * theAllocator ) = 0 ;
virtual HRESULT CreateVideoFrame ( int32_t width , int32_t height , int32_t rowBytes , BMDPixelFormat pixelFormat , BMDFrameFlags flags , /* out */ IDeckLinkMutableVideoFrame_v7_6 * * outFrame ) = 0 ;
virtual HRESULT CreateAncillaryData ( BMDPixelFormat pixelFormat , /* out */ IDeckLinkVideoFrameAncillary * * outBuffer ) = 0 ;
virtual HRESULT DisplayVideoFrameSync ( /* in */ IDeckLinkVideoFrame_v7_6 * theFrame ) = 0 ;
virtual HRESULT ScheduleVideoFrame ( /* in */ IDeckLinkVideoFrame_v7_6 * theFrame , BMDTimeValue displayTime , BMDTimeValue displayDuration , BMDTimeScale timeScale ) = 0 ;
virtual HRESULT SetScheduledFrameCompletionCallback ( /* in */ IDeckLinkVideoOutputCallback * theCallback ) = 0 ;
virtual HRESULT GetBufferedVideoFrameCount ( /* out */ uint32_t * bufferedFrameCount ) = 0 ;
/* Audio Output */
virtual HRESULT EnableAudioOutput ( BMDAudioSampleRate sampleRate , BMDAudioSampleType sampleType , uint32_t channelCount , BMDAudioOutputStreamType streamType ) = 0 ;
virtual HRESULT DisableAudioOutput ( void ) = 0 ;
virtual HRESULT WriteAudioSamplesSync ( /* in */ void * buffer , uint32_t sampleFrameCount , /* out */ uint32_t * sampleFramesWritten ) = 0 ;
virtual HRESULT BeginAudioPreroll ( void ) = 0 ;
virtual HRESULT EndAudioPreroll ( void ) = 0 ;
virtual HRESULT ScheduleAudioSamples ( /* in */ void * buffer , uint32_t sampleFrameCount , BMDTimeValue streamTime , BMDTimeScale timeScale , /* out */ uint32_t * sampleFramesWritten ) = 0 ;
virtual HRESULT GetBufferedAudioSampleFrameCount ( /* out */ uint32_t * bufferedSampleFrameCount ) = 0 ;
virtual HRESULT FlushBufferedAudioSamples ( void ) = 0 ;
virtual HRESULT SetAudioCallback ( /* in */ IDeckLinkAudioOutputCallback * theCallback ) = 0 ;
/* Output Control */
virtual HRESULT StartScheduledPlayback ( BMDTimeValue playbackStartTime , BMDTimeScale timeScale , double playbackSpeed ) = 0 ;
virtual HRESULT StopScheduledPlayback ( BMDTimeValue stopPlaybackAtTime , /* out */ BMDTimeValue * actualStopTime , BMDTimeScale timeScale ) = 0 ;
virtual HRESULT IsScheduledPlaybackRunning ( /* out */ bool * active ) = 0 ;
virtual HRESULT GetHardwareReferenceClock ( BMDTimeScale desiredTimeScale , /* out */ BMDTimeValue * elapsedTimeSinceSchedulerBegan ) = 0 ;
protected :
virtual ~ IDeckLinkOutput_v7_3 ( ) { } ; // call Release method to drop reference count
} ;
/* End Interface IDeckLinkOutput */
/* Interface IDeckLinkInputCallback - Frame arrival callback. */
class IDeckLinkInputCallback_v7_3 : public IUnknown
{
public :
virtual HRESULT VideoInputFormatChanged ( /* in */ BMDVideoInputFormatChangedEvents notificationEvents , /* in */ IDeckLinkDisplayMode_v7_6 * newDisplayMode , /* in */ BMDDetectedVideoInputFormatFlags detectedSignalFlags ) = 0 ;
virtual HRESULT VideoInputFrameArrived ( /* in */ IDeckLinkVideoInputFrame_v7_3 * videoFrame , /* in */ IDeckLinkAudioInputPacket * audioPacket ) = 0 ;
protected :
virtual ~ IDeckLinkInputCallback_v7_3 ( ) { } ; // call Release method to drop reference count
} ;
/* End Interface IDeckLinkInputCallback */
/* Interface IDeckLinkInput - Created by QueryInterface from IDeckLink. */
class IDeckLinkInput_v7_3 : public IUnknown
{
public :
2020-12-22 17:32:50 +00:00
virtual HRESULT DoesSupportVideoMode ( BMDDisplayMode displayMode , BMDPixelFormat pixelFormat , /* out */ BMDDisplayModeSupport_v10_11 * result ) = 0 ;
2017-04-19 19:54:15 +00:00
virtual HRESULT GetDisplayModeIterator ( /* out */ IDeckLinkDisplayModeIterator_v7_6 * * iterator ) = 0 ;
virtual HRESULT SetScreenPreviewCallback ( /* in */ IDeckLinkScreenPreviewCallback * previewCallback ) = 0 ;
/* Video Input */
virtual HRESULT EnableVideoInput ( BMDDisplayMode displayMode , BMDPixelFormat pixelFormat , BMDVideoInputFlags flags ) = 0 ;
virtual HRESULT DisableVideoInput ( void ) = 0 ;
virtual HRESULT GetAvailableVideoFrameCount ( /* out */ uint32_t * availableFrameCount ) = 0 ;
/* Audio Input */
virtual HRESULT EnableAudioInput ( BMDAudioSampleRate sampleRate , BMDAudioSampleType sampleType , uint32_t channelCount ) = 0 ;
virtual HRESULT DisableAudioInput ( void ) = 0 ;
virtual HRESULT GetAvailableAudioSampleFrameCount ( /* out */ uint32_t * availableSampleFrameCount ) = 0 ;
/* Input Control */
virtual HRESULT StartStreams ( void ) = 0 ;
virtual HRESULT StopStreams ( void ) = 0 ;
virtual HRESULT PauseStreams ( void ) = 0 ;
virtual HRESULT FlushStreams ( void ) = 0 ;
virtual HRESULT SetCallback ( /* in */ IDeckLinkInputCallback_v7_3 * theCallback ) = 0 ;
protected :
virtual ~ IDeckLinkInput_v7_3 ( ) { } ; // call Release method to drop reference count
} ;
/* End Interface IDeckLinkInput */
/* Interface IDeckLinkVideoInputFrame - Provided by the IDeckLinkVideoInput frame arrival callback. */
class IDeckLinkVideoInputFrame_v7_3 : public IDeckLinkVideoFrame_v7_6
{
public :
virtual HRESULT GetStreamTime ( /* out */ BMDTimeValue * frameTime , /* out */ BMDTimeValue * frameDuration , BMDTimeScale timeScale ) = 0 ;
protected :
virtual ~ IDeckLinkVideoInputFrame_v7_3 ( ) { } ; // call Release method to drop reference count
} ;
/* End Interface IDeckLinkVideoInputFrame */
# endif // defined(__cplusplus)
# endif // __DeckLink_API_v7_3_h__