add correct mediaoobj.idl compatible with ms dxsdk 2004 dec

add medoaram.idl compatible with ms dxsdk 2004 dec

svn path=/trunk/; revision=26908
This commit is contained in:
Magnus Olsen 2007-05-27 09:34:59 +00:00
parent c6c58b7697
commit cd9120322a
5 changed files with 298 additions and 246 deletions

View file

@ -3,6 +3,8 @@
<file>amstream.idl</file>
<file>ddstream.idl</file>
<file>mixerocx.idl</file>
<file>mediaobj.idl</file>
<file>medparam.idl</file>
<file>mmstream.idl</file>
<file>vidcap.idl</file>
<file>Videoacc.idl</file>

View file

@ -0,0 +1,189 @@
import "unknwn.idl";
import "objidl.idl";
cpp_quote("#ifdef __strmif_h__")
cpp_quote("typedef AM_MEDIA_TYPE DMO_MEDIA_TYPE;")
cpp_quote("#else")
typedef struct _DMOMediaType
{
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
[size_is(cbFormat)] BYTE * pbFormat;
} DMO_MEDIA_TYPE;
typedef LONGLONG REFERENCE_TIME;
cpp_quote("#endif")
enum _DMO_INPUT_DATA_BUFFER_FLAGS
{
DMO_INPUT_DATA_BUFFERF_SYNCPOINT = 0x00000001,
DMO_INPUT_DATA_BUFFERF_TIME = 0x00000002,
DMO_INPUT_DATA_BUFFERF_TIMELENGTH = 0x00000004
};
enum _DMO_OUTPUT_DATA_BUFFER_FLAGS
{
DMO_OUTPUT_DATA_BUFFERF_SYNCPOINT = 0x00000001,
DMO_OUTPUT_DATA_BUFFERF_TIME = 0x00000002,
DMO_OUTPUT_DATA_BUFFERF_TIMELENGTH = 0x00000004,
DMO_OUTPUT_DATA_BUFFERF_INCOMPLETE = 0x01000000
};
enum _DMO_INPUT_STATUS_FLAGS
{
DMO_INPUT_STATUSF_ACCEPT_DATA = 0x00000001
};
enum _DMO_INPUT_STREAM_INFO_FLAGS
{
DMO_INPUT_STREAMF_WHOLE_SAMPLES = 0x00000001,
DMO_INPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x00000002,
DMO_INPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x00000004,
DMO_INPUT_STREAMF_HOLDS_BUFFERS = 0x00000008
};
enum _DMO_OUTPUT_STREAM_INFO_FLAGS
{
DMO_OUTPUT_STREAMF_WHOLE_SAMPLES = 0x00000001,
DMO_OUTPUT_STREAMF_SINGLE_SAMPLE_PER_BUFFER = 0x00000002,
DMO_OUTPUT_STREAMF_FIXED_SAMPLE_SIZE = 0x00000004,
DMO_OUTPUT_STREAMF_DISCARDABLE = 0x00000008,
DMO_OUTPUT_STREAMF_OPTIONAL = 0x00000010
};
enum _DMO_SET_TYPE_FLAGS
{
DMO_SET_TYPEF_TEST_ONLY = 0x00000001,
DMO_SET_TYPEF_CLEAR = 0x00000002
};
enum _DMO_PROCESS_OUTPUT_FLAGS
{
DMO_PROCESS_OUTPUT_DISCARD_WHEN_NO_BUFFER = 0x00000001
};
enum _DMO_INPLACE_PROCESS_FLAGS
{
DMO_INPLACE_NORMAL = 0x00000000,
DMO_INPLACE_ZERO = 0x00000001
};
enum _DMO_QUALITY_STATUS_FLAGS
{
DMO_QUALITY_STATUS_ENABLED = 0x00000001
};
enum _DMO_VIDEO_OUTPUT_STREAM_FLAGS
{
DMO_VOSF_NEEDS_PREVIOUS_SAMPLE = 0x00000001
};
[
object,
uuid(59eff8b9-938c-4a26-82f2-95cb84cdc837)
]
interface IMediaBuffer : IUnknown
{
HRESULT SetLength(DWORD cbLength);
HRESULT GetMaxLength([out] DWORD *pcbMaxLength);
HRESULT GetBufferAndLength([out] BYTE **ppBuffer, [out] DWORD *pcbLength);
}
typedef struct _DMO_OUTPUT_DATA_BUFFER
{
IMediaBuffer *pBuffer;
DWORD dwStatus;
REFERENCE_TIME rtTimestamp;
REFERENCE_TIME rtTimelength;
} DMO_OUTPUT_DATA_BUFFER, *PDMO_OUTPUT_DATA_BUFFER;
[
object,
uuid(d8ad0f58-5494-4102-97c5-ec798e59bcf4)
]
interface IMediaObject : IUnknown
{
HRESULT GetStreamCount([out] DWORD *pcInputStreams, [out] DWORD *pcOutputStreams);
HRESULT GetInputStreamInfo(DWORD dwInputStreamIndex, [out] DWORD *pdwFlags);
HRESULT GetOutputStreamInfo(DWORD dwOutputStreamIndex, [out] DWORD *pdwFlags);
HRESULT GetInputType(DWORD dwInputStreamIndex, DWORD dwTypeIndex, [out] DMO_MEDIA_TYPE *pmt);
HRESULT GetOutputType(DWORD dwOutputStreamIndex, DWORD dwTypeIndex, [out] DMO_MEDIA_TYPE *pmt);
HRESULT SetInputType(DWORD dwInputStreamIndex, [in] const DMO_MEDIA_TYPE *pmt, DWORD dwFlags);
HRESULT SetOutputType(DWORD dwOutputStreamIndex, [in] const DMO_MEDIA_TYPE *pmt, DWORD dwFlags);
HRESULT GetInputCurrentType(DWORD dwInputStreamIndex, [out] DMO_MEDIA_TYPE *pmt);
HRESULT GetOutputCurrentType(DWORD dwOutputStreamIndex, [out] DMO_MEDIA_TYPE *pmt);
HRESULT GetInputSizeInfo(DWORD dwInputStreamIndex, [out] DWORD *pcbSize, [out] DWORD *pcbMaxLookahead, [out] DWORD *pcbAlignment);
HRESULT GetOutputSizeInfo(DWORD dwOutputStreamIndex, [out] DWORD *pcbSize, [out] DWORD *pcbAlignment);
HRESULT GetInputMaxLatency(DWORD dwInputStreamIndex, [out] REFERENCE_TIME *prtMaxLatency);
HRESULT SetInputMaxLatency(DWORD dwInputStreamIndex, REFERENCE_TIME rtMaxLatency);
HRESULT Flush();
HRESULT Discontinuity(DWORD dwInputStreamIndex);
HRESULT AllocateStreamingResources();
HRESULT FreeStreamingResources();
HRESULT GetInputStatus(DWORD dwInputStreamIndex, [out] DWORD *dwFlags);
HRESULT ProcessInput(DWORD dwInputStreamIndex, IMediaBuffer *pBuffer, DWORD dwFlags, REFERENCE_TIME rtTimestamp, REFERENCE_TIME rtTimelength);
HRESULT ProcessOutput(DWORD dwFlags,DWORD cOutputBufferCount, [in,out,size_is(cOutputBufferCount)]
DMO_OUTPUT_DATA_BUFFER *pOutputBuffers, [out] DWORD *pdwStatus);
HRESULT Lock(LONG bLock);
};
[
object,
uuid(2c3cd98a-2bfa-4a53-9c27-5249ba64ba0f)
]
interface IEnumDMO : IUnknown
{
HRESULT Next(DWORD cItemsToFetch, [out, size_is(cItemsToFetch), length_is(*pcItemsFetched)] CLSID *pCLSID, [out, size_is(cItemsToFetch), length_is(*pcItemsFetched), string] WCHAR **Names, [out] DWORD *pcItemsFetched);
HRESULT Skip(DWORD cItemsToSkip);
HRESULT Reset(void);
HRESULT Clone([out] IEnumDMO **ppEnum);
}
[
object,
uuid(651b9ad0-0fc7-4aa9-9538-d89931010741)
]
interface IMediaObjectInPlace : IUnknown
{
HRESULT Process([in] ULONG ulSize, [in,out,size_is(ulSize)] BYTE* pData, [in] REFERENCE_TIME refTimeStart, [in] DWORD dwFlags);
HRESULT Clone([out] IMediaObjectInPlace **ppMediaObject);
HRESULT GetLatency([out] REFERENCE_TIME *pLatencyTime);
}
[
object,
uuid(65abea96-cf36-453f-af8a-705e98f16260)
]
interface IDMOQualityControl : IUnknown
{
HRESULT SetNow([in] REFERENCE_TIME rtNow);
HRESULT SetStatus([in] DWORD dwFlags);
HRESULT GetStatus([out] DWORD *pdwFlags);
}
[
object,
uuid(be8f4f4e-5b16-4d29-b350-7f6b5d9298ac)
]
interface IDMOVideoOutputOptimizations : IUnknown
{
HRESULT QueryOperationModePreferences (ULONG ulOutputStreamIndex, DWORD *pdwRequestedCapabilities);
HRESULT SetOperationMode (ULONG ulOutputStreamIndex, DWORD dwEnabledFeatures);
HRESULT GetCurrentOperationMode (ULONG ulOutputStreamIndex, DWORD *pdwEnabledFeatures);
HRESULT GetCurrentSampleRequirements (ULONG ulOutputStreamIndex, DWORD *pdwRequestedFeatures
);
}

