Max Kellermann
78a73eac53
pcm/Export: add (dummy) method Cancel()
...
We'll have some code for it soon.
2017-01-11 15:41:28 +01:00
Max Kellermann
533cb99c33
output/Source: reset all filters in Cancel()
2017-01-11 15:39:18 +01:00
Max Kellermann
79726940dc
output/Source: un-inline Cancel()
2017-01-11 15:39:00 +01:00
Max Kellermann
9c4df66925
pcm/Export: halve the sample rate for DoP
...
Move this sample rate fixup from the ALSA output plugin to PcmExport,
where it belongs.
2017-01-11 10:33:23 +01:00
Max Kellermann
c143adba91
pcm/Export: add CalcOutputSampleRate(), CalcInputSampleRate()
...
Prepare for DSD sample rate fixups.
2017-01-10 23:48:26 +01:00
Max Kellermann
5900253b85
update copyright year
2017-01-03 20:48:59 +01:00
Max Kellermann
3c565baf9d
output/Source: clear current_chunk in Close()
...
Fixes assert failure after unpausing.
2017-01-03 10:50:02 +01:00
Max Kellermann
2e182e84c3
thread/Mutex: remove ScopeLock, use std::lock_guard directly
2017-01-03 07:11:57 +01:00
Max Kellermann
4484411a77
output/Internal: add various trivial getter methods
2016-12-29 23:28:54 +01:00
Max Kellermann
61a151c803
output/State: add missing mutex lock
2016-12-29 23:28:46 +01:00
Max Kellermann
5149c950aa
output/Multiple: add missing mutex lock
2016-12-29 23:28:46 +01:00
Max Kellermann
18f4d846c9
output/Internal: make the Mutex mutable
2016-12-29 23:28:37 +01:00
Max Kellermann
db95aa250d
output/Control: pass "force" flag to LockUpdate()
...
Reduce overhead by eliminating MultipleOutputs::ResetReopen().
2016-12-29 23:20:26 +01:00
Max Kellermann
982d1bf662
output/Init: convert audio_output_setup() to method
2016-12-29 22:59:03 +01:00
Max Kellermann
256f40d4f5
output/Multiple: obtain detailed error information in Open()
2016-12-29 14:46:13 +01:00
Max Kellermann
ef9acc54ec
output/Internal: remember the most recent error
2016-12-29 14:21:12 +01:00
Max Kellermann
a9f2d25957
output/Thread: unify exception handling
2016-12-29 14:10:37 +01:00
Max Kellermann
4011899846
system/PeriodClock: use std::chrono::steady_clock
2016-12-28 22:23:45 +01:00
Max Kellermann
28e743ba70
output/Timer: include cleanup
2016-12-28 22:23:45 +01:00
Max Kellermann
71e7d32b08
output/Timer: use std::chrono
2016-12-28 22:00:33 +01:00
Max Kellermann
d5e422970c
output/Plugin: delay() returns std::chrono::steady_clock::duration
2016-12-28 22:00:29 +01:00
Max Kellermann
a3ca9963a5
output/Timer: pass size_t to Add()
2016-12-28 10:17:29 +01:00
Max Kellermann
2d3c23876c
output/Timer: use C++11 initializers
2016-12-28 10:16:41 +01:00
Max Kellermann
bd8d8eef3e
output/Timer: no "time" initialization if !started
2016-12-28 10:16:11 +01:00
Max Kellermann
9e33074735
output/Thread: move software_mixer_set_filter() call to Open()
...
.. and remove the obsolete method OpenFilter().
2016-12-27 14:44:39 +01:00
Max Kellermann
d6d465cdf4
output/Thread: fix assertion failure in CLOSE handler
...
Convert assertion to runtime check; this assertion could fail when the
output was closed due to an error before CLOSE arrived.
2016-12-27 07:57:22 +01:00
Max Kellermann
e76573cc1a
output/Thread: use "true" instead of "1"
2016-12-27 07:53:02 +01:00
Max Kellermann
3fa6dc71e2
output/Source: add assertion
2016-12-26 20:10:00 +01:00
Max Kellermann
6fec269844
output/SharedPipeConsumer: add thread-safety documentation
2016-12-26 20:09:10 +01:00
Max Kellermann
b6004b6837
output/Source: release the mutex while the filter runs
...
The filter can take some time to finish, even more so on a weak
machine with a saturated CPU. By not holding the mutex during that
time, we can reduce PlayerThread latency a lot, because that thread
needs to synchronize a lot with all outputs.
2016-12-26 20:02:15 +01:00
Max Kellermann
86d3b25aec
output/Source: add Fill(), ReadTag(), PeekData(), ConsumeData()
...
Don't expose MusicChunk instances, provide higher-level access to
chunk contents.
2016-12-26 13:53:22 +01:00
Max Kellermann
8a407bfbb0
output/Thread: move code to new class AudioOutputSource
2016-12-26 13:35:19 +01:00
Max Kellermann
d30a590d9e
configure.ac: use MPD_AUTO for libsndio and Haiku
2016-12-26 13:35:19 +01:00
Max Kellermann
f95e404be1
outputThread: optimize Command::OPEN
...
Try harder to skip steps (reopen filter, reopen output) if the
AudioOutput is already open.
2016-12-24 14:05:11 +01:00
Max Kellermann
ffb8b4fc68
output/Internal: add method ClearTailChunk()
2016-12-22 14:46:59 +01:00
Max Kellermann
f86d6b0162
output/Control: move pipe initialization to the OutputThread
...
Un-protect the SharedPipeConsumer instance, and make it available in
the OutputThread only. This gives more well-defined mutex protection.
2016-12-22 14:04:38 +01:00
Max Kellermann
71c72ed072
output/Control: use Command::OPEN to unpause, remove special case
2016-12-22 14:04:38 +01:00
Max Kellermann
a8d343e07b
output/Thread: update in_audio_format before ReopenFilter()
2016-12-22 14:04:34 +01:00
Max Kellermann
d020172181
output/Thread: keep the device open if the audio format hasn't changed
...
Add another condition to Reopen() which allows keeping it open.
2016-12-21 17:45:01 +01:00
Max Kellermann
e5c9f6c1fe
output/Internal: add attribute request.audio_format
...
Make in_audio_format accessible only from within the OutputThread, and
add a new one for inter-thread communication.
2016-12-21 17:00:29 +01:00
Max Kellermann
176dc11748
output/Thread: ao_filter_chunk() throws exception on error
...
Move the error logging to AudioOutput::PlayChunk().
2016-12-20 17:40:11 +01:00
Max Kellermann
c2abd02b9b
output/Thread: use ConstBuffer::skip_front()
2016-12-20 17:38:08 +01:00
Max Kellermann
12ecfdd423
output/Thread: convert pointer to reference
2016-12-20 17:35:38 +01:00
Max Kellermann
67cfbfc2f3
output/SharedPipeConsumer: update API documentation
2016-12-20 16:35:14 +01:00
Max Kellermann
ccb45b6f6e
output/Client: new interface to replace direct access to class PlayerControl
2016-12-14 20:29:15 +01:00
Max Kellermann
ece5971027
output/Multiple: move Wait() to struct PlayerControl
...
Eliminate a dependency from MultipleOutputs on PlayerControl.
2016-12-14 19:37:01 +01:00
Max Kellermann
7e1b53480e
output/MultipleOutputs: parallelize EnableDisable()
2016-12-14 08:41:42 +01:00
Max Kellermann
6425b4f9f5
output/MultipleOutputs: parallelize AudioOutput destruction
...
Reduce latency by stopping all AudioOutputs asynchronously.
2016-12-14 08:35:07 +01:00
Max Kellermann
fb907f5f76
output/Thread: KILL implicitly closes and disables the AudioOutput
...
Reduce shutdown latency by two commands per output.
2016-12-14 08:29:09 +01:00
Max Kellermann
b107a1583f
output/MultipleOutputs: move code to AudioOutput::EnableDisableWait()
2016-12-14 08:00:43 +01:00