Max Kellermann
98a241a730
decoder/wavpack: use WavpackGetReducedChannels()
...
Since we don't use OPEN_2CH_MAX, this should be equal to
WavpackGetNumChannels() - but who knows, maybe a future libWavPack
version breaks this assumption.
2016-12-09 21:23:38 +01:00
Max Kellermann
be8297d6f6
decoder/wavpack: basic DSD support (WavPack 5)
...
Enable OPEN_DSD_AS_PCM if available. No OPEN_DSD_NATIVE yet.
https://bugs.musicpd.org/view.php?id=4606
2016-12-09 21:03:47 +01:00
Max Kellermann
df4ecf63a8
decoder/wavpack: disable OPEN_TAGS
...
Use MPD's internal APE tag code, which works just as well. This
removes some duplicate code for reading tags and ReplayGain.
2016-12-09 20:53:54 +01:00
Max Kellermann
b4d1937857
decoder/wavpack: change norm_offset to 0
...
MPD uses a floating point range from -1 to +1 internally - why ask
libwavpack to use -32768..+32768 only to reduce it back to -1..+1
afterwards?
2016-12-09 20:53:45 +01:00
Max Kellermann
0be5fbdc35
decoder/wavpack: use AtScopeExit()
2016-12-09 20:53:04 +01:00
Max Kellermann
c6e1ca1c22
system/Error: use std::generic_category() for errno on Windows
...
It's wrong to use std::system_category() for both GetLastError() and
errno on Windows. Apparently, everybody uses std::generic_category()
for errno values, which appears to be a safe choice.
Some discussion on this confusing topic can be found here:
https://stackoverflow.com/questions/28746372/system-error-categories-and-standard-system-error-codes
2016-12-04 20:07:11 +01:00
Max Kellermann
b3723274f7
decoder/Bridge: move code to DecoderControl::SetReady()
2016-12-03 14:20:51 +01:00
Max Kellermann
9fb7cc796b
decoder/Control: add attribute configured_audio_format
...
Obsoletes the same variable from AudioConfig.cxx.
2016-12-03 14:12:08 +01:00
Max Kellermann
6cc1ff5eeb
decoder/Control: make ReplayGainConfig const
2016-12-03 13:05:25 +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
ee57c3490a
{decoder,player}/Control: add ReplayGain{Config,Mode} attributes
...
Don't use the global variables in class DecoderBridge; instead,
forward these values to the decoder thread via PlayerControl and
DecoderControl.
2016-11-25 12:51:55 +01:00
Max Kellermann
77c1f54876
ReplayGainConfig: add struct ReplayGainConfig, move globals to ReplayGainGlobal.cxx
2016-11-25 11:13:08 +01:00
Max Kellermann
5f396e824f
ReplayGainMode: convert to strictly-typed enum
2016-11-24 17:34:57 +01:00
Max Kellermann
25e58df5e0
ReplayGainInfo: don't use array in struct ReplayGainInfo
...
Declare two named elements. An enum should not be used as an array
index, as this is error prone.
2016-11-24 17:34:57 +01:00
Max Kellermann
09c3cc58e4
ReplayGainInfo: add method Get()
2016-11-24 17:34:57 +01:00
Max Kellermann
9b9144f25d
decoder/Control: use C++11 initializers
2016-11-24 14:58:17 +01:00
Max Kellermann
b677e891b4
decoder/{mikmod,modplug}: throw exception instead of calling FatalError()
2016-11-24 14:09:58 +01:00
Max Kellermann
95e2bec215
decoder/DecoderPlugin: container_scan() returns forward_list<DetachedSong>
...
Speed up container_scan() again, by eliminating the need to call
scan_file() for each item.
2016-11-22 16:49:31 +01:00
Max Kellermann
72c96052b4
decoder/gme: move gme_container_scan() down
2016-11-22 16:49:30 +01:00
Max Kellermann
bf78b7f815
decoder/sidplay: use template to eliminate duplicate code
2016-11-22 13:17:31 +01:00
Max Kellermann
ffb9874d84
decoder/sidplay: move code to ScanSidTuneInfo()
2016-11-22 12:37:25 +01:00
Max Kellermann
228cdbe6af
decoder/gme: provide the TRACK tag
2016-11-22 12:20:31 +01:00
Max Kellermann
a303639c9e
decoder/{gme,sidplay}: fix off-by-one bug in container_scan()
...
Broken by commit 0abee77e62
2016-11-22 12:20:31 +01:00
Max Kellermann
c5133f6088
db/update/Container: catch C++ exceptions
2016-11-22 12:16:14 +01:00
Max Kellermann
27d368d48d
decoder/gme: use AtScopeExit()
2016-11-22 12:16:14 +01:00
Max Kellermann
085b599f84
decoder/gme: remove redundant extern declaration
2016-11-22 12:16:14 +01:00
Max Kellermann
3b84eb3b70
decoder/gme: add missing SUBTUNE_PREFIX
...
Got lost in 0abee77e62
2016-11-22 12:16:14 +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
0abee77e62
decoder/DecoderPlugin: container_scan() returns forward_list<string>
2016-11-22 09:33:52 +01:00
Max Kellermann
114fcee2ae
decoder/Client: add virtual method Read()
2016-11-21 22:43:09 +01:00
Max Kellermann
b488204093
decoder/API: move DecoderBridge methods to Bridge.cxx
2016-11-21 22:14:09 +01:00
Max Kellermann
322bfbaf57
decoder/API: simplify the client==nullptr code path in decoder_read()
2016-11-21 22:13:03 +01:00
Max Kellermann
2718f4c333
decoder/API: move part of decoder_check_cancel_read() into class DecoderBridge
2016-11-21 22:07:03 +01:00
Max Kellermann
8c342a764b
decoder/API: move functions into class DecoderBridge
2016-11-21 21:44:57 +01:00
Max Kellermann
697c3f8cb9
decoder/Internal: rename struct Decoder to class DecoderBridge
2016-11-21 21:38:23 +01:00
Max Kellermann
723e54f74e
decoder/Client: add OpenUri(), replacing decoder_open_uri()
2016-11-18 12:34:04 +01:00
Max Kellermann
1a8c96a3f0
decoder/mpcdec: use AtScopeExit()
2016-11-18 12:22:41 +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
47a0f46ce8
decoder/Client: add DecoderCommand/seek virtual methods
2016-11-18 09:03:42 +01:00
Max Kellermann
66fb352cca
decoder/Client: add virtual method Ready()
...
Replaces decoder_initialized().
2016-11-18 09:03:41 +01:00
Max Kellermann
fd77acc217
decoder/Client: new interface which wraps struct Decoder
...
Prepare for a Decoder API redesign based on an abstract class with
virtual methods.
2016-11-18 09:03:39 +01:00
Max Kellermann
595d1942cb
decoder/Internal: rename "chunk" to "current_chunk"
2016-11-18 09:01:32 +01:00
Max Kellermann
b0b8f573bc
decoder/API: copy exceptions to Decoder::error
2016-11-17 22:54:13 +01:00
Max Kellermann
746aa6cc0f
decoder/API: check for errors in decoder_read()
2016-11-17 22:53:43 +01:00
Max Kellermann
fac610d47b
decoder/API: decoder_open_uri() can throw StopDecoder
2016-11-17 22:48:18 +01:00
Max Kellermann
93209da176
decoder/API: lock decoder in decoder_get_command()
2016-11-17 22:36:42 +01:00
Max Kellermann
35a2a48c47
Merge branch 'v0.19.x'
2016-11-17 22:20:24 +01:00
Max Kellermann
7019f6bea4
decoder/pcm: round buffer size down to nearest frame size
...
https://bugs.musicpd.org/view.php?id=4599
2016-11-17 21:58:27 +01:00
Max Kellermann
43b285ef7a
decoder/Thread: remove the obsolete catch(Error&)
2016-11-10 12:55:08 +01:00
Max Kellermann
4e16ea0f0a
decoder/flac: migrate from class Error to C++ exceptions
2016-11-10 12:55:08 +01:00