View file

@ -0,0 +1,107 @@
import "oaidl.idl";
import "ocidl.idl";
import "strmif.idl";
typedef float MP_DATA;
typedef enum _MP_Type
{
MPT_INT,
MPT_FLOAT,
MPT_BOOL,
MPT_ENUM,
MPT_MAX,
} MP_TYPE;
cpp_quote("const MP_DATA MPBOOL_TRUE = 1.0;")
cpp_quote("const MP_DATA MPBOOL_FALSE = 0.0;")
typedef enum _MP_CURVE_TYPE
{
MP_CURVE_JUMP = 0x0001,
MP_CURVE_LINEAR = 0x0002,
MP_CURVE_SQUARE = 0x0004,
MP_CURVE_INVSQUARE = 0x0008,
MP_CURVE_SINE = 0x0010,
} MP_CURVE_TYPE;
typedef DWORD MP_CAPS;
const MP_CAPS MP_CAPS_CURVE_JUMP = MP_CURVE_JUMP;
const MP_CAPS MP_CAPS_CURVE_LINEAR = MP_CURVE_LINEAR;
const MP_CAPS MP_CAPS_CURVE_SQUARE = MP_CURVE_SQUARE;
const MP_CAPS MP_CAPS_CURVE_INVSQUARE = MP_CURVE_INVSQUARE;
const MP_CAPS MP_CAPS_CURVE_SINE = MP_CURVE_SINE;
typedef struct _MP_PARAMINFO
{
MP_TYPE mpType;
MP_CAPS mopCaps;
MP_DATA mpdMinValue;
MP_DATA mpdMaxValue;
MP_DATA mpdNeutralValue;
WCHAR szUnitText[32];
WCHAR szLabel[32];
} MP_PARAMINFO;
typedef DWORD DWORD;
const DWORD DWORD_ALLPARAMS = -1;
typedef DWORD MP_TIMEDATA;
cpp_quote("DEFINE_GUID(GUID_TIME_REFERENCE, 0x93ad712b, 0xdaa0, 0x4ffe, 0xbc, 0x81, 0xb0, 0xce, 0x50, 0x0f, 0xcd, 0xd9);")
cpp_quote("DEFINE_GUID(GUID_TIME_MUSIC, 0x0574c49d, 0x5b04, 0x4b15, 0xa5, 0x42, 0xae, 0x28, 0x20, 0x30, 0x11, 0x7b);")
cpp_quote("DEFINE_GUID(GUID_TIME_SAMPLES, 0xa8593d05, 0x0c43, 0x4984, 0x9a, 0x63, 0x97, 0xaf, 0x9e, 0x02, 0xc4, 0xc0);")
typedef DWORD MP_FLAGS;
const MP_FLAGS MPF_ENVLP_STANDARD = 0x0000;
const MP_FLAGS MPF_ENVLP_BEGIN_CURRENTVAL = 0x0001;
const MP_FLAGS MPF_ENVLP_BEGIN_NEUTRALVAL = 0x0002;
typedef struct _MP_ENVELOPE_SEGMENT
{
REFERENCE_TIME rtStart;
REFERENCE_TIME rtEnd;
MP_DATA valStart;
MP_DATA valEnd;
MP_CURVE_TYPE iCurve;
MP_FLAGS flags;
} MP_ENVELOPE_SEGMENT;
const MP_FLAGS MPF_PUNCHIN_REFTIME = 0;
const MP_FLAGS MPF_PUNCHIN_NOW = 0x0001;
const MP_FLAGS MPF_PUNCHIN_STOPPED = 0x0002;
[
object,
uuid(6d6cbb60-a223-44aa-842f-a2f06750be6d),
version(1.0)
]
interface IMediaParamInfo : IUnknown
{
HRESULT GetParamCount ([out] DWORD * pdwParams);
HRESULT GetParamInfo ([in] DWORD dwParamIndex, [out] MP_PARAMINFO * pInfo);
HRESULT GetParamText ([in] DWORD dwParamIndex, [out] WCHAR **ppwchText);
HRESULT GetNumTimeFormats ([out] DWORD * pdwNumTimeFormats);
HRESULT GetSupportedTimeFormat([in] DWORD dwFormatIndex, [out] GUID *pguidTimeFormat);
HRESULT GetCurrentTimeFormat ([out] GUID *pguidTimeFormat, [out] MP_TIMEDATA *pTimeData);
}
[
object,
uuid(6d6cbb61-a223-44aa-842f-a2f06750be6e),
version(1.0)
]
interface IMediaParams : IUnknown
{
HRESULT GetParam ([in] DWORD dwParamIndex, [out] MP_DATA *pValue);
HRESULT SetParam ([in] DWORD dwParamIndex, [in] MP_DATA value);
HRESULT AddEnvelope ([in] DWORD dwParamIndex, [in] DWORD cSegments, [in] MP_ENVELOPE_SEGMENT * pEnvelopeSegments);
HRESULT FlushEnvelope ([in] DWORD dwParamIndex, [in] REFERENCE_TIME refTimeStart, [in] REFERENCE_TIME refTimeEnd);
HRESULT SetTimeFormat ([in] GUID guidTimeFormat, [in] MP_TIMEDATA mpTimeData);
}

