c1fbcd03f0
git-svn-id: https://svn.musicpd.org/mpd/trunk@1098 09075e82-0dd4-0310-85a5-a0d7c8717e4f
77 lines
2.7 KiB
Plaintext
77 lines
2.7 KiB
Plaintext
1) play streams
|
|
a) make seekings non-blocking:
|
|
1) player:
|
|
a) first check that seekWhere isn't already buffered
|
|
b) if not current song, stop it and play the song to
|
|
seek
|
|
c) set dc->seek and dc->seekWhere if not already set
|
|
and set elapsed time to seekWhere and
|
|
then set pc->seek = 0
|
|
d) while seeking just continue to play buffer
|
|
until seek is done
|
|
2) decoder:
|
|
a) seek no longer blocks so don't worry about checking
|
|
seek in blocking portions, only check stop!
|
|
b) yay, less code mess!
|
|
b) bufferInput in outputBuffer waiting!
|
|
1) implement some sort of callback mechanism for this
|
|
for abstraction sake
|
|
c) deal with pausing better
|
|
1) seekable, on resuming pause, check if we need to reconnect,
|
|
jumping to offset
|
|
2) if seekable, at some point after init, mark this!
|
|
3) if not seekable, reset buffer, and elapsedTime when
|
|
unpaused
|
|
d) put some sort of error reporting for streaming/inputStream!
|
|
e) ogg streams
|
|
f) fetch metadata and store in DecoderControl and pass to
|
|
PlayerControl
|
|
1) eventually deal with icy-metadata
|
|
2) parse metadata on the fly in decoders
|
|
g) command for dealing with the changing metadata, currentsonginfo
|
|
or something
|
|
|
|
2) how to deal with streams and the db
|
|
a) should streams be stored in the db?
|
|
b) handle url playlists!
|
|
1) have one fd for opening playlists in a url (allow only
|
|
loading of one of these at a time).
|
|
2) check for new data on it in the main while(select()) loop
|
|
3) block client requesting the log until the load is finished
|
|
4) need a timeout for this, 10 seconds, configurable?
|
|
|
|
3) streaming and playing in general
|
|
a) put errors in error stuff of PlayerControl and report this to
|
|
status and print to error logs
|
|
b) make sure all decoders can handle bad seeks well (need to fix mp3)
|
|
|
|
4) resampling audio for compatibility, and better gapless/crossfading
|
|
a) use resampling from oggenc (is it fast enough for realtime?)
|
|
|
|
5) when writing combined interface for all decodes to use, be sure to add a
|
|
common function and abstrct dealing with DecoderControl * and put
|
|
cycleLogFiles in there, so we cycleLogFiles while decoding, not just when
|
|
decoding has stopped.
|
|
|
|
6) ACK error codes
|
|
|
|
7) cleanup main()
|
|
|
|
8) handle '\n' in filenames
|
|
|
|
9) allow "add" command to load playlists, then depricate "load" command, this
|
|
will be benneficial for adding m3u url's
|
|
|
|
10) compute average replaygain to use for non-replaygain songs
|
|
|
|
|
|
Post-1.0
|
|
--------
|
|
1) crosslink "list" stuff, for example, artists are crosslinked to alubms and
|
|
vice versa, this way you can do list album artists or list artist albums, this
|
|
will make life easier when we add genre and other metadata
|
|
|
|
2) rewrite linked list impelmentation to be more flexible
|
|
a) remove "key" stuff
|
|
b) allow assigning a compare function for a list
|