Blur Optimization. [Part 6]
[xy_vsfilter.git] / include / realmedia / rmagroup.h
blob14ad71b2598eb41119566f40e29f3514fa3ae99c
1 /****************************************************************************
2 *
3 * $Id: rmagroup.h 7 2003-05-30 02:18:02Z gabest $
4 *
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 * Group Interface.
18 #ifndef _IRMAGROUP_H_
19 #define _IRMAGROUP_H_
21 /****************************************************************************
23 * Forward declarations of some interfaces defined/used here-in.
25 typedef _INTERFACE IRMAGroup IRMAGroup;
26 typedef _INTERFACE IRMAGroupManager IRMAGroupManager;
27 typedef _INTERFACE IRMAGroupSink IRMAGroupSink;
28 typedef _INTERFACE IRMAValues IRMAValues;
31 /****************************************************************************
33 * Interface:
35 * IRMAGroup
37 * Purpose:
40 * IID_IRMAGroup:
42 * {0x00002400-0901-11d1-8B06-00A024406D59}
45 DEFINE_GUID(IID_IRMAGroup, 0x00002400, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
46 0xa0, 0x24, 0x40, 0x6d, 0x59);
49 #undef INTERFACE
50 #define INTERFACE IRMAGroup
52 DECLARE_INTERFACE_(IRMAGroup, IUnknown)
55 * IUnknown methods
57 STDMETHOD(QueryInterface) (THIS_
58 REFIID riid,
59 void** ppvObj) PURE;
61 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
63 STDMETHOD_(ULONG,Release) (THIS) PURE;
66 * IRMAGroup methods
68 /************************************************************************
69 * Method:
70 * IRMAGroup::SetGroupProperties
71 * Purpose:
72 * Set any group specific information like Title Author
73 * Copyright etc.
75 STDMETHOD(SetGroupProperties) (THIS_
76 IRMAValues* /*IN*/ pProperties) PURE;
78 /************************************************************************
79 * Method:
80 * IRMAGroup::GetGroupProperties
81 * Purpose:
82 * Get any group specific information. May return NULL.
84 STDMETHOD_(IRMAValues*, GetGroupProperties) (THIS) PURE;
85 /************************************************************************
86 * Method:
87 * IRMAGroup::GetTrackCount
88 * Purpose:
89 * Get the number of tracks within this group.
91 STDMETHOD_(UINT16,GetTrackCount) (THIS) PURE;
93 /************************************************************************
94 * Method:
95 * IRMAGroup::GetTrack
96 * Purpose:
97 * Get ith track in this group
99 STDMETHOD(GetTrack) (THIS_
100 UINT16 /*IN*/ uTrackIndex,
101 REF(IRMAValues*) /*OUT*/ pTrack) PURE;
103 /************************************************************************
104 * Method:
105 * IRMAGroup::AddTrack
106 * Purpose:
107 * Add Tracks to the group.
109 STDMETHOD(AddTrack) (THIS_
110 IRMAValues* /*IN*/ pTrack) PURE;
112 /************************************************************************
113 * Method:
114 * IRMAGroup::RemoveTrack
115 * Purpose:
116 * Remove an already added track
118 STDMETHOD(RemoveTrack) (THIS_
119 UINT16 /*IN*/ uTrackIndex) PURE;
123 /****************************************************************************
125 * Interface:
127 * IRMAGroupManager
129 * Purpose:
132 * IID_IRMAGroupManager:
134 * {0x00002401-0901-11d1-8B06-00A024406D59}
137 DEFINE_GUID(IID_IRMAGroupManager, 0x00002401, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
138 0xa0, 0x24, 0x40, 0x6d, 0x59);
141 #undef INTERFACE
142 #define INTERFACE IRMAGroupManager
144 DECLARE_INTERFACE_(IRMAGroupManager, IUnknown)
147 * IUnknown methods
149 STDMETHOD(QueryInterface) (THIS_
150 REFIID riid,
151 void** ppvObj) PURE;
153 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
155 STDMETHOD_(ULONG,Release) (THIS) PURE;
158 * IRMAGroupManager methods
161 /************************************************************************
162 * Method:
163 * IRMAGroupManager::CreateGroup
164 * Purpose:
165 * Create a group
167 STDMETHOD(CreateGroup) (REF(IRMAGroup*) pGroup) PURE;
169 /************************************************************************
170 * Method:
171 * IRMAGroupManager::GetGroupCount
172 * Purpose:
173 * Get the number of groups within the presentation.
175 STDMETHOD_(UINT16,GetGroupCount) (THIS) PURE;
177 /************************************************************************
178 * Method:
179 * IRMAGroupManager::GetGroup
180 * Purpose:
181 * Get ith group in the presentation
183 STDMETHOD(GetGroup) (THIS_
184 UINT16 /*IN*/ uGroupIndex,
185 REF(IRMAGroup*) /*OUT*/ pGroup) PURE;
187 /************************************************************************
188 * Method:
189 * IRMAGroupManager::SetCurrentGroup
190 * Purpose:
191 * Play this group in the presentation.
193 STDMETHOD(SetCurrentGroup) (THIS_
194 UINT16 /*IN*/ uGroupIndex) PURE;
196 /************************************************************************
197 * Method:
198 * IRMAGroupMgr::GetCurrentGroup
199 * Purpose:
200 * Get the current group index
202 STDMETHOD(GetCurrentGroup) (THIS_
203 REF(UINT16) /*OUT*/ uGroupIndex) PURE;
205 /************************************************************************
206 * Method:
207 * IRMAGroupManager::AddGroup
208 * Purpose:
209 * Add a group to the presentation.
211 STDMETHOD(AddGroup) (THIS_
212 IRMAGroup* /*IN*/ pGroup) PURE;
214 /************************************************************************
215 * Method:
216 * IRMAGroupManager::RemoveGroup
217 * Purpose:
218 * Remove an already added group
220 STDMETHOD(RemoveGroup) (THIS_
221 UINT16 /*IN*/ uGroupIndex) PURE;
224 /************************************************************************
225 * Method:
226 * IRMAGroupManager::AddSink
227 * Purpose:
228 * Add a sink to get notifications about any tracks or groups
229 * being added to the presentation.
231 STDMETHOD(AddSink) (THIS_
232 IRMAGroupSink* /*IN*/ pGroupSink) PURE;
235 /************************************************************************
236 * Method:
237 * IRMAGroupManager::RemoveSink
238 * Purpose:
239 * Remove Sink
241 STDMETHOD(RemoveSink) (THIS_
242 IRMAGroupSink* /*IN*/ pGroupSink) PURE;
244 /************************************************************************
245 * Method:
246 * IRMAGroup::GetPresentationProperties
247 * Purpose:
248 * Get any presentation information. May return NULL.
250 STDMETHOD_(IRMAValues*, GetPresentationProperties) (THIS) PURE;
252 /************************************************************************
253 * Method:
254 * IRMAGroup::SetPresentationProperties
255 * Purpose:
256 * Set any presentation information like Title Author
257 * Copyright etc.
259 STDMETHOD(SetPresentationProperties) (THIS_
260 IRMAValues* /*IN*/ pProperties) PURE;
265 /****************************************************************************
267 * Interface:
269 * IRMAGroupSink
271 * Purpose:
274 * IID_IRMAGroupSink:
276 * {0x00002402-0901-11d1-8B06-00A024406D59}
279 DEFINE_GUID(IID_IRMAGroupSink, 0x00002402, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
280 0xa0, 0x24, 0x40, 0x6d, 0x59);
283 #undef INTERFACE
284 #define INTERFACE IRMAGroupSink
286 DECLARE_INTERFACE_(IRMAGroupSink, IUnknown)
289 * IUnknown methods
291 STDMETHOD(QueryInterface) (THIS_
292 REFIID riid,
293 void** ppvObj) PURE;
295 STDMETHOD_(ULONG,AddRef) (THIS) PURE;
297 STDMETHOD_(ULONG,Release) (THIS) PURE;
300 * IRMAGroupSink methods
302 /************************************************************************
303 * Method:
304 * IRMAGroupSink::GroupAdded
305 * Purpose:
306 * Notification of a new group being added to the presentation.
308 STDMETHOD(GroupAdded) (THIS_
309 UINT16 /*IN*/ uGroupIndex,
310 IRMAGroup* /*IN*/ pGroup) PURE;
312 /************************************************************************
313 * Method:
314 * IRMAGroupSink::GroupRemoved
315 * Purpose:
316 * Notification of a group being removed from the presentation.
318 STDMETHOD(GroupRemoved) (THIS_
319 UINT16 /*IN*/ uGroupIndex,
320 IRMAGroup* /*IN*/ pGroup) PURE;
322 /************************************************************************
323 * Method:
324 * IRMAGroupSink::AllGroupsRemoved
325 * Purpose:
326 * Notification that all groups have been removed from the
327 * current presentation.
329 STDMETHOD(AllGroupsRemoved) (THIS) PURE;
331 /************************************************************************
332 * Method:
333 * IRMAGroupSink::TrackAdded
334 * Purpose:
335 * Notification of a new track being added to a group.
337 STDMETHOD(TrackAdded) (THIS_
338 UINT16 /*IN*/ uGroupIndex,
339 UINT16 /*IN*/ uTrackIndex,
340 IRMAValues* /*IN*/ pTrack) PURE;
342 /************************************************************************
343 * Method:
344 * IRMAGroupSink::TrackRemoved
345 * Purpose:
346 * Notification of a track being removed from a group.
348 STDMETHOD(TrackRemoved) (THIS_
349 UINT16 /*IN*/ uGroupIndex,
350 UINT16 /*IN*/ uTrackIndex,
351 IRMAValues* /*IN*/ pTrack) PURE;
353 /************************************************************************
354 * Method:
355 * IRMAGroupSink::TrackStarted
356 * Purpose:
357 * Notification of a track being started (to get duration, for
358 * instance...)
360 STDMETHOD(TrackStarted) (THIS_
361 UINT16 /*IN*/ uGroupIndex,
362 UINT16 /*IN*/ uTrackIndex,
363 IRMAValues* /*IN*/ pTrack) PURE;
365 /************************************************************************
366 * Method:
367 * IRMAGroupSink::TrackStopped
368 * Purpose:
369 * Notification of a track being stopped
372 STDMETHOD(TrackStopped) (THIS_
373 UINT16 /*IN*/ uGroupIndex,
374 UINT16 /*IN*/ uTrackIndex,
375 IRMAValues* /*IN*/ pTrack) PURE;
377 /************************************************************************
378 * Method:
379 * IRMAGroupSink::CurrentGroupSet
380 * Purpose:
381 * This group is being currently played in the presentation.
383 STDMETHOD(CurrentGroupSet) (THIS_
384 UINT16 /*IN*/ uGroupIndex,
385 IRMAGroup* /*IN*/ pGroup) PURE;
391 #endif /*_IRMAGROUP_H_*/