Max Kellermann
32290d5eb8
fs/Path: add method ToUTF8Throw()
2018-07-18 16:51:29 +02:00
Max Kellermann
49efb6071c
config/Migrate: library to migrate deprecated settings
2018-07-18 10:25:02 +02:00
Max Kellermann
0ff0aca2e2
input/Init: use struct ConfigData
2018-07-17 22:05:27 +02:00
Max Kellermann
5b192beaa5
config/Global: remove ConfigBlock::SetUsed() call, let caller do that
...
This fixes an old bug which caused the "unused" warnings to be
unreliable; only the first block in the list was marked as being
"used", no matter if it was really used, and the rest was never marked
as "used", suppressing all warnings for them.
2018-07-17 21:08:41 +02:00
Max Kellermann
816603fd9a
config/Config*: rename files, drop "Config" prefix
2018-07-16 19:50:07 +02:00
Max Kellermann
9a29d02e7e
Merge branch 'v0.20.x'
2018-07-06 19:43:01 +02:00
Max Kellermann
466625f7ad
input/curl: use new class HttpStatusError
...
This way, IsFileNotFound() can detect status 404.
2018-07-06 19:26:11 +02:00
Max Kellermann
86e2075c63
lib/nfs/Connection: use new class NfsClientError
...
Allows callers to extract the NFS error code.
2018-07-06 19:17:34 +02:00
Max Kellermann
30900b2fe2
input/Error: new library providing IsFileNotFound()
2018-07-06 19:16:01 +02:00
Max Kellermann
fd7ae7ea4c
input/Domain: remove obsolete variable
2018-07-06 19:13:53 +02:00
Max Kellermann
60d5bf0240
util/StringFormat: new utility library
2018-07-06 19:07:02 +02:00
Max Kellermann
41cdc4e14b
input/Offset: add macro PRIoffset
2018-07-06 19:06:05 +02:00
Max Kellermann
87dfca0477
input/curl: remove obsolete Windows sprintf() fallback
...
See commit be137a191e
2018-07-06 19:05:09 +02:00
Max Kellermann
1ca1269a59
input/curl: use class MaybeBufferedInputStream
...
For remote files (not streams), this downloads as quickly as possible
to a large buffer instead of throttling the stream during playback.
Throttling can make the server impatient and it may then disconnect.
This is what Qobuz and Tidal do, and this commit attempts to solve
this by not letting the Qobuz/Tidal server wait (closes #241 ).
2018-06-22 22:33:16 +02:00
Max Kellermann
6681b14b71
input/MaybeBuffered: proxy InputStream implementation which auto-uses BufferedInputStream
2018-06-22 22:33:16 +02:00
Max Kellermann
12f2418445
input/buffered: proxy InputStream implementation which caches in a huge buffer
2018-06-22 22:33:16 +02:00
Max Kellermann
d0fbf6db59
input/Stream: remove attribute "cond", replace with handler interface
...
This adds a bit of overhead, but also adds flexibility to the API,
because arbitrary triggers may be invoked from that virtual method
implementation, not just Cond::signal().
The motivation for this is to make the handlers more dynamic, for the
upcoming buffering class utilizing ProxyInputStream.
2018-06-22 19:37:18 +02:00
Max Kellermann
01d8eb6290
input/rewind: move sources out of the "plugins" directory
...
This is not a plugin.
2018-06-22 19:31:06 +02:00
Max Kellermann
197968d65e
input/Stream: mark qobuz:// and tidal:// as "seeking is expensive"
...
Those are loaded with the "curl" input plugin, and this one is
"expensive", because it needs to send a new HTTP request with Range
header for each seek.
2018-06-21 22:35:36 +02:00
Max Kellermann
2cb83a1f84
input/Stream: make "uri" const
2018-06-14 17:31:54 +02:00
Max Kellermann
d7c94e30c5
input/Stream: remove obsolete comment
2018-06-14 17:31:33 +02:00
Max Kellermann
a8568d7246
Merge branch 'v0.20.x'
2018-05-03 20:15:11 +02:00
Max Kellermann
ac61fd1d78
{input,output}/alsa: work around -Wswitch due to SND_PCM_STATE_PRIVATE1
2018-05-03 11:59:18 +02:00
Max Kellermann
b7dc3fae7c
Merge branch 'v0.20.x'
2018-03-15 20:08:13 +01:00
Max Kellermann
73013a3c04
input/thread: move code to Stop()
...
Fixes crash due to "pure virtual method called" in the "mms" input
plugin. Closes #253
2018-03-15 19:29:55 +01:00
Max Kellermann
c2c2c29658
input/thread: set InputStream::ready after Open() failure
...
Without setting the "ready" flag, the caller will wait in WaitReady()
forever, locking up MPD. Closes #252
2018-03-14 13:15:03 +01:00
Max Kellermann
a68f2cb9fa
input/InputPlugin: add API documentation
2018-02-17 10:32:17 +01:00
Max Kellermann
5f5be823f3
input/RemoteTagScanner: add API documentation
2018-02-17 08:49:35 +01:00
Max Kellermann
65bbb0e0aa
release v0.20.17
...
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEA5IzWngIOJSkMBxDI26KWMbbRRIFAlqAMO0QHG1heEBtdXNp
Y3BkLm9yZwAKCRAjbopYxttFEg8eD/49NlFvlNdkamgYvh7MI1Sn67yKAwQt+N51
W0hVnmXwPoSg76gfWw8J9kVyQy/jEkaCxsPF/UuEbH5jzqAC0y8hwYVRkJaRc9wN
ZfwHvLHeaUxQweoguEwRSREy4ZC4ImQOK+eAxI1R43mqxxyhko1Akc1NmRVWzYfv
/FGmAjTi1U6FR/yDpdSFn1NdlPmIgZ4WDuRsDT2NrshX/Bb32FiyZBytvek2P8n/
QNgXv18E4yWXSb+zBYhPy/eaKhGasyjI3cbht1F0hNW9Yo/BsFxDuwXrX1vNBaOS
E3Dux4s/nfcJ4RMRjmrkFwXImCvxt7+AGfh8RYBXuwqMExXz2kZjIs4ZVvO7Nu9A
pFDJQwRIojXMfk73LU/MEpmNNEXhvfQLYkrM7poSqYaOr8SWMszqSgNnnfq6+flB
sJbstgAStI6lL0jy0HrtMTvPVEiAGh6wCvMy/r2G9XUAyw76ccOg7MaIldn0MHJv
A51+GfRTi4ILH0ReL1BGAg9nG97uFmRAWGkfkhtyD540xGRk7x5R8/ml4zFogHN6
SbrV0NPdwk+uFd0y2znQT2gWyjc0id4WEKEoHX+Gl6c5qtPIfrq+PQPyk9kR+u+i
AxwqMoKQer6Ji5qnsvCiKSkaGGiVNivrZ11jDWNCZaKjmvlKlvj/P5GxbPpORorq
v4ru/4vNXQ==
=v4t8
-----END PGP SIGNATURE-----
Merge tag 'v0.20.17'
release v0.20.17
2018-02-11 13:22:43 +01:00
Max Kellermann
6ba918b203
input/file: don't use posix_fadvise() on Android
...
Requires Android API 21, but we want to support older versions as
well.
2018-02-09 22:54:22 +01:00
Max Kellermann
005bb59797
test/run_input: move code from Scan() to input/ScanTags.cxx
2018-01-29 16:57:44 +01:00
Max Kellermann
88bc3a9271
input/qobuz: implement InputPlugin::scan_tags()
2018-01-26 20:08:01 +01:00
Max Kellermann
2e32cf7b87
input/tidal: implement InputPlugin::scan_tags()
2018-01-26 20:08:01 +01:00
Max Kellermann
3e9c3c8ae8
input/Plugin: add method scan() with asynchronous callback class
...
To be used when a URL gets added.
2018-01-26 19:29:38 +01:00
Max Kellermann
ec31e8df1d
input/qobuz: remove obsolete prototypes
2018-01-26 19:29:38 +01:00
Max Kellermann
b56bfbae26
input/tidal: add setting "audioquality"
2018-01-26 19:18:13 +01:00
Max Kellermann
f55b1415d4
input/qobuz: move code to ExtractQobuzTrackId()
2018-01-26 18:48:15 +01:00
Max Kellermann
67693c6ad0
input/qobuz: add setting "format_id"
2018-01-26 17:30:28 +01:00
Max Kellermann
fce061b544
input/tidal: move code to ExtractTidalTrackId()
2018-01-26 17:29:58 +01:00
Max Kellermann
93765fcb30
input/{tidal,qobuz}: remove unused list_base_hook
2018-01-26 16:56:56 +01:00
Max Kellermann
b221bd7472
input/qobuz: remove bogus "noexcept"
...
This change was missing in 47fa8c4cf6
2018-01-25 15:19:33 +01:00
Max Kellermann
47fa8c4cf6
input/{tidal,qobus}: add bogus "noexcept"
...
The CurlRequest constructor can throw exceptions, therefore we must
not use "noexcept".
2018-01-25 12:58:58 +01:00
Max Kellermann
7640609b41
input/tidal: retry if session is expired
2018-01-24 15:35:02 +01:00
Max Kellermann
e8e6357b73
input/tidal/Error: add method IsInvalidSession()
2018-01-24 15:34:59 +01:00
Max Kellermann
4398101706
input/tidal: parse subStatus in error responses
2018-01-24 15:34:57 +01:00
Max Kellermann
2e1481f49d
input/tidal: add exception class TidalError
...
Allows catchers to inspect the HTTP status.
2018-01-24 15:34:54 +01:00
Max Kellermann
c7c087a0d2
input/tidal: add some debug logging
2018-01-24 15:29:30 +01:00
Max Kellermann
97f670658f
util/StringFormat: new utility library
2018-01-24 13:28:28 +01:00
Max Kellermann
4324fb2fbe
input/Offset: add macro PRIoffset
2018-01-24 13:26:43 +01:00
Max Kellermann
e4cb74cf7b
input/curl: remove obsolete Windows sprintf() fallback
...
See commit be137a191e
2018-01-24 13:26:18 +01:00