Mark Harmstone : include: Add IMediaObject interfaces.
Alexandre Julliard
julliard at wine.codeweavers.com
Fri Feb 27 08:00:16 CST 2015
Module: wine
Branch: master
Commit: e82f73bf9e104a89e16ebe8e841a942a13ef3f04
URL: http://source.winehq.org/git/wine.git/?a=commit;h=e82f73bf9e104a89e16ebe8e841a942a13ef3f04
Author: Mark Harmstone <hellas at burntcomma.com>
Date: Fri Feb 27 00:18:35 2015 +0000
include: Add IMediaObject interfaces.
---
include/mediaobj.idl | 179 ++++++++++++++++++++++++++++++++++++++++++++++++++-
1 file changed, 176 insertions(+), 3 deletions(-)
diff --git a/include/mediaobj.idl b/include/mediaobj.idl
index cf7bb7a..04c82e8 100644
--- a/include/mediaobj.idl
+++ b/include/mediaobj.idl
@@ -19,12 +19,10 @@
import "unknwn.idl";
import "objidl.idl";
+import "strmif.idl";
interface IDMOQualityControl;
interface IDMOVideoOutputOptimizations;
-interface IMediaBuffer;
-interface IMediaObject;
-interface IMediaObjectInPlace;
typedef struct _DMOMediaType
{
@@ -67,3 +65,178 @@ interface IEnumDMO : IUnknown
[out] IEnumDMO **ppEnum
);
}
+
+/*****************************************************************************
+ * IMediaBuffer interface
+ */
+[
+ object,
+ uuid(59eff8b9-938c-4a26-82f2-95cb84cdc837),
+ local
+]
+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;
+
+enum _DMO_INPLACE_PROCESS_FLAGS {
+ DMO_INPLACE_NORMAL = 0x00000000,
+ DMO_INPLACE_ZERO = 0x00000001
+};
+
+/*****************************************************************************
+ * IMediaObject interface
+ */
+[
+ object,
+ uuid(d8ad0f58-5494-4102-97c5-ec798e59bcf4),
+ local
+]
+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] DMO_OUTPUT_DATA_BUFFER *pOutputBuffers,
+ [out] DWORD *pdwStatus
+ );
+
+ HRESULT Lock(LONG bLock);
+};
+
+/*****************************************************************************
+ * IMediaObjectInPlace interface
+ */
+
+[
+ object,
+ uuid(651b9ad0-0fc7-4aa9-9538-d89931010741),
+ local
+]
+interface IMediaObjectInPlace : IUnknown {
+ HRESULT Process(
+ [in] ULONG ulSize,
+ [in,out] BYTE* pData,
+ [in] REFERENCE_TIME refTimeStart,
+ [in] DWORD dwFlags
+ );
+
+ HRESULT Clone(
+ [out] IMediaObjectInPlace **ppMediaObject
+ );
+
+ HRESULT GetLatency(
+ [out] REFERENCE_TIME *pLatencyTime
+ );
+}
More information about the wine-cvs
mailing list