Commit message (Collapse) | Author | Files | Lines | ||
---|---|---|---|---|---|
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 | |
2011-09-14 | decoder_internal: don't call input_stream_buffer() | Max Kellermann | 1 | -8/+7 | |
This is not necessary since all relevant input plugins have been moved to the I/O thread, and there is no remaining useful buffer() implementation. This also fixes a busy loop when playing radio. | |||||
2011-01-29 | copyright year 2011 | Max Kellermann | 1 | -1/+1 | |
2011-01-10 | decoder_control: store GCond object, not a player_control | Max Kellermann | 1 | -9/+6 | |
Remove the decoder dependency on player_control. All player_control was needed for is to signal the player thread, and we can do that with a simple GCond as well. | |||||
2011-01-10 | player_control: removed the global variable "pc" | Max Kellermann | 1 | -6/+6 | |
Allocate a player_control object where needed, and pass it around. Each "client" object is associated with a "player_control" instance. This prepares multi-player support. | |||||
2010-05-30 | filter/replay_gain: added option "replaygain_limit" | Daniel Seuthe | 1 | -1/+2 | |
2010-05-18 | decoder_api: return effective replay gain | Daniel Seuthe | 1 | -1/+1 | |
Pay attention to the ReplayGain mode "auto" and the replay_gain_missing_preamp parameter inside of decoder_replay_gain(). | |||||
2010-05-08 | mixramp: Adjust MixRamp threshold to account for ReplayGain. | Tim Phipps | 1 | -2/+14 | |
2010-03-21 | Add support for MixRamp tags | Tim Phipps | 1 | -0/+12 | |
Adds mixrampdb and mixrampdelay commands. Reads MIXRAP_START and MIXRAMP_END tags from FLAC files and overlaps instead of crossfading. | |||||
2010-03-17 | decoder_api: use the correct format to calculate elapsed time | Max Kellermann | 1 | -1/+1 | |
When decoder->timestamp is calculated, the PCM data is already converted to out_audio_format; using in_audio_format may cause funny speedups/slowdowns. | |||||
2010-02-17 | replay_gain: reimplement as a filter plugin | Max Kellermann | 1 | -10/+17 | |
Apply the replay gain in the output thread. This means a new setting will be active instantly, without going through the whole music pipe. And we might have different replay gain settings for each audio output device. |