Max Kellermann
c1eb0583c4
output/alsa: add "full" assertion to WriteFromPeriodBuffer()
2019-06-27 21:22:52 +02:00
Max Kellermann
549faa8a9c
output/alsa: add full check before calling FillWithSilence()
2019-06-27 21:20:38 +02:00
Max Kellermann
8f6c750064
output/alsa: improve silence generator test in DrainInternal()
...
There cannot be partial frames in the buffer, so we don't need
GetPeriodPosition(); it's enough to check whether head has been moved
in this period.
2019-06-27 21:17:37 +02:00
Max Kellermann
9fc1668de3
output/alsa: hold back snd_pcm_writei() until period_buffer is full
...
This gives MPD more control, because attempts to avoid having partial
periods in the ALSA period buffer. For example, this means that
DrainInternal() doesn't need to generate silence to fill the partial
period.
2019-06-27 15:40:07 +02:00
Max Kellermann
2f243f2295
pcm/Export: rename GetFrameSize() to GetOutputFrameSize()
2019-06-26 15:46:49 +02:00
Max Kellermann
e69fd0300a
pcm/Export: rename CalcSourceSize() to CalcInputSize()
2019-06-26 15:46:05 +02:00
Max Kellermann
f43cafbf7d
pcm/Export: eliminate the AudioFormat parameter from GetFrameSize()
2019-06-26 15:42:47 +02:00
Max Kellermann
28e07e900f
pcm/Export: convert the DSD bools to an enum
...
These options are exclusive.
2019-06-17 22:35:00 +02:00
Max Kellermann
c75dc4a647
output/osx: remove redundant initializer
2019-06-17 22:35:00 +02:00
Max Kellermann
47bb1cd8b5
output/{alsa,osx}: use ConstBuffer::empty()
2019-06-17 22:09:47 +02:00
Max Kellermann
ccc96e25d3
output/{alsa,osx}: remove comment after PcmExport::Export()
...
Returning an empty buffer is a normal result now (since commit
79839db3a3 ), and doesn't deserve such a
big comment.
2019-06-17 22:09:06 +02:00
Max Kellermann
33f5e03e80
Merge branch 'v0.21.x'
2019-06-17 22:06:54 +02:00
Max Kellermann
79839db3a3
output/oss: return early if PcmExport::Export() returns empty array
...
This can happen if the DoP converter doesn't get enough source samples
for one destination quad. This isn't a critical bug, because the OSS
plugin doesn't support DoP yet, but it's good to be prepared.
2019-06-17 21:07:30 +02:00
Max Kellermann
fd7caab872
output/winmm: fix build breakage after e87f0ca771
2019-06-17 12:23:34 +02:00
Max Kellermann
e87f0ca771
pcm/Pcm*: drop more "Pcm" prefixes from source file names
2019-06-17 11:17:48 +02:00
Max Kellermann
a139279575
Copyright year 2019
2019-06-17 11:17:30 +02:00
Max Kellermann
fd5e74dbd0
pcm/Pcm{Dop,Export}: drop "Pcm" prefix
2019-06-16 12:11:44 +02:00
Max Kellermann
3055c1266d
output/osx: don't use variable-length arrays
2019-06-08 11:51:15 +02:00
Max Kellermann
931c3a1de0
output/osx: convert int to size_t
2019-06-08 11:49:15 +02:00
Max Kellermann
adffbba2a5
Merge tag 'v0.21.10'
...
release v0.21.10
2019-06-05 22:38:54 +02:00
cathugger
f9ca2f52c1
output/httpd: reject some well-known request paths
...
Return `404 not found` for some common well-known paths, as clients requesting them usually do that automatically and don't expect endless audio stram.
Closes #572
2019-06-05 21:53:46 +02:00
cathugger
4b81cf0c2c
output/httpd: use strncmp instead of memcmp
...
memcmp use may result in out of bounds access
2019-06-05 21:53:46 +02:00
Max Kellermann
e7acbf112c
output/httpd: fix indent
2019-06-05 21:53:43 +02:00
Max Kellermann
620a39afb4
thread/Slack: use std::chrono::duration
2019-05-29 21:11:32 +02:00
Max Kellermann
9d1906da8a
{event,output}/Thread: downgrade realtime scheduling errors to "info"
...
These messages can be confusing, but they are not critical.
2019-05-23 14:24:27 +02:00
Max Kellermann
973c87b351
event/Call, ...: use wait() with predicate
2019-05-07 20:01:45 +02:00
Max Kellermann
0a0cc66e8f
thread/Mutex: use using instead of making it a derived class
...
Prepare the transition to std::mutex.
2019-05-07 19:23:01 +02:00
Max Kellermann
23d56cb6a1
output/Control: pass std::unique_lock<> to Cond::wait()
2019-04-26 18:28:44 +02:00
Max Kellermann
4473816384
output/Control: add LockEnableDisableAsync()
2019-04-26 18:28:09 +02:00
Max Kellermann
2c8d004f78
output/Control: add LockWaitForCommand()
2019-04-26 18:25:36 +02:00
Max Kellermann
684bd9153e
output/MultipleOutputs: simplify locking in CheckPipe()
...
Instead of keeping all open outputs locked, let ClearTailChunk() stall
playback until MultipleOutputs::CheckPipe() has updated the MusicPipe.
2019-04-26 18:13:14 +02:00
Max Kellermann
ec456fc57c
output/MultipleOutputs: make variable more local
2019-04-26 18:13:02 +02:00
Max Kellermann
7c92eb4360
output/Control: add noexcept
2019-04-26 17:53:27 +02:00
Max Kellermann
376f4a2b16
output/MultipleOutputs: wrap AudioOutputControl in std::unique_ptr<>
2019-04-26 14:28:59 +02:00
Max Kellermann
b42f19f514
output/Control: implicitly call BeginDestroy() in destructor
2019-04-26 14:28:30 +02:00
Max Kellermann
92022658f9
thread/Cond: add wait() overload which takes a unique_lock<>
...
Just like std::condition_variable, which however has no way to specify
the std::mutex directly.
2019-04-26 11:51:45 +02:00
Max Kellermann
b51bae5500
thread/*Cond: rename methods to match std::condition_variable
2019-04-25 19:46:43 +02:00
Max Kellermann
ea5e6d8f33
Merge branch 'v0.21.x'
2019-04-04 10:29:58 +02:00
Max Kellermann
325c7b8e8b
output/httpd: close client connection on error
...
This missing piece probably never really hurt, because
HttpdClient::OnSocketClosed() would be called right after a socket
error, but it's better to be explicit about closing on error.
2019-04-04 09:39:22 +02:00
Max Kellermann
380656d8c9
output/httpd: add missing mutex lock
2019-04-03 22:53:03 +02:00
Max Kellermann
9111bc2c21
output/httpd: add more API documentation about locking
2019-04-03 22:49:25 +02:00
Max Kellermann
7a1b56fe96
Merge tag 'v0.21.7'
...
release v0.21.7
2019-04-03 12:32:20 +02:00
François Revol
0d8942e64a
Haiku: remove redundant calls to delete_sem()
...
Fixes #184 .
Semaphores are kernel-managed objects, calling delete_sem() twice is not more
dangerous than calling close() twice on an fd though, it would just return
an error.
2019-03-29 14:33:49 +01:00
Max Kellermann
3a901098e9
Merge tag 'v0.21.6'
...
release v0.21.6
2019-03-17 23:58:54 +01:00
Max Kellermann
b76d78e6ae
output/sles: enable power saving mode
2019-03-17 18:04:40 +01:00
Jacob Vosmaer
0a6e484b1a
output/plugins/OSXOutputPlugin: add boost meson dependency
2019-03-17 16:59:24 +01:00
Max Kellermann
a66097129d
Merge branch 'v0.21.x'
2019-03-16 14:08:22 +01:00
Max Kellermann
0bb71f1f20
output/pulse: use pa_channel_map_init_extend() instead of _auto()
...
Unlike pa_channel_map_init_auto(), pa_channel_map_init_extend() does
not fail if there is no valid mapping for the given channel count, but
instead maps additional "AUX" channels.
Closes https://github.com/MusicPlayerDaemon/MPD/issues/493
2019-03-16 14:03:10 +01:00
Max Kellermann
c176d94598
system/ByteOrder: move to util/
2019-03-08 10:21:10 +01:00
Yue Wang
42b22187c8
[OSXOutput] Throw an error when device not found
...
Currently it falls back to system default device (either internal speaker or headphone) when device not found.
I believe it is a better to fail in this case, to make it better aligned with platforms (such as alsa).
2019-01-25 19:50:27 -08:00