Hi, this is the patch set I promised yesterday: it moves all audio outputs into separate threads, where they can play the current chunk at the same time, instead of sending each chunk separately to all outputs one after another.
After a few tweaks, testing was positive. There is still a lot left which can be done asynchronously, e.g. initialization (asynchronous connect to shoutcast server, etc.). Max Max Kellermann (15): notify: declare "struct notify" notify: make notify_init() failures fatal notify: added notify_deinit() notify: added macro NOTIFY_INITIALIZER output: one thread per audio output output: pass audio_format to plugin.init() and plugin.open() output: set audio_output->open=1 in audio_output_task() output: added audio_output_get_name() output: added audio_output_closed() output: make "struct audio_output" opaque for output plugins output: document the audio_output elements output: document the audio_output_plugin methods output: call send_tag() only if device is on output: semi-asynchronous playback output: removed DEVICE_ON, DEVICE_OFF Makefile.am | 4 + audio.c | 118 +++++++++++++++++++++++------------ audioOutputs/audioOutput_alsa.c | 37 ++++------- audioOutputs/audioOutput_ao.c | 45 ++++++------- audioOutputs/audioOutput_fifo.c | 41 +++++------- audioOutputs/audioOutput_jack.c | 64 ++++++++++--------- audioOutputs/audioOutput_mvp.c | 7 -- audioOutputs/audioOutput_null.c | 46 ++++++++----- audioOutputs/audioOutput_oss.c | 54 +++++++--------- audioOutputs/audioOutput_osx.c | 9 -- audioOutputs/audioOutput_pulse.c | 63 +++++++++--------- audioOutputs/audioOutput_shout.c | 60 +++++++++--------- decoder_control.c | 5 + decoder_control.h | 2 main.c | 4 + main_notify.c | 8 ++ main_notify.h | 2 notify.c | 27 ++++---- notify.h | 21 ++++-- output_api.c | 33 +++++++++ output_api.h | 99 +++++++++++++++++++++-------- output_control.c | 94 +++++++++++++++------------- output_control.h | 4 - output_init.c | 8 ++ output_internal.h | 130 +++++++++++++++++++++++++++++++++++++++ output_thread.c | 129 ++++++++++++++++++++++++++++++++++++++ output_thread.h | 26 +++++++ player_control.c | 5 + player_control.h | 2 29 files changed, 798 insertions(+), 349 deletions(-) ------------------------------------------------------------------------- This SF.Net email is sponsored by the Moblin Your Move Developer's challenge Build the coolest Linux based applications with Moblin SDK & win great prizes Grand prize is a trip for two to an Open Source event anywhere in the world http://moblin-contest.org/redirect.php?banner_id=100&url=/ _______________________________________________ Musicpd-dev-team mailing list Musicpd-dev-team@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/musicpd-dev-team