1 /****************************************************************************
3 * $Id: rmaasm.h 7 2003-05-30 02:18:02Z gabest $
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.
14 * RealMedia Architecture Interfaces for Adaptive Stream Management and
15 * Backchannel Support.
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 /****************************************************************************
40 * Backchannel interface to be used by renderers and implemented by
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);
51 #define INTERFACE IRMABackChannel
53 DECLARE_INTERFACE_(IRMABackChannel
, IUnknown
)
58 STDMETHOD(QueryInterface
) (THIS_
62 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
64 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
67 * IRMABackChannel method
70 /************************************************************************
72 * IRMABackChannel::PacketReady
74 * A back channel packet sent from Renderer to FileFormat plugin.
76 STDMETHOD(PacketReady
) (THIS_
77 IRMAPacket
* pPacket
) PURE
;
81 /****************************************************************************
89 * This interface is implemented by file formats so that they can
90 * act on ASM Subscribe and Unsubscribe actions.
94 * {00001501-0901-11d1-8B06-00A024406D59}
97 DEFINE_GUID(IID_IRMAASMSource
, 0x00001501, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
98 0xa0, 0x24, 0x40, 0x6d, 0x59);
101 #define INTERFACE IRMAASMSource
103 DECLARE_INTERFACE_(IRMAASMSource
, IUnknown
)
108 STDMETHOD(QueryInterface
) (THIS_
112 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
114 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
117 * IRMAASMSource methods
120 /************************************************************************
122 * IRMAASMSource::Subscribe
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 /************************************************************************
133 * IRMAASMSource::Unsubscribe
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 /****************************************************************************
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.
158 * {00001502-0901-11d1-8B06-00A024406D59}
161 DEFINE_GUID(IID_IRMAASMStream
, 0x00001502, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
162 0xa0, 0x24, 0x40, 0x6d, 0x59);
165 #define INTERFACE IRMAASMStream
167 DECLARE_INTERFACE_(IRMAASMStream
, IUnknown
)
172 STDMETHOD(QueryInterface
) (THIS_
176 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
178 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
181 * IRMAASMStream methods
184 /************************************************************************
186 * IRMAASMStream::AddASMStreamSink
188 * Add an advise sink for getting subscribe and unsubscribe
191 STDMETHOD(AddStreamSink
) (THIS_
192 IRMAASMStreamSink
* pASMStreamSink
) PURE
;
194 /************************************************************************
196 * IRMAASMStream::RemoveStreamSink
198 * Remove an advise sink for getting subscribe and unsubscribe
201 STDMETHOD(RemoveStreamSink
) (THIS_
202 IRMAASMStreamSink
* pASMStreamSink
) PURE
;
204 /************************************************************************
206 * IRMAASMStream::Subscribe
208 * Called by renderers and possibly even top level clients to
209 * inform the core to subscribe to a particular rule number for
212 STDMETHOD(Subscribe
) (THIS_
213 UINT16 uRuleNumber
) PURE
;
215 /************************************************************************
217 * IRMAASMStream::Unsubscribe
219 * Called by renderers and possibly even top level clients to
220 * inform the core to unsubscribe to a particular rule number for
223 STDMETHOD (Unsubscribe
) (THIS_
224 UINT16 uRuleNumber
) PURE
;
228 /****************************************************************************
235 * This is a advise sink for getting notification about subscriptions
236 * and unsubscriptions for a stream.
240 * {00001503-0901-11d1-8B06-00A024406D59}
243 DEFINE_GUID(IID_IRMAASMStreamSink
, 0x00001503, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
244 0xa0, 0x24, 0x40, 0x6d, 0x59);
247 #define INTERFACE IRMAASMStreamSink
249 DECLARE_INTERFACE_(IRMAASMStreamSink
, IUnknown
)
254 STDMETHOD(QueryInterface
) (THIS_
258 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
260 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
263 * IRMAASMStreamSink methods
266 /************************************************************************
268 * IRMAASMStreamSink::OnSubscribe
270 * Called to inform you that a subscribe has occurred.
272 STDMETHOD (OnSubscribe
) (THIS_
273 UINT16 uRuleNumber
) PURE
;
275 /************************************************************************
277 * IRMAASMStreamSink::OnUnsubscribe
279 * Called to inform you that a unsubscribe has occurred.
281 STDMETHOD (OnUnsubscribe
) (THIS_
282 UINT16 uRuleNumber
) PURE
;
285 #endif /*_RMAASM_H_*/