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
2e182e84c3
thread/Mutex: remove ScopeLock, use std::lock_guard directly
2017-01-03 07:11:57 +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
35a2a48c47
Merge branch 'v0.19.x'
2016-11-17 22:20:24 +01:00
Max Kellermann
5c3e55b5b1
{input,output}/alsa: fix gcc 7.0 -Wimplicit-fallthrough
2016-11-16 19:50:38 +01:00
Dave Hocker
f6a85f0b0b
output/osx: fix build failure
2016-11-10 12:55:08 +01:00
Max Kellermann
d9cb85df83
output/Plugin: remove 'Error&' parameters, use C++ exceptions only
2016-11-09 12:36:21 +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
d0aa154ea6
output/null: migrate from class Error to C++ exceptions
2016-11-09 12:03:20 +01:00
Max Kellermann
df4616ae4a
output/osx: migrate from class Error to C++ exceptions
...
Beware, this commit was not tested. I don't have OS X, but I want to
prepare an API change.
2016-11-09 11:51:28 +01:00
Max Kellermann
10f62db9fd
output/osx: use std::unique_ptr
...
Eliminate all those "goto"s and make the function exception-safe.
2016-11-09 11:50:14 +01:00
Max Kellermann
5c075210d6
output/osx: use AtScopeExit() to call CFRelease()
2016-11-09 11:49:21 +01:00
Max Kellermann
0cf85b0771
output/haiku: eliminate DoClose()
2016-11-09 11:42:00 +01:00
Max Kellermann
fa90047e52
output/haiku: migrate from class Error to C++ exceptions
...
Beware, this commit was not tested. I don't have Haiku, but I want to
prepare an API change.
2016-11-09 11:39:11 +01:00
Max Kellermann
b9f64fe19b
output/haiku: embed "format" into the HaikuOutput class
...
Avoid one level of dynamic allocation.
2016-11-09 11:36:38 +01:00
Max Kellermann
dd072912e8
output/solaris: migrate from class Error to C++ exceptions
2016-11-09 11:18:19 +01:00
Max Kellermann
9dbdc75689
output/httpd: migrate from class Error to C++ exceptions
2016-11-09 08:40:10 +01:00
Max Kellermann
dce211dbba
output/sles: migrate from class Error to C++ exceptions
2016-11-09 08:35:35 +01:00
Max Kellermann
b4e5fa5c1b
output/roar: migrate from class Error to C++ exceptions
2016-11-09 08:29:44 +01:00
Max Kellermann
f12fa7e20a
output/shout: migrate from class Error to C++ exceptions
2016-11-08 15:40:19 +01:00
Max Kellermann
96f8f1da0c
output/OpenAL: migrate from class Error to C++ exceptions
2016-11-08 15:19:30 +01:00
Max Kellermann
db7eec042e
output/sndio: migrate from class Error to C++ exceptions
2016-11-08 15:15:16 +01:00
Max Kellermann
52aed3f8a1
output/jack: migrate from class Error to C++ exceptions
2016-11-08 15:11:21 +01:00
Max Kellermann
cadd186f1b
output/jack: use AtScopeExit()
2016-11-08 15:10:38 +01:00
Max Kellermann
dd9ab16d67
output/recorder: migrate from class Error to C++ exceptions
2016-11-07 09:48:10 +01:00
Max Kellermann
d8b6aff23a
encoder: migrate from class Error to C++ exceptions
2016-11-07 09:25:51 +01:00
Max Kellermann
4aab97ccb1
config/Path: throw std::runtime_error on error
2016-11-07 09:07:50 +01:00
Max Kellermann
1859ba5ec8
output/winmm: 8 bit playback is not supported
...
Everything must be S16.
2016-11-07 08:53:57 +01:00
Max Kellermann
54d5184255
output/winmm: use std::array
2016-11-07 08:50:58 +01:00
Max Kellermann
0c5b986fc4
output/winmm: use range-based "for"
2016-11-07 08:28:41 +01:00
Max Kellermann
7b2cdd618e
output/winmm: use AudioOutputWrapper
2016-11-07 08:08:42 +01:00
Max Kellermann
30bb3f1fcb
output/winmm: migrate from class Error to C++ exceptions
2016-11-07 07:42:18 +01:00
Max Kellermann
b45ea66175
output/pipe: migrate from class Error to C++ exceptions
2016-11-05 15:24:10 +01:00
Max Kellermann
543c5034af
output/fifo: migrate from class Error to C++ exceptions
2016-11-05 15:13:14 +01:00
Max Kellermann
c8aa7afdc6
output/oss: migrate from class Error to C++ exceptions
2016-11-05 13:18:45 +01:00
Max Kellermann
b35bb1b50c
output/alsa: use C++ initializers
2016-11-04 11:31:23 +01:00
Max Kellermann
6341be9cdf
output/alsa: migrate from class Error to C++ exceptions
2016-11-04 11:31:23 +01:00
Max Kellermann
93a14a93f9
output/alsa: use Error::FormatPrefix()
2016-11-04 11:31:23 +01:00
Max Kellermann
65e6755b8b
output/ao: migrate from class Error to C++ exceptions
2016-11-02 12:36:13 +01:00
Max Kellermann
6ead9750f4
output/pulse: migrate from class Error to C++ exceptions
2016-11-02 11:01:22 +01:00
Max Kellermann
6532c7e089
output/pulse: use C++11 initializers
2016-11-02 11:01:07 +01:00
Max Kellermann
e2b7c30811
event/BufferedSocket: pass std::exception_ptr to OnSocketError()
2016-11-02 10:38:05 +01:00
Max Kellermann
e17805f208
config/Block: GetPath() throws exception on error
2016-10-28 23:08:42 +02:00
Max Kellermann
d8bcdca55a
config/Block: rename GetBlockPath() to GetPath()
2016-10-28 23:07:26 +02:00
Max Kellermann
f6f2a3b366
output/alsa: throw C++ exception on init error
2016-10-28 22:56:27 +02:00
Max Kellermann
d52c7e7a1b
output/httpd: throw C++ exception on init error
2016-10-28 22:42:10 +02:00
Max Kellermann
0c343cb1c3
encoder/Plugin: migrate from class Error to C++ exceptions
2016-10-28 21:29:01 +02:00
Max Kellermann
aead221184
event/ServerSocket: migrate from class Error to C++ exceptions
2016-10-28 21:22:25 +02:00
Yue Wang
d73267df5e
use osx_output_delay to wait until ring buffer is able to write
...
This further optimize the performance.
This is now working properly with a conditional variable bug being fixed (8bbfb5cda1
).
2016-09-19 08:51:03 -07:00
Yue Wang
f881917d2f
Fix a bug that buffer_frame_size is not properly initialized
2016-09-18 21:09:57 -07:00
Yue Wang
99244f51b0
Remove unused imports
2016-09-18 19:40:55 -07:00
Yue Wang
606d029ed9
Kill mutex and locks in osx_render. Improve performance. Also fix an initialization problem
2016-09-18 19:40:04 -07:00
Yue Wang
e4b9d679fb
options for sample rate syncing and device hogging
2016-09-18 19:12:45 -07:00
Yue Wang
4a8a33ea85
Hogging is for user selected device only.
...
do not hog system device.
2016-09-18 13:15:46 -07:00
Yue Wang
ac4b83046a
Add sample rate synchronization and device hogging to core audio plugin
...
which ensures mpd do bit perfect playback on OS X
2016-09-18 12:52:08 -07:00
Max Kellermann
e7d327226a
mixer: migrate to C++ exceptions
2016-09-09 14:44:15 +02:00
Max Kellermann
860064c812
output/pulse: use a RTTI lock guard
...
Make all the locks exception-safe.
2016-09-09 14:36:24 +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
release v0.19.17
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJXgCv6AAoJECNuiljG20USR3cP/RALB4qlhecMo6H8VwZvfjiA
FHfhBKfdpHM3U3EEIZc1zxwHIdWk1yELtmx298vmJbWUifpYAYarXF5497tZf2XE
AVfhTltEJEd7xB5ZULnEScM1aHzMZm5HRcHwM1UqNCsXP7PT8fmpk7gw19pKOChT
h8V3+tpC403lCIcHcJGlkuzgZvKIZDs73g7a0+4GxD9XRAPwnMYRl3Cfd8QjKT/U
r67AcOwQlS6hWJFs0K1JjOQwfwbRq2YmuOmFJua6n8O6CI/7t4h3faSQ0V/5qjFd
k/pAMRtX6mz3mjVhZv4cuMy+QILWlxUNwLBIwtxSfbwcFKrN0vtIRG8O9622hTs2
+mvYiVboWABk6hnukiDAfki96jWYHlsCJR5oIK9DZ4nBe5RVp0r9Nq/ook2AW2it
6VgYIDBI5zS/blyJzXtzDVWEtSmLFxm21JSl+jHfWDtL6/rQGimdVOFkRw40oCBz
seYb5kIbilrg6xq1KiBMT+EWmXMf+q+3YWQsu01blXGYGPhpUqhIr0h/qUfWAqMs
fwIsoxsTrkQQjEWb6YWupPrdOLZ+kTAyaK+7v8B8JmzS/H3SohusMPUZKsQXl82s
5LJVLtVxB9WRRmpfSoYqfk7CkTHOktCzVmiHb/FYUYElS9VKmJYYU8XQ25snCoZ6
bYtERsH28q8rrpkWWEXP
=IXD5
-----END PGP SIGNATURE-----
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
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
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
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
Max Kellermann
6407b7c591
output/recorder: use C++11 initializers
2016-05-04 15:18:57 +02:00
Max Kellermann
e14cd92d59
output/shout: use AudioOutputWrapper
2016-05-04 15:06:29 +02:00
Max Kellermann
73cadd1798
output/shout: dispose encoder in destructor
2016-05-04 15:05:48 +02:00
Max Kellermann
fb9840f1f8
output/shout: call shout_shutdown() in destructor
2016-05-04 15:03:55 +02:00
Max Kellermann
492aaa3375
output/shout: use C++11 initializers
2016-05-04 14:46:45 +02:00
Max Kellermann
6a1f5667f9
util/FormatString: return AllocatedString
2016-04-12 22:59:23 +02:00
Max Kellermann
667edcd9d0
util/IterableSplitString: cheaper variant of SplitString()
2016-03-18 14:11:50 +01:00
Max Kellermann
1aee89f5ea
*: include cleanup (using iwyu)
2016-03-01 22:08:13 +01:00
Max Kellermann
92f54f0b59
output/alsa: disable DoP if it fails
...
See http://bugs.musicpd.org/view.php?id=4496
2016-02-28 10:19:19 +01:00
Max Kellermann
ddce544b53
output/alsa: move the PcmExport::Open() call to Open()
2016-02-28 10:15:54 +01:00
Max Kellermann
21fb7eea82
output/alsa: probe DSD_U32 if DSD_U8 fails
...
See http://bugs.musicpd.org/view.php?id=4485
2016-02-28 09:59:09 +01:00
Max Kellermann
fd7eb43366
output/alsa: use CamelCase
2016-02-28 09:44:15 +01:00
Max Kellermann
a1add27c4c
output/alsa: fix indent
2016-02-28 09:35:57 +01:00
Max Kellermann
fc8194ee1e
output/alsa: fix typo
2016-02-28 09:35:55 +01:00
Max Kellermann
8ffcdb73e8
output/alsa: remove option "use_mmap"
...
MPD does not really take advantage of memory-mapped I/O by generating
data right into the ALSA buffer; using plain snd_pcm_mmap_writei() has
no advantage compared to snd_pcm_writei(). Let's kill this
non-feature.
2016-02-28 09:30:59 +01:00
Max Kellermann
111528e51c
output/alsa: add #ifdef ENABLE_DSD
...
Fixes the --disable-dsd build.
See http://bugs.musicpd.org/view.php?id=4498
2016-02-28 07:29:37 +01:00
Max Kellermann
c9761bf6af
output/alsa: pass PcmExport::Params to alsa_setup()
2016-02-27 07:35:35 +01:00
Max Kellermann
4a47265224
output/alsa: pass PcmExport::Params to SetupDop()
2016-02-27 07:34:58 +01:00
Max Kellermann
f0f3017a76
pcm/export: move Open() parameters to struct Params
2016-02-26 18:55:27 +01:00
Max Kellermann
6a53fb33da
output/alsa: basic infrastructure for DSD_U16 and DSD_U32
2016-02-26 18:44:58 +01:00
Max Kellermann
1d67aa7bf2
update copyright year to 2016
2016-02-26 17:54:05 +01:00
Max Kellermann
e4a06da14e
fs/io/OutputStream: use C++ exceptions in Write()
2015-12-16 10:24:43 +01:00
Max Kellermann
7eae3bc8c5
fs/io/FileOutputStream: use C++ exceptions in Commit()
2015-12-16 00:33:33 +01:00
Max Kellermann
24b2198668
fs/io/FileOutputStream: use C++ exceptions in constructor
2015-12-16 00:33:30 +01:00
Max Kellermann
733989a284
util/StringUtil: move comparison functions to StringCompare.cxx
2015-11-06 09:20:18 +01:00
Max Kellermann
15e432204e
pcm/Order: new library to convert from FLAC to ALSA channel order
...
This new library is integrated in the PcmExport class and (if enabled)
converts MPD's channel order (= FLAC channel order) to ALSA channel
order.
This fixes:
http://bugs.musicpd.org/view.php?id=3147
and
http://bugs.musicpd.org/view.php?id=3255
2015-10-27 11:44:23 +01:00
Max Kellermann
94f850a588
release v0.19.11
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJWL0cEAAoJECNuiljG20USkHkP/0m3kFEEgqauAIbI1t0TkKOp
2ii5iHZeMAlsxGEc5SX5fFoXM6STbXq/3+OXBf+OnABh9b03o744QAAwh1ei9tiQ
kMysbN2fbpHkuchx1JfrOU1ad3qfWXQri8csTtx5eRYpgyqF7Mfl1SoY1nkpherd
j4MVq7MVqBhwCqpAfJvTFTSOlNrJ4bBcvIgGslhFYhRxMRM83KgFS//lHvbXWnOg
fjYEO34nz0rjCfz6x2r7ZQBLeQVr9n6h24iYhSTnU7Xq9o2ezWlVRIm9YVhxoZKf
/MRJuAzaHhGID8IvX7dPxdQJ+feUhQXSv8HSjOJBO6R2dqIScE3D6EIBHy8Cj9Bk
O2D1SgmR+2NnjNz2GUjCIKHm9c9jTgv+rnZ2l8hweS2oUQOPHbCtOoCNAfwyP+/Y
ms1CavNl7bUuvWrM1ipM2ZK6QfW9P4F1dtmwqtJCsqdGFyQyfACcxqmlkfxhB2vI
NyvKAOn/TlWWQscF9id3r90sEir/J9e7IJ6oZh+uvyIfOtt8wR/Jm5/H1MA7j3iX
XmNbe1GY3WHjCH2lRr3tIRKAE8I3HAtBzwhvq/miSESrkEnJ06VMatkoMRQT63gy
62yaCg+ZWiBRp07ygiedYuGL19pDOhqRjY3U/b/0EHMb9ux083nuUTssqgzzO2OP
9OPao5CPs4M4QvmiG/wF
=RdQt
-----END PGP SIGNATURE-----
Merge tag 'v0.19.11'
2015-10-27 11:05:47 +01:00
Max Kellermann
6bea346c41
output/httpd: use boost::intrusive::list instead of std::forward_list
2015-10-19 16:00:26 +02:00
Max Kellermann
f066bb7716
unix/Daemon, playlist/...: remove unused Domain variables
2015-10-16 18:08:59 +02:00
Max Kellermann
ce0d896492
unix/Daemon, playlist/pls, ...: remove unused Domain variables
2015-09-17 23:15:54 +02:00
François Revol
7743647460
output: add native Haiku audio output and mixer support
...
Also uses the notification system to display tags.
2015-09-17 22:46:46 +02:00
Max Kellermann
024d978ae5
output/fifo: smaller Cancel() buffer
2015-08-06 10:15:19 +02:00
Max Kellermann
e0f55b9295
output/fifo: move the buffer into the loop
2015-08-06 10:14:53 +02:00
Max Kellermann
ccd83748f7
output/fifo: use ssize_t for the read() result
2015-08-06 10:14:35 +02:00
Max Kellermann
291ee9f86a
output/fifo: simplify the Cancel() loop
2015-08-06 10:13:21 +02:00
Max Kellermann
59e4d7f0f5
output/fifo: convert struct to class
2015-08-06 09:51:03 +02:00
Max Kellermann
4647448399
output/fifo: use AudioOutputWrapper::Open(),Close()
2015-08-06 09:50:02 +02:00
Max Kellermann
7dfe841876
output/fifo: rename Open(), Close() to OpenFifo(), CloseFifo()
2015-08-06 09:49:00 +02:00
Max Kellermann
83752e9349
net/ToString: rename sockaddr_to_string() to ToString()
2015-07-22 10:26:18 +02:00
Max Kellermann
6f22452b54
net/Resolver: move sockaddr_to_string() to ToString.cxx
2015-07-22 10:03:36 +02:00
Max Kellermann
b31d171ae8
*: doxygen fixups
2015-03-17 11:21:43 +01:00
Max Kellermann
1da0956331
output/recorder: convert path to UTF-8 for logging
2015-03-05 10:15:10 +01:00
Max Kellermann
81059f80d8
output/winmm: convert device name to filesystem charset
2015-03-05 10:07:07 +01:00
Max Kellermann
a261442279
output/winmm: eliminate "goto"
2015-03-05 10:07:07 +01:00
Max Kellermann
cee3070ca4
output/winmm: use StringStartsWith() instead of strstr()
2015-03-04 08:58:59 +01:00
Max Kellermann
90a61b6bab
fs/FileInfo: new library providing GetFileInfo()
...
Replaces StatFile(), with a portable data object.
2015-02-28 23:00:26 +01:00
Max Kellermann
4e30e74739
net/SocketAddress: light wrapper for struct sockaddr
2015-02-10 22:06:06 +01:00
Max Kellermann
42890b9acf
system/{Resolver,Socket{Error,Util}}: move to new library libnet.a
2015-02-10 22:06:06 +01:00
Max Kellermann
e660229c40
output/sles: use AudioOutputWrapper::Create()
2015-02-01 22:24:19 +01:00
Max Kellermann
8bfb88840b
output/fifo: use template AudioOutputWrapper
2015-01-28 19:43:37 +01: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
a38f02541d
config/Param: make "line" signed
2015-01-21 22:19:36 +01:00
Max Kellermann
e8debd2e45
output/recorder: dynamic file name
2015-01-14 22:03:26 +01:00
Max Kellermann
bf59635280
output/recorder: move code to encoder/ToOutputStream.cxx
2015-01-14 20:11:00 +01:00
Max Kellermann
eaf0662b75
fs/io/FileOutputStream: add static method Create()
2015-01-14 19:44:28 +01:00
Max Kellermann
05d47bb09a
output/null: convert struct to class
2015-01-09 19:30:22 +01:00
Max Kellermann
575a5bd0b8
output/null: move functions into the struct
2015-01-09 17:44:00 +01:00
Max Kellermann
ae4c189e19
encoder/Interface: move functions into the struct
2015-01-08 19:36:19 +01:00
Max Kellermann
362a6e6d46
encoder/Plugin: move struct Encoder to EncoderInterface.hxx
2015-01-08 19:31:57 +01:00
Max Kellermann
c76c7c68ff
output/recorder: convert struct to class
2015-01-08 16:56:22 +01:00
Max Kellermann
59ac9d39d5
output/recorder: move encoder_finish() call to destructor
2015-01-08 16:56:13 +01:00
Max Kellermann
ec41caade4
output/wrapper: add method SendTag()
2015-01-07 19:20:09 +01:00
Max Kellermann
06ec06cdd7
output/recorder: remove unused variable "recorder_output_domain"
2015-01-07 19:17:07 +01:00
Max Kellermann
b7acf86408
output/recorder: use FileOutputStream
2015-01-07 19:14:23 +01:00
Max Kellermann
58c4db925b
output/recorder: log commit errors
2015-01-07 19:13:55 +01:00
Max Kellermann
fe0c4ff3c2
output/recorder: move code to method Commit()
2015-01-07 19:11:04 +01:00
Max Kellermann
7a2af0fbf4
output/recorder: move more functions into the struct
2015-01-07 18:55:34 +01:00
Max Kellermann
d83127722f
output/oss: use nullptr instead of NULL
2015-01-07 18:55:34 +01:00
Max Kellermann
dc03ad05be
output/oss: add "const" attributes
2015-01-07 18:50:38 +01:00
Max Kellermann
a62df3cb8f
output/oss: eliminate unnecessary tail code after "switch"
2015-01-07 18:49:29 +01:00
Max Kellermann
18e32abda9
output/oss: convert struct to class
2015-01-07 18:43:52 +01:00
Max Kellermann
15d29da43b
output/oss: add "device" parameter to constructor
2015-01-07 18:43:45 +01:00
Max Kellermann
c150fd9a1c
output/oss: move functions into the struct
2015-01-06 16:24:33 +01:00
Max Kellermann
c1f0708a5d
output/recorder: use config_param::GetBlockPath()
...
Supports "~/" expansion. Forces us to switch from "const char *" to
AllocatedPath, which is a good thing.
2015-01-05 19:49:54 +01:00
Max Kellermann
153f5854e2
output/alsa: move functions into the struct
2015-01-04 19:53:56 +01:00
Max Kellermann
f532964fde
output/pulse: add wrapper for pa_threaded_mainloop_signal()
2015-01-04 19:51:09 +01:00
Max Kellermann
efea609dc3
output/pulse: convert to class
2015-01-04 19:46:51 +01:00
Max Kellermann
f3a160038d
output/pulse: move more code into the struct
2015-01-04 19:45:58 +01:00
Max Kellermann
f016eef48a
output/pulse: use AudioOutputWrapper::Init()
2015-01-04 19:44:45 +01:00
Max Kellermann
f649514183
output/openal: convert macro to constexpr
2015-01-03 20:00:41 +01:00
Max Kellermann
afd31677dd
output/openal: convert struct to class
2015-01-03 20:00:16 +01:00
Max Kellermann
b28710b08c
output/openal: move functions into the class
2015-01-02 18:40:16 +01:00
Max Kellermann
712ed555e6
Copyright year 2015
2015-01-01 19:48:13 +01:00
Max Kellermann
11fb5bc3d0
output/osx: use nullptr instead of NULL
2014-12-31 11:47:27 +01:00
Max Kellermann
970e338847
output/pulse: move code into the struct
2014-12-30 00:03:07 +01:00
Max Kellermann
0b9f650fe2
output/Wrapper: new helper class
2014-12-29 23:45:14 +01:00
Max Kellermann
977834179a
output/pulse: move initialization to constructor
2014-12-29 23:07:18 +01:00
Max Kellermann
b42732743d
output/pulse: remove unnecessary initialization
2014-12-29 23:00:11 +01:00
Max Kellermann
99e6409a67
{mixer,output}/pulse: move code to LogPulseError()
2014-12-29 22:42:52 +01:00
Max Kellermann
6a0a5f9693
output/pulse: move SetError() to lib/pulse/Error.cxx
2014-12-29 22:34:32 +01:00
Max Kellermann
fe9db8b369
{mixer,output}/pulse: use a common Domain instance
2014-12-29 22:25:14 +01:00
Max Kellermann
84c9260dc4
output/fifo: make variables more local
2014-12-28 00:48:05 +01:00
Max Kellermann
987c02e946
output/pipe: convert to class
2014-12-27 18:57:18 +01:00
Max Kellermann
5c0bc612fe
output/pipe: add static method Create()
2014-12-27 18:56:23 +01:00
Max Kellermann
0e28b53242
output/pipe: merge Initialize() and Configure()
2014-12-27 18:56:08 +01:00
Max Kellermann
5fc0ce80fc
output/pipe: move functions into the struct
2014-12-27 18:42:31 +01:00
Max Kellermann
af9092df39
EncoderPlugin: pass Tag reference to method tag()
2014-12-26 22:30:54 +01:00
Max Kellermann
58a5da33c2
OutputPlugin: pass Tag reference to _send_tag()
2014-12-26 22:27:01 +01:00
Max Kellermann
b3435ae432
output/recorder: implement send_tag()
2014-12-26 15:03:22 +01:00
Max Kellermann
a31129333c
output/recorder: move functions into the struct
2014-12-26 14:57:29 +01:00
Max Kellermann
2983c2a24f
output/jack: fix implicit nullptr/bool conversion
...
Return false on error, not nullptr.
2014-12-26 14:44:47 +01:00
Max Kellermann
412bedb697
Merge branch 'v0.19.x'
2014-12-26 14:40:32 +01:00
Max Kellermann
940cab8620
Merge branch 'v0.18.x' into v0.19.x
2014-12-26 14:28:52 +01:00
Max Kellermann
d4ca853fd3
output/jack: move code to separate functions
2014-12-25 22:18:22 +01:00
Max Kellermann
5a8d2e8057
output/jack: cache AudioFormat::channels
2014-12-24 23:22:56 +01:00
Max Kellermann
687fc358fd
output/jack: fix typo
2014-12-24 23:22:56 +01:00
Max Kellermann
c4c2da06b7
output/jack: use jack_ringbuffer_get_write_vector()
...
Reduce number of libjack calls.
2014-12-24 23:14:15 +01:00
Max Kellermann
8928cd53bf
output/jack: move jack_ringbuffer_write_space() call to WriteSamples()
2014-12-24 23:08:39 +01:00
Max Kellermann
ca88fc4ed3
output/jack: cache AudioFormat::channels
2014-12-24 23:04:29 +01:00
Max Kellermann
b83a1d79b7
output/jack: pass float* to WriteSamples()
2014-12-24 23:02:19 +01:00
Max Kellermann
cec2a837cf
output/jack: WriteSamples() returns size_t
2014-12-24 23:00:46 +01:00
Max Kellermann
cff47262da
output/jack: pass size_t to WriteSamples()
2014-12-24 23:00:15 +01:00
Max Kellermann
da83eae754
output/jack: use SampleFormat::FLOAT
...
What JACK expects is already implemented in MPD, just not used. The
sample format conversion code in the JACK plugin was redundant and
could reduce sound quality.
2014-12-24 22:40:00 +01:00
Max Kellermann
2ea633a2f7
output/jack: use std::fill()
2014-12-24 16:27:13 +01:00
Max Kellermann
9a52043fad
output/jack: move functions into the struct
2014-12-24 16:10:27 +01:00
Max Kellermann
39a5be2df9
output/jack: merge two mpd_jack_available() calls
2014-12-24 16:10:27 +01:00
Max Kellermann
96560e317a
output/jack: make variables more local
2014-12-24 15:21:23 +01:00
Max Kellermann
adb27903eb
output/jack: convert const to constexpr
2014-12-24 15:14:51 +01:00
Max Kellermann
51150faa39
output/jack: convert enum to constexpr
2014-12-24 09:52:32 +01:00
Max Kellermann
25f89afbfb
output/winmm: show detailed error messages
2014-12-17 19:43:14 +01:00
Max Kellermann
a588aef921
output/oss: make the static arrays "constexpr"
2014-12-09 22:02:18 +01:00
Max Kellermann
4b70f9d213
util/DivideString: add option "strip"
2014-12-04 23:05:44 +01:00
Max Kellermann
e69bef3ce3
util/SplitString: new utility class
...
Replaces GLib's g_strsplit().
2014-12-04 09:14:28 +01:00
Max Kellermann
c1c0fc79bc
output/jack: use usleep() instead of g_usleep()
2014-12-04 09:14:28 +01:00
Max Kellermann
050f0c3d8f
util/SplitString: rename to DivideString
2014-12-03 21:38:06 +01:00
Max Kellermann
d3d9a04e62
output/ao: use class SplitString instead of g_strsplit()
2014-12-02 22:29:41 +01:00
Max Kellermann
7363d50a1e
output/httpd/IcyMetaDataServer: use CopyString() instead of g_strlcpy()
2014-12-01 22:33:57 +01:00
Max Kellermann
15213a041d
output/httpd/IcyMetaDataServer: don't use GLib types
2014-12-01 22:31:29 +01:00
Max Kellermann
fb70a34c80
output/httpd/IcyMetaDataServer: make variables more local
2014-12-01 22:28:14 +01:00
Max Kellermann
d93172bee8
Compiler.h: add macro CLANG_OR_GCC_VERSION()
2014-11-28 19:09:56 +01:00
Steven Newbury
76f277eeb4
Set pulseaudio channel map to WAVE-EX
...
Pulseaudio expects clients to specify their channel-map if the
default (ALSA) map does not route the audio to the expected speakers.
Many Google results suggest dealing with this by re-routing the audio
channels with the appropriate ALSA plugin, but this will then simply
break any clients which expect the default ALSA mapping.
Virtually all media files and codecs, certainly flac, dca, a52, and of
course anything based on Microsoft's WAVEFORMAT_EXTENSIBLE specification,
assume the layout in the table here:
http://en.wikipedia.org/wiki/Surround_sound#Standard_speaker_channels
Fortunately, pulseaudio directly addresses this with a built-in channel
map for WAVE-EX which can be set automatically in the stream sample-spec.
2014-10-25 01:08:09 +02:00
Max Kellermann
b07bddf742
output/roar: remove unnecessary "volatile" keyword
...
A mutex acts as a memory barrier, and thus "volatile" is not
necessary.
2014-10-23 23:29:56 +02:00
Wieland Hoffmann
5525ea45a4
Add MusicBrainz' Release Track Id tag
...
The Release Track Id uniquely identifies a recording on a release - that
is, even if a recording appears twice on a release (meaning that the
combination of recording and release id are not enough to figure out
which one it is), the release track id will allow differentiating the two.
The tag names are taken from
https://musicbrainz.org/doc/MusicBrainz_Picard/Tags/Mapping
2014-09-27 19:54:12 +02:00
Max Kellermann
8397196fbb
output/alsa: change a few "dsd" to "dop"
2014-09-26 11:07:53 +02:00
Max Kellermann
223c129b6b
output/pulse: simplify _wait_for_operation()
...
Eliminate the duplicate pa_operation_get_state() call.
2014-09-05 11:16:09 +02:00
Max Kellermann
e5a28bfd8d
output/alsa, pcm: rename "DSD over USB" to "DoP"
...
The standard has been renamed since the early draft that was
implemented in MPD.
2014-08-31 16:12:26 +02:00
Max Kellermann
6e04d66a35
release v0.18.13
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJUAxsyAAoJECNuiljG20USmRAP/2J/+kV5TRfqr7acFKh/aqip
RAefHTvHpYuAUDOi3WDVSZcmMnaYGKslZhbXhqchbRfR2oMwYhR+5gHIoxOp+EcL
09UF1fJfUnjg6B2zz6tggIWR53Dwxckg4xEaKtI2Wi3Gz+9Q/CiNlpWLJc0ONA5e
9gcz8pNK3oN0Em9c1KXahZKArzGdOGeytfSI3PLE+QnRiEyEDz1+StxIuyl72vr4
ar2EMa9Vdvb7ouNK0g8WqaEOzYyNDXhklIqc+zALQJGThY1xj6OCfQ8JVagJhzwB
UDuYfX1FylkN8LhF5pNzH1F0ANMozWcqeZlLLph6vuKkVBD7WUX4X1t82bwUlFDB
ppdA5pPkiXsqYnuhHML4GqL7LlI2wsMxUHK7v+A9+9hfGN9HIoFyOSLBjB1pyI93
yi8IPOq2a1BJQfQ2c69693ZS7WPxU6vOFKucKrk9PBlr2900SlvpMzIpZr1PMnGV
hoU8eLHOIW86wi5Ea2ycFbFyI1ZoyrKJmzcVJjPjZUT05jDV6bA2Gi1IG6gIhX1q
DiBfXUre+GISkLS4r8GcbG1FIXcv7fGjZ6Vols5di8lpYQ5oBu5aw2TEf8zukrHC
LzPRa2l6Mhe2OI7a/mmTaEYDINgCL//46hOU5mIbmB0XZS8Jf+D1/HBzqKpeqO7f
idENtbelqQdSsR5UU+R0
=c2vC
-----END PGP SIGNATURE-----
Merge tag 'v0.18.13'
2014-08-31 15:03:34 +02:00
Max Kellermann
b373c53ce4
*: add missing Compiler.h includes
...
Necessary for "final" on gcc 4.6.
2014-08-30 00:46:52 +02:00
Max Kellermann
a4f9d6d98b
output/alsa: fix signed/unsigned comparison warning
2014-08-30 00:27:01 +02:00
Max Kellermann
7c25d83f1c
Tag: use SignedSongTime for the song duration
2014-08-29 13:20:58 +02:00
Max Kellermann
2d096a569a
output/alsa: fix coding style
2014-08-26 10:25:59 +02:00
Max Kellermann
e44ea5038e
output/alsa: merge Init() into Configure()
2014-08-26 10:22:35 +02:00
Max Kellermann
9d79c72c17
output/alsa: add API documentation
2014-08-26 09:37:30 +02:00
Max Kellermann
a86aaef4d0
output/alsa: support native DSD playback
...
Translate SampleFormat::DSD to SND_PCM_FORMAT_DSD_U8, which was added
to alsa-lib 1.0.27.1.
2014-08-26 07:11:53 +02:00
Max Kellermann
e463244db3
output/alsa: move alsa_configure() into the class
2014-08-26 07:10:16 +02:00
Max Kellermann
294091ce60
output/alsa: remove obsolete macros
2014-08-26 05:53:15 +02:00
Max Kellermann
0e756e4377
PcmExport: use class ConstBuffer
2014-08-12 22:19:53 +02:00
Max Kellermann
7a1f3177c9
util/Cast: reimplement as template without macro
2014-07-14 16:24:07 +02:00
Max Kellermann
41a7203c28
Tag: add class const_iterator and methods begin(), end()
...
Enables using range-based "for".
2014-07-12 17:22:39 +02:00
Gustavo Zacarias
f5c9056430
output/plugins/httpd/HttpdClient: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
2014-07-09 19:54:35 +02:00
Pete Beardmore
3a3fb98f79
PulseOutputPlugin: set icon name
2014-03-04 15:18:30 +00:00
Max Kellermann
503ed9c331
release v0.18.9
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1
iQIcBAABAgAGBQJTEwdzAAoJECNuiljG20USkFYP/i1PaM7O20e2EPE7ELhffk1I
PEL6WiuCxfEHP+JbH/RPy/CdyKIqx3TTeaktXzOJmCcU+5fAgbpIwfK689ZjpE7Y
U+7aPfGudfjYTxM/bigEo+1XAIYWJCJ2IlopN0lRIZSquUm8rfxosqsNzJFrhwsK
40Ps36XdpYUA3z9dugyJjeKQETkjJa5Y55C1yml5RRUz+yPqyiPelm0dSlx3Ggce
KpmNZfp8g8/stwb08iw+qk+cNKP75eJwPdFmQrsc91QxP1oW7ERWhiICA0ZtqaNe
T0Ld5+wZ6uTJSztQiUsWrJYS1yKix5q1Za8tyFr3a9NPI+iIjsALXqU9k7zmZ6Id
GK0Xr9Noo1o80QeGkd60nJyCQXbEU/V0p9D/QiDVei+IvK6mbxF3y2gPA7wobgrC
KEDgsJZ+0fjmgdx+eb8ydg0uIwHrk04u0YKukUqA3bkNS/PUEICPqblcg8Spf89I
RMdjq2HFcpkaIwGvryfHIbTNUbonAziMzmiJ0WQA1FCD3x1WELvBf09GzAsUEoFX
Be0Co15rODOByo5ryZvSJv5BCr2RuCPwzNF+V26nMaKK7EloQWmbO0rpkRLVRk81
qo1JmElm6SyeE3kHqVW/NyrPxLtd7VngV+z9hXr95szUjCjMv/MK169r4jumLTex
RLyPDkhkQLDIijamhjfZ
=nX0n
-----END PGP SIGNATURE-----
Merge tag 'release-0.18.9'
2014-03-02 11:46:07 +01:00
Max Kellermann
b059ba69d6
output/sles: support stereo
2014-03-01 23:05:44 +01:00
Max Kellermann
6d9739165e
output/httpd/client: eliminate GLib
2014-02-24 20:39:37 +01:00
Max Kellermann
7c5396ffb9
output/{shout,win32}: include cleanup
2014-02-24 20:34:09 +01:00
Max Kellermann
8319398957
output/openal: use usleep() instead of g_usleep()
2014-02-24 20:33:15 +01:00
Max Kellermann
a1509876de
output/pulse: use setenv() instead of g_setenv()
...
There is no advantage in using g_setenv().
2014-02-24 20:31:38 +01:00
Max Kellermann
0f2cf51f43
output/pulse: remove bogus g_free() call
2014-02-24 20:29:29 +01:00
Max Kellermann
9574d11dc8
output/sles: new output plugin for Android
2014-02-22 00:18:46 +01:00
Max Kellermann
0bbfb28992
output/httpd: move to dedicated directory
2014-02-19 09:22:08 +01:00
Max Kellermann
ee7bd695fd
Timer: move to output/
2014-02-19 09:22:08 +01:00
Max Kellermann
0a0659d737
mixer/Plugin: pass AudioOutput reference to init()
...
Passing a void pointer is unsafe.
2014-02-06 21:10:12 +01:00
Max Kellermann
b6df4680df
MixerPlugin: convert function pointers to Mixer virtual methods
2014-02-06 20:52:33 +01:00
Max Kellermann
4657a3bd0f
output: move functions into the AudioOutput struct
2014-01-29 08:10:46 +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
Max Kellermann
815d72065c
output: rename struct audio_output to AudioOutput
2014-01-28 11:34:09 +01:00
Max Kellermann
e0dc721324
OutputPlugin: rename struct audio_output_plugin to AudioOutputPlugin
2014-01-28 11:33:15 +01:00
Max Kellermann
68eda78704
Mixer*: move to mixer/
2014-01-24 16:44:32 +01:00
Max Kellermann
197b503f3e
Config*: move to config/
2014-01-24 00:20:01 +01:00
Max Kellermann
ea5b901bcc
output/*: move to output/plugins/
2014-01-23 23:49:50 +01:00