Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
2013-11-06 | DecoderInternal: wake up the player thread in _flush_chunk() | Max Kellermann | 1 | -4/+0 | |
Merge duplicate code. | |||||
2013-10-28 | MusicChunk: return WritableBuffer | Max Kellermann | 1 | -7/+8 | |
2013-10-28 | decoder_control: rename to DecoderControl | Max Kellermann | 1 | -10/+10 | |
2013-10-26 | DecoderControl: move code/attributes to new class MixRampInfo | Max Kellermann | 1 | -4/+2 | |
2013-10-25 | ReplayGainInfo: refactor to a class | Max Kellermann | 1 | -5/+6 | |
2013-10-25 | ReplayGainInfo: use CamelCase for struct name | Max Kellermann | 1 | -2/+2 | |
2013-10-23 | input_stream: rename struct to InputStream | Max Kellermann | 1 | -12/+11 | |
2013-10-21 | decoder: rename the struct to "Decoder" | Max Kellermann | 1 | -90/+86 | |
2013-10-19 | *: use references instead of pointers | Max Kellermann | 1 | -83/+82 | |
2013-10-19 | *: use nullptr instead of NULL | Max Kellermann | 1 | -38/+38 | |
2013-10-02 | replay_gain_*.h: rename to *.hxx | Max Kellermann | 1 | -1/+1 | |
2013-10-02 | Log: new logging library API | Max Kellermann | 1 | -13/+10 | |
Prepare to migrate away from GLib. Currently, we're still using GLib as a backend. | |||||
2013-09-27 | DecoderControl: convert "enum decoder_state" to strictly-typed enum | Max Kellermann | 1 | -8/+8 | |
2013-09-27 | DecoderCommand: convert to strictly-typed enum | Max Kellermann | 1 | -25/+25 | |
2013-09-26 | MusicBuffer: expose the C++ API | Max Kellermann | 1 | -2/+2 | |
2013-09-26 | MusicPipe: expose the C++ API | Max Kellermann | 1 | -2/+2 | |
2013-09-05 | InputLegacy: move functions to the input_stream class | Max Kellermann | 1 | -7/+7 | |
2013-09-04 | util/Error: new error passing library | Max Kellermann | 1 | -12/+10 | |
Replaces GLib's GError. | |||||
2013-08-04 | *: use gcc.h macros instead of GLib | Max Kellermann | 1 | -7/+7 | |
2013-08-03 | audio_format: convert to C++ | Max Kellermann | 1 | -15/+13 | |
2013-07-31 | DecoderAPI: pass rvalue reference to decoder_tag() | Max Kellermann | 1 | -4/+3 | |
Avoid duplicating the tag. | |||||
2013-07-30 | tag: convert to C++ | Max Kellermann | 1 | -22/+19 | |
2013-07-28 | song: convert header to C++ | Max Kellermann | 1 | -1/+1 | |
2013-07-28 | decoder_api: convert to C++ | Max Kellermann | 1 | -1/+1 | |
2013-01-31 | pcm_convert: convert to C++ | Max Kellermann | 1 | -4/+5 | |
2013-01-30 | audio_{parser,config}: convert to C++ | Max Kellermann | 1 | -5/+1 | |
2013-01-28 | InputStream: store references instead of pointers | Max Kellermann | 1 | -1/+1 | |
2013-01-27 | DecoderControl, InputStream: use Mutex/Cond instead of GMutex/GCond | Max Kellermann | 1 | -7/+7 | |
2013-01-26 | input_stream: forward-declare the struct | Max Kellermann | 1 | -0/+1 | |
Hide the definition from C code, to prepare the transition to C++. | |||||
2013-01-21 | DecoderControl: move functions into the class | Max Kellermann | 1 | -9/+9 | |
2013-01-07 | decoder_api.h, ...: add "extern C" | Max Kellermann | 1 | -2/+2 | |
2013-01-05 | DecoderAPI: don't use replay_gain_get_real_mode() | Max Kellermann | 1 | -1/+5 | |
replay_gain_get_real_mode() accesses dangerous globals. Let's just use the global variable replay_gain_mode, and assume "AUTO" means "TRACK". At this point, this is the best we can do, because neither the decoder nor the player should know about the current replay gain mode. This is applied as a filter in the output thread. | |||||
2013-01-05 | DecoderAPI: _replay_gain() returns void | Max Kellermann | 1 | -7/+3 | |
Let the function decoder_replay_gain() update decoder_control::replay_gain_db instead of letting each decoder plugin take care for that. | |||||
2013-01-04 | MusicChunk: move functions to methods | Max Kellermann | 1 | -5/+5 | |
2013-01-04 | buffer, pipe: convert to C++ | Max Kellermann | 1 | -3/+3 | |
2013-01-04 | decoder_*: convert to C++ | Max Kellermann | 1 | -12/+14 | |
2012-03-21 | audio_format: remove the reverse_endian attribute | Max Kellermann | 1 | -3/+0 | |
Eliminate support for reverse endian samples from the MPD core. This moves a lot of complexity to the plugins that really need it (only ALSA and CDIO currently). | |||||
2012-02-13 | decoder_api: check state before emitting initial seek command | Max Kellermann | 1 | -0/+6 | |
This fixes seeking in the vorbis decoder during MPD startup. | |||||
2011-11-27 | decoder_api: cancel initial seek when song is not seekable | Max Kellermann | 1 | -0/+6 | |
Fixes assertion failure. | |||||
2011-10-10 | decoder_api: convert data to host byte order | Max Kellermann | 1 | -0/+3 | |
2011-10-10 | audio: rename audio.[ch] to audio_config.[ch] | Max Kellermann | 1 | -1/+1 | |
2011-10-06 | decoder_api: call _prepare_initial_seek() in decoder_tag() | Max Kellermann | 1 | -1/+1 | |
This checks both conditions: pending and running. Fixes yet another assertion failure! | |||||
2011-10-06 | decoder_api: move code to _prepare_initial_seek() | Max Kellermann | 1 | -7/+31 | |
.. and add a few code comments. | |||||
2011-10-05 | decoder_control: add attributes start_ms, end_ms | Max Kellermann | 1 | -4/+4 | |
Don't read song.start_ms and song.end_ms, let the player thread manage this logic instead. | |||||
2011-10-05 | decoder_api: don't copy tag to pipe during initial seek | Max Kellermann | 1 | -3/+8 | |
Fixes one more assertion failure. | |||||
2011-10-04 | decoder_api: clear initial_seek_running on error | Max Kellermann | 1 | -1/+3 | |
Fixes possible assertion failure. | |||||
2011-09-22 | decoder_api: emulate SEEK command for initial seek to CUE track | Max Kellermann | 1 | -6/+57 | |
When playing a CUE track, the player thread waited for the decoder to become ready, and then sent a SEEK command to the beginning of the CUE track. If that is near the start of the song file, and the track is short enough, the decoder could have finished decoding already at that point, and seeking fails. This commit makes this initial seek more robust: instead of letting the player thread deal with the difficult timings, let the decoder API emulate a SEEK command, and return it to the decoder plugin, as soon as the plugin finishes its initialization. | |||||
2011-09-16 | input_stream: non-blocking I/O | Max Kellermann | 1 | -3/+16 | |
Add GMutex, GCond attributes which will be used by callers to conditionally wait on the stream. Remove the (now-useless) plugin method buffer(), wait on GCond instead. Lock the input_stream before each method call. Do the same with the playlist plugins. | |||||
2011-09-16 | decoder_api: remove the loop from decoder_read() | Max Kellermann | 1 | -16/+10 | |
This was useless, because input_stream_read() blocks until data is available. Calling it in a loop doesn't make sense. | |||||
2011-09-16 | decoder_api: move code to decoder_check_cancel_read() | Max Kellermann | 1 | -12/+28 | |