Alistair Leslie-Hughes : include: Add mftransform.idl.

Alexandre Julliard julliard at winehq.org
Wed Jun 28 15:10:26 CDT 2017


Module: wine
Branch: master
Commit: 2164a4da3f472c6613119fd6af00b0198b4a02a1
URL:    http://source.winehq.org/git/wine.git/?a=commit;h=2164a4da3f472c6613119fd6af00b0198b4a02a1

Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date:   Tue Jun 27 05:45:34 2017 +0000

include: Add mftransform.idl.

Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 include/Makefile.in     |   1 +
 include/mfidl.idl       |   1 +
 include/mftransform.idl | 113 ++++++++++++++++++++++++++++++++++++++++++++++++
 3 files changed, 115 insertions(+)

diff --git a/include/Makefile.in b/include/Makefile.in
index d00defd..1dd6aaf 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -92,6 +92,7 @@ IDL_SRCS = \
 	mfidl.idl \
 	mfobjects.idl \
 	mfreadwrite.idl \
+	mftransform.idl \
 	mimeinfo.idl \
 	mimeole.idl \
 	mlang.idl \
diff --git a/include/mfidl.idl b/include/mfidl.idl
index 45b4957..3c33806 100644
--- a/include/mfidl.idl
+++ b/include/mfidl.idl
@@ -17,6 +17,7 @@
  */
 
 import "mfobjects.idl";
+import "mftransform.idl";
 
 typedef unsigned __int64 TOPOID;
 typedef LONGLONG  MFTIME;
diff --git a/include/mftransform.idl b/include/mftransform.idl
new file mode 100644
index 0000000..165cad4
--- /dev/null
+++ b/include/mftransform.idl
@@ -0,0 +1,113 @@
+/*
+ * Copyright 2017 Alistair Leslie-Hughes
+ *
+ * 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
+ */
+
+import "mfobjects.idl";
+
+typedef struct _MFT_INPUT_STREAM_INFO
+{
+    LONGLONG hnsMaxLatency;
+    DWORD    dwFlags;
+    DWORD    cbSize;
+    DWORD    cbMaxLookahead;
+    DWORD    cbAlignment;
+} MFT_INPUT_STREAM_INFO;
+
+typedef struct _MFT_OUTPUT_STREAM_INFO
+{
+    DWORD dwFlags;
+    DWORD cbSize;
+    DWORD cbAlignment;
+} MFT_OUTPUT_STREAM_INFO;
+
+typedef struct _MFT_OUTPUT_DATA_BUFFER
+{
+    DWORD         dwStreamID;
+    IMFSample     *pSample;
+    DWORD         dwStatus;
+    IMFCollection *pEvents;
+} MFT_OUTPUT_DATA_BUFFER, *PMFT_OUTPUT_DATA_BUFFER;
+
+typedef enum _MFT_MESSAGE_TYPE
+{
+    MFT_MESSAGE_COMMAND_FLUSH          = 0x00000000,
+    MFT_MESSAGE_COMMAND_DRAIN          = 0x00000001,
+    MFT_MESSAGE_SET_D3D_MANAGER        = 0x00000002,
+    MFT_MESSAGE_DROP_SAMPLES           = 0x00000003,
+    MFT_MESSAGE_COMMAND_TICK           = 0x00000004,
+    MFT_MESSAGE_NOTIFY_BEGIN_STREAMING = 0x10000000,
+    MFT_MESSAGE_NOTIFY_END_STREAMING   = 0x10000001,
+    MFT_MESSAGE_NOTIFY_END_OF_STREAM   = 0x10000002,
+    MFT_MESSAGE_NOTIFY_START_OF_STREAM = 0x10000003,
+    MFT_MESSAGE_COMMAND_MARKER         = 0x20000000
+} MFT_MESSAGE_TYPE;
+
+[
+    object,
+    uuid(bf94c121-5b05-4e6f-8000-ba598961414d)
+]
+interface IMFTransform : IUnknown
+{
+    HRESULT GetStreamLimits([out] DWORD *input_minimum, [out] DWORD *input_maximum, [out] DWORD *output_minimum,
+                            [out] DWORD *output_maximum);
+
+    HRESULT GetStreamCount([out] DWORD *inputs,  [out] DWORD *outputs);
+
+    HRESULT GetStreamIDs([in] DWORD input_size, [out,size_is(input_size)] DWORD *inputs,
+                         [in] DWORD output_size, [out,size_is(output_size)] DWORD *outputs);
+
+    HRESULT GetInputStreamInfo([in] DWORD id, [out] MFT_INPUT_STREAM_INFO *info);
+
+    HRESULT GetOutputStreamInfo([in] DWORD id, [out] MFT_OUTPUT_STREAM_INFO *info);
+
+    HRESULT GetAttributes([out] IMFAttributes **attributes);
+
+    HRESULT GetInputStreamAttributes([in] DWORD id, [out] IMFAttributes **attributes);
+
+    HRESULT GetOutputStreamAttributes([in] DWORD id, [out] IMFAttributes **attributes);
+
+    HRESULT DeleteInputStream([in] DWORD id);
+
+    HRESULT AddInputStreams([in] DWORD streams, [in] DWORD *ids);
+
+    HRESULT GetInputAvailableType([in] DWORD id, [in] DWORD index, [out] IMFMediaType **type);
+
+    HRESULT GetOutputAvailableType([in] DWORD id, [in] DWORD index, [out] IMFMediaType **type);
+
+    HRESULT SetInputType(DWORD id, [in] IMFMediaType *type, [in] DWORD flags);
+
+    HRESULT SetOutputType(DWORD id, [in] IMFMediaType *type, [in] DWORD flags);
+
+    HRESULT GetInputCurrentType([in] DWORD id, [out] IMFMediaType **type);
+
+    HRESULT GetOutputCurrentType([in] DWORD id, [out] IMFMediaType **type);
+
+    HRESULT GetInputStatus([in] DWORD id, [out] DWORD *flags);
+
+    HRESULT GetOutputStatus([out] DWORD *flags);
+
+    HRESULT SetOutputBounds([in] LONGLONG lower, [in] LONGLONG upper);
+
+    HRESULT ProcessEvent([in] DWORD id, [in] IMFMediaEvent *event);
+
+    HRESULT ProcessMessage([in] MFT_MESSAGE_TYPE message, [in] ULONG_PTR param);
+
+    [local] HRESULT ProcessInput([in] DWORD id, [in] IMFSample *sample, [in] DWORD flags);
+
+    [local] HRESULT ProcessOutput([in] DWORD flags, [in] DWORD count, [in,out,size_is(count)] MFT_OUTPUT_DATA_BUFFER *samples,
+                                  [out] DWORD *status);
+};




More information about the wine-cvs mailing list