- 04 Jan, 2013 3 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
- 02 Jan, 2013 1 commit
-
-
Max Kellermann authored
-
- 27 Sep, 2012 1 commit
-
-
Max Kellermann authored
-
- 25 Aug, 2012 1 commit
-
-
Max Kellermann authored
This commit reimplements the core of the "single" mode. Instead of doing the detection in the playlist code from the outside, it is moved to the player thread, which gets a new option called "border_pause". It will now pause playback exactly at the beginning of the new song, making the feature more reliable. Now that the player thread knows what will happen, it can suppress cross-fading. Fixes mantis tickets 0003055 and 0003166.
-
- 15 Aug, 2012 4 commits
-
-
Max Kellermann authored
Make sure the player "owns" the next_song object, so nobody else can free it.
-
Max Kellermann authored
Make sure the decoder "owns" the song object, so nobody else can free it.
-
Max Kellermann authored
Just in case "song" becomes invalid at some point.
-
Max Kellermann authored
Replaces _current_song().
-
- 08 Aug, 2012 4 commits
-
-
Max Kellermann authored
Rewrite of the pc_get_error_message() function, now using a GError object instead of the complicated "errored_song" attribute.
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
-
- 06 Oct, 2011 2 commits
-
-
Max Kellermann authored
Previously, the condition "defined(play_audio_format)" was used to see if an output device has been opened, but if the device had failed on startup, an assertion failure could occur. This patch adds a separate flag.
-
Max Kellermann authored
Common function that manages "player" attributes after audio_output_all_open() has returned.
-
- 05 Oct, 2011 2 commits
-
-
Max Kellermann authored
-
Max Kellermann authored
Don't read song.start_ms and song.end_ms, let the player thread manage this logic instead.
-
- 21 Sep, 2011 1 commit
-
-
Max Kellermann authored
When playing a CUE track, the player thread waited for the decoder to become ready, and then sent a SEEK command to the beginning of the CUE track. If that is near the start of the song file, and the track is short enough, the decoder could have finished decoding already at that point, and seeking fails. This commit makes this initial seek more robust: instead of letting the player thread deal with the difficult timings, let the decoder API emulate a SEEK command, and return it to the decoder plugin, as soon as the plugin finishes its initialization.
-
- 20 Jul, 2011 1 commit
-
-
Max Kellermann authored
-
- 31 Mar, 2011 1 commit
-
-
Jonathan Neuschäfer authored
These fixes were mostly generated with `codespell' [0] and manually reviewed. [0] http://git.profusion.mobi/cgit.cgi/lucas/codespell/
-
- 29 Jan, 2011 1 commit
-
-
Max Kellermann authored
-
- 10 Jan, 2011 3 commits
-
-
Max Kellermann authored
Remove the decoder dependency on player_control. All player_control was needed for is to signal the player thread, and we can do that with a simple GCond as well.
-
Max Kellermann authored
dc_new() allocates the object and returns it. dc_free() frees it (replaces dc_deinit()).
-
Max Kellermann authored
Allocate a player_control object where needed, and pass it around. Each "client" object is associated with a "player_control" instance. This prepares multi-player support.
-
- 07 Jan, 2011 3 commits
-
-
Max Kellermann authored
When a music_chunk to be crossfaded consists only of a tag, cross-fading is not possible, and led to an assertion failure. This patch just discards those, as if cross-fading was not enabled.
-
Max Kellermann authored
Until the decoder plugin has called decoder_initialized(), the player may not submit seek commands. This however could occur with a slow decoder and a CUE file with a virtual song offset. This patch adds another check.
-
Max Kellermann authored
-
- 05 Nov, 2010 4 commits
-
-
Max Kellermann authored
When one song is played twice, and the decoder is working on the second "instance", but the first should be seeked, the check in player_seek_decoder() may assume that it can reuse the decoder without exchanging pipes. The last thing was the mistake: the pipe pointer was different, which led to an assertion failure. This patch adds another check which exchanges the player pipe.
-
Max Kellermann authored
More abstraction for decoder_control.pipe.
-
Max Kellermann authored
Some abstraction for decoder_control.pipe access.
-
Max Kellermann authored
-
- 25 Sep, 2010 1 commit
-
-
Thomas Jansen authored
Replaced all occurrences of g_error() with MPD_ERROR() located in a new header file 'mpd_error.h'. This macro uses g_critical() to print the error message and then exits gracefully in contrast to g_error() which would internally call abort() to produce a core dump. The macro name is distinctive and allows to find all places with dubious error handling. The long-term goal is to get rid of MPD_ERROR() altogether. To facilitate the eventual removal of this macro it was added in a new header file rather than to an existing header file. This fixes #2995 and #3007.
-
- 08 May, 2010 1 commit
-
-
Tim Phipps authored
-
- 02 May, 2010 1 commit
-
-
Max Kellermann authored
Remove cross_fade_apply(), and call pcm_mix() in the output thread, mixing the chunk and chunk->other together.
-
- 21 Mar, 2010 1 commit
-
-
Tim Phipps authored
Adds mixrampdb and mixrampdelay commands. Reads MIXRAP_START and MIXRAMP_END tags from FLAC files and overlaps instead of crossfading.
-
- 17 Mar, 2010 1 commit
-
-
Max Kellermann authored
Previously, tags of the new song being cross-faded in were sent immediately. That can cause wrong information being displayed, because the "previous" song might send its tag at the end again, overriding the "next" song's tag. This patch saves & merges the tag of the next song, and sends it when cross-fading is finished, and the next song really starts.
-
- 10 Mar, 2010 1 commit
-
-
Max Kellermann authored
Did you ever accidently click "stop" while feeding a radio station? This option sets the output device to "pause" to disable the "close" method. It falls back to "pause" then, which is specific to the plugin. Some plugins implement it by feeding silence.
-
- 02 Jan, 2010 1 commit
-
-
Max Kellermann authored
Another quirk fixed: after the last chunk of a song has been played, the "elapsed_time" variable is set to the chunk's time stamp. When the client receives the PLAYER idle event and asks MPD for the current time stamp, MPD will return the last time stamp of the previous song when it hasn't played the first chunk of the current song yet.
-
- 01 Jan, 2010 1 commit
-
-
Avuton Olrich authored
-