| /** | |
| * This file has no copyright assigned and is placed in the Public Domain. | |
| * This file is part of the w64 mingw-runtime package. | |
| * No warranty is given; refer to the file DISCLAIMER.PD within this package. | |
| */ | |
| #ifndef _INC_MFREADWRITE | |
| #define _INC_MFREADWRITE | |
| #if (_WIN32_WINNT >= 0x0601) | |
| typedef enum MF_SOURCE_READER_FLAG { | |
| MF_SOURCE_READERF_ERROR = 0x00000001, | |
| MF_SOURCE_READERF_ENDOFSTREAM = 0x00000002, | |
| MF_SOURCE_READERF_NEWSTREAM = 0x00000004, | |
| MF_SOURCE_READERF_NATIVEMEDIATYPECHANGED = 0x00000010, | |
| MF_SOURCE_READERF_CURRENTMEDIATYPECHANGED = 0x00000020, | |
| MF_SOURCE_READERF_STREAMTICK = 0x00000100 | |
| } MF_SOURCE_READER_FLAG; | |
| typedef struct _MF_SINK_WRITER_STATISTICS { | |
| DWORD cb; | |
| LONGLONG llLastTimestampReceived; | |
| LONGLONG llLastTimestampEncoded; | |
| LONGLONG llLastTimestampProcessed; | |
| LONGLONG llLastStreamTickReceived; | |
| LONGLONG llLastSinkSampleRequest; | |
| QWORD qwNumSamplesReceived; | |
| QWORD qwNumSamplesEncoded; | |
| QWORD qwNumSamplesProcessed; | |
| QWORD qwNumStreamTicksReceived; | |
| DWORD dwByteCountQueued; | |
| QWORD qwByteCountProcessed; | |
| DWORD dwNumOutstandingSinkSampleRequests; | |
| DWORD dwAverageSampleRateReceived; | |
| DWORD dwAverageSampleRateEncoded; | |
| DWORD dwAverageSampleRateProcessed; | |
| } MF_SINK_WRITER_STATISTICS; | |
| #undef INTERFACE | |
| #define INTERFACE IMFSinkWriter | |
| #ifdef __GNUC__ | |
| #warning COM interfaces layout in this header has not been verified. | |
| #warning COM interfaces with incorrect layout may not work at all. | |
| __MINGW_BROKEN_INTERFACE(INTERFACE) | |
| #endif | |
| DECLARE_INTERFACE_(IMFSinkWriter,IUnknown) | |
| { | |
| BEGIN_INTERFACE | |
| /* IUnknown methods */ | |
| STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; | |
| STDMETHOD_(ULONG, AddRef)(THIS) PURE; | |
| STDMETHOD_(ULONG, Release)(THIS) PURE; | |
| /* IMFSinkWriter methods */ | |
| STDMETHOD_(HRESULT,AddStream)(THIS_ IMFMediaType *pTargetMediaType,DWORD *pdwStreamIndex) PURE; | |
| STDMETHOD_(HRESULT,BeginWriting)(THIS) PURE; | |
| STDMETHOD_(HRESULT,Finalize)(THIS) PURE; | |
| STDMETHOD_(HRESULT,Flush)(THIS_ DWORD dwStreamIndex) PURE; | |
| STDMETHOD_(HRESULT,GetServiceForStream)(THIS_ DWORD dwStreamIndex,REFGUID guidService,REFIID riid,LPVOID *ppvObject) PURE; | |
| STDMETHOD_(HRESULT,GetStatistics)(THIS_ DWORD dwStreamIndex,MF_SINK_WRITER_STATISTICS *pStats) PURE; | |
| STDMETHOD_(HRESULT,NotifyEndOfSegment)(THIS_ DWORD dwStreamIndex) PURE; | |
| STDMETHOD_(HRESULT,PlaceMarker)(THIS_ DWORD dwStreamIndex,LPVOID pvContext) PURE; | |
| STDMETHOD_(HRESULT,SendStreamTick)(THIS_ DWORD dwStreamIndex,LONGLONG llTimestamp) PURE; | |
| STDMETHOD_(HRESULT,SetInputMediaType)(THIS_ DWORD dwStreamIndex,IMFMediaType *pInputMediaType,IMFAttributes *pEncodingParameters) PURE; | |
| STDMETHOD_(HRESULT,WriteSample)(THIS_ DWORD dwStreamIndex,IMFSample *pSample) PURE; | |
| END_INTERFACE | |
| }; | |
| #ifdef COBJMACROS | |
| #define IMFSinkWriter_QueryInterface(This,riid,ppvObject) (This)->pVtbl->QueryInterface(This,riid,ppvObject) | |
| #define IMFSinkWriter_AddRef(This) (This)->pVtbl->AddRef(This) | |
| #define IMFSinkWriter_Release(This) (This)->pVtbl->Release(This) | |
| #define IMFSinkWriter_AddStream(This,pTargetMediaType,pdwStreamIndex) (This)->lpVtbl->AddStream(This,pTargetMediaType,pdwStreamIndex) | |
| #define IMFSinkWriter_BeginWriting() (This)->lpVtbl->BeginWriting(This) | |
| #define IMFSinkWriter_Finalize() (This)->lpVtbl->Finalize(This) | |
| #define IMFSinkWriter_Flush(This,dwStreamIndex) (This)->lpVtbl->Flush(This,dwStreamIndex) | |
| #define IMFSinkWriter_GetServiceForStream(This,dwStreamIndex,guidService,riid,ppvObject) (This)->lpVtbl->GetServiceForStream(This,dwStreamIndex,guidService,riid,ppvObject) | |
| #define IMFSinkWriter_GetStatistics(This,dwStreamIndex,pStats) (This)->lpVtbl->GetStatistics(This,dwStreamIndex,pStats) | |
| #define IMFSinkWriter_NotifyEndOfSegment(This,dwStreamIndex) (This)->lpVtbl->NotifyEndOfSegment(This,dwStreamIndex) | |
| #define IMFSinkWriter_PlaceMarker(This,dwStreamIndex,pvContext) (This)->lpVtbl->PlaceMarker(This,dwStreamIndex,pvContext) | |
| #define IMFSinkWriter_SendStreamTick(This,dwStreamIndex,llTimestamp) (This)->lpVtbl->SendStreamTick(This,dwStreamIndex,llTimestamp) | |
| #define IMFSinkWriter_SetInputMediaType(This,dwStreamIndex,pInputMediaType,pEncodingParameters) (This)->lpVtbl->SetInputMediaType(This,dwStreamIndex,pInputMediaType,pEncodingParameters) | |
| #define IMFSinkWriter_WriteSample(This,dwStreamIndex,pSample) (This)->lpVtbl->WriteSample(This,dwStreamIndex,pSample) | |
| #endif /*COBJMACROS*/ | |
| #undef INTERFACE | |
| #define INTERFACE IMFSourceReader | |
| #ifdef __GNUC__ | |
| #warning COM interfaces layout in this header has not been verified. | |
| #warning COM interfaces with incorrect layout may not work at all. | |
| __MINGW_BROKEN_INTERFACE(INTERFACE) | |
| #endif | |
| DECLARE_INTERFACE_(IMFSourceReader,IUnknown) | |
| { | |
| BEGIN_INTERFACE | |
| /* IUnknown methods */ | |
| STDMETHOD(QueryInterface)(THIS_ REFIID riid, void **ppvObject) PURE; | |
| STDMETHOD_(ULONG, AddRef)(THIS) PURE; | |
| STDMETHOD_(ULONG, Release)(THIS) PURE; | |
| /* IMFSourceReader methods */ | |
| STDMETHOD_(HRESULT,Flush)(THIS_ DWORD dwStreamIndex) PURE; | |
| STDMETHOD_(HRESULT,GetCurrentMediaType)(THIS_ DWORD dwStreamIndex,IMFMediaType **ppMediaType) PURE; | |
| STDMETHOD_(HRESULT,GetNativeMediaType)(THIS_ DWORD dwStreamIndex,DWORD dwMediaTypeIndex,IMFMediaType **ppMediaType) PURE; | |
| STDMETHOD_(HRESULT,GetPresentationAttribute)(THIS_ DWORD dwStreamIndex,REFGUID guidAttribute,PROPVARIANT *pvarAttribute) PURE; | |
| STDMETHOD_(HRESULT,GetServiceForStream)(THIS_ DWORD dwStreamIndex,REFGUID guidService,REFIID riid,LPVOID *ppvObject) PURE; | |
| STDMETHOD_(HRESULT,GetStreamSelection)(THIS_ DWORD dwStreamIndex,BOOL *pfSelected) PURE; | |
| STDMETHOD_(HRESULT,ReadSample)(THIS_ DWORD dwStreamIndex,DWORD dwControlFlags,DWORD *pdwActualStreamIndex,DWORD *pdwStreamFlags,LONGLONG *pllTimestamp,IMFSample **ppSample) PURE; | |
| STDMETHOD_(HRESULT,SetCurrentMediaType)(THIS_ DWORD dwStreamIndex,DWORD *pdwReserved,IMFMediaType *pMediaType) PURE; | |
| STDMETHOD_(HRESULT,SetCurrentPosition)(THIS_ REFGUID guidTimeFormat,REFPROPVARIANT varPosition) PURE; | |
| STDMETHOD_(HRESULT,SetStreamSelection)(THIS_ DWORD dwStreamIndex,BOOL fSelected) PURE; | |
| END_INTERFACE | |
| }; | |
| #ifdef COBJMACROS | |
| #define IMFSourceReader_QueryInterface(This,riid,ppvObject) (This)->pVtbl->QueryInterface(This,riid,ppvObject) | |
| #define IMFSourceReader_AddRef(This) (This)->pVtbl->AddRef(This) | |
| #define IMFSourceReader_Release(This) (This)->pVtbl->Release(This) | |
| #define IMFSourceReader_Flush(This,dwStreamIndex) (This)->lpVtbl->Flush(This,dwStreamIndex) | |
| #define IMFSourceReader_GetCurrentMediaType(This,dwStreamIndex,ppMediaType) (This)->lpVtbl->GetCurrentMediaType(This,dwStreamIndex,ppMediaType) | |
| #define IMFSourceReader_GetNativeMediaType(This,dwStreamIndex,dwMediaTypeIndex,ppMediaType) (This)->lpVtbl->GetNativeMediaType(This,dwStreamIndex,dwMediaTypeIndex,ppMediaType) | |
| #define IMFSourceReader_GetPresentationAttribute(This,dwStreamIndex,guidAttribute,pvarAttribute) (This)->lpVtbl->GetPresentationAttribute(This,dwStreamIndex,guidAttribute,pvarAttribute) | |
| #define IMFSourceReader_GetServiceForStream(This,dwStreamIndex,guidService,riid,ppvObject) (This)->lpVtbl->GetServiceForStream(This,dwStreamIndex,guidService,riid,ppvObject) | |
| #define IMFSourceReader_GetStreamSelection(This,dwStreamIndex,pfSelected) (This)->lpVtbl->GetStreamSelection(This,dwStreamIndex,pfSelected) | |
| #define IMFSourceReader_ReadSample(This,dwStreamIndex,dwControlFlags,pdwActualStreamIndex,pdwStreamFlags,pllTimestamp,ppSample) (This)->lpVtbl->ReadSample(This,dwStreamIndex,dwControlFlags,pdwActualStreamIndex,pdwStreamFlags,pllTimestamp,ppSample) | |
| #define IMFSourceReader_SetCurrentMediaType(This,dwStreamIndex,pdwReserved,pMediaType) (This)->lpVtbl->SetCurrentMediaType(This,dwStreamIndex,pdwReserved,pMediaType) | |
| #define IMFSourceReader_SetCurrentPosition(This,guidTimeFormat,varPosition) (This)->lpVtbl->SetCurrentPosition(This,guidTimeFormat,varPosition) | |
| #define IMFSourceReader_SetStreamSelection(This,dwStreamIndex,fSelected) (This)->lpVtbl->SetStreamSelection(This,dwStreamIndex,fSelected) | |
| #endif /*COBJMACROS*/ | |
| #define MF_SOURCE_READER_FIRST_VIDEO_STREAM 0xFFFFFFFC | |
| #define MF_SOURCE_READER_FIRST_AUDIO_STREAM 0xFFFFFFFD | |
| #define MF_SOURCE_READER_ALL_STREAMS 0xFFFFFFFE | |
| #define MF_SOURCE_READER_MEDIASOURCE 0xFFFFFFFF | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| HRESULT WINAPI MFCreateSinkWriterFromMediaSink(IMFMediaSink *pMediaSink,IMFAttributes *pAttributes,IMFSinkWriter **ppSinkWriter); | |
| HRESULT WINAPI MFCreateSinkWriterFromURL(LPCWSTR pwszOutputURL,IMFByteStream *pByteStream,IMFAttributes *pAttributes,IMFSinkWriter **ppSinkWriter); | |
| HRESULT WINAPI MFCreateSourceReaderFromByteStream(IMFByteStream *pByteStream,IMFAttributes *pAttributes,IMFSourceReader **ppSourceReader); | |
| HRESULT WINAPI MFCreateSourceReaderFromMediaSource(IMFMediaSource *pMediaSource,IMFAttributes *pAttributes,IMFSourceReader **ppSourceReader); | |
| HRESULT WINAPI MFCreateSourceReaderFromURL(LPCWSTR pwszURL,IMFAttributes *pAttributes,IMFSourceReader **ppSourceReader); | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /*(_WIN32_WINNT >= 0x0601)*/ | |
| #endif /*_INC_MFREADWRITE*/ |