View file

@ -1,172 +0,0 @@
/*** Autogenerated by WIDL 0.3.0 from include\psdk\mediaobj.idl - Do not edit ***/
#include <rpc.h>
#include <rpcndr.h>
#ifndef __WIDL_INCLUDE_PSDK_MEDIAOBJ_H
#define __WIDL_INCLUDE_PSDK_MEDIAOBJ_H
#ifdef __cplusplus
extern "C" {
#endif
#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__)
#include <windows.h>
#include <ole2.h>
#endif
#include <unknwn.h>
#include <objidl.h>
#ifndef __IDMOQualityControl_FWD_DEFINED__
#define __IDMOQualityControl_FWD_DEFINED__
typedef interface IDMOQualityControl IDMOQualityControl;
#endif
#ifndef __IDMOVideoOutputOptimizations_FWD_DEFINED__
#define __IDMOVideoOutputOptimizations_FWD_DEFINED__
typedef interface IDMOVideoOutputOptimizations IDMOVideoOutputOptimizations;
#endif
#ifndef __IMediaBuffer_FWD_DEFINED__
#define __IMediaBuffer_FWD_DEFINED__
typedef interface IMediaBuffer IMediaBuffer;
#endif
#ifndef __IMediaObject_FWD_DEFINED__
#define __IMediaObject_FWD_DEFINED__
typedef interface IMediaObject IMediaObject;
#endif
#ifndef __IMediaObjectInPlace_FWD_DEFINED__
#define __IMediaObjectInPlace_FWD_DEFINED__
typedef interface IMediaObjectInPlace IMediaObjectInPlace;
#endif
typedef struct _DMOMediaType {
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
BYTE *pbFormat;
} DMO_MEDIA_TYPE;
#ifndef __IEnumDMO_FWD_DEFINED__
#define __IEnumDMO_FWD_DEFINED__
typedef interface IEnumDMO IEnumDMO;
#endif
/*****************************************************************************
* IEnumDMO interface
*/
#ifndef __IEnumDMO_INTERFACE_DEFINED__
#define __IEnumDMO_INTERFACE_DEFINED__
DEFINE_GUID(IID_IEnumDMO, 0x2c3cd98a, 0x2bfa, 0x4a53, 0x9c,0x27, 0x52,0x49,0xba,0x64,0xba,0x0f);
#if defined(__cplusplus) && !defined(CINTERFACE)
interface IEnumDMO : public IUnknown
{
virtual HRESULT STDMETHODCALLTYPE Next(
DWORD cItemsToFetch,
CLSID* pCLSID,
WCHAR** Names,
DWORD* pcItemsFetched) = 0;
virtual HRESULT STDMETHODCALLTYPE Skip(
DWORD cItemsToSkip) = 0;
virtual HRESULT STDMETHODCALLTYPE Reset(
) = 0;
virtual HRESULT STDMETHODCALLTYPE Clone(
IEnumDMO** ppEnum) = 0;
};
#else
typedef struct IEnumDMOVtbl {
BEGIN_INTERFACE
/*** IUnknown methods ***/
HRESULT (STDMETHODCALLTYPE *QueryInterface)(
IEnumDMO* This,
REFIID riid,
void** ppvObject);
ULONG (STDMETHODCALLTYPE *AddRef)(
IEnumDMO* This);
ULONG (STDMETHODCALLTYPE *Release)(
IEnumDMO* This);
/*** IEnumDMO methods ***/
HRESULT (STDMETHODCALLTYPE *Next)(
IEnumDMO* This,
DWORD cItemsToFetch,
CLSID* pCLSID,
WCHAR** Names,
DWORD* pcItemsFetched);
HRESULT (STDMETHODCALLTYPE *Skip)(
IEnumDMO* This,
DWORD cItemsToSkip);
HRESULT (STDMETHODCALLTYPE *Reset)(
IEnumDMO* This);
HRESULT (STDMETHODCALLTYPE *Clone)(
IEnumDMO* This,
IEnumDMO** ppEnum);
END_INTERFACE
} IEnumDMOVtbl;
interface IEnumDMO {
const IEnumDMOVtbl* lpVtbl;
};
#ifdef COBJMACROS
/*** IUnknown methods ***/
#define IEnumDMO_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
#define IEnumDMO_AddRef(p) (p)->lpVtbl->AddRef(p)
#define IEnumDMO_Release(p) (p)->lpVtbl->Release(p)
/*** IEnumDMO methods ***/
#define IEnumDMO_Next(p,a,b,c,d) (p)->lpVtbl->Next(p,a,b,c,d)
#define IEnumDMO_Skip(p,a) (p)->lpVtbl->Skip(p,a)
#define IEnumDMO_Reset(p) (p)->lpVtbl->Reset(p)
#define IEnumDMO_Clone(p,a) (p)->lpVtbl->Clone(p,a)
#endif
#endif
HRESULT CALLBACK IEnumDMO_Skip_Proxy(
IEnumDMO* This,
DWORD cItemsToSkip);
void __RPC_STUB IEnumDMO_Skip_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* pRpcChannelBuffer,
PRPC_MESSAGE pRpcMessage,
DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumDMO_Reset_Proxy(
IEnumDMO* This);
void __RPC_STUB IEnumDMO_Reset_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* pRpcChannelBuffer,
PRPC_MESSAGE pRpcMessage,
DWORD* pdwStubPhase);
HRESULT CALLBACK IEnumDMO_Clone_Proxy(
IEnumDMO* This,
IEnumDMO** ppEnum);
void __RPC_STUB IEnumDMO_Clone_Stub(
IRpcStubBuffer* This,
IRpcChannelBuffer* pRpcChannelBuffer,
PRPC_MESSAGE pRpcMessage,
DWORD* pdwStubPhase);
#endif /* __IEnumDMO_INTERFACE_DEFINED__ */
/* Begin additional prototypes for all interfaces */
/* End additional prototypes */
#ifdef __cplusplus
}
#endif
#endif /* __WIDL_INCLUDE_PSDK_MEDIAOBJ_H */

