diff options
Diffstat (limited to 'dxsdk/Include/DShowIDL/mmstream.idl')
-rw-r--r-- | dxsdk/Include/DShowIDL/mmstream.idl | 190 |
1 files changed, 190 insertions, 0 deletions
diff --git a/dxsdk/Include/DShowIDL/mmstream.idl b/dxsdk/Include/DShowIDL/mmstream.idl new file mode 100644 index 00000000..b94f1ed1 --- /dev/null +++ b/dxsdk/Include/DShowIDL/mmstream.idl @@ -0,0 +1,190 @@ +//------------------------------------------------------------------------------ +// File: MMStream.idl +// +// Desc: MultiMedia streaming interface IDL file. Used by MIDL tool +// to generate mmstream.h. +// +// Copyright (c) 1998-2002, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +import "unknwn.idl"; + +cpp_quote("#define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)") +cpp_quote("#define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x)") +cpp_quote("#define MS_S_PENDING MS_SUCCESS_CODE(1)") +cpp_quote("#define MS_S_NOUPDATE MS_SUCCESS_CODE(2)") +cpp_quote("#define MS_S_ENDOFSTREAM MS_SUCCESS_CODE(3)") + +cpp_quote("#define MS_E_SAMPLEALLOC MS_ERROR_CODE(1)") +cpp_quote("#define MS_E_PURPOSEID MS_ERROR_CODE(2)") +cpp_quote("#define MS_E_NOSTREAM MS_ERROR_CODE(3)") +cpp_quote("#define MS_E_NOSEEKING MS_ERROR_CODE(4)") +cpp_quote("#define MS_E_INCOMPATIBLE MS_ERROR_CODE(5)") +cpp_quote("#define MS_E_BUSY MS_ERROR_CODE(6)") +cpp_quote("#define MS_E_NOTINIT MS_ERROR_CODE(7)") +cpp_quote("#define MS_E_SOURCEALREADYDEFINED MS_ERROR_CODE(8)") +cpp_quote("#define MS_E_INVALIDSTREAMTYPE MS_ERROR_CODE(9)") +cpp_quote("#define MS_E_NOTRUNNING MS_ERROR_CODE(10)") + +cpp_quote("// {A35FF56A-9FDA-11d0-8FDF-00C04FD9189D}") +cpp_quote("DEFINE_GUID(MSPID_PrimaryVideo, ") +cpp_quote("0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);") + +cpp_quote("// {A35FF56B-9FDA-11d0-8FDF-00C04FD9189D}") +cpp_quote("DEFINE_GUID(MSPID_PrimaryAudio,") +cpp_quote("0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);") + +cpp_quote("#if(_WIN32_WINNT < 0x0400)") +typedef void (__stdcall * PAPCFUNC)(DWORD_PTR dwParam); +cpp_quote("#endif") + +typedef LONGLONG STREAM_TIME; + +typedef GUID MSPID; +typedef REFGUID REFMSPID; + +typedef enum { + STREAMTYPE_READ = 0, + STREAMTYPE_WRITE = 1, + STREAMTYPE_TRANSFORM= 2 +} STREAM_TYPE; + +typedef enum { + STREAMSTATE_STOP = 0, + STREAMSTATE_RUN = 1 +} STREAM_STATE; + + +typedef enum { + COMPSTAT_NOUPDATEOK = 0x00000001, + COMPSTAT_WAIT = 0x00000002, + COMPSTAT_ABORT = 0x00000004 +} COMPLETION_STATUS_FLAGS; + +// Flags for GetInformation +enum { + MMSSF_HASCLOCK = 0x00000001, + MMSSF_SUPPORTSEEK = 0x00000002, + MMSSF_ASYNCHRONOUS = 0x00000004 +}; + +// Flags for StreamSample::Update +enum { + SSUPDATE_ASYNC = 0x00000001, + SSUPDATE_CONTINUOUS = 0x00000002 +}; + +interface IMultiMediaStream; +interface IMediaStream; +interface IStreamSample; + +// IMultiMediaStream interface +[ +object, +local, +uuid(B502D1BC-9A57-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IMultiMediaStream : IUnknown { + + HRESULT GetInformation( + [out] DWORD *pdwFlags, + [out] STREAM_TYPE *pStreamType); + + HRESULT GetMediaStream( + [in] REFMSPID idPurpose, + [out] IMediaStream **ppMediaStream); + + HRESULT EnumMediaStreams( + [in] long Index, + [out] IMediaStream **ppMediaStream); + + HRESULT GetState( + [out] STREAM_STATE *pCurrentState); + + HRESULT SetState( + [in] STREAM_STATE NewState); + + HRESULT GetTime( + [out] STREAM_TIME *pCurrentTime); + + HRESULT GetDuration( + [out] STREAM_TIME *pDuration); + + HRESULT Seek( + [in] STREAM_TIME SeekTime); + + HRESULT GetEndOfStreamEventHandle( + [out] HANDLE *phEOS); +}; + + +// IMediaStream interface +[ +object, +uuid(B502D1BD-9A57-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IMediaStream : IUnknown { + + HRESULT GetMultiMediaStream( + [out] IMultiMediaStream **ppMultiMediaStream); + + HRESULT GetInformation( + [out] MSPID *pPurposeId, + [out] STREAM_TYPE *pType); + + HRESULT SetSameFormat( + [in] IMediaStream *pStreamThatHasDesiredFormat, + [in] DWORD dwFlags); + + HRESULT AllocateSample( + [in] DWORD dwFlags, + [out] IStreamSample **ppSample); + + + HRESULT CreateSharedSample( + [in] IStreamSample *pExistingSample, + [in] DWORD dwFlags, + [out] IStreamSample **ppNewSample); + + HRESULT SendEndOfStream(DWORD dwFlags); +}; + + +// IStreamSample interface +[ +object, +local, +uuid(B502D1BE-9A57-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IStreamSample : IUnknown { + + HRESULT GetMediaStream( + [in] IMediaStream **ppMediaStream); + + HRESULT GetSampleTimes( + [out] STREAM_TIME * pStartTime, + [out] STREAM_TIME * pEndTime, + [out] STREAM_TIME * pCurrentTime); + + HRESULT SetSampleTimes( + [in] const STREAM_TIME *pStartTime, + [in] const STREAM_TIME *pEndTime); + + HRESULT Update( + [in] DWORD dwFlags, + [in] HANDLE hEvent, + [in] PAPCFUNC pfnAPC, + [in] DWORD_PTR dwAPCData); + + HRESULT CompletionStatus( + [in] DWORD dwFlags, + [in] DWORD dwMilliseconds); +}; + + + + |