mpr: Don't stop enumeration on the first failing network provider.
[wine.git] / include / mfidl.idl
blob45b49578c975b1299b76b2b4e627093f09a4bf2a
1 /*
2 * Copyright 2016 Michael Müller
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 import "mfobjects.idl";
21 typedef unsigned __int64 TOPOID;
22 typedef LONGLONG MFTIME;
24 typedef enum MF_TOPOLOGY_TYPE
26 MF_TOPOLOGY_OUTPUT_NODE,
27 MF_TOPOLOGY_SOURCESTREAM_NODE,
28 MF_TOPOLOGY_TRANSFORM_NODE,
29 MF_TOPOLOGY_TEE_NODE,
30 MF_TOPOLOGY_MAX = 0xffffffff
31 } MF_TOPOLOGY_TYPE;
33 typedef enum _MFCLOCK_STATE
35 MFCLOCK_STATE_INVALID,
36 MFCLOCK_STATE_RUNNING,
37 MFCLOCK_STATE_STOPPED,
38 MFCLOCK_STATE_PAUSED
39 } MFCLOCK_STATE;
41 typedef enum MF_OBJECT_TYPE
43 MF_OBJECT_MEDIASOURCE,
44 MF_OBJECT_BYTESTREAM,
45 MF_OBJECT_INVALID
46 } MF_OBJECT_TYPE;
48 typedef struct _MFCLOCK_PROPERTIES
50 unsigned __int64 qwCorrelationRate;
51 GUID guidClockId;
52 DWORD dwClockFlags;
53 unsigned __int64 qwClockFrequency;
54 DWORD dwClockTolerance;
55 DWORD dwClockJitter;
56 } MFCLOCK_PROPERTIES;
59 object,
60 uuid(2eb1e945-18b8-4139-9b1a-d5d584818530),
62 interface IMFClock : IUnknown
64 HRESULT GetClockCharacteristics([out] DWORD *characteristics);
65 HRESULT GetCorrelatedTime([in] DWORD reserved, [out] LONGLONG *clock_time, [out] MFTIME *system_time);
66 HRESULT GetContinuityKey([out] DWORD *key);
67 HRESULT GetState([in] DWORD reserved, [out] MFCLOCK_STATE *state);
68 HRESULT GetProperties([out] MFCLOCK_PROPERTIES *props);
72 object,
73 uuid(83cf873a-f6da-4bc8-823f-bacfd55dc430),
75 interface IMFTopologyNode : IMFAttributes
77 HRESULT SetObject([in] IUnknown *object);
78 HRESULT GetObject([out] IUnknown **object);
79 HRESULT GetNodeType([out] MF_TOPOLOGY_TYPE *type);
80 HRESULT GetTopoNodeID([out] TOPOID *id);
81 HRESULT SetTopoNodeID([in] TOPOID id);
82 HRESULT GetInputCount([out] DWORD *count);
83 HRESULT GetOutputCount([out] DWORD *count);
84 [local] HRESULT ConnectOutput([in] DWORD output_index, [in] IMFTopologyNode *node, [in] DWORD input_index);
85 [local] HRESULT DisconnectOutput([in] DWORD index);
86 HRESULT GetInput([in] DWORD input_index, [out] IMFTopologyNode **node, [out] DWORD *output_index);
87 HRESULT GetOutput([in] DWORD output_index, [out] IMFTopologyNode **node, [out] DWORD *input_index);
88 [local] HRESULT SetOutputPrefType([in] DWORD index, [in] IMFMediaType *type);
89 [local] HRESULT GetOutputPrefType([in] DWORD output_index, [out] IMFMediaType **type);
90 [call_as(GetOutputPrefType)] HRESULT RemoteGetOutputPrefType([in] DWORD index, [out] DWORD *length,
91 [out, size_is(, *length)] BYTE **data);
92 [local] HRESULT SetInputPrefType([in] DWORD index, [in] IMFMediaType *type);
93 [local] HRESULT GetInputPrefType([in] DWORD index, [out] IMFMediaType **type);
94 [call_as(GetInputPrefType)] HRESULT RemoteGetInputPrefType([in] DWORD index, [out] DWORD *length,
95 [out, size_is(, *length)] BYTE **data);
96 HRESULT CloneFrom([in] IMFTopologyNode *node);
100 object,
101 uuid(83cf873a-f6da-4bc8-823f-bacfd55dc433),
103 interface IMFTopology : IMFAttributes
105 HRESULT GetTopologyID([out] TOPOID *id);
106 [local] HRESULT AddNode([in] IMFTopologyNode *node);
107 [local] HRESULT RemoveNode([in] IMFTopologyNode *node);
108 HRESULT GetNodeCount([out] WORD *nodes);
109 HRESULT GetNode([in] WORD index, [out] IMFTopologyNode **node);
110 [local] HRESULT Clear();
111 HRESULT CloneFrom([in] IMFTopology *topology);
112 HRESULT GetNodeByID([in] TOPOID id, [out] IMFTopologyNode **node);
113 HRESULT GetSourceNodeCollection([out] IMFCollection **collection);
114 HRESULT GetOutputNodeCollection([out] IMFCollection **collection);
118 object,
119 uuid(90377834-21d0-4dee-8214-ba2e3e6c1127),
121 interface IMFMediaSession : IMFMediaEventGenerator
123 HRESULT SetTopology([in] DWORD flags, [in] IMFTopology *topology);
124 HRESULT ClearTopologies();
125 HRESULT Start([in, unique] const GUID *format, [in, unique] const PROPVARIANT *start);
126 HRESULT Pause();
127 HRESULT Stop();
128 HRESULT Close();
129 HRESULT Shutdown();
130 HRESULT GetClock([out] IMFClock **clock);
131 HRESULT GetSessionCapabilities([out] DWORD *caps);
132 HRESULT GetFullTopology([in] DWORD flags, [in] TOPOID id, [out] IMFTopology **topology);
136 object,
137 uuid(fbe5a32d-a497-4b61-bb85-97b1a848a6e3)
139 interface IMFSourceResolver : IUnknown
141 [local] HRESULT CreateObjectFromURL([in] const WCHAR *url, [in] DWORD flags, [in] IPropertyStore *props,
142 [out] MF_OBJECT_TYPE *obj_type, [out] IUnknown **object);
143 [local] HRESULT CreateObjectFromByteStream([in] IMFByteStream *stream, [in] const WCHAR *url, [in] DWORD flags,
144 [in] IPropertyStore *props, [out] MF_OBJECT_TYPE *obj_type, [out] IUnknown **object);
145 [local] HRESULT BeginCreateObjectFromURL([in] const WCHAR *url, [in] DWORD flags, [in] IPropertyStore *props,
146 [out] IUnknown **cancel_cookie, [in] IMFAsyncCallback *callback, [in] IUnknown *unk_state);
147 [call_as(BeginCreateObjectFromURL)] HRESULT RemoteBeginCreateObjectFromURL([in, string] const WCHAR *url,
148 [in] DWORD flags, [in] IPropertyStore *props, [in] IMFRemoteAsyncCallback *callback);
149 [local] HRESULT EndCreateObjectFromURL([in] IMFAsyncResult *result, [out] MF_OBJECT_TYPE *obj_type,
150 [out] IUnknown **object);
151 [call_as(EndCreateObjectFromURL)] HRESULT RemoteEndCreateObjectFromURL([in] IUnknown *result,
152 [out] MF_OBJECT_TYPE *obj_type, [out] IUnknown **object);
153 [local] HRESULT BeginCreateObjectFromByteStream([in] IMFByteStream *stream, [in] const WCHAR *url,
154 [in] DWORD flags, [in] IPropertyStore *props, [out] IUnknown **cancel_cookie,
155 [in] IMFAsyncCallback *callback, [in] IUnknown *unk_state);
156 [call_as(BeginCreateObjectFromByteStream)] HRESULT RemoteBeginCreateObjectFromByteStream([in] IMFByteStream *stream,
157 [in, unique] const WCHAR *url, [in] DWORD flags, [in, unique] IPropertyStore *props,
158 [in] IMFRemoteAsyncCallback *callback);
159 [local] HRESULT EndCreateObjectFromByteStream([in] IMFAsyncResult *result, [out] MF_OBJECT_TYPE *obj_type,
160 [out] IUnknown **object);
161 [call_as(EndCreateObjectFromByteStream)] HRESULT RemoteEndCreateObjectFromByteStream([in] IUnknown *result,
162 [out] MF_OBJECT_TYPE *obj_type, [out] IUnknown **object);
163 [local] HRESULT CanceObjectCreation([in] IUnknown *cancel_cookie);
166 cpp_quote("HRESULT WINAPI MFCreateMediaSession(IMFAttributes *config, IMFMediaSession **session);")
167 cpp_quote("HRESULT WINAPI MFCreateSourceResolver(IMFSourceResolver **resolver);")
168 cpp_quote("HRESULT WINAPI MFCreateTopology(IMFTopology **topology);")