Support unrar64.dll
[xy_vsfilter.git] / include / realmedia / rmaallow.h
blobcdb55021577ac4c354ec7b3215c19324dd25c51f
1 /****************************************************************************
2 *
3 * $Id: rmaallow.h 7 2003-05-30 02:18:02Z gabest $
4 *
5 * Copyright (C) 1995-1999 RealNetworks, Inc. All rights reserved.
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.
13 * Interfaces related to allowance plugins.
17 #ifndef _RMAALLOW_H_
18 #define _RMAALLOW_H_
21 * Forward declarations of some interfaces defined or used here-in.
23 typedef _INTERFACE IRMAValues IRMAValues;
24 typedef _INTERFACE IRMABuffer IRMABuffer;
25 typedef _INTERFACE IRMARequest IRMARequest;
26 typedef _INTERFACE IRMAPlayerConnectionAdviseSinkManager IRMAPlayerConnectionAdviseSinkManager;
27 typedef _INTERFACE IRMAPlayerConnectionAdviseSink IRMAPlayerConnectionAdviseSink;
28 typedef _INTERFACE IRMAPlayerConnectionResponse IRMAPlayerConnectionResponse;
29 typedef _INTERFACE IRMAPlayerController IRMAPlayerController;
30 typedef _INTERFACE IRMAPlayerControllerProxyRedirect IRMAPlayerControllerProxyRedirect;
32 /****************************************************************************
34 * Interface:
36 * IRMAPlayerConnectionAdviseSink
38 * Purpose:
40 * Advise Sink which receives notification whenever a new player
41 * connects to the server.
43 * IID_IRMAPlayerConnectionAdviseSink:
45 * {00002600-0901-11d1-8B06-00A024406D59}
49 DEFINE_GUID(IID_IRMAPlayerConnectionAdviseSink, 0x00002600, 0x901, 0x11d1,
50 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
52 #undef INTERFACE
53 #define INTERFACE IRMAPlayerConnectionAdviseSink
55 DECLARE_INTERFACE_(IRMAPlayerConnectionAdviseSink, IUnknown)
57 STDMETHOD(QueryInterface) (THIS_
58 REFIID riid,
59 void** ppvObj) PURE;
61 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
63 STDMETHOD_(ULONG,Release) (THIS) PURE;
65 /* OnConnection is called when a new player has connected to the
66 * server. If the result is PNR_OK, then the plugin will be notified
67 * when certain events occur in the player's life cycle.
69 STDMETHOD(OnConnection) (THIS_
70 IRMAPlayerConnectionResponse* pResponse) PURE;
72 /* SetPlayerController is called by the server core to provide us with
73 * an interface which can stop, alert, redirect or otherwise control
74 * the player we are receiving notifications about.
76 STDMETHOD(SetPlayerController) (THIS_
77 IRMAPlayerController* pPlayerController) PURE;
79 /* SetRegistryID is called by the server core to provide us with the
80 * ID for this Player in the server registry. The plugin can use this
81 * registry ID to find out various information about the connected player.
83 STDMETHOD(SetRegistryID) (THIS_ UINT32 ulPlayerRegistryID) PURE;
85 STDMETHOD(OnURL) (THIS_ IRMARequest* pRequest) PURE;
86 STDMETHOD(OnBegin) (THIS) PURE;
87 STDMETHOD(OnStop) (THIS) PURE;
88 STDMETHOD(OnPause) (THIS) PURE;
89 STDMETHOD(OnDone) (THIS) PURE;
92 /****************************************************************************
94 * Interface:
96 * IRMAPlayerConnectionResponse
98 * Purpose:
100 * Response object for the PlayerConnectionAdviseSink.
102 * IID_IRMAPlayerConnectionResponse:
104 * {00002601-0901-11d1-8B06-00A024406D59}
108 DEFINE_GUID(IID_IRMAPlayerConnectionResponse, 0x00002601, 0x901, 0x11d1,
109 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
111 #undef INTERFACE
112 #define INTERFACE IRMAPlayerConnectionResponse
114 DECLARE_INTERFACE_(IRMAPlayerConnectionResponse, IUnknown)
116 STDMETHOD(QueryInterface) (THIS_
117 REFIID riid,
118 void** ppvObj) PURE;
120 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
122 STDMETHOD_(ULONG,Release) (THIS) PURE;
124 STDMETHOD(OnConnectionDone) (THIS_ PN_RESULT status) PURE;
125 STDMETHOD(OnURLDone) (THIS_ PN_RESULT status) PURE;
126 STDMETHOD(OnBeginDone) (THIS_ PN_RESULT status) PURE;
127 STDMETHOD(OnStopDone) (THIS_ PN_RESULT status) PURE;
128 STDMETHOD(OnPauseDone) (THIS_ PN_RESULT status) PURE;
131 /****************************************************************************
133 * Interface:
135 * IRMAPlayerController
137 * Purpose:
139 * Object created by the server core and given to the
140 * IRMAPlayerConnectionResponse object so that the response object
141 * can control the connected player.
143 * IID_IRMAPlayerController:
145 * {00002602-0901-11d1-8B06-00A024406D59}
149 DEFINE_GUID(IID_IRMAPlayerController, 0x00002602, 0x901, 0x11d1,
150 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
152 #undef INTERFACE
153 #define INTERFACE IRMAPlayerController
155 DECLARE_INTERFACE_(IRMAPlayerController, IUnknown)
157 STDMETHOD(QueryInterface) (THIS_
158 REFIID riid,
159 void** ppvObj) PURE;
161 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
163 STDMETHOD_(ULONG,Release) (THIS) PURE;
165 STDMETHOD(Pause) (THIS) PURE;
166 STDMETHOD(Resume) (THIS) PURE;
167 STDMETHOD(Disconnect) (THIS) PURE;
168 STDMETHOD(AlertAndDisconnect) (THIS_ IRMABuffer* pAlert) PURE;
170 /* HostRedirect is called by a PlayerConnectionAdviseSink to redirect
171 * this player to another host and/or port, for the same URL. This
172 * method works with both RTSP and PNA protocols.
174 STDMETHOD(HostRedirect) (THIS_ IRMABuffer* pHost,
175 UINT16 nPort) PURE;
177 /* NetworkRedirect is called by a PlayerConnectionAdviseSink to redirect
178 * this player to another URL. Note: This method is only available for
179 * redirecting an RTSP player connection to another RTSP URL.
181 STDMETHOD(NetworkRedirect) (THIS_ IRMABuffer* pURL,
182 UINT32 ulSecsFromNow) PURE;
184 /* Redirect is called by a PlayerConnectionAdviseSink to redirect
185 * this player to another URL on the same server. For example, if
186 * pPartialURL were set to "welcome.rm", the player would be redirected
187 * to "current_protocol://current_host:current_port/welcome.rm". This
188 * method works with both RTSP and PNA protocols.
190 STDMETHOD(Redirect) (THIS_ IRMABuffer* pPartialURL) PURE;
193 /****************************************************************************
195 * Interface:
197 * IRMAPlayerConnectionAdviseSinkManager
199 * Purpose:
201 * Manages the creation of IRMAPlayerConnectionAdviseSink objects
203 * IID_IRMAPlayerConnectionAdviseSinkManager:
205 * {00002603-0901-11d1-8B06-00A024406D59}
209 DEFINE_GUID(IID_IRMAPlayerConnectionAdviseSinkManager, 0x00002603, 0x901, 0x11d1, 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
211 #undef INTERFACE
212 #define INTERFACE IRMAPlayerConnectionAdviseSinkManager
214 DECLARE_INTERFACE_(IRMAPlayerConnectionAdviseSinkManager, IUnknown)
216 STDMETHOD(QueryInterface) (THIS_
217 REFIID riid,
218 void** ppvObj) PURE;
220 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
222 STDMETHOD_(ULONG,Release) (THIS) PURE;
224 STDMETHOD(CreatePlayerConnectionAdviseSink)
225 (THIS_
226 REF(IRMAPlayerConnectionAdviseSink*) pPCAdviseSink) PURE;
229 /****************************************************************************
231 * Interface:
233 * IRMAPlayerControllerProxyRedirect
235 * Purpose:
237 * QueryInterfaced from IRMAPlayerController. Allows 305 proxy redirect
238 * to be issued (as per RTSP spec).
240 * IID_IRMAPlayerControllerProxyRedirect:
242 * {00002607-0901-11d1-8B06-00A024406D59}
246 DEFINE_GUID(IID_IRMAPlayerControllerProxyRedirect, 0x00002607, 0x901, 0x11d1,
247 0x8b, 0x6, 0x0, 0xa0, 0x24, 0x40, 0x6d, 0x59);
249 #undef INTERFACE
250 #define INTERFACE IRMAPlayerControllerProxyRedirect
252 DECLARE_INTERFACE_(IRMAPlayerControllerProxyRedirect, IUnknown)
254 STDMETHOD(QueryInterface) (THIS_
255 REFIID riid,
256 void** ppvObj) PURE;
258 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
260 STDMETHOD_(ULONG,Release) (THIS) PURE;
263 * This URL is just a hostname / port. It must be formatted like this:
264 * "rtsp://audio.real.com:554/".
266 * NOTE: You can *only* call this method between OnURL() and OnURLDone().
267 * NOTE: This method only works on RTSP connections.
269 STDMETHOD(NetworkProxyRedirect) (THIS_ IRMABuffer* pURL) PURE;
272 #endif /* _RMAALLOW_H_ */