• Status Closed
  • Percent Complete
  • Task Type Patches
  • Category
  • Assigned To No-one
  • Operating System
  • Severity Low
  • Priority Very Low
  • Reported Version
  • Due in Version Undecided
  • Due Date Undecided
  • Votes
  • Private
Attached to Project: Rockbox
Opened by hardeeps - 2003-05-30
Last edited by zagor - 2003-07-04

FS#1401 - Dynamic playlists

Attached patch implements dynamic playlists – Individual tracks, directories (non-recursive) and playlists can be:
1) Inserted - added after current playing track
2) Appended - added to end of playlist
3) Queued - same as inserted except track is deleted after it has been played
4) Queue appended - queued at end of playlist

into the current playing playlist from the ON+PLAY menu. The number of tracks that can be added is limited by the max playlist size. Support has also been added for deleting tracks from the playlist although it’s currently only used internally for removing queued tracks (it’ll be more useful once a playlist viewer is implemented). Finally, the current dynamic playlist (excluding queued tracks) can be saved to disk (playlist options→save dynamic playlist).

Implementation details:
The majority of the changes are in the playlist code but there are minor changes throughout the app modules. Highlights include:
- The queue file has been replaced with a playlist control file (/.rockbox/.playlist_control) that contains all the commands applied to the playlist (see comments in playlist.c for description of commands and format of file).
- The only resume info now stored in the config block is the resume index and offset as everything else is saved in the control file.
- Several new APIs have been added to the playlist module and a few others have been changed/removed (NOTE: the bookmarking patch is currently incompatible with this patch because of the changes).
- A playlist menu has been created off of the main menu. It currently contains “Create Playlist” and “Save Dynamic Playlist”.
- Insert/Append/Queue added to ON+PLAY menu for mpa and m3u files as well as directories.
- I’ve attached a separate patch for the uisimulator changes required. This patch is incomplete as, even though everything builds, it outputs warnings and hasn’t been tested except for win32.

A lot of the credit should go to ricII as the implementation is based on his original design.

Closed by  zagor
2003-07-04 08:30
Reason for closing:  Accepted

Fixed a resume bug.

Anonymous Submitter commented on 2003-05-30 09:44

Yes! Just what I've been waiting for, I was actually going to
start coding my own system this weekend, but looks like you
beat me too it :D

By popular request, added support for recursive insertion of directories. This can be enabled/disabled from Playlist Options→Insert Directories Recursively.

Small update to simulator patch so that msvc project properly builds.

Uploaded dynamic_playlist4.diff which contains the following
- Directories are now sorted before being inserted. Sort order
is same as tree browser (alphabetical with directories before
mp3s in case of recursive insertion).
- Moved insert/append ahead of queue (personal preference).
- Updated to latest CVS.

Uploaded dynamic_playlist5.diff which contains the following changes:
- Users can now insert a track or directory before play has started. Play will begin as soon as insert completes.

Note: This is the last feature I intend to include in this patch… only bug fixes remain.

please update for use with latest CVS.

Uploaded dynamic_playlist6.diff which updates to latest CVS.

please update for use with latest CVS.

please ignore my last comment. I hit refresh on my browser
after work.

huwsy commented on 2003-06-06 18:44

pls submit to cvs. (in my oppinion its much better than the
current playlist/queue system.)

Uploaded dynamic_playlist7.diff which contains the following changes:
- Fixed a bug when deleting track from position 0.
- Fixed a bug that could result in a queued track incorrectly repeating if repeat-mode was all and playlist consisted primarily of queued tracks.

Uploaded dynamic_playlist8.diff which contains the following changes:
- Added insert first/queue first options to ON+PLAY menu which will insert track/dir/m3u immediately after current playing track, no matter what other tracks have been inserted/queued.
- Added default name when saving playlist (/dynamic.m3u).
- Updated to latest CVS.

Uploaded dynamic_playlist9.diff which contains the following changes:
- Fixed a serious bug when inserting a playlist while a playlist is playing that could result in a system hang.
- Fixed a bug that could result in tracks being inserted in wrong place when using a combination of insert/insert first.
- Fixed a bug that was forcing a directory load even when save playlist was cancelled.
- Small change to how directories/playlists are inserted to avoid possible silent play at the end of a track.
- Changed resume logic to allow for comments at the beginning of the control file.

Uploaded dynamic_playlist10.diff which contains the
following changes:
- Fixed a bug with recursive directory insert where
directories beginning with "." were not being inserted
- Added version parameter to playlist control file for
future updates
- Misc. cleanup

Uploaded dynamic_playlist11.diff which contains the
following changes:
- Updated to latest CVS - Misc. cleanup

Uploaded dynamic_playlist12.diff and
dynamic_playlist_simulator3.diff which updates to latest CVS.

Uploaded dynamic_playlist13.diff which contains the
following changes:
- Created "Playlist" sub-menu off of ON+PLAY menu and moved
all playlist options there.
- Renamed "Append" and "Queue Append" to "Insert Last" and
"Queue Last"
- Minor update to latest CVS


Available keyboard shortcuts


Task Details

Task Editing