=?UTF-8?Q?Michael=20M=C3=BCller=20?=: include/mfidl.idl: Add IMFMediaSession interface and dependencies.
Alexandre Julliard
julliard at winehq.org
Mon Apr 24 16:11:24 CDT 2017
Module: wine
Branch: master
Commit: 87a8c55811732fbd5d4742f6c354ddb048ceff2b
URL: http://source.winehq.org/git/wine.git/?a=commit;h=87a8c55811732fbd5d4742f6c354ddb048ceff2b
Author: Michael Müller <michael at fds-team.de>
Date: Sat Apr 22 10:47:45 2017 +0000
include/mfidl.idl: Add IMFMediaSession interface and dependencies.
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 | 126 ++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 127 insertions(+)
diff --git a/include/Makefile.in b/include/Makefile.in
index f9cb7b4..6f53728 100644
--- a/include/Makefile.in
+++ b/include/Makefile.in
@@ -88,6 +88,7 @@ IDL_SRCS = \
inspectable.idl \
mediaobj.idl \
metahost.idl \
+ mfidl.idl \
mfobjects.idl \
mfreadwrite.idl \
mimeinfo.idl \
diff --git a/include/mfidl.idl b/include/mfidl.idl
new file mode 100644
index 0000000..3431260
--- /dev/null
+++ b/include/mfidl.idl
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2016 Michael Müller
+ *
+ * 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 unsigned __int64 TOPOID;
+typedef LONGLONG MFTIME;
+
+typedef enum MF_TOPOLOGY_TYPE
+{
+ MF_TOPOLOGY_OUTPUT_NODE,
+ MF_TOPOLOGY_SOURCESTREAM_NODE,
+ MF_TOPOLOGY_TRANSFORM_NODE,
+ MF_TOPOLOGY_TEE_NODE,
+ MF_TOPOLOGY_MAX = 0xffffffff
+} MF_TOPOLOGY_TYPE;
+
+typedef enum _MFCLOCK_STATE
+{
+ MFCLOCK_STATE_INVALID,
+ MFCLOCK_STATE_RUNNING,
+ MFCLOCK_STATE_STOPPED,
+ MFCLOCK_STATE_PAUSED
+} MFCLOCK_STATE;
+
+typedef struct _MFCLOCK_PROPERTIES
+{
+ unsigned __int64 qwCorrelationRate;
+ GUID guidClockId;
+ DWORD dwClockFlags;
+ unsigned __int64 qwClockFrequency;
+ DWORD dwClockTolerance;
+ DWORD dwClockJitter;
+} MFCLOCK_PROPERTIES;
+
+[
+ object,
+ uuid(2eb1e945-18b8-4139-9b1a-d5d584818530),
+]
+interface IMFClock : IUnknown
+{
+ HRESULT GetClockCharacteristics([out] DWORD *characteristics);
+ HRESULT GetCorrelatedTime([in] DWORD reserved, [out] LONGLONG *clock_time, [out] MFTIME *system_time);
+ HRESULT GetContinuityKey([out] DWORD *key);
+ HRESULT GetState([in] DWORD reserved, [out] MFCLOCK_STATE *state);
+ HRESULT GetProperties([out] MFCLOCK_PROPERTIES *props);
+}
+
+[
+ object,
+ uuid(83cf873a-f6da-4bc8-823f-bacfd55dc430),
+]
+interface IMFTopologyNode : IMFAttributes
+{
+ HRESULT SetObject([in] IUnknown *object);
+ HRESULT GetObject([out] IUnknown **object);
+ HRESULT GetNodeType([out] MF_TOPOLOGY_TYPE *type);
+ HRESULT GetTopoNodeID([out] TOPOID *id);
+ HRESULT SetTopoNodeID([in] TOPOID id);
+ HRESULT GetInputCount([out] DWORD *count);
+ HRESULT GetOutputCount([out] DWORD *count);
+ [local] HRESULT ConnectOutput([in] DWORD output_index, [in] IMFTopologyNode *node, [in] DWORD input_index);
+ [local] HRESULT DisconnectOutput([in] DWORD index);
+ HRESULT GetInput([in] DWORD input_index, [out] IMFTopologyNode **node, [out] DWORD *output_index);
+ HRESULT GetOutput([in] DWORD output_index, [out] IMFTopologyNode **node, [out] DWORD *input_index);
+ [local] HRESULT SetOutputPrefType([in] DWORD index, [in] IMFMediaType *type);
+ [local] HRESULT GetOutputPrefType([in] DWORD output_index, [out] IMFMediaType **type);
+ [call_as(GetOutputPrefType)] HRESULT RemoteGetOutputPrefType([in] DWORD index, [out] DWORD *length,
+ [out, size_is(, *length)] BYTE **data);
+ [local] HRESULT SetInputPrefType([in] DWORD index, [in] IMFMediaType *type);
+ [local] HRESULT GetInputPrefType([in] DWORD index, [out] IMFMediaType **type);
+ [call_as(GetInputPrefType)] HRESULT RemoteGetInputPrefType([in] DWORD index, [out] DWORD *length,
+ [out, size_is(, *length)] BYTE **data);
+ HRESULT CloneFrom([in] IMFTopologyNode *node);
+}
+
+[
+ object,
+ uuid(83cf873a-f6da-4bc8-823f-bacfd55dc433),
+]
+interface IMFTopology : IMFAttributes
+{
+ HRESULT GetTopologyID([out] TOPOID *id);
+ [local] HRESULT AddNode([in] IMFTopologyNode *node);
+ [local] HRESULT RemoveNode([in] IMFTopologyNode *node);
+ HRESULT GetNodeCount([out] WORD *nodes);
+ HRESULT GetNode([in] WORD index, [out] IMFTopologyNode **node);
+ [local] HRESULT Clear();
+ HRESULT CloneFrom([in] IMFTopology *topology);
+ HRESULT GetNodeByID([in] TOPOID id, [out] IMFTopologyNode **node);
+ HRESULT GetSourceNodeCollection([out] IMFCollection **collection);
+ HRESULT GetOutputNodeCollection([out] IMFCollection **collection);
+}
+
+[
+ object,
+ uuid(90377834-21d0-4dee-8214-ba2e3e6c1127),
+]
+interface IMFMediaSession : IMFMediaEventGenerator
+{
+ HRESULT SetTopology([in] DWORD flags, [in] IMFTopology *topology);
+ HRESULT ClearTopologies();
+ HRESULT Start([in, unique] const GUID *format, [in, unique] const PROPVARIANT *start);
+ HRESULT Pause();
+ HRESULT Stop();
+ HRESULT Close();
+ HRESULT Shutdown();
+ HRESULT GetClock([out] IMFClock **clock);
+ HRESULT GetSessionCapabilities([out] DWORD *caps);
+ HRESULT GetFullTopology([in] DWORD flags, [in] TOPOID id, [out] IMFTopology **topology);
+}
More information about the wine-cvs
mailing list