Re: Playlist requirements

Ed Sweetman <[email protected]> Sat, 25 Oct 2003 20:11:54 -0400
Newsgroups gmane.comp.audio.zinf.devel
Message-ID <[email protected]>
Kristian Kvilekval wrote:
> On Sat, 2003-10-25 at 11:46, David Hough wrote:
> 
>>On Sat, 25 Oct 2003 17:55:26 +0100, Robert Hart <[email protected]> 
>>wrote:
>>
>>
>>>On Sat, 2003-10-25 at 18:40, David Hough wrote:
>>>
>>>
>>>>I still believe that the metadata interface should be seperate from the
>>>>playlist/playlist manager as there is no reason why the playlist needs 
>>>>to
>>>>now any metadata about any url, apart from its child urls.
>>>
>>>I'm confused, you talk about the playlist being able to sort/randomise
>>>according to things like "Album", "Artist", (and by inference) date,
>>>genre, etc.
>>>
>>>Yet at the same time you seem to be saying that the playlist wont "know"
>>>this information....
>>>
>>
>>Thats a very good point. I hadn't considered exactly how such a randomise 
>>feature would be implemented. The point I was trying to get across though 
>>was why cache metadata in the playlist memory structure, when its much 
>>easier and uses less memory to just read it from the database/metadata 
>>catalog when its needed. And if you're just going to read the metadata on 
>>demand (usually on demand of the UI, although in the point you made it 
>>wouldn't always be from the UI) why confuse the playlist manager interface 
>>by having external functionality that has very little to do with playing a 
>>list of URLs.
>>
>>So, I was probably wrong to say that the playlist manager never needs to 
>>know this information, however just because it may actually need it 
>>internally occasionaly, does not mean that it should be used to provide 
>>the metadata interface.
> 
> 
> 
> I suggest keeping the static state of the playlist (the list of URL's)o
> different from the dynamic state of the playlist player i.e. the 
> current index, playmode (repeat etc), randomize, etc.   
> 
> The basic functionality common to all playlists is the list of
> urls functionality.     The next level of functionality is the 
> ability to interpret recursive playlists.  And finally, there
> is the dynamic level or the player playlist functionality.   
> 
> The UI is probably interesting in the base/recursive level.
> While the player would have all sorts of other information.
> 
> I see a hierarchy of playlists types or even keeping the 
> player (dynamic) info in the player itself.
> 
Nobody is debating the fact that there should be a class for the list 
itself and a container class that commands the list.  The point is to 
take as much functionality dealing with manipulation of information in 
the player away from the UI because it doesn't belong there.  The ui 
renders info it recieves, it should not be processing that information 
to create new functionality, or rather that should be very limited. It 
will cause a weak code architecture and means duplication of code 
functionality across all toolkits. I'm fairly sure you dont mean that so 
everything you've basically said here nobody is debating.


The last part though is something like i've implimented in my player 
already, although mine is a bit different.  An object that acts as the 
communication class across all subsystems, containing the run-state and 
all preferences and such of the entire player.  It lets me get around 
corner cases where a subsystem needs to know something about another 
subsystem but cannot speak directly because of heirarchy.  It also means 
i can create a vector of players each independent of eachother... which 
is pretty neat.   Something like what you want though, that kept all 
dynamic info of the player for would be a pretty big rewrite.



-------------------------------------------------------
This SF.net email is sponsored by: The SF.net Donation Program.
Do you like what SourceForge.net is doing for the Open
Source Community?  Make a contribution, and help us add new
features and functionality. Click here: http://sourceforge.net/donate/