Commit Graph

9184 Commits

Author SHA1 Message Date
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