aboutsummaryrefslogtreecommitdiffstats
path: root/src/DecoderThread.cxx (unfollow)
Commit message (Collapse)AuthorFilesLines
2013-10-17Song: GetURI() returns std::stringMax Kellermann1-9/+5
2013-10-14fs/Path: add method IsAbsolute()Max Kellermann1-1/+1
2013-10-02Log: new logging library APIMax Kellermann1-6/+7
Prepare to migrate away from GLib. Currently, we're still using GLib as a backend.
2013-10-02filesystem/Path: use std::stringMax Kellermann1-1/+1
2013-09-27DecoderControl: convert "enum decoder_state" to strictly-typed enumMax Kellermann1-14/+14
2013-09-27DecoderCommand: convert to strictly-typed enumMax Kellermann1-12/+12
2013-09-05Tag, ...: move to libtag.aMax Kellermann1-1/+1
2013-09-05InputLegacy: move functions to the input_stream classMax Kellermann1-11/+8
2013-09-04Tag*: move libtag.a sources to src/tag/Max Kellermann1-1/+1
2013-09-04util/Error: new error passing libraryMax Kellermann1-16/+14
Replaces GLib's GError.
2013-08-07Makefile.am: move sources to libsystem.aMax Kellermann1-1/+1
2013-08-07FatalError: new library to replace mpd_error.hMax Kellermann1-2/+2
2013-07-30tag: convert to C++Max Kellermann1-2/+2
2013-07-29ape: convert to C++Max Kellermann1-4/+1
2013-07-28song: convert header to C++Max Kellermann1-7/+7
2013-07-28decoder_api: convert to C++Max Kellermann1-3/+3
2013-04-17use g_thread_new() if GLib is recent enoughMax Kellermann1-2/+5
Fixes deprecation warnings.
2013-04-08uri: convert to C++Max Kellermann1-1/+1
2013-01-30decoder_list: convert to C++Max Kellermann1-1/+1
2013-01-28InputStream: use std::stringMax Kellermann1-2/+3
2013-01-27DecoderControl, InputStream: use Mutex/Cond instead of GMutex/GCondMax Kellermann1-2/+2
2013-01-26input_stream: forward-declare the structMax Kellermann1-1/+1
Hide the definition from C code, to prepare the transition to C++.
2013-01-22Path: move to fs subdirectoryDenis Krjuchkov1-1/+1
2013-01-21DecoderControl: move functions into the classMax Kellermann1-28/+28
2013-01-18Path: new class "Path" wraps filesystem path stringsMax Kellermann1-1/+2
2013-01-10DecoderThread: signal the client after decoder finishesMax Kellermann1-0/+2
Fixes potential dead lock bug.
2013-01-07decoder_api.h, ...: add "extern C"Max Kellermann1-3/+3
2013-01-04DecoderThread: move code to destructorMax Kellermann1-13/+0
2013-01-04DecoderInternal: move initializers to constructorMax Kellermann1-9/+3
2013-01-04decoder_*: convert to C++Max Kellermann1-2/+2
2013-01-02mapper: convert to C++Max Kellermann1-1/+1
2013-01-02{decoder,player}_thread: convert to C++Max Kellermann1-19/+11
2012-09-25decoder_control: remove MixRamp debug messagesMax Kellermann1-1/+0
These are confusing, and since MixRamp development has ceased, not useful to anybody.
2012-08-15decoder_thread: create GError for mapper failureMax Kellermann1-0/+3
Fixes crash.
2012-08-08decoder_control: add GError attributeMax Kellermann1-1/+17
2012-05-29decoder_api: log the decoder plugin nameMax Kellermann1-0/+4
2011-10-13decoder_thread: add missing stdio.h includeMax Kellermann1-0/+1
2011-10-09decoder/{pcm,dsdiff}: add missing stdio.h includeMax Kellermann1-0/+1
2011-10-05decoder_control: add attributes start_ms, end_msMax Kellermann1-1/+1
Don't read song.start_ms and song.end_ms, let the player thread manage this logic instead.
2011-09-22decoder_api: emulate SEEK command for initial seek to CUE trackMax Kellermann1-0/+2
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-16input_stream: non-blocking I/OMax Kellermann1-24/+20
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-01-29copyright year 2011Max Kellermann1-1/+1
2011-01-16decoder_thread: fix assertion failure at song endMax Kellermann1-2/+1
Don't finish the current command twice. This bug was never noticed, but was revealed by a new assertion check.
2011-01-10decoder_control: store GCond object, not a player_controlMax Kellermann1-2/+1
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-10decoder_thread: move code to decoder_command_finished_locked()Max Kellermann1-8/+19
2011-01-10player_control: removed the global variable "pc"Max Kellermann1-3/+3
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-11-18decoder_thread: load APE replay gain from music filesMax Kellermann1-0/+15
2010-09-25eliminate g_error() usageThomas Jansen1-1/+2
Replaced all occurrences of g_error() with MPD_ERROR() located in a new header file 'mpd_error.h'. This macro uses g_critical() to print the error message and then exits gracefully in contrast to g_error() which would internally call abort() to produce a core dump. The macro name is distinctive and allows to find all places with dubious error handling. The long-term goal is to get rid of MPD_ERROR() altogether. To facilitate the eventual removal of this macro it was added in a new header file rather than to an existing header file. This fixes #2995 and #3007.
2010-05-08mixramp: Adjust MixRamp threshold to account for ReplayGain.Tim Phipps1-0/+2
2010-03-21Add support for MixRamp tagsTim Phipps1-0/+11
Adds mixrampdb and mixrampdelay commands. Reads MIXRAP_START and MIXRAMP_END tags from FLAC files and overlaps instead of crossfading.