Commit Graph

1228 Commits

Author SHA1 Message Date
Max Kellermann 1c07f197de Filter/Plugin: migrate from class Error to C++ exceptions 2016-09-04 20:07:05 +02:00
Max Kellermann 13c32111a0 Filter/Internal: migrate from class Error to C++ exceptions 2016-09-04 19:38:41 +02:00
Max Kellermann 12091fcfb1 thread/Util: throw exception on error 2016-09-04 15:15:11 +02:00
Max Kellermann 3fea624cca output/Thread: use Close() after error in ReopenFilter()
Now that CloseFilter() may be called again, we can reduce code
duplication.
2016-09-04 15:09:51 +02:00
Max Kellermann 9007dd9ab7 output/Thread: clear Filter pointers in CloseFilter()
This allows calling CloseFilter() multiple times.
2016-09-04 15:09:05 +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
Earnestly e2f6cc9c9f Don't overwrite ss.format
Currently the switch statement is invalidated by ss.format being overwritten
with the default value of PA_SIMPLE_S16NE which results in white noise during
playback as my server is expected S16LE (S16NE).

Signed-off-by: Earnestly <zibeon@gmail.com>
2016-08-23 10:01:56 +02:00
Max Kellermann ba69ade024 Compiler.h: add macro CLANG_OR_GCC_VERSION() 2016-08-23 09:48:58 +02:00
Max Kellermann ea0e6d9824 fs/FileSystem: RemoveFile() throws exception on error 2016-08-15 22:25:15 +02:00
Max Kellermann 743fa73a01 Merge branch 'v0.19.x' 2016-08-15 12:33:07 +02:00
Nils Schneider 62000670e3 Support S24_P32/S32/FLOAT sample formats on Pulse
This is based on a patch from Ian Scott in 2014. It was never committed,
so I figured I'd fix the outstanding issue and resubmit it.

https://www.mail-archive.com/mpd-devel%40musicpd.org/msg00139.html
2016-08-15 10:02:29 +02:00
Max Kellermann ac49043fbb output/pulse: move variable declaration down 2016-08-15 10:02:22 +02:00
Jacob Vosmaer 4d6192adcd Use a ScopeLock around condition.wait() 2016-08-07 15:47:21 +02:00
Jacob Vosmaer 9f1ada898e Improve readability of frame completion loop 2016-08-07 14:15:55 +02:00
Jacob Vosmaer 5617521380 Must lock/unlock around wait 2016-08-06 15:25:58 +02:00
Jacob Vosmaer 9835a2545d Do not assume two pops are enough 2016-08-06 15:19:10 +02:00
Jacob Vosmaer c28cefeeb0 output/osx: wait-free render callback
Closes https://bugs.musicpd.org/view.php?id=4537 .

