- 13 Aug, 2009 1 commit
-
-
Max Kellermann authored
Replace decoder_control.notify with decoder_control.mutex and decoder_control.cond. Lock the mutex on all accesses to decoder_control.command and decoder_control.state.
-
- 23 Jul, 2009 1 commit
-
-
Max Kellermann authored
Don't abort the whole MPD process when the conversion fails. This has been a denial-of-service attack vector for years.
-
- 25 Jun, 2009 1 commit
-
-
Daniel Seuthe authored
-
- 26 Apr, 2009 1 commit
-
-
Max Kellermann authored
Database update was broken due to the dc.pipe!=NULL assertion. This assertion is only valid while MPD decodes a song, not during database update.
-
- 25 Apr, 2009 1 commit
-
-
Max Kellermann authored
dc.pipe must be non-NULL while the decoder thread is running. Ensure that with a load of assertions.
-
- 13 Apr, 2009 1 commit
-
-
Max Kellermann authored
When a new song starts playing, send its tag (song->tag) to the music pipe. This allows output plugins to render tags for all songs, not only those with embedded tags understood by the decoder plugin.
-
- 13 Mar, 2009 1 commit
-
-
Avuton Olrich authored
This updates the copyright header to all be the same, which is pretty much an update of where to mail request for a copy of the GPL and the years of the MPD project. This also puts all committers under 'The Music Player Project' umbrella. These entries should go individually in the AUTHORS file, for consistancy.
-
- 05 Mar, 2009 2 commits
-
-
Max Kellermann authored
Turn the music_pipe into a simple music_chunk queue. The music_chunk allocation code is moved to music_buffer, and is now managed with a linked list instead of a ring buffer. Two separate music_pipe objects are used by the decoder for the "current" and the "next" song, which greatly simplifies the cross-fading code.
-
Max Kellermann authored
Added music_pipe_allocate(), music_pipe_push() and music_pipe_cancel(). Those functions allow the caller (decoder thread in this case) to do its own chunk management. The functions music_pipe_flush() and music_pipe_tag() can now be removed.
-
- 01 Mar, 2009 1 commit
-
-
Max Kellermann authored
To aid debugging, print the audio format of the decoder plugin in a debug message, and print information about PCM conversion.
-
- 19 Feb, 2009 2 commits
-
-
Max Kellermann authored
The parameter name "wait" overlaps with the POSIX wait() function. Rename it.
-
Max Kellermann authored
Now that I've found this nice function in the GLib docs, we can finally remove our custom sleep function. Still all those callers of g_usleep() have to be migrated one day to use events, instead of regular polling.
-
- 15 Feb, 2009 1 commit
-
-
Max Kellermann authored
The decoder_plugin struct is used by both the MPD core and the decoder plugin implementations. Move it to a shared header file, to minimize header dependencies.
-
- 17 Jan, 2009 4 commits
-
-
Max Kellermann authored
One of the previous patches made MPD consume 100% CPU in a busy wait: when the music_pipe was full, it did not wait (with notify_wait()) for free chunks, because a variable has a different meaning now. Always pass "true" as the "wait" parameter.
-
Max Kellermann authored
-
Max Kellermann authored
Removed yet another superfluous buffer layer: return the PCM buffer from pcm_convert() instead of copying PCM data into the caller-supplied buffer.
-
Max Kellermann authored
Copy PCM data to the music_pipe_write() buffer, and apply replay gain / normalization to it, instead of manipulating the source buffer.
-
- 16 Jan, 2009 1 commit
-
-
Max Kellermann authored
Decoder plugins must not send partial frames.
-
- 15 Jan, 2009 1 commit
-
-
Max Kellermann authored
In NDEBUG, the parameter "decoder" is not used.
-
- 13 Jan, 2009 1 commit
-
-
Max Kellermann authored
When the decoder thread is waiting for free chunks in the music pipe, don't ignore the STOP command. Just return dc.command without further checks.
-
- 07 Jan, 2009 1 commit
-
-
Max Kellermann authored
Free memory allocated by libsamplerate when the output or the decoder is closed.
-
- 04 Jan, 2009 1 commit
-
-
Max Kellermann authored
-
- 03 Jan, 2009 3 commits
-
-
Max Kellermann authored
The tag() method reads a tag from the stream. This replaces the meta_name and meta_title attributes.
-
Max Kellermann authored
This patch fixes a minor memory leak: when decoder_tag() attempted to send a merged tag object (created by tag_add_stream_tags()), and was interrupted by a decoder command, it did not free the temporary merged tag object.
-
Max Kellermann authored
-
- 24 Dec, 2008 1 commit
-
-
Max Kellermann authored
It is illegal to pass an empty audio buffer around. pcm_resample() sometimes seems to result in 0 samples, maybe related to libsamplerate. To work around that problem, add special checks after both pcm_convert() invocations. Removed the pcm_resample()==0 checks from pcm_convert().
-
- 24 Nov, 2008 1 commit
-
-
Thomas Jansen authored
-
- 21 Nov, 2008 2 commits
-
-
Max Kellermann authored
Refuse to play audio formats which are not supported by MPD.
-
Max Kellermann authored
Pushing buffers with a zero length into the MPD core causes failures; don't let them pass beyond the decoder plugi API.
-
- 18 Nov, 2008 1 commit
-
-
Max Kellermann authored
When a global audio format is configured (setting "audio_output_format"), decoder_data() overwrote the "length" parameter with the size of the output buffer (result of pcm_convert_size()). Declare a separate variable for the output buffer length.
-
- 15 Nov, 2008 1 commit
-
-
Max Kellermann authored
When the caller passes length==0, decoder_read() entered an endless loop. Check that condition before entering the "while" loop.
-
- 13 Nov, 2008 4 commits
-
-
Max Kellermann authored
When a command is sent while the decoder waits for a free chunk in the music pipe, it was not returned by decoder_data().
-
Max Kellermann authored
Prevent superfluous wakeups and a deadlock condition.
-
Max Kellermann authored
Seeking was somewhat broken in some decoder plugins because they sent empty chunks, and never got a command. Check the decoder command before doing anything else in decoder_data().
-
Max Kellermann authored
When the decoder receives a SEEK during initialization, it should ignore that for now. The old code made most decoders abort.
-
- 11 Nov, 2008 2 commits
-
-
Max Kellermann authored
Renamed functions and variables.
-
Max Kellermann authored
The assertion on dc.state in decoder_read() was too strict: when a decoder tried to call decoder_read() from tag_dup(), the decoder state was NONE. Allow this special case.
-
- 10 Nov, 2008 1 commit
-
-
Max Kellermann authored
Added a lot of assertions checking the state of the decoder plugin.
-
- 03 Nov, 2008 2 commits
-
-
Max Kellermann authored
Renamed variables and functions.
-
Max Kellermann authored
Before passing the first chunk to the audio output device, send the current song's tag.
-