aboutsummaryrefslogtreecommitdiffstats
path: root/src/OutputThread.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2013-11-06OutputControl: reduce the number of OutputThread wakeupsMax Kellermann1-1/+9
Wake up the OutputThread only if it hasn't already been woken up and if it isn't already in the playback loop.
2013-10-19*: use nullptr instead of NULLMax Kellermann1-41/+41
2013-10-17Thread/Thread: replacement library for GThreadMax Kellermann1-9/+6
2013-10-15gcc.h: rename to Compiler.hMax Kellermann1-1/+1
2013-10-02Log: new logging library APIMax Kellermann1-30/+30
Prepare to migrate away from GLib. Currently, we're still using GLib as a backend.
2013-09-26MusicPipe: expose the C++ APIMax Kellermann1-3/+3
2013-09-04util/Error: new error passing libraryMax Kellermann1-30/+24
Replaces GLib's GError.
2013-08-07Makefile.am: move sources to libsystem.aMax Kellermann1-1/+1
2013-08-07FatalError: new library to replace mpd_error.hMax Kellermann1-3/+2
2013-08-03audio_format: convert to C++Max Kellermann1-28/+24
2013-07-30tag: convert to C++Max Kellermann1-0/+1
2013-07-30output_api: convert to C++Max Kellermann1-1/+1
2013-07-30pcm_buffer: convert to C++Max Kellermann1-2/+1
2013-04-17use g_thread_new() if GLib is recent enoughMax Kellermann1-2/+5
Fixes deprecation warnings.
2013-04-17OutputInternal: use Mutex instead of GMutexMax Kellermann1-33/+30
2013-04-17output: convert to C++Max Kellermann1-5/+1
2013-04-09pcm_*: move to src/pcm/Max Kellermann1-1/+1
2013-02-02FilterInternal: convert struct filter to a OO interfaceMax Kellermann1-22/+20
2013-02-01filter: convert to C++Max Kellermann1-1/+1
2013-01-31pcm_*: convert to C++Max Kellermann1-1/+1
2013-01-30filter/convert: convert to C++Max Kellermann1-1/+1
2013-01-30{encoder,output}_api.h: allow compiling as C++Max Kellermann1-1/+1
2013-01-20PlayerControl: move functions into the classMax Kellermann1-1/+1
2013-01-10notify: convert to C++Max Kellermann1-2/+2
2013-01-07filter/replay_gain: convert to C++Max Kellermann1-1/+1
2013-01-04player_control.h: convert header to C++Max Kellermann1-1/+1
2013-01-04MusicChunk: move functions to methodsMax Kellermann1-2/+2
2013-01-04buffer, pipe: convert to C++Max Kellermann1-2/+3
2013-01-04output_*: convert to C++Max Kellermann1-13/+18
2012-09-25output: new option "tags" may be used to disable sending tagsMax Kellermann1-1/+1
Implements Mantis ticket 0003340.
2012-08-29decoder/mad, output_thread: add gcc_unlikely()Max Kellermann1-1/+1
2012-06-12audio-parser, output_thread: work around -Wmaybe-uninitializedMax Kellermann1-0/+5
False positives in gcc 4.7.
2011-10-20pcm_mix: return bool, make unimplemented format non-fatalMax Kellermann1-2/+6
Let the caller deal with a failure.
2011-10-10pcm_{mix,volume}: pass only sample_format to pcm_mix()Max Kellermann1-1/+1
The other audio_format attributes are not used.
2011-09-19output_plugin: the plugin allocates the audio_output objectMax Kellermann1-17/+14
Pass audio_output objects around instead of void pointers. This will give some more control to the plugin, and prepares for non-blocking audio outputs.
2011-09-01output_thread: reimplement CANCEL synchronizationMax Kellermann1-7/+1
The output thread could hang indefinitely after finishing CANCEL, because it could have missed the signal while the output was not unlocked in ao_command_finished(). This patch removes the wait() call after CANCEL, and adds the flag "allow_play" instead. While this flag is set, playback is skipped. With this flag, there will not be any excess wait() call after the pipe has been cleared. This patch fixes a bug that causes mpd to discontinue playback after seeking, due to the race condition described above.
2011-07-20output_thread: unlock the mutex while calling cancel()Max Kellermann1-1/+6
The method may take longer, and we shouldn't be holding the lock.
2011-03-16audio_format, output_thread: add more audio_format_valid() assertionsMax Kellermann1-0/+5
2011-01-29copyright year 2011Max Kellermann1-1/+1
2011-01-10include cleanupMax Kellermann1-0/+1
2011-01-10player_control: removed the global variable "pc"Max Kellermann1-1/+1
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.
2011-01-07output_thread: fix double lockMax Kellermann1-3/+0
During the whole output thread, the audio_output object is locked, and it is only unlocked while waiting for the GCond and while running a plugin method. The error handler in ao_play_chunk() attempted to lock the object again, which was code from MPD 0.15.x which should have been removed a long time ago.
2010-12-21add void casts to suppress "result unused" warnings (clang)Max Kellermann1-1/+1
2010-11-05output_plugin: add method delay()Max Kellermann1-0/+30
This method is used to reduce the delay of commands issued to the shout plugin.
2010-11-04output_thread: fix assertion failure due to race condition in OPENMax Kellermann1-1/+9
Change the assertion on "fail_timer==NULL" in OPEN to a runtime check. This assertion crashed when the output thread failed while the player thread was calling audio_output_open().
2010-11-04output_internal: protect attribute "fail_timer" with mutexMax Kellermann1-0/+5
2010-09-25eliminate g_error() usageThomas Jansen1-1/+2
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.
2010-08-19output_thread: fix race condition after CANCEL commandMax Kellermann1-0/+10
Clear the notification before finishing the CANCEL command, so the notify_wait() after that will always wait for the right notification, sent by audio_output_all_cancel().
2010-05-02output_thread: call replay gain filter manuallyMax Kellermann1-15/+57
Don't add it to the filter chain, because we need to apply replay gain before cross-fading with the next song. Add a second replay_gain filter which is used for the song being faded in (chunk->other).
2010-05-02player_thread: move cross-fading to output threadMax Kellermann1-0/+30
Remove cross_fade_apply(), and call pcm_mix() in the output thread, mixing the chunk and chunk->other together.