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
|
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
|
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
|
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
|
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
|
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
|
12ecfdd423
|
output/Thread: convert pointer to reference
|
2016-12-20 17:35:38 +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
|
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 |
|