1 /****************************************************************************
3 * $Id: rmagroup.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.
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 /****************************************************************************
42 * {0x00002400-0901-11d1-8B06-00A024406D59}
45 DEFINE_GUID(IID_IRMAGroup
, 0x00002400, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
46 0xa0, 0x24, 0x40, 0x6d, 0x59);
50 #define INTERFACE IRMAGroup
52 DECLARE_INTERFACE_(IRMAGroup
, IUnknown
)
57 STDMETHOD(QueryInterface
) (THIS_
61 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
63 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
68 /************************************************************************
70 * IRMAGroup::SetGroupProperties
72 * Set any group specific information like Title Author
75 STDMETHOD(SetGroupProperties
) (THIS_
76 IRMAValues
* /*IN*/ pProperties
) PURE
;
78 /************************************************************************
80 * IRMAGroup::GetGroupProperties
82 * Get any group specific information. May return NULL.
84 STDMETHOD_(IRMAValues
*, GetGroupProperties
) (THIS
) PURE
;
85 /************************************************************************
87 * IRMAGroup::GetTrackCount
89 * Get the number of tracks within this group.
91 STDMETHOD_(UINT16
,GetTrackCount
) (THIS
) PURE
;
93 /************************************************************************
97 * Get ith track in this group
99 STDMETHOD(GetTrack
) (THIS_
100 UINT16
/*IN*/ uTrackIndex
,
101 REF(IRMAValues
*) /*OUT*/ pTrack
) PURE
;
103 /************************************************************************
105 * IRMAGroup::AddTrack
107 * Add Tracks to the group.
109 STDMETHOD(AddTrack
) (THIS_
110 IRMAValues
* /*IN*/ pTrack
) PURE
;
112 /************************************************************************
114 * IRMAGroup::RemoveTrack
116 * Remove an already added track
118 STDMETHOD(RemoveTrack
) (THIS_
119 UINT16
/*IN*/ uTrackIndex
) PURE
;
123 /****************************************************************************
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);
142 #define INTERFACE IRMAGroupManager
144 DECLARE_INTERFACE_(IRMAGroupManager
, IUnknown
)
149 STDMETHOD(QueryInterface
) (THIS_
153 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
155 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
158 * IRMAGroupManager methods
161 /************************************************************************
163 * IRMAGroupManager::CreateGroup
167 STDMETHOD(CreateGroup
) (REF(IRMAGroup
*) pGroup
) PURE
;
169 /************************************************************************
171 * IRMAGroupManager::GetGroupCount
173 * Get the number of groups within the presentation.
175 STDMETHOD_(UINT16
,GetGroupCount
) (THIS
) PURE
;
177 /************************************************************************
179 * IRMAGroupManager::GetGroup
181 * Get ith group in the presentation
183 STDMETHOD(GetGroup
) (THIS_
184 UINT16
/*IN*/ uGroupIndex
,
185 REF(IRMAGroup
*) /*OUT*/ pGroup
) PURE
;
187 /************************************************************************
189 * IRMAGroupManager::SetCurrentGroup
191 * Play this group in the presentation.
193 STDMETHOD(SetCurrentGroup
) (THIS_
194 UINT16
/*IN*/ uGroupIndex
) PURE
;
196 /************************************************************************
198 * IRMAGroupMgr::GetCurrentGroup
200 * Get the current group index
202 STDMETHOD(GetCurrentGroup
) (THIS_
203 REF(UINT16
) /*OUT*/ uGroupIndex
) PURE
;
205 /************************************************************************
207 * IRMAGroupManager::AddGroup
209 * Add a group to the presentation.
211 STDMETHOD(AddGroup
) (THIS_
212 IRMAGroup
* /*IN*/ pGroup
) PURE
;
214 /************************************************************************
216 * IRMAGroupManager::RemoveGroup
218 * Remove an already added group
220 STDMETHOD(RemoveGroup
) (THIS_
221 UINT16
/*IN*/ uGroupIndex
) PURE
;
224 /************************************************************************
226 * IRMAGroupManager::AddSink
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 /************************************************************************
237 * IRMAGroupManager::RemoveSink
241 STDMETHOD(RemoveSink
) (THIS_
242 IRMAGroupSink
* /*IN*/ pGroupSink
) PURE
;
244 /************************************************************************
246 * IRMAGroup::GetPresentationProperties
248 * Get any presentation information. May return NULL.
250 STDMETHOD_(IRMAValues
*, GetPresentationProperties
) (THIS
) PURE
;
252 /************************************************************************
254 * IRMAGroup::SetPresentationProperties
256 * Set any presentation information like Title Author
259 STDMETHOD(SetPresentationProperties
) (THIS_
260 IRMAValues
* /*IN*/ pProperties
) PURE
;
265 /****************************************************************************
276 * {0x00002402-0901-11d1-8B06-00A024406D59}
279 DEFINE_GUID(IID_IRMAGroupSink
, 0x00002402, 0x901, 0x11d1, 0x8b, 0x6, 0x0,
280 0xa0, 0x24, 0x40, 0x6d, 0x59);
284 #define INTERFACE IRMAGroupSink
286 DECLARE_INTERFACE_(IRMAGroupSink
, IUnknown
)
291 STDMETHOD(QueryInterface
) (THIS_
295 STDMETHOD_(ULONG
,AddRef
) (THIS
) PURE
;
297 STDMETHOD_(ULONG
,Release
) (THIS
) PURE
;
300 * IRMAGroupSink methods
302 /************************************************************************
304 * IRMAGroupSink::GroupAdded
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 /************************************************************************
314 * IRMAGroupSink::GroupRemoved
316 * Notification of a group being removed from the presentation.
318 STDMETHOD(GroupRemoved
) (THIS_
319 UINT16
/*IN*/ uGroupIndex
,
320 IRMAGroup
* /*IN*/ pGroup
) PURE
;
322 /************************************************************************
324 * IRMAGroupSink::AllGroupsRemoved
326 * Notification that all groups have been removed from the
327 * current presentation.
329 STDMETHOD(AllGroupsRemoved
) (THIS
) PURE
;
331 /************************************************************************
333 * IRMAGroupSink::TrackAdded
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 /************************************************************************
344 * IRMAGroupSink::TrackRemoved
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 /************************************************************************
355 * IRMAGroupSink::TrackStarted
357 * Notification of a track being started (to get duration, for
360 STDMETHOD(TrackStarted
) (THIS_
361 UINT16
/*IN*/ uGroupIndex
,
362 UINT16
/*IN*/ uTrackIndex
,
363 IRMAValues
* /*IN*/ pTrack
) PURE
;
365 /************************************************************************
367 * IRMAGroupSink::TrackStopped
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 /************************************************************************
379 * IRMAGroupSink::CurrentGroupSet
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_*/