RE: CN: www/2009/devdocs/XFP-SOD-CrossFadePlayer.doc

"Eric Hyche" <[email protected]>
Newsgroups gmane.comp.multimedia.helix.devel
Organization RealNetworks, Inc.
Message-ID <008b01c992ad$bf279690$3d76c3b0$@com>
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:[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
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.