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