Removed the 'cancel' function because it violates 'single producer,
single consumer'.
2016-08-06 00:08:10 +02:00
Max Kellermann 2777a23672 Merge branch 'v0.19.x' 2016-07-29 20:25:59 +02:00
Max Kellermann 83aed7051c output/shout: rename "encoding" to "encoder"
The user manual specifies "encoder", which is consistent with other
output plugins.  "encoding" should be deprecated.
2016-07-29 10:52:03 +02:00
Jacob Vosmaer ad80acb22a output/osx: remove incorrect memset behavior
In e068d62 I added code that zeros the remainder of the output buffer
if there are not enough input frames available. I have now learned
that we can signal to the caller of the render callback how much data
is in the output buffers. In practice, the input buffer is so large
that it does not matter so much how we handle input buffer underruns,
but I suppose that saying 'there is no data' is better than 'here is
some silence for you'.
2016-07-22 20:58:37 +02:00
Jacob Vosmaer 4cd9abe632 output/osx channel_map feature 2016-07-09 18:29:35 +02:00
Max Kellermann b67e7df38e Merge tag 'v0.19.17'
release v0.19.17
2016-07-09 00:46:09 +02:00
Jacob Vosmaer e068d62ac6 output/osx rewrite render callback 2016-07-08 15:36:42 +02:00
Max Kellermann 1c7de0b4ac output/shout: remove pointless memset() call 2016-07-05 18:02:35 +02:00
Jacob Vosmaer 2fdbae3e1f Remove braces 2016-07-03 16:45:23 +02:00
Jacob Vosmaer 87e06793c2 Get rid of GetMacOSStatusCommentString 2016-07-03 14:06:53 +02:00
Jacob Vosmaer 8cc451a2e2 Use error.Set instead of error.Format 2016-07-03 13:36:35 +02:00
Jacob Vosmaer 723c2c7fa9 Remove some debugging code 2016-07-03 13:18:44 +02:00
Jacob Vosmaer 4dd2c5cdd5 Convert device name from CFStringRef to char* 2016-07-03 12:59:19 +02:00
Jacob Vosmaer bdc257b40e Add debug statements 2016-07-02 23:44:21 +02:00
Jacob Vosmaer 4728f7c697 Use AudioComponent instead of Carbon Component 2016-07-02 23:35:44 +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
Dimitris Papastamos 4a6df9f961 output/sndio: Remove unused attribute
The variable is actually used in this function.
2016-06-24 09:11:36 +02:00
Dimitris Papastamos a43ae2369b output/sndio: Add 24-bit 4-byte packed audio format support 2016-06-24 09:11:30 +02:00
Dimitris Papastamos 9a049de859 output/sndio: No need to use a loop in Play()
This is a left-over from the previous version of the code
that was retrying on EINTR.
2016-06-24 09:10:57 +02:00
Dimitris Papastamos 58b8398aa0 output/sndio: Use size_t instead of ssize_t
Some minor style fixes as well.
2016-06-23 11:11:42 +02:00
Max Kellermann 645751f680 output/Init: use C++11 initializers 2016-06-22 18:44:00 +02:00
Dimitris Papastamos 26c0924461 sndio: Eliminate remaining goto usage to conform to MPD style 2016-06-22 16:10:46 +02:00
Dimitris Papastamos d4f801a8e9 sndio: Fix segmentation fault when audio card is removed
This can happen if you remove an external audio card or if you stop
sndiod(8) while playing a song.

sio_write() will retry internally if it fails with errno == EINTR
so no need to handle that.
2016-06-22 16:10:38 +02:00
Dimitris Papastamos 8406864963 sndio: Allow tweaking application buffer size
It defaults to 250 ms.
2016-06-22 16:09:57 +02:00
Dimitris Papastamos d68cadba7b sndio: No need to use a timer so get rid of it 2016-06-22 11:28:58 +02:00
Max Kellermann 1207fd1f16 output/sndio: remove unnecessary initialization 2016-06-22 11:01:37 +02:00
Dimitris Papastamos 8aa61e230c sndio: Add option to select output device 2016-06-22 11:00:06 +02:00
Max Kellermann 2c7bda8a3b output/sndio: define SIO_DEVANY if it is undefined
Fixes build failure on Debian Wheezy.
2016-06-22 10:58:44 +02:00
Dimitris Papastamos d58c5dd398 sndio: Implement sndio_test_default_device() 2016-06-22 10:54:59 +02:00
Dimitris Papastamos 171da7a347 Add sndio output plugin 2016-06-22 08:44:47 +02:00
Max Kellermann d3c7fac606 thread/Thread: throw std::system_error on error 2016-06-17 19:11:20 +02:00
Max Kellermann b376536a3b encoder/Interface: convert PreparedEncoder to abstract class 2016-05-04 18:32:52 +02:00
Max Kellermann e7edc02647 encoder/Interface: move instance methods to abstract class
Rename struct Encoder to PreparedEncoder, and add a new (abstract)
class Encoder which represents one encoder instance.
2016-05-04 16:32:31 +02:00