| /* -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 covered by |
| ** this license (the "Software") to use, reproduce, display, distribute, |
| ** execute, and transmit the Software, and to prepare derivative works of the |
| ** Software, and to permit third-parties to whom the Software is furnished to |
| ** do so, all subject to the following: |
| ** |
| ** The copyright notices in the Software and this entire statement, including |
| ** the above license grant, this restriction and the following disclaimer, |
| ** must be included in all copies of the Software, in whole or in part, and |
| ** all derivative works of the Software, unless such copies or derivative |
| ** works are solely in the form of machine-executable object code generated by |
| ** a source language processor. |
| ** |
| ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
| ** IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
| ** FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT |
| ** SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE |
| ** FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, |
| ** ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
| ** DEALINGS IN THE SOFTWARE. |
| ** -LICENSE-END- |
| */ |
| |
| /* DeckLinkAPI_v9_9.idl */ |
| |
| |
| /* Interface IDeckLinkOutput - Created by QueryInterface from IDeckLink. */ |
| |
| [ |
| object, |
| uuid(A3EF0963-0862-44ED-92A9-EE89ABF431C7), |
| local, |
| helpstring("Created by QueryInterface from IDeckLink.") |
| ] interface IDeckLinkOutput_v9_9 : IUnknown |
| { |
| HRESULT DoesSupportVideoMode([in] BMDDisplayMode displayMode, [in] BMDPixelFormat pixelFormat, [in] BMDVideoOutputFlags flags, [out] BMDDisplayModeSupport *result, [out] IDeckLinkDisplayMode **resultDisplayMode); |
| HRESULT GetDisplayModeIterator([out] IDeckLinkDisplayModeIterator **iterator); |
| |
| HRESULT SetScreenPreviewCallback([in] IDeckLinkScreenPreviewCallback *previewCallback); |
| |
| /* Video Output */ |
| |
| HRESULT EnableVideoOutput([in] BMDDisplayMode displayMode, [in] BMDVideoOutputFlags flags); |
| HRESULT DisableVideoOutput(void); |
| |
| HRESULT SetVideoOutputFrameMemoryAllocator([in] IDeckLinkMemoryAllocator *theAllocator); |
| HRESULT CreateVideoFrame([in] long width, [in] long height, [in] long rowBytes, [in] BMDPixelFormat pixelFormat, [in] BMDFrameFlags flags, [out] IDeckLinkMutableVideoFrame **outFrame); |
| HRESULT CreateAncillaryData([in] BMDPixelFormat pixelFormat, [out] IDeckLinkVideoFrameAncillary **outBuffer); |
| |
| HRESULT DisplayVideoFrameSync([in] IDeckLinkVideoFrame *theFrame); |
| HRESULT ScheduleVideoFrame([in] IDeckLinkVideoFrame *theFrame, [in] BMDTimeValue displayTime, [in] BMDTimeValue displayDuration, [in] BMDTimeScale timeScale); |
| HRESULT SetScheduledFrameCompletionCallback([in] IDeckLinkVideoOutputCallback *theCallback); |
| HRESULT GetBufferedVideoFrameCount([out] unsigned long *bufferedFrameCount); |
| |
| /* Audio Output */ |
| |
| HRESULT EnableAudioOutput([in] BMDAudioSampleRate sampleRate, [in] BMDAudioSampleType sampleType, [in] unsigned long channelCount, [in] BMDAudioOutputStreamType streamType); |
| HRESULT DisableAudioOutput(void); |
| |
| HRESULT WriteAudioSamplesSync([in] void *buffer, [in] unsigned long sampleFrameCount, [out] unsigned long *sampleFramesWritten); |
| |
| HRESULT BeginAudioPreroll(void); |
| HRESULT EndAudioPreroll(void); |
| HRESULT ScheduleAudioSamples([in] void *buffer, [in] unsigned long sampleFrameCount, [in] BMDTimeValue streamTime, [in] BMDTimeScale timeScale, [out] unsigned long *sampleFramesWritten); |
| |
| HRESULT GetBufferedAudioSampleFrameCount([out] unsigned long *bufferedSampleFrameCount); |
| HRESULT FlushBufferedAudioSamples(void); |
| |
| HRESULT SetAudioCallback([in] IDeckLinkAudioOutputCallback *theCallback); |
| |
| /* Output Control */ |
| |
| HRESULT StartScheduledPlayback([in] BMDTimeValue playbackStartTime, [in] BMDTimeScale timeScale, [in] double playbackSpeed); |
| HRESULT StopScheduledPlayback([in] BMDTimeValue stopPlaybackAtTime, [out] BMDTimeValue *actualStopTime, [in] BMDTimeScale timeScale); |
| HRESULT IsScheduledPlaybackRunning([out] BOOL *active); |
| HRESULT GetScheduledStreamTime([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *streamTime, [out] double *playbackSpeed); |
| HRESULT GetReferenceStatus([out] BMDReferenceStatus *referenceStatus); |
| |
| /* Hardware Timing */ |
| |
| HRESULT GetHardwareReferenceClock([in] BMDTimeScale desiredTimeScale, [out] BMDTimeValue *hardwareTime, [out] BMDTimeValue *timeInFrame, [out] BMDTimeValue *ticksPerFrame); |
| }; |
| |