Commit Graph

1681 Commits

Author SHA1 Message Date
Chris Spiegel e7b211f2c0 Add TAK as a supported FFmpeg format. 2016-02-12 18:49:10 -08:00
Max Kellermann 2939fadd6a decoder/Control: use ScopeLock 2015-12-31 13:45:10 +01:00
Max Kellermann ef260377c3 decoder/Internal: use ScopeLock 2015-12-31 13:44:19 +01:00
Max Kellermann b9213df64b decoder/API: use ScopeLock 2015-12-31 13:43:35 +01:00
Max Kellermann aa7694047b decoder/Thread: pass InputStream errors to DecoderControl::error
Give MPD clients access to the error condition.
2015-12-31 13:39:13 +01:00
Max Kellermann e2bc63217a decoder/Thread: decoder_input_stream_open() returns std::unique_ptr<InputStream>
Fixes memory leak after InputStream::Check() failure.
2015-12-31 13:39:13 +01:00
Max Kellermann 6c5b8bcf9d decoder/Thread: log all errors 2015-12-31 13:38:35 +01:00
Max Kellermann e425fe3f97 decoder/Thread: use std::unique_ptr<InputStream> 2015-12-31 13:12:28 +01:00
Max Kellermann 6507993972 decoder/Thread: move decoder_command_finished_locked() to DecoderControl 2015-12-31 13:06:31 +01:00
Max Kellermann f081696f62 decoder/Thread: convert "int ret" to "bool success" 2015-12-31 13:02:55 +01:00
Max Kellermann 09157c3130 decoder/Thread: use ScopeLock in decoder_run_stream() 2015-12-31 13:01:49 +01:00
Max Kellermann 00626b1633 decoder/Thread: use std::unique_ptr<InputStream> 2015-12-31 13:01:03 +01:00
Max Kellermann 7e0cdbe502 decoder/Thread: use ScopeUnlock for exception-safety 2015-12-31 12:59:06 +01:00
Max Kellermann ca08902d71 decoder/Thread: use ScopeLock in TryDecoderFile() 2015-12-31 12:58:58 +01:00
Max Kellermann fad0e834d5 decoder/Thread: always unlock mutex before returning from TryDecoderFile()
Remove that surprising rule.
2015-12-31 12:57:35 +01:00
Max Kellermann dc76eb6139 decoder/Thread: mutex not locked for decoder_run_{file,stream}() 2015-12-31 12:42:02 +01:00
Max Kellermann 55e113c7a7 decoder/Thread: document locking rules 2015-12-31 12:36:32 +01:00
Max Kellermann b62f5e079e decoder/Thread: use ScopeLock for exception-safety 2015-12-31 12:36:00 +01:00
Max Kellermann faca8bc02a decoder/Control: Seek() returns Error information 2015-11-11 19:56:08 +01:00
Max Kellermann 76a9049739 decoder/Control: State::ERROR is illegal
The state ERROR can only be entered during decoder initialization, and
Seek() may only be called after initialization has been finished.
2015-11-11 17:46:06 +01:00
Max Kellermann 27bfcda20d decoder/Control: use switch/case in Seek() 2015-11-11 17:46:03 +01:00
Max Kellermann 733989a284 util/StringUtil: move comparison functions to StringCompare.cxx 2015-11-06 09:20:18 +01:00
Max Kellermann 94f850a588 Merge tag 'v0.19.11' 2015-10-27 11:05:47 +01:00
Max Kellermann 5719207dfa gme: don't loop forever, fall back to GME's default play length
Fixes http://bugs.musicpd.org/view.php?id=4432
2015-10-26 17:16:20 +01:00
Max Kellermann a84fbbe327 decoder/gme: free the gme_info_t as early as possible 2015-10-26 17:15:24 +01:00
Max Kellermann 3882c11450 decoder/gme: log the emulator type 2015-10-26 17:00:27 +01:00
Max Kellermann 08f77c2b60 decoder/gme: add option "accuracy" 2015-10-26 16:56:55 +01:00
Max Kellermann 93c97972b9 decoder/gme: call decoder_seek_error() on seek error 2015-10-26 16:32:39 +01:00
Max Kellermann 1958f78cc1 decoder/ffmpeg: fix crash due to wrong avio_alloc_context() call
Allocate the buffer dynamically using av_malloc(), and free
AVIOContext.buffer in the destructor, as mandated by the libavformat
documentation.

