Max Kellermann
30bd190b41
decoder/wavpack: implement scan_stream()
2016-12-09 23:23:35 +01:00
Max Kellermann
cf93cd9307
decoder/wavpack: convert WavpackInput::client to pointer
2016-12-09 23:23:02 +01:00
Max Kellermann
f40816e063
decoder/wavpack: add WavpackOpen() wrappers which throw exception
2016-12-09 23:15:40 +01:00
Max Kellermann
3759f29852
decoder/wavpack: move wavpack_scan_file() down
2016-12-09 23:15:06 +01:00
Max Kellermann
bc5555933f
decoder/wavpack: support native DSD
2016-12-09 23:08:54 +01:00
Max Kellermann
ead7ae8504
decoder/wavpack: use template for format_sample_X()
2016-12-09 22:53:01 +01:00
Max Kellermann
ad5abba8c6
decoder/wavpack: move 8 and 16 bit conversion to separate functions
2016-12-09 22:49:07 +01:00
Max Kellermann
61296cedd2
decoder/wavpack: rename format_samples_float() to format_samples_nop()
2016-12-09 22:47:32 +01:00
Max Kellermann
d9c29a2c4f
decoder/wavpack: use std::copy_n()
2016-12-09 22:23:19 +01:00
Max Kellermann
f5172e6b84
decoder/wavpack: use int16_t instead of uint16_t
...
Technically, these samples are signed. There was no practical
difference, only the declaration was formally wrong.
2016-12-09 22:21:31 +01:00
Max Kellermann
544bcbe903
decoder/wavpack: use WavpackGetNumSamples64() if available
2016-12-09 22:09:32 +01:00
Max Kellermann
f35dab1b56
decoder/wavpack: check WavpackGetNumSamples()==-1
2016-12-09 21:46:29 +01:00
Max Kellermann
caee420087
decoder/wavpack: move code to GetDuration()
2016-12-09 21:45:22 +01:00
Max Kellermann
e8c374113e
decoder/wavpack: make is_float const
2016-12-09 21:30:31 +01:00
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
09da80e9f4
tag/ApeTag: don't export ape_tags[]
2016-12-09 20:59:07 +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
ae7e25ea65
release v0.19.20
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCAAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlhLAzUQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEp8ED/92V7el1LsuifbIKP4xFmHfENxB5bzBCQHZ
f4DlGybr7pA4FZQIR5Z0qulvVr+sdY0Y8hgSoOCKzmHGuOgQ6zxHVGVMWLY5N0JN
ExOrSGUhIjNV+L06LA/YDOE4Z9VUuSi6ZLx1KSLvFbYWULmoqoQREo001YyrfmYr
pSq+MosGX7i/lFEOrOzw1keEnOUIlqoEJ8IpPks+Xtkk8159TJS2z2FsgWBnlG5W
qO/N/Nn+TBZZjsDkOoJcdsQ6ot1ThJgxMWY+fduNP5Fe8s2oCHc8dAdYMyfhQiky
0xq139T8tLRRJUkv9inK63Zd0sn06/pemDD+XZGNE6arwvTsqriEwPcJHgsJYfaQ
wqGWv+DrMTGVSZnH+XUACLpUexmd8M6q1MZ3g12tRjQHNM06Yn6PePdHUm4IuclJ
eGsXEb1+jgr6/tMxYkmjUIs8SacpTK2ZUx4aYIG7+tVNmfGompK1gYlYT86ZVEEh
byzy7A67C9BpSkuC/4YzXT/oHBpDf7T4WVz1TEKZT3vke6l0CDTwYCQyBcG0NFCe
Pic45q4RgLbkH6NR4bJ1oX/XRCgh8V2QkLKdgcpzS4Lv+TE2hHRlBf9a7SVufIPT
yBNlY91nT8zUfws/7LBwfZtYQB7VcudUMlmSigtlrvr9CvpRCuGCCY5vdLxi4LYz
3lm6wOrp5g==
=opJg
-----END PGP SIGNATURE-----
Merge tag 'v0.19.20'
release v0.19.20
2016-12-09 20:18:54 +01:00
Max Kellermann
fef45d469c
release v0.19.20
2016-12-09 20:02:07 +01:00
Max Kellermann
e7353ec7e7
Queue: "setprio" re-enqueues old song if priority has been raised
...
This commit changes a minor queue priority design to something which
makes a little bit more sense.
Previously, a song that had already been played would only be
re-enqueued if its priority had just been raised above the current
song's. This means that if it was already above, it was not
re-enqueued. That is a surprising behavior, because users expect a
song to be played when its priority is raised.
Now the song is always re-enqueued if its priority is raised (and
above the current song's - no matter if it has already been above
before).
https://bugs.musicpd.org/view.php?id=4592
2016-12-09 13:02:26 +01:00
Max Kellermann
e3237f057d
systemd: more paranoid security settings
2016-12-09 10:41:44 +01:00
Florian Schlichting
54d5d9d1cc
systemd: protect /usr when running under systemd
2016-12-09 10:41:44 +01:00
Clément B
31d9aebf0b
systemd: also disable mpd.socket when disabling mpd.service
...
e.g. when running 'update-rc.d mpd disable'
2016-12-09 10:41:43 +01:00
Max Kellermann
5013de6770
LogInit: convert use_stdout flag to out_fd=STDOUT_FILENO
2016-12-04 20:15:45 +01:00
Max Kellermann
301abac0c1
LogInit: initialize out_fd properly to avoid closing stdin
2016-12-04 20:13:37 +01:00
Max Kellermann
9614c48e4c
LogInit: throw exception instead of calling FatalError()
2016-12-04 20:07:41 +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
30dc473697
system/Error: allow using errno functions on Windows
...
The Windows standard library emulates part of POSIX, which includes
errno.
2016-12-04 20:07:09 +01:00
Max Kellermann
65974ceabc
PlaylistFile: remove redundant existence check
2016-12-04 20:04:16 +01:00
Max Kellermann
6caf53d1c2
fs/FileSystem: RenameFile() throws exception on error
2016-12-04 19:59:33 +01:00
Max Kellermann
dee6e498d9
fs/CheckFile: use IsAccessDenied()
2016-12-04 19:56:25 +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
3472208c05
ReplayGainGlobal: move replay_gain_mode to struct Partition
2016-12-03 13:56:25 +01:00
Max Kellermann
fc30e1d559
Partition: pass ReplayGainConfig to constructor
2016-12-03 13:55:14 +01:00
Max Kellermann
cd4bb444ff
player/Control: make ReplayGainConfig const
2016-12-03 13:47:13 +01:00
Max Kellermann
e443513996
Main: call replay_gain_global_init() before forking
2016-12-03 13:27:59 +01:00
Max Kellermann
3d16f22135
player/Control: use C++11 initializers
2016-12-03 13:08:00 +01:00
Max Kellermann
6cc1ff5eeb
decoder/Control: make ReplayGainConfig const
2016-12-03 13:05:25 +01:00
Max Kellermann
3000b9dcde
filter/ReplayGain: add ReplayGainConfig copy
...
Remove dependency on ReplayGain global variables.
2016-12-03 12:51:02 +01:00
Max Kellermann
3b867462a3
filter/ReplayGain: remove FilterPlugin instance, add explicit constructor
2016-12-03 12:34:23 +01:00
Max Kellermann
b8aa9348b9
filter/Registry: make filter_plugins static
2016-12-03 12:24:30 +01:00
Max Kellermann
513e3a3d21
filter/ReplayGain: forward-declare struct ReplayGainInfo
2016-12-03 12:20:32 +01:00
Max Kellermann
bfb0897b54
filter/ReplayGain: convert pointers to references
2016-12-03 12:13:45 +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