Max Kellermann
b6a3ce9305
db/proxy: fix inconsistent error handling in VisitUniqueTags()
2016-03-18 23:42:04 +01:00
Max Kellermann
b07495aae9
db/proxy: remove superfluous CheckError() call
2016-03-18 23:41:24 +01:00
Max Kellermann
686a53215d
db/proxy: use AtScopeExit()
2016-03-18 23:10:42 +01:00
Max Kellermann
6fd7d8191e
db/simple: refactor Check() to throw exception
2016-03-18 22:21:09 +01:00
Max Kellermann
2ccd1cc9f0
db/simple: remove misplaced "pure" attribute
2016-03-18 22:18:09 +01:00
Max Kellermann
8167bdd978
db/simple: handle Database::Open() exceptions in Mount()
2016-03-18 18:55:54 +01:00
Max Kellermann
dfb3e34f7b
db/lazy: remove obsolete class
...
Obsoleted by commit d4d4d621
2016-03-18 18:48:27 +01:00
Max Kellermann
45ee75055e
db/upnp: remove obsolete code comment
2016-03-18 18:48:00 +01:00
Max Kellermann
5da4e321c0
Stats: catch exceptions
2016-03-18 18:46:43 +01:00
Max Kellermann
e8519fecb4
release v0.19.14
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJW7DpiAAoJECNuiljG20USwwkP/1z3HeJjzzrwySH9MVeFpVtR
fr9XL2pO6zTcaVAIk/fNWtrcT6G5IuK079GKVa2jADN8KRMfCvGDEgHfGevjRNmc
USXkUm2pij67S3Ic74WhDISt32gYzBOCo/nFIFncLyjXXPW4WRq/3rb8tMwffZen
d/wqZmzHGEom8z0BTLASY/QM2KTBXOHgAhTb4M8lowxlesK8O/6Mx14UxgcIKIDf
1lqRhaF6NRS56uwjt8GwkaH9Td8wJG/inVLQo08z26ycJNaPrkxSNrWsSzQdBr8Q
DanbH4nefj8L33PVCV9nNPSjGe5s3R3D9WVEvt+cJ71UqBUQJkYgXaYRLQVEs1Mk
80a9MlFECF1UiS9FwmnUXRAY0Zzb19NLjm+v3CeMANqoFQ/OQaIe3/iaM0hT0yto
akHWhgEE4SuwcHPpUXQlKlbYHW6DaHBULwpzcKxFUeQkzx5m4FshBSL73TEEyv8+
bRc4tGIqA2Pep/Ptg3R9mJZ5wr/crtJby9FxNUkXiGZeiHEya+mRdGVyogMnce/K
BTg1bhiaE7Ofdxd4NuUIOZ6OkjpFnnQajJwnR1dJrZG+avOrGjcBPH5QGHWEYfs7
hVQhea2ehbcqQPq5celaZkL30SCxZmuN/0Lbmc8y7tpshLkdSUxmBoPSjvUD/UUz
JyZf+npL5nmtF0Pqz7W8
=McwP
-----END PGP SIGNATURE-----
Merge tag 'v0.19.14'
release v0.19.14
2016-03-18 18:41:14 +01:00
Max Kellermann
06c172838c
queue/PlaylistUpdate: catch and ignore DatabaseError
...
Fixes regression by commit 42f7df96
2016-03-18 18:25:16 +01:00
Max Kellermann
1543dd85b5
queue/Playlist: don't let StaleSong() interrupt playback
...
http://bugs.musicpd.org/view.php?id=4470
2016-03-18 18:08:13 +01:00
Max Kellermann
f37a1026f9
queue/Playlist: rename DeleteSong() to StaleSong()
2016-03-18 18:01:01 +01:00
Max Kellermann
91fb7fa3d8
queue/Playlist: pass unsigned to PlayOrder()
2016-03-18 17:49:29 +01:00
Max Kellermann
7b70153068
queue/Playlist: document that current/queued are "order number"
2016-03-18 17:35:29 +01:00
Max Kellermann
7e096ee2c5
db/update/Remove: update code comment
2016-03-18 16:58:06 +01:00
Max Kellermann
86a90daf1b
db/update/Remove: pass URI to Remove()
2016-03-18 16:57:43 +01:00
Max Kellermann
42f7df9681
db/update/Remove: reimplement as a non-blocking queue
...
This reduces overhead for two reasons:
1. calls to Remove() are non-blocking
2. RunDeferred() may work on large chunks at a time, reducing the
number of RunDeferred() calls
2016-03-18 16:43:02 +01:00
Max Kellermann
2edad38c7c
db/DatabaseListener: pass URI to OnDatabaseSongRemoved()
...
There's no point in passing a LightSong reference here; the callee is
interested only in the URI.
2016-03-18 16:22:33 +01:00
Max Kellermann
296ee4961e
sticker/Song: add _delete() overload with "const char *"
2016-03-18 16:21:26 +01:00
Max Kellermann
b1becddf11
util/StringView: add method Strip()
2016-03-18 15:40:49 +01:00
Max Kellermann
667edcd9d0
util/IterableSplitString: cheaper variant of SplitString()
2016-03-18 14:11:50 +01:00
Max Kellermann
b4e75bedf0
util/StringView: make nullptr_t constructor "constexpr"
2016-03-18 14:11:50 +01:00
Max Kellermann
5482ef5451
util/SplitString: relicense to BSD-2
2016-03-18 13:18:31 +01:00
Max Kellermann
a3afd5178c
tag/TagPool: optimize _dup_item()
...
When a reference counter is at its limit, don't allocate a new
TagPoolSlot - that would result in many TagPoolSlot instances with
ref==1. This in turn would make the linked list very very large,
which means quadratic runtime for many operations.
2016-03-14 13:08:04 +01:00
Max Kellermann
f1285a6dfd
tag/TagPool: add constexpr MAX_REF
2016-03-14 08:07:22 +01:00
Max Kellermann
cf7c1afb93
tag/TagPool: use prime number for NUM_SLOTS
2016-03-14 08:04:51 +01:00
Max Kellermann
f254831aa6
Instance: remove redundant "virtual" keywords
2016-03-10 23:16:35 +01:00
Max Kellermann
bd40c8649c
Partition: use Instance::EmitIdle()
2016-03-10 23:12:03 +01:00
Max Kellermann
7c53df2ed1
Partition: eliminate GlobalEvents.hxx, add mask constants
2016-03-10 23:10:14 +01:00
Max Kellermann
5ca6026787
Partition: use CallbackMaskMonitor, replacing class GlobalEvents::Monitor
2016-03-10 22:52:16 +01:00
Max Kellermann
483daa5882
Instance: move GlobalEvents::Monitor to Partition
...
All remaining events are specific to the Partition.
2016-03-10 22:47:47 +01:00
Max Kellermann
e2bc92d128
Instance: replace IdleMaskMonitor with CallMaskMonitor
2016-03-10 22:38:10 +01:00
Max Kellermann
5ffe3773d4
event/MaskMonitor: add variant with bound method
2016-03-10 22:37:33 +01:00
Max Kellermann
a7c68018a2
util/Callback: new utility class for callback functions
2016-03-10 20:42:19 +01:00
Max Kellermann
5ffb82993e
IdleMonitor: new class to replace GlobalEvents::IDLE
...
Use MaskMonitor to eliminate duplicate code.
2016-03-10 20:32:43 +01:00
Max Kellermann
07add0bd91
Instance: add base class which owns the EventLoop
2016-03-10 20:32:35 +01:00
Max Kellermann
9a9b6fa326
queue/Playlist: add interface QueueListener, replacing calls to idle_add()
2016-03-10 20:10:14 +01:00
Max Kellermann
ba43ec5759
queue/Playlist: remove redundant "struct" keyword
2016-03-10 20:03:45 +01:00
Max Kellermann
008a9560fe
queue/Playlist: call OnModified(), eliminate duplicate code
2016-03-10 20:03:01 +01:00
Max Kellermann
6ff01cc72c
Merge branch 'v0.19.x'
2016-03-07 14:30:43 +01:00
Max Kellermann
e140a28073
archive/iso9660: check path buffer bounds
2016-03-07 14:21:01 +01:00
Max Kellermann
de61c3b962
archive/iso9660: use a single path buffer for Visit()
...
Avoid wasting 4 kB stack per directory level.
2016-03-07 14:01:52 +01:00
Max Kellermann
c46fc4531b
archive/iso9660: move the "." and ".." checks up
2016-03-07 14:01:40 +01:00
Max Kellermann
065a9ed10f
archive/iso9660: add local variable "filename"
2016-03-07 13:57:07 +01:00
Max Kellermann
e44c0254f7
archive/iso9660: make variables more local
2016-03-07 13:15:07 +01:00
Max Kellermann
13f9f0315f
util/HugeAllocator: fix division by zero due to inverted check
...
There were two ways this could fail:
1. division by zero when sysconf(_SC_PAGESIZE)==0
2. mmap() failure because the size parameter is not aligned to page
size
Neither ever happened: sysconf() never fails, and the only caller
passes a size that is already aligned. Phew.
2016-03-06 23:53:41 +01:00
Max Kellermann
1532ffe215
protocol/ArgParser: fix range check
...
The old check
unsigned(value) > std::numeric_limits<unsigned>::max()
.. cannot ever fail.
2016-03-06 23:41:08 +01:00
Max Kellermann
b24cbc68ba
decoder/dsdiff: fix off-by-one buffer overflow
2016-03-06 23:28:29 +01:00
Max Kellermann
976fdd76c1
decoder/opus: limit tag size to 64 kB
2016-03-06 23:26:48 +01:00
Max Kellermann
bbda335e02
mixer/pulse: fix integer division rounding
2016-03-06 23:23:30 +01:00
Max Kellermann
031410c72b
Instance: add StateFile* attribute
2016-03-05 21:00:38 +01:00
Max Kellermann
710def8e38
Partition: un-inline the constructor
2016-03-05 20:51:29 +01:00
Max Kellermann
c0bda1b103
Idle: move flags to IdleFlags.hxx
2016-03-05 20:48:37 +01:00
Max Kellermann
0e87ce4680
GlobalEvents: expose the internal class
...
Move the GlobalEvents::Monitor instance into class Instance.
Eliminate all global variables.
2016-03-05 20:23:30 +01:00
Max Kellermann
b4d594eeff
Instance: embed EventLoop, no pointer
2016-03-05 20:20:12 +01:00
Max Kellermann
ce09379bae
Main: use Instance::Shutdown()
2016-03-05 20:20:12 +01:00
Max Kellermann
b27fb64317
client/ClientRead: use Instance::Shutdown()
2016-03-05 20:19:20 +01:00
Max Kellermann
099455db25
db/update/Service: convert const to constexpr
2016-03-05 20:08:01 +01:00
Max Kellermann
3146bf51e6
db/update/Service: eliminate attribute "progress"
...
Use walk!=nullptr instead.
2016-03-05 19:40:11 +01:00
Max Kellermann
b24a5e0662
Partition: add method EmitIdle()
...
Prepare for moving idle events to class Partition. Right now, it's
just a wrapper for idle_add().
2016-03-05 19:16:39 +01:00
Max Kellermann
e52ac0b187
event/MaskMonitor: new class to replace code in GlobalEvents and Idle
2016-03-05 19:15:50 +01:00
Max Kellermann
eaa1590866
GlobalEvents: eliminate SHUTDOWN, use Instance::Shutdown() instead
2016-03-05 18:56:27 +01:00
Max Kellermann
071af004bd
GlobalEvents: include cleanup
2016-03-05 18:56:27 +01:00
Max Kellermann
23ab4e5e5f
Instance: add method Shutdown()
2016-03-05 18:56:16 +01:00
Max Kellermann
8e563cbccd
Instance: use C++11 initializers
2016-03-05 18:55:57 +01:00
Max Kellermann
1aee89f5ea
*: include cleanup (using iwyu)
2016-03-01 22:08:13 +01:00
Max Kellermann
d2dd6f7c70
thread/Posix{Mutex,Cond}: use "constexpr" only with glibc
...
Apparently all other C libraries are not compatible with "constexpr".
Those which are not will get a performance penalty, but at least they
work at all.
2016-03-01 21:23:59 +01:00
Max Kellermann
fb547260d1
player/Control: Play*() returns Error information
2016-02-28 13:31:41 +01:00
Max Kellermann
2065e32904
queue/PlaylistControl: clear "queued" before calling LockSeek()
...
This is necessary to avoid an assertion failure in UpdateQueuedSong()
after LockSeek() has failed.
2016-02-28 13:19:44 +01:00
Max Kellermann
ac15581c56
command/error: remove unused function print_playlist_result()
2016-02-28 11:53:38 +01:00
Max Kellermann
9e2e882157
PlaylistPrint: throw PlaylistError on error
2016-02-28 11:52:39 +01:00
Max Kellermann
99ded56047
command/error: remove db_domain from ToAck(Error)
2016-02-28 11:48:12 +01:00
Max Kellermann
65386f52f0
db/proxy: throw DatabaseError on error
2016-02-28 11:47:03 +01:00
Max Kellermann
5b8dce7456
db/simple: throw DatabaseError on error
2016-02-28 11:40:59 +01:00
Max Kellermann
de938eb621
db/simple: handle exception in Open() properly, fix memory leak
2016-02-28 11:40:39 +01:00
Max Kellermann
83cc6c0835
db/simple: use second Error instance in Open()
...
Don't need to clear the caller-specified one.
2016-02-28 11:38:22 +01:00
Max Kellermann
304d78a4c8
command/error: remove playlist_domain from ToAck(Error)
...
playlist_domain is no longer used for class Error.
2016-02-28 11:17:43 +01:00
Max Kellermann
347590751c
SongLoader: throw PlaylistError on error
2016-02-28 11:15:20 +01:00
Max Kellermann
fe4b1f96f1
SongLoader: use temporary stack variable, no heap allocation
...
Improved exception-safety.
2016-02-28 11:08:00 +01:00
Max Kellermann
9de984f7f8
queue/PlaylistControl: throw PlaylistError on error
2016-02-28 11:04:35 +01:00
Max Kellermann
b6cb9b853a
queue/PlaylistEdit: throw PlaylistError on error
2016-02-28 11:02:36 +01:00
Max Kellermann
50b930f283
playlist/edit: use std::unique_ptr
2016-02-28 11:00:59 +01:00
Max Kellermann
cbeb809798
playlist/queue: use std::unique_ptr
2016-02-28 10:58:50 +01:00
Max Kellermann
ea626368a0
queue/QueueCommands: use std::unique_ptr
2016-02-28 10:56:37 +01:00
Max Kellermann
c81747dd15
queue/PlaylistTag: throw PlaylistError on error
2016-02-28 10:40:31 +01:00
Max Kellermann
f8810d7caf
PlaylistError: add NotPlaying()
2016-02-28 10:38:17 +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
5628dcf47e
pcm/export: add #ifdef ENABLE_DSD to struct Params
2016-02-27 08:02:01 +01:00
Max Kellermann
fb4f02cd38
pcm/PcmExport: add flag to export to DSD_U32
2016-02-27 07:42:09 +01:00
Max Kellermann
d1be643c0d
pcm/PcmDsd: add converter from DSD_U8 to DSD_U32
2016-02-27 07:41:58 +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
d3f0b62348
pcm/export: another #ifdef ENABLE_DSD fix
2016-02-26 18:55:06 +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
dcaf299864
pcm/export: add #ifdef ENABLE_DSD
2016-02-26 18:44:23 +01:00
Max Kellermann
1d67aa7bf2
update copyright year to 2016
2016-02-26 17:54:05 +01:00
Max Kellermann
e56066f721
pcm/dsd: use PcmBuffer::GetT()
2016-02-26 17:41:18 +01:00
Max Kellermann
5e3844ac13
pcm/dsd: use MAX_CHANNELS
2016-02-26 17:41:06 +01:00
Max Kellermann
cb4f5d454b
pcm/dsd: use std::array
2016-02-26 17:38:46 +01:00
Max Kellermann
e5c6fe1bb2
player/control: unpause in Play()
...
Fix regression by commit 45f6129a
See http://bugs.musicpd.org/view.php?id=4477
2016-02-26 17:33:21 +01:00
Max Kellermann
bf65a9732c
decoder/thread: clear Decoder::error before attempting another plugin
...
Keep only the last error. This fixes bogus aborts due to the error
check in decoder_get_virtual_command().
2016-02-26 17:30:24 +01:00
Max Kellermann
1388b3219a
decoder/thread: fix typo in comment
2016-02-26 16:48:27 +01:00
Max Kellermann
d9e8ce22cb
util/Error: use std::exception_ptr instead of std::exception
...
Necessary to preserve type information. The try/catch sequence didn't
work previously.
Same fix as in commit 1c904000
2016-02-26 16:32:24 +01:00
Max Kellermann
224944528f
TagArchive: include cleanup
2016-02-26 15:10:33 +01:00
Max Kellermann
cdcd3e77b3
TagArchive: refactor TagHandler overload to use ArchiveFile
2016-02-26 15:07:30 +01:00
Max Kellermann
ed5058a363
TagArchive: remove obsolete overload
2016-02-26 15:07:00 +01:00
Max Kellermann
a670ff6d3e
SongUpdate: remove obsolete overload UpdateFileInArchive(Storage)
2016-02-26 15:06:16 +01:00
Max Kellermann
32f6d34904
db/update/Archive: rescan tags on existing songs in archive
...
This is the final piece for full ID3/APE support in archives.
2016-02-26 15:05:49 +01:00
Max Kellermann
d3ae05506d
SongUpdate: remove archive handling from LoadFile()
...
This code has been moved to LoadFromArchive().
2016-02-26 15:05:44 +01:00
Max Kellermann
96f4394dce
db/update/Archive: pass ArchiveFile to Song constructor
...
Don't open the ZIP file again and again for each song file.
2016-02-26 15:05:40 +01:00
Max Kellermann
35567e6507
SongUpdate: add UpdateFileInArchive(ArchiveFile&)
2016-02-26 14:53:37 +01:00
Max Kellermann
ae37e25452
TagArchive: add overload with ArchiveFile&
2016-02-26 14:46:01 +01:00
Max Kellermann
c4537fe6f6
TagArchive: add TagBuilder overload with ScanGenericTags() fallback
...
Load APE/ID3 tags from archives.
2016-02-26 14:03:16 +01:00
Max Kellermann
677334f5a9
tag/TagId3: re-add missing tag_id3_load()==nullptr check
2016-02-26 14:00:30 +01:00
Max Kellermann
3d9652ae35
TagStream: add TagBuilder overload with ScanGenericTags() fallback
...
This commit adds support for APE/ID3 tags from NFS/SMB files.
See http://bugs.musicpd.org/view.php?id=4270
2016-02-26 13:48:38 +01:00
Max Kellermann
a9130cb99c
TagFile: add TagBuilder overload with ScanGenericTags() fallback
2016-02-26 13:48:38 +01:00
Max Kellermann
b1d60b5c85
TagArchive: use InputStreamPtr
2016-02-26 13:48:38 +01:00
Max Kellermann
99a05c56ad
tag/Generic: use InputStream::LockRewind() instead of Rewind()
...
Fixes deadlock.
2016-02-26 13:48:38 +01:00
Max Kellermann
cfc65397b3
tag/Generic: clarify documentation on InputStream overload
2016-02-24 00:01:51 +01:00
Max Kellermann
cd8fd1ef42
tag/Generic: remove redundant documentation
2016-02-24 00:01:30 +01:00
Max Kellermann
6350089e51
release v0.19.13
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJWzMnGAAoJECNuiljG20US5yYP/jL9A313aMgUO/R8eVGNc7uJ
CwiKROtgd+M47si1qdduzdrPKrFK2tEGYT0El5uQsyDuIsmPB01c3ZqnlM8oO6ca
5tXXJiEvyMkupCEzAajTHqvDCyPx0+o1ektYm9SouAULjOMztIpsVU3oKc8Z78Yc
TkpaRwUjNaekGLf0kATesBYnWkKR7S/TLYKmaKUaPCcK/i2S8YhTC57a1yZjg3lE
w57Kh+tFLZCSiZChk9A5D6w1kKzDgiyNGRYK4F2TRfiQ6hML4F45EFgzfCg+zHi8
+OIE9C1ZQt/NQ6mib+OUWoGuHtfjR20F/OFnQEYvkyXQ32j1sbALe7IHCceX7IHl
U88hcIh2yEr1x3TUaVyYPLze4FBq/Uxv/gFH8FVKTWmcb90MJgXCNFbO3sfO9kk0
KYK0IDoHE9MSmWhblA1FFFHU8VmCMsTN0VhBan+XP2wgXnGX+UvjU7AWJm4Fkwx0
H8uP0Si5wtI9DZ+2SRyGhMfW/+pHsqD+O6PoSSfUyU3ZnPy+cAVEC+67oKJ9pZkA
najeYaMt0Kz88RvLEwNeLkiys62O8aTsBpfjeNfmUAISJzZZbIvC20tyroHrju30
TgbXff2Hnx4q+NQ7nbQN5HMVZ2JLLPMYYw+N0dP41g/ULubHS6btGOVwgTWoFwBo
i2L1uscoD1ONxIEOlIvl
=X7s3
-----END PGP SIGNATURE-----
Merge tag 'v0.19.13'
release v0.19.13
2016-02-23 22:13:43 +01:00
Max Kellermann
39fa949345
queue/Playlist: move only the tag items in TagModified()
...
Fixes disappearing duration of remote songs during playback.
See http://bugs.musicpd.org/view.php?id=4492
2016-02-23 21:01:55 +01:00
Max Kellermann
e1d7a5cbf5
DetachedSong: add method MoveTagItemsFrom()
2016-02-23 20:59:44 +01:00
Max Kellermann
f3cefaf043
tag/Tag: move code to MoveItemsFrom()
2016-02-23 20:57:56 +01:00
Max Kellermann
b3460f3f54
configure.ac, unix/Daemon: check for initgroups() at configure time
...
The initgroups() manpage says we need to check for _BSD_SOURCE. The
thing is that glibc deprecated this macro, and doesn't define it
anymore, effectively breaking all MPD supplementary groups.
The real fix is to check for initgroups() availability at configure
time, instead of relying on the deprecated _BSD_SOURCE macro.
2016-02-23 20:13:34 +01:00
Max Kellermann
8e5a67ed9f
tag/TagId3: eliminate dummy function when libid3tag is disabled
2016-02-23 11:16:19 +01:00
Max Kellermann
cccbcf510a
tag/{Id3,Ape}: remove Path overloads
2016-02-23 11:14:27 +01:00
Max Kellermann
a1e680fec7
decoder/thread: open InputStream in decoder_run_file() in any case
...
decoder_load_replay_gain() will create the InputStream anyway, so
we're not saving any overhead by opening the InputStream on demand
only.
2016-02-23 11:14:12 +01:00
Max Kellermann
1b58bd64ff
decoder/thread: use typedef InputStreamPtr
2016-02-23 11:14:11 +01:00
Max Kellermann
196de8c758
decoder/thread: load APE replay gain from remote files
2016-02-23 10:57:03 +01:00
Max Kellermann
222b777552
tag/ApeReplayGain: add overload with InputStream& parameter
2016-02-23 10:42:41 +01:00
Max Kellermann
b5c206d3ae
tag/Generic: use common InputStream for APE and ID3
2016-02-23 10:27:31 +01:00
Max Kellermann
17ace95268
tag/Generic: add overload with InputStream& parameter
2016-02-23 10:18:07 +01:00
Max Kellermann
779d73f94b
tag/TagId3: add overload with InputStream& parameter
2016-02-23 10:15:38 +01:00
Max Kellermann
73307bf2e7
tag/TagHandler: pass by reference
2016-02-23 10:10:13 +01:00
Max Kellermann
7623c1c5cb
SongUpdate: move tag_scan_fallback() to tag/Generic.cxx
2016-02-22 18:00:49 +01:00
Max Kellermann
de568c84c2
tag/ApeLoader: use CamelCase
2016-02-22 17:53:06 +01:00
Max Kellermann
1f5b9c6185
tag/ApeLoader: use std::unique_ptr
2016-02-22 17:50:15 +01:00
Max Kellermann
a5f8fd774d
tag/handler: use CamelCase
2016-02-22 17:38:06 +01:00
Max Kellermann
cc5443c38e
tag/ApeLoader: use class InputStream instead of FILE*
...
Prepare for APE tag support on userspace NFS/SMB/CIFS mounts.
2016-02-22 17:30:36 +01:00
Max Kellermann
8a86460b8f
tag/Id3Load: use class InputStream instead of FILE*
...
Prepare for ID3 support on userspace NFS/SMB/CIFS mounts.
2016-02-22 17:30:36 +01:00