- 12 Mar, 2009 6 commits
-
-
Max Kellermann authored
When an audio output device is disabled, also disable its mixer.
-
Max Kellermann authored
No caller must ever pass an invalid device number to mixer_control_setvol() or mixer_control_getvol().
-
Max Kellermann authored
-
Max Kellermann authored
-
Max Kellermann authored
Very small start..
-
Max Kellermann authored
-
- 11 Mar, 2009 6 commits
-
-
Eric Wollesen authored
-
Diego Elio 'Flameeyes' Pettenò authored
Passing libraries through LDFLAGS is a mistake that causes link to fail when using --as-needed. Since the ld arguments are positional, so are libtool's. Use the proper variable, thus, to pass the libraries.
-
Max Kellermann authored
-
Max Kellermann authored
Replaced both player_stop_decoder() invocations with player_dc_stop(), which also cleans up the pipe.
-
Max Kellermann authored
In the "CANCEL" command handler, the decoder is stopped twice: first by player_dc_stop(), then by dc_stop(). Remove the latter.
-
Max Kellermann authored
-
- 10 Mar, 2009 17 commits
-
-
Max Kellermann authored
This function was part of a workaround which we don't need anymore.
-
Jochen Keil authored
After adding the container_scan() method the update_regular_file() method was quite hard to read. Now there's update_container_file() which deals with container files. That way normal container files (i.e. without embedded tracks) are handled by the old code like a regular file. This will fix some of the odd behaviour observed.
-
Max Kellermann authored
snd_pcm_writei() returns the type snd_pcm_sframes_t, not int. Use the correct variable type.
-
Max Kellermann authored
If the PCM handle gets disconnected, don't close and clear it in alsa_recover(). The MPD core will call alsa_close() anyway. This way, we can always assume that alsa_data.pcm is always valid.
-
Max Kellermann authored
After a seek, wait until enough new chunks are decoded before starting playback. If this takes too long, send silence chunks to the audio outputs meanwhile.
-
Max Kellermann authored
When the audio outputs are closed, also clear the audio format. If we don't do this, every call to audio_output_all_update() will open the device, even if it's meant to be paused.
-
Max Kellermann authored
Don't allow reopening an audio device after pause with audio_format==NULL, force the caller to provide the audio_format each time.
-
Max Kellermann authored
When playback is unpaused, pass the audio_format to audio_output_all_open(). Don't assume that output_all.c remembers the previous audio format. Also check if there has been an audio format yet.
-
Max Kellermann authored
-
Max Kellermann authored
Check audio_output.command after each sub-chunk has been played. It discards the rest of the chunk, but since all commands make the device stop anyway, this is not a problem, but part of the improvement. This improves the latency of audio output commands.
-
Max Kellermann authored
When seeking into a new song, and the decoder for the new song fails to start up, MPD forgot to send the "command_finished" signal to the main thread.
-
Max Kellermann authored
When pc.next_song is reset due to a decoder failure, also reset the player.queued flag. player.queued must not be true when there is no pc.next_song.
-
Max Kellermann authored
Reset player.xfade and player.buffering from within player_seek_decoder(), not in the player_process_command() switch statement.
-
Max Kellermann authored
A larger chunk size means less overhead for managing them. 4 kB seems to be a reasonable choice: it contains 23 ms of 44.1 kHz 16 bit stereo data, or 3 ms of 192 kHz 24 bit stereo data. The original value of 1020 seemed to be too small, there were quite a lot of system calls and context switches.
-
Max Kellermann authored
The "run_output" program can be used to test an audio output plugin in an isolated environment.
-
Max Kellermann authored
-
Max Kellermann authored
The music_buffer is a global variable, and must not be freed until the player thread exits.
-
- 09 Mar, 2009 11 commits
-
-
Max Kellermann authored
Instead of passing individual buffers to audio_output_all_play(), pass music_chunk objects. Append all those chunks asynchronously to a music_pipe instance. All output threads may then read chunks from this pipe. This reduces MPD's internal latency by an order of magnitude.
-
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().
-