Max Kellermann
|
71f0ed8b74
|
*: add "noexcept" to many, many function prototypes
This eliminates some overhead, because the compiler doesn't need to
consider these functions throwing.
|
2017-05-08 14:44:49 +02:00 |
|
Max Kellermann
|
3be2051808
|
decoder/Thread: check ENABLE_FFMPEG, not HAVE_FFMPEG
This repairs the damage to commit 74dbaade6f done by commit
b3f5b4932c
|
2017-03-01 17:06:23 +01:00 |
|
Max Kellermann
|
5900253b85
|
update copyright year
|
2017-01-03 20:48:59 +01:00 |
|
Max Kellermann
|
2e182e84c3
|
thread/Mutex: remove ScopeLock, use std::lock_guard directly
|
2017-01-03 07:11:57 +01:00 |
|
Max Kellermann
|
86e8b8c10d
|
decoder/Thread: skip the ReplayGain loader if the feature is disabled
https://bugs.musicpd.org/view.php?id=4595
|
2016-11-25 13:26:40 +01:00 |
|
Max Kellermann
|
aa877a29d7
|
decoder/Thread: repair container decoder support
Catch ENOTDIR exceptions and in that case, try all matching decoder
plugins which implement the "container_scan" method.
https://bugs.musicpd.org/view.php?id=4561
|
2016-11-22 10:24:08 +01:00 |
|
Max Kellermann
|
697c3f8cb9
|
decoder/Internal: rename struct Decoder to class DecoderBridge
|
2016-11-21 21:38:23 +01:00 |
|
Max Kellermann
|
a88040e4d5
|
decoder/Client: add Submit methods
Replaces decoder_data() and others.
|
2016-11-18 09:05:04 +01:00 |
|
Max Kellermann
|
595d1942cb
|
decoder/Internal: rename "chunk" to "current_chunk"
|
2016-11-18 09:01:32 +01:00 |
|
Max Kellermann
|
43b285ef7a
|
decoder/Thread: remove the obsolete catch(Error&)
|
2016-11-10 12:55:08 +01:00 |
|
Max Kellermann
|
4dc7d1c0cd
|
decoder/Thread: use AllocatedPath::FromUTF8Throw()
|
2016-11-10 12:55:08 +01:00 |
|
Max Kellermann
|
8c744efd56
|
input/InputStream: migrate from class Error to C++ exceptions
|
2016-09-16 17:43:36 +02:00 |
|
Max Kellermann
|
fc7d3f64c0
|
input/Plugin: migrate open() from class Error to C++ exceptions
|
2016-09-09 18:15:01 +02:00 |
|
Max Kellermann
|
845901ab01
|
decoder/Internal: convert error from Error to std::exception_ptr
|
2016-09-08 20:56:05 +02:00 |
|
Max Kellermann
|
25f7360264
|
decoder/Thread: throw InputStream::Open() errors
Code simplification.
|
2016-09-08 20:54:55 +02:00 |
|
Max Kellermann
|
78ec7d0fe1
|
decoder/Thread: throw StopDecoder on DecoderCommand::STOP
|
2016-09-08 20:54:55 +02:00 |
|
Max Kellermann
|
a1e9678b69
|
decoder/Thread: std::throw_with_nested() to wrap caught exception
|
2016-09-08 20:54:55 +02:00 |
|
Max Kellermann
|
957b399e90
|
decoder/Thread: call FlushChunk() using AtScopeExit()
Be exception-safe.
|
2016-09-08 20:41:44 +02:00 |
|
Max Kellermann
|
5d9a889190
|
decoder/Thread: throw C++ exceptions on error
|
2016-09-08 20:26:40 +02:00 |
|
Max Kellermann
|
a9acc9c971
|
decoder/Thread: catch C++ exceptions from the decoder plugin
|
2016-09-08 19:24:15 +02:00 |
|
Max Kellermann
|
308010794a
|
decoder/Control: convert error from Error to std::exception_ptr
Prepare full C++ exception support in the decoder thread.
|
2016-09-08 17:16:03 +02:00 |
|
Max Kellermann
|
d3c7fac606
|
thread/Thread: throw std::system_error on error
|
2016-06-17 19:11:20 +02:00 |
|
Max Kellermann
|
92cdea123e
|
TagStream, decoder/Thread, ...: ignore MIME type parameters for matching plugins
|
2016-06-10 22:24:13 +02:00 |
|
Max Kellermann
|
24fa3f5e7b
|
Revert "decoder/Thread: flush last chunk only on success"
This reverts commit 995cd95474 . It was
a bad idea because it caused assertion failures when a decoder plugin
aborted with an exception.
|
2016-05-14 12:31:12 +02:00 |
|
Max Kellermann
|
0709878b4c
|
decoder/API: add class StopDecoder
|
2016-05-13 13:23:24 +02:00 |
|
Max Kellermann
|
b7b7c381ee
|
decoder/Thread: catch exceptions
Allow decoders to throw std::runtime_error.
|
2016-05-13 13:01:39 +02:00 |
|
Max Kellermann
|
995cd95474
|
decoder/Thread: flush last chunk only on success
|
2016-05-13 13:01:31 +02:00 |
|
Max Kellermann
|
fe8a13f76f
|
decoder/Thread: move code to DecoderUnlockedRunUri()
|
2016-05-13 13:00:40 +02:00 |
|
Max Kellermann
|
e8121fdc11
|
decoder/Thread: fail decoder_input_stream_open() if STOP is received
Fixes an assertion failure in tag_ape_scan() which is because
decoder_input_stream_open() returns an "unready" InputStream.
|
2016-04-21 13:15:34 +02:00 |
|
Max Kellermann
|
33fdaa5b6d
|
Merge branch 'v0.19.x'
|
2016-04-13 10:03:40 +02:00 |
|
Max Kellermann
|
74dbaade6f
|
decoder/Thread: use "ffmpeg" as fallback instead of "mad"
Adds support for stream codecs which havn't been explicitly listed in
ffmpeg_mime_types.
|
2016-03-30 00:58:48 +02:00 |
|
Max Kellermann
|
1d67aa7bf2
|
update copyright year to 2016
|
2016-02-26 17:54:05 +01:00 |
|
Max Kellermann
|
bf65a9732c
|
decoder/thread: clear Decoder::error before attempting another plugin
Keep only the last error. This fixes bogus aborts due to the error
check in decoder_get_virtual_command().
|
2016-02-26 17:30:24 +01:00 |
|
Max Kellermann
|
1388b3219a
|
decoder/thread: fix typo in comment
|
2016-02-26 16:48:27 +01:00 |
|
Max Kellermann
|
a1e680fec7
|
decoder/thread: open InputStream in decoder_run_file() in any case
decoder_load_replay_gain() will create the InputStream anyway, so
we're not saving any overhead by opening the InputStream on demand
only.
|
2016-02-23 11:14:12 +01:00 |
|
Max Kellermann
|
1b58bd64ff
|
decoder/thread: use typedef InputStreamPtr
|
2016-02-23 11:14:11 +01:00 |
|
Max Kellermann
|
196de8c758
|
decoder/thread: load APE replay gain from remote files
|
2016-02-23 10:57:03 +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 |
|