aboutsummaryrefslogtreecommitdiffstats
path: root/src/playlist/plugins/CuePlaylistPlugin.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2014-02-19cue/CueParser: move to playlist/Max Kellermann1-1/+1
2014-01-24Input*: move to input/Max Kellermann1-1/+1
2014-01-23playlist/*: move to playlist/plugins/Max Kellermann1-2/+2
2014-01-13copyright year 2014Max Kellermann1-1/+1
2014-01-09DetachedSong: fork of struct SongMax Kellermann1-3/+3
From now on, struct Song will be used by the database only, and DetachedSong will be used by everybody else. DetachedSong is easier to use, but Song has lower overhead.
2013-11-28include cleanup using iwyuMax Kellermann1-4/+1
2013-10-28*: use nullptr instead of NULLMax Kellermann1-4/+4
2013-10-23input_stream: rename struct to InputStreamMax Kellermann1-3/+3
2013-10-02Log: new logging library APIMax Kellermann1-3/+0
Prepare to migrate away from GLib. Currently, we're still using GLib as a backend.
2013-09-05Tag, ...: move to libtag.aMax Kellermann1-1/+1
2013-09-05PlaylistPlugin: add interface SongEnumeratorMax Kellermann1-29/+14
Replaces struct playlist_provider.
2013-09-05InputLegacy: move functions to the input_stream classMax Kellermann1-1/+0
2013-09-03input_stream.h: rename to InputLegacy.hxxMax Kellermann1-1/+1
2013-07-30tag: convert to C++Max Kellermann1-1/+1
2013-07-28song: convert header to C++Max Kellermann1-3/+3
2013-05-12text_input_stream: convert to classDenis Krjuchkov1-10/+6
2013-04-09cue_parser: convert to C++Max Kellermann1-10/+8
2013-04-09playlist/cue: add constructor/destructorMax Kellermann1-11/+13
2013-01-27playlist/*: convert to C++Max Kellermann1-15/+21
2012-02-10cue_parser: new line based CUE sheet parserMax Kellermann1-61/+28
To replace libcue, the unmaintained and crashy library.
2011-09-16input_stream: non-blocking I/OMax Kellermann1-1/+2
Add GMutex, GCond attributes which will be used by callers to conditionally wait on the stream. Remove the (now-useless) plugin method buffer(), wait on GCond instead. Lock the input_stream before each method call. Do the same with the playlist plugins.
2011-01-29copyright year 2011Max Kellermann1-1/+1
2010-06-25playlist/cue: last track ends at end of fileMax Kellermann1-3/+2
libcue's track_get_length() returns 0 for the last track, because that information is not available in the CUE sheet. This makes MPD quit playing the last track immediately. If we set "song.end_ms=0", MPD will play the track until the end of the song file, which is what we want.
2010-04-01cue: fix code styleOrivej Desh1-5/+4
2010-03-28cue: prepend pregap to the beginning of the trackOrivej Desh1-2/+13
.. rather then append to the end of the previous one Cuebreakpoints from the cuetools package has three modes of operation, and the default is to append pregap (INDEX 00) to the end of the previous track. This is the behavior most compliant to the existing cue files. Here is the patch which fixes the issue. I borrowed bits of implementation from cuebreakpoints. I assumed that the whole audio file must be covered by head-to-head going tracks, which is how hardware CD players probably work. In cue_tag I changed rounding from rounding up to rounding down because the thing in mpd which calculates actual track duration (and current position) rounds it down, and I didn't want to see in my playlist values different from whose in a now-playing progress bar. I've compared the resultant mpd behaviour with "mplayer -ss MM:SS.MS" where the time was supplied by cuebreakpoints and noticed that mplayer started each track a bit earlier then mpd, though this was the same before the patch.
2009-12-31Update copyright notices.Avuton Olrich1-1/+1
2009-12-27playlist/cue: fill song.start_ms, .end_msMax Kellermann1-0/+3
This patch adds practical usefulness to the CUE playlist plugin.
2009-12-27playlist/cue: return the original song URIMax Kellermann1-10/+1
The caller should be responsible for building the absolute URI.
2009-12-16playlist: added CUE playlist pluginMax Kellermann1-0/+137
This plugin is the groundwork for MPD's future generic CUE sheet support. That's not complete yet, e.g. there is no way for a playlist plugin to address an arbitrary position within a music file.