RE: CN: www/2009/devdocs/XFP-SOD-CrossFadePlayer.doc
"Eric Hyche" <[email protected]>
| Newsgroups | gmane.comp.multimedia.helix.devel |
|---|---|
| Organization | RealNetworks, Inc. |
| Message-ID | <017601c992f2$2e015530$8a03ff90$@com> |
The context you get in RegisterContext is the media platform. The media playback engine (IHXClientEngine) is also a component plugin. So from that context you receive in RegisterContext, you can QI it for CCF and then use that CCF to do a CreateInstance on CLSID_IHXClientEngine. Eric ======================================= Eric Hyche ([email protected]) Principal Engineer RealNetworks, Inc. >-----Original Message----- >From: Nicholas Hart [mailto:[email protected]] >Sent: Thursday, February 19, 2009 6:27 PM >To: [email protected] >Cc: [email protected] >Subject: Re: [Helix-client-dev] CN: www/2009/devdocs/XFP-SOD-CrossFadePlayer.doc > >I have one more question about this. > >I've setup the plugin as described and the IHXCrossFadePlayer implements >IHXContextUser. Its RegisterContext() is called, but when I try to QI >the IUnknown context for IHXClientEngine I get a "no interface" error. > >Is there something else I should do to get the client engine? Or should >I use a different mechanism to pass the client engine in to the >crossfade player? > >thanks! > > > >Eric Hyche wrote: >> Nick, >> >> Sorry for the delay in providing feedback. Here's mine: >> >> 1) I like client/xfadeplayer instead of client/xfadeplugin, >> although whatever you choose will be fine. >> >> 2) Inside of client/xfadeplayer, I would have two sub-Umakefil's: >> one that builds the IHXCrossFadePlayer into a static lib, >> and the other sub-Umakefil that builds an Atlas component >> plugin (and links in the static lib built in the other >> sub-Umakefil). >> >> A component plugin is one that implements IHXComponentPlugin. >> This interface tells the media platform that this plugin >> can create certain CLSID_xxx's. It specifies how many CLSID_xxx's >> it can create via IHXComponentPlugin::GetNumComponents() >> and it provides the list of CLSID_xxx's via >> IHXComponentPlugin:: GetComponentInfoAtIndex(). >> >> The IHXCrossFadePlayer object should also implement IHXContextUser. >> That way, when the plugin handler creates it, it will automatically >> pass it the context via IHXContextUser::RegisterContext. >> >> See client/netwksvc/hxnetwksvcpln.cpp, client\autoupgdmgr\autoupgdpln.cpp, >> client\downloadmgr\downloadpln.cpp, or client\core\hxmedengpln.cpp >> for examples of component plugins. >> >> 3) When an application uses an IHXPlayer, then it: >> >> - loads the media platform >> - QI's the media platform for CCF >> - uses CCF to create IHXClientEngine >> - uses IHXClientEngine to create IHXPlayer >> >> So for IHXCrossFadePlayer, it will: >> >> - load the media platform >> - QI the media platform for CCF >> - use CCF to create IHXCrossFadePlayer. The plugin >> handler will make sure that the object gets a context >> via its IHXContextUser::RegisterContext() method. >> The context that it is passed will *be* the media >> platform. >> >> There is no need to specifically have the application create >> a client engine and pass it to the IHXCrossFadePlayer object. >> The crossfade player object has a context, so it can create >> a client engine internally itself and then manage the >> lifetime of that client engine. >> >> 4) Under "Testing Provisions", I would suggest a command-line >> test app in client/xfadeplayer/test. You could use splay >> as a starting point for that, or better yet, use my dirt-simple >> SHAPE (Simplest Helix Audio Player Ever) player at >> clientapps\samples\shape as a starting point. >> >> >> Eric >> >> ======================================= >> Eric Hyche ([email protected]) >> Principal Engineer >> RealNetworks, Inc. >> >> >>> -----Original Message----- >>> From: [email protected] [mailto:helix-client-dev- >[email protected]] >>> On Behalf Of Nicholas Hart >>> Sent: Wednesday, February 18, 2009 4:48 PM >>> To: [email protected] >>> Subject: Re: [Helix-client-dev] CN: www/2009/devdocs/XFP-SOD-CrossFadePlayer.doc >>> >>> there has been zero commentary on this proposal. >>> >>> I'm at a point where I'd like to start checking in some files. The >>> project is by no means finished, but I'd like the security of keeping my >>> work in CVS in case my hard drive gets fried. >>> >>> Should I start submitting some code reviews to this alias? >>> >>> Thanks! >>> >>> >>> >>> >>> Nicholas Hart wrote: >>>> Modified by: [email protected] >>>> Reviewed by: >>>> Date: 2/11/09 >>>> Project: internal RealNetworks product >>>> >>>> Synopsis: SOD for client feature to enable cross-fade and gap-less >>>> playback of audio clips >>>> >>>> Overview: I've committed a SOD for a new player object which uses the >>>> client engine to perform a cross-fade between two audio clips. >>>> >>>> Files Added: >>>> [File 1] >>>> https://helixcommunity.org/viewcvs/helix-client/www/2009/devdocs/XFP-SOD- >>> CrossFadePlayer.doc?view=log >>>> - SOD for this feature >>>> >>>> Platforms and Profiles Affected: >>>> none - SOD only >>>> >>>> Platforms and Profiles Functionality verified: >>>> none - SOD only >>>> >>>> Branch: HEAD >>>> >>>> Copyright assignment: >>>> >>>> 4. I am a RealNetworks employee or contractor >>>> >>>> >>>> >>>> _______________________________________________ >>>> Helix-client-dev mailing list >>>> [email protected] >>>> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev >>>> >>>> >>> _______________________________________________ >>> Helix-client-dev mailing list >>> [email protected] >>> http://lists.helixcommunity.org/mailman/listinfo/helix-client-dev >> >> >>