summaryrefslogtreecommitdiffstats
path: root/loader/dshow/interfaces.h
diff options
context:
space:
mode:
Diffstat (limited to 'loader/dshow/interfaces.h')
-rw-r--r--loader/dshow/interfaces.h31
1 files changed, 31 insertions, 0 deletions
diff --git a/loader/dshow/interfaces.h b/loader/dshow/interfaces.h
index ab5069d854..23b02a5090 100644
--- a/loader/dshow/interfaces.h
+++ b/loader/dshow/interfaces.h
@@ -84,13 +84,17 @@ typedef struct IEnumPins_vt
{
INHERIT_IUNKNOWN();
+ // retrieves a specified number of pins in the enumeration sequence..
HRESULT STDCALL ( *Next )(IEnumPins* This,
/* [in] */ unsigned long cPins,
/* [size_is][out] */ IPin** ppPins,
/* [out] */ unsigned long* pcFetched);
+ // skips over a specified number of pins.
HRESULT STDCALL ( *Skip )(IEnumPins* This,
/* [in] */ unsigned long cPins);
+ // resets the enumeration sequence to the beginning.
HRESULT STDCALL ( *Reset )(IEnumPins* This);
+ // makes a copy of the enumerator with the same enumeration state.
HRESULT STDCALL ( *Clone )(IEnumPins* This,
/* [out] */ IEnumPins** ppEnum);
} IEnumPins_vt;
@@ -111,25 +115,46 @@ typedef struct IMediaSample_vt
HRESULT STDCALL ( *SetTime )(IMediaSample* This,
/* [in] */ REFERENCE_TIME* pTimeStart,
/* [in] */ REFERENCE_TIME* pTimeEnd);
+
+ // sync-point property. If true, then the beginning of this
+ // sample is a sync-point. (note that if AM_MEDIA_TYPE.bTemporalCompression
+ // is false then all samples are sync points). A filter can start
+ // a stream at any sync point. S_FALSE if not sync-point, S_OK if true.
HRESULT STDCALL ( *IsSyncPoint )(IMediaSample* This);
HRESULT STDCALL ( *SetSyncPoint )(IMediaSample* This,
long bIsSyncPoint);
+
+ // preroll property. If true, this sample is for preroll only and
+ // shouldn't be displayed.
HRESULT STDCALL ( *IsPreroll )(IMediaSample* This);
HRESULT STDCALL ( *SetPreroll )(IMediaSample* This,
long bIsPreroll);
+
LONG STDCALL ( *GetActualDataLength )(IMediaSample* This);
HRESULT STDCALL ( *SetActualDataLength )(IMediaSample* This,
long __MIDL_0010);
+
+ // these allow for limited format changes in band - if no format change
+ // has been made when you receive a sample GetMediaType will return S_FALSE
HRESULT STDCALL ( *GetMediaType )(IMediaSample* This,
AM_MEDIA_TYPE** ppMediaType);
HRESULT STDCALL ( *SetMediaType )(IMediaSample* This,
AM_MEDIA_TYPE* pMediaType);
+
+ // returns S_OK if there is a discontinuity in the data (this frame is
+ // not a continuation of the previous stream of data
+ // - there has been a seek or some dropped samples).
HRESULT STDCALL ( *IsDiscontinuity )(IMediaSample* This);
HRESULT STDCALL ( *SetDiscontinuity )(IMediaSample* This,
long bDiscontinuity);
+
+ // get the media times for this sample
HRESULT STDCALL ( *GetMediaTime )(IMediaSample* This,
/* [out] */ long long* pTimeStart,
/* [out] */ long long* pTimeEnd);
+ // Set the media times for this sample
+ // pTimeStart==pTimeEnd==NULL will invalidate the media time stamps in
+ // this sample
HRESULT STDCALL ( *SetMediaTime )(IMediaSample* This,
/* [in] */ long long* pTimeStart,
/* [in] */ long long* pTimeEnd);
@@ -180,18 +205,24 @@ typedef struct IMemAllocator_vt
{
INHERIT_IUNKNOWN();
+ // specifies the number of buffers to allocate and the size of each buffer.
HRESULT STDCALL ( *SetProperties )(IMemAllocator* This,
/* [in] */ ALLOCATOR_PROPERTIES *pRequest,
/* [out] */ ALLOCATOR_PROPERTIES *pActual);
+ // retrieves the number of buffers that the allocator will create, and the buffer properties.
HRESULT STDCALL ( *GetProperties )(IMemAllocator* This,
/* [out] */ ALLOCATOR_PROPERTIES *pProps);
+ // allocates the buffer memory.
HRESULT STDCALL ( *Commit )(IMemAllocator* This);
+ // releases the memory for the buffers.
HRESULT STDCALL ( *Decommit )(IMemAllocator* This);
+ // retrieves a media sample that contains an empty buffer.
HRESULT STDCALL ( *GetBuffer )(IMemAllocator* This,
/* [out] */ IMediaSample** ppBuffer,
/* [in] */ REFERENCE_TIME* pStartTime,
/* [in] */ REFERENCE_TIME* pEndTime,
/* [in] */ unsigned long dwFlags);
+ // releases a media sample.
HRESULT STDCALL ( *ReleaseBuffer )(IMemAllocator* This,
/* [in] */ IMediaSample* pBuffer);
} IMemAllocator_vt;