Re: Requiurements next try
Kristian Kvilekval <[email protected]> Thu, 30 Oct 2003 13:14:12 -0800
| Newsgroups | gmane.comp.audio.zinf.devel |
|---|---|
| Message-ID | <1067548452.9590.91.camel@krispc> |
On Thu, 2003-10-30 at 07:02, Ralf Engels wrote: > Requirements for Playlist handling in zinf. > Sub-requirements are denoted with a point e.g. 3.1 > Technical requirements are with two point 3.3.3 > Please break these into 1. player requirements 2. UI requirements (we have several ui, some do no playlist management at all) 3. metadata requirements > r1. there shall be a list with songs > *** Big question: should this be a tree of songs? please vote > *** This was still not clarified. Should we have a tree? > *** One vote for no from ralf r1. Might read: " the player will accept playlists (possibly recursive)" > r1.1 If we have a list then the songs in the list can be identified by > their position in the list. For what purpose? Strike requirement or make clear the context. > r2. it shall be possible to add songs to the list. UI requirement > r2.1 it shall be possible to add the same song multiple times to the list player list requirement > r2.2 it shall be possible to add songs at an arbitrary position in the list UI > r3. it shall be possible to remove songs in the list. UI > r4. the list shall be independent of the ui > r5. the ui shall be informed about changes in the list How about playerlist will support position queries (and support asynchronous notifications). > r5.1.1 the list shall send events to registered listeners Implementation requirement > r5.1.2 the list shall not transmit pointers with the events Ditto >r6 It shall be possible to select the next song in different ways UI requirements > r6.1 It shall be possible to set this way > r6.2 it shall be possible to set way by filename > r6.3 by path > r6.4 by songname > r6.5 by artist > r6.6 by album > r6.7 by year > r6.8 by random All of these can be summed up as "selection through valid metadata" > r7. the player shall use the list to determine the next song to be played. > r8. it shall be possible to save the list UI > r9. it shall be possible to load the list UI (also should read edit a playlist that is not currently playing). > r10. different formats for the playlist shall be supported > r11. It shall be possible to dynamically generate lists (how?) Using the metadata database (add a zinf url i.e. zinf://url?genre=blues) > r13. The base-code shall support the ui when it want's to display a list > of songs What? > r13.1 There shall be different views on the playlist, e.g. by album, > sorted, ... UI > r13.2 The code shall support the ui moving items around UI > r13.3 The code shall support the ui searching for meta information UI > > > > Playlist item requirements > r101. the URI shall be the unique identifier of an item. URI is full > qualifyer data like file://hallo.mp3 There is a problem when dealing with CD tracks this way, since all of them are currently labelled as "file://1.cda"... We might get around this using TRM IDs evenutally. > r102. the meta data of the item shall be determined on demand How about "the most current metadata will be used" > r102.1 No data shall be duplicated. > This is really a general rule for programming. To general, caching is good thing as long as it's consistent > r102.1 (logical extension) meta data of items with the same URL shall > not be doublicated > > > Metadatabase > r102.1.1 We shall have a meta-database > r102.1.2 The meta-database shall have a function getMeta( string URI ) > r102.1.3 The meta-database shall have a function setMeta( string URI ) > r102.1.4 The meta-database shall have a reference count so that unused > metas can be deleted In the new metadata system, we copy reference counted string around quite a bit. Since these are already sharing storage, I don't think it's necessary to add another layer of ref-counting. > r102.1.5 The meta-database shall have a function refereMeta( string URI ) > r102.1.6 The meta-database shall have a function unrefereMeta( string URI ) > r102.1.7 All operations on the meta-database should be faster or equal > then O(n) And n is what? The size of the database? How about when used with the music brainz database. > r102.1.8 A map shall be used for meta-database O(log n) A map interface map(url) -> metadata or map(metatag) -> data?? > r103. Playlist items should be able to reference other playlists > inline. (i.edynamic playlists) > r104. It should be possible to read metadata from various sources > (I don't want to write a technical requirement for this (Ralf)) See early mails "music catalog overhaul" > r105. Metadata should only be read from an external source on demand Or at least from a consistent cache. -- Kristian G. Kvilekval email:[email protected] office:(805)893-4276 http://www.cs.ucsb.edu/~kris ------------------------------------------------------- This SF.net email is sponsored by: SF.net Giveback Program. Does SourceForge.net help you be more productive? Does it help you create better code? SHARE THE LOVE, and help us help YOU! Click Here: http://sourceforge.net/donate/