Max Kellermann
|
612def5c11
|
output/Internal: rename CloseFilter() to CloseSoftwareMixer()
|
2017-08-07 18:32:43 +02:00 |
|
Max Kellermann
|
04738636ca
|
output/Finish: fold internal function into FinishDestroy()
|
2017-08-07 18:15:15 +02:00 |
|
Max Kellermann
|
27d68d8fdd
|
output/Internal: move the Mutex to struct AudioOutputControl
struct AudioOutput should not know or care about multi-threading.
|
2017-08-07 17:44:46 +02:00 |
|
Max Kellermann
|
546b773b21
|
output/Internal: remove mutex code from Close()
|
2017-08-07 17:43:58 +02:00 |
|
Max Kellermann
|
6e2b348758
|
output/Internal: move the "open" flag to struct AudioOutputControl
|
2017-06-15 22:52:46 +02:00 |
|
Max Kellermann
|
613dd67784
|
output/Internal: move the AudioOutputSource to struct AudioOutputControl
|
2017-06-08 22:13:47 +02:00 |
|
Max Kellermann
|
58683f02ec
|
output/Thread: move the AudioOutputSource::Open() call to InternalOpen()
Prepare for moving the AudioOutputSource to class AudioOutputControl.
|
2017-06-08 22:08:01 +02:00 |
|
Max Kellermann
|
3010d182fc
|
output/Internal: move "really_enabled" flag to class AudioOutputControl
|
2017-06-08 09:55:49 +02:00 |
|
Max Kellermann
|
1fa1790da5
|
output/Internal: move the "pause" flag to struct AudioOutputControl
|
2017-05-23 11:23:10 +02:00 |
|
Max Kellermann
|
ebecee3d85
|
output/Internal: move "client" to struct AudioOutputControl
|
2017-05-23 00:32:03 +02:00 |
|
Max Kellermann
|
3907ddbcc4
|
output/{Internal,Control}: add "noexcept"
|
2017-05-23 00:17:23 +02:00 |
|
Max Kellermann
|
5eef146871
|
output/Internal: move several flags to struct AudioOutputControl
|
2017-05-22 23:40:20 +02:00 |
|
Max Kellermann
|
4faef28cc5
|
release v0.20.7
-----BEGIN PGP SIGNATURE-----
iQJEBAABCAAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlkaFL0QHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEr4ID/9iAQC+7fFv06uLOm48Ufu+PgoD8uJkAwF5
QuLQkc85g9urn+bu9N7Qs7Vypp7aLyGcJKY0jyA8wxkOj24pUC3GYk80daUt561V
5s20FnoS/Uoman3CSJL94IfCUBxejizE6vgIIHTc5bb6U0qIsPub/8JTTE2Ih7uP
nvFZ5uBQ+YTc7at+iIH9123eUMKkitkh8osNblovqQT9v42++Tm4ztAytRHBjwUA
Itew5HhlvahbLKqFs/7vmICh/YX1FcOV7cV+erEWYfkH0KCI2bhSle4u2d0CBOvD
VJlDnBCo9bM7WKcPYqJiFFFXA0CRk06wbkkkAtwF4zjp8xos7aQcq4FyQnYL8KXo
5lijIhRwBURBd+nt8oA9kuEhBt/T75otcemJkzVaYappHTJCLjhxSGcPt8mw+nE9
9WQzsp/MIVzg9l5g3D9S/43xM7uhvn98Tn1Qf2s8YRd2o8CZeOhW+X3RvbCvVPv2
mOlx4sFAv8DOJ3KxMdqiJT+PmylPyJluQdqH+tMc8BdPg/kpSpYIPTuSjjRqK1yh
ld5do0HtAAwiHtvXfk5YVFjJSpO0c8yVn6xci2Cl4k/5ZHj2UE1ln+N5vCea2BRF
2J3HAjROwtcwY3lU1jFnEAogf24KWiFJqhhC0EqBGUdlrM8Dn37P5cEWWjROIMNK
lPEdovokNw==
=CdDy
-----END PGP SIGNATURE-----
Merge tag 'v0.20.7'
release v0.20.7
|
2017-05-15 23:01:49 +02:00 |
|
Max Kellermann
|
71f0ed8b74
|
*: add "noexcept" to many, many function prototypes
This eliminates some overhead, because the compiler doesn't need to
consider these functions throwing.
|
2017-05-08 14:44:49 +02:00 |
|
Max Kellermann
|
89b900432e
|
output/Internal: move thread-specific stuff to AudioOutputControl
The AudioOutput struct (which is exposed to all plugins) should not be
aware that it's being controlled by another thread.
|
2017-04-28 22:04:30 +02:00 |
|
Max Kellermann
|
59181ac5fb
|
output/Thread: move code to BeginPause(), IteratePause()
|
2017-04-28 22:01:20 +02:00 |
|
Max Kellermann
|
c788c76dc9
|
output/Internal: add method IsBusy()
|
2017-04-18 23:15:46 +02:00 |
|
Max Kellermann
|
781487c4dd
|
thread/Thread: use BoundMethod
|
2017-02-10 22:46:09 +01:00 |
|
Max Kellermann
|
5900253b85
|
update copyright year
|
2017-01-03 20:48:59 +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
|
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 |
|