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
|
b107a1583f
|
output/MultipleOutputs: move code to AudioOutput::EnableDisableWait()
|
2016-12-14 08:00:43 +01:00 |
|
Max Kellermann
|
ced3f320eb
|
output/MultipleOutputs: reduce lock/unlock calls in EnableDisable()
Use ScopeLock to manage the lock; don't unlock after obtaining the
"really_enabled" flag; keep the same lock during EnableWait() /
DisableWait().
|
2016-12-14 07:54:05 +01:00 |
|
Max Kellermann
|
ceba6816de
|
output/Thread: split Open()
Simplify the code, eliminate duplicate rollback code and eliminate the
"goto" kludge.
|
2016-12-13 21:46:27 +01:00 |
|
Max Kellermann
|
f8164a3dd1
|
output/Thread: unlock mutex during OpenFilter()
|
2016-12-13 21:24:14 +01:00 |
|
Max Kellermann
|
2bf91a0487
|
output/Internal: merge REOPEN and OPEN
|
2016-12-13 20:07:00 +01:00 |
|
Max Kellermann
|
2775d747ac
|
output/Thread: move MusicPipe code to class SharedPipeConsumer
|
2016-12-13 16:33:23 +01:00 |
|
Max Kellermann
|
dc05dd7ca1
|
output/Multiple: make chunk_is_consumed_in() an AudioOutput method
|
2016-12-11 21:59:28 +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
|
5f396e824f
|
ReplayGainMode: convert to strictly-typed enum
|
2016-11-24 17:34:57 +01:00 |
|
Max Kellermann
|
4f229c254c
|
ReplayGainInfo: move enum ReplayGainMode to separate header
|
2016-11-24 17:34:57 +01:00 |
|
Max Kellermann
|
d9cb85df83
|
output/Plugin: remove 'Error&' parameters, use C++ exceptions only
|
2016-11-09 12:36:21 +01:00 |
|
Max Kellermann
|
cf2b814629
|
output/Init: migrate Configure() from class Error to C++ exceptions
|
2016-11-09 12:06:54 +01:00 |
|
Max Kellermann
|
bbe7a37359
|
output/Internal: hide Configure() and remove the non-configuring constructor
|
2016-11-09 12:06:06 +01:00 |
|
Max Kellermann
|
c4acccac14
|
output/Init: add constructor overload which calls Configure()
|
2016-10-28 22:41:07 +02:00 |
|
Max Kellermann
|
0c464b24ad
|
OutputInit: allow "init" to throw exception
|
2016-10-28 21:11:52 +02:00 |
|
Max Kellermann
|
13c32111a0
|
Filter/Internal: migrate from class Error to C++ exceptions
|
2016-09-04 19:38:41 +02:00 |
|
Max Kellermann
|
08166cf330
|
output/Internal: initialize the Filter pointers
With the configuration "replay_gain_handler none", the Filter pointers
are never initialized, which can crash MPD.
https://bugs.musicpd.org/view.php?id=4571
|
2016-09-04 15:05:42 +02:00 |
|
Max Kellermann
|
3a21241248
|
filter/FilterInternal: split class Filter, add class PreparedFilter
For easier state management inside filter plugins.
|
2016-07-01 21:04:24 +02:00 |
|
Max Kellermann
|
a43b0f5253
|
mixer/software: move Filter management to the AudioOutput
|
2016-07-01 18:23:53 +02:00 |
|
Max Kellermann
|
645751f680
|
output/Init: use C++11 initializers
|
2016-06-22 18:44:00 +02:00 |
|
Max Kellermann
|
1d67aa7bf2
|
update copyright year to 2016
|
2016-02-26 17:54:05 +01:00 |
|
Max Kellermann
|
bef8c83388
|
OutputThread: move code to CloseOutput()
|
2015-06-22 13:02:13 +02:00 |
|
Max Kellermann
|
4fa5538e2b
|
config/Param: split block-specific attributes to new struct ConfigBlock
The old struct config_param remains only for top-level string options.
|
2015-01-21 23:56:33 +01:00 |
|
Max Kellermann
|
712ed555e6
|
Copyright year 2015
|
2015-01-01 19:48:13 +01:00 |
|
Max Kellermann
|
c5409d52f5
|
output/Internal: move enum AudioOutputCommand into the struct
|
2014-12-24 22:18:47 +01:00 |
|
Max Kellermann
|
54fc8f0e8c
|
output/Internal: convert audio_output_command to strictly-typed enum
|
2014-12-24 22:13:50 +01:00 |
|
Max Kellermann
|
8fc3768166
|
OutputThread: unlock mutex for CloseFilter()
Be consistent.
|
2014-10-24 00:29:03 +02:00 |
|
Max Kellermann
|
c94b4466d5
|
MusicChunk: rename struct to MusicChunk
|
2014-08-12 15:56:41 +02:00 |
|
Max Kellermann
|
8d6fedf817
|
Mixer: add class MixerListener
Use a listener interface instead of GlobalEvents.
|
2014-02-19 21:40:14 +01:00 |
|
Max Kellermann
|
e8938b1069
|
MixerPlugin: add EventLoop& init() parameter
|
2014-02-05 00:02:02 +01:00 |
|
Max Kellermann
|
667481c371
|
OutputThread: move more functions into the AudioOutput class
|
2014-01-29 09:26:11 +01:00 |
|
Max Kellermann
|
af71605769
|
output: rename "chunk" to "current_chunk"
|
2014-01-29 09:23:57 +01:00 |
|
Max Kellermann
|
4657a3bd0f
|
output: move functions into the AudioOutput struct
|
2014-01-29 08:10:46 +01:00 |
|
Max Kellermann
|
cb7366f472
|
AudioOutput: make "plugin" a reference
|
2014-01-29 08:10:36 +01:00 |
|
Max Kellermann
|
bf803e241f
|
AudioOutput: pass plugin to constructor
Make it "const".
|
2014-01-29 08:10:18 +01:00 |
|
Max Kellermann
|
c4403c523f
|
AudioOutput: add constructor and destructor
|
2014-01-28 12:37:58 +01:00 |
|
Max Kellermann
|
68b79f97f3
|
output: rename source files
|
2014-01-28 11:42:54 +01:00 |
|