View file

@ -1,74 +0,0 @@
/*
* Copyright (C) 2002 Alexandre Julliard
* Copyright (C) 2004 Vincent Béron
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
cpp_quote("#if !defined(COM_NO_WINDOWS_H) && !defined(__WINESRC__)")
cpp_quote("#include <windows.h>")
cpp_quote("#include <ole2.h>")
cpp_quote("#endif")
import "unknwn.idl";
import "objidl.idl";
interface IDMOQualityControl;
interface IDMOVideoOutputOptimizations;
interface IMediaBuffer;
interface IMediaObject;
interface IMediaObjectInPlace;
typedef struct _DMOMediaType
{
GUID majortype;
GUID subtype;
BOOL bFixedSizeSamples;
BOOL bTemporalCompression;
ULONG lSampleSize;
GUID formattype;
IUnknown *pUnk;
ULONG cbFormat;
BYTE *pbFormat;
} DMO_MEDIA_TYPE;
/*****************************************************************************
* IEnumDMO interface
*/
[
object,
uuid(2C3CD98A-2BFA-4A53-9C27-5249BA64BA0F),
pointer_default(unique)
]
interface IEnumDMO : IUnknown
{
[local]
HRESULT Next(
[in] DWORD cItemsToFetch,
[out] CLSID *pCLSID,
[out] WCHAR **Names,
[out] DWORD *pcItemsFetched
);
HRESULT Skip(
[in] DWORD cItemsToSkip
);
HRESULT Reset();
HRESULT Clone(
[out] IEnumDMO **ppEnum
);
}