Fixes http://bugs.musicpd.org/view.php?id=4446
2015-10-26 13:06:29 +01:00
Max Kellermann 62bfb1a273 decoder/mad: reduce memory usage while scanning tags
Allocate the frame pointers only when actually decoding the file.
2015-10-19 13:12:36 +02:00
Max Kellermann a7ee64a25b decoder/mpcdec: use SampleTraits<SampleFormat::S24_P32>
Eliminates some duplicate code, and as a side effect, this works
around clang 3.8 compiler warning because a negative value was
shifted.
2015-10-16 18:12:32 +02:00
Max Kellermann 2a58f22649 decoder/mpcdec: use Clamp() 2015-10-16 18:11:42 +02:00
Max Kellermann 356c829b76 util/StringView: new utility class 2015-09-30 22:21:46 +02:00
Max Kellermann 7652a2986b client/Response: new Client wrapper class for writing responses 2015-08-12 08:41:05 +02:00
Max Kellermann 3e9738dc66 decoder/mpcdec: read the bit rate
This was lost in commit 8ead8f7ea, because this was never implemented
for the new API.
2015-08-05 23:33:11 +02:00
Max Kellermann 2ecf57cdd9 decoder/mpcdec: use SampleTraits<SampleFormat::S24_P32> 2015-08-05 23:24:30 +02:00
Max Kellermann c8b602038e decoder/mpcdec: use Clamp() 2015-08-05 23:24:30 +02:00
Max Kellermann e384fa226e decoder/mpcdec: make buffer more local
Allow the compiler to invalidate buffer contents.
2015-08-05 23:10:39 +02:00
Max Kellermann 69476b4f21 pcm/Interleave: add optimization for 32 bit samples
Move code from the "vorbis" decoder.
2015-06-22 16:32:06 +02:00
Max Kellermann eed1a3c239 decoder/ffmpeg: move code to pcm/Interleave.cxx 2015-06-22 14:42:19 +02:00
Max Kellermann 94c037821b decoder/ffmpeg: check for commands earlier
Improve initial seek by not reading/decoding the first frame before
checking for the seek command.
2015-06-22 14:42:19 +02:00
Max Kellermann e38e8eb636 decoder/vorbis: check STOP before entering the loop 2015-06-22 14:40:51 +02:00
Max Kellermann 90e7ace980 Merge tag 'v0.19.10' 2015-06-21 16:06:02 +02:00
Max Kellermann 6d6f274648 DecoderAPI: discard unused song tag early
If there's a stream tag, don't let the song tag override it in the
next update_stream_tag() call.
2015-06-21 15:10:55 +02:00
Max Kellermann 9acefcb256 DecoderThread: set Decoder::song_tag only for local files
If the song tag comes from a stream, and MPD playback restarts, MPD
would believe the tag should override the newly received tag.  This
makes the previous tag appear stuck.  This change passes the song tag
only if it's authoritative - i.e. if it's a song file.
2015-06-21 15:02:14 +02:00
Max Kellermann e4d0293a31 DecoderAPI: "move" the Tag object
Reduce runtime overhead.
2015-06-20 16:06:09 +02:00
Max Kellermann 327a8e6c59 decoder/ffmpeg: skip unwanted samples after seeking
When seeking to the beginning of a packet, skip the samples that come
before the desired time stamp.
2015-06-20 15:01:05 +02:00
Max Kellermann d11e2724c4 decoder/ffmpeg: use AVSEEK_FLAG_BACKWARD for seeking
Ask FFmpeg to seek to the next packet boundary *before* the seek
position, so we don't miss audio data.  Now we get too much, but we'll
solve that in the next commit.
2015-06-20 14:29:42 +02:00
Max Kellermann f768ca3a2d decoder/ffmpeg: move code to StreamRelativePts() 2015-06-19 18:56:29 +02:00
Max Kellermann b31d171ae8 *: doxygen fixups 2015-03-17 11:21:43 +01:00