Support unrar64.dll
[xy_vsfilter.git] / include / realmedia / rmaasm.h
blobcba8844de25589c89f306c289dbb8405eb81b984
1 /****************************************************************************
2 *
3 * $Id: rmaasm.h 7 2003-05-30 02:18:02Z gabest $
5 * Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
6 *
7 * http://www.real.com/devzone
9 * This program contains proprietary
10 * information of Progressive Networks, Inc, and is licensed
11 * subject to restrictions on use and distribution.
14 * RealMedia Architecture Interfaces for Adaptive Stream Management and
15 * Backchannel Support.
19 #ifndef _RMAASM_H_
20 #define _RMAASM_H_
23 * Forward declarations of some interfaces defined here-in.
25 typedef _INTERFACE IRMAPacket IRMAPacket;
26 typedef _INTERFACE IRMABackChannel IRMABackChannel;
27 typedef _INTERFACE IRMAASMSource IRMAASMSource;
28 typedef _INTERFACE IRMAASMStreamSink IRMAASMStreamSink;
29 typedef _INTERFACE IRMAASMStream IRMAASMStream;
32 /****************************************************************************
34 * Interface:
36 * IRMABackChannel
38 * Purpose:
40 * Backchannel interface to be used by renderers and implemented by
41 * FileFormat Plugins
43 * IID_IRMABackChannel:
45 * {00001500-0901-11d1-8B06-00A024406D59}
48 DEFINE_GUID(IID_IRMABackChannel, 0x00001500, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
49 0xa0, 0x24, 0x40, 0x6d, 0x59);
50 #undef INTERFACE
51 #define INTERFACE IRMABackChannel
53 DECLARE_INTERFACE_(IRMABackChannel, IUnknown)
56 * IUnknown methods
58 STDMETHOD(QueryInterface) (THIS_
59 REFIID riid,
60 void** ppvObj) PURE;
62 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
64 STDMETHOD_(ULONG,Release) (THIS) PURE;
67 * IRMABackChannel method
70 /************************************************************************
71 * Method:
72 * IRMABackChannel::PacketReady
73 * Purpose:
74 * A back channel packet sent from Renderer to FileFormat plugin.
76 STDMETHOD(PacketReady) (THIS_
77 IRMAPacket* pPacket) PURE;
81 /****************************************************************************
83 * Interface:
85 * IRMAASMSource
87 * Purpose:
89 * This interface is implemented by file formats so that they can
90 * act on ASM Subscribe and Unsubscribe actions.
92 * IID_IRMAASMSource:
94 * {00001501-0901-11d1-8B06-00A024406D59}
97 DEFINE_GUID(IID_IRMAASMSource, 0x00001501, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
98 0xa0, 0x24, 0x40, 0x6d, 0x59);
100 #undef INTERFACE
101 #define INTERFACE IRMAASMSource
103 DECLARE_INTERFACE_(IRMAASMSource, IUnknown)
106 * IUnknown methods
108 STDMETHOD(QueryInterface) (THIS_
109 REFIID riid,
110 void** ppvObj) PURE;
112 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
114 STDMETHOD_(ULONG,Release) (THIS) PURE;
117 * IRMAASMSource methods
120 /************************************************************************
121 * Method:
122 * IRMAASMSource::Subscribe
123 * Purpose:
124 * Called to inform a file format that a subscription has occurred,
125 * to rule number uRuleNumber, for stream uStreamNumber.
127 STDMETHOD(Subscribe) (THIS_
128 UINT16 uStreamNumber,
129 UINT16 uRuleNumber) PURE;
131 /************************************************************************
132 * Method:
133 * IRMAASMSource::Unsubscribe
134 * Purpose:
135 * Called to inform a file format that a unsubscription has occurred,
136 * to rule number uRuleNumber, for stream uStreamNumber.
138 STDMETHOD(Unsubscribe) (THIS_
139 UINT16 uStreamNumber,
140 UINT16 uRuleNumber) PURE;
144 /****************************************************************************
146 * Interface:
148 * IRMAASMStream
150 * Purpose:
151 * This interface is implemented by the client core. Top level clients
152 * renderers, etc can query for this interface off of IRMAStream. This
153 * interface allows you to subscribe and unsubscribe to certain rules,
154 * and it also allows you to add a advise sink for these events.
156 * IID_IRMAASMStream:
158 * {00001502-0901-11d1-8B06-00A024406D59}
161 DEFINE_GUID(IID_IRMAASMStream, 0x00001502, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
162 0xa0, 0x24, 0x40, 0x6d, 0x59);
164 #undef INTERFACE
165 #define INTERFACE IRMAASMStream
167 DECLARE_INTERFACE_(IRMAASMStream, IUnknown)
170 * IUnknown methods
172 STDMETHOD(QueryInterface) (THIS_
173 REFIID riid,
174 void** ppvObj) PURE;
176 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
178 STDMETHOD_(ULONG,Release) (THIS) PURE;
181 * IRMAASMStream methods
184 /************************************************************************
185 * Method:
186 * IRMAASMStream::AddASMStreamSink
187 * Purpose:
188 * Add an advise sink for getting subscribe and unsubscribe
189 * notifications.
191 STDMETHOD(AddStreamSink) (THIS_
192 IRMAASMStreamSink* pASMStreamSink) PURE;
194 /************************************************************************
195 * Method:
196 * IRMAASMStream::RemoveStreamSink
197 * Purpose:
198 * Remove an advise sink for getting subscribe and unsubscribe
199 * notifications.
201 STDMETHOD(RemoveStreamSink) (THIS_
202 IRMAASMStreamSink* pASMStreamSink) PURE;
204 /************************************************************************
205 * Method:
206 * IRMAASMStream::Subscribe
207 * Purpose:
208 * Called by renderers and possibly even top level clients to
209 * inform the core to subscribe to a particular rule number for
210 * this stream.
212 STDMETHOD(Subscribe) (THIS_
213 UINT16 uRuleNumber) PURE;
215 /************************************************************************
216 * Method:
217 * IRMAASMStream::Unsubscribe
218 * Purpose:
219 * Called by renderers and possibly even top level clients to
220 * inform the core to unsubscribe to a particular rule number for
221 * this stream.
223 STDMETHOD (Unsubscribe) (THIS_
224 UINT16 uRuleNumber) PURE;
228 /****************************************************************************
230 * Interface:
232 * IRMAASMStreamSink
234 * Purpose:
235 * This is a advise sink for getting notification about subscriptions
236 * and unsubscriptions for a stream.
238 * IID_IRMAASMStream:
240 * {00001503-0901-11d1-8B06-00A024406D59}
243 DEFINE_GUID(IID_IRMAASMStreamSink, 0x00001503, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
244 0xa0, 0x24, 0x40, 0x6d, 0x59);
246 #undef INTERFACE
247 #define INTERFACE IRMAASMStreamSink
249 DECLARE_INTERFACE_(IRMAASMStreamSink, IUnknown)
252 * IUnknown methods
254 STDMETHOD(QueryInterface) (THIS_
255 REFIID riid,
256 void** ppvObj) PURE;
258 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
260 STDMETHOD_(ULONG,Release) (THIS) PURE;
263 * IRMAASMStreamSink methods
266 /************************************************************************
267 * Method:
268 * IRMAASMStreamSink::OnSubscribe
269 * Purpose:
270 * Called to inform you that a subscribe has occurred.
272 STDMETHOD (OnSubscribe) (THIS_
273 UINT16 uRuleNumber) PURE;
275 /************************************************************************
276 * Method:
277 * IRMAASMStreamSink::OnUnsubscribe
278 * Purpose:
279 * Called to inform you that a unsubscribe has occurred.
281 STDMETHOD (OnUnsubscribe) (THIS_
282 UINT16 uRuleNumber) PURE;
285 #endif /*_RMAASM_H_*/