Eric Wollesen
81a198a76a
return id for "addid" with position
...
Previously the id was being returned only when a position wasn't
specified.
2016-06-13 10:14:20 -06:00
Max Kellermann
5771d67202
player/Thread: cancel outputs before seeking
...
.. instead of doing it after seeking. After seeking, the command had
no effect, because CheckDecoderStartup() waits for all outputs to
finish. This caused a very long delay while seeking and switching
songs (https://bugs.musicpd.org/view.php?id=4534 ).
2016-06-13 09:13:56 +02:00
Lazaros Koromilas
b2b7974ba0
util/WStringAPI: wcpcpy(3) is not yet supported on OpenBSD/NetBSD
...
Signed-off-by: Lazaros Koromilas <lostd@2f30.org>
2016-06-12 16:36:17 +02:00
Lazaros Koromilas
f59ca94416
net/Resolver: correct includes for gettaddrinfo(3)
...
Signed-off-by: Lazaros Koromilas <lostd@2f30.org>
2016-06-12 16:36:17 +02:00
Max Kellermann
22ff0d80ce
decoder/pcm: add MIME type "audio/x-mpd-float"
2016-06-10 23:06:21 +02:00
Max Kellermann
5a22a0c27d
decoder/pcm: implement RFC 2586 (audio/L16)
...
https://bugs.musicpd.org/view.php?id=4525
2016-06-10 22:52:35 +02:00
Max Kellermann
287ef181ba
util/MimeType: add ParseMimeTypeParameters()
2016-06-10 22:52:35 +02:00
Max Kellermann
92cdea123e
TagStream, decoder/Thread, ...: ignore MIME type parameters for matching plugins
2016-06-10 22:24:13 +02:00
Max Kellermann
e4c7e343c8
util/StringUtil: use CamelCase
2016-06-10 22:08:13 +02:00
Max Kellermann
2ee43c403c
decoder/vorbis: reimplement using class OggDecoder
...
Use libvorbis instead of libvorbisfile, which gives us more control
over the decoding process.
2016-05-14 12:31:12 +02:00
Max Kellermann
24fa3f5e7b
Revert "decoder/Thread: flush last chunk only on success"
...
This reverts commit 995cd95474
. It was
a bad idea because it caused assertion failures when a decoder plugin
aborted with an exception.
2016-05-14 12:31:12 +02:00
Max Kellermann
bbbda7f812
decoder/opus: move code to new class OggDecoder
...
Prepare to reuse the same code for a new Vorbis decoder plugin based
on libvorbis instead of libvorbisfile.
2016-05-14 11:31:31 +02:00
Max Kellermann
e958900380
decoder/vorbis: reimplement _scan_stream() with plain libvorbis
2016-05-14 10:52:52 +02:00
Max Kellermann
74926c1dd3
decoder/opus: move _scan_stream() code to OggReadPacket()
2016-05-14 10:39:53 +02:00
Max Kellermann
2654888782
decoder/OggFind: move to lib/xiph/
2016-05-14 10:34:05 +02:00
Max Kellermann
b5ecfb4c9a
decoder/opus: move code to class OggVisitor
2016-05-13 13:37:49 +02:00
Max Kellermann
07fa3764ef
lib/xiph/OggStreamState: add wrapper for ogg_stream_reset()
2016-05-13 13:37:45 +02:00
Max Kellermann
5acc77a163
decoder/opus: change return types to void
2016-05-13 13:24:32 +02:00
Max Kellermann
0709878b4c
decoder/API: add class StopDecoder
2016-05-13 13:23:24 +02:00
Max Kellermann
662e477028
decoder/opus: throw exceptions instead of returning DecoderCommand::STOP
2016-05-13 13:18:19 +02:00
Max Kellermann
b7b7c381ee
decoder/Thread: catch exceptions
...
Allow decoders to throw std::runtime_error.
2016-05-13 13:01:39 +02:00
Max Kellermann
995cd95474
decoder/Thread: flush last chunk only on success
2016-05-13 13:01:31 +02:00
Max Kellermann
fe8a13f76f
decoder/Thread: move code to DecoderUnlockedRunUri()
2016-05-13 13:00:40 +02:00
Max Kellermann
9252432bc0
decoder/opus: move OggSyncState into class MPDOpusDecoder
2016-05-13 12:25:30 +02:00
Max Kellermann
f057f6768f
decoder/opus: pass DecoderReader to constructor
2016-05-13 12:16:22 +02:00
Max Kellermann
806bf0be8d
decoder/Reader: add methods GetDecoder(), GetInputStream()
2016-05-13 11:27:06 +02:00
Max Kellermann
958506a108
decoder/Reader: change Decoder pointer to reference
2016-05-13 10:40:10 +02:00
Max Kellermann
e8fd771b91
decoder/opus: change Decoder pointers to references
2016-05-13 10:39:36 +02:00
Max Kellermann
fa4178fefa
decoder/opus: remove ogg_page parameter from constructor
...
Initialize the OggStreamState as soon as the first page is seen; no
special code needed in the caller.
2016-05-11 17:57:51 +02:00
Max Kellermann
1af59d31b9
decoder/opus: add method IsInitialized()
2016-05-11 17:27:26 +02:00
Max Kellermann
20758cef30
decoder/opus: make internal methods "private"
2016-05-11 17:27:02 +02:00
Max Kellermann
272938529d
decoder/opus: move everything into anonymous namespace
2016-05-11 17:25:43 +02:00
Max Kellermann
a67b7266ed
util/AllocatedString: work around bogus gcc6 warning
2016-05-11 17:10:15 +02:00
Max Kellermann
f26159a0e3
lib/xiph/OggUtil: move code into class OggSyncState
2016-05-09 16:29:04 +02:00
Max Kellermann
675e8667c2
lib/xiph/OggSyncState: remove unused method ExpectFirstPage()
2016-05-09 16:27:11 +02:00
Max Kellermann
a1a26b70bc
decoder/opus: make opus_serialno a local variable
2016-05-09 15:43:15 +02:00
Max Kellermann
34a7f86a07
decoder/opus: use class OggStreamState in _stream_decode()
2016-05-09 15:41:03 +02:00
Max Kellermann
e7311ac2f3
decoder/opus: use C++11 initializers
2016-05-09 15:41:01 +02:00
Max Kellermann
8d9ecc0c62
decoder/opus: make variables more local
2016-05-09 15:41:00 +02:00
Max Kellermann
f01b991108
decoder/opus: use class OggStreamState in _scan_stream()
2016-05-09 15:40:59 +02:00
Max Kellermann
f80736c3d7
lib/xiph/OggStreamState: add method GetSerialNo()
2016-05-09 15:40:50 +02:00
Max Kellermann
2c7f69cf85
lib/xiph/OggStreamState: add constructor with ogg_page
2016-05-09 15:38:29 +02:00
Max Kellermann
348ecc1118
lib/xiph/OggStreamState: add method PageIn()
2016-05-09 15:29:37 +02:00
Max Kellermann
a9678f0ae0
decoder/opus: fix minor typo
2016-05-09 15:00:04 +02:00
Max Kellermann
461f298d2c
lib/xiph/OggStream: remove obsolete class
2016-05-09 14:55:58 +02:00
Max Kellermann
068de7cf40
encoder/ogg: use class OggStreamState
2016-05-09 14:51:07 +02:00
Max Kellermann
d04eb87c4f
encoder/opus: divert to OggEncoder::Read()
2016-05-09 14:51:05 +02:00
Max Kellermann
8af68db965
lib/xiph/OggStreamState: new ogg_stream_state wrapper
2016-05-09 14:50:39 +02:00
Max Kellermann
1cf632e98b
lib/xiph/OggStream: move code to ReadPage()
2016-05-09 14:22:12 +02:00
Max Kellermann
58c11c3128
encoder/vorbis: move vorbis_info_init() call to constructor
2016-05-09 13:22:59 +02:00
Max Kellermann
efcda95dda
encoder/vorbis: remove vorbis_info_clear() calls from error code paths
...
The destructor will call this in any case.
2016-05-09 13:22:43 +02:00
Max Kellermann
80d2028bac
encoder/vorbis: merge Clear() into the destructor
2016-05-09 13:22:27 +02:00
Max Kellermann
215213fc2c
encoder/vorbis: add wrapper class for vorbis_comment
2016-05-09 12:22:22 +02:00
Max Kellermann
0998097253
encoder/{vorbis,opus}: move common code to class OggEncoder
2016-05-04 18:52:57 +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
69bf835059
encoder/vorbis: move code into the struct
2016-05-04 16:22:59 +02:00
Max Kellermann
b97ffddfe8
encoder/vorbis: use CamelCase
2016-05-04 16:21:47 +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
33c5da700d
encoder/opus: move functions into the struct
2016-05-03 23:56:47 +02:00
Max Kellermann
48d3af7d9a
encoder/opus: use CamelCase
2016-05-03 23:53:42 +02:00
Max Kellermann
9b3470eabd
lib/xiph/OggStream: use C++11 initializer
2016-05-03 23:46:56 +02:00
Max Kellermann
86a505b4f3
lib/xiph/OggSyncState: disallow copying
2016-05-03 23:45:32 +02:00
Max Kellermann
ed6c6296eb
{de,en}coder/{vorbis,flac,opus}: move several libraries to lib/xiph/
2016-05-03 23:40:29 +02:00
Max Kellermann
7adbd00811
decoder/{vorbis,flac,opus}: move OggCodec.cxx to libxiph.a
2016-05-03 12:54:47 +02:00
Max Kellermann
1c91d19163
decoder/OggUtil: pass Reader instance to OggFeed()
2016-05-03 00:05:31 +02:00
Max Kellermann
f491135318
decoder/Reader: new Reader implementation
2016-05-03 00:05:31 +02:00
Max Kellermann
a7ced00520
input/Reader: new Reader implementation wrapping InputStream
2016-05-03 00:05:31 +02:00
Max Kellermann
280d35a053
decoder/api: use class ScopeLock
2016-05-02 23:33:08 +02:00
Max Kellermann
eca6b9f0af
thread/Mutex: add method ScopeLock::Unlock()
2016-05-02 23:32:44 +02:00
Max Kellermann
cc9345e703
encoder/wave: use CamelCase
2016-04-30 14:29:14 +02:00
Max Kellermann
3fb8f3ec95
release v0.19.15
...
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2
iQIcBAABCAAGBQJXJKNhAAoJECNuiljG20US7pcP/A2sFmmf+QlKvV5G88D+UxbX
kIoz3d5mHRoW4kJcbhUKUVe9pIkQEWTVC4XNNi8ggO8/MUa7+FpUPR0bJDgmLnnm
jM3tV/eVXUmPgXTgj1PT0jOTNCNNJx69JYhz7nMGIAbxubs7hRGTfGgJYnTQImsW
yDVst0BH7C6i21kmAWjQYoFZu0h7ZoyBOZTHAyR/6wF6Bmlc5JAEV6eBRyrU3MLN
Mma4+rJhMh+2206SqUBJEVwEszaTJnmu7Xi5Zmk+LGSrykJt93bQio7k2hJ5PvKJ
feFCXl1IpobUMpPJ+Nv1QraTKO9lg5oEYOwlcxJf4JwfqpRk+oXr+MZ52iR9jMtw
otcux72CYMmSJOC2Sl8cq9TdQCOb7XxhDjv+Phf44WG5Ns1QJQY7rvrGLT0gFSLx
MVD2WKJCrWFgql6ugf9lhsrt7x8llD9anNqbJNamXmGoL0NFJs6sg9d02vbRuIDz
xOcBPKnDB/Ao1TxXT4/Ck6gzYwTd+sxvsrC2XwthDXTiM+qe+pAjF+KFKd5thIUs
Hh296GL8Ch68X+6HXVkCKwyW9F503LFAcXTlP6XQUnkpPHNU536VdUjaHmx557jR
3cY7d67gHSVxllDQJYp0GIMIKyaZhQ4V7w3l1IKzPc1KrhryOxvlbAaYVSHo26nI
yZMKwFJ1L0l9j76kZG4a
=GyO9
-----END PGP SIGNATURE-----
Merge tag 'v0.19.15'
release v0.19.15
2016-04-30 14:28:25 +02:00
Max Kellermann
c9553411bb
encoder/wave: add constant WAVE_FORMAT_PCM
2016-04-30 13:57:09 +02:00
Max Kellermann
62221adf55
encoder/wave: fix indent
2016-04-30 13:45:52 +02:00
Florian Schlichting
27d4b15925
DecoderBuffer: add missing include
...
> In file included from src/decoder/DecoderBuffer.cxx:21:0:
> src/decoder/DecoderBuffer.hxx:41:20: error: 'uint8_t' was not declared in this scope
> DynamicFifoBuffer<uint8_t> buffer;
> ^
> src/decoder/DecoderBuffer.hxx:41:27: error: template argument 1 is invalid
> DynamicFifoBuffer<uint8_t> buffer;
> ^
> src/decoder/DecoderBuffer.hxx: In member function 'void DecoderBuffer::Clear()':
> src/decoder/DecoderBuffer.hxx:61:10: error: request for member 'Clear' in '((DecoderBuffer*)this)->DecoderBuffer::buffer', which is of non-class type 'int'
> buffer.Clear();
> ^
> src/decoder/DecoderBuffer.hxx: In member function 'size_t DecoderBuffer::GetAvailable() const':
> src/decoder/DecoderBuffer.hxx:78:17: error: request for member 'GetAvailable' in '((const DecoderBuffer*)this)->DecoderBuffer::buffer', which is of non-class type 'const int'
> return buffer.GetAvailable();
> ^
> src/decoder/DecoderBuffer.hxx: In member function 'ConstBuffer<void> DecoderBuffer::Read() const':
> src/decoder/DecoderBuffer.hxx:87:19: error: request for member 'Read' in '((const DecoderBuffer*)this)->DecoderBuffer::buffer', which is of non-class type 'const int'
> auto r = buffer.Read();
> ^
> src/decoder/DecoderBuffer.hxx:88:27: error: could not convert '{<expression error>, <expression error>}' from '<brace-enclosed initializer list>' to 'ConstBuffer<void>'
> return { r.data, r.size };
> ^
> src/decoder/DecoderBuffer.hxx: In member function 'void DecoderBuffer::Consume(size_t)':
> src/decoder/DecoderBuffer.hxx:105:10: error: request for member 'Consume' in '((DecoderBuffer*)this)->DecoderBuffer::buffer', which is of non-class type 'int'
> buffer.Consume(nbytes);
> ^
This seems to be caused by a lacking include, fixed by the below patch.
I'm unsure what made this appear now, though, compiler and toolchain
libraries seem to be the same upstream versions that built 0.19.14-1
just fine in late March.
2016-04-25 08:30:27 +02:00
Max Kellermann
fc3e0dfcd1
fs/AllocatedPath: add method FromUTF8Throw()
2016-04-21 14:27:32 +02:00
Max Kellermann
6513ff92a7
fs/Charset: throw exception on error
2016-04-21 14:23:55 +02:00
Max Kellermann
a0eb6d0976
PlaylistFile: use the new AllocatedPath::FromFS() range overload
2016-04-21 14:22:59 +02:00
Max Kellermann
7530770842
fs/AllocatedPath: add FromFS() with pointer range
2016-04-21 14:21:24 +02:00
Max Kellermann
11ea72e240
fs/AllocatedPath: make constructor "explicit"
2016-04-21 14:20:56 +02:00
Max Kellermann
c98330909a
db/update/Walk: use AllocatedPath methods instead of PathTraitsFS
2016-04-21 14:15:01 +02:00
Max Kellermann
bec6fa4ad7
lib/icu/Converter: throw exception on error
2016-04-21 14:03:27 +02:00
Max Kellermann
ac7ce73526
player/Thread: cancel audio when decoder startup on seek fails
...
Fixes assertion failure in MultipleOutputs::Open() after seeking to a
failing song during playback.
2016-04-21 14:03:27 +02:00
Max Kellermann
4c6619e6c5
output/MultipleOutputs: use C++11 initializers
2016-04-21 13:28:31 +02:00
Max Kellermann
e8121fdc11
decoder/Thread: fail decoder_input_stream_open() if STOP is received
...
Fixes an assertion failure in tag_ape_scan() which is because
decoder_input_stream_open() returns an "unready" InputStream.
2016-04-21 13:15:34 +02:00
Max Kellermann
21f17270a1
lib/icu/Util: UCharFromUTF8() throws on error
2016-04-21 11:20:41 +02:00
Max Kellermann
423cd5900e
lib/icu/Util: fold UCharToUTF8Throw() into UCharToUTF8()
2016-04-21 10:58:21 +02:00
Max Kellermann
b9f535cd49
lib/icu/Win32: throw exception on error
2016-04-21 10:15:40 +02:00
Max Kellermann
c731a82b71
decoder/opus: limit the number of packets in _scan_stream()
2016-04-19 13:08:07 +02:00
Max Kellermann
e6fad97edc
decoder/opus: support bigger OpusTags packets
...
Required for OpusTags packets which contain artwork.
See https://bugs.musicpd.org/view.php?id=4520
2016-04-19 13:05:42 +02:00
Max Kellermann
e228144159
command/playlist: eliminate spl_print() calls
...
playlist_file_print() already handles stored playlists. spl_print()
is never called with a successful result.
2016-04-13 19:47:41 +02:00
Max Kellermann
9431a7b022
playlist/Any: fix documentation typo
2016-04-13 19:23:14 +02:00
Max Kellermann
cd041f8574
decoder/Plugin: container_scan() returns AllocatedString
2016-04-13 12:23:10 +02:00
Max Kellermann
8ba3378096
util/AllocatedString: add operator==(nullptr)
2016-04-13 12:23:10 +02:00
Max Kellermann
225984822d
lib/icu/Win32: use std::unique_ptr
2016-04-13 11:53:35 +02:00
Max Kellermann
01b68db30e
lib/icu/Converter: Create() throws exception on error
2016-04-13 10:04:19 +02:00