diff options
author | aap <aap@papnet.eu> | 2019-06-02 10:25:55 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-06-02 10:25:55 +0200 |
commit | 9c26e46e17b421288f7653f4c9cff81b4b6cdfb0 (patch) | |
tree | c1b34122ddd4be0461a5310c964e8218b9f5781e /dxsdk/Include/DShowIDL/amstream.idl | |
parent | implemented splashes; fixed zones (diff) | |
parent | Merge branch 'master' into master (diff) | |
download | re3-9c26e46e17b421288f7653f4c9cff81b4b6cdfb0.tar re3-9c26e46e17b421288f7653f4c9cff81b4b6cdfb0.tar.gz re3-9c26e46e17b421288f7653f4c9cff81b4b6cdfb0.tar.bz2 re3-9c26e46e17b421288f7653f4c9cff81b4b6cdfb0.tar.lz re3-9c26e46e17b421288f7653f4c9cff81b4b6cdfb0.tar.xz re3-9c26e46e17b421288f7653f4c9cff81b4b6cdfb0.tar.zst re3-9c26e46e17b421288f7653f4c9cff81b4b6cdfb0.zip |
Diffstat (limited to 'dxsdk/Include/DShowIDL/amstream.idl')
-rw-r--r-- | dxsdk/Include/DShowIDL/amstream.idl | 334 |
1 files changed, 334 insertions, 0 deletions
diff --git a/dxsdk/Include/DShowIDL/amstream.idl b/dxsdk/Include/DShowIDL/amstream.idl new file mode 100644 index 00000000..f52db99e --- /dev/null +++ b/dxsdk/Include/DShowIDL/amstream.idl @@ -0,0 +1,334 @@ +//------------------------------------------------------------------------------ +// File: AMStream.idl +// +// Desc: +// +// Copyright (c) 1998 - 2002, Microsoft Corporation. All rights reserved. +//------------------------------------------------------------------------------ + + +import "unknwn.idl"; +import "mmstream.idl"; +import "strmif.idl"; + +cpp_quote("#include <ddraw.h>") +cpp_quote("#include <mmsystem.h>") +cpp_quote("#include <mmstream.h>") +cpp_quote("#include <ddstream.h>") +cpp_quote("#include <austream.h>") + + + +interface IAMMultiMediaStream; +interface IAMMediaStream; +interface IMediaStreamFilter; +interface IDirectDraw; +interface IDirectDrawSurface; +interface IAMMediaTypeStream; +interface IAMMediaTypeSample; + +// Flags definitions for IAMMultiMediaStream::Initialize +enum { + AMMSF_NOGRAPHTHREAD = 0x00000001 +}; + +// Flags definitions for AddMediaStream and IAMMediaStream::Initialize +enum { + // Don't add a stream - create a default renderer instead + // for the supplied purpose id + AMMSF_ADDDEFAULTRENDERER = 0x00000001, + AMMSF_CREATEPEER = 0x00000002, + + // If no samples are created when we run or the last sample + // is deleted then terminate this stream + AMMSF_STOPIFNOSAMPLES = 0x00000004, + + // If Update is not called keep going + AMMSF_NOSTALL = 0x00000008 +}; + + +// Flag definitions for OpenFile and OpenMoniker +enum { + AMMSF_RENDERTYPEMASK = 0x00000003, + AMMSF_RENDERTOEXISTING = 0x00000000, + AMMSF_RENDERALLSTREAMS = 0x00000001, + AMMSF_NORENDER = 0x00000002, + + AMMSF_NOCLOCK = 0x00000004, + AMMSF_RUN = 0x00000008 +}; + + +typedef [v1_enum] enum { + Disabled = 0, + ReadData = 1, + RenderData = 2 +} OUTPUT_STATE; + + +[ +object, +uuid(7DB01C96-C0C3-11d0-8FF1-00C04FD9189D), +dual, +helpstring("IDirectShowStream Interface"), +pointer_default(unique) +] +interface IDirectShowStream : IDispatch +{ + [propget, id(1), helpstring("property FileName")] HRESULT FileName([out, retval] BSTR *pVal); + [propput, id(1), helpstring("property FileName")] HRESULT FileName([in] BSTR newVal); + [propget, id(2), helpstring("property Video")] HRESULT Video([out, retval] OUTPUT_STATE *pVal); + [propput, id(2), helpstring("propetry Video")] HRESULT Video([in] OUTPUT_STATE newVal); + [propget, id(3), helpstring("property Audio")] HRESULT Audio([out, retval] OUTPUT_STATE *pVal); + [propput, id(3), helpstring("propetry Audio")] HRESULT Audio([in] OUTPUT_STATE newVal); +}; + + +// IAMMultiMediaStream interface +[ +object, +uuid(BEBE595C-9A6F-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IAMMultiMediaStream : IMultiMediaStream +{ + HRESULT Initialize( + [in] STREAM_TYPE StreamType, + [in] DWORD dwFlags, + [in] IGraphBuilder *pFilterGraph); + + HRESULT GetFilterGraph( + [out] IGraphBuilder **ppGraphBuilder); + + HRESULT GetFilter( + [out] IMediaStreamFilter **ppFilter); + + HRESULT AddMediaStream( + [in] IUnknown *pStreamObject, + [in] const MSPID *PurposeId, + [in] DWORD dwFlags, + [out] IMediaStream **ppNewStream); + + HRESULT OpenFile( + [in] LPCWSTR pszFileName, + [in] DWORD dwFlags); + + HRESULT OpenMoniker( + [in] IBindCtx *pCtx, + [in] IMoniker *pMoniker, + [in] DWORD dwFlags); + + HRESULT Render( + [in] DWORD dwFlags); +} + + +// IAMMediaStream interface +[ +object, +uuid(BEBE595D-9A6F-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IAMMediaStream : IMediaStream +{ + HRESULT Initialize( + [in] IUnknown *pSourceObject, + [in] DWORD dwFlags, + [in] REFMSPID PurposeId, + [in] const STREAM_TYPE StreamType); + + HRESULT SetState( + [in] FILTER_STATE State); + + HRESULT JoinAMMultiMediaStream( + [in] IAMMultiMediaStream *pAMMultiMediaStream); + + HRESULT JoinFilter( + [in] IMediaStreamFilter *pMediaStreamFilter); + + HRESULT JoinFilterGraph( + [in] IFilterGraph *pFilterGraph); +}; + + + + +// IMediaStreamFilter interface +[ +object, +local, +uuid(BEBE595E-9A6F-11d0-8FDE-00C04FD9189D), +pointer_default(unique) +] +interface IMediaStreamFilter : IBaseFilter +{ + HRESULT AddMediaStream( + [in] IAMMediaStream *pAMMediaStream); + + HRESULT GetMediaStream( + [in] REFMSPID idPurpose, + [out] IMediaStream **ppMediaStream); + + HRESULT EnumMediaStreams( + [in] long Index, + [out] IMediaStream **ppMediaStream); + + HRESULT SupportSeeking( + [in] BOOL bRenderer); + + HRESULT ReferenceTimeToStreamTime( + [in] [out] REFERENCE_TIME *pTime); + + HRESULT GetCurrentStreamTime( + [out] REFERENCE_TIME *pCurrentStreamTime); + + HRESULT WaitUntil( + [in] REFERENCE_TIME WaitStreamTime); + + HRESULT Flush( + [in] BOOL bCancelEOS); + + HRESULT EndOfStream(); +}; + + + +[ +object, +local, +uuid(AB6B4AFC-F6E4-11d0-900D-00C04FD9189D), +pointer_default(unique) +] +interface IDirectDrawMediaSampleAllocator : IUnknown +{ + HRESULT GetDirectDraw(IDirectDraw **ppDirectDraw); +}; + + +[ +object, +local, +uuid(AB6B4AFE-F6E4-11d0-900D-00C04FD9189D), +pointer_default(unique) +] +interface IDirectDrawMediaSample : IUnknown +{ + HRESULT GetSurfaceAndReleaseLock( + [out] IDirectDrawSurface **ppDirectDrawSurface, + [out] RECT * pRect); + HRESULT LockMediaSamplePointer(void); +}; + + + + + +[ +object, +local, +uuid(AB6B4AFA-F6E4-11d0-900D-00C04FD9189D), +pointer_default(unique) +] + +interface IAMMediaTypeStream : IMediaStream +{ + HRESULT GetFormat( + [out] AM_MEDIA_TYPE * pMediaType, + [in] DWORD dwFlags); + + HRESULT SetFormat( + [in] AM_MEDIA_TYPE * pMediaType, + [in] DWORD dwFlags); + + HRESULT CreateSample( + [in] long lSampleSize, + [in] BYTE * pbBuffer, + [in] DWORD dwFlags, + [in] IUnknown *pUnkOuter, + [out] IAMMediaTypeSample ** ppAMMediaTypeSample); + + HRESULT GetStreamAllocatorRequirements( + [out] ALLOCATOR_PROPERTIES *pProps); + + HRESULT SetStreamAllocatorRequirements( + [in] ALLOCATOR_PROPERTIES *pProps); +}; + + +[ +object, +local, +uuid(AB6B4AFB-F6E4-11d0-900D-00C04FD9189D), +pointer_default(unique) +] +interface IAMMediaTypeSample : IStreamSample +{ + // + // Unique methods for IAMMediaTypeSample + // + HRESULT SetPointer([in] BYTE *pBuffer, [in] long lSize); + + // + // Mirror of IMediaSample + // + HRESULT GetPointer([out] BYTE ** ppBuffer); + long GetSize(void); + HRESULT GetTime([out] REFERENCE_TIME * pTimeStart, [out] REFERENCE_TIME * pTimeEnd); + HRESULT SetTime([in] REFERENCE_TIME * pTimeStart, [in] REFERENCE_TIME * pTimeEnd); + HRESULT IsSyncPoint(void); + HRESULT SetSyncPoint(BOOL bIsSyncPoint); + HRESULT IsPreroll(void); + HRESULT SetPreroll(BOOL bIsPreroll); + long GetActualDataLength(void); + HRESULT SetActualDataLength(long); + HRESULT GetMediaType(AM_MEDIA_TYPE **ppMediaType); + HRESULT SetMediaType(AM_MEDIA_TYPE *pMediaType); + HRESULT IsDiscontinuity(void); + HRESULT SetDiscontinuity(BOOL bDiscontinuity); + HRESULT GetMediaTime([out] LONGLONG * pTimeStart, [out] LONGLONG * pTimeEnd); + HRESULT SetMediaTime([in] LONGLONG * pTimeStart, [in] LONGLONG * pTimeEnd); +}; + + +[ + uuid(4E6CDE29-C0C4-11d0-8FF1-00C04FD9189D), + version(1.0), + helpstring("DirectShowStream 1.0 Type Library") +] + +library DirectShowStreamLib +{ + importlib("stdole2.tlb"); + [ + uuid(49c47ce5-9ba4-11d0-8212-00c04fc32c45), + helpstring("DirectShow Multi Media Stream") + ] + coclass AMMultiMediaStream + { + [default] dispinterface IDirectShowStream; + }; +}; + + + +// +// The MIDL compiler wants to produce a CLSID for everything defined in +// our type library, but it also wants to generate huge proxy code, +// so we use DEFINE_GUID for all other classes. It has another interesting +// bug in that it defines CLSID_AMMultiMediaStream within a #ifdef __cplusplus +// block, so we need to define it outside of that scope. +// + +cpp_quote("#ifndef __cplusplus") +cpp_quote("EXTERN_C const CLSID CLSID_AMMultiMediaStream;") +cpp_quote("#endif") + +cpp_quote("DEFINE_GUID(CLSID_AMDirectDrawStream, /* 49c47ce4-9ba4-11d0-8212-00c04fc32c45 */") +cpp_quote("0x49c47ce4, 0x9ba4, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") +cpp_quote("DEFINE_GUID(CLSID_AMAudioStream, /* 8496e040-af4c-11d0-8212-00c04fc32c45 */") +cpp_quote("0x8496e040, 0xaf4c, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") +cpp_quote("DEFINE_GUID(CLSID_AMAudioData, /* f2468580-af8a-11d0-8212-00c04fc32c45 */") +cpp_quote("0xf2468580, 0xaf8a, 0x11d0, 0x82, 0x12, 0x00, 0xc0, 0x4f, 0xc3, 0x2c, 0x45);") +cpp_quote("DEFINE_GUID(CLSID_AMMediaTypeStream, /* CF0F2F7C-F7BF-11d0-900D-00C04FD9189D */") +cpp_quote("0xcf0f2f7c, 0xf7bf, 0x11d0, 0x90, 0xd, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);") |