Max Kellermann
c16233fa74
add "moveoutput" command
2020-01-18 22:21:27 +01:00
Max Kellermann
7732db0aee
output/Control: move code to method StopThread()
2020-01-18 21:46:18 +01:00
Max Kellermann
37f984ba74
output/Control: avoid sending KILL twice
2020-01-18 21:43:17 +01:00
Max Kellermann
cd612c4eef
AudioFormat: move to pcm/
2020-01-18 20:24:59 +01:00
Max Kellermann
7551867249
meson.build: move Log.cxx and LogBackend.cxx into a static library
...
Prevents compiling those sources many times, once for each debug
program using it.
2020-01-18 19:56:16 +01:00
Max Kellermann
e01bddbd86
output/MultipleOutputs: update API documentation
2020-01-18 19:23:49 +01:00
Max Kellermann
2817bf9e95
copyright year 2020
2020-01-18 19:23:49 +01:00
Max Kellermann
64309abc14
Merge branch 'v0.21.x'
2020-01-14 22:04:55 +01:00
Max Kellermann
af20a1c994
pulse: obey Pulse's maximum sample rate (fixes DSD128 playback)
...
Closes https://github.com/MusicPlayerDaemon/MPD/issues/708
2020-01-12 07:58:17 +01:00
Max Kellermann
683d5848f4
release v0.21.17
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl34Bg0QHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEmOvD/4/gBb1kIOQduz+ZV79LHPGeqDoIJBm8VWg
t9R1Mpt0flqC8+RcXFK/P0kUifBO5fu+a1DbHHijUvDNLYpUsCiXyxTpES9gGh54
7djEeqi1suoLpMUt4zkUEHGTp2dGUTmyewE1TuF1sZi2xlPgOeWXEX7a0xWs4zdG
WI4CojUSkQGVAI2XZ7xIKP1v368B9F6AbqTK4zkzjNbTCv5VfESGlxdde0NXqU2e
/bjil1aT2kdcks3ddeT4llyGIUzn1PzOyA6LQvmVXLSAtz9Rr/hHA+qkR19a4CCt
PXxE0xClhhmZglzPuES0sRqBbwG99dPzA1ajTOtielwMrlFx+OceRfUnfdgqpPqd
HTkEzMGsQ2PMMbE8R9DF5GU8B9xAcnKMh2g3/9KGStbocGSFWahLRObkHEhC5uJu
g5ncQio3o/AtlBirywn/lkd6CYRDvMheMVOTHtv4/ZN0hIONMXCb6u1SQfqnX7qb
fRP2UP9VUpPI9MUfOn/0uqM8/zXb5SMRe78p9UIYCF+mEDST190VxsdMjiBp/Xug
Pktlec72iyiNHCavp04nXkt2kBrfSIFFaAQ0Qlp4huRV1k3Ur672NHtwuPLv8ORH
xLec8On6nWVuuu5kC0F+4KxTlu6u2CMwH+wVr7t/D4rrD1iVo39MtElTBawZZC6+
8EapnNHyGg==
=A+Dp
-----END PGP SIGNATURE-----
Merge tag 'v0.21.17'
release v0.21.17
2019-12-16 23:44:20 +01:00
Max Kellermann
13ce07d181
output/shout: declare metadata as UTF-8
...
Apparently, Icecast defaults to ISO-8859-1 for MP3:
http://icecast.org/docs/icecast-2.4.0/config-file.html#mountsettings
This change forces Icecast to UTF-8 without having to configure it in
Icecast's configuration file.
2019-11-06 16:05:22 +01:00
Max Kellermann
496f43e25d
Merge branch 'v0.21.x'
2019-11-04 15:07:46 +01:00
Niklas Haas
65778a3774
output/Jack: mark ports as terminal
...
This is the correct thing to do for ports from which a signal ultimately
"originates", such as is the case with mpd.
2019-10-29 10:07:44 +01:00
Max Kellermann
2f3e94f8d0
output/MultipleOutputs: add method IsOpen()
2019-09-26 14:52:19 +02:00
Max Kellermann
f616bfe354
output/MultipleOutputs: add method HasName()
2019-09-26 14:48:31 +02:00
Max Kellermann
f2c3d86612
output: use StringIsEqual()
2019-09-26 14:48:31 +02:00
Max Kellermann
0643b5abad
release v0.21.15
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl2LvuAQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEg3VD/9uWiK11PPXfpAqOQgL63c1CS/6HJizwnox
n0ns3T7eJJPXy06NTwuo5M8JeAIhuysEciHlJeGBf4NIGwGGHOL3nQv3FkWJlfeh
UrIJq66gIzElZ62Jvq+7zkkfjm6A0tmQoAEoIPouus+A4RNwndpqsKSotZzLK0yY
ACkJTxl8JJj+UbLzleDKSA+RxG817onGKl+urkvNDRdD7xs3VEUX6jhddVM1n3m+
BqCaihuQZYXur45mYIwFI7H5JevRawnEX8L6tERW0cE8j5IhnnPjwYvMX+DcZoTe
DgYuGkfPTfl31QufbbetTwWITjf4nrummYrAM/fKcNJcaqZFo4hs7m7N6p9c2ebm
QCUG0On32Lvkq4/iLAxXIdoy38mPkarREB2XQebHa6j2XPFjxB01lXLGYJzPtqBu
LCFRpR+ssWeZDQ3uP+fAzlgMXmB+owWa9NVqU5vlx97TCmXInOeim6tfq1T4keGW
3VFLqM6VAw4QyhrbowU0xbvxvYkWrgpkYbM5NcfwI67xZGLsI5vnRzX05VgF6BFZ
B7g+JIWjv+Mjm1ltsvC4OlJEcCXZb0BQWvwLHq0EGeEP/R9MWYX6BxlF1V8FWR2S
bIL0qIqtZfuUI66irNn23ZCyN4DilMcZkS8f30321hB2GLputG8zZwCcjxy1a/ft
1OoHXRfKNw==
=uONC
-----END PGP SIGNATURE-----
Merge tag 'v0.21.15'
release v0.21.15
2019-09-25 21:27:31 +02:00
Max Kellermann
71ef0faa2c
output/Source: move code to DropCurrentChunk()
2019-08-27 19:07:52 +02:00
Max Kellermann
328a6de86e
output/Source: document "pending_tag" ownership
2019-08-27 19:07:52 +02:00
Max Kellermann
818b7e0641
output/solaris: include sys/stropts.h only on Solaris
...
This header had been available for a long time on Linux, but was
removed in glibc 2.30. This commit moves the `#include` line inside
the `#ifdef __sun` block and adds a fake declaration of `I_FLUSH` for
the Linux build.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/630
2019-08-22 11:41:12 +02:00
Max Kellermann
e6600b8562
release v0.21.14
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl1dBToQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEhlID/4gcrbaegKpTkftGPLBGlSUc4W0qwSHbdiJ
SuzK7sraSGUlLHHiBfqvFfE8tyEaLfsJarqiOdGgfiaW5QyapdwuU5s76nAN6jjY
onEo2QK6vSbv4J/B1+Jv+NGCgVM3ZkPy91GhfTz8MEtJMaBmztFhnpxK60r9jYPG
5EBsnVa6HhI7gniQAtOwE8SXYnn92Q4j72S8OuAbJ7Vwh0oqdIyXECqzcAE97Fk2
TNX/YSLST3I7Chv2OBDb3vOegh9nFUyr0qeSYdi8vk2BBYcgX2xYOOBQCC3ta/nr
NNeuSJOLgcF1XrFqVRRhDKZ8Y2inD6qVAXOH5WtChT1n3uXqYW7vdq0fW+/w3W/E
vouzgt5KvU5Me4Mk2M2dMjEWW+7Y8EUjvrwDnbDIkyP+Yi+BLTmTnyBgAW3cvRO9
UoCcWTBOEgyX2wAFl3r+NMPEneuMLbMCZUMju4/zveiRJdFExA0LC8wk0/iWqQbW
+WD8y6RTo7Z1jsP1vnBimgAkzkLAOuMlKLYNI15ETrxwKWgOjN6a7Q61GVdsaiqG
fKQeO0kZWWFcJ7HECgp3tpwWEi1+7/uqt0TwQgOKDdZHYL0Wb6Ur09KJS4b+eKIl
UzYwCrPgUx1pcYR+rTbMxCNpWn2kA+vp2UaPBN60c/J98d+6C/2nKtIvXfr5MrUA
CEb1epw/ew==
=mEFF
-----END PGP SIGNATURE-----
Merge tag 'v0.21.14'
release v0.21.14
2019-08-21 10:52:49 +02:00
Max Kellermann
b968e1b6de
output/Thread: add missing return
in exception handler
2019-08-21 10:20:17 +02:00
Max Kellermann
f3d16f6d1b
output/Thread: fix typo in comment
2019-08-13 13:08:40 +02:00
Max Kellermann
bcccc8f66c
output/jack: use jack_free() for Windows compatibility
2019-08-06 11:34:56 +02:00
Max Kellermann
848c63e2d5
output/jack: use std::atomic_bool for "shutdown" and "pause"
...
Without this, the compiler may optimize accesses away.
2019-08-06 11:34:00 +02:00
Max Kellermann
f6d0310f9c
output/jack: use SIZE_MAX instead of (size_t)-1
2019-08-06 11:33:52 +02:00
Max Kellermann
8b399b7133
output/jack: use jack_free() for Windows compatibility
2019-08-05 09:35:41 +02:00
Max Kellermann
9d24f68f51
output/jack: convert to class, make attributes/methods private
2019-08-05 09:31:40 +02:00
Max Kellermann
44652fdb13
output/jack: convert callback functions to static methods
2019-08-05 09:29:27 +02:00
Max Kellermann
2892a6f5e2
output/jack: merge set_audioformat() into Open()
2019-08-05 09:28:41 +02:00
Max Kellermann
2fc40e5575
output/jack: eliminate "shutdown" flag, use only "error" (mutex protected)
2019-08-05 09:24:43 +02:00
Max Kellermann
d146bef740
output/jack: use jack_on_info_shutdown()
2019-08-04 20:25:13 +02:00
Max Kellermann
1f4c4be1f1
output/jack: use std::atomic_bool for "shutdown" and "pause"
...
Without this, the compiler may optimize accesses away.
2019-08-04 20:24:51 +02:00
Max Kellermann
90067d16c0
output/jack: use SIZE_MAX instead of (size_t)-1
2019-08-04 06:34:43 +02:00
Max Kellermann
cde6c46d2f
util/Macros: replace with std::size() (C++17)
2019-08-03 13:10:49 +02:00
ckdo
d305f187d5
Add the ability to specify media.role for pulse output plugin
...
This is useful in multiple mpd instances scenario, or multiple pulse outputs defined on the same mpd instance.
It is actually a more flexible way to route flows than the "sink" parameter, letting the PulseAudio routing do its job, but with the ability to isolate routing for each output.
If not specified, the role remains like it was before this commit, ie "music"
2019-08-03 13:03:05 +02:00
Richard Dodd
4f6a713b32
Add option to not connect jack ports automatically
2019-08-03 13:01:47 +02:00
Max Kellermann
a90685d6cf
release v0.21.12
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAl1FZnQQHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEjrXD/0QChgJtx6sVPRpMK7KszwgpmxNkhDPA13l
puuYTg0eEZe9EJxNM82ouCNn2kOx9OjP5DKyeus0Dt4Pk5Cwj8HGeHqjTahtwHtD
jbVy5kiEZ57NjBoLFoQBI6vMuzcz/DKStq2HmPJ62NQCIqbiTQXPpWvDYAieTFV+
lbM7vc7VQ6A3bhms//vYMZYmQV7T4Eam3iEVxoQhX4Pd+wWXv+XcTfdI2UTUFWIY
mt7+AZlG2ynev+zszUtDLB4aFEbRcLUBlSKuPv3j5ox7BjleLJXltpVbisI+TDHL
nAyb2LtOTeVPpAaqiPeCju2ucWaUOsFkHmSCjPu8BHc8b4mLATiozv2BzY1qe5rX
G7DZxCLq3IBtY4u4FpR4kOuVcjTGFKCToHGl8N6GrPmfa3n+MqPLAqKx32tSq+r/
po2kbB9t0IXXT1njGWLb9W6y7z/7dsvy3YgjV6L7SfY/SA9MZELx+MBED2GSDYr9
eWLK7LDO5soBUZvnDVJZO/a1oP0n5WiSV9n2/YGgRJXcljW8tJ8C76yMNziPK7yn
Fjmc12o6kf5Afo3dNsLAdXH4p/8LeYK9IcJZmGfwBCccMHlnX+ySLfBOyuyUDD7g
nOV/o7av/HZzirQ9h2CGUZhBPbPARjvMI+mhDVGxUx3OYxW9UfokmMVEs4h21f0R
4XRbOUejVA==
=hzQJ
-----END PGP SIGNATURE-----
Merge tag 'v0.21.12'
release v0.21.12
2019-08-03 12:53:23 +02:00
Diomendius
b81138bda1
Fix JACK plugin outputting only to left channel
...
The JACK output plugin would not correctly upmix mono input files when exactly 2 output ports were configured. This fixes that.
2019-08-02 15:52:20 +02:00
Max Kellermann
af99f9fc90
pcm/Volume: convert S16 to S24 to preserve quality and reduce noise
...
Applying software volume to S16 samples means several bits of
precision are lost; at 25% volume, two bits are lost. Additionally,
dithering adds some noise.
The problem gets worse when you apply the software volume code twice:
for the software mixer volume, and again for the replay gain. This
loses some more precision and adds even more dithering noise, which
can become audible (see
https://github.com/MusicPlayerDaemon/MPD/issues/542 ).
By converting everything to 24 bit, we need to shift only two bits to
the right instead of ten, losing nearly no precision, and dithering is
not needed. Even if the output device is unable to play S24 directly,
we can convert back to S16 with only one stage of dithering.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/542
2019-07-30 20:03:37 +02:00
Max Kellermann
426891ab31
output/Init: pass MixerType to _load_mixer()
2019-07-12 17:11:14 +02:00
Max Kellermann
db024c27d5
output/Source: allow the ReplayGainFilter to change the AudioFormat
...
Just in case.
2019-07-08 20:16:53 +02:00
Max Kellermann
d663f81420
include cleanups (powered by iwyu)
2019-07-05 09:59:58 +02:00
Max Kellermann
6c22c34300
output/oss: add noexcept
2019-07-04 22:42:19 +02:00
Max Kellermann
f54710b100
output/oss: replace enum oss_setup_result with bool
...
It's not a tri-state anymore since we introduced C++ exceptions.
2019-07-04 22:23:22 +02:00
Max Kellermann
196db1a8c8
output/oss: remove redundant DoClose() calls from Reopen()
2019-07-04 22:01:44 +02:00
Max Kellermann
0a32634d8f
output/alsa: check ring buffer space before writing to it
...
Pass only the amount of data to PcmExport::Export() when its full
output fits into the ring buffer. Using only a part of the
PcmExport::Export() result may cause data corruption because
PcmExport's internal state may contain partial blocks which would need
to be rolled back when only some of its output data was used.
As a side effect, this fixes an assertion failure because
PcmExport::CalcInputSize() considered partial block data and could
cause Play() to return a number larger than the "size" parameter.
2019-07-04 12:47:10 +02:00
Max Kellermann
b12fc3c60d
output/alsa: throw unexpected snd_pcm_writei() errors
...
If snd_pcm_writei() fails, throw an error and stop playback instead
of going into an endless busy loop.
2019-07-04 12:46:18 +02:00
Max Kellermann
6d013b092f
output/osx: remove trailing newline from exception messages
2019-07-03 22:21:43 +02:00
Max Kellermann
ccb182865c
output/osx: fix coding style
2019-07-03 22:12:47 +02:00