summaryrefslogtreecommitdiffstats
path: root/dxsdk/Include/DShowIDL/amstream.idl
diff options
context:
space:
mode:
Diffstat (limited to 'dxsdk/Include/DShowIDL/amstream.idl')
-rw-r--r--dxsdk/Include/DShowIDL/amstream.idl334
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);")