- 09 Mar, 2009 13 commits
-
-
Max Kellermann authored
When a PAUSE command is received while the decoder starts, don't open the audio device when the decoder becomes ready. It's pointless, because MPD will close if after that.
-
Max Kellermann authored
-
Max Kellermann authored
Moved some more cruft out of do_play().
-
Max Kellermann authored
Moved some cruft out of do_play().
-
Max Kellermann authored
Preparation for the next patch: since the output devices stay open even when the player thread stops playing, we will need a persistent music buffer.
-
Max Kellermann authored
audio_output_open() is only called by audio_output_update(). Don't export it.
-
Max Kellermann authored
When a music chunk is freed (returned to the buffer), poison its memory.
-
Max Kellermann authored
If the header valgrind/memcheck.h is available, add VALGRIND_MAKE_MEM_NOACCESS() and VALGRIND_MAKE_MEM_UNDEFINED() support, which enables nice warnings in the valgrind memory checker.
-
Max Kellermann authored
Memory poisoning is useful for marking memory regions as "undefined". This poisoning only enabled in the debug build (!NDEBUG).
-
Max Kellermann authored
This is similar to the MPD 0.14 patch "wait 10 seconds before reopening a failed device", which only covered open() failures. This patch adds the same feature for play().
-
Jochen Keil authored
Until now every flac file got removed unconditionally (and then re-added) whenever the update command was issued. Now there is a check if we need to that, so the file will only be removed if there is a embedded cuesheet in that file
-
Jochen Keil authored
So far only seekpoints are supported, so no proper tagging yet except for track number and track length. Tagging should be done by parsing the cue sheet which is often embedded as vorbis comment in flac files. Furthermore the pathname should be configurable like "%A - %t - %T", where %A means Artist, %t track number and %T Title or so.
-
Jochen Keil authored
[mk: fixed whitespace errors; use delete_song() instead of songvec_delete()]
-
- 08 Mar, 2009 4 commits
-
-
Max Kellermann authored
In !NDEBUG, remember which audio_format is stored in every chunk and every pipe. Check the audio_format of every new data block appended to the music_chunk, and the format of every new chunk appended to the music_pipe.
-
Max Kellermann authored
-
Max Kellermann authored
This patch fixes a theoretical (but practically impossible) flaw: the variable "buffer_time" may be uninitialized when it is used. Initialize the variable with snd_pcm_hw_params_get_buffer_time().
-
Max Kellermann authored
The default values for buffer_time and period_time were both capped by the hardware limits on practically all chips. The result was a period_time which was half as big as the buffer_time. On some chips, this led to lots of underruns when using a high sample rate (192 kHz), because MPD had very little time to send new samples to ALSA. A period time which is one fourth of the buffer time turned out to be much better. If no period_time is configured, see how much buffer_time the hardware accepts, and try to configure one fourth of it as period_time, instead of hard-coding the default period_time value. This is yet another attempt to provide a solution which is valid for all sound chips. Using the SND_PCM_NONBLOCK flag also seemed to solve the underruns, but put a lot more CPU load to MPD.
-
- 07 Mar, 2009 17 commits
-
-
Max Kellermann authored
Sometimes, audio_output_update() isn't called for the second device when the first one has succeeded. The patch "audio_output_all_update() returns bool" broke it, because the boolean evaluation ended after the first "true".
-
Max Kellermann authored
-
Max Kellermann authored
Another "remove redundant explicit $enableval assignments" breakage.
-
Max Kellermann authored
Added two assertions.
-
Max Kellermann authored
When the decoder chunk is empty in decoder_flush_chunk(), don't push it into the music pipe - return it to the music buffer instead. An empty chunk in the pipe wastes resources for no advantage.
-
Max Kellermann authored
-
Max Kellermann authored
The value of music_chunk.next is undefined for a chunk returned by music_pipe_shift(). For more pedantic debugging, poison the reference before returning the chunk.
-
Max Kellermann authored
music_pipe_peek() is similar to music_pipe_shift(), but doesn't remove the chunk. This allows it to be used with a "const" music_pipe.
-
Max Kellermann authored
audio_output_all_update() returns true when there is at least open output device which is open.
-
David Guibert authored
This patch follows the commit 21bb10f4. >From Max Kellermann: > I removed the daemonization changes in main.c. Please explain why you > changed that. If you need it for some reason, make that a separate > patch with a good description of your rationale. > That's the biggest flaw of your code: it opens the mixer device in the > init() method, while the open() method is empty. When the pulse > daemon is not available (either during MPD startup or when it dies > while MPD runs), the plugin will not even attempt to reconnect to > pulse. Please move the code to the open() method, to make that work. I changed the daemonize call as the fork losts the connection to the pulse server. According to your remark, the init() method should be moved to the open() ones. With the modification, mpd is able to reconnect the pulse mixer after restarting the pulseaudio daemon. Signed-off-by: David Guibert <david.guibert@gmail.com> Signed-off-by: Max Kellermann <max@duempel.org>
-
Max Kellermann authored
Added two new team members. Updated the description of older contributors. Moved José Anarch and Patrik Weiskircher to "former developers".
-
Max Kellermann authored
-
Max Kellermann authored
Shorten some log messages, let GLib add the "pulse_mixer" prefix.
-
Max Kellermann authored
Don't include output_api.h - this is not an output plugin. Added missing explicit conf.h and string.h includes.
-
David Guibert authored
This patch introduces the mixer for the pulse output. Technically speaking, the pulse index is needed to get or set the volume. You must define callback fonctions to get this index since the pulse output in mpd is done using the simpe api. The pulse simple api does not provide the index of the newly defined output. So callback fonctions are associated to the pulse context. The list of all the sink input is then retreived. Then we select the name of the mpd pulse output and control its volume by its associated index number. Signed-off-by: Patrice Linel <patnathanael@gmail.com> Signed-off-by: David Guibert <david.guibert@gmail.com> [mk: fixed whitespace errors and broke long lines; removed daemonization changes from main.c]
-
Max Kellermann authored
When the init() method of a mixer plugin fails, mixer_new() dereferences the NULL pointer.
-
Max Kellermann authored
The patch "remove redundant explicit $enableval assignments" broke several options with non-standard variable names.
-
- 06 Mar, 2009 6 commits
-
-
Avuton Olrich authored
-
Avuton Olrich authored
-
Avuton Olrich authored
Most strings have no capitalization at the beinning, make all strings non-capital.
-
Avuton Olrich authored
-
Avuton Olrich authored
-
Avuton Olrich authored
-