Max Kellermann
2b97b124bd
release v0.19.18
2016-08-05 18:45:23 +02:00
Max Kellermann
d042ab87da
decoder/Thread: delete the InputStream on error
...
Fixes memory leak after stream failure. See
https://bugs.musicpd.org/view.php?id=4562
2016-08-05 18:15:30 +02:00
Max Kellermann
588303b78d
lib/nfs/Manager: add Compare(ManagedConnection, ManagedConnection)
...
Required for Boost 1.61, which uses that overload in a BOOST_ASSERT().
2016-08-05 18:06:07 +02:00
Max Kellermann
36704c5e18
Makefile.am: fix "undefined reference" linker error
2016-08-05 17:48:53 +02:00
Max Kellermann
5834843b8a
decoder/ffmpeg: fix the AVCodecParameters API check
...
Turns out the libavcodec version numbers are not linear; the feature
was added in FFmpeg 3.1 commit 998e1b8, libavcodec 57.14.0; but FFmpeg
3.0 has version 57.48.101. Ouch!
2016-08-02 19:15:23 +02:00
Max Kellermann
762f3afb9d
decoder/sidplay: allow building with libsidplayfp instead of libsidplay2
...
https://bugs.musicpd.org/view.php?id=4558
2016-07-29 19:32:21 +02:00
Max Kellermann
7fb2f15a1a
decoder/ffmpeg: check avformat_open_input() return value
2016-07-29 19:32:21 +02:00
Max Kellermann
7456dccd3a
decoder/ffmpeg: FfmpegOpenInput() returns Error
2016-07-29 19:32:21 +02:00
Max Kellermann
245f41bb7e
decoder/ffmpeg: fix endless recursion in FfmpegScanStream()
...
Was accidently added by commit cafc266e0
2016-07-29 19:32:21 +02:00
Max Kellermann
9bfb844cfa
decoder/sidplay: read the "date" tag
2016-07-29 17:47:08 +02:00
Max Kellermann
d790d3ba3c
decoder/sidplay: add GetInfoString()
2016-07-29 17:38:04 +02:00
Max Kellermann
c3dbc92766
decoder/sidplay: use SidTune::getStatus()
2016-07-29 17:31:34 +02:00
Max Kellermann
0bd25f1e17
decoder/sidplay: log detailed error message
2016-07-29 17:04:38 +02:00
Max Kellermann
a4cd7411e8
decoder/sidplay: remove unnecessary error check
...
The ReSIDBuilder constructor cannot fail.
2016-07-29 17:03:26 +02:00
Max Kellermann
bf276f6235
decoder/sidplay: use SidTune::getStatus()
2016-07-29 16:58:58 +02:00
Max Kellermann
d916890a8f
configure.ac: detect libsidplay2 and related with pkg-config
...
The comment about requiring libtool from 7 years ago is obsolete these
days.
2016-07-29 15:21:38 +02:00
Max Kellermann
071cacc9a4
decoder/sidplay: pass SidTuneMod to get_song_length()
...
Eliminate duplicate SidTune construction.
2016-07-29 14:56:05 +02:00
Max Kellermann
33f33323af
decoder/sidplay: simplify the SidDatabase::length() call
2016-07-29 14:55:58 +02:00
Max Kellermann
388fae2c47
decoder/sidplay: include cleanup
2016-07-29 14:55:28 +02:00
Max Kellermann
9f878b77e9
decoder/sidplay: use class SidDatabase
...
Remove our own songlength database parser.
2016-07-29 14:55:28 +02:00
Max Kellermann
a547d2aaba
decoder/sidplay: use config_param::GetBlockPath()
2016-07-29 14:55:28 +02:00
Max Kellermann
c013026821
decoder/sidplay: make "songlength_file" local
2016-07-29 14:55:28 +02:00
Max Kellermann
96b48a2404
decoder/sidplay: pass parsed path to get_song_length()
...
Eliminates duplicate ParseContainerPath() call.
2016-07-29 14:55:28 +02:00
Max Kellermann
9612975c2c
decoder/sidplay: merge get_container_name() and get_song_num()
2016-07-29 14:55:28 +02:00
Max Kellermann
41bfd45a2e
fs/Path: make IsAbsolute() const
2016-07-29 14:55:28 +02:00
Max Kellermann
bbdcbd1f08
fs/Path: add methods GetBase() and GetDirectoryName()
2016-07-29 14:55:28 +02:00
Max Kellermann
6b3c525a9d
db/update/ExcludeList: declare exclude_list_domain only if HAVE_GLIB
2016-07-29 14:55:28 +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
Max Kellermann
77c6e45e65
Compiler.h: require gcc 4.7 or newer
...
The ScopeExit library uses C++11 initializers, which gcc 4.6 does not
support. Let's kill support for this ancient incomplete C++11
compiler, nobody should be using it anymore.
2016-07-29 09:52:23 +02:00
Max Kellermann
8825393660
decoder/ffmpeg: use avcodec_alloc_context3()
...
This commit suppresses the remaining deprecation warnings with FFmpeg 3.1.
2016-07-29 09:20:36 +02:00
Max Kellermann
2b9246c6ad
decoder/ffmpeg: use avcodec_send_packet() and avcodec_receive_frame() on FFmpeg 3.1
2016-07-29 09:20:05 +02:00
Max Kellermann
a9edb4de28
decoder/ffmpeg: use AtScopeExit() for safe cleanup
2016-07-29 09:08:14 +02:00
Max Kellermann
a076ddf38c
util/ScopeExit: new utility library
...
Similar to boost::scope_exit, but fewer include dependencies.
2016-07-29 09:07:58 +02:00
Max Kellermann
cafc266e0b
decoder/ffmpeg: merge avformat_close_input() calls
2016-07-28 20:38:07 +02:00
Max Kellermann
a3d020eff9
decoder/ffmpeg: use AVCodecParameters on FFmpeg 3.1
...
The AVCodecContext attribute is deprecated.
2016-07-28 19:50:25 +02:00
Max Kellermann
8412d94d05
decoder/ffmpeg: add GetCodecParameters()
...
Preparing for FFmpeg 3.1 support.
2016-07-28 19:49:47 +02:00
Max Kellermann
d1c5bb956a
decoder/ffmpeg: move code to IsAudio()
2016-07-28 19:49:45 +02:00
Max Kellermann
70986bc120
decoder/ffmpeg: move code to FfmpegSendFrame()
2016-07-28 19:49:18 +02:00
Max Kellermann
f31fe8b865
decoder/ffmpeg: include cleanup
2016-07-28 19:49:17 +02:00
Max Kellermann
142a9fe530
decoder/ffmpeg: move code to pcm/Interleave.cxx
2016-07-28 19:49:13 +02:00
Max Kellermann
4dd2ad9b27
decoder/ffmpeg: check for commands earlier
...
Improve initial seek by not reading/decoding the first frame before
checking for the seek command.
2016-07-28 19:48:27 +02:00
Max Kellermann
62f7375804
decoder/ffmpeg: simplify mpd_ffmpeg_open_input()
2016-07-28 19:48:25 +02:00
Max Kellermann
543296b5ba
decoder/ffmpeg: move code to lib/ffmpeg/Init.cxx
2016-07-28 19:48:22 +02:00
Max Kellermann
5fee130d00
decoder/ffmpeg: move code to lib/ffmpeg/LogCallback.cxx
2016-07-28 19:47:49 +02:00
Max Kellermann
073facea70
decoder/ffmpeg: remove obsolete comment
2016-07-28 19:47:47 +02:00
Max Kellermann
dbe3b6eee4
decoder/ffmpeg: convert enums to constexpr
2016-07-28 19:47:36 +02:00
Max Kellermann
df97049647
decoder/ffmpeg: move struct AvioStream to FfmpegIo.hxx
2016-07-28 19:47:31 +02:00
Max Kellermann
42c5f68362
decoder/ffmpeg: use AVStream::duration
...
Use the duration of the stream we're actually decoding - not the
"global" attribute AVFormatContext::duration which may differ.
2016-07-28 19:47:24 +02:00
Max Kellermann
cc19e760cf
decoder/ffmpeg: use more references
2016-07-28 19:45:22 +02:00
Max Kellermann
0ff22a16fa
decoder/ffmpeg: move code to lib/ffmpeg/Time.hxx
2016-07-28 19:45:11 +02:00
Max Kellermann
47360ec906
decoder/ffmpeg: use av_free() instead of av_freep()
2016-07-28 19:45:07 +02:00
Max Kellermann
087a9938d2
decoder/ffmpeg: add API documentation
2016-07-28 19:45:05 +02:00
Max Kellermann
26d8e41a6b
decoder/ffmpeg: copy_interleave_frame() returns ConstBuffer
2016-07-28 19:45:01 +02:00
Max Kellermann
750ae1d3f3
decoder/ffmpeg: copy_interleave_frame() returns Error
2016-07-28 19:44:42 +02:00
Max Kellermann
f8a9a7a108
decoder/ffmpeg: simplify ffmpeg_send_packet()
2016-07-28 19:44:39 +02:00
Max Kellermann
eb192137d6
decoder/ffmpeg: copy the AVPacket in ffmpeg_send_packet()
...
Revert commit 70495aad by rewriting it. Turns out, in old FFmpeg
versions, copying the AVPacket is necessary.
2016-07-28 19:42:25 +02:00
Max Kellermann
c25b464f37
decoder/ffmpeg: move code to class FfmpegBuffer
2016-07-27 17:31:02 +02:00
Max Kellermann
710b48d410
decoder/ffmpeg: log detailed error message
2016-07-27 17:28:12 +02:00
Max Kellermann
5e77a8199d
decoder/ffmpeg: remove obsolete comment
2016-07-27 17:28:12 +02:00
Max Kellermann
6637db086b
decoder/ffmpeg: add "pure" attributes
2016-07-27 17:28:12 +02:00
Max Kellermann
a271a55da7
decoder/ffpmeg: make variables more local
2016-07-27 17:28:12 +02:00
Max Kellermann
6eeec6cbfa
decoder/ffpmeg: simplify ffmpeg_send_packet()
2016-07-27 17:22:13 +02:00
Max Kellermann
5e3f3b0400
decoder/ffpmeg: rename functions to CamelCase
2016-07-27 17:18:58 +02:00
Max Kellermann
923c402f69
decoder/ffmpeg: optimize ffmpeg_scan_dictionary()
...
Don't scan tag items if the handler doesn't implement the tag()
method.
2016-07-27 17:17:14 +02:00
Max Kellermann
4fed0b991c
configure.ac: prepare for 0.19.18
2016-07-27 15:07:15 +02:00
Max Kellermann
f28c746b6b
release v0.19.17
2016-07-09 00:40:57 +02:00
Max Kellermann
ab95027fc6
decoder/flac: suppress warning at end of stream
...
This is required if a stream ands without another chained FLAC file.
2016-07-08 23:19:47 +02:00
Max Kellermann
ed3bc4ab63
decoder/flac: move code to FlacInitAndDecode()
2016-07-08 23:03:49 +02:00
Max Kellermann
68064f1aa6
decoder/flac: move duplicate code to flac_data::Initialize()
2016-07-08 22:44:23 +02:00
Max Kellermann
475ac76a5f
decoder/flac: late "total_frames" initialization
2016-07-08 22:43:31 +02:00
Max Kellermann
79d4f8674c
decoder/flac: remove "duration" parameter from flac_decoder_initialize()
...
It's always 0.
2016-07-08 22:41:19 +02:00
Max Kellermann
e42eed4d4c
decoder/flac: remove pointless check
2016-07-08 22:41:19 +02:00
Max Kellermann
4a7042e847
decoder/flac: handle unknown duration correctly
...
If the duration is unknown, pass SignedSongTime::Negative(), as
documented for decoder_initialized().
2016-07-08 22:33:49 +02:00
Max Kellermann
7f36923eb4
decoder/flac: pass SignedSongTime to decoder_initialized()
2016-07-08 22:32:23 +02:00
Max Kellermann
2ca8d69126
decoder/flac: document flac_data::position
2016-07-08 22:20:16 +02:00
Max Kellermann
70367d70c8
decoder/flac: remove obsolete sub-song support
...
This is obsolete because it has been moved to the MPD core.
2016-07-08 21:59:30 +02:00
Max Kellermann
e6389ff5a1
client/ClientRead: call Break() before Close()
...
Referencing the attribute "partition" is illegal after Close(),
because Close() deletes "this".
2016-07-07 13:54:04 +02:00
Max Kellermann
b46cf57d98
event/BufferedSocket: OnSocketReady() returns true after close
...
Fixes use-after-free bug (https://bugs.musicpd.org/view.php?id=4548 ).
2016-07-07 13:52:20 +02:00
Max Kellermann
6f59d71e07
decoder/API: check initial_seek_running in _check_cancel_read()
...
The "seeking" flag is not set for the initial seek, and so
decoder_read() could be canceled when another SEEK was emitted during
initial seek.
This fixes several seek problems, for example the one reported for the
FLAC decoder plugin:
https://bugs.musicpd.org/view.php?id=4552
2016-07-06 15:46:04 +02:00
Max Kellermann
f9130f42a2
decoder/flac: try to recover from seek error()
...
libFLAC API documentation suggests that FLAC__stream_decoder_flush()
should be called to recover from FLAC__STREAM_DECODER_SEEK_ERROR.
2016-07-05 19:29:56 +02:00
Max Kellermann
faf2eeaa99
decoder/flac: evaluate all possible FLAC__stream_decoder_get_state() values
...
Stop after all fatal errors. This fixes assertion failures in
libFLAC.
2016-07-05 19:27:40 +02:00
Max Kellermann
1c7de0b4ac
output/shout: remove pointless memset() call
2016-07-05 18:02:35 +02:00
Max Kellermann
58487e484f
filter/route: use PcmSilence()
2016-07-05 18:01:29 +02:00
Max Kellermann
104075f3e0
PlayerThread: use PcmSilence() in SendSilence()
...
No change for regular PCM, but DSD uses 0x69 now.
2016-07-05 18:01:29 +02:00
Max Kellermann
b8097eaf2e
pcm/Volume: move silence pattern to Silence.cxx
2016-07-05 17:52:53 +02:00
Max Kellermann
5eb0cbc887
PlayerThread: make chunk allocation error non-fatal in SendSilence()
...
Fixes abort after seeking on fast machines.
2016-07-05 17:44:45 +02:00
Max Kellermann
ba8e579e9b
pcm/Volume: use 0x69 to generate DSD silence
2016-07-01 21:22:21 +02:00
Max Kellermann
072e39c9cf
filter/ReplayGain: skip PcmVolume if a mixer is set
...
Previously, volume was applied twice: once by PcmVolume, and again by
the hardware mixer.
2016-07-01 21:17:52 +02:00
Max Kellermann
8dc3f3b21a
configure.ac: prepare for 0.19.17
2016-07-01 21:16:14 +02:00
Max Kellermann
faf0c950fe
release v0.19.16
2016-06-13 18:59:07 +02:00
Max Kellermann
4ecd325371
decoder/flac: log seek errors
2016-06-13 18:37:45 +02: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
Max Kellermann
75c8aecffa
NEWS: add missing lines
2016-05-11 17:09:46 +02:00
Max Kellermann
aa5d05eaa4
configure.ac: don't suppress GLib warnings by changing -I to -isystem
...
This is a kludge which may break system include path order, see
https://bugs.musicpd.org/view.php?id=4524
2016-05-02 22:05:21 +02:00
Max Kellermann
15735552f4
Makefile.am: include doc/include/tags.xml in tarball
...
See https://bugs.musicpd.org/view.php?id=4523
2016-05-02 09:03:54 +02:00
Max Kellermann
d6d9dc9d95
Makefile.am: include scripts/*.rb in tarball
...
Fix out-of-tree build by prepending $(srcdir)/, and change *.sh to
*.rb.
2016-05-02 08:58:17 +02:00
Max Kellermann
dc57966dc3
configure.ac: prepare for 0.19.16
2016-05-02 08:57:53 +02:00
Max Kellermann
04ed50fb0f
release v0.19.15
2016-04-30 14:21:52 +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
Max Kellermann
a6bf4746c6
test/test_byte_reverse: use gcc_alignas() for gcc<4.8 compatibility
2016-04-30 13:41:24 +02:00
Michael Cree
72637d00e8
Bug#822848: mpd FTBFS on Alpha; misaligned arrays in the test suite
...
Source: mpd
Version: 0.19.14-2
Severity: important
Justification: fails to build form source (but built in the past)
Tags: patch
User: debian-alpha@lists.debian.org
Usertags: alpha
mpd FTBFS on Alpha with a failure in the test suite [1]:
FAIL: test/test_byte_reverse
============================
.F...
!!!FAILURES!!!
Test Results:
Run: 4 Failures: 1 Errors: 0
1) test: ByteReverseTest::TestByteReverse2 (F) line: 58 test/test_byte_reverse.cxx
assertion failed
- Expression: strcmp(result, (const char *)dest) == 0
This occurs because the test suite (in test/test_byte_reversal.cxx)
allocates static char arrays and passes the char arrays to functions
whose respective arguments were declared to be uint16_t *, etc., in
the main code.
This is in the realm of undefined behaviour on architectures with
strict memory alignment requirements. Although the test only fails
on Alpha (because Alpha has a particular CPU load instruction that
gcc likes to use to add bugs ..., ahem, optimise the code on the
assumption of alignment) it is potentially a latent bug for other
architectures with strict alignment requirements.
Since the code is compiled with the c++11 standard I attach a patch
that modifies the test suite to align the non-compliant strings with
the alignas() attribute. The test suite now passes on Alpha with
that patch.
Cheers
Michael
[1] https://buildd.debian.org/status/fetch.php?pkg=mpd&arch=alpha&ver=0.19.14-2&stamp=1461542099
2016-04-28 13:29:41 +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
7a77767e66
doc/mpd.conf.5: move metadata_to_use to the user manual
2016-04-22 10:48:12 +02:00
Max Kellermann
1b26621860
doc/{user,protocol}: add a list of supported tags
...
A complete list which replaces the incomplete list in the mpd.conf
manpage.
2016-04-22 10:48:12 +02:00
Max Kellermann
3db5f4d0aa
doc/mpd.conf.5: remove obsolete metadata_to_use sentence
2016-04-22 10:38:24 +02:00
Max Kellermann
b2a6e327bf
doc: migrate to DocBook 4.5
2016-04-22 10:04:29 +02:00
Florian Schlichting
9aec5fe907
doc/user: fix typo
2016-04-22 09:25:17 +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
70495aada1
decoder/ffmpeg: don't copy the AVPacket in ffmpeg_send_packet()
...
Reduce some overhead. It is not necessary to copy the object.
2016-04-13 09:04:51 +02:00
Max Kellermann
f243f615ef
decoder/ffmpeg: convert pointers to references
2016-04-13 09:01:54 +02:00
Max Kellermann
807c72b2f1
decoder/ffmpeg: use av_packet_unref() instead of av_free_packet()
...
av_free_packet() was deprecated in FFmpeg 3.0.
2016-04-12 21:15:05 +02:00
Max Kellermann
74dbaade6f
decoder/Thread: use "ffmpeg" as fallback instead of "mad"
...
Adds support for stream codecs which havn't been explicitly listed in
ffmpeg_mime_types.
2016-03-30 00:58:48 +02:00
Max Kellermann
53677172f2
notify: use "constexpr" only with glibc
...
The Mutex and Cond constructors are only "constexpr" with glibc, and
this is what this #ifdef is about.
Backport of commit 459a812a
See http://bugs.musicpd.org/view.php?id=4511
2016-03-30 00:31:01 +02:00
Max Kellermann
bef0ccf42a
configure.ac: prepare for 0.19.15
2016-03-30 00:30:39 +02:00
Max Kellermann
ff35aa07dc
release v0.19.14
2016-03-18 18:26:58 +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
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
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
e9a544fa98
configure.ac: prepare for 0.19.14
2016-03-01 21:22:42 +01:00
Max Kellermann
79f2f8cddc
release v0.19.13
2016-02-23 22:06:13 +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
Chris Spiegel
1e0ad1f6bf
Add TAK as a supported FFmpeg format.
2016-02-19 17:32:48 +01:00
Max Kellermann
4abcb08cc9
tag/{aiff,riff}: fix ID3 chunk padding
...
Apply padding only to the fseek(), not to the chunk size. This fixes
bogus "failed to read riff chunk" messages when the last chunk has an
odd size.
See http://bugs.musicpd.org/view.php?id=4486
2016-02-19 17:31:20 +01:00
Max Kellermann
81e7833711
configure.ac: prepare for 0.19.13
2016-02-19 17:30:01 +01:00
Max Kellermann
82e261ad33
release v0.19.12
2015-12-15 21:54:42 +01:00
Benno Fünfstück
cae2811762
fix mpd crash on invalid utf8 stream title
2015-12-15 21:49:53 +01:00
Ben Boeckel
09112c6869
docs: add vlc and mpv to the list of example applications
...
These are other popular clients. In particular, VLC is available on
mobile devices.
Signed-off-by: Ben Boeckel <mathstuf@gmail.com >
2015-12-15 21:30:26 +01:00
Christian Hesse
77aaf1baee
fix LimitRTTIME in systemd unit file
...
systemd does not understand LimitRTTIME=-1. For no limit we have to use
the string 'infinity' (see systemd.exec(5)).
Signed-off-by: Christian Hesse <mail@eworm.de >
2015-12-15 21:17:04 +01:00
Jörg Krause
6626c2d00d
Makefile.am: fix static build with alsa
...
Add ALSA_LIBS to MIXER_LIBS, otherwise building mpd in a static context fails
with lot of undefined references to alsa-lib (libasound) required by
src/mixer/plugins/AlsaMixerPlugin.cxx.
Signed-off-by: Jörg Krause <joerg.krause@embedded.rocks >
2015-12-15 21:16:45 +01:00
Michael Paquier
315f9d98f6
Main: fix build failure on non-Linux systems
2015-11-10 08:38:53 +01:00
Max Kellermann
f087518e7a
configure.ac: prepare for 0.19.12
2015-11-10 08:33:50 +01:00
Max Kellermann
db9997a106
release v0.19.11
2015-10-27 10:42:20 +01:00
Max Kellermann
0cbfb610f2
systemd: remove obsolete ControlGroup settings
...
This systemd feature has been removed a while ago without replacement,
and it turns out that systemd developers suggest not using control
groups at all to assign real-time privileges. Therfore, a replacement
feature will not be implement in future systemd releases, and we can
really remove those lines completely.
See http://bugs.musicpd.org/view.php?id=4413
2015-10-27 10:36:23 +01:00
Max Kellermann
f901cd042b
doc/user: section about real-time scheduling
2015-10-27 10:31:50 +01:00
Max Kellermann
5719207dfa
gme: don't loop forever, fall back to GME's default play length
...
Fixes http://bugs.musicpd.org/view.php?id=4432
2015-10-26 17:16:20 +01:00
Max Kellermann
a84fbbe327
decoder/gme: free the gme_info_t as early as possible
2015-10-26 17:15:24 +01:00
Max Kellermann
93c97972b9
decoder/gme: call decoder_seek_error() on seek error
2015-10-26 16:32:39 +01:00
Max Kellermann
ac61d43720
output/Command: flush the mixer cache when enabling/disabling output
...
Fixes mixer lag (http://bugs.musicpd.org/view.php?id=4425 ).
2015-10-26 16:29:07 +01:00
Max Kellermann
1958f78cc1
decoder/ffmpeg: fix crash due to wrong avio_alloc_context() call
...
Allocate the buffer dynamically using av_malloc(), and free
AVIOContext.buffer in the destructor, as mandated by the libavformat
documentation.
Fixes http://bugs.musicpd.org/view.php?id=4446
2015-10-26 13:06:29 +01:00
Max Kellermann
a7ee64a25b
decoder/mpcdec: use SampleTraits<SampleFormat::S24_P32>
...
Eliminates some duplicate code, and as a side effect, this works
around clang 3.8 compiler warning because a negative value was
shifted.
2015-10-16 18:12:32 +02:00
Max Kellermann
2a58f22649
decoder/mpcdec: use Clamp()
2015-10-16 18:11:42 +02:00
Max Kellermann
f066bb7716
unix/Daemon, playlist/...: remove unused Domain variables
2015-10-16 18:08:59 +02:00
Max Kellermann
4e3d182189
encoder/flac: fix crash with 32 bit playback
...
Copy to encoder->audio_format *after* adjusting the sample format to
S24_P32.
Fixes http://bugs.musicpd.org/view.php?id=4433
2015-10-16 18:05:34 +02:00
Max Kellermann
205fba74cf
tag/ApeLoader: fix buffer overflow after unterminated key
2015-10-16 14:55:40 +02:00
Max Kellermann
a9bcf8d50d
configure.ac: prepare for 0.19.11
2015-10-16 14:55:40 +02:00
Max Kellermann
b0ff3bc7a3
release v0.19.10
2015-06-21 15:51:50 +02:00
Max Kellermann
06301e279c
PlayerThread: start the decoder on PlayerCommand::QUEUE
...
Fixes missing SongBorder() call, which causes "single" mode breakage.
2015-06-21 15:38:48 +02:00
Max Kellermann
6d6f274648
DecoderAPI: discard unused song tag early
...
If there's a stream tag, don't let the song tag override it in the
next update_stream_tag() call.
2015-06-21 15:10:55 +02:00
Max Kellermann
9acefcb256
DecoderThread: set Decoder::song_tag only for local files
...
If the song tag comes from a stream, and MPD playback restarts, MPD
would believe the tag should override the newly received tag. This
makes the previous tag appear stuck. This change passes the song tag
only if it's authoritative - i.e. if it's a song file.
2015-06-21 15:02:14 +02:00
Max Kellermann
e4d0293a31
DecoderAPI: "move" the Tag object
...
Reduce runtime overhead.
2015-06-20 16:06:09 +02:00
Romain Rollet
ae77542a11
OutputControl: fix fail_timer check right after booting
...
Right after booting, the monotonic clock starts with a very small
value, and AudioOutput::LockUpdate() may believe that the fail_timer
has not recovered yet.
2015-06-20 15:37:19 +02:00
Max Kellermann
980187f856
system/PeriodClock: make IsDefined() "constexpr"
2015-06-20 15:33:17 +02:00
Max Kellermann
327a8e6c59
decoder/ffmpeg: skip unwanted samples after seeking
...
When seeking to the beginning of a packet, skip the samples that come
before the desired time stamp.
2015-06-20 15:01:05 +02:00
Max Kellermann
d11e2724c4
decoder/ffmpeg: use AVSEEK_FLAG_BACKWARD for seeking
...
Ask FFmpeg to seek to the next packet boundary *before* the seek
position, so we don't miss audio data. Now we get too much, but we'll
solve that in the next commit.
2015-06-20 14:29:42 +02:00
Max Kellermann
f768ca3a2d
decoder/ffmpeg: move code to StreamRelativePts()
2015-06-19 18:56:29 +02:00
Max Kellermann
947e902288
input/curl: trigger the condition variable in RequestDone()
...
Fixes deadlock on small responses.
2015-06-19 16:45:38 +02:00
Thomas Guillem
3436a646b5
storage/nfs: fix deadlock when connecting
...
The Connect method can be called between Schedule and lock. In that case, when
locked, the state is already set to CONNECTING of READY and the condition won't
be signaled anymore.
2015-05-29 22:39:14 +02:00
jai
aed0af1e00
input/smbclient: fix DFF playback
2015-05-29 22:37:49 +02:00
Michal Nazarewicz
0d7ee2b014
OpusEncoderPlugin: initialise granulepos so we end up with sane values
...
Not initialising granulepos leads to it having arbitrary values in the
encoded stream including possibly negative values which are not valid
and confuse opusdec. Explicitly initialise opus_encoder::granulepos
to avoid that problem.
2015-03-25 18:02:54 +01:00
Max Kellermann
2f5fd91bd8
configure.ac: prepare for 0.19.10
2015-03-25 18:02:54 +01:00
Max Kellermann
5761800197
release v0.19.9
2015-02-06 17:08:25 +01:00
Max Kellermann
0eebacc521
Merge tag 'v0.18.23' into v0.19.x
2015-02-06 17:07:47 +01:00
Max Kellermann
4a5528697d
release v0.18.23
2015-02-06 17:04:14 +01:00
Max Kellermann
d38034bb5c
fs/io/FileOutputStream: don't auto-delete file on WIN32
...
The file handle is never reset to INVALID_HANDLE_VALUE, and thus the
destructor will assume the operation shall be cancelled and will
delete the temporary file.
This was a major breakage for saving the database file and the state
file.
2015-02-06 14:36:55 +01:00
Max Kellermann
b3fe3e8b3d
TagBuilder: allow adding duplicate tag types in Complement()
...
Build a table of pre-existing tag types before adding new items. The
old way would check HasType() each time, which would return true after
the first instance of that tag type had been added, preventing
duplicate tag types to be merged.
This broke duplicate tag types loaded from the state file, because
this code path uses TagBuilder::Complement().
2015-02-06 12:25:34 +01:00
Max Kellermann
5489dec28d
NEWS: fix v0.18.22 release date
2015-02-01 12:22:24 +01:00
Max Kellermann
8a6b4db19f
Makefile.am: move org_musicpd_Bridge.h to BUILT_SOURCES
2015-01-31 00:05:30 +01:00
Max Kellermann
df43b6a05c
Makefile.am: generate icon before compiling JNI classes
...
Apparently, Android's build.xml requires the icon to be available,
even when only running the Java compiler.
2015-01-31 00:05:30 +01:00
Max Kellermann
3adca3c2fa
db/update/Walk: use std::unique_ptr instead of std::auto_ptr
...
std::auto_ptr is deprecated, and std::unique_ptr is much better
anyway.
2015-01-29 08:37:23 +01:00
PHO
39abd3ecb4
Avoid integer overflow in MonotonicClock{S,MS,US}
...
This is Darwin specific: the previous implementation was causing an integer
overflow when base.numer is very large. On PPC Darwin, the timebase info is 1000000000/33330116 and this is too large for integer arithmetic.
2015-01-29 08:34:37 +01:00
PHO
a4f4fc50b9
Avoid integer overflow in MonotonicClock{S,MS,US}
...
This is Darwin specific: the previous implementation was causing an integer
overflow when base.numer is very large. On PPC Darwin, the timebase info is 1000000000/33330116 and this is too large for integer arithmetic.
2015-01-29 08:33:48 +01:00
Max Kellermann
7bf638b0de
decoder/DsdLib: use new[] to allocate the ID3 buffer
...
Don't abort the process if there's not enough memory. This buffer is
not important and can be large.
2015-01-29 08:24:34 +01:00
Max Kellermann
56662a703c
decoder/DsdLib: free ID3 buffer right after id3_tag_parse()
...
Merge two free() calls.
2015-01-29 08:24:34 +01:00
Max Kellermann
8b5f47d3a3
decoder/DsdLib: raise ID3 tag limit to 1 MB
...
A bug report was submitted with a 600 kB ID3 tag that could not be
read by MPD.
2015-01-29 08:20:14 +01:00
Max Kellermann
a289dcb9ee
Merge branch 'v0.18.x' into v0.19.x
2015-01-26 20:48:19 +01:00
PHO
023b9c1e7e
Test the existence of strndup(3) before using it.
...
This can eliminate the ad-hoc "#ifdef WIN32" and can also support other platforms lacking it as well (including Darwin 9).
2015-01-26 20:39:49 +01:00
Max Kellermann
4c61662644
test/read_mixer: add missing stdlib.h include
2015-01-26 20:39:49 +01:00
Max Kellermann
ad1b6ef0ac
{playlist,input}/despotify: remove defunct plugin
2015-01-26 09:55:31 +01:00
Max Kellermann
ed5c6be2f1
util/list: disable gcc5 warning
...
This file has been removed in newer MPD versions, so don't care about
it now.
2015-01-23 16:50:31 +01:00
Max Kellermann
30cb082932
ClientProcess: cast enum to int before passing to printf()
...
Fixes gcc5 warning.
2015-01-23 16:50:31 +01:00
Max Kellermann
645554d12f
configure.ac: prepare for 0.18.23
2015-01-23 16:47:13 +01:00
Max Kellermann
212b0faf0c
android/build.py: use os.path.abspath() to build mpd_path
...
Fixes a bug that occurs when runing "build.py" from inside the
"android" directory.
2015-01-22 18:51:53 +01:00
Max Kellermann
276a0d9500
thread/Name: include stdio.h if HAVE_PRCTL
...
Caused a build failure with uClibc because snprintf() was not
available.
2015-01-21 20:40:56 +01:00
Max Kellermann
384b6c8288
doc/protocol: "playlistsearch" is case insensitive
2015-01-16 17:27:19 +01:00
Max Kellermann
a2af158fd3
configure.ac: prepare for 0.19.9
2015-01-16 17:26:50 +01:00
Max Kellermann
f33d2fb2e7
release v0.19.8
2015-01-14 23:12:24 +01:00
Max Kellermann
a9eec35aff
Merge tag 'v0.18.22' into v0.19.x
2015-01-14 23:12:08 +01:00
Max Kellermann
8534f2d1e2
release v0.18.22
2015-01-14 23:04:49 +01:00
Max Kellermann
00740fb23b
android/build.py: prepend "./" to "configure" if path is empty
...
Fixes in-tree build when the script is called as "android/build.py"
and not "./android/build.py".
2015-01-09 16:51:52 +01:00
Max Kellermann
37e9010887
input/async: reset the "open" flag after seeking successfully
...
Fixes a problem with the "curl" input plugin: IsEOF() always returns
true because the "open" flag was cleared by
CurlInputStream::RequestDone() when end-of-stream was reached. This
flag stays false even when seeking to another position has succeeded.
This patch resets the "open" flag to true after seeking successfully.
2015-01-06 12:46:28 +01:00
Max Kellermann
4bd2c75056
thread/Name: disable pthread_setname_np() on NetBSD
...
NetBSD's pthread_setname_np() prototype is incompatible with the rest
of the world, and it requires to pass the string argument as a
non-const pointer. Instead of working around this misdesign, I hereby
disable the feature on NetBSD.
2015-01-06 12:08:36 +01:00
Max Kellermann
b9ed850b98
thread/Name: enable FormatThreadName() with prctl()
...
Add macro HAVE_THREAD_NAME which is set when any method to set the
thread name is available. Use that macro in FormatThreadName()
instead of just checking for HAVE_PTHREAD_SETNAME_NP.
2015-01-06 12:04:30 +01:00
Max Kellermann
11cea17496
thread/Name: indent preprocessor commands
2015-01-06 12:04:15 +01:00
Max Kellermann
163597ef69
db/simple: fix implicit nullptr/bool conversion
...
Return false on error, not nullptr.
2014-12-26 14:34:03 +01:00
Max Kellermann
95f84afd33
fs/Traits, ...: work around -Wtautological-pointer-compare
...
New in clang 3.6.
2014-12-26 14:34:03 +01:00
Max Kellermann
9f7fd1fbfb
db/lazy, input/mms: add "override" keywords
...
Fixes -Winconsistent-missing-override (clang 3.6).
2014-12-26 14:29:29 +01:00
Max Kellermann
940cab8620
Merge branch 'v0.18.x' into v0.19.x
2014-12-26 14:28:52 +01:00
Max Kellermann
5b84c99d79
doc/user: remove autoconf/automake from Debian build dependencies
2014-12-26 14:00:50 +01:00
Max Kellermann
b295024574
doc/user: add more Debian build dependencies
2014-12-26 13:56:26 +01:00
Max Kellermann
34180f1745
doc/user: add libicu-dev to Debian build dependencies
2014-12-26 13:54:33 +01:00
Max Kellermann
665031467a
db/proxy, output/shout: fix implicit nullptr/bool conversion
...
Return false on error, not nullptr.
2014-12-26 13:50:54 +01:00
Max Kellermann
df33171107
db/{simple,proxy}, ...: add "override" keywords
...
Fixes -Winconsistent-missing-override (clang 3.6).
2014-12-26 13:47:04 +01:00
Max Kellermann
53f4044890
util/{ASCII,UriUtil}, ...: work around -Wtautological-pointer-compare
...
New in clang 3.6.
2014-12-26 13:43:32 +01:00
Max Kellermann
a5049136ff
DatabaseGlue: convert nullptr check to assertion
2014-12-26 13:43:32 +01:00
Max Kellermann
705b3c6b63
util/ASCII: fix indent
2014-12-26 13:37:38 +01:00
Max Kellermann
6b4ac66962
Compiler.h: add macro CLANG_CHECK_VERSION()
2014-12-26 13:31:03 +01:00
Max Kellermann
0964b06240
Compiler.h: add macro GCC_OLDER_THAN()
2014-12-26 13:30:44 +01:00
Max Kellermann
92eeca3ba7
util/Manual: reimplement GCC_CHECK_VERSION() using GCC_MAKE_VERSION()
2014-12-26 13:30:22 +01:00
Max Kellermann
2a86554ac4
Compiler.h: add macro GCC_MAKE_VERSION()
2014-12-26 13:30:11 +01:00
Max Kellermann
805caa30ce
configure.ac: prepare for 0.18.22
2014-12-26 13:23:04 +01:00
Max Kellermann
a56949e9fa
decoder/ffmpeg: support interleaved floating point
2014-12-23 20:51:08 +01:00
Max Kellermann
43da4c0eca
input/mms: limit the mmsx_read() size
2014-12-23 20:34:45 +01:00
Max Kellermann
b9c7771830
decoder/DsdLib: add missing stdlib.h include
2014-12-23 10:08:46 +01:00
Jan Brittenson
35db88affe
DSF ID3 tags hitting 4k size limit
...
Here's a change to dynamically allocate the DSD ID3 tag buffer.
Pretty much anything with cover art is going to exceed the existing,
static 4k limit... Here's a change to dynamically allocate the buffer
and sanity check it at some upper limit. I rather arbitrarily pulled
256k out of thin air just to keep a corrupt file from causing it to
trying to allocate a buffer larger than available memory.
2014-12-23 09:49:33 +01:00
Max Kellermann
e38faca455
configure.ac: prepare for 0.19.8
2014-12-23 09:48:31 +01:00
Max Kellermann
0255e8710c
android: release v0.19.7
2014-12-23 09:42:52 +01:00
Max Kellermann
6d89020f80
release v0.19.7
2014-12-17 19:20:54 +01:00
Max Kellermann
9c56c49e73
Merge tag 'v0.18.21' into v0.19.x
2014-12-17 19:19:13 +01:00
Max Kellermann
acb798e544
release v0.18.21
2014-12-17 19:13:47 +01:00
Max Kellermann
c5720a15c7
LogBackend: force-flush stderr on WIN32
...
setvbuf() does not seem to have an effect on Windows.
2014-12-17 19:12:25 +01:00
Max Kellermann
90709b332a
LogInit: make stderr line-buffered
...
Make sure everything gets logged right away. No delays because
stdio's buffer is not yet full.
2014-12-17 19:12:01 +01:00
Max Kellermann
81f17d10c8
util/HugeAllocator: enable MEM_COMMIT on Windows
...
Without MEM_COMMIT, the reserved address space is not accessible, and
MPD crashes.
2014-12-17 19:10:58 +01:00
k44
773de38bd9
playlist/embcue: fix filename suffix detection
...
The definition of the playlist_plugin struct member of the embcue
plugin was incorrect.
2014-12-16 18:43:05 +01:00
Max Kellermann
a48704925d
storage/nfs: add timeout
2014-12-15 00:45:13 +01:00
Max Kellermann
fa4beeee75
decoder/ffmpeg: detect and fix negative time stamps
...
Works around assertion failure due to something that appears to be a
(minor) FFmpeg bug.
2014-12-15 00:40:46 +01:00
Max Kellermann
d8351772d3
configure.ac: prepare for 0.18.21
2014-12-15 00:39:52 +01:00
Max Kellermann
68d1abdb85
storage/nfs: clear last_error in SetState()
...
Fixes bogus assertion failure.
2014-12-15 00:39:30 +01:00
Max Kellermann
7e8474a85a
lib/nfs/Connection: unregister socket with SocketMonitor::Steal()
...
SocketMonitor::Cancel() does not actually unregister the socket; it
only disables the event.
2014-12-15 00:31:12 +01:00
Max Kellermann
82da364b8b
lib/nfs/Connection: implement mount timeout
2014-12-15 00:05:53 +01:00
Max Kellermann
7fa91ec175
lib/nfs/Connection: add debug flag "in_destroy"
2014-12-15 00:03:30 +01:00
Max Kellermann
1d3a09d377
lib/nfs/Connection: add assertion
2014-12-14 22:51:37 +01:00
Max Kellermann
02563a35f0
lib/nfs/Connection: fix reconnect after mount failure
...
When mounting had not yet finished, SocketMonitor::IsDefined() was
always false, due to the workaround at the beginning of the function
that calls SocketMonitor::Steal(). This commit drops the IsDefined()
check because it was never necessary and breaks reconnect.
2014-12-14 22:49:16 +01:00
Max Kellermann
d653f35bb7
lib/nfs/Connection: fix typo in code comment
2014-12-14 22:49:09 +01:00
Max Kellermann
a543627abd
lib/nfs/Connection: fix memory leak (and assertion failure)
...
nfs_destroy_context() will invoke all pending callbacks with
err==-EINTR. In CancellableCallback::Callback(), this will invoke
NfsConnection::DeferClose(), which however is only designed to be
called from nfs_service(). In non-debug mode, this will leak memory
because nfs_close_async() is never called.
Workaround: before nfs_destroy_context(), invoke nfs_close_async() on
all pending file handles.
2014-12-14 16:02:47 +01:00
Max Kellermann
80f2ba7fca
lib/nfs/Connection: move code to Service()
2014-12-14 15:45:10 +01:00
Max Kellermann
32bca64920
lib/nfs/Connection: add assertions
2014-12-14 15:40:29 +01:00
Max Kellermann
7fa1a84ec3
lib/nfs/Connection: move code to method InternalClose()
2014-12-14 15:38:09 +01:00
Max Kellermann
ab4bb26a0a
lib/nfs/Connection: make in_service and in_event debug-only flags
2014-12-14 15:20:40 +01:00
Max Kellermann
4b8d258cff
lib/nfs/Connection: fix crash while canceling a failing Open()
...
The method NfsConnection::CancellableCallback::Callback() will always
invoke NfsConnection::Close() on the file handle, even if the void
pointer is not a nfsfh. This can happen if the Open() was not
successful, e.g. when the file does not exist.
2014-12-14 15:16:01 +01:00
Max Kellermann
3c29aa6271
event/Loop: read the "again" flag while holding mutex
2014-12-14 14:47:36 +01:00
Max Kellermann
51464b4317
lib/nfs/Connection: add assertions
2014-12-14 14:24:49 +01:00
Max Kellermann
2fec463542
util/HugeAllocator: disable MEM_LARGE_PAGES on Windows
...
MEM_LARGE_PAGES does not appear to work. Instead, MEM_RESERVE appears
to be necessary. Until I figure this out, this large pages are
disabled.
2014-12-12 13:20:58 +01:00
Max Kellermann
1affc641c4
input/Init: eliminate double colon from log message
2014-12-12 13:20:37 +01:00
Max Kellermann
0cfd4fff62
playlist/Print: don't skip non-existent songs in "listplaylist"
...
Skipping those songs silently will confuse the client, because
commands specifying the song index within a playlist
(e.g. playlistdelete) will be out of sync.
This copies spl_print()'s behavior to playlist_file_print().
2014-12-09 13:36:48 +01:00
Max Kellermann
8904127c10
configure.ac: prepare for 0.19.7
2014-12-09 13:09:03 +01:00
Max Kellermann
c46f48abec
release v0.19.6
2014-12-08 15:12:41 +01:00
Max Kellermann
4acbf7b90d
android/build.py: update FFmpeg to 2.5
2014-12-08 15:05:49 +01:00
Max Kellermann
cbc1a58e93
Merge tag 'v0.18.20' into v0.19.x
2014-12-08 15:03:09 +01:00
Max Kellermann
1b5f33a435
release v0.18.20
2014-12-08 14:57:17 +01:00
Max Kellermann
41b4a63f2b
decoder/ffmpeg: support FFmpeg 2.5
...
Version 2.5 fixed an API oddity, however it broke API compatibility,
at least with C++. Disable the workaround when a libavformat version
is detected that is recent enough.
2014-12-08 14:25:34 +01:00
Max Kellermann
d8fc2db910
thread/Id: drop "::" prefix before pthread function names
...
The "::" to explicitly refer to the global namespace appeared like a
good idea in C++, but it breaks with C libraries that implement
standard functions using macros (e.g. musl).
2014-12-08 14:17:17 +01:00
Max Kellermann
dc11dea7cc
configure.ac: prepare for 0.18.20
2014-12-08 14:13:20 +01:00
Nix
811af02f56
Output: start with a null mixer.
...
There are code paths (mostly error cases) in which it is possible to
initialize an AudioOutput and then kill it without ever calling
audio_output_new(). In such a case, its destructor will attempt to
free a mixer that was never initialized, leading to an attempt to
take out a lock on a mutex that was similarly never initialized,
which hangs forever.
Fix by always initializing the mixer appropriately.
2014-12-01 22:14:09 +01:00
Max Kellermann
8780e23ed3
android/build.py: update ffmpeg 2.4.3, curl 7.39
2014-11-28 21:08:27 +01:00
Max Kellermann
be492ed108
android: update libFLAC to 1.3.1
...
Due to security vulnerabilities.
2014-11-28 21:08:27 +01:00
Max Kellermann
24da14f4f7
.gitignore: ignore /lib/
2014-11-28 21:08:18 +01:00
Max Kellermann
03d2fb450f
configure.ac: prepare for 0.19.6
2014-11-28 20:13:57 +01:00
Max Kellermann
67cba251c8
release v0.19.5
2014-11-26 20:11:42 +01:00
Max Kellermann
0bc511715b
Makefile.am: distribute Android sources
2014-11-26 20:11:42 +01:00
Max Kellermann
27ce80544f
Merge tag 'v0.18.19' into v0.19.x
2014-11-26 20:02:57 +01:00
Max Kellermann
04f627c2af
release v0.18.19
2014-11-26 19:58:48 +01:00
Max Kellermann
e72eef421b
lib/nfs/FileReader: clean up on disconnect
...
Avoids crash because Close() invokes a call on a destructed
NfsConnection.
2014-11-25 14:02:15 +01:00
Max Kellermann
016063c810
lib/nfs/FileReader: move code to CancelOrClose()
2014-11-25 14:00:32 +01:00
Max Kellermann
38f19981b2
lib/nfs/FileReader: reset state in OnNfsConnectionFailed()
...
Avoid calling NfsConnection::RemoveLease(), because the lease has been
removed already.
2014-11-25 13:51:09 +01:00
Max Kellermann
40dd968f13
lib/nfs/FileReader: update "state" in OnNfsError()
...
Clean up the "state" to indicate that there is no longer any
asynchronous operation. Fixes another NFS-related crash due to
cleanup of a non-existing asynchronous operation.
2014-11-25 13:39:42 +01:00
Max Kellermann
3cef348f30
lib/nfs/Manager: defer NfsConnection destruction
...
Avoids a crash that occurs when NfsConnection::OnSocketReady()
dereferences itself before returning.
2014-11-25 13:31:18 +01:00
Max Kellermann
b293b16007
lib/nfs/Connection: broadcast error before closing connection
...
During the NfsLease::OnNfsConnectionFailed() call, the old (defunct)
nfs_context may be used to close file handles. Such code does not yet
exist, but will be added soon to fix other bugs.
2014-11-25 13:27:06 +01:00
Max Kellermann
f5f43db2da
lib/nfs/Connection: cancel DeferredMonitor on disconnect
...
Fixes potential second mount attempt after the old connection to the
NFS server was shut down.
2014-11-25 13:22:25 +01:00
Max Kellermann
029555d192
lib/nfs/FileReader: include Compiler.h for "final" fallback
2014-11-25 13:18:22 +01:00
Max Kellermann
fa4d202e71
decoder/mp4v2: remove because of incompatible license
...
libmp4v2 is licensed under MPL 1.1, which is incompatible with GPLv2.
Unfortunately, this means that we must remove the plugin.
More information can be found in the Debian bug report:
http://bugs.debian.org/767504
2014-11-25 13:10:52 +01:00
Max Kellermann
a8ebfd7a92
event/DeferredMonitor: include cleanup
2014-11-25 10:44:06 +01:00
Max Kellermann
b19e5720cc
test/run_input: make variables more local
2014-11-25 07:51:33 +01:00
Max Kellermann
a254f5a3a8
archive/zzip: fix inverted error handler
...
Set the Error when zzip_seek()==-1 and not on success. Fixes a crash
after seeking.
2014-11-24 22:08:50 +01:00
Max Kellermann
143c735f96
configure.ac: prepare for 0.18.19
2014-11-24 22:08:50 +01:00
Max Kellermann
951bad46e0
decoder/{dsdiff,dsf,opus}: fix deadlock while seeking
2014-11-24 08:54:30 +01:00
Max Kellermann
716225cd2f
doc/protocol: mention that "count" can have multiple filters
2014-11-24 08:09:58 +01:00
Max Kellermann
bbc618b8f9
configure.ac: prepare for 0.19.5
2014-11-24 08:09:44 +01:00
Max Kellermann
11ead56d6d
android: release v0.19.4
...
Android releases were missing since 0.19.1.
2014-11-24 08:00:47 +01:00
Max Kellermann
e972ae4afa
android: switch to gcc 4.9 / llvm 3.5 (NDK r10c)
2014-11-24 08:00:45 +01:00
Max Kellermann
0709065f50
Java/File: fix include guard
2014-11-24 07:51:25 +01:00
Max Kellermann
d6bc5c35a7
release v0.19.4
2014-11-18 21:40:52 +01:00
Max Kellermann
dc03f003ac
Merge tag 'v0.18.18' into v0.19.x
2014-11-18 21:38:44 +01:00
Max Kellermann
7aa2104596
release v0.18.18
2014-11-18 21:34:03 +01:00
Max Kellermann
460cfba6ff
QueueCommands: workaround for buggy clients that send "add /"
2014-11-18 21:31:54 +01:00
Max Kellermann
c8b93d6573
Client: assume uid==0 is local socket
...
A negative uid value means it's not a "local socket" (PF_LOCAL).
uid==0 means user "root" connected.
2014-11-18 20:56:27 +01:00
Max Kellermann
3f5f96ac91
event/ServerSocket: fix get_remote_uid() error value
...
Must return -1 on error, not 0. 0 is root.
2014-11-18 20:53:59 +01:00
Max Kellermann
7c6b991de7
decoder/opus: add MIME types audio/ogg and application/ogg
2014-11-12 15:16:34 +01:00
Max Kellermann
82460aa49f
configure.ac: prepare for 0.19.4
2014-11-12 15:16:07 +01:00
Florent Le Coz
7e7b403043
Construct a Null AllocatedPath if the filename conversion into UTF8 failed
2014-11-11 17:15:19 +01:00
Max Kellermann
e5217e6ce9
release v0.19.3
2014-11-11 11:21:42 +01:00
Max Kellermann
c98cb1d6f9
decoder/opus: support chained streams
2014-11-11 11:20:18 +01:00
Max Kellermann
ba6f2b0467
decoder/opus: move code to HandleEOS()
2014-11-11 11:20:16 +01:00
Max Kellermann
23465ad985
decoder/opus: improved error logging
2014-11-11 11:20:03 +01:00
Max Kellermann
7886a14b74
decoder/opus: fix mistyped LoadEOSPacket() return value
2014-11-11 11:18:51 +01:00
Max Kellermann
466b6a23cd
decoder/opus: eliminate flag "found_opus"
...
Check opus_decoder!=nullptr instead.
2014-11-11 08:30:11 +01:00
Max Kellermann
4a04f73434
decoder/opus: add constexpr output_buffer_frames
2014-11-11 07:45:31 +01:00
Misty De Meo
134cb6a017
Main: fix compilation on OS X using non-Apple compilers
...
Commit d42c0f1dc5 added an OS X-specific
method of calling mpd_main_after_fork(), which uses Grand Central
Dispatch. Since this uses a block literal, it breaks compilation on
compilers which don't support the block extension, e.g. non-Apple
compilers. This affects users on older OS X releases with GCD (which
depend on older Clang releases, or Apple GCCs, which don't support the
C++11 features MPD needs); or which don't support GCD at all (10.5 and
lower).
This patch changes the #ifdef so that the non-GCD code is used
as it was on OS X before this patch if blocks aren't available, via
checking __BLOCKS__ macro.
2014-11-11 06:22:24 +01:00
Max Kellermann
8d036c4b7c
pcm/SoxrResampler: round output buffer size up
...
The old formula calculates the output buffer size with "regular"
rounding (to the nearest integer), however sometimes, that is
insufficient and the last sample cannot be resampled. This causes
audible distortions. By changing the formula to consider the worst
case (always round up), this problem is eliminated.
2014-11-10 22:52:17 +01:00
Max Kellermann
c64ad78c7b
decoder/ffmpeg: support opus
2014-11-10 18:00:30 +01:00
Max Kellermann
4a043a915f
configure.ac: prepare for 0.18.1
2014-11-10 17:59:06 +01:00
Max Kellermann
8ff0d99092
decoder/audiofile: fix bit rate calculation
2014-11-10 09:00:50 +01:00
Max Kellermann
2e47cb12c4
test/FakeDecoderAPI: dump bit rate
2014-11-10 09:00:38 +01:00
Max Kellermann
ff6f1655f0
input/curl: ignore ResponseBoundary() while seeking
...
While seeking, metadata must not be updated. ResponseBoundary() was
added in MPD 0.19.1, but I forgot to add the IsSeeking() check there.
This caused the "seekable" flag to reset.
2014-11-10 08:45:19 +01:00
Max Kellermann
b5ba94f1de
tag/Set: do AlbumArtist/Artist fallback only if AlbumArtist is not disabled
...
On "list albumartist", songs that have no AlbumArtist tag will use the
Artist tag. However, if AlbumArtist is disabled via
"metadata_to_use", the TagBuilder::AddItem() call is ignored, and
PrintUniqueTag() attempts to print a nullptr string.
This commit fixes the problem by attempting the fallback only if
AlbumArtist is not disabled.
2014-11-08 19:25:01 +01:00
Max Kellermann
cbf79769d3
db/Count: include cleanup
2014-11-08 19:21:42 +01:00
Max Kellermann
125eb01e03
decoder/ffmpeg: support opus
2014-11-07 19:22:26 +01:00
Max Kellermann
ccb13205f4
db/upnp: fix valgrind warning
2014-11-07 19:12:43 +01:00
Max Kellermann
6f23e91e33
lib/upnp/ContentDirectoryService: swap uri_apply_base() parameters
...
When uri_apply_base() was moved from db/upnp/Util.cpp to
util/UriUtil.cpp, the parameter order was changed, however without
swapping the parameters in the ContentDirectoryService constructor.
2014-11-07 18:43:00 +01:00
Max Kellermann
1bd8a322f5
input/AsyncInputStream: set Error when seeking unseekable
...
Fixes crash in the "audiofile" decoder while logging the seek error.
2014-11-07 13:57:57 +01:00
Max Kellermann
362e73bea8
input/Open: expose input_domain
2014-11-07 13:57:57 +01:00
Max Kellermann
9f8c2b3b56
configure.ac: prepare for 0.19.3
2014-11-04 09:24:09 +01:00
Max Kellermann
6a7f6cdacd
release v0.19.2
2014-11-02 13:46:32 +01:00
Max Kellermann
5715342fe0
Merge tag 'v0.18.17' into v0.19.x
2014-11-02 13:46:09 +01:00
Max Kellermann
38a0d15190
release v0.18.17
2014-11-02 13:06:20 +01:00
Max Kellermann
56f763a4a8
input/curl: forget Content-Length (and more) after redirect
...
Fixes playback of redirected streams.
2014-11-02 13:00:28 +01:00
Max Kellermann
a2eb14f3b3
AsyncInputStream: add method ClearTag()
2014-11-02 13:00:28 +01:00
Max Kellermann
05c63af7c4
InputStream: add method ClearMimeType()
2014-11-02 12:59:16 +01:00
Max Kellermann
1f59701c46
Merge branch 'v0.18.x' into v0.19.x
2014-11-02 12:27:46 +01:00
Max Kellermann
ec3191f502
input/curl: fix curl_easy_setopt() parameter types
2014-11-02 11:55:48 +01:00
Max Kellermann
32b5654a6e
Decoder, Playlist: ignore URI query string for plugin detection
...
Use the new uri_get_suffix() overload that removes the query string.
2014-11-02 11:54:26 +01:00
Max Kellermann
674091424e
util/UriUtil: add uri_get_suffix() overload that ignores query string
2014-11-02 11:53:31 +01:00
Max Kellermann
6ad336743d
PlaylistFile: don't allow empty playlist name
2014-11-02 11:52:48 +01:00
Max Kellermann
c882568ccd
playlist/m3u: recognize the file suffix ".m3u8"
2014-11-02 11:50:56 +01:00
Max Kellermann
f6b2899dd2
decoder/faad: remove workaround for ancient libfaad2 ABI bug
...
Many years ago, FAAD had a serious ABI bug: the NeAACDecInit()
prototype in its header declared the "samplerate" parameter to be
"unsigned long *", but internally, the function assumed it was
"uint32_t *" instead. On 32 bit machines, that was no difference, but
on 64 bit, this left one portion of the return value uninitialized;
and worse, on big-endian, the wrong word was filled. This bug had to
be worked around in MPD (commit 9c4e97a6 ).
A few months later, the bug was fixed in the FAAD CVS in commit 1.117
on file libfaad/decoder.c; the commit message was:
"Use public headers internally to prevent duplicate declarations"
The commit message was too brief at best; the problem was not
duplicate declarations, but a prototype mismatch. No mention of the
bug fix in the ChangeLog.
The MPD project never learned about this bug fix, and so MPD would
always pass a "uin32_t *" dressed up as a "unsigned long *". Nearly 6
years later, it's about time to fix this second ABI problem. Let's
kill the workaround!
2014-11-02 11:50:56 +01:00
Steven OBrien
bccd4ef2f7
decoder/ffmpeg: recognize MIME type audio/aacp
2014-11-02 11:50:56 +01:00
Max Kellermann
94c240a026
configure.ac: show DSD in result
2014-11-02 11:50:56 +01:00
Max Kellermann
c50a0cf7bf
output/roar: remove unnecessary "volatile" keyword
...
A mutex acts as a memory barrier, and thus "volatile" is not
necessary.
2014-11-02 11:50:56 +01:00
Max Kellermann
c37f7abb79
TagString: use g_strndup() for unterminated string
...
Fixes buffer overflow bug.
2014-11-02 11:48:13 +01:00
Max Kellermann
432ce9b1de
configure.ac: prepare for 0.18.17
2014-11-02 11:41:40 +01:00
Max Kellermann
054323c2bc
lib/upnp/Discovery: add missing stdlib.h include
2014-11-02 11:04:13 +01:00
Max Kellermann
a8770aa606
input/curl: fix curl_easy_setopt() parameter types
2014-11-01 14:09:30 +01:00
Max Kellermann
7d5442e103
Decoder, Playlist: ignore URI query string for plugin detection
...
Use the new uri_get_suffix() overload that removes the query string.
2014-11-01 13:41:18 +01:00
Max Kellermann
eab32f2e5d
util/UriUtil: add uri_get_suffix() overload that ignores query string
2014-11-01 12:45:47 +01:00
NanoTech
d42c0f1dc5
Main: run the OS X native event loop after forking
2014-10-31 15:03:53 +01:00
NanoTech
6ad1e4d99a
Revert "Main: run the OS X native event loop"
...
This reverts commit f0be48ff90
(except for the NEWS entry).
If libdispatch (GCD) is used before forking, it
can't safely be used again after forking.
2014-10-31 15:03:46 +01:00
Max Kellermann
7350144ab3
PlaylistFile: don't allow empty playlist name
2014-10-31 14:59:27 +01:00
Max Kellermann
54c591bd9d
decoder/mad: fix negative replay gain values
...
Negating an unsigned integer does not work.
2014-10-28 22:22:30 +01:00
Max Kellermann
217d88f21f
TextInputStream: don't ignore unterminated last line
2014-10-28 22:10:47 +01:00
Max Kellermann
394e3be482
playlist/m3u: recognize the file suffix ".m3u8"
2014-10-26 08:14:16 +01:00
Max Kellermann
d7f024c510
OutputThread: fall back to PCM if given DSD sample rate is not supported
...
Works around the "PCM conversion from f to dsd is not implemented"
error message that prevents DSD playback.
2014-10-25 22:06:08 +02:00
Max Kellermann
bc5a53574c
decoder/faad: remove workaround for ancient libfaad2 ABI bug
...
Many years ago, FAAD had a serious ABI bug: the NeAACDecInit()
prototype in its header declared the "samplerate" parameter to be
"unsigned long *", but internally, the function assumed it was
"uint32_t *" instead. On 32 bit machines, that was no difference, but
on 64 bit, this left one portion of the return value uninitialized;
and worse, on big-endian, the wrong word was filled. This bug had to
be worked around in MPD (commit 9c4e97a6 ).
A few months later, the bug was fixed in the FAAD CVS in commit 1.117
on file libfaad/decoder.c; the commit message was:
"Use public headers internally to prevent duplicate declarations"
The commit message was too brief at best; the problem was not
duplicate declarations, but a prototype mismatch. No mention of the
bug fix in the ChangeLog.
The MPD project never learned about this bug fix, and so MPD would
always pass a "uin32_t *" dressed up as a "unsigned long *". Nearly 6
years later, it's about time to fix this second ABI problem. Let's
kill the workaround!
2014-10-25 20:42:50 +02:00
Max Kellermann
30df709736
configure.ac: update VERSION_REVISION
2014-10-25 00:33:25 +02:00
Steven OBrien
8cd17ce045
decoder/ffmpeg: recognize MIME type audio/aacp
2014-10-25 00:26:58 +02:00
Max Kellermann
1bfbced258
configure.ac: add storage plugin section to result
2014-10-25 00:21:18 +02:00
Max Kellermann
6ac5980a17
configure.ac: show DSD in result
2014-10-25 00:19:01 +02:00
Max Kellermann
2e24adae89
configure.ac: require xmlto for --enable-documentation
2014-10-25 00:14:25 +02:00
Max Kellermann
188b94cb3e
test/test_archive: don't use GLib
2014-10-25 00:08:04 +02:00
Max Kellermann
c48733e34f
fs/Charset: work around clang's -Wunused-const-variable
...
MPD_PATH_MAX_UTF8 is only used by GLib-specific code currently.
2014-10-25 00:07:25 +02:00
Max Kellermann
f36db9bb04
configure.ac: auto-disable plugins that require GLib when --disable-glib is used
2014-10-24 23:46:20 +02:00
Max Kellermann
30dd29e251
configure.ac: improve database dependency checks
...
Abort if --enable-libmpdclient or --enable-upnp are used with
--disable-database, instead of ignoring the mismatch silently.
2014-10-24 23:43:21 +02:00
Max Kellermann
6cf1acfb48
test/DumpDatabase, ...: no g_thread_init() calls when GLib is disabled
2014-10-24 18:30:30 +02:00
Max Kellermann
a7b09d3d1c
OutputThread: close the output plugin after filter failure
...
Fixes memory leak because ao_plugin_close() never gets called.
2014-10-24 00:35:16 +02:00
Max Kellermann
8fc3768166
OutputThread: unlock mutex for CloseFilter()
...
Be consistent.
2014-10-24 00:29:03 +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
Max Kellermann
220f957cd8
pcm/ChannelsConverter: fix variable used to generate error message
...
Use the "_format" parameter instead of the (uninitialized) "format"
attribute.
2014-10-23 22:44:53 +02:00
Max Kellermann
8ce48d83eb
pcm/FormatConverter: move check to Open()
...
Report unsupported format while opening the filter, not later when the
first conversion takes place.
2014-10-23 22:42:08 +02:00
Max Kellermann
200cdb6b0a
pcm/PcmConvert: assign {src,dest}_format at the end
...
Fixes assertion failure in destructor by not assigning
{src,dest}_format when an error occurs.
2014-10-23 22:39:51 +02:00
Max Kellermann
d9fb40203a
pcm/PcmConvert: make AudioFormat parameters "const"
2014-10-23 22:39:51 +02:00
Max Kellermann
2d9e972195
configure.ac: prepare for 0.19.2
2014-10-23 21:57:04 +02:00
Max Kellermann
97a1a04116
release v0.19.1
2014-10-19 01:03:17 +02:00
Max Kellermann
493cd866f1
TextInputStream: manually shift the buffer before reading
...
Fixes truncated lines in m3u and cue files (regression by commit
67958f7 ).
2014-10-19 00:50:52 +02:00
Max Kellermann
063d369672
util/StaticFifoBuffer: make Shift() public
2014-10-19 00:49:08 +02:00
Max Kellermann
a0fae8dacc
playlist/extm3u: strip first line for #EXTM3U detection
2014-10-17 20:45:18 +02:00
Max Kellermann
bc840b69d5
Makefile.am: distribute systemd/mpd.socket
...
The file systemd/mpd.service.in is being distributed implicitly, but
systemd/mpd.socket is not and needs to be added to EXTRA_DIST.
2014-10-12 08:38:52 +02:00
Max Kellermann
85301853d6
ThreadInputStream: call ThreadRead() inside the thread instead of Read()
...
Fixes deadlock bug in the "mms" plugin.
2014-10-11 21:59:06 +02:00
Max Kellermann
7cd53fb452
ThreadInputStream: add assertions
2014-10-11 21:57:31 +02:00
Max Kellermann
538ddf7af2
NEWS: add missing line
2014-10-11 21:48:52 +02:00
Max Kellermann
d5afa181f7
NEWS: fix typo in version number
2014-10-11 21:48:27 +02:00
Max Kellermann
8ed4124184
util/DynamicFifoBuffer: make the "Range" type public
...
Export it from the protected base class. This fixes a build failure
on Mac OS X.
2014-10-11 20:28:08 +02:00
Max Kellermann
160242a74f
configure.ac: prepare for 0.19.1
2014-10-11 20:25:19 +02:00
Max Kellermann
81b83bc904
release v0.19
2014-10-10 23:49:31 +02:00
Max Kellermann
2a716b7a7a
doc: document the mount/neighbor commands
2014-10-10 23:22:39 +02:00
Max Kellermann
63272541eb
doc/protocol: add more markup
2014-10-10 23:22:39 +02:00
Max Kellermann
464767c5fd
db/upnp/Util: move caturl() to util/UriUtil.cxx
2014-10-10 22:43:40 +02:00
Max Kellermann
a9c3ca8606
event/IdleMonitor: remove redundant comment
2014-10-10 22:39:11 +02:00
Max Kellermann
86dd677e0c
ZeroconfBonjour: use htons() instead of g_htons()
2014-10-10 22:30:38 +02:00
Max Kellermann
666f700a93
TagString: implement fix_utf8() without GLib
2014-10-10 22:11:38 +02:00
Max Kellermann
b70bf938c2
util/UTF8: add SequenceLengthUTF8()
2014-10-10 22:11:38 +02:00
Max Kellermann
d5cf41e043
util/UTF8: new library
2014-10-10 22:11:38 +02:00
Max Kellermann
b7a1954c33
TagString: return WritableBuffer<char>
2014-10-10 22:07:19 +02:00
Max Kellermann
6520589a37
TagString: use strndup() for unterminated string
...
Fixes buffer overflow bug.
2014-10-10 22:06:48 +02:00
Max Kellermann
f445b0178a
TagString: remove ISO-Latin-1 fallback
...
MPD handles all strings in UTF-8 internally. Those decoders which
read Latin-1 tags are supposed to implement the conversion, instead of
passing Latin-1 to TagBuilder::AddItem(). FixTagString() is simply
the wrong place to do that, and hard-coding Latin-1 is kind of
arbitrary.
2014-10-10 20:53:08 +02:00
Max Kellermann
f618065f7c
fs/Traits: use value_type
2014-10-10 19:51:44 +02:00
nanotech
f0be48ff90
Main: run the OS X native event loop
2014-10-10 19:51:44 +02:00
Max Kellermann
bb922d577d
storage/nfs: use the libnfs async API
...
Share the NFS connection with the NFS input plugin.
2014-10-09 08:09:08 +02:00
Max Kellermann
990809cc21
lib/nfs/Connection: reduce Error instance allocations
2014-10-09 08:08:17 +02:00
Max Kellermann
bfcc466647
lib/nfs/Glue: add assertion
2014-10-09 07:59:53 +02:00
Max Kellermann
3d2558bde6
StoragePlugin: pass EventLoop to constructor
2014-10-09 07:45:25 +02:00
Max Kellermann
1aac0b10c9
test/run_input, ...: add struct ScopeIOThread
...
Auto-stop the IO thread in all error handlers.
2014-10-07 20:02:13 +02:00
Max Kellermann
e5ff85b63c
storage/nfs: move code to class MemoryStorageDirectoryReader
...
Read all directory entries into memory and close the struct nfsdir
before returning the StorageDirectoryReader instance. This is what
libnfs does, anyway.
2014-10-07 06:36:11 +02:00
Max Kellermann
f0bb5b84f9
storage/nfs: move code to Copy()
2014-10-07 06:35:53 +02:00
Max Kellermann
07b50f6c69
lib/nfs/Connection: add methods {Open,Read,Close}Directory()
2014-10-07 06:35:50 +02:00
Max Kellermann
61b3aaaa07
lib/nfs/Connection: add method Stat(path)
2014-10-07 06:35:46 +02:00
Max Kellermann
b5119d7958
test/run_storage: new debug program
2014-10-07 06:21:34 +02:00
Max Kellermann
d3e72e4344
Makefile.am: add libnfs and libsmbclient to STORAGE_LIBS
2014-10-07 06:21:34 +02:00
Max Kellermann
60512ffa09
lib/nfs/Connection: make GetEventLoop() public
2014-10-06 08:47:13 +02:00
Max Kellermann
b1a252a64d
lib/nfs/Base: kludge to reduce number of NFS mounts
...
Creating a NfsStorage sets its own export_name as the "base". Now
NfsFileReader can use this information to derive the export_name to be
mounted, instead of guessing. This solves the "too many connection"
problem on the NFS server while updating the database.
2014-10-05 07:41:50 +02:00
Max Kellermann
fb90b64bac
Makefile.am: compile libffmpeg.a with FFMPEG_CFLAGS
2014-10-04 14:23:11 +02:00
Max Kellermann
6e7a398263
PlaylistStream: use OpenLocalInputStream()
2014-10-02 22:03:02 +02:00
Max Kellermann
44d2d9b1e8
PlaylistStream: pass Path instance to playlist_open_path()
...
Convert filesystem charset to UTF-8 for playlist_list_open_uri().
This fixes one of many remaining charset bugs.
2014-10-02 22:02:11 +02:00
Max Kellermann
8302ed44aa
archive/bzip2: use OpenLocalInputStream()
2014-10-02 22:00:42 +02:00
Max Kellermann
7e12aea1d8
input/Open: use OpenLocalInputStream()
...
Make the "open" method of plugins "file" and "archive" dummy methods
that always fail. Instead, let InputStream::Open() hard-code access
to these two plugins by using OpenLocalInputStream(). This allows
simplifyin the algorithm for falling back to probing archive plugins.
2014-10-02 21:50:14 +02:00
Max Kellermann
20346b0da4
DecoderThread: use OpenLocalInputStream() for local files
2014-10-02 21:48:52 +02:00
Max Kellermann
e0e65cbdf9
TagFile: use OpenLocalInputStream()
2014-10-02 21:43:40 +02:00
Max Kellermann
9d2d58c4b6
input/LocalOpen: new library for opening local files
...
Combines the "file" and the "archive" input plugins.
2014-10-02 21:06:01 +02:00
Max Kellermann
0c461c3859
input/archive: export function OpenArchiveInputStream()
2014-10-02 21:00:38 +02:00
Max Kellermann
0d38bd9b3b
input/file: export function OpenFileInputStream()
2014-10-02 20:44:03 +02:00
Max Kellermann
2f02e49b9f
input/file: generate Error when errno==ENOENT
...
This special case was useless. Fixes the dreaded "Unrecognized URI"
error message when a file does not exist.
2014-10-02 20:16:05 +02:00
Max Kellermann
064e8a7c68
input/file: make the "fd" attribute "const"
2014-10-02 19:55:01 +02:00
Max Kellermann
e4dd269609
input/file: make variables more local
2014-10-02 19:18:58 +02:00
Max Kellermann
19dd59f38c
storage: remove redundant "virtual" keywords
...
"override" implies "virtual".
2014-10-02 19:17:46 +02:00
Max Kellermann
37501d9bc7
input/file: convert to class
2014-10-02 19:14:59 +02:00
Max Kellermann
89f9561d10
storage/Interface: include cleanup
2014-10-01 23:38:17 +02:00
Max Kellermann
8af3f91e78
Makefile.am: fix header file names
...
Found by "make distcheck".
2014-10-01 23:28:18 +02:00
Max Kellermann
0661fd6f7c
lib/nfs/FileReader: postpone the nfs_close_async() call
...
If an async opertion is in progress, nfs_close_async() will make
libnfs crash because the RPC callback will dereference an object that
was freed by nfs_close_async().
2014-10-01 23:10:32 +02:00
Max Kellermann
edd003b62a
lib/nfs/Connection: fix memory leak when cancelling Open()
...
Close the newly allocated file handle passed to the callback.
2014-10-01 23:03:31 +02:00
Max Kellermann
10cc87e422
lib/nfs/Connection: remove Mutex
...
All locks are currenly held from only a single thread (the IOThread)
and thus we don't need the Mutex.
2014-10-01 22:15:06 +02:00
Max Kellermann
0470f648c6
lib/nfs/Connection: add method GetEventLoop()
2014-10-01 22:10:46 +02:00
Max Kellermann
777360149d
lib/nfs/Connection: remove obsolete flag postponed_destroy
2014-10-01 22:10:05 +02:00
Max Kellermann
aa7774b82b
lib/nfs/Connection: remove deprecated move constructor workaround
...
Not used anymore because NfsManager now uses boost::intrusive::set
instead of std::map.
2014-10-01 22:09:37 +02:00
Max Kellermann
d44da875e7
storage/nfs: make a few attributes "const"
2014-10-01 21:14:26 +02:00
Max Kellermann
f9ad73598b
lib/nfs/Manager: use boost::intrusive::map
...
Reduce overhead for storing the key twice, and more overhead while
looking up the connection to remove it after a failure.
2014-10-01 20:49:40 +02:00
Max Kellermann
952fe98796
lib/nfs/Glue: add assertion
2014-10-01 20:44:54 +02:00
Max Kellermann
579912e52f
lib/nfs/Glue: destruct the NfsManager in the I/O thread
...
This allows eliminating the indirection code from the NfsConnection
destructor.
2014-10-01 20:39:50 +02:00
Max Kellermann
1b5ec3e3ca
lib/nfs/Glue: eliminate class NfsGlue
...
It's just a useless wrapper for class NfsManager.
2014-10-01 20:37:25 +02:00
Max Kellermann
fb4e6ac923
lib/nfs/Cancellable: use boost::intrusive::list
...
Reduce Remove() overhead because we don't have to walk the list to
find an iterator by reference.
2014-10-01 19:49:38 +02:00
Max Kellermann
3560dc4be6
Tag: support "AlbumSort"
...
The new tag is supported by all decoders that use the tag name table,
and the ID3v2 tag "TSOA" maps to it.
2014-09-29 18:55:59 +02:00
Max Kellermann
b002ea9a20
storage/nfs: convert file name to UTF-8
...
Assume the configured filesystem character set is also used by the NFS
server.
2014-09-28 18:26:54 +02:00
Max Kellermann
540317ea2b
storage/nfs: use string::append() instead of string::insert()
...
Swap the order of adding the URI and the slash, because appending is
cheaper than inserting.
2014-09-28 18:25:51 +02:00
Max Kellermann
142d1951d2
storage/nfs: move code to UriToNfsPath()
2014-09-28 18:12:20 +02:00
Max Kellermann
cf06ba6d13
fs/AllocatedPath: add method Steal()
2014-09-28 18:12:20 +02:00
Max Kellermann
a8d800572e
fs/AllocatedPath: API documentation grammar fixes
2014-09-28 18:06:18 +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
3120958a17
pcm: --disable-dsd also disables the dsd2pcm library
2014-09-26 12:17:47 +02:00
Max Kellermann
052726ed50
PcmConvert: eliminate unused local variable "format"
2014-09-26 12:17:37 +02:00
Max Kellermann
8397196fbb
output/alsa: change a few "dsd" to "dop"
2014-09-26 11:07:53 +02:00
Max Kellermann
8547611479
Merge tag 'v0.18.16'
2014-09-26 11:06:11 +02:00
Max Kellermann
fe45f28204
release v0.18.16
2014-09-26 10:57:04 +02:00
Max Kellermann
861067412f
configure.ac: fix DSD breakage due to typo
2014-09-26 10:56:20 +02:00
Max Kellermann
7eca886608
configure.ac: prepare for 0.18.16
2014-09-26 10:55:43 +02:00
Max Kellermann
79b6f9e89e
release v0.18.15
2014-09-26 09:41:40 +02:00
Max Kellermann
3d17c06777
configure.ac: allow building MPD without decoder plugin
...
There's always the "PCM" decoder plugin, which was never checked by
configure.ac.
2014-09-26 09:29:18 +02:00
Max Kellermann
d6c08fb79f
configure.ac: allow building MPD without output plugin
...
MPD can easily be used as a database provider for the proxy database
plugin. In that case, it needs only one "null" output, and no real
output plugin.
2014-09-26 09:29:18 +02:00
Max Kellermann
ef02b20811
CommandLine: update copyright year
2014-09-26 09:29:18 +02:00
Max Kellermann
8bf46a665e
configure.ac: add option to disable the DSD decoders
...
Allow building a smaller MPD binary for people who don't need DSD.
2014-09-26 09:29:18 +02:00
Max Kellermann
c4fca2aa61
playlist/embcue: change name string to "embcue"
...
The name "cue" was listed twice in "mpd --version".
2014-09-26 09:29:18 +02:00
Max Kellermann
45310d0cf6
decoder/mp4v2: add tag table
2014-09-24 23:29:10 +02:00
Max Kellermann
87268c2297
test/test_protocol: add missing stdlib.h include
...
EXIT_SUCCESS and EXIT_FAILURE are defined in stdlib.h, not unistd.h.
D'oh!
2014-09-24 23:03:28 +02:00
Max Kellermann
032e435490
decoder/mpg123: support ID3v2, ReplayGain and MixRamp
2014-09-24 22:53:50 +02:00
Max Kellermann
78c43edcac
decoder/mpg123: make variables more local
2014-09-24 22:53:39 +02:00
Max Kellermann
f32d34b965
decoder/flac: pass VorbisComment to flac_parse_mixramp()
2014-09-24 22:50:28 +02:00
Max Kellermann
8a7ff6a6fd
decoder/flac: move code to tag/MixRamp.cxx
2014-09-24 22:44:58 +02:00
Max Kellermann
6c48aa5fae
decoder/mad: move code to tag/MixRamp.cxx
2014-09-24 22:40:34 +02:00
Max Kellermann
d82547acd3
decoder/flac: pass VorbisComment to flac_parse_replay_gain()
2014-09-24 22:34:08 +02:00
Max Kellermann
441f9cc2ee
tag/ReplayGain: add VorbisComment parser
...
Move code from the Vorbis and FLAC decoder plugins.
2014-09-24 22:21:13 +02:00
Max Kellermann
9f4fc8ad33
tag/ReplayGain: move code to template function
2014-09-24 22:19:55 +02:00
Max Kellermann
d1e31261fe
decoder/{vorbis,flac}: move duplicate code to tag/VorbisComment.cxx
2014-09-24 21:50:42 +02:00
Max Kellermann
05dd9acba8
tag/ApeReplayGain, decoder/mad: move duplicate code to tag/ReplayGain.cxx
2014-09-24 21:50:34 +02:00
Max Kellermann
9270485723
Merge branch 'v0.18.x'
2014-09-24 21:49:20 +02:00
Max Kellermann
e93975cb46
test/test_protocol: add missing unistd.h include
2014-09-24 21:43:11 +02:00
Max Kellermann
cbdaf4827f
CommandLine: make all OptionDefs "constexpr"
2014-09-22 09:10:17 +02:00
Max Kellermann
f2c28d287a
DecoderBuffer: struct to class
2014-09-22 08:49:14 +02:00
Max Kellermann
90c228abca
DecoderBuffer: convert functions to methods
2014-09-22 08:32:44 +02:00
Max Kellermann
505e6bec9e
decoder/faad: use DecoderBuffer references
2014-09-22 08:30:25 +02:00
Max Kellermann
ee027f237b
decoder/faad: allocate DecoderBuffer on stack
2014-09-22 08:29:07 +02:00
Max Kellermann
3ae0d6f421
DecoderBuffer: export the struct
...
Eliminates the functions _new() and _free().
2014-09-22 08:18:58 +02:00
Max Kellermann
13b66a77c7
DecoderBuffer: make "decoder" const
2014-09-21 14:02:39 +02:00
Max Kellermann
ed70836057
DecoderBuffer: convert pointer to reference
2014-09-21 13:50:27 +02:00
Max Kellermann
a68e52c2e3
DecoderBuffer: use class DynamicFifoBuffer
2014-09-21 13:39:26 +02:00
Max Kellermann
ea37b89753
decoder/adplug: log version number
2014-09-21 13:22:56 +02:00
Max Kellermann
5d89aa06f7
decoder/adplug: move the buffer into the loop
2014-09-21 13:20:30 +02:00
Max Kellermann
ead034e638
decoder/sndfile: include cleanup
2014-09-21 13:15:53 +02:00
Max Kellermann
a294838bcd
decoder/audiofile: fix indent
2014-09-19 23:57:09 +02:00
Max Kellermann
1c03d1e87d
decoder/sndfile: remove obsolete code comment
2014-09-19 23:00:12 +02:00
Max Kellermann
f8804c8a56
decoder/sndfile: remove debug printf()
2014-09-19 22:49:31 +02:00
Max Kellermann
7c444dea6e
doc/user: add section "Satellite setup"
2014-09-19 22:41:00 +02:00
Max Kellermann
6d91d270d6
doc/user: more NFS instructions
2014-09-19 22:12:49 +02:00
Max Kellermann
dd1cec4196
decoder/sndfile: log detailed sf_open_virtual() error message
2014-09-19 21:51:24 +02:00
Max Kellermann
d1a8a4481e
decoder/sndfile: support float and 16 bit samples
...
Support these PCM formats natively, instead of letting libsndfile
convert everything to 32 bit.
2014-09-19 21:44:16 +02:00
Max Kellermann
5921ffaa36
decoder/sndfile: move sf_readf_int() call to sndfile_read_frames()
2014-09-19 21:42:06 +02:00
Max Kellermann
cf47b68c1e
decoder/sndfile: add sndfile_sample_format()
...
Prepare for other sample formats.
2014-09-19 21:06:44 +02:00
Max Kellermann
eeb8d0dbcd
db/proxy: support empty values in VisitUniqueTags()
...
Workaround for assertion failure in PrintUniqueTag().
2014-09-18 17:22:31 +02:00
Max Kellermann
b6fa22bd84
OutputThread: retain negative mix ratio
...
Fixes MixRamp breakage.
2014-09-18 13:50:23 +02:00
Andrzej Rybczak
a0ef27a0cd
command/list: reset used size after the list has been processed
2014-09-18 09:15:39 +02:00
Thomas Guillem
22eb831a71
Makefile.am: android AIDL need src/org/musicpd folder
2014-09-16 18:26:20 +02:00
Thomas Guillem
01ab9acd14
Makefile.am: fix android symlinks, use absolute paths
2014-09-16 18:26:07 +02:00
Thomas Guillem
74fcbb382f
android/Bridge: add shutdown()
...
Break the mainloop and terminate run call.
2014-09-16 18:25:45 +02:00
Thomas Guillem
9836b1dddd
CurlInputPlugin: fix crash after second init call
...
The second time init was called, http_200_aliases pointed to a freed pointer
and leaded to a SEGFAULT.
2014-09-16 18:25:25 +02:00
Max Kellermann
e304d0f8ee
thread/Posix{Cond,Mutex}: don't ues PTHREAD_*_INITIALIZER on NetBSD
...
On NetBSD, PTHREAD_MUTEX_INITIALIZER and PTHREAD_COND_INITIALIZER are
not compatible with C++11 "constexpr" (see Mantis ticket 0004110). As
a workaround, don't ues "constexpr", and use the functions
pthread_mutex_init(), pthread_mutex_destroy(), pthread_cond_init() and
pthread_cond_destroy() instead. This adds some runtime overhead, but
is portable to POSIX implementations that have awkward initializer
macros.
2014-09-13 11:26:17 +02:00
Max Kellermann
ab7b38d4b9
configure.ac: prepare for 0.18.15
2014-09-13 11:14:41 +02:00
Max Kellermann
a464dc681a
Merge tag 'v0.18.14'
2014-09-11 19:26:58 +02:00
Max Kellermann
eaf675dc92
release v0.18.14
2014-09-11 19:09:49 +02:00
Max Kellermann
57068e526c
test/run_decoder: dump MixRamp data
2014-09-09 19:17:22 +02:00
Max Kellermann
c14a00eec9
decoder/ffmpeg: use memset() to initialize AVProbeData
2014-09-09 19:07:46 +02:00
Max Kellermann
219c42522f
decoder/ffmpeg: pass MIME type to ffmpeg/libav version 11
...
That attribute was uninitialized before, which could crash
libavformat.
See Debian bug 760669
2014-09-07 22:05:33 +02:00
Max Kellermann
e3a0f15837
Decoder*: add more assertions
2014-09-07 21:52:34 +02:00
Max Kellermann
a6bb27483b
DecoderThread: clear the pipe when handling late SEEK
...
See code comment. Fixes assertion failure in
decoder_command_finished().
2014-09-07 21:50:00 +02:00
Max Kellermann
7ada7def9e
decoder/audiofile: fix crash after seeking
...
Log call was added to the wrong branch.
Fixes regression by commit ca1a1149
2014-09-06 19:32:10 +02:00
Max Kellermann
af384d9aa6
doc/user: require bit-perfect playback for DoP
2014-09-05 14:32:43 +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
421c4ae907
protocol/ArgParser: fix integer overflow in parse_range()
...
Casting std::numeric_limits<unsigned>::max() to "long" leads to an
overflow if sizeof(unsigned)==sizeof(long), and the result will be -1.
This happens on some 32 bit architectures, for example ARM and WIN32.
Workaround: use std::numeric_limits<int>::max(), which is the largest
signed integer. Since sizeof(long)>=sizeof(int), this will never
overflow.
Fixes Mantis ticket 0004080.
2014-09-04 17:37:31 +02:00
Max Kellermann
4907f610d6
test/test_protocol: unit test for protocol/ArgParser.cxx
2014-09-04 17:10:30 +02:00
Max Kellermann
f9d1bbbffb
configure.ac: prepare for 0.18.14
2014-09-03 19:59:26 +02:00
Max Kellermann
60589fc1cb
input/nfs: auto-reconnect if failed while paused
2014-09-02 21:27:07 +02:00
Max Kellermann
5121316036
input/async: add method IsPaused()
2014-09-02 20:02:56 +02:00
Max Kellermann
68bdfa9d0e
doc/user: add sections for bit-perfect playback and DSD
2014-09-02 14:42:05 +02:00
Max Kellermann
97b816200d
doc/protocol: enable docbook-xslt option "use.id.as.filename"
2014-09-02 13:50:47 +02:00
Max Kellermann
059a643188
doc/user: enable docbook-xslt option "use.id.as.filename"
2014-09-02 13:44:38 +02:00
Max Kellermann
7facad41b7
doc/user: add links
2014-09-02 10:36:20 +02:00
Max Kellermann
3ee59e454c
doc/user: remove redundant encoder plugin settings
2014-09-02 10:36:20 +02:00
Max Kellermann
43da1686da
nfs/Connection: check for disappearing libnfs socket
2014-08-31 19:33:08 +02:00
Max Kellermann
6d643f92b7
nfs/Connection: use only BroadcastError()
...
Since BroadcastError() calls BroadcastMountError(), there's no need to
check mount_finished here.
2014-08-31 19:32:41 +02:00
Max Kellermann
559a01f585
nfs/Connection: nfs_get_fd() can return -1
...
While reconnecting to the NFS server, the socket is -1, because there
is no socket. Fixes a potential crash (assertion failure).
2014-08-31 19:08:26 +02:00
Max Kellermann
ba8e3f11e2
input/nfs: notify client on error
...
Fixes hanging NFS client.
2014-08-31 18:26:32 +02:00
Max Kellermann
fd8a53ca3d
nfs/Connection: use nfs_get_error() for mount error
2014-08-31 17:44:35 +02:00
Max Kellermann
8707aafaf7
nfs/Connection: fix assertion failure
2014-08-31 17:39:33 +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
Merge tag 'v0.18.13'
2014-08-31 15:03:34 +02:00
Max Kellermann
86e8b3b4bd
release v0.18.13
2014-08-31 14:50:23 +02:00
Max Kellermann
a26ead035a
PlaylistControl: use SeekSongOrder(current) to keep current song
...
The "current" attribute is a "song order", not a "song position".
This is usually the same - except in random mode. Fixes Mantis ticket
0004073.
2014-08-31 14:44:20 +02:00
Max Kellermann
704be54c3a
PlaylistControl: move code to new method SeekSongOrder()
2014-08-31 14:23:06 +02:00
Max Kellermann
2406152576
output/alsa: fix endless loop at end of file in dsd_usb mode
2014-08-31 14:01:57 +02:00
Max Kellermann
af260b5a64
output/{alsa,oss}: add assertions
2014-08-31 14:00:09 +02:00
Joachim Fasting
4efa96df21
doc/protocol: fix description of "stats" response
...
Fix incorrect description of the "songs" field and add missing
"albums" field.
Signed-off-by: Joachim Fasting <joachifm@fastmail.fm >
2014-08-31 13:16:39 +02:00
Max Kellermann
26bef5d209
DecoderAPI: use std::min()
2014-08-31 08:27:51 +02:00
Max Kellermann
cd6e0ff88a
MusicChunk: remove special case for num_frames==0
...
Simply return an empty WritableBuffer, not a nulled one.
2014-08-31 08:26:03 +02:00
Max Kellermann
2ca979425f
MusicChunk: copy AudioFormat only when chunk is empty
2014-08-31 08:25:17 +02:00
Max Kellermann
8d822ebdb4
PlaylistMapper: pass the Storage::MapUTF() result to playlist_open_remote()
...
Finally allows loading playlist files on a storage plugin. Commit
297e2747 attempted to implement this, but failed due to this bug.
2014-08-30 01:02:24 +02:00
Max Kellermann
bc5b5afcbf
decoder/sndfile: refactor frame_to_time()
2014-08-30 00:53:14 +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
bc4b89c21a
Chrono: workaround for gcc 4.6 constexpr problems
2014-08-30 00:41:56 +02:00
Max Kellermann
e10c287c93
PlayerControl: make settings "const"
2014-08-30 00:28:02 +02:00
Max Kellermann
ce42d53a09
PlayerControl: update include guard
2014-08-30 00:27:01 +02:00
Max Kellermann
a4f9d6d98b
output/alsa: fix signed/unsigned comparison warning
2014-08-30 00:27:01 +02:00
Max Kellermann
eebd03701a
db/simple: fix build failure without zlib
2014-08-30 00:25:12 +02:00
Max Kellermann
d5287682d1
ArgParser: allow fractional seconds in ParseCommandArg(SongTime)
2014-08-29 23:46:38 +02:00
Max Kellermann
7c567e3cbd
CrossFade: pass total_time as SignedSongTime instance
2014-08-29 23:41:34 +02:00
Max Kellermann
58352ea69d
db/Stats: use std::chrono::duration for the total duration
...
Use milliseconds precision to reduce rounding errors.
2014-08-29 23:25:03 +02:00
Max Kellermann
de64b35359
db/upnp: use DatabaseStats::Clear()
2014-08-29 23:24:49 +02:00
Max Kellermann
7df8e1eab2
db/Count: use std::chrono::duration for the total time
...
Use milliseconds precision to reduce rounding errors.
2014-08-29 23:18:40 +02:00
Max Kellermann
8b62127770
decoder/gme: fix song duration
...
The unit of gme_info_t::length is milliseconds, not centiseconds.
2014-08-29 23:03:29 +02:00
Max Kellermann
3158955198
TagHandler: pass SongTime to duration()
2014-08-29 22:52:04 +02:00
Max Kellermann
d9d97bd17b
DecoderAPI: pass SignedSongTime to decoder_initialized()
2014-08-29 21:40:15 +02:00
Max Kellermann
94f6380d69
Chrono: add methods FromScale()
2014-08-29 21:38:08 +02:00
Max Kellermann
2ee821656f
Chrono: rename ToScale() parameter
2014-08-29 21:38:08 +02:00
Max Kellermann
7556abb92d
decoder/faad: bit_rate==0 is an error
2014-08-29 21:38:08 +02:00
Max Kellermann
9d3a85d434
MusicChunk: use SignedSongTime for the time stamp
2014-08-29 13:20:58 +02:00
Max Kellermann
147d301f10
MultipleOutputs: use SignedSongTime for elapsed_time
2014-08-29 13:20:58 +02:00
Max Kellermann
75a89c5983
PlayerThread: use SongTime for elapsed_time
2014-08-29 13:20:58 +02:00
Max Kellermann
2289968634
PlayerControl: use SignedSongTime for the song duration
2014-08-29 13:20:58 +02:00
Max Kellermann
ca252804c6
DecoderControl: use SignedSongTime for the song duration
2014-08-29 13:20:58 +02:00
Max Kellermann
7c25d83f1c
Tag: use SignedSongTime for the song duration
2014-08-29 13:20:58 +02:00
Max Kellermann
8ce30c6a69
Chrono: convert SongTime to SignedSongTime implicitly
2014-08-29 13:20:58 +02:00
Max Kellermann
9fcaff749f
Chrono: add SignedSongTime::FromS(unsigned)
2014-08-29 12:50:41 +02:00
Max Kellermann
3ac1475262
Chrono: add methods ToS(), RoundS()
2014-08-29 12:23:09 +02:00
Max Kellermann
ad64bab5b2
Chrono: add method SignedSongTime::Negative()
2014-08-29 12:18:13 +02:00
Max Kellermann
f02998b106
DecoderControl: use std::chrono::duration for start_ms and end_ms
2014-08-28 13:08:44 +02:00
Max Kellermann
127fe6ecf0
PlaylistEdit: pass std::chrono::duration to SetSongIdRange()
2014-08-28 13:03:18 +02:00
Max Kellermann
888ab0c89c
db/simple/Song: use std::chrono::duration for start_ms and end_ms
2014-08-28 13:03:18 +02:00
Max Kellermann
2efd8ef52d
db/LightSong: use std::chrono::duration for start_ms and end_ms
2014-08-28 13:03:18 +02:00
Max Kellermann
6ad933982f
DetachedSong: use std::chrono::duration for start_ms and end_ms
2014-08-28 13:03:18 +02:00
Max Kellermann
854258f376
Chrono: override operator+ and operator-
...
Make sure we return the correct type. This obsoletes the cast
constructor trick.
2014-08-28 13:03:18 +02:00
Max Kellermann
26f2d7fbae
DecoderControl: update API documentation
2014-08-28 13:03:18 +02:00
Max Kellermann
3952920492
Playlist: use std::chrono::duration for Seek*()
2014-08-28 06:42:19 +02:00
Max Kellermann
c2001a7259
Chrono: add class SignedSongTime
2014-08-28 06:42:04 +02:00
Max Kellermann
78f911ac19
Chrono: add methods IsZero(), IsPositive()
2014-08-28 06:42:04 +02:00
Max Kellermann
0f2a7226fb
PlayerControl: use std::chrono::duration for Seek()
2014-08-27 19:07:16 +02:00
Max Kellermann
f8d0ebe92f
PlayerThread: check if total_time is valid before using it
2014-08-27 19:06:50 +02:00
Max Kellermann
ba6ba7d4be
DecoderControl: use std::chrono::duration for Seek()
2014-08-27 18:48:43 +02:00
Max Kellermann
58e6f660f3
Chrono: add implicit conversion operator from std::chrono::duration
2014-08-27 18:47:14 +02:00
Max Kellermann
cd482ca655
Chrono: add method ToDoubleS()
2014-08-27 18:41:33 +02:00
Max Kellermann
e43b56eb38
Chrono: add template parameter to ToScale()
2014-08-27 18:41:33 +02:00
Max Kellermann
0c2d767f6f
DecoderAPI: use std::chrono::duration for decoder_seek*()
...
For type safety and code readability.
2014-08-26 22:27:04 +02:00
Max Kellermann
02e697032f
decoder/pcm: use integer seek times
2014-08-26 22:05:02 +02:00
Max Kellermann
07dc262690
decoder/dsf: use integer seek times
2014-08-26 22:00:16 +02:00
Max Kellermann
6bf8d5b936
decoder/dsdiff: use integer seek times
2014-08-26 21:53:50 +02:00
Max Kellermann
93858bf262
decoder/wildmidi: use integer seek times
2014-08-26 11:41:48 +02:00
Max Kellermann
f64da46a98
decoder/wavpack: use integer seek times
2014-08-26 11:39:58 +02:00
Max Kellermann
2052a029ee
decoder/vorbis: use integer seek times
2014-08-26 11:38:39 +02:00
Max Kellermann
c6aafff701
decoder/sndfile: use integer seek times
2014-08-26 11:36:20 +02:00
Max Kellermann
26f0f92210
decoder/opus: use integer seek times
2014-08-26 11:34:56 +02:00
Max Kellermann
bdc4ae2b86
decoder/opus: remove redundant decoder_timestamp() call
...
After seeking, the MPD core automatically refreshes the timestamp, and
thus discards the value from decoder_timestamp().
2014-08-26 11:34:24 +02:00
Max Kellermann
9ca9341384
decoder/mpg123: use integer seek times
2014-08-26 11:31:57 +02:00
Max Kellermann
7f4f8b7c7d
decoder/mpcdec: use integer seek times
2014-08-26 11:31:49 +02:00
Max Kellermann
8870526457
decoder/flac: use integer seek times
2014-08-26 11:30:21 +02:00
Max Kellermann
f057e1e17a
decoder/audiofile: use integer seek times
2014-08-26 11:29:22 +02:00
Max Kellermann
8561c9c5a6
DecoderAPI: add decoder_seek_where_frame()
2014-08-26 11:27:41 +02:00
Max Kellermann
23199719d9
decoder/mp4v2: use integer seek times
2014-08-26 11:20:15 +02:00
Max Kellermann
a606ef0700
decoder/ffmpeg: use integer seek times
2014-08-26 11:15:53 +02:00
Max Kellermann
a234de1ee3
decoder/gme: use integer seek times
2014-08-26 11:15:40 +02:00
Max Kellermann
d266898617
decoder/modplug: use integer seek times
2014-08-26 11:11:36 +02:00
Max Kellermann
69b5929c5a
decoder/mad: use integer seek times
...
Avoid roundtrips to floating point.
2014-08-26 11:07:47 +02:00
Max Kellermann
316c72a4ae
DecoderAPI: add decoder_seek_where_ms()
...
Move to fixed-point integers instead of floating point.
2014-08-26 11:02:02 +02:00
Max Kellermann
9da88eec3e
decoder/mad: move duplicate code to RecoverFrameError()
2014-08-26 10:52:17 +02:00
Max Kellermann
f10d9996d2
decoder/mad: simplify if/else chain
2014-08-26 10:52:17 +02:00
Max Kellermann
58ec9d3a73
decoder/mad: make variables more local
2014-08-26 10:34:04 +02:00
Max Kellermann
4a503ba1ad
decoder/mad: simplify "return", eliminate check
...
This check was redundant, because we could only exit the loop when
ret==DECODE_OK.
2014-08-26 10:30:22 +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
b111aa0111
ZeroconfAvahi: fix coding style
2014-08-26 10:04:27 +02:00
Max Kellermann
773d24ebf7
ZeroconfAvahi: remove "goto"
2014-08-26 10:03:35 +02:00
Max Kellermann
bd371af0b3
ZeroconfAvahi: remove unused flag "avahi_running"
...
This flag is never read.
2014-08-26 10:02:06 +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
9e10b75f55
PcmExport: remove obsolete API documentation
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
da6dd2dc92
decoder/mad: don't reset the xing struct
...
Not necessary.
2014-08-25 10:32:40 +02:00
Max Kellermann
40b9de66c7
decoder/mad: remove unused flag "found_xing"
2014-08-25 10:31:55 +02:00
Max Kellermann
aac985951a
decoder/mad: convert enums/macros to constexpr
2014-08-24 21:06:50 +02:00
Max Kellermann
662cc5fe20
decoder/mad: make variables more local
2014-08-24 20:57:47 +02:00
Max Kellermann
e1e62d97a8
doc/mpd.conf.5: remove deprecated setting
2014-08-24 13:59:49 +02:00
Max Kellermann
a29cc48fec
doc/{mpd.conf.5,mpdconf.example}: move documentation to the manual
2014-08-24 13:33:00 +02:00
Max Kellermann
42af040fbd
StateFile: configurable interval
2014-08-24 13:24:20 +02:00
Max Kellermann
d383d617c2
StateFile: make "path" const
2014-08-24 13:24:20 +02:00
Max Kellermann
9d04c21cc2
doc/user: document the state file
2014-08-24 13:24:20 +02:00
Max Kellermann
ed8039e223
doc/user: add comments about libao and openal
2014-08-24 13:24:20 +02:00
Max Kellermann
f05743bf57
doc/user: add comment about Linux and OSS
2014-08-24 13:24:19 +02:00
Max Kellermann
c6be661bb5
doc/user: more markup
2014-08-24 13:24:19 +02:00
Max Kellermann
c84508ae9f
Merge branch 'v0.18.x'
2014-08-24 13:20:35 +02:00
Max Kellermann
f06fe1ea98
event/TimeoutMonitor: really reset "active" flag before invoking OnTimeout()
...
The previous commit was broken. D'oh!
2014-08-24 13:19:50 +02:00
Max Kellermann
77f2cd6513
Merge branch 'v0.18.x'
2014-08-24 13:15:17 +02:00
Max Kellermann
d16fb79708
event/TimeoutMonitor: reset "active" flag before invoking OnTimeout()
...
The IsActive() method returned true even if the timer was not active,
after it completed once. This broke the state file timer, and the
state file was not saved periodically.
2014-08-24 13:13:12 +02:00
Max Kellermann
baad86bcd7
doc/user: document ALSA mixer plugin settings
2014-08-23 15:39:32 +02:00
Max Kellermann
8808aad529
decoder/dsdiff: implement seeking
2014-08-23 15:27:21 +02:00
Max Kellermann
6d7eaba845
decoder/dsdiff: refactor the main decoder loop
...
Check for STOP before decoding the first chunk. This reduces the
command latency.
2014-08-23 15:25:40 +02:00
Max Kellermann
4259b17b91
decoder/dsdiff: add local variable "remaining_bytes"
...
Remember the chunk's total size.
2014-08-23 15:21:08 +02:00
Max Kellermann
828ea700e8
decoder/dsdiff: don't skip remaining bytes
...
Nobody cares.
2014-08-23 15:19:34 +02:00
Max Kellermann
7f22685fa3
decoder/dsdiff: eliminate local variable "buffer_samples"
2014-08-23 15:17:31 +02:00
Max Kellermann
40db9dff3b
decoder/dsdiff: support only one "DSD" chunk
...
Eliminate the loop from dsdiff_stream_decode(). It makes the code
complex, real-world files with multiple DSD chunks are outside of the
specification, and the "chunk_size" variable would be bogus anyway.
2014-08-23 15:14:16 +02:00
Max Kellermann
fa82264604
pcm/PcmDsd: remove "lsbfirst" support
...
Unused. Bit reversing is done in the decoder.
2014-08-23 14:46:34 +02:00
Max Kellermann
ae467aa42e
pcm/dsd2pcm: add license headers
...
Obtained from the Mercurial repository at
https://code.google.com/p/dsd2pcm/
2014-08-23 14:42:23 +02:00
Thomas Klausner
c38f29ce56
system/ByteOrder: <endian.h> is a non-standard header that only Linux provides.
2014-08-23 14:27:44 +02:00
Max Kellermann
67cc09416f
decoder/dsf: implement seeking
2014-08-23 14:00:38 +02:00
Max Kellermann
f2a75fbfc7
decoder/dsf: refactor the main decoder loop
...
Check for STOP before decoding the first chunk. This reduces the
command latency.
2014-08-23 13:57:57 +02:00
Max Kellermann
b1fb09e183
decoder/dsf: make the buffer more local
...
This allows the compiler to discard buffer contents between two
iterations.
2014-08-23 13:55:52 +02:00
Max Kellermann
cd0082c630
decoder/dsf: eliminate pointless return statement
2014-08-23 13:54:07 +02:00
Max Kellermann
f78527d1e3
decoder/dsf: use the block count internally
2014-08-23 13:51:08 +02:00
Max Kellermann
1f642238a7
decoder/dsf: don't skip remaining bytes
...
Nobody cares.
2014-08-23 13:50:36 +02:00
Max Kellermann
6fe06cad98
decoder/dsf: count the blocks, not the remaining bytes
...
Prepare refactoring the whole plugin to use blocks instead of bytes.
A block is the smallest addressable unit, and it will simplify the
seeking code.
2014-08-23 13:44:53 +02:00
Max Kellermann
2335fdbb5a
decoder/dsf: allow channel setups other than stereo
...
This finishes the multi-channel support. Development of the feature
was started with commit 02cc77cd8
2014-08-23 13:40:21 +02:00
Max Kellermann
1b6f7c3eb7
decoder/dsf: eliminate another hard-coded stereo mode assumption
...
When calculating the upper bound using the "sample count" format
header, don't assume it's stereo.
2014-08-23 13:39:00 +02:00
Max Kellermann
67f0d26d17
decoder/dsf: fix big-endian bugs
2014-08-23 13:35:29 +02:00
Max Kellermann
8574bcd494
decoder/dsf: compare with InputStream::GetRest() instead of ..GetSize()
2014-08-23 13:26:17 +02:00
Max Kellermann
02cc77cd82
decoder/dsf: fix multi-channel files
...
The plugin was horribly bugged for files that were not stereo.
2014-08-22 07:30:32 +02:00
Max Kellermann
d8782ce5fd
decoder/dsf: simplify dsf_to_pcm_order()
...
Don't pass the buffer size to the function, as it's known at compile
time. Use "restrict" on the pointer arguments, and merge the two
loops, which allows the compiler to optimize this loop with a few SSE2
instructions.
2014-08-22 06:58:08 +02:00
Max Kellermann
dedc2986c6
decoder/dsf: fix noise at end of malformed file
...
Read one block at a time. This discards the last partial block, which
cannot be interleaved anyway. Previously, uninitialised memory was
used to interleave the last block, which generated some noise.
2014-08-21 17:46:25 +02:00
Max Kellermann
74cdc0005a
decoder/dsf: eliminate temporary buffer
...
Convert into a second buffer that gets passed to decoder_data()
without copying back to the first buffer.
2014-08-21 17:15:29 +02:00
Max Kellermann
a756cd9565
decoder/dsf: add constant DSF_BLOCK_SIZE
2014-08-21 17:12:43 +02:00
Max Kellermann
ae27c3f4c5
decoder/dsf: use size_t loop variables when the limit is a size_t
2014-08-21 17:09:49 +02:00
Max Kellermann
6d41f36266
decoder/dsf: use memcpy()
2014-08-21 13:09:14 +02:00
Max Kellermann
57cbcdf2ec
decoder/dsf: make the "scratch" buffer local
...
This allows the compiler to discard buffer contents between two
function calls.
2014-08-21 13:05:35 +02:00
Max Kellermann
455fd180b1
Merge branch 'v0.18.x'
2014-08-21 12:52:27 +02:00
Max Kellermann
78abcd7df7
decoer/dsdiff: fix endless loop on malformed file
...
Same bug as in the previous commit.
2014-08-21 12:48:03 +02:00
Max Kellermann
23dce21647
decoer/dsf: fix endless loop on malformed file
...
When the data chunk size is not a multiple of the frame size, the last
partial frame lead to an endless loop. We fix this by checking
chunk_sze>=frame instead of chunk_sze>0. This way, the partial frame
is simply skipped.
2014-08-21 12:37:22 +02:00
Max Kellermann
e6177c3349
decoder/dsf: remove unused attribute "id3_size"
2014-08-20 09:46:42 +02:00
Max Kellermann
e2adb82e29
decoder/DsdLib: use offset_type instead of uint64_t
2014-08-19 22:39:44 +02:00
Max Kellermann
bb472206de
InputStream: move typedef offset_type to Offset.hxx
...
Reduce header dependencies.
2014-08-19 22:29:52 +02:00
Max Kellermann
d87cf5146e
InputStream: CheapSeeking() returns false only for HTTP
...
Seeking on NFS or SMB is cheap. Actually, only HTTP streams are
expensive to seek. This enables a few features on NFS/SMB files, for
example Ogg tags.
2014-08-19 21:39:12 +02:00
Max Kellermann
87eb5cbced
InputStream: move code to ExpensiveSeeking()
2014-08-19 21:38:18 +02:00
Max Kellermann
181edf4b53
InputStream: make offset_type unsigned
2014-08-19 21:23:03 +02:00
Max Kellermann
dfa53cb88e
InputPlugin: remove typedef offset_type
...
Has been moved to class InputStream long ago.
2014-08-19 21:22:23 +02:00
Max Kellermann
d079cda174
InputStream: allow GetSize() only if KnownSize()
2014-08-19 21:02:00 +02:00
Max Kellermann
4265e71d6f
InputStream: add constant UNKNOWN_SIZE
2014-08-19 21:00:50 +02:00
Max Kellermann
f66a72c66b
input/proxy: use KnownSize()
2014-08-19 21:00:32 +02:00
Max Kellermann
9be90bd1c9
decoder/wavpack: add local reference variables
2014-08-19 20:58:08 +02:00
Max Kellermann
106e535577
decoder/sndfile: check InputStream::KnownSize()
2014-08-19 20:57:25 +02:00
Max Kellermann
194be51f05
decoder/pcm: check InputStream::KnownSize()
2014-08-19 20:57:00 +02:00
Max Kellermann
a862e363ea
decoder/mpcdec: check InputStream::KnownSize()
2014-08-19 20:55:51 +02:00
Max Kellermann
2e64afca27
decoder/modplug: check InputStream::KnownSize()
2014-08-19 20:53:02 +02:00
Max Kellermann
51cda0be2a
decoder/mad: check InputStream::KnownSize()
2014-08-19 20:44:29 +02:00
Max Kellermann
4da3291157
decoder/ffmpeg: check InputStream::KnownSize()
2014-08-19 20:44:29 +02:00
Max Kellermann
52edabf2cb
decoder/faad: remove unnecessary cast to size_t
2014-08-19 20:44:29 +02:00
Max Kellermann
43a1a0f3ab
decoder/faad: remove size!=0 check
...
Since we already checked InputStream::KnownSize(), we can assume that
GetSize() returns a valid value, and this check is obsolete.
2014-08-19 20:44:29 +02:00
Max Kellermann
e88524f274
decoder/faad: check InputStream::KnownSize()
...
Replace the bogus GetSize() check and call GetSize() only when
necessary.
2014-08-19 20:44:29 +02:00
Max Kellermann
7a929fcd27
decoder/faad: call GetSize() only when needed
2014-08-19 20:44:29 +02:00
Max Kellermann
7087fdf6c0
decoder/DsdLib: make variables more local
2014-08-19 20:44:29 +02:00
Max Kellermann
67093a5143
decoder/DsdLib: use fixed-length ID3 buffer
...
Variable-length arrays are not allowed in C++.
2014-08-19 20:42:40 +02:00
Max Kellermann
3f34016888
decoder/DsdLib: check InputStream::KnownSize()
2014-08-19 20:24:33 +02:00
Max Kellermann
1307633a84
decoder/dsf: check InputStream::KnownSize()
2014-08-19 20:24:09 +02:00
Max Kellermann
1a53f07d80
decoder/dsf: remove unnecessary ID3 offset check
...
If the offset is out of range, the seek will simply fail. Not a
problem.
2014-08-19 20:23:36 +02:00
Max Kellermann
672f678ed6
InputStream: use KnownSize() in assertion
2014-08-19 11:59:19 +02:00
Max Kellermann
b924568f79
decoder/audiofile: check InputStream::KnownSize()
...
The plugin assumes that the size is known, but does not verify it at
runtime.
2014-08-19 11:58:15 +02:00
Max Kellermann
e6e9c21275
input/ffmpeg: use av_strerror()
...
Generate more detailed error messages.
2014-08-18 20:35:34 +02:00
Max Kellermann
636f5d4a1d
{input,decoder}/ffmpeg: move ffmpeg_domain to lib/ffmpeg/Domain.cxx
...
Eliminate duplicate definition (in input plugin and decoder plugin).
2014-08-18 10:12:37 +02:00
Max Kellermann
41a4b280ee
input/ffmpeg: update offset after seeking
2014-08-18 09:52:53 +02:00
Max Kellermann
27139bf41f
input/ffmpeg: refactor error code path
2014-08-18 09:52:25 +02:00
Max Kellermann
12ba1957d0
input/ffmpeg: use "auto"
2014-08-18 09:47:28 +02:00
Jurgen Kramer
9b9d189a33
decoder/dsf: Allow up to DSD512. Enable DSD rates based on Fs=48kHz
2014-08-16 18:40:53 +02:00
Jurgen Kramer
7c3af4f56f
Report bitrate for DSF and DSDIFF DSD decoders
2014-08-16 18:38:44 +02:00
Max Kellermann
880ce080b7
decoder/dsf: fix indent
2014-08-16 18:38:15 +02:00
Max Kellermann
6e84a03a35
PlayerThread: rename player_create() to StartPlayerThread()
2014-08-16 10:33:19 +02:00
Max Kellermann
a9f6556454
Merge branch 'v0.18.x'
2014-08-16 08:25:10 +02:00
Max Kellermann
2722211ba3
pcm/SoxrResampler: add missing string.h include
2014-08-16 08:25:06 +02:00
François Revol
e2e5cddcaa
icu: include strings.h for strcasecmp
...
Again, POSIX says strcasecmp is not in string.h.
2014-08-16 07:53:08 +02:00
François Revol
40280fa6cf
util: Fix header for strcasecmp
...
According to POSIX and both OSX and Linux manpages,
strcasecmp comes from strings.h, not string.h.
Most OSes also have them available in string.h,
but we just fixed the headers on Haiku and it now
only provides them in strings.h.
We might want to fall back to string.h for other
OSes though...
cf.
http://pubs.opengroup.org/onlinepubs/009695399/functions/strcasecmp.html
http://linux.die.net/man/3/strcasecmp
https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/strcasecmp.3.html
2014-08-16 06:51:13 +02:00
Max Kellermann
8b7718fbdc
encoder/shine: require libshine 3.1, adapt to new API
...
The "written" argument to shine_encode_buffer() and shine_flush() was
changed from "long" to "int", which breaks API and ABI compatibility.
This is a big deal, and it doesn't seem worthwile to keep support for
the (broken) 3.0 release.
2014-08-13 18:49:44 +02:00
Max Kellermann
fe9299ceff
decoder/ffmpeg: use avcodec_descriptor_get() to determine codec name
...
In version 11, both ffmpeg and libav deprecate
AVCodecContext::codec_name. The function avcodec_descriptor_get() has
been introduced long ago.
2014-08-13 18:40:39 +02:00
Max Kellermann
b44957ad91
PcmExport: add missing <iterator> include
...
For the range-based loop on a ConstBuffer object.
2014-08-13 13:00:37 +02:00
Max Kellermann
a049f972ec
test/test_rewind: add missing stdlib.h include
...
For EXIT_SUCCESS.
2014-08-13 12:55:29 +02:00
Max Kellermann
069895d26b
PcmDsdUsb: use class ConstBuffer
2014-08-12 22:21:24 +02:00
Max Kellermann
0e756e4377
PcmExport: use class ConstBuffer
2014-08-12 22:19:53 +02:00
Max Kellermann
ee7282ce0d
test/test_pcm: add PcmExport unit test
2014-08-12 22:05:38 +02:00
Max Kellermann
d026367334
Merge branch 'v0.18.x'
2014-08-12 16:54:32 +02:00
Max Kellermann
7244dc4511
Filter: FilterPCM() returns ConstBuffer
...
API simplification. We can now avoid abusing a "size_t*" as
additional return value.
2014-08-12 16:40:51 +02:00
Max Kellermann
56f61a6d59
PcmConvert: Convert() returns ConstBuffer
2014-08-12 16:36:07 +02:00
Max Kellermann
4d5f610029
Filter: update API documentation
2014-08-12 16:05:37 +02:00
Max Kellermann
c94b4466d5
MusicChunk: rename struct to MusicChunk
2014-08-12 15:56:41 +02:00
Max Kellermann
61f9e79ec9
MusicChunk: update API documentation
2014-08-12 15:56:11 +02:00
Max Kellermann
cf797657ed
AllCommands: close connection after syntax error
...
Stop HTTP clients from exploiting MPD via forged POST requests.
2014-08-12 15:33:45 +02:00
Max Kellermann
c597538b40
util/HugeAllocator: implement on Windows
2014-08-11 23:06:45 +02:00
Max Kellermann
43f964e28d
db/simple: check for I/O errors in Load()
2014-08-11 22:54:46 +02:00
Max Kellermann
8283f23651
fs/io/TextFile: add method Check()
2014-08-11 22:53:48 +02:00
Max Kellermann
7cc25f91ff
fs/io/Reader: add "nonnull" attribute
2014-08-11 22:49:08 +02:00
Max Kellermann
5d2506e697
SongFilter: new filter "modified-since"
2014-08-11 22:38:58 +02:00
Max Kellermann
14908b7f28
doc/protocol: reformat the "find" types
2014-08-11 22:38:58 +02:00
Max Kellermann
2e122e1509
db/simple: compress the database file using gzip
2014-08-11 21:48:25 +02:00
Max Kellermann
486b5b6bfc
fs/io/TextFile: use AutoGunzipReader
...
Several MPD subsystems can now read gzipped files; for example, the
database file can be gzipped.
2014-08-11 21:48:25 +02:00
Max Kellermann
88a2f128ec
fs/io/AutoGunzipReader: new class
2014-08-11 21:48:25 +02:00
Max Kellermann
45c139cfb3
fs/io/PeekReader: new utility class
2014-08-11 21:48:25 +02:00
Max Kellermann
3a111e5d74
fs/io/GzipOutputStream,GunzipReader: move zlib_domain to src/lib/zlib/Domain.cxx
2014-08-11 21:48:25 +02:00
Max Kellermann
fc0c5e7359
configure.ac: fix typo, remove spaces
2014-08-11 21:20:27 +02:00
Max Kellermann
2ccfb71d12
util/CharUtil: add ToLowerASCII()
2014-08-11 18:42:05 +02:00
Max Kellermann
e8a5a9b1e8
Merge branch 'mp4v2' of github.com:ekroth/mpd
2014-08-09 00:10:04 +02:00
Andrée Ekroth
ec3568bd97
decoder/Mp4v2: fix crash with undefined error
...
When no track is found the error is now properly set.
Previously the calling function tried to log an undefined
error, which resulted in a crash. MPD falls back to
ffmpeg for unsupported tracks, such as ALAC.
This should fix issue 4051.
2014-08-08 23:24:26 +02:00
Max Kellermann
a67a881715
input/GunzipInputStream: new class
2014-08-08 20:11:29 +02:00
Max Kellermann
7a048f004d
Merge branch 'id-3919' of git://github.com/ekroth/mpd
2014-08-07 22:52:46 +02:00
Andrée Ekroth
330b6a0482
decoder/Mp4v2: add MP4v2 decoder plugin
...
This plugin uses the MP4v2 library to play mp4/m4a files.
It is limited to file_decode.
2014-08-07 21:01:38 +02:00
Max Kellermann
aa2e4d92e0
fs/io/BufferedReader: new class to replace class TextFile
...
The new class is pluggable, to prepare for gzipped database files.
For now, the TextFile class remains, and will be refactored away
later.
2014-08-07 19:38:25 +02:00
Max Kellermann
0ea66a1275
fs/io/Reader: new interface
2014-08-07 19:38:25 +02:00
Max Kellermann
aafff8fd5c
fs/output, fs/TextFile: move to fs/io/
2014-08-07 19:38:25 +02:00
Max Kellermann
5ac2a69940
input/TextInputStream: move ReadBufferedLine() to util/TextFile.hxx
2014-08-07 19:38:25 +02:00
Max Kellermann
8278a12af9
Makefile.am: link libfs.a before libsystem.a
...
libfs.a depends on libsystem.a.
2014-08-07 19:38:25 +02:00
Max Kellermann
e88dd9b08b
util/DynamicFifoBuffer: make GetCapacity() and Clear() public
2014-08-07 19:21:09 +02:00
Max Kellermann
bbea6564fc
fs/output/FileOutputStream: use open_cloexec()
...
Support operating systems that don't have O_CLOEXEC.
2014-08-07 18:16:11 +02:00
Max Kellermann
1ca8d7ad45
TextInputStream: don't strip
...
Let the caller decide whether to strip. Only remove \n and \r
(end-of-line markers).
2014-08-07 16:45:43 +02:00
Max Kellermann
67958f7fa7
util/{Static,Foreign}FifoBuffer: lazy shift
...
Reduce the number of unnecessary memmove() calls.
2014-08-07 16:11:00 +02:00
Max Kellermann
ab9c527274
util/StaticFifoBuffer: fix indent
2014-08-07 16:08:55 +02:00
Max Kellermann
36ff991960
TextInputStream: move code to ReadBufferedLine()
...
Look at the buffer first, before trying to read from the file. This
reduces overhead because we don't refill the buffer after every line.
2014-08-07 16:08:02 +02:00
Max Kellermann
59d38f876a
util/StringUtil: add StripRight() overload with "end" argument
2014-08-07 16:08:02 +02:00
Max Kellermann
5c5c6a965c
LogBackend: use StripRight()
...
Eliminate duplicate code.
2014-08-07 16:08:02 +02:00
Max Kellermann
74aafe6a10
util/StringUtil: use IsWhitespaceOrNull() in StripRight()
...
The null byte is whitespace, too.
2014-08-07 16:08:02 +02:00
Max Kellermann
f860a2fbd6
util/StringUtil: move code to StripRight()
2014-08-07 16:08:02 +02:00
Max Kellermann
87bcf739ee
util/StringUtil: rename strchug_fast() to StripLeft()
2014-08-07 16:08:02 +02:00
Max Kellermann
db6db51742
util/CharUtil: add IsWhitespaceFast()
2014-08-07 16:08:02 +02:00
Max Kellermann
981be7956b
util/CharUtil: make IsWhitespace*() "constexpr"
2014-08-07 16:08:02 +02:00
Max Kellermann
8c10aa575c
util/CharUtil: fix indent
2014-08-07 16:08:02 +02:00
Max Kellermann
17b316b94b
fs/StandardDirectory: pass writable string to ParseConfigLine()
...
Eliminate the std::string overhead.
2014-08-07 16:07:52 +02:00
Max Kellermann
8921b4f9d1
event/BufferedSocket: fix inversed buffer check
...
This was broken by commit 84d20d9e , which deleted the "!" from the
check.
2014-08-07 16:07:48 +02:00
Max Kellermann
c3f111a56c
event/BufferedSocket: fix inversed buffer check
...
This was broken by commit 84d20d9e , which deleted the "!" from the
check.
2014-08-07 16:03:44 +02:00
Max Kellermann
cf16d81fa4
util/ForeignFifoBuffer: add method Swap()
2014-08-07 09:02:24 +02:00
Max Kellermann
2beb763b4f
util/ForeignFifoBuffer: add method MoveFrom()
2014-08-07 08:53:02 +02:00
Max Kellermann
69ae879c58
input/TextInputStream: return char*
...
Revert to the old API before commit e9e55b08 , removing unnecessary
bloat.
2014-08-07 00:06:02 +02:00
Max Kellermann
08fee9a284
util/ForeignFifoBuffer: add method GetAvailable()
2014-08-06 22:55:59 +02:00
Max Kellermann
f89da17827
util/DynamicFifoBuffer: move code to new base class ForeignFifoBuffer
2014-08-06 17:39:07 +02:00
Max Kellermann
ea26da0be7
util/FifoBuffer: rename to StaticFifoBuffer
2014-08-06 17:29:05 +02:00
Max Kellermann
1f3d3970f6
db/update/InotifySource: remove FifoBuffer
...
Eliminate support for partial reads. The Linux kernel will never
return partial results, so this buffering was unnecessary.
2014-08-06 17:20:03 +02:00
Max Kellermann
c9a71a7176
fs/GzipOutputStream: new class wrapping zlib
2014-08-06 16:35:10 +02:00
Max Kellermann
7ed8833fd5
Makefile.am: add variable FS_LIBS
2014-08-06 16:35:10 +02:00
François Revol
250318329f
Makefile.am: fix dependencies for win32
...
It happened to me when doing the Haiku port, src/mpd failed to
be relinked properly when editing source files, and likely also
happens on win32, although I didn't try this change.
When building for windows, src_mpd_DEPENDENCIES is overriden.
Automake then disables the default version which contains all
the static libraries. In Makefile.in:
@HAVE_WINDOWS_FALSE@src_mpd_DEPENDENCIES = libmpd.a \
Instead we use EXTRA_src_mpd_DEPENDENCIES which is meant for this.
2014-08-02 08:48:44 +02:00
Max Kellermann
14c538c9c7
Win32Main: move to win32/
2014-08-02 08:48:30 +02:00
Max Kellermann
abe4c57663
configure.ac: prepare for 0.18.13
2014-08-02 08:45:44 +02:00
Max Kellermann
9fb351a139
*Save, *State: use the OutputStream API instead of FILE*
2014-07-30 22:17:01 +02:00
Max Kellermann
0d0ccacdf3
fs/OutputStream: new infrastructure for writing to files
2014-07-30 22:12:02 +02:00
Max Kellermann
c8858f85d8
util/Error: add method FormatLastError()
2014-07-30 22:10:31 +02:00
Max Kellermann
d1bc46ffad
util/Error: add SetLastError() overload with "DWORD code" parameter
2014-07-30 22:08:26 +02:00
Max Kellermann
32e5848f34
util/Error: add "printf" attributes
2014-07-30 22:02:46 +02:00
Max Kellermann
be36c0769a
TagId3: fix printf string parameter
2014-07-30 22:02:46 +02:00
Max Kellermann
f9e63dfd65
util/DynamicFifoBuffer: fix typo in API documentation
2014-07-30 20:53:09 +02:00
Max Kellermann
fa05dac5ae
StateFile: use nullptr instead of NULL
2014-07-30 18:45:14 +02:00
Max Kellermann
430dd3ae05
encoder/opus: use nullptr instead of NULL
2014-07-30 18:45:00 +02:00
Max Kellermann
664fc76ac7
system/Resolver: use nullptr instead of NULL
2014-07-30 18:44:40 +02:00
Max Kellermann
37d6cc07a7
pcm: use nullptr instead of NULL
2014-07-30 18:44:20 +02:00
Max Kellermann
d79b6cd8dc
playlist/extm3u: use nullptr instead of NULL
2014-07-30 18:44:03 +02:00
Max Kellermann
d6510f9578
android build 5
2014-07-30 11:18:33 +02:00
Max Kellermann
59e8302c9d
Makefile.am: add missing backslash
...
Fixes breakage by commit 1a619522
2014-07-30 11:18:33 +02:00
Max Kellermann
3422bd9b94
Merge tag 'v0.18.12'
2014-07-30 10:40:40 +02:00
Max Kellermann
a3f3c7ba24
release v0.18.12
2014-07-30 10:30:17 +02:00
Max Kellermann
82ecebb393
Main: don't require mpd.conf on Android
...
Don't fail to start if mpd.conf does not exist; just use default
values.
2014-07-30 10:22:22 +02:00
Max Kellermann
6ba0b029e6
android/Main: indicate when the native code has quit
...
Let the user know that MPD has failed. Not the best thing to do, but
better than pretending it still runs.
2014-07-30 10:17:31 +02:00
Max Kellermann
604c9dacdb
android/Loader: fix indent
2014-07-30 10:17:31 +02:00
Max Kellermann
1a619522ee
Makefile.am: *.apk depends on android/src/*.java
...
Invoke "ant" when a Java source is modified.
2014-07-30 10:17:31 +02:00
Max Kellermann
88615fbff1
Makefile.am: move duplicate specification to APK_DEPS
2014-07-30 10:15:37 +02:00
Max Kellermann
d4f8f67173
Makefile.am: release .apk depends on icon
...
Missing piece from commit e0ca4347
2014-07-30 10:14:26 +02:00
Max Kellermann
174a0a2efc
Makefile.am: new zipalign path
2014-07-30 09:45:03 +02:00
Max Kellermann
12b5494906
db/proxy: implement Update()
2014-07-29 23:35:09 +02:00
Max Kellermann
aa0f06d6b7
db/Interface: add virtual method Update()
...
For database plugins that don't use the UpdateService.
2014-07-29 23:31:27 +02:00
Max Kellermann
0c47685e02
OtherCommands: split handle_update()
2014-07-29 23:29:57 +02:00
Max Kellermann
e0ca4347be
Android: generate icon from SVG
2014-07-14 19:05:01 +02:00
Qball Cow
e65d9408ee
import MPD SVG icon
2014-07-14 19:04:46 +02:00
Max Kellermann
d8558a3af3
util/Cast: add "const" overload
2014-07-14 17:08:57 +02:00
Max Kellermann
72eedb1c98
util/Cast: add missing include
2014-07-14 17:08:41 +02:00
Max Kellermann
3c5cf9500d
util/Cast: fix indent
2014-07-14 16:44:43 +02:00
Max Kellermann
7a1f3177c9
util/Cast: reimplement as template without macro
2014-07-14 16:24:07 +02:00
Max Kellermann
f8da8b0261
util/Cast: add const overloads
2014-07-14 16:02:02 +02:00
Max Kellermann
393cb7fd7d
util/Cast: suppress "unused function" warning by using "inline"
2014-07-14 15:58:12 +02:00
Max Kellermann
e74e1256d4
util/Cast: fix indent
2014-07-14 15:57:48 +02:00
Max Kellermann
96abd70c13
decoder/dsdiff: move artist/title/id3 offsets out of DsdiffMetaData
...
They are only used inside dsdiff_read_metadata_extra().
2014-07-12 20:51:25 +02:00
Max Kellermann
1f9d9c3176
Merge branch 'v0.18.x'
2014-07-12 20:51:22 +02:00
Max Kellermann
94efeb2845
decoder/dsdiff: simplify dsdlib_skip() call
2014-07-12 20:51:00 +02:00
Max Kellermann
a73834436f
decoder/dsdiff: simplify loop condition, merge branches
2014-07-12 20:46:24 +02:00
Max Kellermann
85f4aeca05
decoder/dsdiff: ignore garbage null byte at end of file
...
Failure to read another chunk header is not fatal. Continue to read
metadata.
2014-07-12 20:41:26 +02:00
Max Kellermann
7db84a961a
decoder/dsdiff: fix metadata parser bug (uninitialized variables)
2014-07-12 20:41:26 +02:00
Max Kellermann
74e95e88d8
PlaylistSong: always merge tags and LastModified
2014-07-12 19:41:04 +02:00
Max Kellermann
80d9baa9e8
QueueSave: use the long format to save partial songs
...
Previously, only streams were saved with range and tags, but this is
necessary for all "partial" songs (e.g. CUE tracks).
2014-07-12 19:36:39 +02:00
Max Kellermann
751995ab95
QueueCommands: new command "rangeid"
...
Manipulates the playback range of a queued song.
2014-07-12 18:55:41 +02:00
Max Kellermann
5ca6e2910a
PlaylistSong, CueParser: don't override Tag::time
...
Now that Song::GetDuration() is used (which considers start_ms and
end_ms), we don't need to override the Tag's duration value.
2014-07-12 18:54:20 +02:00
Max Kellermann
071d05465a
SongPrint: use DetachedSong::GetDuration()
...
Fixes the bogus duration of the last track in a CUE sheet.
2014-07-12 18:41:15 +02:00
Max Kellermann
11a9536271
TagPrint: split tag_print()
...
Add one method that prints only the tag values, but not the song
duration.
2014-07-12 17:42:38 +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
Max Kellermann
543a58bb87
DecoderBuffer: implement _skip() using decoder_skip()
2014-07-12 02:26:38 +02:00
Max Kellermann
b2b95cad20
DecoderBuffer: add method _need()
...
Move code from the FAAD decoder plugin.
2014-07-12 02:23:48 +02:00
Max Kellermann
eabec967ec
DecoderBuffer: remove unused method _is_full()
2014-07-12 02:23:36 +02:00
Max Kellermann
e42b152037
decoder/faad: eliminate the adts_find_frame() loop
...
This loop is completely unnecessary. We just need to find the first
ADTS frame and feed it into NeAACDecInit().
2014-07-12 01:51:39 +02:00
Max Kellermann
da599e3f1a
decoder/faad: split faad_stream_decode()
...
Eliminate duplicate cleanup code.
2014-07-12 01:47:07 +02:00
Max Kellermann
4c7b0b935b
DecoderBuffer: remove unused method _is_empty()
2014-07-12 01:28:37 +02:00
Max Kellermann
c400876df1
Merge branch 'v0.18.x'
2014-07-12 01:27:18 +02:00
Max Kellermann
a960e2ef48
decoder/faad: estimate song duration for remote files
...
Previously, MPD tried to slurp the whole song file, count the number
of frames and calculate the song duration from that. That however is
extremely expensive for remote files, and will delay playback for a
long time. Workaround: check only the first 128 frames and try to
extrapolate from here. Fixes Mantis ticket 0004035.
2014-07-12 00:37:00 +02:00
Max Kellermann
4fe272a7fb
DecoderBuffer: add method _available()
2014-07-12 00:35:32 +02:00
Max Kellermann
a7d9f248ea
DecoderBuffer: add method _get_stream()
2014-07-12 00:23:22 +02:00
Max Kellermann
06aa689383
decoder/faad: bail out early if sample rate is invalid
2014-07-12 00:23:11 +02:00
Max Kellermann
835b0c44cd
decoder/faad: use adts_check_frame() in faad_song_duration()
...
Eliminate more duplicate code.
2014-07-12 00:18:02 +02:00
Max Kellermann
54b6f8a4ae
decoder/faad: test "seekable" after ADTS frame check
...
Don't bother to check for ADIF just because the stream is not
seekable.
2014-07-12 00:17:51 +02:00
Max Kellermann
18787ebe8f
decoder/faad: move code to faad_decoder_new()
...
Merge some duplicate code.
2014-07-12 00:17:43 +02:00
Max Kellermann
47e8fcf37e
decoder/faad: remove unnecessary read
...
Eliminate some overhead when the caller doesn't need the buffer.
2014-07-12 00:17:30 +02:00
Max Kellermann
5958b78459
DecoderBuffer: add "pure" attributes
2014-07-12 00:16:41 +02:00
Max Kellermann
9d9697b366
DecoderBuffer: add method _clear()
2014-07-12 00:15:35 +02:00
Max Kellermann
6585e18571
decoder/faad: check sample_rate, not frames_per_second
...
Checking the integer is faster, easier and more reliable.
2014-07-11 23:12:08 +02:00
Max Kellermann
6f1b4292f0
decoder/faad: make variables more local
2014-07-11 22:52:31 +02:00
Max Kellermann
ef9ef03b1f
decoder/faad: use MAX_CHANNELS
...
.. instead of declaring a new constant.
2014-07-11 22:40:28 +02:00
Max Kellermann
c4bea3dfe4
decoder/sndfile: implement scan_stream() instead of scan_file()
2014-07-11 22:09:35 +02:00
Max Kellermann
eaa9a1e33b
decoder/sndfile: make variables more local
2014-07-11 22:03:26 +02:00
Max Kellermann
3e19298c9e
decoder/sndfile: support more tag types
2014-07-11 22:03:13 +02:00
Max Kellermann
2a96ce97ee
decoder/sndfile: add str_type to TagType table
2014-07-11 21:57:41 +02:00
Max Kellermann
8cfe901391
decoder/sndfile: move code to sndfile_handle_tag()
2014-07-11 21:56:02 +02:00
Max Kellermann
30f1ee7a1f
decoder/sndfile: log libsndfile version on startup
2014-07-11 21:53:03 +02:00
Max Kellermann
46ff830daa
PlaylistEdit: fix typo in code comment
2014-07-11 21:37:06 +02:00
Max Kellermann
828cd6fd0b
Merge branch 'v0.18.x'
2014-07-11 21:33:50 +02:00
Max Kellermann
ecb67a1ed1
decoder/sndfile: use decoder_read_full()
...
Replaces the loop in sndfile_vio_read(), eliminating duplicate and
fragile code.
2014-07-11 21:18:44 +02:00
Max Kellermann
0ef843f138
decoder/sndfile: use decoder_read()
...
.. instead of InputStream::LockRead(). The former is cancellable.
2014-07-11 21:18:44 +02:00
Max Kellermann
eb79d83051
decoder/sndfile: log seek errors
2014-07-11 21:18:44 +02:00
Max Kellermann
ca1a11493d
decoder/audiofile: log seek errors
2014-07-11 21:18:44 +02:00
Max Kellermann
69bb086ba5
decoder/audiofile: fix typo in comment
2014-07-11 21:18:44 +02:00
Max Kellermann
11a5ee821b
PlaylistEdit: postpone UpdateQueuedSong() when adding multiple songs
...
Implement a "bulk" edit mode that postpones both UpdateQueuedSong()
and OnModified(). This way, the playlist version gets incremented
only once. More importantly: when adding multiple songs to a queue
that consists of only one song, the first song that got added will
always be played next. By postponing this choice, all newly added
songs get a chance to become the next song. Fixes the second (and
last) part of Mantis ticket 0004005.
2014-07-11 20:22:35 +02:00
Max Kellermann
a8a85143f6
QueueCommands: make "result" more local
2014-07-11 20:22:35 +02:00
Max Kellermann
e2cc328eef
Playlist: randomize next song when enabling "random" mode while not playing
...
Don't restore the current song after shufflung when MPD is stopped
(but still remembers the current song internally). Fixes the first
part of Mantis ticket 0004005.
2014-07-11 19:41:39 +02:00
Max Kellermann
344d10a8e3
PlaylistControl: update code comment
2014-07-11 19:29:25 +02:00
Max Kellermann
681643ea9e
input/curl: options "verify_peer" and "verify_host"
2014-07-11 16:39:42 +02:00
Max Kellermann
fa947e02ca
test/FakeDecoderAPI: dump MixRamp data
2014-07-11 08:54:29 +02:00
Mantas Mikulėnas
cd289843f7
fs/StandardDirectory: look for cache dir in environment, not user-dirs
...
The XDG cache directory is part of the "base directories" spec like
$XDG_CONFIG_HOME, not "user directories".
2014-07-11 08:09:19 +02:00
Max Kellermann
b123392592
input/async: more API documentation
2014-07-10 10:33:43 +02:00
Max Kellermann
ccbb5c3e01
decoder/audiofile: log libaudiofile errors
2014-07-10 09:37:43 +02:00
Max Kellermann
49b63e084f
decoder/audiofile: make variables more local
2014-07-10 09:26:12 +02:00
Max Kellermann
107321e385
decoder/audiofile: implement scan_stream() instead of scan_file()
2014-07-10 09:23:56 +02:00
Max Kellermann
1d214b4aed
decoder/audiofile: use audiofile_get_duration() in _stream_decode()
2014-07-10 08:35:24 +02:00
Max Kellermann
2e1347aba4
decoder/audiofile: split audiofile_get_duration()
2014-07-10 08:31:41 +02:00
Max Kellermann
9ddb5931fb
decoder/audiofile: remove unused Error variable
2014-07-09 20:03:11 +02:00
Max Kellermann
913064d6cc
Merge branch 'v0.18.x'
2014-07-09 20:02:07 +02:00
Gustavo Zacarias
fb45b8a5c9
playlist/plugins/DespotifyPlaylistPlugin: 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
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
Gustavo Zacarias
0e39b59700
decoder/plugins/FlacIOHandle: 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
Max Kellermann
552af5455e
decoder/dsdlib: use decoder_skip()
...
Reduce duplicate code.
2014-07-09 19:42:36 +02:00
Max Kellermann
8759bc1b41
decoder/dsdlib: pass unsigned offsets to dsdlib_skip*()
2014-07-09 19:39:10 +02:00
Joff
09384df32c
decoder/dsd: use decoder_read_full() where appropriate
...
Addresses Mantis ticket 0004015.
[mk: use decoder_read_full() only when needed, and a few formal
changes]
2014-07-09 19:18:36 +02:00
Max Kellermann
20538516b9
decoder/audiofile: use decoder_read_full()
...
Works around WAV stream playback bug, because libaudiofile does not
like partial reads (Mantis 0004028).
2014-07-09 19:05:20 +02:00
Max Kellermann
0759421d11
DecoderAPI: add function decoder_read_full()
...
Move code from the "mad" plugin.
2014-07-09 19:03:58 +02:00
Max Kellermann
bf7417981f
DecoderAPI: add function decoder_skip()
...
Move code from the "mad" plugin.
2014-07-09 19:03:31 +02:00
Max Kellermann
dba41e2e4a
test: merge duplicate code to FakeDecoderAPI.cxx
2014-07-09 19:01:38 +02:00
Max Kellermann
bc6472bb9e
decoder/audiofile: use decoder_read()
...
.. instead of InputStream::LockRead(). The former is cancellable.
2014-07-09 18:57:50 +02:00
Gustavo Zacarias
d4bd947bf5
playlist/PlsPlaylistPlugin: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar >
2014-07-09 17:41:31 +02:00
Gustavo Zacarias
d8e8eabf60
output/HttpdClient: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar >
2014-07-09 17:41:31 +02:00
Gustavo Zacarias
a70443af31
decoder/OpusDecoderPlugin: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar >
2014-07-09 17:41:31 +02:00
Gustavo Zacarias
3f221e2edb
decoder/AudiofileDecoderPlugin: fix build failure due to missing stdio.h include
...
Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar >
2014-07-09 17:41:31 +02:00
Max Kellermann
56504534d8
thread/{Mutex,Cond}: relicense to BSD-2
2014-07-02 20:09:39 +02:00
Max Kellermann
80a45c91f9
thread/GLib{Mutex,Cond}: remove obsolete classes
2014-07-02 20:09:39 +02:00
Max Kellermann
3f695fdfaf
lib/nfs/Connection: include poll.h
2014-06-30 10:22:08 +02:00
Christoph Tieben
88433bca22
Added Comment/Description to decoder/plugins/XiphTags.cxx
2014-06-27 21:14:55 +02:00
Christoph Tieben
34689eb2d2
decoder: vorbis, flac, opus: honor DESCRIPTION= tag in Xiph-based files as a comment to the song
...
(see https://www.xiph.org/vorbis/doc/v-comment.html for Details)
2014-06-27 21:14:17 +02:00
Max Kellermann
211aea1441
util/ConstBuffer: add method skip_front()
2014-06-26 22:25:03 +02:00
Max Kellermann
74a46788cd
util/ConstBuffer: wrap assert() in NDEBUG check
...
Fixes build failure because assert.h was not included.
2014-06-26 13:31:48 +02:00
Max Kellermann
7213c26798
util/ConstBuffer: add method Contains()
2014-06-23 22:30:01 +02:00
Max Kellermann
fa1fb47d75
Merge branch 'v0.18.x'
2014-06-23 10:13:50 +02:00
Max Kellermann
848ed14788
db/proxy: fall back to recursive walk on old libmpdclient/MPD
...
Error message was 'too few arguments for "find"' because the "base"
constraint was not supported, and no other constraints remained.
2014-06-23 09:18:11 +02:00
Max Kellermann
4c8a5dfb05
db/proxy: use mpd_song_get_{start,end}() only with libmpdclient >= 2.3
2014-06-23 09:17:35 +02:00
Max Kellermann
4f61ba766d
configure.ac: prepare for 0.18.12
2014-06-23 09:14:35 +02:00
Max Kellermann
b9eeb6e6eb
db/proxy: use mpd_song_get_{start,end}() only with libmpdclient >= 2.3
2014-06-23 08:57:51 +02:00
Max Kellermann
d5fa2af353
input/async: use IsEOF() instead of !open for "ready" check
...
Checking "!open" did not work with the NFS plugin because that plugin
does not close the file automatically, unlike CURL.
2014-06-21 14:13:31 +02:00
Max Kellermann
a877926f08
Revert "AsyncInputStream: fix assertion failure in AppendToBuffer()"
...
This reverts commit 966c4244cb .
The commit was bad, because the bug was really in
NfsInputStream::DoRead(); see previous commit.
2014-06-21 14:07:15 +02:00
Max Kellermann
3e4e6f7ced
input/nfs: never read more than space available in buffer
...
Avoids off-by-one bug and obsoletes the bug fix in commit 966c4244
2014-06-21 14:06:31 +02:00
Max Kellermann
936eb43c0e
db/proxy: initialize LightSong::real_uri
...
Fixes potential crash.
2014-06-21 12:37:23 +02:00
Max Kellermann
bb66cfa780
android build 4
2014-06-21 12:21:19 +02:00
Max Kellermann
1d626cb6ac
android/build.py: add Boost
2014-06-21 12:06:58 +02:00
Max Kellermann
580346f4a7
android/build.py: upgrade CURL to 7.37.0
2014-06-21 12:06:58 +02:00
Max Kellermann
0fbcf64108
android/build.py: upgrade ffmpeg to 2.2.3
2014-06-21 11:38:43 +02:00
Max Kellermann
267faa3851
android/build.py: upgrade libogg to 1.3.2
2014-06-21 11:36:31 +02:00
Max Kellermann
fe50481f7b
android/build.py: remove unused parameter from class FfmpegProject
2014-06-21 11:04:54 +02:00
nanotech
759616abd4
Makefile.am: use ICU_CFLAGS
2014-06-17 10:38:50 +02:00
Max Kellermann
eb8fd07900
lib/nfs/Manager: gcc 4.7 compatibility hack
...
std::map::emplace() is only available from gcc 4.8 on.
2014-06-17 10:35:34 +02:00
Max Kellermann
c99559dbe9
input/nfs: use the asynchronous libnfs API
...
More robust and cancellable.
2014-06-17 03:21:25 +02:00
Max Kellermann
966c4244cb
AsyncInputStream: fix assertion failure in AppendToBuffer()
2014-06-17 03:21:11 +02:00
Max Kellermann
81283f8bcb
AsyncInputStream: reset "paused" when seeking
...
May cause assertion failure.
2014-06-17 03:20:49 +02:00
Max Kellermann
8b84e5b3f9
input/curl: hold mutex while writing to postponed_error
2014-06-17 02:32:17 +02:00
Max Kellermann
e1d5ddb478
input/AsyncInputStream: add method IsBufferFull()
2014-06-17 02:32:17 +02:00
Max Kellermann
2da0322329
command: make argc unsigned
2014-06-16 19:50:34 +02:00
Max Kellermann
fefb35c782
Directory: eliminate attribute "have_stat"
...
Check for 0 in "device" and "inode" instead.
2014-06-16 19:46:35 +02:00
Max Kellermann
b2433a664c
TagPool: move code to tag_value_slot_p()
2014-06-16 19:26:26 +02:00
Max Kellermann
adad4279f3
TagPool: convert macro to constexpr
2014-06-16 19:18:10 +02:00
Max Kellermann
3ca0a39a35
db/simple: use class boost::intrusive::list
...
Remove the C list_head library and use type-safe C++ instead.
2014-06-16 18:39:16 +02:00
Max Kellermann
52594e64d0
configure.ac: disable exceptions only with Boost 1.54 or newer
...
See https://svn.boost.org/trac/boost/ticket/7849
2014-06-16 18:39:16 +02:00
Max Kellermann
3364c1b893
ClientList: use class boost::intrusive::list
...
Eliminate extra allocations for the std::list node instances.
2014-06-11 09:27:17 +02:00
Max Kellermann
0801b3f495
configure.ac: check for Boost
2014-06-11 09:27:17 +02:00
Max Kellermann
657f00fe36
m4: update to pkg-config 0.28
2014-06-11 09:27:17 +02:00
Max Kellermann
044c81b644
m4: update to autoconf-archive 20140228
2014-06-11 08:08:33 +02:00
Max Kellermann
507d8fdc6f
ClientList: add typedef List
2014-06-10 23:21:09 +02:00
Max Kellermann
31e29e62f4
zeroconf/Avahi: call dbus_shutdown() during shutdown
...
Make valgrind happy.
2014-06-10 23:21:09 +02:00
Max Kellermann
dfcb572985
Main: delete the Storage instance on shutdown
2014-06-10 23:21:09 +02:00
Max Kellermann
1d324176d1
lib/icu/Init: call u_init() and u_cleanup()
...
Make valgrind happy.
2014-06-10 23:21:09 +02:00
Max Kellermann
37b3190752
lib/icu: add IcuInit(), IcuFinish()
2014-06-10 23:21:09 +02:00
Max Kellermann
d51265d48f
valgrind.suppressions: more library suppressions
2014-06-10 23:21:09 +02:00
Max Kellermann
dc14ac7a8f
thread/Util: relicense to BSD-2
2014-05-31 12:11:53 +02:00
Max Kellermann
fb52a24da3
input/async: add offset/size comparison to IsEOF()
2014-05-24 15:19:22 +02:00
Max Kellermann
fbafb19657
input/curl: move code to AsyncInputStream
...
New base class for other InputStream implementations that run in the
I/O thread.
2014-05-24 14:36:28 +02:00
Max Kellermann
6c4438d8a9
input/curl: call SetReady() only if not yet ready
...
Fixes assertion failure.
2014-05-24 14:36:25 +02:00
Max Kellermann
be00737ced
input/curl: include cleanup
2014-05-24 12:43:48 +02:00
Max Kellermann
07b93dcf80
InputStream: make Seek() always absolute
...
Remove the "whence" parameter that is not actually necessary, and only
complicates the InputStream implementations.
2014-05-22 13:52:00 +02:00
Max Kellermann
374c6a27db
decoder/vorbis: make VorbisInputStream::input_stream a reference
2014-05-22 13:52:00 +02:00
Max Kellermann
36c9e95969
decoder/vorbis: add VorbisInputStream constructor
2014-05-22 13:52:00 +02:00
Max Kellermann
a3142ee4e6
decoder/vorbis: rename struct vorbis_input_stream to VorbisInputStream
2014-05-22 13:52:00 +02:00
Max Kellermann
437caeb90f
decoder/vorbis: add "restrict" to pointers in vorbis_interleave()
...
Allows more compiler optimizations.
2014-05-22 13:52:00 +02:00
Max Kellermann
af49cace8d
decoder/vorbis: log libvorbis version on startup
2014-05-22 13:52:00 +02:00
Max Kellermann
13b78d0d89
decoder/wavpack: move code to WavpackInput::ReadBytes()
2014-05-22 12:54:56 +02:00
Max Kellermann
65c135b451
decoder/wavpack: convert WavpackInput attributes to references
2014-05-22 12:52:33 +02:00
Max Kellermann
ec162f265f
decoder/wavpack: move wavpack_input_init into struct WavpackInput
2014-05-22 12:47:20 +02:00
Max Kellermann
ba99696771
decoder/wavpack: wavpack_open_wvc() returns WavpackInput*
2014-05-22 12:36:55 +02:00
Max Kellermann
4eeea640f4
DecoderAPI: add function decoder_open_uri()
...
Move and refactor code from the Wavpack decoder plugin.
2014-05-22 12:35:20 +02:00
Max Kellermann
cc6f1020d0
test/run_decoder: merge code into FakeDecoderAPI.cxx
...
Eliminate duplicate code.
2014-05-22 12:35:20 +02:00
Max Kellermann
316ddc2382
test/run_decoder: auto-initialize struct Decoder
2014-05-22 12:35:20 +02:00
Max Kellermann
3452625fac
Makefile.am: link test_rewind with GLib
2014-05-22 12:35:20 +02:00
Max Kellermann
426e0105a6
test/run_decoder: move the "uri" attribute out of struct Decoder
2014-05-22 11:17:11 +02:00
Max Kellermann
18f39aa012
test/run_decoder: move the DecoderPlugin pointer out of struct Decoder
2014-05-22 11:14:01 +02:00
Max Kellermann
631b635652
decoder/wavpack: rename struct wavpack_input to WavpackInput
2014-05-22 10:52:34 +02:00
Max Kellermann
49695d47d3
input/curl: relock mutex in error paths
2014-05-21 19:00:47 +02:00
Max Kellermann
5cec477131
input/curl: pass remaining size to CircularBuffer::Append()
2014-05-21 18:59:51 +02:00
Max Kellermann
a5d0300787
input/curl: move code to IcyInputStream
2014-05-21 18:47:49 +02:00
Max Kellermann
09b84c51ee
input/rewind: move code to class ProxyInputStream
2014-05-21 18:47:49 +02:00
Max Kellermann
afe53997bf
test/test_rewind: unit test for class RewindInputStream
2014-05-21 18:47:40 +02:00
Max Kellermann
c42e412c0a
input/InputStream: move Open() to Open.cxx
...
Allow compiling test programs with only selected plugins.
2014-05-21 18:47:32 +02:00
Max Kellermann
542e7feba8
input/rewind: include cleanup
2014-05-21 18:47:22 +02:00
Max Kellermann
dc085e0bd2
input/rewind: work around assertion failure
...
Caused by commit 0b4fa41a
2014-05-21 18:47:12 +02:00
Max Kellermann
7c9517343c
ThreadInputStream: include cleanup
2014-05-12 19:04:32 +02:00
Max Kellermann
0b4fa41aff
InputStream: "protect" attributes
2014-05-12 18:59:46 +02:00
Max Kellermann
e138e2c880
input/cdio: convert to class
2014-05-12 18:59:25 +02:00
Max Kellermann
0d6345e98b
input/cdio: move initialization code to constructor
...
Make attributes const, don't allow partial initialization.
Instantiate the CdioParanoiaInputStream object at the end of
input_cdio_open().
2014-05-12 18:54:05 +02:00
Max Kellermann
a84bcf597d
input/cdio: handle cdio_open() failure
2014-05-12 18:53:47 +02:00
Max Kellermann
4bbd4ba855
input/cdio: initialize lsn_relofs in constructor
2014-05-12 18:48:16 +02:00
Max Kellermann
9e5b56b475
input/cdio: initialize attribute "buffer_lsn"
2014-05-12 18:47:27 +02:00
Max Kellermann
dd383037fd
input/cdio: remove unused attribute "trackno"
2014-05-12 18:41:45 +02:00
Max Kellermann
3cd24c0a51
Merge tag 'v0.18.11'
2014-05-12 18:38:45 +02:00
Max Kellermann
8bfdb4ed0c
release v0.18.11
2014-05-12 18:20:26 +02:00
Max Kellermann
41507d8129
icu/Collate: use u_strFoldCase() instead of ucol_getSortKey()
...
Turns out ucol_getSortKey() does not what I thought it does.
2014-05-12 14:43:30 +02:00
Max Kellermann
317a98a5a9
icu/Collate: UCharFromUTF8() returns WritableBuffer<UChar>
2014-05-12 14:39:40 +02:00
Max Kellermann
1395794923
icu/Collate: initialize error_code
...
Fixes the broken "search" command.
2014-05-12 14:13:09 +02:00
Max Kellermann
073e9d06ec
mixer/software: keep attribute "volume" in the 0..100 range
...
The attribute must be 0..100 and not 0..1024. Previously, the code
was inconsistent.
2014-05-12 12:46:14 +02:00
Max Kellermann
fd1b04932a
InputStream: remove attribute "plugin"
2014-05-11 18:25:55 +02:00
Max Kellermann
d4b625b48e
InputStream: make various methods abstract
...
Replace InputPlugin attributes.
2014-05-11 17:14:49 +02:00
Max Kellermann
82337dec44
InputStream: add virtual destructor
...
Replaces the method Close().
2014-05-11 17:12:50 +02:00
Max Kellermann
f1d0700252
input/plugins: make InputStream the base class
...
Prepare for adding virtual methods.
2014-05-11 17:12:50 +02:00
Max Kellermann
e1383a2d8e
input/rewind: convert to class
2014-05-11 17:12:50 +02:00
Max Kellermann
6773adc771
InputStream: convert to class
2014-05-11 15:34:48 +02:00
Max Kellermann
ee2afb35dd
Makefile.am: add variable NFS_SOURCES
2014-05-11 14:49:36 +02:00
Max Kellermann
0adcda387a
PlaylistCommands: remove redundant playlist_load_spl() call
...
This case is handled already by playlist_open_in_playlist_dir() (via
playlist_mapper_open()). And the call didn't work anyway.
2014-05-10 19:02:33 +02:00
Max Kellermann
fc1664d9fc
PlaylistMapper: use map_spl_utf8_to_fs()
...
Eliminates some overhead and some duplicate code, and fixes a serious
bug: the old code did not append the ".m3u" suffix, and thus the
"load" command was completely broken for stored playlists. D'oh!
2014-05-10 19:00:46 +02:00
Max Kellermann
70bd35abe2
decoder/OggUtil: allow skipping up to 32 kB after seek
...
Fixes missing song length on high-latency Opus files.
According to tests with 320 kbit/s opus files with 60ms packets, we
need to skip up to 29 kB.
2014-04-29 11:56:05 +02:00
Max Kellermann
12768babdf
doc/protocol.xml: add warning to "listall" and "listallinfo"
2014-04-29 10:31:14 +02:00
Max Kellermann
bc2a1160b8
db/Count: implement grouping
2014-04-27 22:27:43 +02:00
Max Kellermann
75542e8f5d
db/Count: add constructor
2014-04-27 22:27:28 +02:00
Max Kellermann
fcb55f841a
DatabasePrint: move PrintSongCount() to Count.cxx
2014-04-26 22:59:21 +02:00
Max Kellermann
0efb67b51e
DeferredMonitor: fix race condition when using GLib event loop
...
Turns out the lock-free code using atomics was not thread-safe. The
given callback could be invoked by GLib before the source_id attribute
was assigned. This commit changes the DeferredMonitor class to use a
Mutex to block the event loop until source_id is assigned. This bug
does not exist in the 0.19 branch because it does not use the GLib
main loop anymore.
2014-04-26 22:11:23 +02:00
Max Kellermann
54ebf2a699
configure.ac: prepare for 0.18.11
2014-04-26 22:08:08 +02:00
Max Kellermann
154e601f4e
db/Helpers: split library
2014-04-25 18:39:21 +02:00
Max Kellermann
4cca75b2e1
DatabasePrint: refactor variable/function names
2014-04-25 18:36:07 +02:00
Max Kellermann
6d616e55ae
LogInit: fix file descriptor leak in SIGHUP handler
2014-04-25 12:31:06 +02:00
Max Kellermann
95b1a640b6
DatabaseCommands: disallow "grouping" by the selected tag
...
Fixes assertion failure.
2014-04-25 11:28:17 +02:00
Max Kellermann
ecc12c9ba1
db/Helpers: move code to tag/Set.cxx
2014-04-24 18:32:23 +02:00
Max Kellermann
9e50993c13
db/Helpers: move TagSet to dedicated header
2014-04-24 18:18:26 +02:00
Max Kellermann
b32ec857b1
db/Helpers: use set::emplace()
2014-04-24 18:17:07 +02:00
Max Kellermann
0de42d56fc
DatabasePrint: eliminate printAllIn(), printInfoForAllIn()
2014-04-24 18:09:39 +02:00
Max Kellermann
6378ad69bb
DatabasePrint: merge adjacent client_printf() calls
2014-04-24 18:07:12 +02:00
Max Kellermann
9616e9bf3b
DatabasePrint: pass const SearchStats reference
2014-04-24 18:06:46 +02:00
Max Kellermann
7c8b73bffb
DatabasePrint: use unsigned counts
2014-04-24 18:06:26 +02:00
Max Kellermann
ae178c77bd
DatabaseCommands: "list" allows grouping
2014-04-24 11:38:49 +02:00
Max Kellermann
2220651253
TagBuilder: add method AddEmptyItem()
2014-04-24 11:38:48 +02:00
Max Kellermann
7fdd801479
DatabaseCommands: simplify the handle_list() argument parser
2014-04-24 11:38:48 +02:00
Max Kellermann
27002ad1ea
db/Helpers: "list" on album artist falls back to the artist tag
2014-04-24 10:48:52 +02:00
Max Kellermann
986dd2fac1
db/Helpers: move code to CheckUniqueTag()
2014-04-24 10:47:53 +02:00
Max Kellermann
3965b490a9
db/Helpers: use reference instead of pointer
2014-04-24 10:31:19 +02:00
Max Kellermann
b999e16406
SongFilter: convert argv to ConstBuffer
2014-04-24 09:59:59 +02:00
Max Kellermann
7fb9bebd46
util/{Const,Writable}Buffer: add front(), back(), pop_{front,back}(), shift()
2014-04-24 09:50:19 +02:00
Max Kellermann
3b8a9dd6ec
util/{Const,Writable}Buffer: add typedef reference_type
2014-04-24 09:47:59 +02:00
Max Kellermann
cfbee59152
doc/protocol.xml: change "in" to "base"
2014-04-24 09:37:31 +02:00
Max Kellermann
b4db28fed2
doc/protocol.xml: update and fix command "list"
2014-04-24 08:20:38 +02:00
Max Kellermann
c9aec3e866
DatabaseCommands: fix crash on "list base"
...
The string "base" is understood by locate_parse_type(), but not by
listAllUniqueTags(). The special tag type LOCATE_TAG_BASE_TYPE causes
a crash in PrintUniqueTag().
2014-04-24 08:19:08 +02:00
Max Kellermann
1d1f8be260
DatabasePrint: convert "type" to unsigned
2014-04-24 08:18:41 +02:00
Max Kellermann
38e6c0ad3f
DatabaseCommands: clarify compatibility comment
2014-04-24 08:11:06 +02:00
Max Kellermann
7ecf4ad54d
input/nfs: add missing string.h include
...
For strrchr(). Fixes build failure.
2014-04-23 12:53:19 +02:00
Max Kellermann
1c02b4b9f4
Merge tag 'release-0.18.10'
2014-04-10 13:49:20 +02:00
Max Kellermann
d0119548c1
release v0.18.10
2014-04-10 13:36:38 +02:00
Marcello Desantis
95ac6071b9
decoder/sndfile: work around libsndfile bug on partial read
2014-04-09 23:58:56 +02:00
Weng Xuetian
3a4e667078
PlaylistEdit: don't interrupt playback when current song gets deleted
2014-04-09 23:10:14 +02:00
Max Kellermann
afdefefbe4
icu/Collate: fix memory leak in IcuCaseFold()
2014-04-09 20:09:34 +02:00
Max Kellermann
5360c0c588
IOThread: make io_thread_get() "const"
2014-04-05 09:26:45 +02:00
Max Kellermann
74a05a7f53
pcm/Neon: explicit rounding
...
Convert to 31 bit first, then right-shift with rounding to 16 bit.
2014-03-19 06:54:06 +01:00
Max Kellermann
a68acf5c66
util/ConstBuffer: add FromVoid(), ToVoid() to "void" specialization
...
Provide the full API.
2014-03-18 12:09:17 +01:00
Max Kellermann
ce18c36ed9
decoder/ffmpeg: handle unknown stream start time
2014-03-18 09:16:09 +01:00
Max Kellermann
8e39cf62e7
decoder/ffmpeg: pass AVSEEK_FLAG_ANY to av_seek_frame()
...
This corrects a major mistake from commit 724a59aa - there was one
small thing that commit was supposed to do, and it failed.
AV_TIME_BASE is not a seek flag.
2014-03-18 09:10:36 +01:00
Max Kellermann
707d379b97
input/mms: move blocking I/O to thread
2014-03-16 11:48:46 +01:00
Max Kellermann
88a0a48b03
input/BufferedInputStream: new wrapper for moving plugin to thread
2014-03-16 10:26:40 +01:00
Max Kellermann
d51b90a880
thread/Thread: make the destructor non-virtual
...
The class does not have any virtual methods, and thus the (debug-only)
destructor does not need to be virtual.
2014-03-16 10:26:23 +01:00
Max Kellermann
e9912bcf8a
input/alsa: don't initialize "seekable=false", "size=-1"
...
These are the default values already.
2014-03-16 09:52:17 +01:00
Max Kellermann
4a5cc9f610
test/run_decoder: use InputStream::OpenReady() instead of InputStream::Open()
2014-03-16 09:41:03 +01:00
Max Kellermann
e29fc62b68
test/{run_decoder,dump_playlist}: fix accidental search/replace hiccups
2014-03-16 09:41:03 +01:00
Max Kellermann
b55e1dcb5e
pcm/Neon: make neon_x4_b() variadic
2014-03-16 09:30:50 +01:00
Max Kellermann
6f4775a8ee
pcm/Neon: apply bit shift during float->int conversion
...
Avoid multiplication. This is a speedup of 20%.
2014-03-16 09:05:30 +01:00
Max Kellermann
c7e2f558a0
input/curl: use CircularBuffer
...
Replaces its own weird buffering code.
2014-03-16 00:35:28 +01:00
Max Kellermann
328860c8ba
util/CircularBuffer: add method GetSpace()
2014-03-16 00:28:42 +01:00
Max Kellermann
89ac111853
util/CircularBuffer: add method GetSize()
2014-03-16 00:27:18 +01:00
Max Kellermann
3d4f588a7f
util/CircularBuffer: rename GetSize() to GetCapacity()
2014-03-15 23:12:20 +01:00
Max Kellermann
8f74bf314d
input/curl: add method CurlInputStream::Open()
2014-03-15 22:56:05 +01:00
Max Kellermann
0dd5ebbdbe
input/curl: move _seek() into the CurlInputStream class
2014-03-15 22:42:37 +01:00
Max Kellermann
2ae60767a3
input/curl: move _easy_init() into the CurlInputStream class
2014-03-15 22:38:46 +01:00
Max Kellermann
64f31f70f9
input/curl: pass std::string&& to HeaderReceived()
...
Code simplification.
2014-03-15 22:02:59 +01:00
Max Kellermann
23eacbd132
input/curl: move code to CurlInputStream methods
2014-03-15 20:43:37 +01:00
Max Kellermann
e9f16fca96
input/curl: rename "error" to "error_buffer"
2014-03-15 20:43:17 +01:00
Max Kellermann
3d30de91f3
input/curl: rename struct input_curl to CurlInputStream
2014-03-15 20:38:08 +01:00
Max Kellermann
f68d2f7c7f
system/fd_util: export fd_set_cloexec()
2014-03-15 20:03:31 +01:00
Max Kellermann
f660d30138
util/CircularBuffer: new buffer class
2014-03-15 18:35:52 +01:00
Max Kellermann
b10276ff98
m4/ucred.m4: don't define _GNU_SOURCE
...
Not necessary anymore, because we enable this flag unconditionally
now.
2014-03-15 18:31:54 +01:00
Max Kellermann
7d353bbe2a
configure.ac: always define _GNU_SOURCE on Linux
...
Make sure glibc gives us all features.
2014-03-15 18:27:09 +01:00
Max Kellermann
5696f91a1e
pcm/PcmFormat: ARM NEON optimizations for float->s16
...
This is nearly 4 times faster than the "portable" algorithm.
2014-03-15 11:41:01 +01:00
Max Kellermann
3932e62fc7
test/test_pcm: replace 256 with prime number
...
Use some odd number that will expose problems with remaining samples
after optimized vector operations.
2014-03-15 10:53:13 +01:00
Max Kellermann
729304aef5
test/test_pcm_format: add unit test for float clamping
2014-03-15 10:00:47 +01:00
Max Kellermann
40cce050e7
test/test_pcm_all: move CPPUNIT_TEST_SUITE_REGISTRATION() to test_pcm_main.cxx
...
Run each unit test only once. Using CPPUNIT_TEST_SUITE_REGISTRATION
from within the header meant that each unit class was registered again
for each source file that includes the header.
2014-03-15 10:00:47 +01:00
Max Kellermann
bb6ee71f08
pcm/PcmFormat: don't use WritableBuffer
...
The previous commit eliminated the need for that.
2014-03-14 23:23:16 +01:00
Max Kellermann
0d0642fd67
pcm/PcmFormat: instantiate FloatToInteger<S32>
...
.. instead of reusing FloatToInteger<S24> and converting from S24 to
S32 in-place.
2014-03-14 23:21:20 +01:00
Max Kellermann
08e6cf3dd2
pcm/PcmFormat: eliminate more duplicate code with templates
...
Refactor the conversion functions to classes and pass an instance to
the new function AllocateConvert().
2014-03-14 20:54:09 +01:00
Max Kellermann
044134eba0
pcm/PcmFormat: eliminate local variable "bits"
2014-03-14 20:53:22 +01:00
Max Kellermann
9fa6fa522e
pcm/PcmFormat: remove obsolete AllocateFromFloat() overload
2014-03-14 20:53:14 +01:00
Pete Beardmore
d0cd98a63a
MultipleOutputs: ensure input_audio_format is zero-initialised
...
-fixes SIGABRT when mpd is started from a previously paused state
-regression introduced by commit: f5a923b9d1 :
'OutputAll: convert to class, move instance to class Partition'
-input_audio_format was previously declared using the static modifier
ensuring it was zero-initialised by default
-the current default-initialised input_audio_format contains garbage at
runtime which allows the AudioFormat.IsDefined() 'fail fast' test in
MultipleOutputs::Update to pass and the SIGABRT follows in
AudioOutput::Open when passed the invalid input_audio_format struct
-switching AudioFormat.IsDefined() for AudioFormat.IsValid() is an
alternative workaround
2014-03-14 20:27:21 +01:00
Max Kellermann
88eae9dabb
command/{storage,file}: suppress bogus format warnings on WIN32
2014-03-14 08:58:43 +01:00
Max Kellermann
f2f1801c25
db/proxy: check connect error before initializing SocketMonitor
...
Fixes crash bug because mpd_connection_get_async() was called without
a connection.
2014-03-06 13:35:42 +01:00
Max Kellermann
a9e351e00d
decoder/gme: fix memory leak in container_scan()
2014-03-06 13:12:39 +01:00
Max Kellermann
d65841a2db
configure.ac: prepare for 0.18.10
2014-03-06 13:08:30 +01:00
Pete Beardmore
9da57e7458
PulseOutputPlugin: avoid locking mainloop object from within mainloop thread
...
-fixes regression introduced by:
'8d6fedf8177d0d2ced81e6d93d35c368b2ac69db [PATCH] Mixer: add class MixerListener'
-listener.OnMixerVolumeChanged() called GetVolume() which attempted to acquire
the lock but as per 'pa_threaded_mainloop_lock()' documentation:
This function may not be called inside the event loop thread. Events that are
dispatched from the event loop thread are executed with this lock held
-this patch seperates the underlying action of GetVolume() into a new
GetVolumeInternal() function, to be called only when the lock is already held, as
is the case for the listener.OnMixerVolumeChanged() call
2014-03-05 17:17:41 +00:00
Pete Beardmore
3a3fb98f79
PulseOutputPlugin: set icon name
2014-03-04 15:18:30 +00:00
Max Kellermann
503ed9c331
Merge tag 'release-0.18.9'
2014-03-02 11:46:07 +01:00
Max Kellermann
2784d65618
release v0.18.9
2014-03-02 11:25:01 +01:00
Max Kellermann
47ea69233b
output/alsa: remove the obsolete Raspberry Pi workaround
...
Has been superseded by the previous commit.
2014-03-02 11:22:04 +01:00
Max Kellermann
a884e37de1
output/alsa: call snd_pcm_prepare() after snd_pcm_drop()
...
Don't wait for an optimistic write to fail. This is an improved
workaround for the infamous Raspberry Pi bug (see commit af991765 ).
It works much better and comes without the negative side effects. The
old workaround is now obsolete.
2014-03-02 11:12:25 +01:00
Max Kellermann
0102a8665a
event/SignalMonitor: fix build failure due to missing signal.h include
2014-03-02 10:21:31 +01:00
Max Kellermann
cb63189f6b
android build 3
2014-03-02 00:53:41 +01:00
Max Kellermann
d77c83f4ba
Main: auto-configure state file on Android
2014-03-02 00:35:37 +01:00
Max Kellermann
8cf3ac200b
Main: use getExternalStorageDirectory() for locating mpd.conf
2014-03-02 00:24:31 +01:00
Max Kellermann
477877406a
android/build.py: enable ffmpeg
2014-03-02 00:22:05 +01:00
Max Kellermann
2bf2f34b12
InputPlugin: allow init() to soft-fail
...
Add enum InputResult which is a tri-state. Input plugins may now fail
and just become unavailable.
2014-03-02 00:17:32 +01:00
Max Kellermann
7453c26ec4
thread/Name: fall back to prctl()
2014-03-01 23:58:59 +01:00
Max Kellermann
b059ba69d6
output/sles: support stereo
2014-03-01 23:05:44 +01:00
Max Kellermann
36ca57a54e
fs/StandardDirectory: add GetUserCacheDir()
...
Move code from CreateConfiguredDatabase() and add XDG support. This
implements an automatic Linux fallback for the setting "db_file" if
none was specified.
2014-03-01 22:51:51 +01:00
Max Kellermann
efa6678bcc
NEWS: add group "configuration"
2014-03-01 22:51:51 +01:00
Max Kellermann
b8f1850bba
db/Configured: store database file in cache directory
...
Add class Context which wraps the Android/Java Context class and add a
JNI wrapper for method Context.getCacheDir().
2014-03-01 22:20:28 +01:00
Max Kellermann
5268f55344
java/File: add method ToAbsolutePath() returning AllocatedPath
2014-03-01 20:53:39 +01:00
Max Kellermann
e44c9a000d
android/Environment: fix copyright header
...
Stole my own code from another project :-)
2014-03-01 20:22:22 +01:00
Max Kellermann
ffc926bda5
android/build.py: enable libid3tag
2014-03-01 19:18:50 +01:00
Max Kellermann
07c1ba1f5e
TagId3: disable charset conversion without GLib
2014-03-01 19:18:50 +01:00
Max Kellermann
14168eadb2
Main: inline mpd_main() on Android
2014-03-01 19:09:31 +01:00
Max Kellermann
58771fc41c
Android: obtain music directory from Environment.getExternalStoragePublicDirectory()
2014-03-01 18:48:20 +01:00
Max Kellermann
1e06c66c77
java: new helper library for the Android port
2014-03-01 18:48:20 +01:00
Max Kellermann
c73771e3ce
Main: load mpd.conf from /sdcard/ on Android
...
Hard-coded path. Will be replaced soon.
2014-03-01 18:48:20 +01:00
Max Kellermann
350d2bcd6e
storage/Configured: fix fallback music directory
...
This was accidently disabled when storage plugins were introduced.
2014-03-01 18:45:09 +01:00
Max Kellermann
b2c523e56d
android: use "strip" from the Android NDK
2014-03-01 08:52:28 +01:00
Max Kellermann
5bc5abf0e7
android: enable database plugins
2014-03-01 08:25:23 +01:00
Max Kellermann
44352e9ee4
Makefile.am: use Android API level 17
...
The SDK for level 9 cannot be downloaded anymore.
2014-03-01 08:24:49 +01:00
Max Kellermann
7ccc609da2
db/update/ExcludeList: make no-op if GLib is disabled
...
Quick hack to allow using the database without GLib (for Android).
2014-03-01 08:16:13 +01:00
Max Kellermann
ebc0168072
android: downgrade WRITE_EXTERNAL_STORAGE to READ_EXTERNAL_STORAGE
...
We're not using external storage yet, but as soon as we will, we only
need to read music files, not write them.
2014-03-01 07:58:01 +01:00
Max Kellermann
4ba7427fa0
util/{Const,Writable}Buffer: add operator[]
2014-03-01 07:49:13 +01:00
Max Kellermann
9dc5335e3e
util/{Const,Writable}Buffer: add template specialization for "void"
...
Omit a few methods that are not applicable.
2014-03-01 07:37:58 +01:00
Max Kellermann
d333de1980
util/ConstBuffer: remove cast operator ConstBuffer<void>
...
This was bugged, because it did not scale the "size".
2014-03-01 07:37:20 +01:00
Max Kellermann
96afa8bd2b
command: add command "listfiles"
...
Lists files and directories. Supports storage plugins.
2014-03-01 06:25:57 +01:00
Max Kellermann
797bbeabeb
m4: add missing file ax_pthread.m4 from autoconf-archive
2014-03-01 06:24:55 +01:00
Max Kellermann
20cdab5546
DatabasePrint: move code to PrintDirectoryURI()
2014-02-28 08:21:34 +01:00
Max Kellermann
6765234b60
DatabasePrint: add API documentation
2014-02-28 08:17:25 +01:00
Max Kellermann
4c27898ce7
{Other,Database}Commands: contract declaration and assignment
2014-02-28 07:12:04 +01:00
Max Kellermann
d34ae0850c
AllCommands: "findadd" requires the "add" permission
2014-02-27 23:08:22 +01:00
Max Kellermann
e9a85aa4e4
db/simple: mount points
...
A SimpleDatabase instance can now "mount" other Database instances at
certain locations. This is used to use a new SimpleDatabase instance
for each storage mount (issued with the "mount" protocol command).
Each such instance has its own database file, stored in the directory
that is specified with the "cache_directory" option.
2014-02-27 20:49:13 +01:00
Max Kellermann
2a16fc74fd
CompositeStorage: add method GetMount()
2014-02-27 20:49:13 +01:00
Max Kellermann
f65254680a
db/update/Queue: use std::list instead of std::queue
...
The problem with std::queue is that it doesn't give us enough control.
The method Clear() is a kludge already, but soon, we'll need
filtering.
2014-02-27 20:49:13 +01:00
Max Kellermann
d64edb6896
db/simple: GetRoot() returns reference
2014-02-27 19:29:10 +01:00
Max Kellermann
3f9ad8e104
db/update/Service: allocate UpdateWalk dynamically
2014-02-27 18:04:24 +01:00
Max Kellermann
1c772ef699
Playlist: use the Error library to return errors
2014-02-27 17:27:23 +01:00
Max Kellermann
809b89b5af
Playlist*: move to queue/
2014-02-27 17:12:42 +01:00
Max Kellermann
681e012fb5
db/update: cancel the update on shutdown
2014-02-27 16:58:35 +01:00
Max Kellermann
3be36643a1
db/UpdateGlue: rename to Service.cxx
2014-02-27 16:14:10 +01:00
Max Kellermann
21e19ef69f
db/simple/Directory: eliminate method LookupSong()
...
Move to SimpleDatabase::GetSong() to give that method more control.
2014-02-26 20:10:31 +01:00
Max Kellermann
69a42fc901
db/simple/Directory: LookupDirectory() return remaining URI
...
Code can now be reused in LookupSong().
2014-02-26 19:50:46 +01:00
Max Kellermann
525789cd36
db/simple/Directory: make variables more local
2014-02-26 19:50:36 +01:00
Max Kellermann
367d660c08
db/Directory: add DEVICE_* documentation
2014-02-26 10:00:38 +01:00
Max Kellermann
4d73e4d605
db/simple: create dedicated directory
2014-02-26 09:17:41 +01:00
Max Kellermann
d86cc5bf42
db/Song: update API documentation for SimpleDatabasePlugin
2014-02-25 22:16:20 +01:00
Max Kellermann
5f262da09d
db/simple: remove unused method LookupDirectory()
2014-02-25 20:13:40 +01:00
Max Kellermann
82985a9488
db/simple: make internal methods "private"
2014-02-25 19:48:01 +01:00
Max Kellermann
afcdb65f80
db/simple: add comment
2014-02-25 18:17:54 +01:00
Max Kellermann
6b66e86f40
db/simple: move Create() up
2014-02-25 18:17:39 +01:00
Max Kellermann
cb145d290e
DirectorySave: save the flags "DEVICE_INARCHIVE" and "DEVICE_CONTAINER"
...
Helps avoid unnecessary archive scans during database update on a
fresh MPD process.
2014-02-25 18:16:19 +01:00
Max Kellermann
167803d2a1
DatabaseSave: increase DB_FORMAT version
2014-02-25 18:16:06 +01:00
Max Kellermann
58a981d2f6
DatabaseSave: add constant OLDEST_DB_FORMAT
2014-02-25 18:15:55 +01:00
Max Kellermann
8963cd1fab
DirectorySave: move code to ParseLine()
2014-02-25 18:15:43 +01:00
Max Kellermann
6526de024a
output/pulse: remove bogus g_free() call
2014-02-24 21:23:49 +01:00
Max Kellermann
55cd5a9a78
DirectorySave: save the mtime only if it is known
2014-02-24 21:17:06 +01:00
Max Kellermann
3f4c283203
icu/Collate: pass UErrorCode* to ucol_strcollUTF8()
...
Fixes crash after database update.
2014-02-24 21:05:44 +01:00
Max Kellermann
1e63e7c08b
icu/Collate: initialize the error code before ucol_open()
...
Fixes initialization failure.
2014-02-24 21:04:23 +01:00
Max Kellermann
33fc3af775
SongSort, ...: use libicu instead of GLib's g_utf8_*()
2014-02-24 20:39:37 +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
e99ff4fdbc
decoder/gme: use free() instead of g_free()
2014-02-24 20:19:34 +01:00
Max Kellermann
25431f32a2
DecoderPlugin: free the container_scan() return value with delete[]
2014-02-24 20:19:34 +01:00
Max Kellermann
6ba1fe7568
UriUtil: support ftp:// URLs in uri_remove_auth()
2014-02-24 19:59:53 +01:00
Max Kellermann
bfae92e307
Main: use INT_MAX instead of G_MAXUINT
2014-02-24 18:57:03 +01:00
Max Kellermann
9c5bf542d1
android/build.py: add project parameter "cppflags"
2014-02-24 09:33:23 +01:00
Max Kellermann
61161269d8
android/build.py: add parameter that specifies a subdirectory
2014-02-24 09:32:38 +01:00
Max Kellermann
8fe004e98e
fs/Charset: use "UTF-8" instead of "utf-8" as the default value
...
The upper-case name seems to be the canonical one.
2014-02-23 22:03:40 +01:00
Max Kellermann
09e5f17b5d
Directory: use PathTraitsUTF8::Build() instead of g_strconcat()
2014-02-23 22:02:39 +01:00
Max Kellermann
db20e29af6
Directory: pass std::string&& to constructor
2014-02-23 22:02:02 +01:00
Max Kellermann
5f5c95cc68
android build 2
2014-02-22 13:40:29 +01:00
Max Kellermann
68f3015712
android/build.py: add libopus
2014-02-22 13:40:11 +01:00
Max Kellermann
240a697f6c
encoder/opus: use xalloc() instead of g_malloc()
2014-02-22 13:40:11 +01:00
Max Kellermann
5a0dc808fd
decoder/opus: use new[] instead of g_malloc()
2014-02-22 13:37:36 +01:00
Max Kellermann
befbf6bf13
android/build.py: add libmad
2014-02-22 10:22:31 +01:00
Max Kellermann
2d5c21c457
android/build.py: add option "autogen"
2014-02-22 10:22:31 +01:00
Max Kellermann
25977d56c8
android/build.py: add -Iroot/include and -Lroot/lib
...
Allow library auto-detection without pkg-config.
2014-02-22 10:22:31 +01:00
Max Kellermann
4dcf0b8ae0
first Android release
...
Finally, MPD runs on Android. For some small value of "runs". Very
much work left, too much to describe.
2014-02-22 01:39:08 +01:00
Max Kellermann
9574d11dc8
output/sles: new output plugin for Android
2014-02-22 00:18:46 +01:00
Max Kellermann
3d4689756c
Main: disable command-line parser and signal handlers on Android
2014-02-22 00:18:46 +01:00
Max Kellermann
90114514a9
LogBackend: use __android_log_print() on Android
2014-02-22 00:18:46 +01:00
Max Kellermann
7757e59e78
input/curl: include cleanup
2014-02-22 00:18:29 +01:00
Max Kellermann
adb89e0121
Makefile.am: build shared library for Android
...
Doesn't work yet, just to get the Android port started.
2014-02-21 10:51:07 +01:00
Max Kellermann
b7a7953757
db/Directory: use "unsigned" for inode and device
...
This is what we get from the storage plugin via FileInfo. Fixes a
compiler warning on Mac OS X where dev_t appears to be signed.
2014-02-21 10:48:43 +01:00
Max Kellermann
d25ef7eea4
configure.ac: detect Android cross-build
...
Define "ANDROID" if the host operating system is Android.
2014-02-21 10:27:07 +01:00
Max Kellermann
30a82076ba
PlayerListener: new interface to replace GlobalEvents access
2014-02-21 10:22:35 +01:00
Max Kellermann
860339c132
Makefile.am: use AM_CPPFLAGS instead of src_mpd_CPPFLAGS
...
Fixes build failure caused by commit d9466cad0 .
2014-02-21 10:22:35 +01:00
Max Kellermann
008723c62f
ConfigGlobal: eliminate function config_get_next_param()
2014-02-20 00:04:23 +01:00
Max Kellermann
9e0ce23a03
test/run_{filter,output}: use config_find_block()
2014-02-20 00:04:23 +01:00
Max Kellermann
04ba433ca6
Main: initialize Partition before Listener
...
Fixes nullptr dereference (regression by commit df5f9f4a ).
2014-02-20 00:04:23 +01:00
Max Kellermann
d884272ba8
Listen: eliminate local variable
2014-02-19 23:50:47 +01:00
Max Kellermann
e609c88334
Listen: reduce overhead for builds without systemd
2014-02-19 23:49:34 +01:00
Max Kellermann
e92a41fa3a
db/upnp: move plugin source to upnp directory
2014-02-19 23:46:00 +01:00
Max Kellermann
df5f9f4a15
Listen: add Partition reference
2014-02-19 23:43:36 +01:00
Max Kellermann
d9466cad0e
Makefile.am: move the MPD core to libmpd.a
...
Prepare for providing everything in a shared library, to be embedded
in another process.
2014-02-19 23:41:07 +01:00
Max Kellermann
150443b014
DatabasePlugin: add FLAG_REQUIRE_STORAGE
...
Ignore the storage configuration if FLAG_REQUIRE_STORAGE is not set in
the DatabasePlugin.
2014-02-19 23:24:17 +01:00
Max Kellermann
9e36af7916
DatabasePlugin: add attribute "flags"
2014-02-19 23:24:15 +01:00
Max Kellermann
85b8675e7a
db/Interface: add attribute "plugin"
...
The new method IsPlugin() replaces the "is_simple" flag.
2014-02-19 23:17:21 +01:00
Max Kellermann
ae594ad92c
DatabasePlugin: split header
2014-02-19 22:54:52 +01:00
Max Kellermann
8d6fedf817
Mixer: add class MixerListener
...
Use a listener interface instead of GlobalEvents.
2014-02-19 21:40:14 +01:00
Max Kellermann
f4f8fa7c94
output/Init: pass AudioOutput references
2014-02-19 21:38:48 +01:00
Max Kellermann
fb5fbb8088
util/Tokenizer: relicense to BSD-2
2014-02-19 10:41:48 +01:00
Max Kellermann
e06a807d30
Makefile.am: move DatabaseSave.cxx to libdatabase_plugins.a
2014-02-19 10:13:42 +01:00
Max Kellermann
6b09842cb6
Makefile.am: re-add src/AudioCompress/compress.c to test/run_normalize
...
Build was broken by previous commit.
2014-02-19 10:13:31 +01:00
Max Kellermann
ca813389dc
Makefile.am: move AudioCompress to libfilter_plugins.a
2014-02-19 10:03:58 +01:00
Max Kellermann
e624171ba1
StickerCommands: include cleanup
2014-02-19 09:53:22 +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
1cc17bfe7a
cue/CueParser: move to playlist/
2014-02-19 08:56:58 +01:00
Max Kellermann
8ae492dfeb
Makefile.am: merge mpd_headers into src_mpd_SOURCES
2014-02-18 23:10:53 +01:00
Max Kellermann
e8789d7cb9
system/FatalError: remove GError support
2014-02-18 23:05:40 +01:00
Max Kellermann
0053cd0d0d
Main: disable inotify check without database
...
Fix build failure.
2014-02-18 21:47:01 +01:00
Max Kellermann
c32477a223
Merge branch 'v0.18.x'
2014-02-18 21:46:41 +01:00
Max Kellermann
5e1e92626c
event/SignalMonitor: unblock signals after fork
...
Fixes hanging child process in the "pipe" output plugin.
2014-02-18 19:13:50 +01:00
Max Kellermann
7fee85c80a
configure.ac: fix linker failure when libvorbis/libogg are static
...
Link libvorbisfile first, followed to libvorbis and finally libogg.
This order is necessary because libvorbisfile depends on libvorbis.
2014-02-18 18:39:19 +01:00
Max Kellermann
a0c25941a8
Thread/Util: use __NR_ioprio_set instead of SYS_ioprio_set
...
Bionic doesn't have the SYS_* macros.
2014-02-18 10:44:18 +01:00
Max Kellermann
5eb468bce0
Thread/Util: make SCHED_RESET_ON_FORK optional
...
Use it if it exists, but don't insist if the C library is poor
(e.g. Bionic/Android).
2014-02-18 10:43:24 +01:00
Max Kellermann
7f8dd0e939
Makefile.am: rename libdecoder_plugins.a to libdecoder.a
2014-02-18 10:02:46 +01:00
Max Kellermann
28701cb9dd
Makefile.am: remove unused variable DECODER_SRC
2014-02-18 10:01:37 +01:00
Max Kellermann
9b7f492c65
thread/Posix{Mutex,Cond}: disable "constexpr" on Android
...
Bionic's pthread declarations are non-literal.
2014-02-18 09:54:35 +01:00
Max Kellermann
6eda79d02d
system/EPollFD: add epoll_create1() fallback for Android
2014-02-18 09:54:35 +01:00
Max Kellermann
fb5cf8e3ac
.gitignore: add "/" prefixes
2014-02-18 09:41:25 +01:00
Max Kellermann
55e128cced
test: various fixups for building without GLib
2014-02-18 09:18:42 +01:00
Max Kellermann
13056af8b2
Makefile.am: disable test_icy_parser without CURL
2014-02-18 09:18:42 +01:00
Max Kellermann
972c52891d
configure.ac: check for libpthread
...
Required for building without GLib.
2014-02-18 09:18:42 +01:00
Max Kellermann
e10a8d95f6
PlaylistRegistry: disable the "pls" plugin without GLib
2014-02-18 09:18:42 +01:00
Max Kellermann
97f2be348c
LogInit: disable SetLogCharset() without GLib
2014-02-18 09:18:42 +01:00
Max Kellermann
2b21312b36
util/StringUtil: add StringEndsWith()
...
Replaces g_str_has_suffix().
2014-02-18 09:18:42 +01:00
Max Kellermann
3a818b6d45
SongFilter: disable g_utf8_casefold() without GLib
...
Temporary hack for the experimental no-GLib build.
2014-02-18 09:18:42 +01:00
Max Kellermann
1709ab6810
fs/TextFile: use custom allocation instead of GString
2014-02-17 23:04:10 +01:00
Max Kellermann
ce925ba56f
fs/Charset: disable if GLib is disabled
2014-02-17 22:48:26 +01:00
Max Kellermann
4ad14f6a2c
TagId3: use xstrdup() instead of g_strdup()
2014-02-17 22:42:54 +01:00
Max Kellermann
579e48edbb
util/StringUtil: add function Strip()
...
Replaces g_strstrip().
2014-02-17 22:37:43 +01:00
Max Kellermann
6a08f2281a
TagString: disable UTF-8 validation if GLib is disabled
2014-02-17 22:33:10 +01:00
Max Kellermann
91729437a0
Main: initialize Database before Storage
2014-02-17 22:14:00 +01:00
Max Kellermann
3af7af0b8f
Main: move code to InitDatabaseAndStorage()
2014-02-17 22:13:53 +01:00
Max Kellermann
1ddd00433e
db/Configured: disallow both "db_file" and "database"
...
This is misconfiguration, and MPD should abort.
2014-02-17 22:13:53 +01:00
Max Kellermann
de160bb2d1
Main: move code to db/Configured.cxx
2014-02-17 22:13:53 +01:00
Max Kellermann
ff62b6742b
Main: check if database exists before attempting to close it
...
Fixes nullptr dereference.
2014-02-17 22:13:53 +01:00
Max Kellermann
6da0af94df
db/DatabaseSimple: remove obsolete header
2014-02-17 20:44:03 +01:00
Max Kellermann
5d87a274a5
configure.ac: link the Vorbis encoder with libogg
...
Fixes another linker failure. Similar to commit ea406875
2014-02-17 19:42:38 +01:00
Max Kellermann
df9667a497
StorageCommands: add command "unmount"
2014-02-12 23:48:08 +01:00
Max Kellermann
e3e2ad4ae5
CompositeStorage: fix tree walk in Directory::Unmount()
2014-02-12 23:48:08 +01:00
Max Kellermann
ace4ba3171
StorageCommands: emit IDLE_MOUNT on successful "mount"
...
Add the new idle event to Idle.hxx/Idle.cxx.
2014-02-12 23:06:47 +01:00
Max Kellermann
0935ae330a
StorageCommands: add command "listmounts"
2014-02-12 21:47:59 +01:00
Max Kellermann
9e02b13ab3
systemd: add socket activation files
2014-02-12 21:22:36 +01:00
Max Kellermann
5a486a940c
systemd: assign real-time budget
2014-02-12 21:00:53 +01:00
Max Kellermann
d05ae4b444
util/HugeAllocator: relicense to BSD-2
2014-02-10 13:32:50 +01:00
Max Kellermann
73b0610d89
PlaylistSong: copy the "real" URI
...
Playback with some decoder plugins was broken because the Queue's
DetachedSong instances did not have the "real" URI (the mapped path).
2014-02-10 11:00:49 +01:00
Max Kellermann
57e862712a
configure.ac: prepare for 0.18.9
2014-02-09 22:58:14 +01:00
Max Kellermann
73aec9ce63
StorageCommands: expose the "mount" command
2014-02-09 11:07:08 +01:00
Max Kellermann
a9fefcf600
Main: wrap the Storage instance in CompositeStorage
2014-02-09 11:07:08 +01:00
Max Kellermann
59ce67e2e5
CompositeStorage: new Storage implementation
...
This is the backend for the upcoming "mount" command.
2014-02-09 10:47:29 +01:00
Max Kellermann
2182209a8a
db/update/Walk: disable FindAncestorLoop() if device/inode==0
2014-02-09 10:47:29 +01:00
Max Kellermann
e29a8b3a9c
db/update/Walk: document FindAncestorLoop()
2014-02-09 10:46:39 +01:00
Max Kellermann
ace3f37af4
db/update/Walk: rename find_inode_ancestor() to FindAncestorLoop()
2014-02-09 10:46:39 +01:00
Max Kellermann
37b6899660
Main: move code to storage/Configured.cxx
2014-02-09 08:09:47 +01:00
Max Kellermann
570b12ec13
Idle: error out when unrecognized idle event was specified
...
Implements the error checks missing in commit 0bad8406
2014-02-09 08:07:48 +01:00
Max Kellermann
ac286ef734
OtherCommands: remove unnecessary nullptr check
2014-02-09 08:07:43 +01:00
Max Kellermann
b3663b5da2
storage/nfs: new storage plugin
2014-02-08 14:24:47 +01:00
Max Kellermann
d761d8b168
input/nfs: move nfs_domain to lib/nfs/Domain.cxx
2014-02-08 14:24:47 +01:00
Max Kellermann
fe7c6fee34
ArchivePlugin: pass Path to open()
2014-02-08 13:25:44 +01:00
Max Kellermann
9906daeca7
ArchivePlugin: rename struct archive_plugin to ArchivePlugin
2014-02-08 13:22:13 +01:00
Max Kellermann
5fb54095d2
doc/user: document storage plugins
2014-02-08 00:09:53 +01:00
Max Kellermann
3fdc678aae
Main: support arbitrary storage plugins
2014-02-08 00:04:29 +01:00
Max Kellermann
a0088ccce1
storage: add struct StoragePlugin and a plugin registry
2014-02-07 23:46:15 +01:00
Max Kellermann
be081929f4
storage/local: remove utf8 path from constructor
...
Build the UTF-8 version of the path automatically in the constructor.
2014-02-07 23:41:06 +01:00
Max Kellermann
b0b086d473
Main: move storage initialization to InitStorage()
2014-02-07 23:37:39 +01:00
Max Kellermann
6798af52b6
Mapper: obtain music directory from Storage
...
Eliminate duplicate variable.
2014-02-07 23:34:29 +01:00
Max Kellermann
4d5ebafa6d
Main: check the music directory
...
Move call from Mapper.cxx.
2014-02-07 23:29:20 +01:00
Max Kellermann
ec8873b178
Mapper: move check_directory() to the filesystem library
2014-02-07 23:25:47 +01:00
Max Kellermann
c45f205593
Main: chop separators from music directory
...
Move call from Mapper.cxx.
2014-02-07 23:13:24 +01:00
Max Kellermann
027b2063ba
Mapper: remove unused functions
2014-02-07 23:03:25 +01:00
Max Kellermann
b531c4c2fe
OtherCommands: use Storage::MapUTF8() instead of Mapper.cxx
2014-02-07 22:58:21 +01:00
Max Kellermann
4b010df99e
Main: create Storage instance in glue_mapper_init()
...
Don't use the obsolete Mapper library to create it.
2014-02-07 22:54:18 +01:00
Max Kellermann
5e4dd4be9c
Main: allow playlist directory without music directory
2014-02-07 22:39:17 +01:00
Max Kellermann
04d5896c1c
NEWS: mention default soundcloud API key
...
Missing from commit 48c96bba
2014-02-07 22:38:04 +01:00
Max Kellermann
f947274626
InotifyUpdate: use class Storage instead of Mapper.cxx
2014-02-07 22:30:40 +01:00
Max Kellermann
f6939f71a7
InotifyUpdate: use the root name instead of mapper_get_music_directory_fs()
...
The root WatchDirectory instance already contains the music directory,
and we don't need to fetch it again.
2014-02-07 22:30:01 +01:00
Max Kellermann
25aa17ad89
InotifyUpdate: move functions into the WatchDirectory class
2014-02-07 22:24:26 +01:00
Max Kellermann
05ee057db5
InotifyUpdate: remove unnecessary #ifdefs
2014-02-07 22:17:27 +01:00
Max Kellermann
297e2747f3
PlaylistMapper: use class Storage instead of Mapper.cxx
2014-02-07 21:44:50 +01:00
Max Kellermann
77de233117
Playlist{Any,Registry,Mapper}: move functions to PlaylistStream.cxx
2014-02-07 21:30:49 +01:00
Max Kellermann
02b67edaf5
PlaylistSong: include cleanup
2014-02-07 21:30:03 +01:00
Max Kellermann
8549ccfd8c
playlist/CloseSongEnumerator: new wrapper class
...
Simplifies a lot of code, because we don't need to return both the
SongEnumerator and the InputStream.
2014-02-07 20:27:24 +01:00
Max Kellermann
ffd16b55a6
StoragePlugin: add method MapToRelativeUTF8()
...
Replaces map_to_relative_path() from Mapper.cxx.
2014-02-07 19:09:28 +01:00
Max Kellermann
d744c997d8
fs/Traits: add function Relative()
...
Move code from Path::RelativeFS() and make it generic.
2014-02-07 19:08:51 +01:00
Max Kellermann
6b421cc354
DecoderPlugin: pass Path instance to file_decode() and scan_file()
2014-02-07 18:52:19 +01:00
Max Kellermann
37ec29b225
Mapper: remove unused function map_song_fs()
2014-02-07 18:51:19 +01:00
Max Kellermann
ca7f6a26b5
DecoderThread: use only DetachedSong::GetRealURI()
...
Don't use the mapper - all DetachedSong instances we get have already
been mapped.
2014-02-07 18:50:07 +01:00
Max Kellermann
9b69d22d7e
DecoderThread: pass Path object around for local song files
2014-02-07 18:45:11 +01:00
Max Kellermann
4ab4cf8532
SongUpdate: pass Storage to UpdateFileInArchive()
2014-02-07 18:44:47 +01:00
Max Kellermann
3341b282b7
PlaylistSave: use DetachedSong::GetRealURI() in playlist_print_song()
...
The DetachedSong instance already knows its own absolute path, and
there is no need to ask the mapper again.
2014-02-07 18:42:16 +01:00
Max Kellermann
bb3b836dbb
FileCommands: support remove database files
2014-02-07 18:41:42 +01:00
Max Kellermann
1873c67540
FileCommands: use Storage::MapFS() instead of map_uri_fs()
2014-02-07 18:38:10 +01:00
Max Kellermann
8fd8f23a6b
FileCommands: move code to read_file_comments()
2014-02-07 18:33:43 +01:00
geneticdrift
f225051348
fixed possible format_context not closed in ffmpeg_decode
2014-02-07 12:07:43 +01:00
Max Kellermann
b2e3fdef0f
storage/local: hide the class declarations
...
Hide inside CreateLocalStorage().
2014-02-07 01:11:52 +01:00
Max Kellermann
c13810ebaa
Mapper: move map_song_detach() to db/DatabaseSong.cxx
...
Use Storage::MapUTF8() internally, don't use global variables.
2014-02-07 00:42:14 +01:00
Max Kellermann
19a982cf69
Mapper: convert IsInDatabase() check to assertion in map_song_detach()
2014-02-07 00:42:14 +01:00
Max Kellermann
746a47982b
Merge tag 'release-0.18.8'
2014-02-07 00:17:36 +01:00
Max Kellermann
ddb5390d88
release v0.18.8
2014-02-07 00:06:31 +01:00
Max Kellermann
fce20e514e
NEWS: fix 0.18.7 release year
2014-02-07 00:06:31 +01:00
Max Kellermann
327cbf48f5
pcm/FallbackResampler: add missing ConstBuffer<T>::ToVoid() call
2014-02-06 23:48:01 +01:00
geneticdrift
0f1f509be7
fixed leaked LocalDirectoryReader *const reader in UpdateWalk::UpdateDirectory
2014-02-06 23:08:24 +01:00
Max Kellermann
c8f0c7e9ed
*/smbclient: protect all libsmbclient calls with a mutex
...
libsmbclient is not thread-safe nor reentrant. We must protect all
function calls with a global mutex, unfortunately.
2014-02-06 22:19:59 +01:00
Max Kellermann
a7989077ab
neighbor/smbclient: move smbclient_domain to lib/smbclient/Domain.cxx
2014-02-06 22:12:50 +01:00
Max Kellermann
7e34737b2b
Makefile.am: add variable SMBCLIENT_SOURCES
2014-02-06 22:11:59 +01:00
Max Kellermann
af66ed2505
doc/user: document the RoarAudio output plugin
2014-02-06 21:46:29 +01:00
Max Kellermann
ea4068757d
configure.ac: link the Vorbis encoder with libvorbis
...
Since the encoder plugin uses a libvorbis function (and not only
libvorbisenc functions), we need to link with libvorbis explicitly.
2014-02-06 21:32:50 +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
e04090b477
Mixer: delete the implicit copy constructor
2014-02-06 20:52:25 +01:00
Max Kellermann
c9fb6f7bdb
Mixer: make the constructor "explicit"
2014-02-06 20:52:25 +01:00
Max Kellermann
ad6b05ae17
mixer/software: use IgnoreError()
2014-02-06 20:52:25 +01:00
Max Kellermann
29b18d9ab7
SongUpdate: use the Storage interface, support remote files
...
This commit finally allows the database update to scan remote files,
e.g. using the smbclient storage plugin. However, it is not yet
possible to configure that, therefore the feature is not accessible
yet.
2014-02-06 19:06:08 +01:00
Max Kellermann
ad309cdeae
SongUpdate: make variables more local
2014-02-06 18:58:56 +01:00
Max Kellermann
e4322a716c
input/nfs: new plugin using libnfs
2014-02-06 18:37:27 +01:00
Max Kellermann
90886c0760
doc/user: sort input plugins
2014-02-06 18:37:27 +01:00
Max Kellermann
957beeb0e9
storage/smbclient: Storage implementation using libsmbclient
2014-02-06 07:19:14 +01:00
Max Kellermann
522ad4cca6
Instance: narrow "storage" to class Storage
2014-02-06 07:19:14 +01:00
Max Kellermann
dc76b24e5f
storage/local: OpenDirectory() returns StorageDirectoryReader*
2014-02-05 19:35:41 +01:00
Max Kellermann
e3e3053f32
storage/Interface: explicitly delete copy constructors
2014-02-05 19:30:58 +01:00
Max Kellermann
c8c3f20840
storage/local: move to src/storage/plugins/
2014-02-05 19:26:21 +01:00
Max Kellermann
f6682aae77
db/update: include StorageInterface.hxx instead of LocalStorage.hxx
2014-02-05 19:26:18 +01:00
Max Kellermann
0ba1b73395
storage: add abstract interface
...
Prepare for the plugin interface.
2014-02-05 18:53:51 +01:00
Max Kellermann
4c995eb498
db/UpdateWalk: move LocalStorage to Instance
...
Keep only a reference.
2014-02-05 17:58:13 +01:00
Max Kellermann
144cfe70bf
db/update/Remove: initialize attribute "removed_song"
...
Fixes bogus assertion failure.
2014-02-05 17:58:13 +01:00
Max Kellermann
855f26c43d
Mixer: use reference instead of pointer for MixerPlugin
2014-02-05 17:25:47 +01:00
Max Kellermann
f86e159536
Mixer: rename struct mixer_plugin to MixerPlugin
2014-02-05 17:22:34 +01:00
Max Kellermann
243c4e1e83
Main: remove unused global variable "main_thread"
2014-02-05 17:04:16 +01:00
Max Kellermann
9ae7f186bc
LocalStorage: new API abstracting filesystem walk
...
Prepare to make this a new plugin API, for example to use a SMB share
for the music_directory.
2014-02-05 10:04:03 +01:00
Max Kellermann
f8d114be42
db/UpdateIO: add "pure" attributes
2014-02-05 10:04:03 +01:00
Max Kellermann
2c70251df1
db/UpdateGlue: relax assertion
...
Fixes assertion failure when update gets launched during MPD startup.
2014-02-05 10:04:03 +01:00
Max Kellermann
d380db25be
Instance: add attribute "event_loop"
...
Replaces global variable "main_loop".
2014-02-05 00:09:36 +01:00
Max Kellermann
e8938b1069
MixerPlugin: add EventLoop& init() parameter
2014-02-05 00:02:02 +01:00
Max Kellermann
4a28333039
event/Loop: remove the dummy constructor argument
2014-02-05 00:00:03 +01:00
Max Kellermann
ad7f2b2aec
test/ShutdownHandler: make the constructor "explicit"
2014-02-05 00:00:00 +01:00
Max Kellermann
ff665b37cb
db/DatabaseListener: add method OnDatabaseSongRemoved()
...
Decouples db/update/Remove.cpp from global variables.
2014-02-04 19:53:37 +01:00
Max Kellermann
ce73843014
db/proxy: include cleanup
2014-02-04 19:53:12 +01:00
Max Kellermann
bae6f653d1
Instance: merge DatabaseModified() into OnDatabaseModified()
2014-02-04 19:17:22 +01:00
Max Kellermann
eec6d09959
db/update/Service: use DatabaseListener instead of Instance
...
Don't use the global variable "instance".
2014-02-04 18:54:54 +01:00
Max Kellermann
c5fa8ed321
db/update/Service: use EventLoop::IsInside()
...
Don't use the global variable "main_thread".
2014-02-04 18:54:45 +01:00
Max Kellermann
abc16b919d
{Message,Neighbor}Commands: use Client::partition instead of Main.hxx
2014-02-04 11:35:23 +01:00
Max Kellermann
2de7cd32ea
ClientMessage: undefine GetMessage on WIN32
2014-02-04 11:35:14 +01:00
Max Kellermann
098aa18538
GlobalEvents: remove obsolete event DELETE
2014-02-04 11:25:41 +01:00
Max Kellermann
cf6281a5a7
Instance: add Database attribute
...
Move from db/DatabaseGlue.cxx, eliminating global variable.
2014-02-04 11:22:33 +01:00
Max Kellermann
f00710a57e
Main: create UpdateService instance in glue_db_init_and_load()
2014-02-04 11:22:32 +01:00
Max Kellermann
c953904343
db/update/Service: initialize "progress" and "update_task_id"
...
Database update was randomly broken due to these uninitialized
variables.
2014-02-04 11:22:13 +01:00
Max Kellermann
ddd36338da
StateFile: pass Database to SongLoader
...
Fixes loading database songs from state file (regression by commit
29072797c ).
2014-02-04 10:30:51 +01:00
Max Kellermann
d76b6f878e
db/update/Service: add SimpleDatabase reference
...
Don't use the global variables from the DatabaseSimple library.
2014-02-04 09:05:32 +01:00
Max Kellermann
f25ef8d682
db/update/Walk: add Directory reference parameter
...
Remove dependency on the DatabaseSimple library.
2014-02-04 09:05:32 +01:00
Max Kellermann
33a2c01ea2
db/Simple: remove unused function db_get_directory()
2014-02-04 09:03:17 +01:00
Max Kellermann
9c637df77e
SongSticker: add Database reference parameter
2014-02-04 01:15:08 +01:00
Max Kellermann
29072797ca
db/DatabasePlaylist: pass Database reference around
...
Reduce global variable usage, move to frontend code.
2014-02-04 00:57:43 +01:00
Max Kellermann
db69ceade6
db/LightSong: make "real_uri" a pointer
...
Reduce overhead. LightSong can always point to the "real" allocated
string.
2014-02-04 00:38:52 +01:00
Max Kellermann
b9c248e7e7
PlaylistFile: use class SongLoader
2014-02-03 23:50:19 +01:00
Max Kellermann
d533b59ee3
PlaylistFile: switch spl_append_uri() arguments
...
Playlist file name first, to be consistent with the other functions in
this library.
2014-02-03 23:33:25 +01:00
Max Kellermann
5ad2980d69
QueueSave: use class SongLoader
2014-02-03 23:32:31 +01:00
Max Kellermann
ca36ac2ba1
SongLoader: new class that merges duplicate code
...
There was quite a lot of duplicate code for loading DetachedSong
objects, with different semantics for "securely" loading local files.
2014-02-03 23:32:10 +01:00
Max Kellermann
ba675d6a55
FileCommands: use PathTraitsUTF8::IsAbsolute()
2014-02-03 23:31:28 +01:00
Max Kellermann
e4c5a4f61b
PlaylistSave: remove redundant backslash conversion
...
This is already being done by FixSeparators(), called from
PathToUTF8().
2014-02-03 23:15:57 +01:00
Max Kellermann
a8e52ad89f
ClientFile: move client_allow_file() into the Client class
2014-02-02 13:59:07 +01:00
Max Kellermann
8cf4fb53aa
Playlist: pass Database to DatabaseModified()
...
Don't use global variable.
2014-02-01 00:45:58 +01:00
Max Kellermann
1769ae54e4
Partition: disable DatabaseModified() if not ENABLE_DATABASE
2014-02-01 00:44:41 +01:00
Max Kellermann
e545679265
Main: don't measure DatabaseGlobalDeinit() time
...
Useless information.
2014-02-01 00:39:42 +01:00
Max Kellermann
981080500b
Stats: pass Database reference around
...
Call GetDatabase() only once.
2014-02-01 00:38:57 +01:00
Max Kellermann
636d28b784
Stats: remove obsolete "simple" plugin special case
...
The proxy plugin has now implemented the "idle" event listener.
2014-02-01 00:37:01 +01:00
Max Kellermann
188783ac1a
Stats: return false if update has failed
2014-02-01 00:36:36 +01:00
Max Kellermann
ff650d50a2
Mapper: assert that Song::parent is not nullptr
2014-01-31 23:14:13 +01:00
Max Kellermann
78689645dc
db/update/Archive: delete archive from database on error
2014-01-31 22:24:28 +01:00
Max Kellermann
26970579b8
db/update/Editor: add locking method variants
2014-01-31 22:17:49 +01:00
Max Kellermann
04b4f53488
db/update: convert runtime check to assertion
2014-01-31 21:59:35 +01:00
Max Kellermann
c310941f69
fs/AllocatedPath: add conversion constructor from Path
2014-01-30 23:36:57 +01:00
Max Kellermann
c02f146791
fs/DirectoryReader: GetEntry() returns Path, not AllocatedPath
...
Reduce overhead, don't duplicate the string.
2014-01-30 22:20:57 +01:00
Max Kellermann
a631200cca
update/Walk: declare std::string at assignment
...
Reduce overhead.
2014-01-30 22:19:56 +01:00
Max Kellermann
6207a3f999
PlaylistFile: narrow LoadPlaylistFileInfo() API to accept Path
2014-01-30 22:17:35 +01:00
Max Kellermann
0bd01824f6
fs/AllocatedPath: add Build() overlays with Path arguments
2014-01-30 22:15:13 +01:00
Max Kellermann
4465e2c46b
db: add compile-time option to disable database
2014-01-30 20:39:40 +01:00
Max Kellermann
34b309b99a
OtherCommands: merge duplicate code from handle_update(), handle_rescan()
2014-01-30 20:39:40 +01:00
Max Kellermann
c6725884bc
db/update: convert to OO API
...
Move global variables into the new classes. That may allow multiple
update threads for multiple databases one day.
2014-01-30 18:47:05 +01:00
Max Kellermann
a31738f6f1
Main, OutputThread: increase kernel timer slack (Linux)
...
Allows the kernel to combine timer wakeups with other processes,
reducing power usage.
2014-01-30 18:43:40 +01:00
Max Kellermann
39a2867ea8
NEWS: mention thread names
2014-01-30 18:43:16 +01:00
Max Kellermann
468c3df82d
NEWS: add "threads" section
2014-01-30 18:43:03 +01:00
Max Kellermann
d5b017407d
ExcludeList: move to db/update/
2014-01-30 10:11:12 +01:00
Max Kellermann
4b044bd8e1
InotifyUpdate: pass EventLoop to mpd_inotify_init()
2014-01-29 18:36:32 +01:00
Max Kellermann
aeaf64b467
Listen: pass EventLoop to listen_global_init()
...
Don't use global variables.
2014-01-29 18:32:28 +01:00
Max Kellermann
a137f817f5
db/Directory: move isRootDirectory() to Uri.hxx
...
Decouple command/OtherCommands.cxx from the "simple" database plugin.
2014-01-29 18:05:33 +01:00
Max Kellermann
ff87145537
sticker: don't use classes Directory and Song
...
Don't depend on the "simple" database plugin. This fixes an assertion
failure / crash and allows using stickers with other plugins.
2014-01-29 17:45:07 +01:00
Max Kellermann
667481c371
OutputThread: move more functions into the AudioOutput class
2014-01-29 09:26:11 +01:00
Max Kellermann
af71605769
output: rename "chunk" to "current_chunk"
2014-01-29 09:23:57 +01:00
Max Kellermann
4657a3bd0f
output: move functions into the AudioOutput struct
2014-01-29 08:10:46 +01:00
Max Kellermann
cb7366f472
AudioOutput: make "plugin" a reference
2014-01-29 08:10:36 +01:00
Max Kellermann
bf803e241f
AudioOutput: pass plugin to constructor
...
Make it "const".
2014-01-29 08:10:18 +01:00
Max Kellermann
8a8d023f90
doc/user: add Debian build dependencies
2014-01-29 08:10:07 +01:00
Max Kellermann
5b3aa45e58
CommandLine: remove junk from string literal
2014-01-29 08:09:48 +01:00
Max Kellermann
c4403c523f
AudioOutput: add constructor and destructor
2014-01-28 12:37:58 +01:00
Max Kellermann
07b89b2bad
ConfigTemplates: rename "AudioOutput" back to "audio_output"
...
sed gone horribly wrong. D'oh!
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
2f873edc9c
thread/Name: implementation for Mac OS X
...
pthread_setname_np() doesn't have the "thread" argument on OS X.
2014-01-28 11:33:15 +01:00
Max Kellermann
d5f46a846a
Makefile.am: make libneighbor.a conditional
...
Fixes non-Linux build without neighbor plugins.
2014-01-28 11:27:32 +01:00
Max Kellermann
f5a923b9d1
OutputAll: convert to class, move instance to class Partition
...
Another big chunk of code for multi-player support.
2014-01-28 09:20:53 +01:00
Max Kellermann
36bab6ef06
configure.ac: detect libsmbclient without pkg-config
...
The pkg-config file has been added in Samba 4.0. This commits adds a
fallback for older libsmbclient versions.
2014-01-27 15:00:44 +01:00
Max Kellermann
5273900b0e
neighbor/smbclient: add splice_after() fallback for gcc 4.6
2014-01-27 14:59:15 +01:00
Max Kellermann
1451344221
configure.ac: check if -lrt is necessary for clock_gettime()
2014-01-27 14:59:15 +01:00
Max Kellermann
8ed9f779cd
Makefile.am: build test/run_neighbor_explorer with AM_LDADD
2014-01-27 14:54:40 +01:00
Max Kellermann
f548a966f5
Playlist{Info,Vector}: move to db/
2014-01-27 11:05:21 +01:00
Max Kellermann
67ad31b8b2
doc/developer: mention git pull requests
2014-01-27 10:44:27 +01:00
Max Kellermann
35f46eaa3f
doc/developer: update number of contributors
2014-01-27 10:44:22 +01:00
Max Kellermann
ccfb125f02
doc/developer: add mailman page
2014-01-27 10:44:05 +01:00
Max Kellermann
f29e3ce8d5
doc/developer: explain clang static analyzer
2014-01-27 10:36:48 +01:00
Max Kellermann
bcb4646d6b
doc/developer: tag for email address
2014-01-27 10:36:26 +01:00
Max Kellermann
5b8af30da1
autogen.sh: re-add $ACLOCAL_FLAGS, $AUTOMAKE_FLAGS
2014-01-27 10:35:37 +01:00
Max Kellermann
30fadaed7f
Merge branch 'v0.18.x'
2014-01-27 10:33:42 +01:00
Max Kellermann
2b10ecfa37
IcyMetadataParser: more robust tag parser
...
Allow semicolons and single quotes in the stream title. This is not
part of any specification, but found in real life.
2014-01-27 10:08:21 +01:00
Max Kellermann
f7eb2b697e
test/test_icy_parser: unit test for IcyMetaDataParser.cxx
2014-01-27 09:51:31 +01:00
Max Kellermann
c01282a322
Makefile.am: remove "sparse" rule
...
We're C++, and sparse understands only plain C.
2014-01-27 09:29:34 +01:00
Max Kellermann
0e3f18ed70
Makefile.am: move test-suite.log back to base directory
...
Was broken on out-of-tree builds.
2014-01-27 09:28:08 +01:00
Max Kellermann
e5b1d30f1b
autogen.sh: simplify, no versioned program names
...
This was just too complex and fragile. Anybody who has versioned
program names shall just call those programs manually.
2014-01-27 09:25:15 +01:00
Max Kellermann
6746b751c4
autogen.sh: don't run aclocal with -I /usr/local/share/aclocal
...
I expect that aclocal is clever enough to find its own include
directories. If it does not, letting MPD guess it is not the most
reliable idea either.
2014-01-27 09:13:11 +01:00
Max Kellermann
544c69c61c
configure.ac: move autoconf/automake helpers to build/
2014-01-27 09:01:02 +01:00
Max Kellermann
0ab66db7b9
move systemd unit to directory systemd/
2014-01-27 08:55:42 +01:00
Max Kellermann
f7669c201f
Makefile.am: fix "distcheck"
2014-01-27 08:55:42 +01:00
Max Kellermann
0b3fbdba87
neighbor/upnp: UPnP media server discovery
2014-01-26 15:51:33 +01:00
Max Kellermann
3dad837ca6
db/upnp: remove sleep(2) call
...
This call was unnecessary. It is a bad idea anyway to block the MPD
process for some arbitrary amount of time.
2014-01-26 15:50:30 +01:00
Max Kellermann
d7e78059b0
upnp: initialize the client handle only once
...
Eliminate class LibUPnP and move the code to ClientInit.cxx. Its
initialization function can be called multiple times, but
UpnpRegisterClient() is called at most once.
2014-01-26 15:43:23 +01:00
Max Kellermann
01f7abfc63
upnp: move library initialization to Init.cxx
...
Allow calling UpnpGlobalInit() multiple times.
2014-01-26 15:23:26 +01:00
Max Kellermann
e57e89b9d5
upnp/discovery: use a plain UpnpClient_Handle instead of class LibUPnP
2014-01-26 15:22:33 +01:00
Max Kellermann
bcc1f93370
upnp: add class UpnpCallback
...
Each Upnp*Async() call passes a new cookie pointer, and the cookie
passed to UpnpRegisterClient() appears to be ignored. Using this
interface is a more elegant approach than having one single "handler"
function.
2014-01-26 15:04:56 +01:00
Max Kellermann
b161d72326
CueParser: don't "move" the filename
...
This invalidated the std::string instance, and thus broke the CUE
parser (commit 322b061632 ).
2014-01-26 14:58:23 +01:00
Max Kellermann
66c013682f
upnp: remove obsolete global variable "theLib"
2014-01-26 13:54:48 +01:00
Max Kellermann
9f3ba737d6
upnp/Discovery: add listener interface
2014-01-26 13:41:40 +01:00
Max Kellermann
f86f5ad224
db/upnp: move generic code to lib/upnp/
2014-01-26 13:41:40 +01:00
Max Kellermann
8b6b3ff28a
neighbor/Glue: fix rollback range
2014-01-26 13:41:40 +01:00
Max Kellermann
4a3dc2cea2
db/upnp: rename variables
2014-01-26 13:08:52 +01:00
Max Kellermann
bd0cfffe23
neighbor/Info: add constructor
2014-01-26 13:07:53 +01:00
Max Kellermann
8c5ea7ec55
Makefile.am: add DespotifyUtils.cxx to libinput.a and libplaylist_plugins.a
...
Simplifies test program rules.
2014-01-26 13:04:14 +01:00
Max Kellermann
412d1b0a01
Makefile.am: use $(MKDIR_P)
2014-01-26 12:32:51 +01:00
Max Kellermann
642be502c0
NeighborCommands: convert assertion to runtime check
2014-01-26 01:17:49 +01:00
Max Kellermann
5c4a42caa0
neighbor: new subsystem to detect file servers on the local network
...
This commit adds the NeighborPlugin API which can be used to detect
nearby file servers that can be used by input plugins. This list of
servers is exported using the new "listneighbors" command. The idle
even "neighbor" notifies interested clients when a new neighbor is
found or an existing one is lost.
There's a lot missing currently: protocol&user documentation, and a
way to "mount" remote servers into the music database. Obviously,
some code from the UPnP database plugin can be moved to a neighbor
plugin.
2014-01-26 00:10:05 +01:00
Max Kellermann
e847788569
lib/smbclient/Init: return empty username/password
...
This appears to be the right thing to do when we want anonymous login.
2014-01-26 00:08:50 +01:00
Max Kellermann
86ca5b3f16
input/smbclient: move code to lib/smbclient/Init.cxx
2014-01-25 23:29:42 +01:00
Max Kellermann
9b1fbdbca6
ConfigGlobal: add config_find_block()
...
Merge duplicate code.
2014-01-24 16:55:17 +01:00
Max Kellermann
97391fd4b9
DespotifyUtils, Expat: move to lib/
2014-01-24 16:44:36 +01:00
Max Kellermann
68eda78704
Mixer*: move to mixer/
2014-01-24 16:44:32 +01:00
Max Kellermann
7c52a1c04b
Filter*: move to filter/
2014-01-24 16:43:57 +01:00
Max Kellermann
9d34fc394c
Database*: move to db/
2014-01-24 16:38:44 +01:00
Max Kellermann
973c9872f9
Sticker*: move to sticker/
2014-01-24 16:38:15 +01:00
Max Kellermann
eef7ba48dd
Win32Main: move to win32/
2014-01-24 16:37:32 +01:00
Max Kellermann
299ff2b23f
move daemonization code to unix/
2014-01-24 16:37:21 +01:00
Max Kellermann
f8bfea8bae
Input*: move to input/
2014-01-24 16:33:33 +01:00
Max Kellermann
e199c33c6e
Client*: move to client/
2014-01-24 00:26:53 +01:00
Max Kellermann
08296cd66d
Update*: move to update/
2014-01-24 00:24:43 +01:00
Max Kellermann
197b503f3e
Config*: move to config/
2014-01-24 00:20:01 +01:00
Max Kellermann
129eb178eb
Queue*: move to queue/
2014-01-24 00:17:50 +01:00
Max Kellermann
6b70f5e490
Zeroconf*: move to zeroconf/
2014-01-24 00:14:54 +01:00
Max Kellermann
4aa6d39fd8
archive/*: move to archive/plugins/
2014-01-24 00:09:37 +01:00
Max Kellermann
51adaf2c47
decoder/*: move to decoder/plugins/
2014-01-24 00:02:24 +01:00
Max Kellermann
ea5b901bcc
output/*: move to output/plugins/
2014-01-23 23:49:50 +01:00
Max Kellermann
f1f19841bd
playlist/*: move to playlist/plugins/
2014-01-23 23:30:12 +01:00
Max Kellermann
655ad34414
Encoder*: move to src/encoder
...
.. and move the plugins to src/encoder/plugins/.
2014-01-23 23:09:14 +01:00
Max Kellermann
017eecb8e8
UPGRADING: remove obsolete file
...
This file has been unmaintained for 5 years, and nowadays, MPD tries
very hard to stay compatible with older versions.
2014-01-23 23:06:01 +01:00
Max Kellermann
b8e382b011
db/upnp/Discovery: use std::list instead of std::map
...
There will only be very few items, and that does not justify the bloat
of std::map.
2014-01-23 22:35:22 +01:00
Max Kellermann
c9af358e4b
db/upnp/Discovery: move code to LockAdd(), LockRemove()
2014-01-23 22:35:22 +01:00
Max Kellermann
3afcfe3330
db/upnp/Discovery: un-inline the destructor
2014-01-23 22:35:22 +01:00
Max Kellermann
b521d8564a
Makefile.am: always link test/dump_playlist with DetachedSong.cxx
...
Fixes linker failure.
2014-01-23 22:25:47 +01:00
Max Kellermann
53a13e8bc6
DetachedSong: un-inline the destructor
...
Reduce bloat.
2014-01-23 21:22:52 +01:00
Max Kellermann
f3f5e2e162
db/upnp: un-inline a few destructors
...
Reduce bloat.
2014-01-23 21:17:40 +01:00
Max Kellermann
ec41d849bb
thread/Name: set thread names
...
For debugging.
2014-01-23 10:07:14 +01:00
Max Kellermann
1d547fe273
thread/Util: set the SCHED_RESET_ON_FORK flag in SetThreadRealtime()
2014-01-23 09:14:09 +01:00
Max Kellermann
b52d8fbebe
db/upnp: strict vpath checks for the "root" directory
2014-01-23 00:40:39 +01:00
Max Kellermann
b61a2c722c
db/upnp: move code to VisitObject()
2014-01-23 00:28:27 +01:00
Max Kellermann
c455d2c1de
db/upnp: merge two PathTraitsUTF8::Build() calls
2014-01-23 00:25:08 +01:00
Max Kellermann
77070f5ab9
db/upnp: move code to VisitItem()
2014-01-23 00:17:38 +01:00
Max Kellermann
8d5f7160ac
db/upnp: fix subdirectory paths in "listallinfo"
...
Add missing server name prefix.
2014-01-23 00:07:35 +01:00
Max Kellermann
b167ce2913
base_uri
2014-01-23 00:06:17 +01:00
Max Kellermann
3ac15ca8d1
db/upnp: pass char* to visitSong()
...
Don't use std::string, reduce bloat.
2014-01-23 00:06:03 +01:00
Max Kellermann
f703d4fc3e
db/upnp: call VisitDirectory on servers, even in recursive mode
2014-01-22 23:52:08 +01:00
Max Kellermann
77c461fed7
db/upnp: make several methods "const"
2014-01-22 23:50:33 +01:00
Max Kellermann
a89c21b06a
db/upnp: inline Configure()
2014-01-22 23:30:53 +01:00
Max Kellermann
b74aa6b14c
db/upnp: don't duplicate song data for VisitSong
...
Not necessary because we control the LightSong's life cycle.
2014-01-22 23:28:23 +01:00
Max Kellermann
0c4a791111
db/upnp: emplace/move in csvToStrings()
2014-01-22 23:21:23 +01:00
Max Kellermann
1feedd4d9c
db/upnp: require an empty token list in csvToStrings()
2014-01-22 23:21:14 +01:00
Max Kellermann
0ec1808956
db/proxy: simplify csvToStrings()
2014-01-22 23:17:42 +01:00
Max Kellermann
546e7cafa4
db/proxy: merge redundant string::push_back() calls
2014-01-22 23:13:24 +01:00
Max Kellermann
d9926a1c21
db/upnp: use PathTraitsUTF8::Build()
2014-01-22 23:10:00 +01:00
Max Kellermann
e50969e31c
db/proxy: fix for libmpdclient < 2.9
2014-01-22 23:09:36 +01:00
Max Kellermann
a6d9998e1d
db/proxy: copy "Last-Modified" from remote directories
2014-01-22 23:07:21 +01:00
Max Kellermann
a42f9e4ee3
LightDirectory: new struct replacing Directory in the DB API
2014-01-22 23:01:32 +01:00
Max Kellermann
f16db6cd80
DatabasePrint: don't print zero mtime
...
Zero means "unknown".
2014-01-22 23:01:32 +01:00
Max Kellermann
4943606f4a
db/upnp: append characters instead of single-character strings
2014-01-22 21:55:58 +01:00
Max Kellermann
87629dda81
db/upnp: use string::push_back() instead of string::append()
2014-01-22 21:55:08 +01:00
Max Kellermann
71928b473e
db/upnp/Discovery: unlock mutex before deleting DiscoveredTask
2014-01-22 21:48:33 +01:00
Max Kellermann
a0bee9fa0a
db/upnp/Discovery: eliminate two strlen() calls
2014-01-22 21:47:34 +01:00
Max Kellermann
0defd927f3
db/upnp: use std::list instead of std::set for SearchCapabilities
...
Reduce bloat. We never used the set lookup.
2014-01-22 21:41:05 +01:00
Max Kellermann
6c41e8f63f
db/upnp: check offset<total at end of loop
2014-01-22 21:37:21 +01:00
Max Kellermann
fa67a4e956
db/upnp: break when zero objects have been returned
2014-01-22 21:37:19 +01:00
Max Kellermann
bf9352fb26
db/upnp: free responses manually
2014-01-22 21:33:54 +01:00
Max Kellermann
7573d4e1ba
db/upnp: break when count==0
...
Make this non-fatal. Just stop reading more objects.
2014-01-22 21:33:19 +01:00
Max Kellermann
bfb483898f
db/upnp: use ParseUnsigned() instead of atoi()
2014-01-22 21:11:04 +01:00
Max Kellermann
f363788d76
db/upnp: pass unsigned integers to readDirSlice()
2014-01-22 20:57:10 +01:00
Max Kellermann
714056f157
db/upnp: inline ContentDirectoryService::readDirSlice()
2014-01-22 20:42:36 +01:00
Max Kellermann
1abc96fa27
db/upnp: remove special case for "*"
...
Passing this to csvToStrings() will do the same.
2014-01-22 20:37:17 +01:00
Max Kellermann
0fa98479ad
db/upnp: obtain char* from ixmlwrap::getFirstElementValue()
...
Fixes crash when there's no SearchCaps element.
2014-01-22 20:26:33 +01:00
Max Kellermann
02f2171010
db/upnp/Util: pass char* to csvToStrings()
2014-01-22 20:24:55 +01:00
Max Kellermann
a5e7d0a90f
db/upnp: require an empty input capability set
2014-01-22 20:21:01 +01:00
Max Kellermann
9fb5134f64
db/upnp/Util: handle absolute URI paths properly in caturl()
...
Fixes problems with some UPnP servers.
2014-01-22 19:38:07 +01:00
Max Kellermann
9aeb23dfe9
db/upnp/Util: use string::back(), string::front()
2014-01-22 19:38:02 +01:00
Max Kellermann
e59d8c9378
db/upnp/Device: clear the "value" pointer on unknown element
...
Avoid appending to an obsolete string object.
2014-01-22 19:38:02 +01:00
Max Kellermann
0616667688
Main: glue_mapper_init() returns true if GetUserMusicDir() fails
...
Not a fatal error. Fixes assertion failure.
2014-01-22 16:28:19 +01:00
Max Kellermann
9747cc9e58
db/upnp/Device: replace std::vector with a std::string pointer
2014-01-22 09:55:51 +01:00
Max Kellermann
7b44dea4b1
db/upnp/Device: remove unused UPnPService attributes
2014-01-22 09:51:26 +01:00
Max Kellermann
18aea922e9
db/upnp/Directory: "emplace" items into the vector
2014-01-22 09:43:49 +01:00
Max Kellermann
7d194aceb6
db/upnp/Device: emplace/move the UPnPService into the vector
...
Reduce overhead.
2014-01-22 09:42:46 +01:00
Max Kellermann
2722b8a3df
db/upnp/Util: "emplace" items into the list
...
Reduce overhead.
2014-01-22 09:40:38 +01:00
Max Kellermann
fd754ff8f8
db/upnp/Directory: replace std::vector with a simple enum
...
Reduce bloat.
2014-01-22 09:32:11 +01:00
Max Kellermann
b7738e7af3
db/upnp/Directory: join all CDATA nodes for tag values
...
Expat can call CharacterData() multiple times if the CDATA contains
entity references. We need to collect all of them in one large
string.
2014-01-22 08:44:35 +01:00
Max Kellermann
99bebabac9
db/upnp/Directory: make "m_dir" private
2014-01-22 08:44:20 +01:00
Max Kellermann
0ed48b364a
db/upnp: merge duplicate branches in Namei()
2014-01-21 23:42:02 +01:00
Max Kellermann
b38b8b9c18
db/upnp: simplify Namei()
2014-01-21 23:37:27 +01:00
Max Kellermann
5434856136
db/upnp: use std::list instead of std::vector
...
Reduce overhead.
2014-01-21 23:33:28 +01:00
Max Kellermann
aa1eb2f40d
db/upnp: use iterator in Namei()
2014-01-21 23:32:42 +01:00
Max Kellermann
7260d7883c
db/upnp: move "objid" declaration down
...
Don't allocate the object when it's not needed.
2014-01-21 23:10:30 +01:00
Max Kellermann
154250f551
db/upnp: eliminate redundant Namei() parameter "oobjid"
...
The caller should better obtain the object id from the returned
UPnPDirObject instance.
2014-01-21 23:07:33 +01:00
Max Kellermann
3e4fb92cfb
db/upnp: remove redundant objid.empty() check from VisitServer()
...
If Namei() succeeds, the object id is guaranteed to be set.
2014-01-21 23:07:06 +01:00
Max Kellermann
0da713e278
db/upnp: use std::move() to extract server name
...
Reduce runtime overhead.
2014-01-21 22:57:54 +01:00
Max Kellermann
94cb1545b3
db/upnp: use vector::front() instead of [0]
2014-01-21 22:57:16 +01:00
Max Kellermann
411527a240
db/upnp: don't use stringToTokens() in ParseDuration()
...
Reduce bloat.
2014-01-21 22:52:12 +01:00
Max Kellermann
7777057d35
db/upnp: don't construct redundant empty vector<string> in Visit()
...
We know already that vpath is empty, let's use this instance.
2014-01-21 22:47:57 +01:00
Max Kellermann
dc5ef9ad01
db/upnp: simplify GetSong()
2014-01-21 22:43:04 +01:00
Max Kellermann
7471f65d95
LightSong: add attribute "real_uri"
...
The UPnP database plugin can now show relative song URIs for remote
songs.
2014-01-21 21:08:11 +01:00
Max Kellermann
5d4b450c52
DetachedSong: add attribute "real_uri"
...
Prepare for UPnP songs that retain there database identity.
2014-01-21 21:06:56 +01:00
Max Kellermann
483b1f51c9
DetachedSong: remove parameter names from "defaulted" constructors
...
Suppresses gcc warnings.
2014-01-21 21:06:56 +01:00
Max Kellermann
ecac7a629e
db/upnp: fix empty song URI
...
Fall back to UPnPDirObject::url if there is no override.
2014-01-21 21:02:21 +01:00
Max Kellermann
21209ff46b
DetachedSong: use "default" copy/move constructors
...
Remove unnecessary explicit code.
2014-01-21 20:38:13 +01:00
Chase Geigle
716bdc36fd
pcm/SoxrResampler: Add configurable quality levels
2014-01-21 20:35:26 +01:00
Max Kellermann
4f120f3714
PlaylistSong: modify the given song object in-place
...
Reduce bloat.
2014-01-21 00:28:37 +01:00
Max Kellermann
dd20a3ce7e
test: add unit test for playlist_check_translate_song()
2014-01-21 00:28:34 +01:00
Max Kellermann
c727c86245
PlaylistSong: remove redundant "secure" check
...
This has been verified already in the caller.
2014-01-21 00:28:32 +01:00
Max Kellermann
82b4ec22be
PlaylistSong: recurse after applying base_uri
...
Allows applying map_to_relative_path() with base_uri.
2014-01-20 23:47:43 +01:00
Max Kellermann
501f1e6de0
PlaylistSong: remove the IsInDatabase() check
...
No caller passes a database song to this function, but if he does,
this check doesn't make sense.
2014-01-20 23:32:03 +01:00
Max Kellermann
414d5b648c
PlaylistSong: don't map relative URI to absolute path
...
This didn't make sense.
2014-01-20 23:31:08 +01:00
Max Kellermann
a237e7f860
CommandLine: show the current git tag and commit id
2014-01-20 23:31:08 +01:00
Max Kellermann
07a3bef25c
PlaylistSong: pass reference variables internally
2014-01-20 19:57:26 +01:00
Max Kellermann
da67260c95
new developer mailing list
2014-01-20 17:20:57 +01:00
Max Kellermann
2f51285349
Merge branch 'v0.18.x'
2014-01-20 09:05:36 +01:00
Max Kellermann
ab9c9068d4
Queue: rename struct queue to Queue
...
Works around a build failure on Solaris because annoyingly, Solaris
reserves the name "queue". This rename was pending anyway.
2014-01-20 08:57:46 +01:00
Max Kellermann
6b4d7d7315
Queue: make the constructor "explicit"
2014-01-20 08:57:41 +01:00
Max Kellermann
64465c1318
Song: make the "parent" attribute mandatory
...
The Song class is only used for database songs now. A Song without a
Directory is not possible anymore.
2014-01-19 23:16:09 +01:00
Max Kellermann
a506adea41
Directory: use Song::Export()
2014-01-19 23:16:08 +01:00
Max Kellermann
f5ae1ce00b
LightSong: new class to be used by DatabasePlugin callbacks
...
Detach the Song class completely from the public API, only to be used
by SimpleDatabase and the update thread.
2014-01-19 17:04:51 +01:00
Max Kellermann
738d6f1040
db/proxy: simplify error handling in GetSong()
...
Check mpd_response_finish() before using mpd_song. Don't skip this
check even if the mpd_song is non-nullptr.
2014-01-19 11:37:42 +01:00
Max Kellermann
ba372197fb
db/simple: make borrowed_song_count "mutable"
...
Simpler to use than const_cast.
2014-01-19 11:23:02 +01:00
Max Kellermann
bde27ccec3
Tag: pack attributes tighter
...
This saves another 3% memory.
2014-01-19 03:11:01 +01:00
Max Kellermann
d2cf74027c
Song: embed the Tag object statically into class Song
...
Reduces overhead because we need to manage only one memory allocation.
According to valgrind/massif, we save 7%.
2014-01-19 02:58:55 +01:00
Max Kellermann
bc966577ff
Song: use the VarSize library
2014-01-18 19:24:55 +01:00
Max Kellermann
fdf4dff561
db/upnp: move Tag from UPnPDirObject to Song
...
The UPnPDirObject is a temporary object, we can move its contents.
This reduces runtime overhead.
2014-01-18 19:09:42 +01:00
Max Kellermann
fab6cbed75
db/upnp/Discovery: eliminate attribute "last_seen"
2014-01-18 16:28:12 +01:00
Max Kellermann
051eede1ed
db/upnp/Discovery: use monotonic clock instead of time()
2014-01-18 16:26:11 +01:00
Max Kellermann
0696cac50b
db/upnp/Discovery: eliminate full copy in getServer()
2014-01-18 16:18:51 +01:00
Max Kellermann
0c2485e86c
db/upnp: use getServer() in Visit()
...
Reduce bloat.
2014-01-18 16:13:33 +01:00
Max Kellermann
7d696a7063
db/upnp/Discovery: eliminate Error attribute
...
Move code to method Start() and add Error& parameters to several
methods.
2014-01-18 16:08:30 +01:00
Max Kellermann
53573e950f
db/upnp: remove unnecessary m_superdir nullptr checks
2014-01-18 16:02:21 +01:00
Max Kellermann
1e99983263
db/upnp: pass ContentDirectoryService references
2014-01-18 15:58:02 +01:00
Max Kellermann
5409e43fb5
db/upnp: cache m_path.back()
2014-01-18 15:44:41 +01:00
Max Kellermann
f33f891c54
db/upnp: add UpnpMakeAction() helper function
2014-01-18 15:27:54 +01:00
Max Kellermann
6e55552292
db/upnp/ixmlwrap: getFirstElementValue() returns const char *
...
Eliminate the std::string bloat.
2014-01-18 15:01:19 +01:00
Max Kellermann
e569f82dd3
db/upnp: merge duplicate nullptr check
2014-01-18 14:44:06 +01:00
Max Kellermann
1a4940bbda
db/upnp: free IXML_Document *request manually
2014-01-18 14:38:52 +01:00
Max Kellermann
22dd3c8048
db/upnp/Device: move code to method Parse()
...
Forward the Error to the caller.
2014-01-18 14:29:31 +01:00
Max Kellermann
04b7648e00
db/upnp/Device: use ContentDirectoryDescriptor's move operator
...
Reduce bloat.
2014-01-18 14:26:24 +01:00
Max Kellermann
be0759d465
db/upnp/Discovery: don't copy XML to std::string
...
Pass "const char *" to Expat.
2014-01-18 14:24:38 +01:00
Max Kellermann
339d939873
db/upnp/Discovery: fix memory leak
2014-01-18 14:03:18 +01:00
Max Kellermann
c1950e40e6
db/upnp: remove unused typedef DevServIt
2014-01-18 13:42:54 +01:00
Max Kellermann
ad76bad8fd
db/upnp: use move operator to assign XML CDATA
...
Reduce runtime bloat.
2014-01-18 13:39:31 +01:00
Max Kellermann
55737e4ff6
db/upnp/Util: trimstring() constructs string from buffer
...
Reduce overhead by omitting the part of the buffer that consists only
of whitespace.
2014-01-18 13:36:50 +01:00
Max Kellermann
f3b4ddee6c
db/upnp/Discovery: free the response body
...
Memory leak.
2014-01-18 13:08:48 +01:00
Max Kellermann
758b504cf3
db/upnp/Discovery: don't copy the response body
...
Bloat.
2014-01-18 13:07:42 +01:00
Max Kellermann
416f7c2600
db/upnp: don't hold mutex while downloading device description
...
Must not perform blocking I/O while holding a mutex.
2014-01-18 13:04:01 +01:00
Max Kellermann
b9f02f22c4
db/upnp: don't use WorkQueue for _ADVERTISEMENT_BYEBYE
...
Remove the ContentDirectoryDescriptor right away. Reduces bloat.
2014-01-18 12:56:35 +01:00
Max Kellermann
b635610409
db/upnp: include cleanup
2014-01-18 12:51:25 +01:00
Max Kellermann
d4d4d6217f
db/upnp: don't use LazyDatabase
...
Now that MPD forks early, this workaround is obsolete.
2014-01-18 12:48:28 +01:00
Max Kellermann
be47320a05
Daemon: fork as early as possible
...
Keep the parent process around until MPD has finished initializing.
This is important for libraries that are allergic to fork(), such as
libupnp.
2014-01-18 12:42:30 +01:00
Max Kellermann
9f3ce7551a
PidFile: open in write-only mode
2014-01-18 12:42:12 +01:00
Max Kellermann
5f3b79e21d
Daemon: move code to class PidFile
2014-01-18 12:10:20 +01:00
Max Kellermann
56c12bd1ea
Daemon: don't use daemon(), always require fork()
...
Prepare for more advanced daemonization code, which will not work with
daemon(). Let's just require fork(). Everybody who supports daemon()
also supports fork().
2014-01-18 11:46:28 +01:00
Max Kellermann
3a6da7c594
Main: make variables more local
2014-01-18 11:34:13 +01:00
Max Kellermann
9909a80d6a
Main: eliminate variable "success"
2014-01-18 11:20:20 +01:00
Max Kellermann
a52cae1dba
pcm/Volume: make DSD a no-op
...
Kludge to work around DSD playback failure because the
ReplayGainFilterPlugin is always in the filter chain.
2014-01-17 23:57:30 +01:00
Max Kellermann
61b01f82ef
Mapper: add function map_song_detach()
...
Make the DetachedSong(Song) conversion constructor private. Everybody
should use map_song_detach() which will take over more
responsibilities soon.
2014-01-17 23:51:14 +01:00
Max Kellermann
75b847132a
QueueSave: use DatabaseDetachSong()
2014-01-17 23:49:53 +01:00
Max Kellermann
32ec672311
DatabaseSong: new library merging duplicate code
2014-01-17 22:58:27 +01:00
Max Kellermann
e2812f722d
db/upnp/Discovery: move callbacks and data structures into class
...
Eliminate global variables.
2014-01-17 10:13:04 +01:00
Max Kellermann
aa64a5328e
db/upnp: split cluCallback()
2014-01-17 09:46:51 +01:00
Max Kellermann
59510f509a
db/upnp: add local reference variables
...
Prepare to refactor some code.
2014-01-17 00:17:20 +01:00
Max Kellermann
a35c7bc81a
db/upnp: move the LibUPnP instance to class UpnpDatabase
...
Delete the object when closing the database.
2014-01-16 09:30:24 +01:00
Max Kellermann
02769929b3
db/upnp: remove useless static Mutex
2014-01-16 09:29:11 +01:00
Max Kellermann
1a09003a6e
db/upnp: move the UPnPDeviceDirectory instance to class UpnpDatabase
...
Delete the object when closing the database.
2014-01-16 09:08:04 +01:00
Max Kellermann
a827714823
db/upnp: don't initialize attributes to nullptr
...
Not necessary, these are not used.
2014-01-16 09:07:52 +01:00
Max Kellermann
8f9e76ca42
db/upnp: remove redundant m_root nullptr checks
2014-01-16 08:51:39 +01:00
Max Kellermann
478ace984a
db/upnp/WorkQueue: use emplace() and std::move()
2014-01-16 08:46:41 +01:00
Max Kellermann
028fd268b8
db/upnp/WorkQueue: simplify start()
2014-01-16 08:43:57 +01:00
Max Kellermann
876a095166
Directory: initialize "mtime" and "have_stat"
2014-01-15 18:53:53 +01:00
Max Kellermann
14c3ff58a4
db/upnp/WorkQueue: fix pthread_t[] allocation size
...
Was using the wrong variable.
2014-01-15 18:51:10 +01:00
Max Kellermann
2819b302c3
db/upnp/Object: remove obsolete attribute "m_title"
2014-01-15 18:36:01 +01:00
Max Kellermann
9fb82f9687
DetachedSong: add method Update()
...
Don't create an intermediate Song instance when all we want is a
DetachedSong.
2014-01-15 12:05:44 +01:00
Max Kellermann
df80deb070
DetachedSong: remove misplaced std::move()
2014-01-15 11:52:17 +01:00
Max Kellermann
5fb72d7c8f
Merge branch 'v0.18.x'
2014-01-15 11:47:49 +01:00
Max Kellermann
313d1d5d83
decoder/ffmpeg: support libav v10_alpha1
2014-01-15 11:33:18 +01:00
Max Kellermann
b7d6133593
decoder/ffmpeg: include cleanup
2014-01-15 11:31:51 +01:00
Max Kellermann
5b6bb114ad
decoder/ffmpeg: check for av_samples_get_buffer_size() errors
...
Fixes potential nullptr dereference.
2014-01-15 11:25:58 +01:00
Max Kellermann
56f082c9d4
util/PeakBuffer: fix nullptr dereference when peak_size==0
2014-01-15 11:24:29 +01:00
Max Kellermann
a1b798e555
SongFilter, TagConfig: cast TAG_NUM_OF_ITEM_TYPES to integer
...
Fixes clang warning.
2014-01-15 11:23:41 +01:00
Max Kellermann
c91e08fbfd
OutputAPI: fix typo in include guard
2014-01-15 11:22:59 +01:00
Max Kellermann
f882434547
configure.ac: prepare for 0.18.8
2014-01-15 11:22:06 +01:00
Max Kellermann
f1ca17f6a1
decoder/ffmpeg: check for av_samples_get_buffer_size() errors
...
Fixes potential nullptr dereference.
2014-01-14 23:16:07 +01:00
Max Kellermann
fe7cda57e4
util/PeakBuffer: fix nullptr dereference when peak_size==0
2014-01-14 23:07:04 +01:00
Max Kellermann
a3f9abcbd1
SongFilter, TagConfig: cast TAG_NUM_OF_ITEM_TYPES to integer
...
Fixes clang warning.
2014-01-14 22:40:07 +01:00
Max Kellermann
77041e2cd2
input/alsa: fix memory leak
...
Don't duplicate the MIME type when it gets passed to a std::string.
2014-01-14 22:38:30 +01:00
Max Kellermann
14235f171b
decoder/sidplay: use free() instead of g_free()
...
This pointer was allocated by libc, not by GLib.
2014-01-14 22:35:07 +01:00
Max Kellermann
1f90e3ce7f
playlist/extm3u: allocate Tag instance on the stack
...
Automate the life cycle, making the code safer.
2014-01-14 22:33:31 +01:00
Max Kellermann
676d8bb624
db/upnp/Object: add attribute "tag"
...
Replaces "m_title" and "m_props". More bloat removed.
2014-01-14 22:33:18 +01:00
Max Kellermann
4bcaf5d306
db/upnp: move upnp_tags to Tags.cxx
2014-01-14 22:33:18 +01:00
Max Kellermann
70d3ad3ca1
OutputAPI: fix typo in include guard
2014-01-14 22:33:18 +01:00
Max Kellermann
46debfb8b5
db/upnp/Object: disallow copying, always move
...
Reduce bloat.
2014-01-14 14:11:07 +01:00
Max Kellermann
9a4b572d34
db/upnp: getTagValue() returns string pointer
...
Reduce bloat.
2014-01-14 13:42:08 +01:00
Max Kellermann
ddc75cc46b
db/upnp/Directory: merge m_containers and m_items
...
There is no use in duplicating these containers. It only means that
we have to search both, duplicating the code.
2014-01-14 13:37:21 +01:00
Max Kellermann
dafd0bc49a
db/upnp: pass const reference to getTagValue()
2014-01-14 13:37:05 +01:00
Max Kellermann
2cb912e4f4
db/upnp: Namei() returns error when no object was found
...
Don't fail silently.
2014-01-14 12:34:49 +01:00
Max Kellermann
91a513e87d
db/upnp/Directory: eliminate one std::string copy with std::move()
2014-01-14 12:27:21 +01:00
Max Kellermann
efdb41f2a6
db/upnp/Object: add attribute "name"
...
Call titleToPathElt() only once for each object.
2014-01-14 12:22:37 +01:00
Max Kellermann
26b850c15c
db/upnp: use std::replace() in titleToPath()
2014-01-14 12:15:21 +01:00
Max Kellermann
9941735ae7
db/upnp: pass std::string to titleToPathElt()
2014-01-14 12:03:36 +01:00
Max Kellermann
29e5dc4413
db/upnp: don't sanitize the title tag
...
We need this only for path names.
2014-01-14 12:00:58 +01:00
Max Kellermann
3a660c5527
db/upnp/WorkQueue: remove unused attributes "high", "low"
2014-01-14 11:49:42 +01:00
Max Kellermann
738991494a
db/upnp/WorkQueue: initialize "ok" to false, eliminate redundant checks
2014-01-14 11:48:19 +01:00
Max Kellermann
ee4c3ff1b8
db/upnp/WorkQueue: remove IsOK() check from put()
...
Not necessary, not worth the check.
2014-01-14 11:46:18 +01:00
Max Kellermann
60486bcc46
db/upnp/WorkQueue: remove redundant n_workers_exited check from IsOK()
2014-01-14 11:43:18 +01:00
Max Kellermann
79eed5182e
db/upnp/WorkQueue: include cleanup
2014-01-14 11:41:28 +01:00
Max Kellermann
5de0f3f36a
db/upnp/WorkQueue: remove unnecessary "waiting" attributes
2014-01-14 11:38:48 +01:00
Max Kellermann
9f316e11bd
db/upnp/WorkQueue: remove unused method waitIdle()
...
Contrary to setTerminateAndWait()'s documentation, the method does
wait for worker threads to exit via pthread_join().
2014-01-14 11:31:49 +01:00
Max Kellermann
c6d8f6da70
db/upnp/WorkQueue: use array instead of std::list
...
Reduce bloat further.
2014-01-14 11:23:13 +01:00
Max Kellermann
73fd98b82e
db/upnp/WorkQueue: use std::list instead of std::unordered_map
...
Reduce bloat.
2014-01-14 11:11:08 +01:00
Max Kellermann
6cb725391d
db/upnp/WorkQueue: rename attributes
2014-01-14 11:07:06 +01:00
Max Kellermann
c13facdaca
db/upnp/WorkQueue: pass reference to take()
2014-01-14 11:07:00 +01:00
Max Kellermann
e259474362
db/upnp/WorkQueue: remove unused method qsize()
2014-01-14 11:06:55 +01:00
Max Kellermann
7740855a78
db/upnp/WorkQueue: remove unused "szp" parameter from take()
2014-01-14 11:06:43 +01:00
Max Kellermann
d605170f9f
db/upnp/WorkQueue: remove unused statistics
2014-01-14 10:51:33 +01:00
Max Kellermann
4734af747b
OutputThread: use real-time priority
2014-01-14 09:59:04 +01:00
Max Kellermann
5d17731b73
UpdateGlue: let the update thread run at "idle" priority
...
The update thread should not affect the rest of the system, therefore
set "idle" priority, and let it only run when nobody else is using the
resources.
2014-01-14 09:09:52 +01:00
Max Kellermann
07a7fde825
Merge branch 'shine' of git://github.com/ekroth/mpd
2014-01-13 22:54:15 +01:00
Max Kellermann
049abef2d4
input/despotify: change name to "despotify"
...
The name "spt" didn't make much sense for this plugin.
2014-01-13 22:35:30 +01:00
Max Kellermann
7c60b50a39
CommandLine: print list of database plugins
2014-01-13 22:31:55 +01:00
Max Kellermann
4f83c60296
copyright year 2014
2014-01-13 22:31:55 +01:00
Andrée Ekroth
cd5817b67e
encoder/shine: fix segfault workaround
...
Initializing and closing the Shine library without
writing any data results in a segmentation fault.
The current workaround writes zeroes if there was
no actual data.
2014-01-13 22:28:29 +01:00
Max Kellermann
a4d580a6f8
db/upnp: add fallback for emplace()
...
The method emplace() was added in gcc 4.8. This commit restores
compatibility with gcc 4.7.
2014-01-13 22:24:48 +01:00
Max Kellermann
ca43e634b5
db/upnp: use std::function for the libupnp callback
...
Replaces the bloated std::map.
2014-01-13 22:24:02 +01:00
Max Kellermann
85324f80fe
db/upnp: fix "upnp:class" parser
...
"upnp:class" is an element, not an attribute of element "item". This
fixes a regression from commit 65ebfb16
2014-01-13 22:23:00 +01:00
Andrée Ekroth
56a7fcf189
encoder/shine: remove unnecessary buffer
...
Now writes to the de-interleaved buffers directly,
instead of writing to an intermediate fifo buffer.
Fix indentation and 80 char width lines.
2014-01-13 17:55:12 +01:00
Max Kellermann
8cd15a02cd
Merge tag 'release-0.18.7'
2014-01-13 11:52:35 +01:00
Max Kellermann
05ad335ae9
release v0.18.7
2014-01-13 11:39:27 +01:00
Andrée Ekroth
ea771c17c5
Shine encoding plugin
...
This encoding plugin features a fixed-point mp3 encoder,
with faster encoding on architectures without a FPU.
Right now the encoder is limited to stereo and 16 bit depth.
The bitrate and sample rate can be modified in audio_output.
audio_output {
type "httpd"
name "My shine stream"
encoder "shine"
port "8000"
format "44100:16:2"
bitrate "320" # default: 128
}
2014-01-13 11:14:19 +01:00
Max Kellermann
7faeb2ff2b
configure.ac: reject libmpcdec SV7 in configure script
...
Look for symbol "mpc_demux_init" which does not exist in SV7. This
avoids build failures when SV7 was found by configure.ac.
2014-01-11 21:02:12 +01:00
Max Kellermann
65ebfb16c9
db/upnp/Directory: parse item_class in StartElement
...
Don't add to the std::map.
2014-01-11 01:40:21 +01:00
Max Kellermann
44a65fc5de
db/upnp/Object: add attribute "url"
...
Don't store in the std::map.
2014-01-11 01:36:08 +01:00
Max Kellermann
f031eb1ef2
db/upnp/Directory: parse duration
...
Don't put all <res/> attributes to the attributes map; parse the
"duration" attribute as soon as we receive it, and store it in an
integer attribute. This reduces bloat.
2014-01-11 01:31:13 +01:00
Max Kellermann
b50d79542c
db/upnp: move stringToTokens() to Util.cxx
2014-01-11 01:30:05 +01:00
Max Kellermann
8351543c0f
db/upnp: move lazy Open() call to new class LazyDatabase
...
Generic approach for the workaround.
2014-01-11 01:25:22 +01:00
Max Kellermann
8add78ed5e
db/upnp/discovery: convert std::strings to const char *
...
Reduce bloat.
2014-01-11 01:21:54 +01:00
Max Kellermann
4b3a3d6faa
db/upnp: remove unnecessary Mutex
2014-01-11 01:16:35 +01:00
Max Kellermann
71d012fa61
db/proxy: forward "idle" events
...
Send "idle" to the other MPD whenever there's nothing else to do and
forward incoming "idle database" events to all our MPD clients.
2014-01-11 01:11:19 +01:00
Max Kellermann
114df1f137
DatabasePlugin: add interface DatabaseListener
...
Allow database plugins to announce that they have been modified.
2014-01-11 01:01:54 +01:00
Max Kellermann
00adf7ff17
db/proxy: move code to Disconnect()
2014-01-11 00:46:33 +01:00
Max Kellermann
3f0415fa24
UpdateGlue: move stats_invalidate() call to Instance::DatabaseModified()
2014-01-11 00:46:33 +01:00
Max Kellermann
348d0c944e
Stats: lazy initialization
...
Ask the DatabasePlugin for stats when the first client requests them,
not at startup.
2014-01-10 23:42:46 +01:00
Max Kellermann
e9ba5fcaf3
db/upnp: remove unused method setMaxContentLength()
2014-01-10 23:04:50 +01:00
Max Kellermann
48097745f6
db/upnp: remove "upnplog" option
...
We have removed all libupnp logging calls, and we don't need to debug
libupnp.
2014-01-10 23:00:27 +01:00
Max Kellermann
1091ca969f
db/upnp: remove unused macro PLOGINF()
2014-01-10 23:00:18 +01:00
Max Kellermann
09d62cc630
db/upnp: remove unused method errAsString()
2014-01-10 23:00:10 +01:00
Max Kellermann
a2ead993e6
db/upnp/Device: remove unused attribute "m_tabs"
2014-01-10 23:00:03 +01:00
Max Kellermann
b330aa8dd5
db/upnp: remove unnecessary empty string checks from CharacterData()
2014-01-10 22:59:46 +01:00
Max Kellermann
1b8053a618
db/upnp/Directory: simplify checkobjok()
2014-01-10 22:59:28 +01:00
Max Kellermann
70e5ab3fde
db/upnp/Directory: don't log unknown items
2014-01-10 22:59:16 +01:00
Max Kellermann
f4490f6918
db/upnp/Directory: eliminate the "attributes" std::map
...
Look up attributes in the "atts" array. Reduce bloat.
2014-01-10 22:59:01 +01:00
Max Kellermann
dadd987bf4
db/upnp/Directory: move "res" attributes to array
...
Reduce bloat.
2014-01-10 22:58:37 +01:00
Max Kellermann
a1ced29279
db/upnp: use nullptr-terminated array
...
Reduce bloat.
2014-01-10 22:58:23 +01:00
Max Kellermann
791d6c1336
db/upnp/Directory: eliminate struct StackEl, use std::string
...
Reduces bloat.
2014-01-10 22:57:57 +01:00
Max Kellermann
10abb07960
db/upnp/Directory: make "attributes" a local variable
...
We only need it inside StartElement(). Reduces bloat.
2014-01-10 22:57:46 +01:00
Max Kellermann
040a5ddad5
db/upnp/Directory: move "res" tag handler to StartElement()
...
No need to handle this in EndElement() - in StartElement(), we already
have all we need.
2014-01-10 22:57:22 +01:00
Max Kellermann
e7eb04954d
db/upnp/Directory: don't use std::map to parse upnp:class
...
Reduce excessive bloat.
2014-01-10 22:57:16 +01:00
Max Kellermann
09b00fa4e3
db/upnp/Object: use strictly-typed enums
...
At the same time, rename the enum types and the class attributes, and
add an "UNKNOWN" type/class. The latter avoids the "-1" hack.
2014-01-10 22:56:52 +01:00
Max Kellermann
74842fd6d4
db/upnp: getprop() returns const char *
...
Return the return value, instead returning it in a reference
parameter. Reduces bloat by reducing unnecessary std::string usage.
2014-01-10 22:56:45 +01:00
Max Kellermann
f23b47ba17
Expat: attributes come in name/value pairs (bug fix)
...
I wrongfully assumed that each array element is a name and a value
concatenated.
2014-01-10 22:56:28 +01:00
Max Kellermann
15eedfbb12
db/upnp: don't set mtime, start_ms, end_ms
...
Not necessary or useful.
2014-01-10 09:01:28 +01:00
Max Kellermann
cfc25e08dc
db/upnp: use TagTable in upnpItemToSong()
...
Reduces bloat by eliminating one std::map.
2014-01-10 08:57:31 +01:00
Max Kellermann
1583eb36e4
doc/user: mention the upnp database plugin
2014-01-09 20:59:51 +01:00
Jean-Francois Dockes
406452f019
UPnP database plugin
...
[mk: renamed source files, applied coding style, reduced bloat, using
MPD's threading library, using MPD's error reporting and logging
library and refactoring, fixed lots of bugs]
2014-01-09 20:56:00 +01:00
Max Kellermann
12b139beaf
ExpatParser: add Parse() overload with buffer
2014-01-09 20:56:00 +01:00
Max Kellermann
2ed1c22227
ExpatParser: add helper class CommonExpatParser
2014-01-09 20:56:00 +01:00
Max Kellermann
eb23ef1747
event/Loop: allow AddTimer() after Run() has returned
...
Kludge for libavahi-client quirk.
2014-01-09 20:56:00 +01:00
Max Kellermann
970b10d01b
tag/TagTable: add lookup TagType -> name
2014-01-09 19:01:03 +01:00
Max Kellermann
61b938d6fa
event/Loop: allow scheduling events before Run()
...
Add the debug-only flag "virgin" which gets checked by assert()
calls. Fixes assertion failures when using zeroconf/avahi.
2014-01-09 17:52:55 +01:00
Max Kellermann
0c34555b02
Directory: remove method Free()
2014-01-09 13:21:56 +01:00
Max Kellermann
83a988e2e4
db/proxy: allocate Directory instance on the stack
2014-01-09 13:21:09 +01:00
Max Kellermann
91efe1cb5a
Directory: convert to fixed-size struct
...
Using a variable-size struct with embedded string is not worth the
trouble here. There are not so many Directory objects.
2014-01-09 13:14:14 +01:00
Max Kellermann
735241f049
Timer: remove unused method Synchronize()
2014-01-09 12:56:57 +01:00
Max Kellermann
dd82370a80
playlist/{asx,rss,xspf}: use Expat instead of GLib to parse XML
2014-01-09 12:19:52 +01:00
Max Kellermann
dab052e53d
playlist/asx: make variables more local
2014-01-09 12:18:13 +01:00
Max Kellermann
322b061632
DetachedSong: fork of struct Song
...
From now on, struct Song will be used by the database only, and
DetachedSong will be used by everybody else. DetachedSong is easier
to use, but Song has lower overhead.
2014-01-09 09:05:58 +01:00
Max Kellermann
43847f2244
test/DumpDatabase: fix nullptr dereference
2014-01-09 09:05:58 +01:00
Max Kellermann
8f9ba96c59
SongUpdate: move code to handle_lsinfo()
...
Don't create a temporary Song object in handle_lsinfo(). Instead,
print all tags while parsing the remote file.
2014-01-08 23:35:37 +01:00
Max Kellermann
10406c73b3
SongSave: make variables more local
2014-01-08 23:10:24 +01:00
Steven O'Brien
67a6a12916
doc/user.xml: add alsa input section
2014-01-08 23:02:21 +01:00
Max Kellermann
139122c57f
Merge branch 'v0.18.x'
2014-01-08 22:14:12 +01:00
Max Kellermann
fdd76b3461
decoder/faad: fix memory leak
2014-01-08 22:11:00 +01:00
Max Kellermann
959d7ca9d0
valgrind.suppressions: add libsmbclient suppressions
2014-01-08 20:57:53 +01:00
Max Kellermann
e490e5d0ab
playlist/pls: don't free stack buffer
2014-01-08 19:50:44 +01:00
Max Kellermann
3b568b0943
playlist/pls: make variables more local
2014-01-08 19:50:10 +01:00
Max Kellermann
b2e1b38864
playlist/pls: convert "while" loop to "for" loop
2014-01-08 19:50:05 +01:00
Max Kellermann
5c6fe97b35
playlist/pls: simplify error handler
...
Don't pass a GError** to g_key_file_get_X(). We don't need to dispose
something we didn't request in the first place.
2014-01-08 19:49:34 +01:00
Max Kellermann
2071070f39
DespotifyUtils: return Tag, not pointer
2014-01-08 19:49:27 +01:00
Max Kellermann
89a78a5f3c
DespotifyUtils: pass const ds_track reference
2014-01-08 19:49:21 +01:00
Max Kellermann
bc23a6bb05
tag/TagBuilder: overload Commit() returning a Tag object
2014-01-08 19:49:08 +01:00
Max Kellermann
ac1983eae3
tag/TagBuilder: rename Commit() to CommitNew()
2014-01-08 19:48:55 +01:00
Steven O'Brien
33c5fc95b4
input/AlsaInputPlugin: remove unnecessary alsa s/w param setting to fix high CPU load issue
2014-01-08 14:00:42 +01:00
Max Kellermann
6a953394f4
SongSticker: use Song references
2014-01-08 00:41:08 +01:00
Max Kellermann
c152a88ff6
PlayerThread: use Song references
2014-01-08 00:36:59 +01:00
Max Kellermann
cbf57e7421
DecoderThread: use Song references
2014-01-08 00:35:28 +01:00
Max Kellermann
3f3ae48ff4
test: add missing includes
2014-01-07 23:57:39 +01:00
Max Kellermann
27ca0db7a6
util/Alloc: new library replacing GLib's g_malloc()
2014-01-07 23:35:18 +01:00
Max Kellermann
49f34fbf68
DecoderBuffer: use NewVarSize()
2014-01-07 23:31:26 +01:00
Max Kellermann
fe6094a822
tag/TagPool: use NewVarSize() to allocate TagPoolSlot
2014-01-07 23:24:59 +01:00
Max Kellermann
8a30c7992d
tag/TagPool: rename struct slot to TagPoolSlot
2014-01-07 23:12:24 +01:00
Max Kellermann
70eb9335bd
tag/TagPool: use gcc_packed instead of mpd_packed
...
By accident, this declared a global variable instead of adding the
"packed" attribute.
2014-01-07 23:11:00 +01:00
Max Kellermann
da80f91e1c
Directory: make some code generic, move to VarSize.hxx
2014-01-07 23:10:56 +01:00
Max Kellermann
cc60d193ce
Directory: use g_malloc() instead of g_malloc0()
...
Explicit attribute initialization.
2014-01-07 23:10:56 +01:00
Max Kellermann
3a05c421e0
doc/user: fix typo
2014-01-07 18:06:58 +01:00
Max Kellermann
0f99410ba1
playlist/soundcloud: parse URI without copying it
2014-01-07 10:21:42 +01:00
Max Kellermann
442dadd6fe
playlist/soundcloud: change scheme check to assertion
...
The MPD core takes care for checking the scheme.
2014-01-07 09:40:31 +01:00
Max Kellermann
da9dd58f34
playlist/soundcloud: eliminate nullptr checks before g_free()
2014-01-07 09:27:50 +01:00
Max Kellermann
bd01d80ffc
pcm/Utils: remove unused function pcm_end_pointer()
2014-01-07 00:46:47 +01:00
Max Kellermann
7eda72d440
pcm/Volume: use number of samples instead of end pointer
2014-01-07 00:42:02 +01:00
Max Kellermann
c75339edcc
pcm/Format: change parameters/return values to ConstBuffer
2014-01-06 23:08:49 +01:00
Max Kellermann
b0b7244b3a
pcm/Format: use number of samples instead of end pointer
2014-01-06 22:42:33 +01:00
Max Kellermann
a9e849ff4f
DecoderBuffer: _read() returns ConstBuffer object
2014-01-06 22:17:30 +01:00
Max Kellermann
4c95a4d7c6
DecoderBuffer: add "pure" attributes
2014-01-06 22:16:56 +01:00
Max Kellermann
eac9fabd48
DecoderBuffer: add method _clear()
2014-01-06 21:59:43 +01:00
Max Kellermann
e2a08fa824
decoder/faad: make variables more local
2014-01-06 21:57:40 +01:00
Max Kellermann
d403749d09
decoder/faad: eliminate local variable "ret"
2014-01-06 21:57:40 +01:00
Max Kellermann
582c2105a9
event/Loop: cancel the WakeFD monitor in destructor
2014-01-06 21:57:40 +01:00
Steven O'Brien
f39a34ccfa
input/AlsaInputPlugin.cxx: use I/O thread to poll for available data
...
[mk: modified to use MultiSocketMonitor instead of SocketMonitor]
2014-01-06 18:27:44 +01:00
Max Kellermann
08f5b9f1f9
event/MultiSocketMonitor: add method ClearSocketList()
2014-01-06 18:27:26 +01:00
Max Kellermann
793962c5b8
event/SocketMonitor: don't close the socket automatically
...
Users now have to call Close() explicitly. This simplifies using the
class, as most users have automatic socket management already, and
Steal() had to be used often.
2014-01-06 18:26:55 +01:00
Max Kellermann
0d20130d07
util/Cast: new utility library
2014-01-06 18:21:45 +01:00
Max Kellermann
617090cfda
event/IdleMonitor: cancel in destructor only if active
...
Debug-mode workaround for bogus assertion failure.
2014-01-06 18:21:45 +01:00
Max Kellermann
a9e604d51d
event/MultiSocketMonitor: API documentation
2014-01-06 08:59:27 +01:00
Max Kellermann
e599b86424
event/Loop: try to avoid the WakeFD when adding DeferredMonitor
...
Add a flag that indicates whether the EventLoop is currently "busy".
As long as that flag is set, it does not need to be woken up - we can
simply add the DeferredMonitor to the list, and it will be caught by
EventLoop very soon. This eliminates nearly all of the
DeferredMonitor overhead when compared to IdleMonitor, rendering
IdleMonitor mostly obsolete.
2014-01-05 02:15:34 +01:00
Max Kellermann
da9e584921
event/Loop: combine multiple WakeFD::Write() calls
...
Reduce DeferredMonitor overhead.
2014-01-05 02:15:10 +01:00
Max Kellermann
e9d764d7ad
event/Loop: add attribute "again"
...
Improved support for added events.
2014-01-05 02:15:01 +01:00
Max Kellermann
6268955778
event/Loop: add thread-safety assertions
2014-01-05 02:14:31 +01:00
Max Kellermann
4ddfc6e9a2
output/httpd: move the clients.clear() call to the IOThread
...
This call is not thread-safe.
2014-01-05 02:13:35 +01:00
Max Kellermann
dcbc05a9cd
output/httpd: import GetEventLoop()
2014-01-05 02:13:21 +01:00
Max Kellermann
4c705334fa
ClientList: use "delete" instead of Client::Close()
...
Client::Close() installs a TimeoutMonitor, which is not something we
should do during shutdown.
2014-01-05 02:07:49 +01:00
Max Kellermann
c12da599b9
event/Loop: remove obsolete assertion
2014-01-05 01:41:03 +01:00
Max Kellermann
f685a48008
event/Loop: move code to HandleDeferred()
2014-01-05 01:35:12 +01:00
Max Kellermann
7c15e41da5
event/MultiSocketMonitor: add missing <algorithm> include
...
For std::find_if().
2014-01-05 01:35:12 +01:00
Max Kellermann
7b540f0226
event/MultiSocketMonitor: add method ReplaceSocketList()
...
Move code from AlsaMixerPlugin.
2014-01-05 01:28:36 +01:00
Max Kellermann
e29c22e662
event/MultiSocketMonitor: include cleanup
2014-01-05 00:39:29 +01:00
Max Kellermann
f0d3b47ad8
event/Loop: remove the GLib implementation
...
Now that the remaining known bugs in poll() implementation are fixed,
we can go on without the GLib implementation.
2014-01-04 19:31:23 +01:00
Max Kellermann
bfe7533546
output/httpd: move Bind()/Unbind() to the IOThread
...
Fixes more thread-safety bugs.
2014-01-04 19:29:51 +01:00
Max Kellermann
880bf17dae
event/poll: eliminate one vector::size() call
2014-01-04 19:10:21 +01:00
Max Kellermann
c9da3363a0
output/httpd: move all broadcast operations to the IOThread
...
Add a Page queue to class HttpdOutput, and use DeferredMonitor to
flush this queue inside the IOThread. This fixes a thread-safety
issue: much of EventLoop is not thread-safe, and the httpd plugin
ignored that problem.
2014-01-04 18:22:55 +01:00
Max Kellermann
9bd4ed3e60
output/httpd: use the IOThread
...
Do all I/O in the IOThread and not in the main thread. This solves an
upcoming deadlock problem.
2014-01-04 18:21:40 +01:00
Max Kellermann
68fcc19565
output/httpd: move queue size check to HttpdClient::PushPage()
...
Don't let the server care for client problems.
2014-01-04 17:42:03 +01:00
Max Kellermann
8e4efd071e
output/httpd: wrap the std::list in std::queue
2014-01-04 17:12:59 +01:00
Max Kellermann
f2ad9f6fad
output/httpd: merge duplicate code to ClearQueue()
2014-01-04 17:11:22 +01:00
Max Kellermann
968c5eb767
output/httpd: keep track of queue size
...
Don't iterate the std::list each time.
2014-01-04 17:06:05 +01:00
Max Kellermann
19424e95db
event/Loop: remove bogus "!quit" assertion
...
Commit 1f11959 allowed modifying the "quit" attribute from any thread,
and thus the assertion may fail spuriously. This assertion is too
strict for the relaxed use of "quit". Let's remove it and move the
"quit" check to before the SockedMonitor::Dispatch() call.
2014-01-04 17:06:05 +01:00
Max Kellermann
0f9ef2506f
event/Loop: remove unused method AddCall()
2014-01-04 16:00:45 +01:00
Max Kellermann
1f1195975f
event/Loop: non-recursive Break() implementation
...
Simply set the "quit" flag and wake up the thread. This works even if
we're inside this thread. Setting "quit" to a new value without mutex
protection is usually not safe, but good enough here.
2014-01-04 15:59:00 +01:00
Max Kellermann
87fce8ef27
mixer/alsa: use DeferredMonitor to update file descriptors
...
EventLoop::AddCall() and EventLoop::AddIdle() are unsafe, because we
can't cancel those calls.
2014-01-04 15:58:59 +01:00
Max Kellermann
d2a4f64fd6
event/BlockingCall: always use DeferredMonitor internally
...
There is no advantage of using EventLoop::AddCall(), now that
DeferredMonitor is thread-safe.
2014-01-04 15:58:59 +01:00
Max Kellermann
a357d84dce
event/DeferredMonitor: make fully thread-safe
...
Instead of creating a new eventfd for each DeferredMonitor instance,
reuse EventLoop's eventfd, and add a std::list to EventLoop that
manages the list of pending DeferredMonitors. This std::list is
protected by the same mutex as the "calls" list.
The bottom line is: reduced overhead because the per-instance eventfd
was eliminated, slightly added overhead due to Mutex usage (but
negligible), and we're thread-safe now.
This subsystem is now good enough to replace EventLoop::AddCall().
2014-01-04 15:58:59 +01:00
James McGlashan (DarkFox)
48c96bbaea
Added application key for soundcloud plugin
2014-01-04 14:01:17 +01:00
James McGlashan (DarkFox)
c666794ce3
Added soundcloud documentation
2014-01-04 14:01:12 +01:00
James McGlashan (DarkFox)
1ee3df6976
Added user and search paramaters for SoundCloud plugin
2014-01-04 13:36:24 +01:00
James McGlashan (DarkFox)
d4dea53ae9
http -> https for SoundCloud plugin
2014-01-02 12:29:45 +01:00
Max Kellermann
d477a9222e
output/httpd: change "struct" to "class"
2013-12-31 17:04:40 +01:00
Max Kellermann
69a9d29190
output/httpd: move code to methods Delay(), Play(), Cancel()
2013-12-31 17:01:08 +01:00
Max Kellermann
e2425592b6
output/httpd: move Cast() into the class
2013-12-31 16:59:24 +01:00
Max Kellermann
964b2661d8
output/httpd: add methods Init(), Finish()
2013-12-31 16:55:26 +01:00
Max Kellermann
8b65b524d5
output/httpd: use reference instead of pointer
2013-12-31 16:32:33 +01:00
Max Kellermann
f1ac2cd336
output/httpd: make the HttpdClient base class "private"
2013-12-31 16:24:51 +01:00
Max Kellermann
e73d0df2b6
event/*Monitor: document as not being thread-safe
2013-12-31 15:59:41 +01:00
Max Kellermann
af3f483924
event/Loop: document that AddCall() is thread-safe
2013-12-31 15:31:59 +01:00
Max Kellermann
809b0eb1f5
command: "lsinfo" and "readcomments" allowed for remote files
2013-12-29 18:25:32 +01:00
Max Kellermann
b5f3bfce92
SongUpdate: read tags from songs in an archive
...
Add the TagStream.cxx library, similar to TagFile.cxx, and use it to
load tags from song files inside archives.
2013-12-29 18:15:30 +01:00
Max Kellermann
aeb2baa495
InputStream: add static method OpenReady()
...
Merge some duplicate code.
2013-12-29 18:08:49 +01:00
Max Kellermann
afc70c120e
util/UriUtil: uri_get_suffix() fails if name begins with dot
...
A file called ".jpg" is not a JPEG file with an empty name; it is
merely a hidden file.
2013-12-29 17:40:51 +01:00
Max Kellermann
ea9aff1d3f
TagFile: rewind the stream before trying the next plugin
...
Got lost in commit c97685fe
2013-12-29 17:09:59 +01:00
Max Kellermann
cecae419fb
DecoderList: add "pure" attribute
2013-12-29 17:06:59 +01:00
Max Kellermann
df4db50904
DecoderList: add function decoder_plugins_supports_suffix()
...
Replaces decoder_plugin_from_suffix().
2013-12-29 16:59:57 +01:00
Max Kellermann
decc4002a0
DecoderThread: use decoder_plugins_try()
...
.. instead of decoder_plugin_from_suffix(). This reduces overhead by
walking the array only once.
2013-12-29 16:51:18 +01:00
Max Kellermann
5bb563e3bc
UpdateContainer: pass suffix instead of DecoderPlugin
...
Instead of using the first DecoderPlugin that supports the suffix, use
the first one that actually implements the "container_scan" method.
2013-12-29 16:46:02 +01:00
Max Kellermann
9be82891b0
TagFile: pass reference instead of pointer
2013-12-29 16:24:04 +01:00
Max Kellermann
c97685fe6c
TagFile: use decoder_plugins_try()
...
.. instead of decoder_plugin_from_suffix(). This reduces overhead by
walking the array only once.
2013-12-29 16:13:11 +01:00
Max Kellermann
358b671033
DecoderList: remove unused function decoder_plugin_from_mime_type()
2013-12-29 15:53:55 +01:00
Max Kellermann
92a4bf4441
Merge branch 'v0.18.x'
2013-12-29 14:18:19 +01:00
Max Kellermann
d7f80eab68
configure.ac: improved check for libyajl 1.0
...
If we have libyajl 2.0.1 (without a pkg-config file), our configure.ac
would assume this is the libyajl 1.0 API, because the function
yajl_alloc() exists in both. This commit changes the library check to
the function yajl_parse_complete() which was removed in the 2.0 API.
This fixes build failure with libyajl 2.0.1.
2013-12-29 14:12:33 +01:00
Max Kellermann
e30b356eb0
daemon: no initgroups() when already running as the configured user
...
We can assume that initgroups() would be a no-op in that case, however
initgroups() is not allowed for unprivileged users anyway.
2013-12-29 13:59:05 +01:00
Max Kellermann
09a0803116
Daemon: fix typo in comment
2013-12-29 13:59:05 +01:00
Max Kellermann
20ffedc745
Daemon: simplify nested "if"
2013-12-29 13:57:12 +01:00
Max Kellermann
0b1ad27ba8
Daemon: fix typo in cast
2013-12-29 13:47:29 +01:00
Max Kellermann
6a1b2f0387
configure.ac: prepare for 0.18.7
2013-12-29 10:40:59 +01:00
Max Kellermann
5465647c2e
input/smbclient: new input plugin
2013-12-29 01:25:27 +01:00
Max Kellermann
a2baeed329
ls: add "pure" attribute
2013-12-29 01:25:27 +01:00
Max Kellermann
92aa464edb
pcm/Volume: remove unused function pcm_volume_dither()
2013-12-28 18:39:26 +01:00
Max Kellermann
da29298d4d
pcm/PcmMix: improved dithering
...
Use the existing PcmDither library.
2013-12-28 18:30:27 +01:00
Max Kellermann
afcf0795c4
pcm/Volume: improved dithering
...
Instead of just adding a rectangular random value before shifting back
to the normal scale, use the existing PcmDither library.
2013-12-28 18:30:24 +01:00
Max Kellermann
394e2815db
pcm/PcmDither: inline Dither24To16() and Dither32To16()
2013-12-28 18:30:13 +01:00
Max Kellermann
f3bbe4bb1f
pcm/Volume: remove optimized i386 assembly
...
This code is unable to dither. Until we implement that, let's remove
the code for now. i386 isn't relevant anymore anyway.
2013-12-28 17:24:54 +01:00
Max Kellermann
2a3a18a283
pcm/Traits: use 32 bit integer for S8 long_type
...
16 bit is not enough for volume calculations.
2013-12-25 12:28:18 +01:00
Max Kellermann
431c80f4f0
pcm/Dither: add API documentation
2013-12-24 23:45:38 +01:00
Max Kellermann
9ac18c39a1
pcm/Dither: move shift from DitherConvert() to Dither()
...
All callers need this shift, so let's move it to the basic method.
2013-12-24 23:39:29 +01:00
Max Kellermann
d1b7473418
pcm/Dither: rename DitherShift() to DitherConvert()
2013-12-24 23:38:11 +01:00
Max Kellermann
1ad52f131c
test/*: use fprintf(stderr,...) and Log() instead of g_printerr()
...
Avoid GLib.
2013-12-24 14:44:08 +01:00
Max Kellermann
8064bbbc3f
test/*: remove GLib logging setup
...
Obsolete, our logging library doesn't ues GLib anymore.
2013-12-24 14:13:03 +01:00
Max Kellermann
64e898f6db
Merge tag 'release-0.18.6'
2013-12-24 12:20:24 +01:00
Max Kellermann
fb34519b96
release v0.18.6
2013-12-24 12:01:01 +01:00
Max Kellermann
91fed47648
PlayerThread: log the last song that was played
2013-12-24 11:58:10 +01:00
Max Kellermann
c05691b546
OutputControl: update both ReplayGainFilters
...
The "mode" of the second ReplayGainFilter was never set, and thus
replay gain was never applied to the new song during cross-fade.
2013-12-24 11:53:21 +01:00
Max Kellermann
1732166328
OutputThread: handle failing ReplayGainFilter::Open()
...
Since opening the PcmVolume object can now fail, this case must be
handled.
2013-12-24 10:52:33 +01:00
Max Kellermann
8edde7a4b3
pcm/Volume: convert to class
...
Prepare for adding state.
2013-12-23 10:58:37 +01:00
Max Kellermann
d11a0c9f14
pcm/Volume: apply volume into destination buffer
2013-12-23 10:55:29 +01:00
Max Kellermann
7be2abe6b5
pcm/Volume: convert i386 code to template specialization
2013-12-23 10:35:35 +01:00
Max Kellermann
4a62cd4ad8
pcm/Volume: move code to template pcm_volume_sample()
2013-12-23 10:35:23 +01:00
Max Kellermann
6d21b9448a
pcm/PcmVolume: rename to Volume.cxx
2013-12-23 10:35:21 +01:00
Max Kellermann
2d1a3073f6
pcm/PcmConvert: move the Domain instance to Domain.cxx
...
Rename pcm_convert_domain to pcm_domain. Move it out so we can use it
without depending on the whole PcmConvert library.
2013-12-23 10:35:19 +01:00
Max Kellermann
d7b9886387
ConfigData: initialise "used" in second constructor
2013-12-23 10:31:29 +01:00
Max Kellermann
1543e529f1
pcm/Dither: convert remaining methods to templates
...
Use the SampleTraits template and let the compiler generate a special
case for S32 instead of reusing S24_P32.
2013-12-22 22:18:06 +01:00
Max Kellermann
4043f320fe
pcm/Dither: generic sample dithering using template
2013-12-22 22:06:25 +01:00
Max Kellermann
32b834aa04
pcm/Traits: include stddef.h for size_t
2013-12-22 22:06:25 +01:00
Max Kellermann
b43ec3d6f0
pcm/Traits: add MIN and MAX
...
Move from PcmClamp().
2013-12-22 21:32:25 +01:00
Max Kellermann
316a25dead
pcm/Volume: add constant PCM_VOLUME_BITS
2013-12-22 21:31:17 +01:00
Max Kellermann
bfe020e06c
pcm/Volume: make PCM_VOLUME_1 a "constexpr"
2013-12-22 21:20:40 +01:00
Max Kellermann
5aae560683
pcm/Prng: make pcm_prng() inline
2013-12-22 21:20:38 +01:00
Max Kellermann
86e72ffefb
util/Clamp: generic Clamp() function
2013-12-22 21:08:06 +01:00
Max Kellermann
6416198e9f
event/PollGroupPoll: include stddef.h instead of string.h
2013-12-21 21:21:25 +01:00
Max Kellermann
3c4cd9d08b
input/alsa: fix build with gcc 4.6
2013-12-21 21:21:25 +01:00
Steven O'Brien
6b3b8c6f2e
fix FfmpegDecoderPlugin to use relative timestamps
2013-12-20 22:28:33 +01:00
Max Kellermann
fdb02ee5ca
configure.ac: skip Linux specific tests on other OSs
2013-12-20 21:38:07 +01:00
Steven O'Brien
35f85ddd86
add draft ALSA input plugin
...
I've created an elementary input plugin that plays sound from the
soundcard, so you can use MPD to listen to anything connected to the
line-in jack, or to Video4Linux FM radio cards that send audio through
the soundcard. There has been a small number of posts here in the
past requesting line-in input, so here is a first, simplistic stab at
it.
The patch adds a new sheme, alsa://, which causes mpd to play data
read directly from a souncdard. It defaults to hw:0,0, but you can
pass any ALSA device name in the URI. So, using mpc for example:
mpc add alsa://
mpc play
will play from device hw:0,0.
To use a diffferent device:
mpc add alsa://hw:1,0
2013-12-19 23:25:50 +01:00
Max Kellermann
e30fa7d15e
configure.ac: add variable $host_is_unix
2013-12-19 12:59:01 +01:00
Max Kellermann
c476305149
configure.ac: add variable $host_is_solaris
2013-12-19 12:55:43 +01:00
Max Kellermann
45ad7696fe
output/osx: fix typo
2013-12-19 12:46:21 +01:00
Max Kellermann
d86cd4e4b4
util/fifo_buffer: remove obsolete library
2013-12-19 12:17:09 +01:00
Max Kellermann
0e84d71559
output/osx: use DynamicFifoBuffer instead of struct fifo_buffer
2013-12-19 12:16:29 +01:00
Max Kellermann
5f14704eee
configure.ac: increment protocol version to 0.19.0
...
Due to recent protocol additions ("addtagid", "cleartagid").
2013-12-19 12:16:29 +01:00
Max Kellermann
a191db84f2
util/Error: add missing <algorithm> include
...
For std::move().
2013-12-19 10:58:20 +01:00
Max Kellermann
52dca859c7
util/PeakBuffer: use IsEmpty() instead of IsNull()
...
The DynamicFifoBuffer methods never return nullptr when the buffer is
empty or full; instead, they return an empty buffer. This bug caused
an endless loop.
2013-12-19 10:30:26 +01:00
Michal Smucr
e4d69f38b0
riff: recognize upper-case "ID3" chunk name
...
Some tagging libraries (eg. TagLib) produce that variant.
2013-12-19 09:35:54 +01:00
Max Kellermann
97fc001180
input/cdio: fix typo in #include path
...
Broken by commit 3b0fea5f
2013-12-17 08:58:00 +01:00
Max Kellermann
f544316314
util/{Domain,Error}: relicense to BSD 2-clause
2013-12-16 22:42:01 +01:00
Max Kellermann
ecdebb315f
util/PeakBuffer: use DynamicFifoBuffer instead of struct fifo_buffer
...
Switch to the C++ version.
2013-12-15 23:07:08 +01:00
Max Kellermann
1f523be72d
util/PeakBuffer: return ConstBuffer<void>
2013-12-15 23:07:08 +01:00
Max Kellermann
f2a20a0a80
util/WritableBuffer: add cast methods
2013-12-15 23:01:06 +01:00
Max Kellermann
e5a2efaa65
util/WritableBuffer: fix indent
2013-12-15 22:58:32 +01:00
Max Kellermann
c44cb3246d
util/DynamicFifoBuffer: make constructor "explicit"
2013-12-15 22:35:21 +01:00
Max Kellermann
9cfd9d7ce0
Merge branch 'v0.18.x'
2013-12-15 19:17:40 +01:00
Max Kellermann
42a09ff17a
mixer/alsa: fix deadlock
...
This deadlock was a regression by commit 8e38b4f8 . Since we currently
can't resolve this, let's revert the commit, and add a GLib specific
workaround for the build failure.
2013-12-15 19:07:25 +01:00
Max Kellermann
66d90dd412
test/*: use fprintf(stderr,...) and Log() instead of g_printerr()
...
Avoid GLib.
2013-12-15 18:52:13 +01:00
Max Kellermann
d5dfe7d457
configure.ac: add option "--disable-glib"
...
Allows building without GLib. This fails to compile currently,
because GLib is still used in the MPD core.
2013-12-15 18:43:12 +01:00
Max Kellermann
0db0b4e302
Daemon: use strdup() instead of g_strdup()
2013-12-15 18:43:12 +01:00
Max Kellermann
635d6a19ef
util/Tokenizer, ...: include cleanup
2013-12-15 18:33:26 +01:00
Max Kellermann
777844ae0c
system/SocketError, ...: use strerror() instead of g_strerror()
...
Avoid GLib.
2013-12-15 18:32:07 +01:00
Max Kellermann
a10a4ad900
LogInit: move backend code to LogBackend.cxx
2013-12-15 18:27:52 +01:00
Max Kellermann
c330d694c7
Log: move Log() to LogBackend.cxx
...
Prepare for GLib removal.
2013-12-15 17:32:41 +01:00
Max Kellermann
73555f9088
Log: move enum LogLevel to LogLevel.hxx
2013-12-15 17:23:45 +01:00
Max Kellermann
e1ec65bd53
UriUtil: add function uri_get_scheme()
...
Replaces g_uri_parse_scheme().
2013-12-15 17:06:10 +01:00
Max Kellermann
65b8e52d80
output/alsa: use new[] instead of g_malloc()
2013-12-14 22:17:19 +01:00
Max Kellermann
4b7a418e28
playlist/soundcloud: fix coding style
2013-12-14 22:09:27 +01:00
Max Kellermann
73d917b76e
playlist/soundcloud: make variables more local
2013-12-14 22:08:45 +01:00
Max Kellermann
527a6003e2
input/despotify: don't log "eof" flag after setting it
2013-12-14 13:58:28 +01:00
Max Kellermann
26c731a382
input/despotify: convert to class
2013-12-14 13:49:56 +01:00
Max Kellermann
8297563978
decoder/flac: simplify the comment parsers
2013-12-14 13:44:57 +01:00
Max Kellermann
1da0526072
decoder/flac: VorbisComment_Entry is null-terminated
...
Don't duplicate the buffer just to null-terminate the string.
According to libFLAC API documentation, the string is already
null-terminated.
2013-12-14 13:44:57 +01:00
Max Kellermann
635a67afac
util/SplitString: new utility class
...
To replace g_strdup().
2013-12-14 12:58:26 +01:00
Max Kellermann
c7e7c819a2
decoder/vorbis: remove useless cast
2013-12-14 12:53:59 +01:00
Max Kellermann
fbf677d9b2
decoder/mad: use new[] instead of g_malloc()
2013-12-14 12:50:51 +01:00
Max Kellermann
d37b788ea8
DecoderAPI: add function decoder_read_full()
...
Move code from the "mad" plugin.
2013-12-14 12:43:06 +01:00
Max Kellermann
cb336ff666
DecoderAPI: add function decoder_skip()
...
Move code from the "mad" plugin.
2013-12-14 12:40:43 +01:00
Max Kellermann
e2e5433beb
test: merge duplicate code to FakeDecoderAPI.cxx
2013-12-14 12:40:24 +01:00
Max Kellermann
c7b1038a9d
Merge branch 'v0.18.x'
2013-12-14 12:37:16 +01:00
Max Kellermann
c170fed6f9
.gitignore: ignore "test-driver"
...
File generated by automake version 1.14.
2013-12-14 12:33:20 +01:00
Max Kellermann
d43aa12987
Tag: swap "base" and "add" in method Merge()
...
Fixes broken CUE sheet song tags (regression by commmit 7e8d254b ).
2013-12-13 15:53:58 +01:00
Max Kellermann
8e38b4f83c
mixer/alsa: use BlockingCall() instead of EventLoop::AddCall()
...
This is safer, and works without epoll(). Fixes a build failure with
uClibc, which does not support epoll().
2013-12-13 14:35:36 +01:00
Max Kellermann
db4ae19246
doc/mpd.conf.5: remove redundant documentation
...
The real and detailed documentation is in the user manual.
2013-12-11 21:04:28 +01:00
Max Kellermann
82a89c6bfe
doc/user: document the "ao" output
...
Move from doc/mpd.conf.5.
2013-12-11 21:03:11 +01:00
Max Kellermann
166c70cab3
doc/user: document the "fifo" output
...
Move from doc/mpd.conf.5.
2013-12-11 20:58:06 +01:00
Max Kellermann
de78fe38c8
doc/user: document shout option "protocol"
2013-12-11 20:54:42 +01:00
mobidyc
96fa69ff6b
SongUpdate: accept files without metadata
...
If the file was recognized by a decoder plugin, accept it - don't
require metadata.
2013-12-10 19:34:35 +01:00
Max Kellermann
39d94bd3ea
TagFile: add return value API documentation
2013-12-10 19:32:26 +01:00
Lukas Stabe
695ca29274
output/osx: fix build failure
2013-12-10 19:19:31 +01:00
Max Kellermann
02e8da6c98
NEWS: add openal line
2013-12-10 19:19:27 +01:00
Denis Krjuchkov
ca69ad8beb
CommandLine: refactor config search, use standard directory API
2013-12-08 17:25:20 +06:00
Denis Krjuchkov
e42637226f
Main: use standard directory API
2013-12-08 17:25:19 +06:00
Denis Krjuchkov
ae25582178
ConfigPath: use standard directory API
2013-12-08 17:25:19 +06:00
Denis Krjuchkov
5d85792178
fs: implemented standard directories API
2013-12-08 17:24:43 +06:00
Denis Krjuchkov
acba9c0f61
TextFile: move to fs subsystem
2013-12-08 04:15:27 +06:00
Max Kellermann
ad7302a032
util/DynamicFifoBuffer: new class replacing growing_fifo
2013-12-05 11:49:21 +01:00
Max Kellermann
9f3bead99f
test/run_encoder: destruct the Encoder before exiting
2013-12-05 11:49:21 +01:00
Denis Krjuchkov
38afc89407
fs/FileSystem.hxx: don't define CheckAccess() with mode on Windows
2013-12-05 15:05:01 +06:00
Denis Krjuchkov
c161bb287c
db/SimpleDatabasePlugin.cxx: don't use CheckAccess with mode on Windows
2013-12-05 15:05:01 +06:00
Denis Krjuchkov
06d7169674
fs/FileSystem.hxx: add CheckAccess without mode parameter
2013-12-05 15:05:01 +06:00
Denis Krjuchkov
8bf1640932
fs/Traits.cxx: don't return drive path without trailing separator
2013-12-05 15:05:01 +06:00
Denis Krjuchkov
da50c888fe
fs/Traits.hxx: introduce PathTraitsXXX::IsDrive function
2013-12-05 15:05:01 +06:00
Denis Krjuchkov
62dc8e4131
fs/Charset.cxx: replace \ with / when converting path to UTF-8 on Windows
2013-12-05 15:04:52 +06:00
Denis Krjuchkov
dc554ca61f
PlaylistSong.cxx: don't use g_build_filename
2013-12-05 12:35:29 +06:00
Denis Krjuchkov
cbb9149a82
fs/Traits.hxx: add shorter forms of PathTraitsXXX::Build()
2013-12-05 12:35:28 +06:00
Denis Krjuchkov
dab7348da8
fs/Traits.hxx: add PathTraitsUTF8::GetLength for consistency
2013-12-05 12:35:28 +06:00
Denis Krjuchkov
378e8a6224
fs/AllocatedPath.cxx: don't use g_path_get_dirname
2013-12-05 12:35:28 +06:00
Denis Krjuchkov
289fdcc52b
fs/Traits: implement GetBase/GetParent/Build using templates
2013-12-05 12:35:21 +06:00
Denis Krjuchkov
83e6e3e31f
fs/Traits.cxx: don't return empty string if parent dir is root
2013-12-05 12:27:31 +06:00
Denis Krjuchkov
c387031252
fs/Traits.hxx: add FindLastSeparator function to PathTraitsXXX
2013-12-05 04:09:07 +06:00
Denis Krjuchkov
403bd77eff
fs/Traits: improve compatibility between PathTraitsFS and PathTraitsUTF8
2013-12-05 04:01:29 +06:00
Denis Krjuchkov
b397c46184
fs/Traits.hxx: add gcc_nonnull_all where applicable
2013-12-05 03:56:51 +06:00
Denis Krjuchkov
0a6c4c31b2
fs/Traits: split PathTraits type into PathTraitsFS and PathTraitsUTF8
2013-12-05 03:53:43 +06:00
Max Kellermann
02fcf184b5
tag/ApeLoader: use new[]/delete[] instead of g_malloc()/g_free()
2013-12-04 15:21:10 +01:00
Max Kellermann
b978126bb0
DirectorySave: don't duplicate string
...
Not necessary anymore for playlist_metadata_load().
2013-12-04 15:11:23 +01:00
Max Kellermann
9f51d19087
PlaylistFile: use std::string for temporary string allocation
2013-12-04 15:07:45 +01:00
Max Kellermann
859184000f
Mapper: update API documentation
2013-12-04 15:04:54 +01:00
Max Kellermann
1ad2f18c9e
IcyMetaDataParser: use new[]/delete[] instead of g_malloc()/g_free()
2013-12-04 15:03:39 +01:00
Max Kellermann
06a49a5f9e
TagId3: make variables more local
2013-12-04 14:52:34 +01:00
Max Kellermann
b811927e0e
TagId3: use std::string for partial string copy
2013-12-04 14:43:09 +01:00
Max Kellermann
83cdd0a0c8
TagId3: use free() instead of g_free() for libid3tag allocations
2013-12-04 14:39:30 +01:00
Max Kellermann
53c69cd2ce
TagId3: use new[]/delete[] instead of g_malloc()/g_free()
2013-12-04 14:36:13 +01:00
Max Kellermann
c6cf8e992d
TagId3: gcc_unlikely instead of G_UNLIKELY
2013-12-04 14:35:16 +01:00
Max Kellermann
0c53e8c2d0
system/Resolver: use std::string to allocate internal buffer
...
No GLib memory allocation.
2013-12-04 14:27:28 +01:00
Max Kellermann
e1901e97c2
system/Resolver: sockaddr_to_string() returns std::string()
...
No GLib memory allocation.
2013-12-04 08:43:55 +01:00
Max Kellermann
d694150372
Tag: destructor calls Clear()
...
Eliminate duplicate code.
2013-12-03 13:19:45 +01:00
Max Kellermann
4ab586aaf1
Tag: use new[]/delete[] instead of g_new()/g_free()
2013-12-03 13:16:43 +01:00
Max Kellermann
8a5209ad93
Tag: remove method AddItem()
...
Use class TagBuilder instead.
2013-12-03 13:15:42 +01:00
Max Kellermann
308fdf6e9a
input/curl: use class TagBuilder
2013-12-03 13:14:11 +01:00
Max Kellermann
9f4e96fdfa
PaylistTag: use class TagBuilder
2013-12-03 12:59:55 +01:00
Max Kellermann
c36af35730
TagBuilder: add move operator
2013-12-03 12:59:33 +01:00
Max Kellermann
424f478c3f
TagBuilder: reserve items in move constructor
2013-12-03 12:59:32 +01:00
Max Kellermann
5e0c272061
TagBuilder: make conversion constructors "explicit"
2013-12-03 12:53:13 +01:00
Max Kellermann
d99bdca094
playlist/xspf: use class TagBuilder
2013-12-03 12:33:14 +01:00
Max Kellermann
187069bec9
playlist/xspf: rename "tag" to "tag_type"
2013-12-03 12:30:55 +01:00
Max Kellermann
01de768f09
playlist/soundcloud: use class TagBuilder
2013-12-03 12:30:00 +01:00
Max Kellermann
73a861abf1
playlist/rss: use class TagBuilder
2013-12-03 12:25:22 +01:00
Max Kellermann
b4f60ee95c
playlist/rss: rename "tag" to "tag_type"
2013-12-03 12:25:13 +01:00
Max Kellermann
85e587a882
playlist/pls: use class TagBuilder
2013-12-03 12:23:45 +01:00
Max Kellermann
d91f6dc1b5
playlist/extm3u: use class TagBuilder
2013-12-03 12:21:22 +01:00
Max Kellermann
78c0d8cc88
playlist/asx: use class TagBuilder
2013-12-03 12:15:43 +01:00
Max Kellermann
b23d2ad43b
playlist/asx: rename "tag" to "tag_type"
2013-12-03 12:14:55 +01:00
Max Kellermann
ef68946e74
CueParser: use class TagBuilder
2013-12-03 12:09:21 +01:00
Max Kellermann
a5574f9189
TagBuilder: implement the assignment operator
2013-12-03 12:09:21 +01:00
Max Kellermann
ba61a92897
CueParser: rename local variables "current_tag" to "tag"
2013-12-03 11:58:27 +01:00
Max Kellermann
68fc3704e9
CueParser: rename "tag" to "header_tag"
2013-12-03 11:55:32 +01:00
Max Kellermann
69867015e9
DespotifyUtils: use class TagBuilder
2013-12-03 11:46:31 +01:00
Max Kellermann
923f18ef76
IcyMetaDataParser: use class TagBuilder
2013-12-03 11:46:26 +01:00
Max Kellermann
7e8d254b95
Tag: move code from Merge() to TagBuilder::Complement()
2013-12-03 11:46:24 +01:00
Max Kellermann
6325c3f14a
TagBuilder: add Tag copy/move constructors
2013-12-03 11:46:23 +01:00
Max Kellermann
074a23e6b4
TagBuilder: add method HasType()
2013-12-03 11:46:21 +01:00
Max Kellermann
2fb61534a1
Merge branch 'master' of git://git.musicpd.org/dk/mpd
2013-12-03 11:46:04 +01:00
Max Kellermann
12b6c6ccf7
OutputAll: use new[]/delete[] instead of g_new()/g_free()
2013-12-03 10:51:50 +01:00
Denis Krjuchkov
55ed7bd34d
AllocatedPath.hxx: use move constructor
2013-12-03 14:57:26 +06:00
Denis Krjuchkov
eeeef3eab5
fs/AllocatedPath: use PathTraits::BuildFS
2013-12-03 13:50:50 +06:00
Denis Krjuchkov
96413b1604
fs/Traits.hxx: implement BuildFS() method
2013-12-03 13:46:05 +06:00
Denis Krjuchkov
2278fe42e5
fs/Traits.hxx: move definition of AllocatedPath::string to PathTraits
2013-12-03 13:37:35 +06:00
Denis Krjuchkov
3a183f869f
fs/Traits.hxx: add GetLengthFS()
...
There is no GetLengthUTF8() because strlen or std::string::size()
could be used instead.
2013-12-03 12:26:05 +06:00
Denis Krjuchkov
6c5828822c
fs/AllocatedPath.hxx: add FromFS(std::string) method
2013-12-03 12:16:53 +06:00
Denis Krjuchkov
9dd824ba50
fs/Traits.hxx: don't use g_path_is_absolute
2013-12-03 11:59:57 +06:00
Denis Krjuchkov
d744ea3fca
fs/Traits.hxx: simplify code
...
- Move definition of SEPARATOR_UTF8 out of #ifdef
- Remove duplicated check in IsSeparatorUTF8
2013-12-03 11:48:45 +06:00
Denis Krjuchkov
07352e82f1
PollGroupWinSelect: delete copy constructor and assignment operator
2013-12-03 11:43:26 +06:00
Denis Krjuchkov
1003cc9bf9
PollGroupWinSelect: uninline constructor and destructor
2013-12-03 11:41:36 +06:00
Lukas Stabe
0ea5f4ac3a
output/openal: check __APPLE__ instead of HAVE_OSX
...
On OSX, the configure-flag --enable-osx is used to enable the
unsupported osx output. It sets the HAVE_OSX preprocessor define.
src/output/OpenALOutputPlugin.cxx uses this define to determine wether
it is building on OSX, and imports different headers (which have
nothing to do with the osx output) depending on wether or not it is
set.
2013-12-02 13:08:52 +01:00
Max Kellermann
2b717997e2
command: add commands "addtagid", "cleartagid"
2013-12-02 12:50:27 +01:00
Max Kellermann
20ebacf489
Tag: add methods RemoveAll(), RemoveType()
2013-12-02 12:46:48 +01:00
Max Kellermann
c6ef0e8887
pcm/Traits: add typedef "sum_type"
...
Allow 32 bit platforms to use 32 bit instead of 64 bit for summing 24
bit samples.
2013-12-02 11:48:10 +01:00
Max Kellermann
f761d583b5
pcm/Traits: use int_leastX_t types
2013-12-02 11:47:17 +01:00
Max Kellermann
cee1ac150e
pcm/PcmChannels: implement fake N-to-M mapping
...
This is really just a mono mapper, but the important part is that this
library cannot fail anymore.
2013-12-02 11:42:19 +01:00
Max Kellermann
71b47ae3ef
pcm/PcmChannels: use the SampleTraits library
2013-12-02 11:28:54 +01:00
Max Kellermann
36e3fda554
pcm/Traits: add template specialization for FLOAT
2013-12-02 11:26:38 +01:00
Max Kellermann
2b44a2c9bd
pcm/PcmChannels: use struct ConstBuffer
2013-12-02 11:21:32 +01:00
Max Kellermann
af3b454805
pcm/PcmBuffer: add typed method GetT()
2013-12-02 11:21:32 +01:00
Max Kellermann
3a0f3eaa50
pcm/PcmUtils: use the SampleTraits library
2013-12-02 11:21:32 +01:00
Max Kellermann
80eb8d9e26
pcm/PcmUtils: remove unused function PcmClampN()
2013-12-02 11:21:32 +01:00
Max Kellermann
30c4136c4d
pcm/PcmVolume: use the SampleTraits library
2013-12-02 11:21:32 +01:00
Max Kellermann
83e4475021
pcm/PcmFormat: use SampleTraits::long_type in ConvertFromFloat()
2013-12-02 11:21:32 +01:00
Max Kellermann
c071d6d9f6
pcm/PcmPrng: add "constexpr"
2013-12-02 11:21:32 +01:00
Denis Krjuchkov
1df426aa5c
event: add poll() based PollGroup implementation
2013-12-02 14:39:52 +06:00
Max Kellermann
023482406f
pcm/PcmMix: use the SampleTraits library for MixRamp
2013-12-01 22:49:50 +01:00
Max Kellermann
04ba40981f
pcm/PcmMix: use the SampleTraits library
2013-12-01 22:44:16 +01:00
Max Kellermann
fc10bdf24d
pcm/SampleTraits: use 64 bit for S24 long_type
2013-12-01 22:44:16 +01:00
Max Kellermann
28ad79c97a
pcm/Traits: add typedef long_type
2013-12-01 19:32:48 +01:00
Max Kellermann
7661ad6653
pcm/Traits: add API documentation
2013-12-01 19:32:00 +01:00
Max Kellermann
e1436063ff
pcm/PcmFormat: move generic definitions to Traits.hxx
2013-12-01 19:24:37 +01:00
Max Kellermann
3e11a28cd9
pcm/SoxrResampler: new resampler option using libsoxr
2013-12-01 19:13:39 +01:00
Max Kellermann
3ed80f3139
pcm/ConfiguredResampler: convert boolean flag to enum
...
Prepare for adding more resamplers.
2013-12-01 19:13:39 +01:00
Max Kellermann
a698cc8112
doc: move documentation from mpd.conf.5 to the user manual
2013-12-01 19:13:39 +01:00
Max Kellermann
916aaacb68
doc/user: remove obsolete "24_3" option
2013-12-01 19:13:39 +01:00
Max Kellermann
aaeb8150b7
NEWS: prepare for 0.19
2013-12-01 19:13:39 +01:00
Max Kellermann
5ba90cd8ea
pcm/PcmResampler: convert to abstract interface
...
The PcmResampler interface is implemented by the two classes
FallbackPcmResampler and LibsampleratePcmResampler. This prepares for
adding more resampler libraries.
2013-11-30 16:22:57 +01:00
Max Kellermann
e9127523db
pcm/PcmConvert: move code to new class GluePcmResampler
2013-11-30 14:10:31 +01:00
Max Kellermann
92004f2e7e
pcm/PcmConvert: move code to new class PcmChannelsConverter
2013-11-30 13:22:25 +01:00
Max Kellermann
0eefc7a43c
pcm/PcmConvert: move code to new class PcmFormatConverter
2013-11-30 13:08:55 +01:00
Max Kellermann
3a666702af
pcm/PcmConvert: add AudioFormat parameters
...
Don't use src_format. In the middle of Convert(), the current
AudioFormat has already been modified, it's now something in between
src_format and dest_format. This simplifies keeping track of what
remains to be done.
2013-11-30 13:00:41 +01:00
Max Kellermann
3c0c939689
pcm/PcmConvert: use struct ConstBuffer internally
2013-11-29 22:48:23 +01:00
Max Kellermann
413f7c64e5
pcm/PcmDsd: use struct ConstBuffer
2013-11-29 22:06:14 +01:00
Max Kellermann
6f47c1ca20
util/ConstBuffer: new utility class
2013-11-29 22:06:04 +01:00
Max Kellermann
abeebfe070
pcm/PcmDsd: make attributes private
2013-11-29 22:05:29 +01:00
Max Kellermann
1a002eb23d
PcmConvert: add pcm_convert_global_init()
...
Wrapper for pcm_resample_global_init(), just in case other PCM
libraries need initialization, too.
2013-11-29 11:00:57 +01:00
Denis Krjuchkov
71bc15aca1
PollGroupEPoll.hxx: add const modifiers where applicable
2013-11-29 15:26:57 +06:00
Denis Krjuchkov
65b24ce557
Clock.cxx: provide all arguments for GetProcessTimes
...
All parameters seem mandatory, otherwise this call makes MPD crash.
2013-11-29 15:21:31 +06:00
Denis Krjuchkov
cfdd5edc49
event: implement PollGroup based on Windows select
2013-11-29 15:05:01 +06:00
Denis Krjuchkov
b9035d3e0a
configure.ac: code style improvements
...
Rename HAVE_WINDOWS to host_is_windows for consistency.
Use 'yes' as true value instead of '1' for this variable.
Use test on this variable instead of case where applicable.
2013-11-29 12:30:29 +06:00
Max Kellermann
e504913b0f
pcm: drop compatibility with libsamplerate older than 0.1.3
...
Remove compatibility code.
2013-11-28 20:48:02 +01:00
Max Kellermann
af4133e3c9
Util/StringUtil: add StringStartsWith()
...
Replaces GLib's g_str_has_prefix().
2013-11-28 18:48:35 +01:00
Max Kellermann
a788b7e747
PcmConvert: fix src_format corruption when converting from DSD
...
Method PcmConvert::Convert() modifies the src_format variable. This
used to be a parameter, however commit d2679f59c made it an attribute
instead. The modification to src_format persisted, and the next call
would return garbage.
2013-11-28 18:43:33 +01:00
Denis Krjuchkov
bb288f0284
event: introduce generic API for internal event loop
2013-11-28 17:06:16 +06:00
Max Kellermann
f90abe9530
include cleanup using iwyu
2013-11-28 11:50:54 +01:00
Max Kellermann
47c50c079d
decoder/ffmpeg: use IgnoreError instead of local Error instance
2013-11-28 00:05:26 +01:00
Denis Krjuchkov
46bab7e4b9
Add infrastructure for using multiple event loops
...
This change adds two configuration options:
--with-eventloop=[glib|internal|auto]
--with-pollmethod=[epoll|auto]
First allows switching between GLib event loop and internal one.
Second chooses backend to use for internal event loop.
Conditional compilation symbols are changed accordingly.
Additional helper macro MPD_OPTIONAL_FUNC_NODEF is added as well.
2013-11-27 17:28:36 +06:00
Gaetan Bisson
3b0fea5fae
input/cdio_paranoia: support libcdio-paranoia 0.90
2013-11-27 08:25:17 +01:00
Max Kellermann
443516cdda
configure.ac: prepare for 0.18.6
2013-11-27 08:25:17 +01:00
Denis Krjuchkov
22fb49fa90
HttpdOutputPlugin.cxx: fix null pointer dereference
2013-11-26 18:13:23 +06:00
Denis Krjuchkov
957d187ae4
Main.cxx: initialize winsock before creating IO thread
...
Otherwise sockets can't be created during IO thread initialization.
2013-11-26 18:10:18 +06:00
Denis Krjuchkov
b88ea6735b
configure.ac: set VERSION_MINOR to 19
2013-11-26 18:07:59 +06:00
Max Kellermann
51de8fd10a
Volume, Output: use new class PeriodClock instead of GTimer
2013-11-25 22:09:46 +01:00
Max Kellermann
2ef6052536
ClientNew: fix nullptr dereference after g_get_prgname() failure
...
Hard-code the program name to "mpd" instead of using g_get_prgname().
The latter has become useless since this GLib variable doesn't get
initialized anymore.
2013-11-25 22:09:06 +01:00
Max Kellermann
394b1e6351
archive/iso9660: remove pointless formula
2013-11-24 22:49:15 +01:00
Max Kellermann
c95d068ef5
archive/iso9660: use reference instead of pointer
2013-11-24 22:47:50 +01:00
Max Kellermann
dbda35ffe1
archive/iso9660: convert structs to classes
2013-11-24 22:41:23 +01:00
Max Kellermann
6396e23a2a
DatabaseGlue: make GetDatabase() "gcc_const"
...
This variable is initialized once on startup. It will never change.
2013-11-24 22:04:45 +01:00
Max Kellermann
529b4bd185
Stats: use monotonic clock instead of GTimer
...
Reduce GLib usage.
2013-11-24 21:14:38 +01:00
Max Kellermann
85b51e4e77
Stats: use GetProcessTimes() on WIN32 to determine MPD uptime
...
Don't use GTimer if the operating system is able to tell us the
uptime.
2013-11-24 20:41:00 +01:00
Max Kellermann
e53a25cbae
event: add API documentation
2013-11-24 19:28:04 +01:00
Max Kellermann
41e7145973
event/SocketMonitor: add missing space
2013-11-24 16:07:12 +01:00
Denis Krjuchkov
db238cc23f
CommandLine: new command line parser
...
This implementation behaves mostly identical to old parser.
Few observable differences:
- There are no option groups (single group is used for all options)
- Option --stdout is hidden (it has been obsolete for a long time)
- MPD executable name (mpd) is hardcoded for simplicity
2013-11-24 17:29:05 +06:00
Max Kellermann
75e9c798e0
archive/iso9660: simplify _read()
2013-11-23 18:51:38 +01:00
Max Kellermann
99527051b5
Merge branch 'v0.18.x'
2013-11-23 18:45:02 +01:00
Max Kellermann
57e0cc5442
release v0.18.5
2013-11-23 18:30:12 +01:00
Max Kellermann
73f45d87d5
decoder/{dsf,dsdiff}: eliminate useless assignments
2013-11-23 18:30:12 +01:00
Max Kellermann
ae88ba986e
archive/iso9660: eliminate useless assignments
2013-11-23 18:30:12 +01:00
Max Kellermann
d6247902ec
input/curl: work around stream resume bug (fixed in libcurl 7.32.0)
2013-11-23 12:13:41 +01:00
Max Kellermann
a566c28a49
input/curl: add global variable "curl_version"
2013-11-23 12:08:46 +01:00
Max Kellermann
2eddb63a83
input/curl: dump version number
2013-11-23 12:02:39 +01:00
Max Kellermann
fc7d5b055d
PcmResampleLibsamplerate: clip 24 bit data
...
Using pcm_resample_lsr_32() for 24 bit samples works, but may cause 24
bit overflows. This commit makes 24 bit a special case with explicit
clipping.
2013-11-22 23:27:56 +01:00
Max Kellermann
87c8953e8e
PcmResample: un-inline Resample24()
2013-11-22 23:24:40 +01:00
Max Kellermann
45d27a52f1
PcmUtils: add function PcmClampN()
2013-11-22 23:24:40 +01:00
Javier Domingo Cansino
bed98303a3
doc: audio_outputs sample output and explanation of each returned line
2013-11-22 10:18:17 +01:00
Max Kellermann
d22acc59c9
db/proxy: implement method GetUpdateStamp()
2013-11-22 00:45:27 +01:00
Max Kellermann
c064e8d62f
DatabasePlugin: add method GetUpdateStamp()
...
Refactor SimpleDatabase::GetLastModified() to be generic for all
plugins. Remove the SimpleDatabase assumption from db_stats_print(),
allowing it to be implemented by all database plugins.
2013-11-22 00:35:29 +01:00
Max Kellermann
099a2cb586
Stats: print db statistics only if db is available
...
Fixes crash on "stats" in certain configurations.
2013-11-22 00:27:37 +01:00
Max Kellermann
042fe2a9d0
Stats: print more unsigned integers
2013-11-22 00:23:27 +01:00
Max Kellermann
ff1c1107f3
Stats: auto-reload statistics with proxy plugin
2013-11-22 00:19:28 +01:00
Max Kellermann
41a3fd0fd0
Stats: use struct DatabaseStats
...
Eliminate redundant declaration.
2013-11-22 00:12:12 +01:00
Max Kellermann
b9169a5670
Stats: move the GTimer variable out of struct stats
2013-11-22 00:10:53 +01:00
Max Kellermann
2ecd5fa28d
Stats: don't export the global variable "stats"
...
Unused outside of Stats.cxx.
2013-11-22 00:08:43 +01:00
Max Kellermann
e719b6cc41
Stats: print db_update as unsigned integer
2013-11-22 00:04:58 +01:00
Max Kellermann
67b8124a1d
Mapper: _get_music_directory_utf8() may return nullptr
...
If no music_directory is configured, return nullptr instead of an
empty string. This fixes a crash when db_file is configured without
music_directory.
2013-11-22 00:02:17 +01:00
Florian Schlichting
51ec499c89
system/ByteOrder: testing for endianness in a more general way
...
Fixes build tests on ia64 and mipsel by testing for endianness in a
more general / portable way.
2013-11-21 23:04:49 +01:00
Max Kellermann
3a4df25db2
util/ByteOrder: add comments
2013-11-21 23:04:31 +01:00
Max Kellermann
37cf78ef45
util/ByteOrder: indent the preprocessor directives
...
Improve readability.
2013-11-21 23:03:28 +01:00
Max Kellermann
727c622659
configure.ac: auto-detect fluidsynth by default
...
The option "--enable-fluidsynth" was documented to be "auto" by
default, when it was really "no".
2013-11-21 22:50:58 +01:00
Max Kellermann
74a778e65f
configure.ac: prepare for 0.18.5
2013-11-18 20:03:30 +01:00
Denis Krjuchkov
1fc0c9fe8a
NEWS: add version 0.18.5 change log
2013-11-18 16:40:00 +06:00
Denis Krjuchkov
740d8ec5ab
system/fd_util.h: avoid symbol conflict with statically linked libmpdclient
2013-11-18 16:35:22 +06:00
Denis Krjuchkov
0bcc477d46
decoder/OggFind.cxx: include stdio.h for SEEK_END definition
2013-11-18 16:28:39 +06:00
Max Kellermann
d2679f59c5
PcmConvert: add methods Open(), Close()
...
Replaces Reset() and eliminates the AudioFormat parameters from the
Convert() method.
2013-11-13 21:06:33 +01:00
Max Kellermann
4ee147ea34
DecoderAPI: stop decoder on MPD error
...
This commit adds the basic infrastructure for reporting bugs from
DecoderAPI.cxx via DecoderThread.cxx to DecoderControl.
2013-11-13 20:57:13 +01:00
Max Kellermann
f1ca61d7d7
DecoderInternal: allocate PcmConvert dynamically
...
Reduce header dependencies and allow it to be nullptr to disable it.
2013-11-13 19:16:31 +01:00
Max Kellermann
a80b5cf19b
DecoderInternal: move functions into the class
2013-11-13 19:13:47 +01:00
Max Kellermann
44ac84767e
PcmResampleFallback: use PcmBuffer instead of PcmResampler
...
Lighter API.
2013-11-13 18:39:15 +01:00
Max Kellermann
a40d7ae4dd
configure.ac: prepare version 0.19
2013-11-13 18:39:10 +01:00
Max Kellermann
35297f8d4f
release v0.18.4
2013-11-13 18:26:01 +01:00
Max Kellermann
6f4202408c
doc/example: remove "format" and "audio_output_format"
...
Just an attempt to prevent users from shooting themselves in the foot
by uncommenting these lines without knowing what they're doing.
2013-11-11 17:18:29 +01:00
Max Kellermann
0b6548a282
util/RefCount: no "constexpr" with libc++
...
Not supported by libc++.
2013-11-11 12:27:16 +01:00
Max Kellermann
faf5821816
util/LazyRandomEngine: make min()/max() static+constexpr
...
Required for building with libc++.
2013-11-11 12:27:15 +01:00
Max Kellermann
188673b746
output/httpd: don't use incomplete template argument with libc++
2013-11-11 08:31:50 +01:00
Max Kellermann
287c70e361
filter/route, ...: add missing stdlib.h includes
2013-11-11 08:20:09 +01:00
Max Kellermann
f6b44af998
DespotifyUtils: add missing stdio.h include
2013-11-11 08:20:09 +01:00
Max Kellermann
84c3d9674f
DecoderAPI: add missing math.h include
2013-11-11 08:18:54 +01:00
Jurgen Kramer
47d3758820
decoder/dsdiff: fix byte order bug
2013-11-10 16:49:39 +01:00
Max Kellermann
573ff3a24f
DecoderThread: add missing <functional> include
2013-11-09 09:54:12 +01:00
Max Kellermann
32fcc22cb3
configure.ac: prepare for 0.18.4
2013-11-09 09:52:51 +01:00
Max Kellermann
daba1238b5
release v0.18.3
2013-11-08 12:55:12 +01:00
Max Kellermann
d125567f4a
doc/developer: add text from the wiki
2013-11-08 12:54:16 +01:00
Max Kellermann
993eca9327
Makefile.am: disable dist-bzip2
...
bzip2-compressed tarballs are obsolete, xz is better and widely
understood.
2013-11-08 12:29:56 +01:00
Max Kellermann
e314844a4d
doc: show .tar.xz in sample unpack command
2013-11-08 12:29:04 +01:00
Max Kellermann
017bc564af
doc: replace the remaining wikia links
2013-11-08 12:26:07 +01:00
Max Kellermann
e076ff9085
DecoderAPI: log without holding mutex
2013-11-08 12:15:05 +01:00
Max Kellermann
2789493a5f
PlayerThread: fix stuck MPD after song change (0.18.2 regression)
...
Commit 77c63511 caused MPD to become stuck right after a song change.
The problem was that at some point, the MusicBuffer became full, and
the DecoderThread working on the next song waits for the PlayerThread.
However, the PlayerThread was stuck in a loop of g_usleep() calls, and
never bothered to tell the DecoderThread that the MusicBuffer is not
full anymore. This bug is very old, but its chance to occur went from
nearly 0% to nearly 100%.
The fix is to wake up the DecoderThread before waiting for it. As a
side effect, I replaced the g_usleep() call with a Cond::Wait() call.
2013-11-08 12:02:21 +01:00
Max Kellermann
4ed0635447
DecoderInternal: simplify need_chunks()
...
Remove the "do_wait" parameter which is always true. Check only
command==NONE and merge the "return" statements.
2013-11-08 11:59:56 +01:00
Max Kellermann
1904e504be
DecoderInternal: don't wake up player in need_chunks
...
Nothing of interest happens here. No need to wake up the player.
2013-11-08 11:58:23 +01:00
Max Kellermann
834715ea2f
configure.ac: prepare for 0.18.3
2013-11-08 11:57:37 +01:00
Max Kellermann
380a3bbff4
release v0.18.2
2013-11-07 18:48:04 +01:00
Max Kellermann
6219326e02
doc: more information about "close"
2013-11-07 18:41:53 +01:00
Max Kellermann
6c4de5106b
doc: remove documentation on obsolete tcp_keep_alive options
2013-11-07 18:39:55 +01:00
Max Kellermann
e936705840
doc: add link to user manual
2013-11-07 18:36:55 +01:00
Max Kellermann
9b2603b6f6
doc: update current maintainer
2013-11-07 18:34:57 +01:00
Max Kellermann
88856b847c
doc: update Mantis link
2013-11-07 18:34:04 +01:00
Max Kellermann
f679878f7b
doc/user: add more documentation for the proxy database plugin
2013-11-07 18:31:56 +01:00
Max Kellermann
f33acf8758
input/cdio_paranoia: add setting "default_byte_order"
...
Allows big-endian users to configure the fallback byte order to
little-endian. Without this setting, MPD assumes native byte order if
the CD drive can't decide.
2013-11-07 18:17:54 +01:00
Max Kellermann
a846a4c643
AvahiPoll: don't close the dbus socket
...
Avoid closing it twice.
2013-11-07 01:10:07 +01:00
Max Kellermann
899c2bb9cc
input/curl: unregister removed sockets from epoll
...
Fixes a crash bug. See code comment.
2013-11-07 01:10:07 +01:00
Max Kellermann
f8f95e2dbd
OutputControl: reduce the number of OutputThread wakeups
...
Wake up the OutputThread only if it hasn't already been woken up and
if it isn't already in the playback loop.
2013-11-06 23:51:17 +01:00
Max Kellermann
77c63511d8
PlayerThread: reduce the number of DecoderThread wakeups
...
After the number of decoded chunks has fallen below the threshold, the
PlayerThread woke up the DecoderThread over and over. This commit
adds a boolean flag that avoids these duplicate wakeups, and thus
reduces the number of system calls.
2013-11-06 23:51:17 +01:00
Max Kellermann
0be5a6ab2b
DecoderControl: reduce the number of PlayerThread wakeups
...
Wake up the PlayerThread only if it is really waiting for the decoder.
This greatly reduces the number of system calls in the DecoderThread.
2013-11-06 23:51:17 +01:00
Max Kellermann
9802e74859
DecoderInternal: lock DecoderControl in _flush_chunk()
...
Must hold the Mutex to signal the Cond object safely.
2013-11-06 23:51:17 +01:00
Max Kellermann
8e7d6eb151
DecoderInternal: wake up the player thread in _flush_chunk()
...
Merge duplicate code.
2013-11-06 23:51:17 +01:00
Max Kellermann
5c18e4f114
event/FullyBufferedSocket: remove obsolete TODO comment
...
We have a better solution now.
2013-11-06 23:50:36 +01:00
Max Kellermann
fd2eafa7c6
ClientRead: "close" flushes the output buffer
...
Add a new CommandResult code called "FINISH" which, unlike "CLOSE",
will attempt to flush the output buffer. This is a one-shot attempt;
it will do one write, and not try again.
2013-11-06 22:01:06 +01:00
Max Kellermann
422b8472fe
event/FullyBufferedSocket: try to write without extra roundtrip
...
Postpone the write using IdleMonitor instead of scheduling a write
event. This reduces the number of system calls, because we don't need
to register and unregister the write event in epoll.
2013-11-06 21:52:24 +01:00
Max Kellermann
5b213b0504
event/FullyBufferedSocket: make WriteFromBuffer() protected
...
.. and rename it to Flush().
2013-11-06 21:52:09 +01:00
Max Kellermann
ad27d06979
PlayerThread: enable buffering when starting playback
...
For some reason, this got lost in commit 975deca8 .
Re-enabling this fixes stuttering at the beginning of radio streams.
2013-11-06 20:14:38 +01:00
Max Kellermann
c4b1251d0a
configure.ac: require libaudiofile 0.3 due to API breakage
...
Prior to version 0.3, the "length" callback returned a "long" instead
of AFfileoffset. Now that this API bug fix is a few years old, let's
drop 0.2 support for good.
2013-11-06 20:04:21 +01:00
Max Kellermann
01891f8815
input/curl: fix bug with redirected streams
...
Migrate from the old curl_multi_perform() API to the newer
curl_multi_socket_action() API (since CURL 7.16).
This allows working around a bug with HTTP redirections with epoll:
when CURL closes a socket and the new one happens to have the same
file number, MPD did not have a chance to remove the old one from
epoll and subsequently attempted to use EPOLL_CTL_MOD, which was not
allowed by epoll, because it's a new socket now.
2013-11-06 19:14:22 +01:00
Max Kellermann
adb68450ce
input/curl: move code into class CurlMulti
...
Move all global variables there, and keep just one global variable:
the pointer to the CurlMulti instance. Prepares for the next commit.
2013-11-06 19:07:10 +01:00
Max Kellermann
2520f6fe49
input/curl: remove the global list of requests
...
Unused.
2013-11-06 19:06:14 +01:00
Max Kellermann
c9278bfcdf
input/curl: don't abort all requests on curl_multi_perform() error
...
Eliminate some complicated code that's not worth the trouble.
2013-11-06 19:06:02 +01:00
Max Kellermann
8b838ff9ea
input/curl: use CURLOPT_PRIVATE
...
Replaces the loop in input_curl_find_request().
2013-11-06 19:05:45 +01:00
Max Kellermann
154bdf0bca
event/SocketMonitor: add method Abandon()
2013-11-06 19:05:45 +01:00
Max Kellermann
ed436c6f0c
system/ByteOrder: fix big-endian support
...
D'oh!
2013-11-05 22:08:53 +01:00
Max Kellermann
ae5dd2da4f
playlist/pls: fix reversed song order
...
Remove the forward_list::reverse() call. It was not necessary,
because pls_parser() already reads the playlist in reverse order.
2013-11-05 18:22:34 +01:00
Jurgen Kramer
f4b61e8c8d
decoder/dsf: enable DSD128
2013-11-05 17:38:48 +01:00
Max Kellermann
e49a3d377f
NEWS: add missing line
2013-11-05 17:38:41 +01:00
Max Kellermann
b631b552bb
test/*: add more missing stdlib.h includes
2013-11-05 17:28:23 +01:00
Natanael Copa
3f21581a81
add various missing headers
...
Fixes building with gcc-4.8
Signed-off-by: Natanael Copa <ncopa@alpinelinux.org >
2013-11-05 11:08:36 +01:00
Max Kellermann
bb62ecf157
configure.ac: prepare for 0.18.2
2013-11-05 11:08:17 +01:00
Max Kellermann
a268ab35ea
release v0.18.1
2013-11-04 23:46:14 +01:00
Max Kellermann
62baec1841
output/alsa: avoid endless loop in Raspberry Pi workaround
...
See code comment.
2013-11-04 23:40:34 +01:00
Max Kellermann
7bca61f5bb
event/ServerSocket: don't abort if IPv6 is not available
...
First check if an IPv6 socket can be created.
2013-11-04 23:36:02 +01:00
Max Kellermann
ecf12a60e8
Log: add level "DEFAULT"
...
Map LogLevel::INFO to G_LOG_LEVEL_INFO, and LogLevel::DEFAULT to
G_LOG_LEVEL_MESSAGE. Now client connect/disconnect message are only
logged on log_level "secure".
2013-11-04 22:27:49 +01:00
Max Kellermann
6de85cb047
Log: document the LogLevel items
2013-11-04 22:17:53 +01:00
Max Kellermann
39257717d8
test/test_mixramp: add threshold to floating point comparisons
...
Fixes bogus test failures on Debian build machines due to rounding
errors (hopefully).
2013-11-04 22:08:59 +01:00
Max Kellermann
b54762a8f6
event/ServerSocket: fix assertion failure
...
Regression from previous commit. D'oh!
2013-11-04 20:16:28 +01:00
Max Kellermann
bcae86196c
event/ServerSocket: open sockets in the order they were configured
...
Use a std::list which can be appended at the end.
2013-11-04 20:10:46 +01:00
Max Kellermann
7adfea8ca2
system/resolver: return path of UNIX domain sockets
...
getnameinfo() doesn't work well - it always returns "localhost".
2013-11-04 19:13:05 +01:00
Max Kellermann
eab1a77683
ClientRead: always ignore whitespace at the end of the line
2013-11-04 18:11:15 +01:00
Max Kellermann
84f5e0c0de
Makefile.am: distribute missing files
2013-11-04 08:26:10 +01:00
Max Kellermann
2ce3900071
filter/AutoConvert: modify child_audio_format, not in_audio_format
...
This prevented using the "volume_normalization" feature with some
codecs (e.g. mp3), because the normalization code requires 16 bit
samples. If the codec happens to deliver formats other than S16, the
AutoConvert filter succeeds to initialize the conversion filter, but
the returned input audio format was wrong.
2013-11-04 08:00:00 +01:00
Max Kellermann
bf2c1f3e9e
configure.ac: prepare for 0.18.1
2013-11-04 08:00:00 +01:00
Max Kellermann
8ccd8a008d
release v0.18
2013-10-31 00:23:41 +01:00
Max Kellermann
9513c1a8d6
AUTHORS: add new authors
2013-10-31 00:23:41 +01:00
Max Kellermann
0a1be2bfc3
AUTHORS: new formatting
2013-10-31 00:18:44 +01:00
Max Kellermann
8c6727949c
CommandLine: simplified program name line
2013-10-31 00:12:31 +01:00
Max Kellermann
ff9b717bf6
Makefile.am: add missing header file
2013-10-31 00:08:14 +01:00
Max Kellermann
8c834a4ff6
system/FatalError: use _exit() instead of exit()
...
Skip the global destructors. We don't need them here - we bail out as
quickly as we can.
2013-10-30 23:42:16 +01:00
Max Kellermann
8c01004219
system/FatalError: move code to Abort()
2013-10-30 23:41:02 +01:00
Max Kellermann
8555b65c50
*: update copyright year to 2013
2013-10-30 23:37:06 +01:00
Max Kellermann
304fa5ecac
ClientList: disconnect all clients in destructor
...
Fixes assertion failure.
2013-10-30 23:12:45 +01:00
Max Kellermann
88e630170e
mixer/software: fix double free bug
2013-10-30 23:12:45 +01:00
Max Kellermann
da8bdd62c8
PlaylistState: ignore "mixrampdelay:nan"
...
mixramp_delay==nan() causes severe problems with cross-fading.
2013-10-30 22:33:02 +01:00
Max Kellermann
54abeab80b
increase default buffer size to 4 MB
...
2 MB was too small for cross-fading a 24 bit file. Increasing to 4 MB
is still not too large for weak machines, but is enough for
cross-fading.
2013-10-30 21:46:40 +01:00
Max Kellermann
1dc8a9f0e7
db/proxy: remove obsolete #undefs
2013-10-30 20:51:41 +01:00
Max Kellermann
a62d54425c
db/proxy: auto-reconnect
2013-10-30 19:50:22 +01:00
Max Kellermann
c8b2591ac2
configure.ac: move -Werror before all other CFLAGS
...
Without -Werror, clang will not fail on -ftree-vectorize.
2013-10-30 19:17:07 +01:00
Max Kellermann
ee1d8e1091
configure.ac: default to enable_openal=auto
2013-10-30 19:02:59 +01:00
Max Kellermann
672fc8d79b
configure.ac: enable -ffast-math and -ftree-vectorize
...
Allows advanced compiler optimization.
2013-10-30 18:30:04 +01:00
Max Kellermann
84ff1a680a
configure.ac: enable some gcc options even in debug mode
...
Most importantly: always disable C++ exceptions. It was surprising to
see MPD terminate due to an unexpected exception.
2013-10-30 18:22:35 +01:00
Max Kellermann
90c899407a
ReplayGainInfo: use large negative value instead of infinity
...
The last piece to allow -ffast-math.
2013-10-30 18:01:45 +01:00
Max Kellermann
55868eecd0
PlayerCommands: show CrossFade/MixRamp only if enabled
2013-10-30 17:49:47 +01:00
Max Kellermann
50dc98367c
PcmMix: use negative value instead of NaN for addition
...
Avoid NaN to allow -ffast-math.
2013-10-30 17:23:49 +01:00
Max Kellermann
c4d3030d24
CrossFade: eliminate NaN from mixramp_interpolate()
...
Use a boolean flag instead.
2013-10-30 17:20:34 +01:00
Max Kellermann
c6f101884b
CrossFade: use negative value for invalid MixRamp overlap
...
Avoid NaN to allow -ffast-math.
2013-10-30 17:20:12 +01:00
Max Kellermann
c0c0526fc8
test/test_mixramp: improved test for mixramp_interpolate(0)
2013-10-30 17:18:54 +01:00
Max Kellermann
375c88b110
test/test_mixramp: add test with "invalid" return value
2013-10-30 17:14:40 +01:00
Max Kellermann
a65f63747b
CrossFade: use negative value for invalid mixramp_delay
...
Avoid NaN to allow -ffast-math.
2013-10-30 16:50:34 +01:00
Max Kellermann
a21edddf27
CrossFade: remove obsolete API documentation
2013-10-30 16:45:02 +01:00
Max Kellermann
a88c23b6e8
Main: check the g_get_user_special_dir() result
...
Fixes crash.
2013-10-30 16:14:44 +01:00
Max Kellermann
216e37bf33
Makefile.am: link test/DumpDatabase with Ack.cxx
2013-10-30 16:14:44 +01:00
Max Kellermann
7bb3987acc
db/proxy: return server errors using "enum ack"
2013-10-30 16:04:21 +01:00
Max Kellermann
6a147a17af
db/proxy: pass search/find to remote MPD
2013-10-30 10:00:57 +01:00
Max Kellermann
2b7529e905
db/proxy: pass SongFilter to the remote MPD in VisitUniqueTags()
2013-10-30 09:40:23 +01:00
Max Kellermann
1ed321f964
db/proxy: add missing nullptr check
2013-10-30 09:37:20 +01:00
Max Kellermann
2aee1b86f3
SongFilter: add special keyword "base"
...
Restores the features from the previous draft commands "findin" /
"searchin".
2013-10-29 21:13:40 +01:00
Max Kellermann
b5fc21b9f4
Revert "command: new commands "findin", "searchin" with base URI"
...
This reverts commit a577944ab5 .
Will be replaced by new options for the old commands "search" and
"find".
2013-10-29 21:13:40 +01:00
Max Kellermann
44581dbef5
util/UriUtil: add uri_is_child_or_same()
2013-10-29 21:13:40 +01:00
Jean-Francois Dockes
205448c1e8
db/proxy: enable song matching
2013-10-29 20:58:35 +01:00
Jean-Francois Dockes
2d11c6ab29
SongFilter: make SongFilter::Item class definition public
2013-10-29 20:47:52 +01:00
Max Kellermann
6859c22b69
SongFilter: "any" does not match file name
...
According to the protocol documentation, matching the file name was
wrong. This removes some awkward special-case code.
2013-10-29 20:40:55 +01:00
Max Kellermann
2d5413fc3b
DatabaseSelection: use std::string
2013-10-29 20:36:52 +01:00
Max Kellermann
a6aa0e4cbf
SongFilter: use std::string
2013-10-29 19:39:17 +01:00
Max Kellermann
163848ab3b
fd_util: avoid unnecessary fcntl() calls
2013-10-29 13:02:53 +01:00
Max Kellermann
03747ba93e
PlayerControl: move attributes to struct CrossFadeSettings
2013-10-29 00:14:27 +01:00
Max Kellermann
095c390df7
FilterRegistry: add "pure" attribute
2013-10-29 00:05:04 +01:00
Max Kellermann
20597b3632
*: use nullptr instead of NULL
2013-10-28 23:58:17 +01:00
Max Kellermann
4728735acf
decoder/dsf: don't play junk at the end of the "data" chunk
2013-10-28 23:47:25 +01:00
Max Kellermann
9dcbd005f0
decoder/dsf: add range check
2013-10-28 23:41:51 +01:00
Max Kellermann
0ad2eb34c7
decoder/dsdlib: add class DsdUint64
...
Merge lots of duplicate code.
2013-10-28 23:29:23 +01:00
Max Kellermann
0e8a15e813
decoder/dsdlib: include cleanup
2013-10-28 23:26:37 +01:00
Max Kellermann
5b0d6a59cf
decoder/dsdlib: move API documentation to header
2013-10-28 23:26:16 +01:00
Max Kellermann
fd3dc7e5fb
decoder/dsdlib: convert struct dsdlib_id to a class
2013-10-28 23:12:48 +01:00
Max Kellermann
c37edfd3e9
configure.ac: disable the OS X output plugin by default
...
There hasn't been a maintainer for this plugin for years. It may even
fail to build.
2013-10-28 22:25:58 +01:00
Max Kellermann
4a99b1df4b
configure.ac: add variable host_is_darwin
...
Fixes the OpenAL detection which was broken because enable_osx was
uesd which was set later.
2013-10-28 22:18:56 +01:00
Max Kellermann
12e9b7eafa
PcmFormat: move definitions to struct SampleTraits
2013-10-28 21:29:36 +01:00
Max Kellermann
de1261ba28
MusicChunk: return WritableBuffer
2013-10-28 17:10:12 +01:00
Max Kellermann
5ee5a89a7f
MusicChunk: use uint8_t instead of char
2013-10-28 17:08:14 +01:00
Max Kellermann
1ad2475f9e
DecoderControl: convert mutex and client_cond to a reference
...
Share the Mutex between the DecoderThread and the PlayerThread. This
simplifies synchronization between the two threads and fixes a freeze
problem: while the PlayerThread waits for the DeocderThread, it cannot
answer requests from the main thread, and the main thread will block
until the DecoderThread finishes.
2013-10-28 10:22:05 +01:00
Max Kellermann
5b5675cc12
player_control: rename to PlayerControl
2013-10-28 10:12:33 +01:00
Max Kellermann
e699f6781e
decoder_control: rename to DecoderControl
2013-10-28 10:09:21 +01:00
Oddegamra
5f13c1cd9c
output/httpd: accept icy-metadata with and without space
...
Some, or most, Win32 audio players will pass "icy-metadata:1" to
streaming servers. MPD expects a space between ":" and "1" at this
point, and thus does not send any stream metadata. This applies to
foobar2k and Winamp, for example.
According to forums.radiotoolbox.com/viewtopic.php?t=74 not having
a space there is expected behavior, so maybe MPD could accept
both forms to determine if metadata should be sent or not.
2013-10-26 16:32:00 +02:00
Max Kellermann
a577944ab5
command: new commands "findin", "searchin" with base URI
2013-10-26 16:13:35 +02:00
Max Kellermann
17ec3b0c2d
FileCommands: "readcomments" understands APE and ID3v2 tags
...
Implements Mantis ticket 3843.
2013-10-26 16:04:29 +02:00
Max Kellermann
fb75137540
FileCommands: fix wrong control character check in IsValidValue()
...
Check was the wrong way around, and made all valid values invisible.
2013-10-26 16:04:06 +02:00
Max Kellermann
6f87164ad6
ApeTag: support multiple values per name
2013-10-26 16:00:05 +02:00
Max Kellermann
a4d82cfe1e
ApeTag: move code to ForEachValue()
2013-10-26 15:57:09 +02:00
Max Kellermann
9f21eee2ec
ApeTag: simplify the "recognized" flag
2013-10-26 15:52:49 +02:00
Max Kellermann
a40246d312
TagFile: use Path instead of const char *
2013-10-26 15:38:29 +02:00
Max Kellermann
4a5aad0948
PlayerControl: initialize tagged_song in constructor
2013-10-26 15:37:49 +02:00
Max Kellermann
85ae7e9c9a
DecoderControl: move code/attributes to new class MixRampInfo
2013-10-26 14:19:34 +02:00
Max Kellermann
2098b94b47
DecoderThread: move code to DecoderControl::CycleMixRamp()
2013-10-26 14:12:10 +02:00
Max Kellermann
59ad6265a1
DecoderControl: add MixRamp getters
2013-10-26 14:08:09 +02:00
Max Kellermann
067572c6dd
CrossFade: reimplement mixramp_interpolate() without strtok()
...
Don't require a writable string, and don't modify it.
2013-10-26 13:53:32 +02:00
Max Kellermann
7f03f68fcc
CrossFade: apply coding style
2013-10-26 13:53:08 +02:00
Max Kellermann
de862f9f1b
test/test_mixramp: unit test for mixramp_interpolate()
2013-10-26 13:49:15 +02:00
Max Kellermann
b5e31c89c0
CrossFade: merge "return" statements using "break"
2013-10-26 13:49:15 +02:00
Max Kellermann
e898400fbd
CrossFade: use nullptr instead of NULL
2013-10-26 13:49:15 +02:00
Max Kellermann
3ac7de7a22
util/NumberParser: add ParseFloat()
2013-10-26 13:49:15 +02:00
Max Kellermann
ade66e7ece
util/NumberParser: indent
2013-10-26 13:49:15 +02:00
Max Kellermann
6673f9e39d
INSTALL: mention clang
2013-10-26 13:49:15 +02:00
Max Kellermann
2db2c0f0b7
INSTALL: mention minimum gcc version
2013-10-26 13:48:42 +02:00
Max Kellermann
17dc638c18
command: new command "readcomments" lists arbitrary file tags
2013-10-25 19:35:40 +02:00
Max Kellermann
d6e28c42e5
ReplayGainInfo: refactor to a class
2013-10-25 19:12:46 +02:00
Max Kellermann
6d475c40de
ReplayGainInfo: use CamelCase for struct name
2013-10-25 19:12:38 +02:00
Max Kellermann
ed7891bf01
ReplayGainConfig: add "pure" attributes
2013-10-25 19:12:29 +02:00
Max Kellermann
e17da71a70
output/httpd: support HEAD requests
2013-10-25 00:32:48 +02:00
Max Kellermann
610bef9ff5
output/httpd: remove bogus assertion
2013-10-25 00:26:02 +02:00
Max Kellermann
961c7d0f78
OtherCommands: re-add the "volume" command
...
This command was removed by commit 206392ad (MPD 0.16), even though it
was been proven useful for some very simple clients. On request, I
add it to the protocol again.
2013-10-25 00:20:36 +02:00
Max Kellermann
c1ba47beee
MixerAll, Volume: add "pure" attributes
2013-10-25 00:15:55 +02:00
Max Kellermann
ac8e5be9f4
decoder/opus: support replay gain
...
Parse the R128_TRACK_GAIN comment string.
2013-10-24 23:56:06 +02:00
Max Kellermann
c76952534e
decoder/Opus: implement seeking
2013-10-24 23:26:58 +02:00
Max Kellermann
f0060718de
decoder/opus: provide time stamps
...
Call decoder_timestamp(). This is not necessary currently, but will
be as soon as we implement seeking.
2013-10-24 23:26:54 +02:00
Max Kellermann
982ab9e496
decoder/opus: show song duration during playback
...
This requires seeking to the end-of-stream, checking its granulepos,
and then seeking back to the previous file position. We do this only
for local files.
2013-10-24 23:26:46 +02:00
Max Kellermann
b74bcf2274
decoder/opus: call ogg_stream_reset() in OggSeekPageAtOffset()
2013-10-24 23:23:23 +02:00
Max Kellermann
645cb5833d
test/run_decoder: print the song duration
2013-10-24 21:35:05 +02:00
Max Kellermann
dc328e0c4a
decoder/opus: move code to OggSeekPageAtOffset()
2013-10-24 20:40:23 +02:00
Max Kellermann
92c85bd20d
decoder/opus: move SeekFindEOS() to OggFind.cxx
2013-10-24 20:33:12 +02:00
Max Kellermann
f629eb8cb2
decoder/opus: make opus_sample_rate constexpr
2013-10-24 20:14:47 +02:00
Max Kellermann
e4f41ff61d
decoder/opus: use std::copy_n() instead of memcpy()
2013-10-24 20:06:50 +02:00
Max Kellermann
dae6ecb680
decoder/opus: support all core tag names
2013-10-24 20:01:14 +02:00
Max Kellermann
a57a7b1a76
decoder/opus: move code to ParseOpusTagName()
2013-10-24 20:01:14 +02:00
Max Kellermann
03073b366b
decoder/opus: use delete[] for the OpusReader::ReadString() result
2013-10-24 20:01:14 +02:00
Max Kellermann
1bd8a9e744
DecoderAPI: add "pure" attributes
2013-10-24 20:01:05 +02:00
Max Kellermann
0a5c991ab5
decoder/wavpack: move variable declarations
2013-10-23 23:20:55 +02:00
Max Kellermann
93deb84499
input_stream: rename struct to InputStream
2013-10-23 23:12:02 +02:00
Max Kellermann
c4d4011c63
InputInternal: remove obsolete library
2013-10-23 23:10:27 +02:00
Max Kellermann
3d12f8d246
UriUtil: uri_remove_auth() returns std::string
2013-10-23 21:58:44 +02:00
Max Kellermann
c3e720279c
test/test_util: unit test for libutil.a
2013-10-23 21:58:44 +02:00
Max Kellermann
f1027ed198
InputStream: add method Rewind()
2013-10-23 21:58:44 +02:00
Max Kellermann
fe3c5e4e8e
DecoderThread: remove unused function deconst_plugin()
2013-10-23 21:57:28 +02:00
Max Kellermann
d110131ad6
Playlist: refresh new tags after database update
...
Fixes regression from commit e96779d .
2013-10-22 01:05:29 +02:00
Max Kellermann
10bc1a9acc
decoder/flac: fix tag name comparison
2013-10-22 01:05:09 +02:00
Max Kellermann
3f899f83ff
Playlist*, Queue: use GetDatabase() overload without Error
...
Don't use IgnoreError() when there's an overload that does not try to
give us one.
2013-10-22 00:59:56 +02:00
Max Kellermann
fc05768374
Queue: add method ModifyAtPosition()
2013-10-22 00:59:56 +02:00
Max Kellermann
03b57df630
Queue: ModifyAtOrder() does not increment version
...
Leave that to the caller, allowing it to modify multiple items at a
time.
2013-10-22 00:59:56 +02:00
Max Kellermann
4de3b6dc80
Partition: add method DatabaseModified()
2013-10-22 00:59:55 +02:00
Max Kellermann
c7bbfef19a
UpdateRemove: include cleanup
2013-10-22 00:59:55 +02:00
Max Kellermann
7f1130b52b
DecoderList: fix the decoder_plugin_from_mime_type() return value
2013-10-22 00:59:55 +02:00
Max Kellermann
2d696f46c3
PlaylistEdit: compare Song URIs in DeleteSong()
...
Fixes purging deleted songs from the queue after update. Fixes
regression from commit e96779d .
2013-10-22 00:13:39 +02:00
Max Kellermann
2f43e4bc66
Playlist: copy stream tags from the PlayerThread
...
Finally restores an important feature that has been broken for several
months when the PlayerThread started working with Song copies instead
of pointers to the Queue's Song instances (commit e96779d ).
2013-10-22 00:02:21 +02:00
Max Kellermann
f8c23488c9
Song: add method ReplaceTag()
2013-10-21 23:53:30 +02:00
Max Kellermann
1e2cda9239
Partition: add methods TagModified(), SyncWithPlayer()
...
Move code from class Instance.
2013-10-21 23:40:52 +02:00
Max Kellermann
20cba9e89f
Song: pass reference to song_equals()
2013-10-21 23:19:15 +02:00
Max Kellermann
f6d67ac260
DecoderThread: simplify the decoder lookup loop
...
Merge the two loops into one, and eliminate the GSList.
2013-10-21 22:15:57 +02:00
Max Kellermann
74904b9cf2
DecoderList: reimplement _for_each() with function object
2013-10-21 22:02:19 +02:00
Max Kellermann
82059645f1
decoder: rename the struct to "Decoder"
2013-10-21 21:12:37 +02:00
Max Kellermann
13e9f18403
DecoderPlugin: move functions into the struct
2013-10-21 21:08:12 +02:00
Max Kellermann
875821f2ba
SongUpdate: use tag_file_scan()
...
Eliminate duplicate code.
2013-10-21 21:05:59 +02:00
Max Kellermann
cc3be3aeed
TagFile: use IgnoreError()
2013-10-21 20:52:59 +02:00
Max Kellermann
72af3c0489
decoder_plugin: rename struct to DecoderPlugin
2013-10-21 20:31:34 +02:00
Max Kellermann
65e54f6ed1
decoder/modplug: use WritableBuffer instead of GByteArray
...
Eliminate the temporary buffer, do I/O right into the WritableBuffer.
2013-10-21 20:22:53 +02:00
Max Kellermann
10196496f3
decoder/modplug: move code to LoadModPlugFile()
2013-10-21 20:19:27 +02:00
Max Kellermann
86f08862e4
playlist/EmbeddedCue: use std::string for the "cuesheet" attribute
2013-10-21 10:53:31 +02:00
Max Kellermann
83c726a34f
GetBaseUTF8
2013-10-21 10:50:22 +02:00
Max Kellermann
a0415f73d4
archive/bz2: remove unused function bz2_quark()
2013-10-21 10:50:22 +02:00
Max Kellermann
93068f10ec
fs/AllocatedPath: don't include glib.h
2013-10-21 10:27:14 +02:00
Max Kellermann
7142c81c05
DirectorySave: use Directory::GetName()
2013-10-21 10:04:59 +02:00
Max Kellermann
c0421a57da
input/curl: don't use GLib's typedef "gushort"
2013-10-21 09:54:21 +02:00
Max Kellermann
8f1ec1dfdf
util/NumberParser: utilities for parsing numbers from ASCII strings
2013-10-21 09:48:31 +02:00
Max Kellermann
222dc8a239
Util/ASCII: add StringEqualsCaseASCII() overload with length
...
Replaces GLib's g_ascii_strncasecmp().
2013-10-21 08:42:55 +02:00
Max Kellermann
0e4d2e7277
Util/ASCII: add function StringEqualsCaseASCII()
...
Replaces GLib's g_ascii_strcasecmp().
2013-10-20 23:09:51 +02:00
Max Kellermann
2bbff77e48
OutputControl: convert anonymous enum to constexpr
2013-10-20 13:53:01 +02:00
Max Kellermann
3315c67f0f
Inotify: convert anonymous enum to constexpr
2013-10-20 13:51:55 +02:00
Max Kellermann
b879bcb1eb
UpdateWalk: convert anonymous enum to constexpr
2013-10-20 13:50:34 +02:00
Max Kellermann
ae99135c8d
Main: convert anonymous enum to constexpr
2013-10-20 13:47:32 +02:00
Max Kellermann
1defb38a6f
DatabaseSave: convert anonymous enum to constexpr
2013-10-20 13:46:13 +02:00
Max Kellermann
56bc9e12ee
ClientInternal: convert anonymous enum to constexpr
2013-10-20 13:45:47 +02:00
Max Kellermann
116ebe0494
Idle: convert anonymous enum to constexpr
2013-10-20 13:45:21 +02:00
Max Kellermann
5ec843dcc8
*Commands: move to src/command/
2013-10-20 13:41:04 +02:00
Max Kellermann
a78b2d84ed
TagType: rename enum tag_type to TagType
2013-10-20 13:32:59 +02:00
Max Kellermann
cf4d80fc65
command: convert command_return to to a strictly-typed enum
2013-10-20 13:10:54 +02:00
Max Kellermann
8118bc93a8
FatalError: remove unused GError overload
2013-10-20 13:10:09 +02:00
Max Kellermann
c772bc45c6
PlaylistError: convert playlist_result to a strictly-typed enum
2013-10-20 13:06:40 +02:00
Max Kellermann
c1e7be3b8e
decoder/sidplay: add header file
2013-10-20 13:05:50 +02:00
Max Kellermann
17ecc56e83
decoder/sidplay: update file name
2013-10-20 13:03:58 +02:00
Max Kellermann
6a42e6f6d4
doc/developer: require C++11
2013-10-20 13:03:32 +02:00
Max Kellermann
75ba961e97
Client: move message functions into the class
2013-10-19 19:44:45 +02:00
Max Kellermann
c2d5ce0ca2
Client: move trivial functions into the Client class
2013-10-19 19:39:40 +02:00
Max Kellermann
32645b80c4
ClientInternal: move class Client to Client.hxx
...
Publish the Client API, preparing to move more code into the Client
class.
2013-10-19 19:35:37 +02:00
Max Kellermann
ff626ac763
*: use references instead of pointers
2013-10-19 18:48:38 +02:00
Max Kellermann
59f8144c50
*: use nullptr instead of NULL
2013-10-19 18:19:03 +02:00
Max Kellermann
5a7c931293
input/cdio: use class AllocatedPath
2013-10-19 17:48:46 +02:00
Max Kellermann
1373d40fea
decoder/mpg123: use const_cast instead of g_strdup()
2013-10-19 17:46:00 +02:00
Max Kellermann
3274bb54ad
event/ServerSocket: pass AllocatedPath to AddPath()
2013-10-19 17:40:56 +02:00
Max Kellermann
7db124068f
ConfigPath: use std::string
2013-10-19 17:32:49 +02:00
Max Kellermann
39e2ffe212
decoder/mikmod: use const_cast instead of g_strdup()
2013-10-19 17:30:56 +02:00
Max Kellermann
0a213ddf03
input/curl: use std::string for meta_name
...
Automatic memory management.
2013-10-19 17:24:21 +02:00
Max Kellermann
5dc4cbdf82
util/FormatString: new library to replace g_strdup_printf()
2013-10-19 17:24:21 +02:00
Max Kellermann
1434e5a22e
decoder/gme,input/curl,...: use static buffers instead of g_strdup_printf()
2013-10-19 17:15:17 +02:00
Max Kellermann
9acc1e1e97
Permission: use std::find instead of g_strsplit()
2013-10-19 16:47:56 +02:00
Max Kellermann
daa47546c7
Permission: move code to ParsePermission() and a table
2013-10-19 16:47:41 +02:00
Max Kellermann
c5194d0a8f
Permission: convert PERMISSION_* from macro to constexpr
2013-10-19 16:47:23 +02:00
Max Kellermann
7ece8ff85c
Permission: remove nullptr check
...
Both callers pass non-nullptr.
2013-10-19 16:40:40 +02:00
Max Kellermann
a4effeb3f9
Permission: convert PERMISSION_PASSWORD_CHAR from macro to constexpr
2013-10-19 16:39:45 +02:00
Max Kellermann
d3f28a1d7f
FilterConfig: use std::find instead of g_strsplit_set()
2013-10-19 16:34:11 +02:00
Max Kellermann
03cddd0acf
FilterConfig: return bool
2013-10-19 16:29:56 +02:00
Max Kellermann
04a737e04c
FilterConfig: move code to filter_chain_append_new()
2013-10-19 16:26:51 +02:00
Max Kellermann
966c54bef5
FilterConfig: eliminate duplicate API documentation
2013-10-19 16:23:40 +02:00
Max Kellermann
efcd9dfc35
ConfigData: use strtoul() in GetUnsignedValue()
...
Lifts the artificial 31 bit limit in i386 where
sizeof(long)==sizeof(int).
2013-10-19 16:12:52 +02:00
Sebastian Thorarensen
db44a6e948
decoder/modplug: Add "loop_count" parameter
...
The "loop_count" configuration parameter allows the user to set how
many times a module with backward loops shall loop. "0" (the default)
means a module is not allowed to use backward loops at all. "-1"
enables inifinite looping.
2013-10-19 16:12:17 +02:00
Sebastian Thorarensen
d6553fc6a7
ConfigData: Add support for signed integers
...
Now config_param::GetBlockValue() can be used to get signed integers
from the configuration.
2013-10-19 16:11:33 +02:00
Ben Boeckel
fc9014f7ec
PlayerThread: Only drop 0 length packets without tags
...
Fixes a regression from 752dfb3d95 which
caused the current chunk to be flushed as soon as new replaygain
information was found. If this occurs on a tag chunk, it has no data
(length 0) and is then skipped before pushing it to all of the outputs.
This change allows 0-length chunks through if they contain a tag and
they are now appearing in mplayer and mpv properly.
2013-10-19 15:45:11 +02:00
Max Kellermann
b39ab76118
Util/CharUtil: new library replacing g_ascii_isX()
2013-10-19 15:36:47 +02:00
Max Kellermann
90777f78c9
playlist/(Ext)M3u: use strchug_fast()
2013-10-19 15:36:47 +02:00
Max Kellermann
7cb803ad5c
test/test_pcm: use C++11 random instead of GLib
2013-10-19 15:05:48 +02:00
Max Kellermann
8e063829c4
encoder/{opus,vorbis}: new serial generator replacing g_random_int()
2013-10-19 14:43:24 +02:00
Max Kellermann
139c6be370
encoder/wave: include cleanup
2013-10-19 02:05:44 +02:00
Sebastian Thorarensen
b6ac249c3c
decoder/mikmod: Add loop configuration parameter
...
This patch allows the user to configure the mikmod decoder plugin to loop
modules. It adds a configuration parameter to the mikmod decoder called
"loop" which can be "no" (the old behaviour, default) or "yes" to allow
modules to use backward loops.
2013-10-18 14:23:24 +02:00
Max Kellermann
5e103b5fb7
filter/route: merge the two loops, one-pass parsing
2013-10-18 12:24:49 +02:00
Max Kellermann
de5be62da5
filter/route: allocate "sources" statically
...
Worst-case allocation using MAX_CHANNELS.
2013-10-18 12:24:47 +02:00
Max Kellermann
b5f608d026
filter/route: use int8_t instead of signed char
2013-10-18 12:24:47 +02:00
Max Kellermann
58fe352fda
util/StringUtil: rename strchug_fast_c() to strchug_fast()
...
Overload the name.
2013-10-18 12:24:47 +02:00
Max Kellermann
b105093dcd
ZeroconfAvahi: convert avahiRunning to a "bool"
2013-10-18 10:50:14 +02:00
Max Kellermann
d1c401fe7a
ZeroconfAvahi: integrate into the EventLoop
...
Finally fixes the regression by commit c1f4f1fd .
2013-10-18 09:16:55 +02:00
Max Kellermann
964aa42b04
test/run_avahi: new debug program
2013-10-18 09:01:34 +02:00
Max Kellermann
bf8660b21c
test/run_inotify: use SignalMonitor
2013-10-18 08:56:25 +02:00
Max Kellermann
43863a70c8
SignalMonitor: add SignalMonitorGetEventLoop()
...
Eliminate the global variable "shutdown_loop".
2013-10-18 08:44:40 +02:00
Max Kellermann
bd5a70c712
input/curl: use MultiSocketMonitor constants instead of GLib
2013-10-18 08:30:44 +02:00
Max Kellermann
909ff4b8a9
valgrind.suppressions: add g_get_home_dir suppression
2013-10-18 01:14:31 +02:00
Max Kellermann
bcfc62a3f2
PlaylistEdit, QueueSave: free the Song object after Append()
...
Fix for a major memory leak.
2013-10-18 01:12:47 +02:00
Max Kellermann
d1924867db
valgrind.suppressions: add libGnuTLS suppression
2013-10-18 01:00:20 +02:00
Max Kellermann
abfbd55305
fs/Path: rename to AllocatedPath
...
The new class Path only holds a string pointer without being
responsible for allocation/deallocation. The FileSystem.hxx library
accepts Path arguments instead of AllocatedPath, to avoid forcing
callers to allocate another string object.
2013-10-17 23:43:46 +02:00
Max Kellermann
b3611524f4
fs/Path: move definitions to struct PathTraits
2013-10-17 23:23:25 +02:00
Max Kellermann
a63613dba0
fs/Path: include clenaup
2013-10-17 23:20:26 +02:00
Max Kellermann
7fec2b02d4
fs/Charset: GetFSCharset() returns "utf-8" by default
...
If fs_charset is empty, i.e. we're using the default "utf-8",
GetFSCharset() should return exactly that instead of an empty
std::string.
2013-10-17 22:47:09 +02:00
Max Kellermann
608a98c873
fs/Charset: default filesystem charset is UTF-8
...
Implement a fast path for UTF-8 which leaves fs_charset empty, and
don't assign a value to fs_charset if there's no configuration.
2013-10-17 22:42:22 +02:00
Max Kellermann
f951e5356b
fs/Charset: don't allow nullptr arguments
2013-10-17 22:39:06 +02:00
Max Kellermann
080ee87e07
fs/Path: move configuration code to Config.cxx
2013-10-17 22:29:03 +02:00
Max Kellermann
fa60b9ae94
fs/Path: move path_domain to Domain.hxx
2013-10-17 22:20:53 +02:00
Max Kellermann
0d33ae52c6
fs/Path: make fs_charset static
2013-10-17 22:10:27 +02:00
Max Kellermann
77e4b28092
fs/Path: include cleanup
2013-10-17 22:08:57 +02:00
Max Kellermann
4817437d31
fs/Limits: convert macro to "constexpr"
2013-10-17 22:08:56 +02:00
Max Kellermann
354b5a9365
fs/Path: move MPD_PATH_MAX to Limits.hxx
2013-10-17 22:00:01 +02:00
Max Kellermann
58502b38d3
*: use std::numeric_limits
2013-10-17 21:53:19 +02:00
Max Kellermann
d44880dfa9
UpdateGlue: handle update id management
...
Add UpdateQueueItem::id to keep track of the id in every item.
Replaces thhe hack in update_queue_push().
2013-10-17 21:45:53 +02:00
Max Kellermann
0c63632cc2
UpdateGlue: pass UpdateQueueItem around
...
Fixes a few kludges and avoids GLib allocation.
2013-10-17 21:45:42 +02:00
Max Kellermann
b93523c0b1
UpdateGlue: never pass null to update_enqueue()
2013-10-17 21:45:41 +02:00
Max Kellermann
7ef40de98b
UpdateQueue: use std::string and std::queue
2013-10-17 21:13:40 +02:00
Max Kellermann
196ec25682
Mapper: use std::string
2013-10-17 19:54:58 +02:00
Max Kellermann
c85af12d45
StickerDatabase: return std::string
2013-10-17 19:39:23 +02:00
Max Kellermann
e452d1f5b4
StickerDatabase: add pure/const attributes
2013-10-17 19:39:22 +02:00
Max Kellermann
ffea268d2e
PlayerControl: GetError() returns an Error, not a char*
2013-10-17 19:34:59 +02:00
Max Kellermann
8e676db633
Thread/Thread: replacement library for GThread
2013-10-17 19:29:47 +02:00
Max Kellermann
f6d74012b7
util/Error: add method SetLastError()
2013-10-17 19:29:38 +02:00
Max Kellermann
32dfc11c23
Main: use ThreadId instead of GThread*
2013-10-17 19:28:34 +02:00
Max Kellermann
aad0ea6e23
Makefile.am: move sources to libthread.a
2013-10-17 19:26:23 +02:00
Max Kellermann
05de2e998c
InputStream: use int64_t instead of goffset
...
Decouple some more from GLib.
2013-10-17 10:45:10 +02:00
Max Kellermann
24780d99e6
input_plugin: rename struct to "InputPlugin"
2013-10-17 10:20:57 +02:00
Max Kellermann
7c1cf61728
thread/{Cond,Mutex}: use "class" instead of "typedef"
...
Allows forward-declaration.
2013-10-17 10:06:31 +02:00
Max Kellermann
eb10d08671
CueParser: use std::string
2013-10-17 01:34:10 +02:00
Max Kellermann
abb0549e4b
InotifyUpdate: use class Path
2013-10-17 01:16:46 +02:00
Max Kellermann
5327ea13ac
PlaylistSave: eliminate the last g_warning() call
2013-10-17 01:15:54 +02:00
Max Kellermann
be8ceae6e6
Song: GetURI() returns std::string
2013-10-17 01:01:15 +02:00
Max Kellermann
67ae033de7
ArchiveLookup: in-place editing, avoid string copy
2013-10-17 00:54:20 +02:00
Max Kellermann
161f7ced96
ArchiveLookup: declare local variables later
2013-10-17 00:48:58 +02:00
Max Kellermann
72bc11b180
ArchiveLookup: don't reset out arguments
...
If we return false, their values are undefined.
2013-10-17 00:46:26 +02:00
Max Kellermann
15c2538532
ArchiveLookup: move code to FindSlash()
2013-10-17 00:44:57 +02:00
Max Kellermann
fd9dd9343b
ArchiveLookup: move code to FindSuffix()
2013-10-17 00:38:26 +02:00
Max Kellermann
1b8a1d4140
ArchiveLookup: return const strings
2013-10-17 00:36:52 +02:00
Max Kellermann
e132d10aec
ArchiveLookup: move API documentation to header
2013-10-17 00:36:35 +02:00
Max Kellermann
3dbda2dda2
test/test_archive: unit test for archive_lookup()
2013-10-17 00:19:22 +02:00
Max Kellermann
a0105b45ae
configure.ac: add function MPD_AUTO_LIB and use it
2013-10-17 00:09:08 +02:00
Max Kellermann
551b7768fc
configure.ac: define HAVE_MPCDEC
...
Restore the "mpcdec" decoder plugin that was accidently broken since
commit 8ead8f7e .
2013-10-17 00:07:04 +02:00
Max Kellermann
d6967db761
decoder/wildmidi: remove suport for libwildmidi 0.2.2 or older
2013-10-16 23:57:26 +02:00
Max Kellermann
b0967cae69
configure.ac: don't leak -lsidutils -lmp3lame into
...
Make the third argument to AC_CHECK_LIB() non-empty to disable its
default handler.
2013-10-16 23:46:11 +02:00
Max Kellermann
401a799a1b
test: use the CPPUNIT framework for unit tests
2013-10-16 23:36:36 +02:00
Max Kellermann
ba98518c69
Makefile.am: distribute util/Domain.hxx and system/ByteOrder.hxx
2013-10-16 23:36:03 +02:00
Max Kellermann
5e26e2ab1d
system/ByteOrder: new library for byte ordering / endianess
...
Replacing GLib macros.
2013-10-16 22:09:44 +02:00
Max Kellermann
08eca827b6
util/ByteReverse: use C99 "restrict"
...
Micro-optimization.
2013-10-16 22:07:59 +02:00
Max Kellermann
6b2b5af344
util/byte_reverse: convert to C++
2013-10-16 22:07:52 +02:00
Max Kellermann
f32fbd9ed1
pcm_pack: convert to C++
2013-10-16 22:07:43 +02:00
Max Kellermann
e3511d0ee0
encoder/wave: use delete to dispose the WaveEncoder object
2013-10-16 22:07:32 +02:00
Max Kellermann
fa13a6616f
Archive*: move archive_domain to ArchiveDomain.cxx
...
Merge duplicate symbol.
2013-10-15 23:24:54 +02:00
Max Kellermann
d4c2f91182
ConfigData: remove unused method DupBlockString()
2013-10-15 23:19:44 +02:00
Max Kellermann
084fd8df63
playlist/soundcloud: use std::string
2013-10-15 23:17:53 +02:00
Max Kellermann
328131b7aa
output/roar: use const_cast instead of g_strdup()
2013-10-15 23:14:34 +02:00
Max Kellermann
85003429af
output/roar: use std::string
2013-10-15 23:11:32 +02:00
Max Kellermann
6db77dcf75
output/roar: move code into the RoarOutput class
2013-10-15 22:58:38 +02:00
Max Kellermann
1cde86823d
output/pipe: use std::string
2013-10-15 22:52:04 +02:00
Max Kellermann
dbd88e6aef
Client, ...: remove unnecessary glib.h include
2013-10-15 22:51:09 +02:00
Max Kellermann
45418583e9
ApeTag: use std::string for temporary allocation
2013-10-15 22:50:02 +02:00
Max Kellermann
77a1133723
PlaylistRegistry: use std::string for temporary allocation
2013-10-15 22:49:51 +02:00
Max Kellermann
25c208d81d
input/*: don't allocate attribute "mime"
...
This was a memory leak, because "mime" was a std::string which created
another copy and discarded the allocated buffer.
2013-10-15 22:49:23 +02:00
Max Kellermann
67f87db511
UpdateArchive: use std::string for temporary string
2013-10-15 22:49:12 +02:00
Max Kellermann
7de96275dd
ConfigData: use std::string for config_param::value
2013-10-15 22:49:01 +02:00
Max Kellermann
e13d0bf656
Permission: use std::string for temporary password allocation
...
As a side effect, this fixes a memory leak.
2013-10-15 22:48:09 +02:00
Max Kellermann
8ed9f7effa
Mapper: remove obsolete variable music_dir_fs_length
2013-10-15 22:48:01 +02:00
Max Kellermann
12ab556477
event/BufferedSocket: pass writable pointer to OnSocketInput()
...
Remove the const_cast from HttpdClient.cxx, and avoid one allocation
in ClientRead.cxx.
2013-10-15 22:47:46 +02:00
Max Kellermann
509f8dab89
Util/Macros: replacement for GLib's G_N_ELEMENTS()
2013-10-15 22:47:39 +02:00
Max Kellermann
77429b6dd3
output/winmm: use delete instead of g_free()
2013-10-15 22:47:25 +02:00
Max Kellermann
84d20d9e43
util/FifoBuffer: C++ version of the fifo_buffer library
2013-10-15 10:28:52 +02:00
Max Kellermann
0c13703da3
system/clock: convert to C++
2013-10-15 09:38:12 +02:00
Max Kellermann
b97b7a7493
require GLib 2.28
...
The header glib_compat.h is now obsolete and can be removed.
2013-10-15 09:35:25 +02:00
Max Kellermann
be2951b45f
gcc.h: rename to Compiler.h
2013-10-15 09:21:59 +02:00
Max Kellermann
1dd1a705b5
gcc.h: major update
...
Copy the according file from another project (i.e. XCSoar). This will
allow copying more code more easily.
2013-10-15 09:13:22 +02:00
Max Kellermann
e4e80ff0cb
*: use WIN32 instead of G_OS_WIN32
2013-10-15 08:33:44 +02:00
Max Kellermann
9508ea982b
fs/Path: add method IsAbsolute()
2013-10-14 22:38:29 +02:00
Max Kellermann
47d655ea7f
fs/Path: add separator constants/functions
2013-10-14 22:26:23 +02:00
Max Kellermann
62271bf6ce
PlaylistFile: always check for absolute paths within music_directory
...
Try map_fs_to_utf8() first, and fall back to Path::ToUTF8() for
absolute paths.
2013-10-14 22:21:22 +02:00
Max Kellermann
0b27ac2f5c
fs/Path: add method RelativeFS()
...
Move code from map_fs_to_utf8().
2013-10-14 22:09:02 +02:00
Max Kellermann
6fd481df97
Mapper, ...: use memcmp() instead of strncmp() where appropriate
...
Micro-optimization.
2013-10-14 22:00:21 +02:00
Max Kellermann
b915e43391
fs/Path: add method data()
2013-10-14 21:57:43 +02:00
Max Kellermann
c96b295700
PlaylistFile: fix memory leak
...
Consistently use std::string in LoadPlaylistFile().
2013-10-14 21:53:08 +02:00
Max Kellermann
9067da2df8
Mapper: map_fs_to_utf8() returns std::string
...
Avoid the conversion to an allocated char*, let the caller decide.
2013-10-14 21:43:41 +02:00
Max Kellermann
8cf2f52f7a
Merge tag 'release-0.17.6'
2013-10-14 21:40:56 +02:00
Max Kellermann
681352ac3b
release 0.17.6
2013-10-14 21:15:55 +02:00
Florian Schlichting
d9c662d51f
decoder/modplug: fix include directory
2013-10-14 21:12:47 +02:00
Max Kellermann
ad631d563b
stored_playlist: use fs_charset_to_utf8() for URLs
2013-10-14 21:11:20 +02:00
Max Kellermann
7cbaf11dda
load_file
2013-10-14 21:00:46 +02:00
Max Kellermann
3be63549c0
stored_playlist: add "file://" prefix to absolute paths
...
Prepare to fix loading arbitrary song files from stored playlists.
2013-10-14 20:52:49 +02:00
Max Kellermann
17c6db6c33
replay_gain_*.h: rename to *.hxx
2013-10-02 12:22:12 +02:00
Max Kellermann
86316b1828
output/httpd: don't include glib.h in header
2013-10-02 12:20:36 +02:00
Max Kellermann
efc3a69dbf
Stats: don't include glib.h in header
...
Use forward declaration instead.
2013-10-02 12:16:52 +02:00
Max Kellermann
ec883e1901
Stats: rename stats.h to Stats.hxx
2013-10-02 12:14:07 +02:00
Max Kellermann
060814daa8
Log: new logging library API
...
Prepare to migrate away from GLib. Currently, we're still using GLib
as a backend.
2013-10-02 08:57:55 +02:00
Max Kellermann
c53492a76a
TextFile: don't include glib.h in header
...
Un-inline the methods that use GLib.
2013-10-02 08:56:27 +02:00
Max Kellermann
43675717b8
filesystem/Path: use std::string
2013-10-02 08:56:27 +02:00
Max Kellermann
b21ed2fa36
PlaylistMapper: convert playlist name to filesystem charset
2013-10-02 08:56:27 +02:00
Max Kellermann
0214baad5a
Playlist*: use nullptr instead of NULL
2013-10-02 08:56:27 +02:00
Max Kellermann
c2d3ed2acc
Listen, ...: add missing includes
2013-10-02 08:56:27 +02:00
Max Kellermann
0339c8d025
ConfigData: handle default_value==nullptr
...
Return Path::Null() instead of dying from assertion failure.
2013-10-02 08:56:02 +02:00
Max Kellermann
0e0be0243b
Daemon, Mapper: move-assign the Path objects
2013-10-01 18:50:18 +02:00
Max Kellermann
a2ce2447a6
Merge branch 'v0.17.x'
2013-10-01 17:20:38 +02:00
Max Kellermann
9a1076256d
mixer/alsa: handle ENODEV
...
Fixes busy loop when USB sound device gets unplugged (Mantis bug
#3824 ).
2013-10-01 16:35:27 +02:00
Max Kellermann
72ef38d4a7
mixer/alsa: log snd_mixer_handle_events() errors
2013-10-01 16:30:20 +02:00
Max Kellermann
d397ce68dc
prepare 0.17.6
2013-10-01 16:29:54 +02:00
Max Kellermann
5e20b7976f
DecoderControl: lock the mutex in Seek()
...
Use LockSynchronousCommand() instead of SynchronousCommandLocked().
Fixes regression from commit ef663810 (dead lock due to cond_wait with
unlocked mutex).
2013-09-30 16:20:35 +02:00
Max Kellermann
36f712b949
tag/{riff,aiff}: convert to C++
2013-09-28 14:14:13 +02:00
Max Kellermann
a446775d80
playlist/lastfm: remove defunct Last.fm support
...
This plugin has been defunct ever since Last.fm changed their
protocol. Since there is no volunteer willing to fix the plugin, I'm
removing it now.
2013-09-28 14:01:51 +02:00
Max Kellermann
ccd7f0825a
DecoderControl: use GLib forward declarations
2013-09-27 23:00:23 +02:00
Max Kellermann
d0896ea7c4
PlayerThread: convert struct player to a class
2013-09-27 22:22:11 +02:00
Max Kellermann
a73d1e4b1c
PlayerThread: use strictly typed enum
2013-09-27 22:19:26 +02:00
Max Kellermann
d05bb2a0af
PlayerControl: use strictly typed enums
2013-09-27 22:07:20 +02:00
Max Kellermann
6765901687
DecoderControl: convert "enum decoder_state" to strictly-typed enum
2013-09-27 12:27:33 +02:00
Max Kellermann
c5d05ac0cf
DecoderCommand: convert to strictly-typed enum
2013-09-27 12:11:37 +02:00
Max Kellermann
939003c1f1
OutputAll: add pure/const attributes
2013-09-27 09:38:47 +02:00
Max Kellermann
a10f3a8aec
PlayerControl: convert functions to methods
2013-09-27 09:30:19 +02:00
Max Kellermann
ef663810a2
DecoderControl: convert functions to methods
2013-09-27 09:18:03 +02:00
Max Kellermann
ada67a6a4f
PlayerThread: move code to player_control::CommandFinished()
2013-09-27 07:58:48 +02:00
Max Kellermann
b6a5d1ad5a
PlayerThread: use nullptr instead of NULL
2013-09-27 00:03:22 +02:00
Max Kellermann
d8c5a63bc2
PlayerThread: unlock/lock in player_task()
2013-09-26 23:58:41 +02:00
Max Kellermann
bcb2db62c9
PlayerThread: move code into the player class
2013-09-26 23:57:31 +02:00
Max Kellermann
079ef93121
PlayerThread: use player references
2013-09-26 23:27:47 +02:00
Max Kellermann
b2789c598e
PlayerThread: use {decoder,player}_control references
2013-09-26 22:53:40 +02:00
Max Kellermann
92a93c1217
PlayerThread: allocate decoder_control on the stack
2013-09-26 22:48:55 +02:00
Max Kellermann
96b70835f9
PlayerThread: move global MusicBuffer variable into the player object
2013-09-26 22:45:49 +02:00
Max Kellermann
7fa3b7a267
PlayerThread: simplify "buffer empty" assertion
2013-09-26 22:41:07 +02:00
Max Kellermann
f3fc76e3c8
MusicChunk: remove obsolete prototypes
2013-09-26 22:34:43 +02:00
Max Kellermann
3216f4b257
MusicBuffer: expose the C++ API
2013-09-26 22:21:56 +02:00
Max Kellermann
ce1d897575
MusicPipe: expose the C++ API
2013-09-26 21:51:45 +02:00
Max Kellermann
17e108a10a
MusicChunk: use constexpr for CHUNK_SIZE
2013-09-26 21:49:26 +02:00
Max Kellermann
5bc4ab899f
*Plugin: remove redundant "line %i" from error messages
...
The MPD core will add this as a prefeix.
2013-09-26 20:59:40 +02:00
Max Kellermann
44faf1080c
SongFilter: search for album artist falls back to the artist tag
...
Implement Mantis ticket 0003646.
2013-09-26 19:25:13 +02:00
Max Kellermann
e354c5c2a8
IdTable, SongFilter: use std::fill_n() instead of std::fill()
2013-09-26 18:25:28 +02:00
Max Kellermann
04bc9005ae
TagType: reduce the enum size to 1 byte
...
Reduce the TagItem overhead.
2013-09-26 18:14:58 +02:00
Max Kellermann
3c92c69bc7
Tag: add "pure" attributes
2013-09-26 18:11:00 +02:00
Max Kellermann
52ee132d92
TagHandler: use a TagBuilder internally
...
Reduce heap allocator overhead.
2013-09-26 17:35:08 +02:00
Max Kellermann
7ca0aedcfc
Main: fix crash if no database was configured
...
Add nullptr check, and return early from glue_db_init_and_load().
2013-09-26 17:33:46 +02:00
Max Kellermann
a2c4037a24
Main: use nullptr instead of NULL
2013-09-26 17:31:50 +02:00
Max Kellermann
d7b0073ce1
decoder/modplug: fix include directory
...
Since Debian package 1:0.8.8.4-4, the pkg-config file does not contain
-I/usr/include/libmodplug anymore, and we need to add the
"libmodplug/" prefix to the #include line.
2013-09-26 17:27:35 +02:00
Artem Savkov
585b68d2ae
input/curl: fix EventLoop stall after curl_easy_pause
...
When playing finite http streams, e.g. something from soundcloud,
eventloop stalls after pausing writefunc. TimeoutMonitor is cancelled
by the time resume happens, so when enough data is consumed writefunc
is called only once. Calling InvalidateSockets() from
input_curl_resume() seems to fix the issue.
2013-09-26 17:27:35 +02:00
Max Kellermann
89d2d648cc
ConfigPath: return early on "~"
...
Previously, the pointer was moved to undefined memory.
2013-09-12 11:05:59 +02:00
Max Kellermann
7532f24d58
ConfigPath: skip the slash of "~/"
...
Increment the "path" earlier.
2013-09-12 11:05:41 +02:00
Max Kellermann
69a5df2f98
ConfigPath: remove the "~/" from the constructed path
...
This was building broken paths like "/home/foo/~/bar". Bug found by
Maarten de Vries.
2013-09-12 10:54:45 +02:00
Max Kellermann
1c65908cdb
ConfigPath: simplify the duplicate tilde check
2013-09-12 10:49:57 +02:00
Max Kellermann
3aaf013dd1
ConfigPath: convert "home" variable to Path object
...
Use Path::FromUTF8() for the g_get_home_dir() return value instead of
assuming it's already FS charset.
2013-09-12 10:35:40 +02:00
Max Kellermann
5f2705ab07
ConfigPath: move code to GetHome()
2013-09-12 10:30:00 +02:00
Max Kellermann
9af620982c
ConfigPath: include cleanup
2013-09-12 10:17:41 +02:00
Max Kellermann
1ee6a78cb7
Path: add FromUTF8() overload that returns an Error
2013-09-12 10:17:41 +02:00
Max Kellermann
bf4ee48efa
ConfigPath: move path_domain to system/Path.cxx
2013-09-12 10:03:37 +02:00
Maarten de Vries
08e6d222a2
Listen: Allow tilde paths for socket.
2013-09-12 08:55:45 +02:00
Max Kellermann
cf98b0e261
test/dump_rva2: remove fake Tag symbols
2013-09-05 19:25:50 +02:00
Max Kellermann
a24589d46e
TagBuilder: add method Commit(Tag&)
...
For callers that already have a Tag instance.
2013-09-05 19:23:06 +02:00
Max Kellermann
84533b6cad
TagBuilder: add method IsEmpty()
2013-09-05 19:14:47 +02:00
Max Kellermann
8dca38e979
Tag: remove the obsolete "bulk" mode
...
Methods BeginAdd() and EndAdd() have been replaced by class
TagBuilder.
2013-09-05 19:08:22 +02:00
Max Kellermann
662bed6a00
db/proxy: use class TagBuilder
2013-09-05 19:07:27 +02:00
Max Kellermann
ae5e0cb02b
SongSave: use class TagBuilder
2013-09-05 18:59:19 +02:00
Max Kellermann
0b3e1c4706
TagBuilder: new class for constructing Tag objects
...
Obsoletes Tag::BeginAdd() and the complicated "bulk add" code.
2013-09-05 18:41:49 +02:00
Max Kellermann
ce08a7a932
TagItem: disable the copy constructor/operator
...
This is not a C++ class and must not be copied.
2013-09-05 18:41:01 +02:00
Max Kellermann
5d5f21bfc5
Tag: compile-time initialisation of ignore_tag_items
...
Move to TagSettings.c and use C99 initializers.
2013-09-05 18:34:12 +02:00
Max Kellermann
fcccedc588
Tag: move struct TagItem to TagItem.hxx
2013-09-05 18:28:07 +02:00
Max Kellermann
0d73a49327
Tag: move fix_tag_value() to TagString.cxx
2013-09-05 18:27:40 +02:00
Max Kellermann
6239dd96f2
Tag: remove unused methods
2013-09-05 18:27:31 +02:00
Max Kellermann
57a4700fb9
TagNames: make tag_item_names const
2013-09-05 18:27:23 +02:00
Max Kellermann
2b676dc5fc
Tag: move configuration code to TagConfig.cxx
...
Allow using the Tag.cxx library without the Config library.
2013-09-05 18:27:08 +02:00
Max Kellermann
3f267b1795
Tag, ...: move to libtag.a
2013-09-05 18:26:56 +02:00
Max Kellermann
7a4c9f5f4c
mpd_error.h: remove obsolete header
...
Migrate the remaining callers to FatalError().
2013-09-05 18:26:46 +02:00
Ales Guzik
3330aa6f6a
input/curl: enable https
2013-09-05 11:56:49 +02:00
Max Kellermann
8929f88e6d
PlaylistPlugin: add interface SongEnumerator
...
Replaces struct playlist_provider.
2013-09-05 09:40:55 +02:00
Max Kellermann
5348808bf5
PlaylistPlugin, ConfigGlobal: use nullptr instead of NULL
2013-09-05 09:40:32 +02:00
Max Kellermann
fccba1af2a
use standard snprintf() instead of GLib g_snprintf()
2013-09-05 09:21:53 +02:00
Max Kellermann
26d92c80ed
conf.h: remove obsolete header
...
Use only ConfigData.hxx in plugin sources to reduce header
dependencies.
2013-09-05 08:47:10 +02:00
Max Kellermann
9605e24655
conf.h: move constants to ConfigDefaults.hxx
2013-09-05 08:42:08 +02:00
Max Kellermann
7d0269d2ce
InputLegacy: move functions to the input_stream class
2013-09-05 00:23:14 +02:00
Max Kellermann
52ffdb0a55
test/read_tags: use input_stream_wait_ready()
2013-09-05 00:22:43 +02:00
Max Kellermann
681d6bbdc5
TagTable: un-inline the two functions
...
Reduce header dependencies.
2013-09-04 23:57:30 +02:00
Max Kellermann
867b82b6de
Tag*: move TagTable.hxx to libtag.a
2013-09-04 23:54:37 +02:00
Max Kellermann
5101ef4b02
Tag*: move libtag.a sources to src/tag/
2013-09-04 23:46:20 +02:00
Max Kellermann
ee9e238179
system/SocketError: un-inline constructor
...
Reduces header dependencies.
2013-09-04 23:36:30 +02:00
Max Kellermann
29030b54c9
util/Error: new error passing library
...
Replaces GLib's GError.
2013-09-04 18:14:22 +02:00
Max Kellermann
c9fcc7f148
system/resolver: convert to C++
2013-09-04 18:02:09 +02:00
Max Kellermann
d1f4a31b5e
output/pulse: require libpulse 0.9.16
...
Remove all #ifdefs. Old versions of libpulse are not being tested,
and thus I'm removing support.
2013-09-04 16:55:03 +02:00
Max Kellermann
b691d3123b
IOThread: pass GError to FatalError()
...
Fixes build failure on GLib < 2.32.
2013-09-04 16:54:52 +02:00
Max Kellermann
f68e36f8c2
DatabaseSave: eliminate redundant db_quark() implementation
2013-09-03 11:52:57 +02:00
Max Kellermann
4db119c01b
IOThread: use FatalError() on g_thread_create() error
...
New GLib versions don't fail.
2013-09-03 11:28:47 +02:00
Max Kellermann
bbd7115564
input/{mms,despotify}: remove "seek" implementation
...
Omitting it has the same effect as returning false unconditionally.
2013-09-03 10:54:29 +02:00
Max Kellermann
8d36367fe2
input_stream.h: rename to InputLegacy.hxx
2013-09-03 09:18:30 +02:00
Max Kellermann
3deca8fccd
db_error: convert to C++
2013-08-10 19:43:27 +02:00
Max Kellermann
7af24c4d3a
playlist_error: convert to C++
2013-08-10 19:40:45 +02:00
Max Kellermann
7f0ce4e94e
ack.h: move to protocol/
2013-08-10 19:32:41 +02:00
Max Kellermann
5c48d3fbba
alsa/mixer: defer InvalidateSockets() call to I/O thread
2013-08-10 14:05:06 +02:00
Max Kellermann
00420ef9ca
EventLoop: initialise the thread id explicitly
2013-08-10 14:01:55 +02:00
Max Kellermann
b9d30595d6
ZeroconfAvahi: disable Avahi with epoll
...
Temporary hotfix until we have integrated avahi into our new event
loop.
2013-08-10 13:59:01 +02:00
Max Kellermann
c1f4f1fdb6
EventLoop: new implementation using epoll
...
Implement an event loop without GLib.
2013-08-10 13:54:23 +02:00
Max Kellermann
342333f72a
mixer/alsa: invoke InvalidateSockets() in constructor
2013-08-10 13:54:23 +02:00
Max Kellermann
94cdc47786
event/Call: signal the calling thread
...
Fixes regression from commit 018f4155 .
2013-08-10 12:40:44 +02:00
Max Kellermann
cc511e7b60
event/IdleMonitor: new monitor class
2013-08-10 11:52:31 +02:00
Max Kellermann
bb2af791e9
event/MultiSocketMonitor: add struct SingleFD
...
Prepare for migrating away from GLib.
2013-08-10 11:52:31 +02:00
Max Kellermann
f3f4b332ae
event/MultiSocketMonitor: use uint64_t instead of gint64
...
Unsigned and portable.
2013-08-10 11:52:31 +02:00
Max Kellermann
84ac79bb08
event/MultiSocketMonitor: eliminate virtual method CheckSockets()
...
Handle timeout internally.
2013-08-10 11:52:31 +02:00
Max Kellermann
be0c8495cd
event/MultiSocketMonitor: PrepareSockets() returns timeout
...
Simplify the API, don't use GLib specific integer type.
2013-08-10 11:52:31 +02:00
Max Kellermann
cbd0709d1c
glib_compat.h: use monotonic_clock_us() in g_source_get_time()
2013-08-10 11:52:31 +02:00
Max Kellermann
371d635da8
glib_compat.h: remove unused wrapper g_file_test()
2013-08-10 11:52:31 +02:00
Max Kellermann
85216966fa
decoder/wildmidi: use class Path for the "timidity.cfg" location
2013-08-10 11:52:31 +02:00
Max Kellermann
1c823e9d1f
ConfigData: overload GetBlockPath() with default value
2013-08-10 11:52:31 +02:00
Max Kellermann
25e338a098
ConfigData: use FatalError() instead of MPD_ERROR()
2013-08-10 11:52:31 +02:00
Max Kellermann
81175b0717
system/EPollFD: fix typo in Add()
2013-08-10 11:52:31 +02:00
Max Kellermann
d23c907a94
thread/Id: new class replacing GThread pointers
...
Remove a GLib dependencies from class EventLoop and DatabaseLock.
2013-08-10 09:00:04 +02:00
Max Kellermann
018f4155eb
event: add function BlockingCall()
...
Replaces io_thread_call(). This approach is more generic and easier
to use due to std::function.
2013-08-08 23:04:07 +02:00
Max Kellermann
9ab0a1f5f1
EventLoop: add methodd IsInside()
...
Track which thread runs the EventLoop and provide a check whether
we're currently inside.
2013-08-08 23:04:01 +02:00
Max Kellermann
c043b337b1
EventLoop: un-inline Run() and others
...
Prepare for adding more code.
2013-08-08 23:03:49 +02:00
Max Kellermann
090bc6fa79
event/*Monitor: add method GetEventLoop()
2013-08-08 23:03:38 +02:00
Max Kellermann
b63db1c1aa
event/SocketMonitor: un-inline Schedule()
...
Merge with CommitEventFlags().
2013-08-08 00:18:59 +02:00
Max Kellermann
0287ac794e
event/SocketMonitor: add assertions
2013-08-08 00:18:59 +02:00
Max Kellermann
0005221533
output/httpd: use "unsigned" instead of "guint"
2013-08-08 00:18:59 +02:00
Max Kellermann
23d2c0f1c6
Client{Event,Write}: add missing include
2013-08-08 00:14:19 +02:00
Max Kellermann
377b6f05ea
event/BufferedSocket: add missing include
2013-08-08 00:11:40 +02:00
Max Kellermann
3ac2e9d31f
os/FileSystem: disable mkfifo() wrapper on WIN32
2013-08-07 20:31:27 +02:00
Max Kellermann
b76a29a69a
ConfigPath: return a Path object
...
Migrate all callers to use Path directly, instead of doing the
conversion in each caller.
2013-08-07 19:59:09 +02:00
Max Kellermann
abe090ec1f
*: remove remaining __cplusplus checks
2013-08-07 19:58:52 +02:00
Max Kellermann
dff05c71e6
event/EPollFD: basic support for Linux epoll
2013-08-07 19:44:43 +02:00
Max Kellermann
f6f4742410
event/DeferredMonitor: rename Run() to RunDeferred()
2013-08-07 19:39:26 +02:00
Max Kellermann
977004c350
event/DeferredMonitor: use EventLoop::AddIdle()
2013-08-07 19:38:10 +02:00
Max Kellermann
fdc7d13ad1
configure.ac: pass option name to MPD_OPTIONAL_FUNC()
2013-08-07 19:23:00 +02:00
Max Kellermann
355dd5cb24
event/DeferredMonitor: new class wrapping g_idle_add()
2013-08-07 18:59:42 +02:00
Max Kellermann
123dd5fe2d
mixer/alsa: use AllocatedArray for the pollfd buffer
2013-08-07 18:56:57 +02:00
Max Kellermann
953e3190ca
encoder/lame: use ReusableBuffer instead of AllocatedArray
2013-08-07 18:53:24 +02:00
Max Kellermann
44a0e21795
PcmBuffer: move code to new class ReusableBuffer
...
ReusableBuffer is more generic.
2013-08-07 18:51:21 +02:00
Max Kellermann
fafaf567f9
Makefile: fix "distcheck" errors
2013-08-07 18:49:05 +02:00
Max Kellermann
870cc1d928
add missing includes
2013-08-07 18:23:55 +02:00
Max Kellermann
d86ee93801
filter/Route: don't access PcmBuffer attributes directly
...
Return the pointer given by PcmBuffer::Get() instead of reaching into
the PcmBuffer object.
2013-08-07 18:23:34 +02:00
Alexander Gehrke
87b7328463
CommandLine.cxx: look for config file in XDG_CONFIG_HOME too
...
Look for "$XDG_CONFIG_HOME/mpd/mpd.conf", similar to where mpd looks
for the file under Windows.
2013-08-07 18:22:27 +02:00
Alexis Ballier
3f846cf6b8
FfmpegDecoderPlugin: Allocate the interleaved buffer as needed instead of using an arbitrary big constant.
...
Also, save a memcpy when FFmpeg outputs interleaved audio.
Fixes build with FFmpeg 2.0.
2013-08-07 15:07:41 +02:00
Max Kellermann
f2ce8c3b62
event/EventFD: move to libsystem
2013-08-07 11:52:26 +02:00
Max Kellermann
4223657ab8
event/SignalMonitor: use signalfd() if available
2013-08-07 11:03:47 +02:00
Max Kellermann
930128a7ea
SignalHandlers: move code to new class SignalMonitor
2013-08-07 10:56:33 +02:00
Max Kellermann
db447440ff
event/Event{Pipe,FD}: auto-create in constructor
...
Errors are fatal now. This makes the class a lot easier to use.
2013-08-07 10:53:22 +02:00
Max Kellermann
b70d38dc10
Makefile.am: move sources to libsystem.a
2013-08-07 10:31:31 +02:00
Max Kellermann
a27d105dcd
FatalError: new library to replace mpd_error.h
2013-08-07 10:08:36 +02:00
Max Kellermann
67e44b0f2c
daemon: convert to C++
2013-08-07 09:53:33 +02:00
Max Kellermann
bf840700e4
test/signals: remove obsolete library
2013-08-07 09:51:43 +02:00
Max Kellermann
47e16dbee3
configure.ac: add option --enable-eventfd
...
Remove the runtime check for eventfd(), hard-code the feature once
it's been selected at compile time. The class WakeFD is splitted into
EventFD and EventPipe, using WakeFD as a macro diversion.
2013-08-06 23:32:21 +02:00
Max Kellermann
66f678023f
util/Manual: add missing include <utility>
2013-08-06 22:34:20 +02:00
Max Kellermann
132971f8eb
playlist/pls: use std::string instead of GString
2013-08-06 09:32:08 +02:00
Max Kellermann
3f04a4d635
encoder/lame: dynamic output buffer
2013-08-06 09:13:28 +02:00
Max Kellermann
17c8e839b6
encoder/lame: use delete instead of g_free()
2013-08-06 09:13:07 +02:00
Max Kellermann
348bdcd7b7
encoder/lame: use lame_encode_buffer_interleaved()
...
Don't deinterleave manually, don't allocate memory.
2013-08-06 09:10:30 +02:00
Max Kellermann
a32443c63b
encoder/lame: use offset variable instead of memmove()
2013-08-06 09:02:48 +02:00
Max Kellermann
7e53934ce3
encoder/lame: rename "buffer" to "output_buffer"
2013-08-06 09:02:48 +02:00
Max Kellermann
7c2b553364
playlist/EmbbeddedCue: convert to class
2013-08-05 22:23:33 +02:00
Max Kellermann
409fc837ab
playlist/lastfm: convert to class
2013-08-05 21:44:34 +02:00
Max Kellermann
6d0ada7f45
playlist/lastfm: allocate the lastfm_playlist object at the end
...
Simplify the error path, because the other allocations may fail.
2013-08-05 21:31:54 +02:00
Max Kellermann
af63372d2b
playlist/m3u: allocate ExtM3uPlaylist with new/delete
2013-08-05 21:28:19 +02:00
Max Kellermann
3e91f757a9
playlist/extm3u: allocate ExtM3uPlaylist with new/delete
2013-08-05 21:25:25 +02:00
Max Kellermann
498491ec05
decoder/ffmpeg: convert struct mpd_ffmpeg_stream to a class
2013-08-05 00:15:25 +02:00
Max Kellermann
85b77b81ca
*: use gcc.h macros instead of GLib
2013-08-04 23:48:01 +02:00
Andrzej Rybczak
5bf2ec5a74
DatabasePrint: print Last-Modified attribute for directories
2013-08-04 23:29:24 +02:00
Max Kellermann
9e715089a4
Commands: new command "toggleoutput"
2013-08-04 23:21:23 +02:00
Max Kellermann
1a852bc365
configure.ac: increase protocol version to 0.18
2013-08-04 23:21:23 +02:00
Max Kellermann
9326ce53ec
Merge tag 'release-0.17.5'
2013-08-04 14:36:22 +02:00
Max Kellermann
d8217c364a
release 0.17.5
2013-08-04 14:21:45 +02:00
Justin Riley
3a34fd181d
FfmpegDecoderPlugin: add application/flv to mime types list
2013-08-04 14:20:16 +02:00
Max Kellermann
fcb7233b25
ConfigData: remove obsolete functions
2013-08-04 14:07:50 +02:00
Max Kellermann
fe53a376a3
PlaylistPlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
65842cd99e
DatabasePlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
bf6ed643e0
InputPlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
a0beb5fa26
MixerPlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
f54bcc1f16
FilterPlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
ca0d09c50f
EncoderPlugin: pass config_param reference
2013-08-04 14:07:50 +02:00
Max Kellermann
81c3224076
OutputPlugin: pass config_param reference
2013-08-04 14:07:49 +02:00
Max Kellermann
7a1d466fb2
DecoderPlugin: pass config_param reference
2013-08-04 13:30:47 +02:00
Max Kellermann
83f4c48c8a
ConfigData: move code to block_param, config_param methods
2013-08-04 12:03:56 +02:00
Max Kellermann
acd742d225
ConfigData: remove C++ checks
2013-08-03 23:47:31 +02:00
Max Kellermann
d1e7b4e381
audio_format: convert to C++
2013-08-03 21:37:56 +02:00
Max Kellermann
67f591a9ce
gcc.h: add macro gcc_unreachable()
2013-08-03 21:34:17 +02:00
Christoph Mende
7ff988275f
decoder/mikmod: use MikMod_free() to free the title on libmikmod-3.2
...
Player_LoadTitle() returns an aligned pointer in libmikmod-3.2 that
cannot be freed with free(). The correct way to do this now is
MikMod_free() which extracts the original pointer from the buffer and
frees that.
Signed-off-by: Christoph Mende <mende.christoph@gmail.com >
2013-08-01 09:30:20 +02:00
Max Kellermann
363050f44c
playlist_edit: fix "move" relative to current when there is no current song
...
Fixes Mantis #3770 .
2013-08-01 09:28:03 +02:00
Michael Mair-Keimberger
dbe04c4207
configure.ac: detect system "ar"
2013-08-01 09:13:41 +02:00
tsufeki
d59a332ef9
commmand: fix URI argument in playlistadd
2013-08-01 08:42:22 +02:00
Max Kellermann
105b431e4c
PcmBuffer: reset size in Clear()
...
Fix for Mantis #3806 .
"PcmBuffer::Clear clears the buffer but does not reset the size. If
Get is called on the same PcmBuffer later on with a size that is the
same as (or less than) it was before the call to Clear, the "else"
branch is taken and the memory of buffer (at the address of nullptr)
is poisoned instead of the necessary allocation being performed. A
memset or memcpy on the returned pointer (nullptr) causes a
segmentation fault."
2013-08-01 08:33:53 +02:00
Max Kellermann
ba79f4c1f9
Tag: check bulk mode in Clear()
2013-07-31 09:02:07 +02:00
Max Kellermann
8b2dcf7018
decoder/ffmpeg: require ffmpeg/libav 0.8
...
Now that even Debian stable has picked up version 0.8, we can safely
make this a requirement, and remove a lot of old cruft.
2013-07-31 01:01:21 +02:00
Max Kellermann
44621f7326
output/winmm: adapt to PcmBuffer API changes
2013-07-31 00:57:52 +02:00
Max Kellermann
8ead8f7ea6
decoder/mpcdec: remove support for the "old" API
...
This old version has been obsolete for many years - time to remove it.
2013-07-31 00:43:21 +02:00
Max Kellermann
7f9402bd22
Tag: add method Clear()
...
Allow reusing Tag instances.
2013-07-31 00:35:05 +02:00
Max Kellermann
cbd38327e7
DecoderAPI: pass rvalue reference to decoder_tag()
...
Avoid duplicating the tag.
2013-07-31 00:34:22 +02:00
Max Kellermann
06f898cc12
tag: convert to C++
2013-07-30 20:19:53 +02:00
Max Kellermann
6a9ab8bc0e
tag: move enum tag_type to TagType.h
2013-07-30 20:10:24 +02:00
Max Kellermann
9a0061c511
encoder_api: convert to C++
2013-07-30 09:04:05 +02:00
Max Kellermann
7a3aac1843
encoder/lame,twolame: convert to C++
2013-07-30 08:52:47 +02:00
Max Kellermann
da1f4b3ede
encoder/wave: convert to C++
2013-07-30 08:48:53 +02:00
Max Kellermann
dac740ee17
encoder/null: convert to C++
2013-07-30 08:43:19 +02:00
Max Kellermann
28030d7edb
include cleanup
2013-07-30 08:39:21 +02:00
Max Kellermann
648196319f
output_api: convert to C++
2013-07-30 08:34:10 +02:00
Max Kellermann
c75cb67c44
pcm_buffer: convert to C++
2013-07-30 08:31:02 +02:00
Max Kellermann
cd1bb2bafa
Main: fix crash without state file
...
If no state file is configured, don't chek for state changes.
2013-07-30 08:31:02 +02:00
Max Kellermann
a9d2dc6144
pcm_resample: convert to C++
2013-07-30 00:04:16 +02:00
Max Kellermann
46b9388bb0
PcmConvert: don't memset() in the constructor
...
This destroys data inside PcmDsd and other attributes. It was once
necessary, but is not anymore.
2013-07-30 00:03:36 +02:00
Max Kellermann
a1a97d663e
encoder/flac: convert to C++
2013-07-29 08:04:34 +02:00
Max Kellermann
cac3c159bc
pcm_dsd: convert to C++
2013-07-29 07:56:40 +02:00
Max Kellermann
43166130b5
audio_check: convert to C++
2013-07-29 07:50:08 +02:00
Max Kellermann
14f21378e3
tag_table: convert to C++
2013-07-29 07:45:58 +02:00
Max Kellermann
bd42aeab46
XiphTags: convert to C++
2013-07-29 07:42:50 +02:00
Max Kellermann
cde6a3a00c
tag_handler: convert to C++
2013-07-29 07:39:58 +02:00
Max Kellermann
96b763067e
ape: convert to C++
2013-07-29 07:39:36 +02:00
Max Kellermann
dd5ba062cc
tag_id3: convert to C++
2013-07-28 20:25:45 +02:00
Max Kellermann
ba161ec572
song: convert header to C++
2013-07-28 13:25:12 +02:00
Max Kellermann
43f613d9be
decoder_api: convert to C++
2013-07-28 13:18:48 +02:00
Max Kellermann
2277d143fa
decoder/fluidsynth: convert to C++
2013-07-28 13:16:27 +02:00
Max Kellermann
6b6d9e64bd
decoder/pcm: convert to C++
2013-07-28 13:10:05 +02:00
Max Kellermann
f016a99f24
decoder/mpcdec: convert to C++
2013-07-28 13:04:12 +02:00
Max Kellermann
2eed9d64ce
decoder/modplug: convert to C++
2013-07-28 13:03:04 +02:00
Max Kellermann
1688b6dda9
decoder/mikmod: convert to C++
2013-07-28 13:03:04 +02:00
Max Kellermann
33aedc887a
decoder/wildmidi: convert to C++
2013-07-28 13:03:04 +02:00
Max Kellermann
258d0ea97e
decoder/mpg123: convert to C++
2013-07-28 13:03:04 +02:00
Max Kellermann
d3641766a5
decoder/sndfile: convert to C++
2013-07-28 12:48:26 +02:00
Max Kellermann
b25d5c5d33
decoder/audiofile: convert to C++
2013-07-28 12:48:26 +02:00
Max Kellermann
352d7f477e
decoder/{dsf,dsdiff}: convert to C++
2013-07-28 12:20:50 +02:00
Max Kellermann
1fcf35ad3b
tag_rva2: convert to C++
2013-07-26 12:52:51 +02:00
Max Kellermann
c8054e569a
decoder/mad: convert to C++
2013-07-26 11:59:17 +02:00
Max Kellermann
ef48eca9ca
Merge branch 'master' of git://git.musicpd.org/dk/mpd
2013-06-24 16:17:46 +02:00
Matthias Larisch
906d2fbadf
fix overwriting bitrate with signal type
...
I recently opened a bug: http://bugs.musicpd.org/view.php?id=3787
The main problem is that opus encoder config for signal overwrote
bitrate setting.
2013-06-24 16:08:25 +02:00
Matthias Drochner
2b579aeb4f
NULL pointer vs bool "false" confusion
...
there are some places in the mpd-0.17.4 sources where a "false" is
used instead of a NULL pointer.
2013-06-24 16:00:58 +02:00
Denis Krjuchkov
e9e55b0812
text_input_stream: convert to class
2013-05-12 20:02:27 +06:00
Denis Krjuchkov
49a3845135
timer: convert to class
2013-05-12 19:03:42 +06:00
Denis Krjuchkov
21dac6c05d
decoder/FLAC*: rename files and symbols to Flac*
2013-05-06 23:36:47 +06:00
Denis Krjuchkov
1d9b84a5af
PlaylistFile: use DirectoryReader and file system API
2013-05-06 23:36:42 +06:00
Denis Krjuchkov
a688745bdc
ClientFile: use Path and file system API, update usages accordingly
...
This commit also fixes incorrect passing of UTF-8 strings to client_allow_file
2013-05-06 23:36:36 +06:00
Denis Krjuchkov
459d824c50
ClientFile.cxx: include config.h
2013-05-06 23:36:24 +06:00
Denis Krjuchkov
96019f4a02
UpdateWalk, ExcludeList: use Path, file system API, DirectoryReader, log in UTF8
2013-05-06 23:34:48 +06:00
Denis Krjuchkov
896015bf53
DirectoryReader: rename Failed() to HasFailed() for consistency with TextFile
2013-05-05 13:34:12 +06:00
Denis Krjuchkov
df3e7a9248
.gitignore: always ignore any .exe files
2013-05-05 13:28:18 +06:00
Max Kellermann
b2d3d15e97
Main: move global variables to struct Instance
...
More preparations for multi-player support.
2013-04-17 23:52:58 +02:00
Max Kellermann
08dfd263ba
GlobalEvents: include windows.h for DELETE macro workaround
2013-04-17 23:52:57 +02:00
Max Kellermann
abaabe92d6
decoder_buffer: convert to C++
2013-04-17 22:45:10 +02:00
Max Kellermann
257b42b87f
decoder/faad: convert to C++
2013-04-17 22:33:59 +02:00
Max Kellermann
31bc94160a
song_sort: convert to C++
2013-04-17 22:25:57 +02:00
Max Kellermann
9e5d2c5bb7
encoder_list: convert to C++
2013-04-17 22:22:37 +02:00
Max Kellermann
2df2a989af
input/soup: plugin removed
...
This plugin is cumbersome to support, now that MPD is migrating away
from GLib and the GLib event loop. It has no practical advantages
over the CURL plugin. Soup requires the bloated GType library.
2013-04-17 21:46:16 +02:00
Max Kellermann
4a800b311f
don't use g_thread_init() with GLib 2.32
...
Deprecated.
2013-04-17 01:54:14 +02:00
Max Kellermann
a4a13a3825
use g_thread_new() if GLib is recent enough
...
Fixes deprecation warnings.
2013-04-17 01:49:43 +02:00
Max Kellermann
a28df6123f
OutputInternal: use Mutex instead of GMutex
2013-04-17 01:41:56 +02:00
Max Kellermann
c5c43c4541
thread/Cond: add method timed_wait()
2013-04-17 01:33:07 +02:00
Max Kellermann
0954f580fa
output/oss,null: use new/delete
2013-04-17 01:21:33 +02:00
Max Kellermann
3a2254c91f
output: convert to C++
2013-04-17 01:12:05 +02:00
Max Kellermann
4aeec4bb60
output/solaris: convert to C++
2013-04-17 01:08:35 +02:00
Max Kellermann
750b2ad6a8
output/openal: convert to C++
2013-04-17 01:04:27 +02:00
Max Kellermann
86c276f538
output/ao: convert to C++
2013-04-17 00:56:09 +02:00
Max Kellermann
166569200a
output/shout: convert to C++
2013-04-17 00:47:20 +02:00
Max Kellermann
e903d00968
output/ffado: remove broken plugin
...
This plugin has been in MPD for three years, and it has never worked.
Enough!
2013-04-17 00:44:02 +02:00
Max Kellermann
7d5d95ad53
configure.ac: fix hidden syntax error
2013-04-17 00:40:27 +02:00
Max Kellermann
cc6c452854
output/mvp: remove obsolete plugin
...
The hardware is obsolete, and the product does not exist anymore on
the Hauppauge web site. Let's see if anybody complains about the
removal.
2013-04-17 00:37:30 +02:00
Max Kellermann
f492c78e2e
output/jack: convert to C++
2013-04-17 00:37:30 +02:00
Max Kellermann
6b83d08228
output/fifo: convert to C++
2013-04-17 00:37:30 +02:00
Max Kellermann
dc415b761e
output/pipe: convert to C++
2013-04-17 00:37:30 +02:00
Max Kellermann
f1034eb657
output/recorder: convert to C++
2013-04-17 00:37:30 +02:00
Max Kellermann
ac9ebe1439
scripts: delete obsolete scripts
2013-04-17 00:37:30 +02:00
Max Kellermann
7b5f7c041b
MixerInternal: use Mutex instead of GMutex
2013-04-16 23:50:41 +02:00
Max Kellermann
8ce9b53093
mixer/software: use gcc_unused instead of G_GNUC_UNUSED
2013-04-16 23:50:41 +02:00
Max Kellermann
0b9e52bd5f
configure.ac: fix libmpdclient variable name
2013-04-16 23:44:32 +02:00
Max Kellermann
5dd728d802
doc: move sticker_file to "optional parameters"
2013-04-16 23:19:44 +02:00
Florian Schlichting
ce7c97b6ba
doc: mpd.conf.5 wrongly documents parameters as required
...
mpd.conf.5 lists follow_outside_symlinks and follow_inside_symlinks
under REQUIRED, yet also documents a default value for these options,
which only makes sense if they're not actually required.
2013-04-16 23:17:43 +02:00
Max Kellermann
9a4c049675
prepare 0.17.5
2013-04-16 23:17:38 +02:00
Max Kellermann
cb8449a66d
MixerInternal: convert to class
2013-04-16 21:33:25 +02:00
Max Kellermann
621467717d
mixer/winmm: convert to a class
2013-04-16 21:31:03 +02:00
Max Kellermann
506c716cf2
mixer/Software: convert to a class
2013-04-16 21:25:27 +02:00
Max Kellermann
9f625b0a0d
mixer/Pulse: convert to a class
2013-04-16 21:18:54 +02:00
Max Kellermann
bc1b4131cb
mixer/Oss: convert to a class
2013-04-16 21:11:14 +02:00
Max Kellermann
80ba3c5932
mixer/Alsa: convert to a class
2013-04-16 21:11:06 +02:00
Max Kellermann
e63420a8c2
output/Pulse: convert to C++
2013-04-16 20:51:21 +02:00
Max Kellermann
e02d8ad8d2
output/roar: work around libroar's use of "new"
2013-04-16 20:04:11 +02:00
Max Kellermann
d300e6bf21
util/Manual: work around strict-aliasing warning
2013-04-11 00:01:08 +02:00
Max Kellermann
1729388634
pcm_export: convert to C++
2013-04-09 01:31:05 +02:00
Max Kellermann
c654c7630a
pcm_*: move to src/pcm/
2013-04-09 01:24:52 +02:00
Max Kellermann
3f3b26fb0e
utils: convert to C++
2013-04-09 01:17:47 +02:00
Max Kellermann
0921180b90
string_util: convert to C++
2013-04-09 01:08:20 +02:00
Max Kellermann
14df240f5b
OpusReader: don't use strndup()
...
Eliminate the fallback strndup() and strnlen() implementations.
2013-04-09 01:03:44 +02:00
Max Kellermann
2090911363
cue_parser: convert to C++
2013-04-09 00:38:03 +02:00
Max Kellermann
3cc7be0fa6
playlist/cue: add constructor/destructor
2013-04-09 00:34:48 +02:00
Max Kellermann
6728b8c1a3
decoder_plugin: convert to C++
2013-04-09 00:20:49 +02:00
Max Kellermann
450c26c471
tokenizer: convert to C++
2013-04-08 23:51:39 +02:00
Max Kellermann
7ec1121cc8
uri: convert to C++
2013-04-08 23:45:31 +02:00
Max Kellermann
f84e288ad7
decoder/gme: fix rounding error
...
Cast to integer after multiplying with 1000. Allows sub-second
seeking.
2013-04-08 23:45:21 +02:00
Max Kellermann
8e31366431
decoder/gme: convert to C++
2013-04-08 23:32:53 +02:00
Max Kellermann
1bfa04f80e
InputStream: use gcc.h attributes
2013-04-08 23:22:12 +02:00
Max Kellermann
98cbc0ea79
event/TimeoutMonitor: eliminate support for periodic events
...
No caller needs this. Fixes use-after-free after returning from
Client::OnTimeout().
2013-04-08 23:14:07 +02:00
Max Kellermann
dca1115196
StateFile: schedule timer only after a change
...
Save the state file 2 minutes after the last change. This reduces the
disruptions by an idle MPD, and MPD can be paged out permanently until
it is used.
2013-04-08 23:11:36 +02:00
Max Kellermann
96882175f1
StateFile: move code to RememberVersions(), IsModified()
2013-04-08 23:11:36 +02:00
Max Kellermann
484841fc9e
StateFile: make AutoWrite() private
2013-04-08 23:11:35 +02:00
Max Kellermann
8052c76489
Idle: fix typo in API documentation
2013-04-08 23:11:35 +02:00
Max Kellermann
3477acee48
decoder/ffmpeg: suppress warning about unused variable
...
Only relevant for old ffmpeg versions.
2013-04-08 22:12:49 +02:00
Max Kellermann
2c4b998170
Merge tag 'release-0.17.4'
2013-04-08 22:11:42 +02:00
Max Kellermann
0a9c7ff6cf
release 0.17.4
2013-04-08 22:00:43 +02:00
Max Kellermann
cd71038655
command: don't check audio_format if not playing
...
Fixes valgrind warning.
2013-04-08 22:00:35 +02:00
Max Kellermann
1894aed261
Makefile.am: enable "dist-xz"
2013-04-08 21:35:45 +02:00
Max Kellermann
f3832bcaa8
.gitignore: stricter matches
2013-04-08 21:35:34 +02:00
Max Kellermann
436335e9a3
player_control: don't emit IDLE_PLAYER before audio format is known
...
Eliminates one IDLE_PLAYER call in playlist_control, and add two new
ones to player_thread. Fixes Mantis bug 3636.
2013-04-08 21:31:03 +02:00
Max Kellermann
a30eb194d5
command: don't print undefined audio_format
...
Check audio_format_defined().
2013-04-08 21:31:03 +02:00
Anton Khirnov
8becbb8b08
ffmpeg decoder plugin: do not allocate an AVFrame on stack.
...
AVFrame must be allocated with avcodec_alloc_frame().
2013-04-05 23:34:10 +02:00
Anton Khirnov
e0c2c77c2a
ffmpeg decoder plugin: do not allocate an AVFrame on stack.
...
AVFrame must be allocated with avcodec_alloc_frame().
2013-04-05 23:30:47 +02:00
Max Kellermann
6f2e1c2415
GlobalEvents: use g_idle_add() instead of WakeFD()
...
Use the GMainLoop specific function to wake up the main loop. This is
simpler and comes with very little overhead.
2013-02-27 20:41:17 +01:00
Max Kellermann
fc0ad8674b
GlobalEvents: wake up only if the flags were empty
...
Don't bother checking for the parameter mask. This doesn't matter.
The only thing that matters is if a wake-up is already pending.
2013-02-27 20:40:46 +01:00
Max Kellermann
19c67ab724
Idle, GlobalEvents: use std::atomic::exchange()
...
Less overhead than fetch_and() for what we do.
2013-02-27 20:35:44 +01:00
Oddegamra
a046b6e105
IcyMetaDataServer: increment iterator
...
Fixes segmentation fault.
2013-02-27 20:01:58 +01:00
Max Kellermann
8017301de5
Merge branch 'v0.17.x'
2013-02-27 20:00:14 +01:00
Florian Schlichting
46528783ef
fix typos in upstream's mpd.conf.5
2013-02-27 19:50:05 +01:00
Hagen Fritsch
6f4bb6cd2c
Add some comments to keep track of timer units.
2013-02-27 19:47:28 +01:00
Hagen Fritsch
2cf31e905b
clock: fix usec-to-usec factor
2013-02-27 19:45:31 +01:00
Hagen Fritsch
28a60db5aa
clock: add missing include
2013-02-27 19:42:35 +01:00
Max Kellermann
496f70fc0d
mixer_plugin: convert to C++
2013-02-22 20:51:23 +01:00
Max Kellermann
9ede4c5f3c
{output,mixer}/winmm: convert to C++
2013-02-22 20:29:03 +01:00
Max Kellermann
214a526945
Merge branch 'v0.17.x'
2013-02-19 09:24:11 +01:00
Jörg Thalheim
d5b756413a
command: allow to omit END in ranges (START:END)
...
If END is omitted, mpd should use the highest possible value instead of raising an error.
This partially reverts 52e9cab1c1
2013-02-19 09:23:18 +01:00
Max Kellermann
af99176581
output/alsa: workaround for noise after manual song change
...
Workaround for driver bug observed on the Raspberry Pi, see code
comment for details.
2013-02-04 15:51:32 +01:00
Max Kellermann
57e825dfe7
output/alsa: pre-allocate the silence buffer
2013-02-04 15:30:31 +01:00
Max Kellermann
e06dd129dd
output/alsa: move code to alsa_write_silence()
2013-02-04 14:30:16 +01:00
Max Kellermann
00baddcd9e
SocketUtil: add separators to g_prefix_error() call
2013-02-04 14:26:03 +01:00
Max Kellermann
7e92820c50
output/alsa: default "device" is an empty string
...
Fixes nullptr dereference in std::string::operator=(). Also fixes a
memory leak by using config_get_block_string() instead of
config_dup_block_string().
2013-02-04 11:46:49 +01:00
Max Kellermann
5692e20fd5
event/ServerSocket: close only sockets that have been opened
...
Fixes assertion failure.
2013-02-04 11:44:36 +01:00
Max Kellermann
3b3c9334c8
decoder/Opus: replace non-static data member initializers
...
Would require gcc 4.7, and MPD attempts to be compatible with gcc 4.6.
2013-02-04 11:08:32 +01:00
Max Kellermann
96dc0a318a
player_thread: implement missing "idle" events on output errors
...
When all outputs fail, MPD automatically pauses playback, but did not
emit the IDLE_PLAYER event. Thus, clients were not woken up. (Mantis
3665)
2013-02-04 10:15:34 +01:00
Uli Schlachter
a4223aac38
ServerSocket: Initialize length variable
2013-02-04 09:30:21 +01:00
Denis Krjuchkov
2bb751d9fa
StateFile: use file system API, log in UTF-8
2013-02-02 20:52:04 +06:00
Denis Krjuchkov
3b620112ca
SimpleDatabasePlugin: use file system API, log in UTF-8
2013-02-02 20:52:03 +06:00
Denis Krjuchkov
99526219b7
UpdateIO.cxx: use file system API, log in UTF-8
2013-02-02 20:52:02 +06:00
Denis Krjuchkov
d818b618af
UpdateWalk.cxx: use FileExists
2013-02-02 20:51:36 +06:00
Denis Krjuchkov
c64700e7ae
TextFile.hxx: use file system API
2013-02-02 20:23:27 +06:00
Denis Krjuchkov
5bd1917705
SongUpdate.cxx: use StatFile
2013-02-02 20:22:32 +06:00
Denis Krjuchkov
178c6c20cd
PlaylistSave.cxx: use FOpen
2013-02-02 20:21:46 +06:00
Denis Krjuchkov
92d71cc7fa
PlaylistFile.cxx: use file system API
2013-02-02 20:21:10 +06:00
Denis Krjuchkov
227eca7d28
ExcludeList.cxx: use FOpen
2013-02-02 20:20:24 +06:00
Denis Krjuchkov
9399b0ea52
ConfigFile.cxx: use FOpenMode
2013-02-02 20:19:25 +06:00
Denis Krjuchkov
17dca254a3
Path.hxx: add GetDirectoryName() method
2013-02-02 19:28:02 +06:00
Denis Krjuchkov
f6b50d2387
FileSystem.hxx: add FOpen modes for appending files
2013-02-02 19:20:10 +06:00
Max Kellermann
a9ce0218c1
FilterInternal: convert struct filter to a OO interface
2013-02-02 09:34:07 +01:00
Max Kellermann
7bb5a960fd
output/null: convert to C++
2013-02-02 09:30:29 +01:00
Max Kellermann
e6b04d1b50
filter/*: don't use GLib macros
2013-02-02 08:31:17 +01:00
Max Kellermann
12613356fc
filter/Chain: use std::forward_list instead of GSList
2013-02-01 18:14:06 +01:00
Max Kellermann
3894450b10
filter: convert to C++
2013-02-01 17:47:09 +01:00
Max Kellermann
ec07f6ec83
PcmMix: merge duplicate code with templates
2013-02-01 17:45:17 +01:00
Max Kellermann
a7a10d03c9
test/test_pcm: add unit test for pcm_mix()
2013-02-01 15:52:03 +01:00
Max Kellermann
ef99d6ce3d
PcmUtils: remove pcm_range(), use PcmClamp() instead
2013-02-01 14:10:27 +01:00
Max Kellermann
0ac06d77f1
PcmUtils: make PcmClamp() 64-bit-safe, add missing cast
2013-02-01 14:04:40 +01:00
Max Kellermann
469e233428
PcmUtils: remove unused clamp functions
2013-02-01 14:02:20 +01:00
Max Kellermann
86a0f9cf9b
PcmFormat: merge duplicate code with a template
2013-02-01 13:47:29 +01:00
Max Kellermann
e6a91d291d
PcmChannels: merge duplicate code with a template
2013-02-01 13:47:24 +01:00
Max Kellermann
bf35972714
ConfigTemplates: fix typo in id3v1_encoding
2013-02-01 13:47:12 +01:00
Max Kellermann
e0c645a270
test/test_pcm: add unit tests for the PcmFormat library
2013-02-01 00:32:05 +01:00
Max Kellermann
e42734c3f3
test/test_pcm: merge source buffer generator
2013-01-31 22:58:27 +01:00
Max Kellermann
eab78ab99c
PcmDither: use constexpr
2013-01-31 22:55:00 +01:00
Max Kellermann
f2491c88c8
PcmDither: convert struct to a class
2013-01-31 22:54:10 +01:00
Max Kellermann
1b175025fe
pcm_*: convert to C++
2013-01-31 21:11:06 +01:00
Max Kellermann
ccdf7184be
gcc.h: add "restrict" macro for C++
2013-01-31 21:11:06 +01:00
Max Kellermann
7764136211
mixer/software, filter/volume: convert to C++
2013-01-31 21:11:06 +01:00
Max Kellermann
0307801d51
test/test_pcm: convert to C++
2013-01-31 21:11:06 +01:00
Max Kellermann
72cf8dd8a0
ZeroconfBonjour: fix OnSocketReady() return type
2013-01-31 21:11:06 +01:00
Max Kellermann
3c2b464dfa
filter/convert: remove unused attribute
2013-01-31 00:31:24 +01:00
Max Kellermann
361404fd59
pcm_convert: convert to C++
2013-01-31 00:26:55 +01:00
Max Kellermann
762c91b7f1
util/Manual: new template class
2013-01-30 23:48:34 +01:00
Max Kellermann
f2a8d4d289
filter/convert: convert to C++
2013-01-30 23:28:13 +01:00
Max Kellermann
9ee52d85d7
filter/autoconvert: include cleanup
2013-01-30 23:19:11 +01:00
Max Kellermann
5ed9f02c4d
TagPool, ...: include cleanup
2013-01-30 22:53:12 +01:00
Max Kellermann
378ebad1c8
ConfigData: use simple linked list instead of GSList
2013-01-30 22:39:24 +01:00
Max Kellermann
e44e0fab9f
ConfigData: forbid copying a config_param object
2013-01-30 22:39:24 +01:00
Max Kellermann
c434077728
FilterConfig: add missing glib.h include
2013-01-30 22:39:24 +01:00
Max Kellermann
6e47e79790
ConfigData: move functions into the class
2013-01-30 22:25:17 +01:00
Max Kellermann
d9ea3082fb
ConfigData: add constructors/destructors
2013-01-30 22:20:14 +01:00
Max Kellermann
2d63c26936
ConfigData: use std::string in block_param
2013-01-30 22:20:14 +01:00
Max Kellermann
3cdd01aa1b
ConfigData: use std::vector for the block_param list
2013-01-30 22:20:13 +01:00
Max Kellermann
d25195447a
ConfigData: use new/delete instead of GLib
2013-01-30 22:20:13 +01:00
Max Kellermann
aa8ab2fc89
test/test_vorbis_encoder: convert to C++
2013-01-30 22:19:24 +01:00
Max Kellermann
d664baff26
audio_{parser,config}: convert to C++
2013-01-30 21:47:12 +01:00
Max Kellermann
3275d4c6fa
conf.h: move the GQuark to ConfigQuark.hxx
2013-01-30 21:43:16 +01:00
Max Kellermann
cd0d003197
filter/chain, encoder: GLib include cleanup
2013-01-30 21:42:50 +01:00
Max Kellermann
cfeeb7af2e
test/run_encoder, ...: convert to C++
2013-01-30 21:39:43 +01:00
Max Kellermann
ac887d3afb
ConfigFile: simplify error cleanup
2013-01-30 21:39:43 +01:00
Max Kellermann
e294ccae24
ConfigFile: move code to ConfigGlobal.cxx
2013-01-30 21:39:43 +01:00
Max Kellermann
72070f292b
ConfigFile: add struct ConfigData
2013-01-30 21:36:11 +01:00
Max Kellermann
823c618d24
{encoder,output}_api.h: allow compiling as C++
2013-01-30 21:36:09 +01:00
Max Kellermann
51cb6a0a44
conf: move struct definitions to ConfigData.hxx
2013-01-30 21:36:07 +01:00
Max Kellermann
a1b1ec3d11
Makefile.am: move source files to libconf.a
2013-01-30 21:36:06 +01:00
Max Kellermann
595b6a4f6c
ConfigFile: add enum ConfigOption
...
Look up top-level config options by enum (= integer), not by name
string.
2013-01-30 21:36:04 +01:00
Max Kellermann
daa4647712
ConfigOption: rename to ConfigTemplate
2013-01-30 19:05:33 +01:00
Max Kellermann
c67668d6dd
Makefile.am: fix test/read_mixer rule
2013-01-30 19:05:04 +01:00
Max Kellermann
9cfaa9c7b0
ConfigFile: move code to ConfigOptions.cxx
2013-01-30 17:45:19 +01:00
Max Kellermann
c5ea586882
ConfigFile: split config_entry
...
The new struct ConfigOption is the compile-time description, and the
global array "config_params" contains the actual values.
2013-01-30 17:35:33 +01:00
Max Kellermann
f2a3a37dff
filter_config: convert to C++
2013-01-30 17:22:44 +01:00
Max Kellermann
01dd540d7e
decoder_list: convert to C++
2013-01-30 17:18:48 +01:00
Max Kellermann
8142080633
InotifyUpdate: use std::list instead of GList
...
Let STL manage the WatchDirectory allocations.
2013-01-30 16:44:55 +01:00
Max Kellermann
9920a3e8fc
InotifyUpdate: move code to destructor
2013-01-30 16:44:54 +01:00
Max Kellermann
f7d8e6c40c
InotifyUpdate: allocate the root dynamically
2013-01-30 16:41:17 +01:00
Max Kellermann
4ecf09f9e6
InotifyUpdate: use new/delete instead of GLib slices
2013-01-30 16:37:49 +01:00
Max Kellermann
47a8369d79
InotifyUpdate: rename struct watch_directory
2013-01-30 16:36:58 +01:00
Max Kellermann
6805fa2fa0
InotifyUpdate: use std::map instead of GTree
2013-01-30 16:27:55 +01:00
Max Kellermann
4d6b9611ae
UpdateContainer: remove duplicate unlock call
2013-01-30 16:27:38 +01:00
Max Kellermann
16afdfd874
ArchivePlugin: move instance methods to class ArchiveFile
2013-01-30 15:30:19 +01:00
Max Kellermann
701fff03d2
archive/bzip2: create file only after stream has been opened
...
Simplify error handling.
2013-01-30 15:27:23 +01:00
Max Kellermann
8e0575ca9b
archive/zzip: fix memory leak
2013-01-30 15:25:29 +01:00
Max Kellermann
5e8f51a963
output/httpd: use the BufferedSocket class for HttpdClient
2013-01-30 15:08:09 +01:00
Max Kellermann
be3d2188d6
event/SocketMonitor: wake up the event loop after flag change
2013-01-30 15:08:09 +01:00
Max Kellermann
18e429a87e
event/Loop: add method WakeUp()
2013-01-30 15:08:09 +01:00
Max Kellermann
3576a8fd9f
Main: delete the EventLoop after everything else
...
Fixes crash when another object attempts to access the EventLoop
during destruction.
2013-01-30 15:08:09 +01:00
Max Kellermann
f260cd031c
input/Rewind: remove bogus assertion
2013-01-30 15:05:54 +01:00
Max Kellermann
18c4b536f2
event/ServerSocket: add method GetEventLoop()
2013-01-30 14:23:01 +01:00
Max Kellermann
fa51db449f
ServerSocket: replace callback with virtual method
2013-01-30 14:16:04 +01:00
Max Kellermann
cb9a05ac77
output/httpd: safer cast, consider offset
2013-01-30 14:14:42 +01:00
Max Kellermann
f1f22019f5
output/httpd: forward-declare class HttpdClient
2013-01-30 13:42:16 +01:00
Max Kellermann
6d79a1cdfc
output/httpd: add constructor, destructor, Configure()
2013-01-30 13:41:27 +01:00
Max Kellermann
ad5eb2f8d6
ServerSocket: expose the class
...
Eliminate the C wrappers.
2013-01-30 13:40:56 +01:00
Max Kellermann
39d56d6b65
ServerSocket: move to libevent.a
2013-01-30 13:39:12 +01:00
Max Kellermann
a291415326
event/BufferedSocket: move output buffer to FullyBufferedSocket
...
BufferedSocket has just an input buffer, and FullyBufferedSocket adds
the output buffer.
2013-01-30 11:03:44 +01:00
Max Kellermann
4ad7456428
event/SocketMonitor: OnSocketReady() returns bool
2013-01-30 11:03:44 +01:00
Max Kellermann
73f36858bb
event/SocketMonitor: add methods Read(), Write()
2013-01-30 10:39:17 +01:00
Max Kellermann
fe3f0332f7
page: convert to C++
2013-01-30 09:18:52 +01:00
Max Kellermann
718fd97612
icy_server: convert to C++
2013-01-30 09:17:03 +01:00
Max Kellermann
f8ff45b212
icy_server: pass pointer to _metadata_page()
...
Don't use va_list.
2013-01-30 09:13:46 +01:00
Max Kellermann
f5c0b0d316
ArchiveFile: convert to a class
2013-01-29 23:26:51 +01:00
Max Kellermann
ba51045d9e
refcount: convert to C++
2013-01-29 23:20:19 +01:00
Max Kellermann
fa34dd7bd3
test/visit_archive: new debug program
2013-01-29 22:54:56 +01:00
Max Kellermann
9f0fb8f6a8
ArchivePlugin: replace scan_reset(), scan_next() with visit()
...
Add the interface ArchiveVisitor.
2013-01-29 21:21:07 +01:00
Max Kellermann
a42f9fd4e2
ArchivePlugin: scan_next() returns const string
2013-01-29 21:11:04 +01:00
Max Kellermann
e66005563e
playlist/despotify: various code simplifications
2013-01-29 20:36:28 +01:00
Max Kellermann
8cad20585d
playlist/memory: use std::forward_list instead of GSList
2013-01-29 20:32:54 +01:00
Max Kellermann
a8b75dc4df
playlist/{asx,rss,soundcloud,xspf}: merge code to MemoryPlaylistProvider
2013-01-29 18:56:35 +01:00
Max Kellermann
e4455962c6
ClientSubscribe: remove obsolete typedef
2013-01-29 18:37:40 +01:00
Max Kellermann
20f85745e7
require GLib 2.24
2013-01-29 18:33:37 +01:00
Max Kellermann
feb8d5b82f
ConfigFile, CommandLine: use the Path class
2013-01-29 18:09:39 +01:00
Max Kellermann
eb8922f346
test/{read_conf,run_filter}: convert to C++
2013-01-29 17:23:58 +01:00
Max Kellermann
84eb95466b
output/osx: convert to C++
2013-01-29 16:59:21 +01:00
Max Kellermann
3dd8beb380
decoder/faad: use the newer NeAAC* API
...
Drop support for the old faacDec* API.
2013-01-29 16:17:15 +01:00
Max Kellermann
ae77406b8e
faad.m4: clear FAAD_LIBS if faad got auto-disabled
...
Fixes build errors on systems without libfaad, when --disable-aac was
not specified.
2013-01-29 15:52:43 +01:00
Max Kellermann
2d16069211
faad.m4: don't add -I. to temporary CFLAGS
2013-01-29 15:51:31 +01:00
Max Kellermann
d18314fa05
faad.m4: remove faad --with-* options
...
Some of these are not implemented properly and never worked. And the
others are not useful; you can easily set environment variables
instead.
2013-01-29 15:40:44 +01:00
Max Kellermann
26a9ce7b29
output/{alsa,oss}: convert to C++
2013-01-29 14:32:32 +01:00
Max Kellermann
76417d4446
InputStream: use std::string
2013-01-28 23:41:45 +01:00
Max Kellermann
cffc78ad6a
InputStream: store references instead of pointers
2013-01-28 23:35:01 +01:00
Max Kellermann
dcf55c7e32
InputStream: add constructor/destructor
...
Eliminate input_stream_init() and input_stream_deinit().
2013-01-28 23:29:43 +01:00
Max Kellermann
e565cd4404
input/despotify: add constructor/destructor
2013-01-28 23:13:19 +01:00
Max Kellermann
5934ccbb74
input/despotify: rename class
2013-01-28 23:12:10 +01:00
Max Kellermann
e39969a0d0
input/iso9660: add constructor/destructor
2013-01-28 22:54:07 +01:00
Max Kellermann
d68185aa28
input/iso9660: rename the classes
2013-01-28 22:52:40 +01:00
Max Kellermann
4cab151ed2
input/zzip: add constructor/destructor
2013-01-28 22:48:04 +01:00
Max Kellermann
8ac9b77e5c
input/zzip: rename the classes
2013-01-28 22:43:59 +01:00
Max Kellermann
1b9da5d978
input/bzip2: add constructor/destructor
2013-01-28 22:39:09 +01:00
Max Kellermann
ab2b7358cb
archive/bzip2: rename the classes
2013-01-28 22:17:40 +01:00
Max Kellermann
8ceea85813
DatabaseLock, input/bzip2: remove obsolete Glib/gcc workaround
2013-01-28 22:17:40 +01:00
Max Kellermann
d0a812d2df
input/Soup: move code into the class
2013-01-28 22:00:24 +01:00
Max Kellermann
3dad2e1c0f
input/soup: rename the class
2013-01-28 21:59:40 +01:00
Max Kellermann
70e4399334
input/ffmpeg: add constructor/destructor
2013-01-28 21:46:38 +01:00
Max Kellermann
00f8c2d46f
input/ffmpeg: rename the class
2013-01-28 21:45:44 +01:00
Max Kellermann
0dd4b52b63
decoder/ffmpeg: require ffmpeg/libav 0.7.6
...
This is the version present in Ubuntu Oneiric, the oldest distribution
with gcc 4.6. Debian Squeeze is off target, because it has gcc 4.4,
which is unable to compile MPD anyway.
This commit drops all API compatibility hacks for older versions.
2013-01-28 21:32:14 +01:00
Max Kellermann
88c17926e4
decoder/mp4ff: delete obsolete plugin
...
The underlying library has been obsolete for many years.
2013-01-28 21:32:14 +01:00
Max Kellermann
541192c941
db/Proxy: explicitly request first element of array
...
Works around gcc 4.6 bug.
2013-01-28 21:32:14 +01:00
Max Kellermann
2e9f054ec0
audio_config: include cleanup
2013-01-28 20:30:47 +01:00
Max Kellermann
2aa34882b7
output/httpd: move functions into the HttpdOutput class
2013-01-27 23:23:46 +01:00
Max Kellermann
27f8ef2f33
output/httpd: rename struct httpd_output
2013-01-27 23:21:39 +01:00
Max Kellermann
2cbe21c791
ZeroconfAvahi: pass GMainContext to avahi_glib_poll_new()
2013-01-27 22:53:21 +01:00
Max Kellermann
0988056471
ZeroconfBonjour: use SocketMonitor instead of GIOChannel
2013-01-27 22:38:14 +01:00
Max Kellermann
95c3f57b30
zeroconf: convert to C++
2013-01-27 22:38:14 +01:00
Max Kellermann
068f191c0d
event/SocketMonitor: add method Steal()
2013-01-27 22:38:14 +01:00
Max Kellermann
6bf6c9215b
Makefile.cxx: fix test/run_input.cxx path
2013-01-27 22:17:47 +01:00
Max Kellermann
a65afa8090
PlayerControl: work around std::nanf() not being available on MacPorts
2013-01-27 21:58:35 +01:00
Max Kellermann
8155784990
string_util: add fallback for strnlen()
...
Usually, when strndup() is not available, strndup() isn't either,
because both are POSIX 2008.
2013-01-27 21:43:27 +01:00
Max Kellermann
44725e485d
configure.ac: disable libwrap if not compatible with C++
...
The libwrap version on Mac OS X is broken, it will not work with C++
due to broken function prototypes.
2013-01-27 21:43:04 +01:00
Denis Krjuchkov
e98e2a0b07
Path::FromUTF8() returns nulled instance on error, add error handling where required
2013-01-28 00:13:46 +06:00
Denis Krjuchkov
943064bb51
Path: convert remaining funcs to methods, keep fs_charset as std::string
2013-01-28 00:13:46 +06:00
Denis Krjuchkov
7149a8ae4f
Path: merge utf8_to_fs_charset() into Path::FromUTF8()
2013-01-28 00:13:45 +06:00
Denis Krjuchkov
3c7cf94643
Path: convert fs_charset_to_utf8() to static method Path::ToUTF8()
2013-01-28 00:13:45 +06:00
Denis Krjuchkov
3bd35d1883
Path: introduce MPD_PATH_MAX_UTF8
2013-01-28 00:13:45 +06:00
Max Kellermann
6f3d70b5e2
DecoderControl, InputStream: use Mutex/Cond instead of GMutex/GCond
2013-01-27 18:39:32 +01:00
Max Kellermann
257a0dee75
playlist/*: convert to C++
2013-01-27 17:38:09 +01:00
Denis Krjuchkov
e995cd928c
Path: define MPD_PATH_MAX to 260 on Windows
2013-01-26 11:18:12 +06:00
Denis Krjuchkov
292d7c3fdf
Path: ToUTF() returns std::string
2013-01-26 11:16:12 +06:00
Max Kellermann
0273cd44b0
input_stream: forward-declare the struct
...
Hide the definition from C code, to prepare the transition to C++.
2013-01-26 01:24:01 +01:00
Max Kellermann
3203a7dd8c
tag_file: convert to C++
2013-01-26 01:23:02 +01:00
Max Kellermann
86b0adc82c
playlist/*: convert to C++
2013-01-26 01:17:43 +01:00
Max Kellermann
ba49f20f68
decoder/ffmpeg: convert to C++
2013-01-26 01:17:43 +01:00
Denis Krjuchkov
a3ee26da64
Mapper: improve usage of Path class
2013-01-26 01:14:13 +01:00
Max Kellermann
a9b62a2ece
PlayerControl: add second Cond object
...
This fixes a deadlock bug introduced by 18076ac9 . After all, the
second Cond was necessary.
The problem: two threads can wait for a signal at the same time. The
player thread waits for the output thread to finish playback. The
main thread waits for the player thread to complete a command. The
output thread finishes playback, and sends a signal, which
unfortunately does not wake up the player thread, but the main
thread. The main thread sees that the command is still not finished,
and waits again. The signal is lost forever, and MPD is deadlocked.
2013-01-25 23:53:43 +01:00
Max Kellermann
49567f1f3e
input_{internal,plugin}: convert to C++
2013-01-25 22:43:01 +01:00
Max Kellermann
94fffb332b
archive/*: convert to C++
2013-01-24 19:18:58 +01:00
Max Kellermann
dc2e64c92b
DecoderControl: fix typo in assertion check
2013-01-23 18:02:40 +01:00
Denis Krjuchkov
06fb7c671b
Makefile.am: introduce libfs
2013-01-22 01:31:29 +06:00
Denis Krjuchkov
ef93cdf4a8
Path: move to fs subdirectory
2013-01-22 01:24:53 +06:00
Denis Krjuchkov
4ad90e2d52
FileSystem: extract DirectoryReader, improve the rest
...
- DirectoryReader is extracted to separate header
- FileSystem.cxx/FileSystem.hxx/DirectoryReader.hxx moved to fs/ subdir
- Functions return true on success, instead of 0 (where applicable)
- ReadLink return result instead of out parameter
- UnlinkFile is renamed to RemoveFile
- CheckExists/CheckIsRegular/CheckIsDirectory are renamed
to PathExists/FileExists/DirectoryExists
2013-01-22 01:05:30 +06:00
Max Kellermann
7c0e4dfb56
input/archive: fix memory leak in error handler
2013-01-21 19:08:35 +01:00
Max Kellermann
9ec069104f
input,playlist/despotify: convert to C++
2013-01-21 19:01:10 +01:00
Max Kellermann
7d21d60dba
despotify_utils: fix indent
2013-01-21 19:00:50 +01:00
Max Kellermann
ed8562c300
despotify_utils: include cleanup
2013-01-21 19:00:01 +01:00
Max Kellermann
22ec1c3498
despotify_utils: add missing copyright header
2013-01-21 18:59:37 +01:00
Max Kellermann
9cc90b1fbe
input/cdio_paranoia: convert to C++
2013-01-21 17:58:30 +01:00
Max Kellermann
0c9f22507f
input/ffmpeg: convert to C++
2013-01-21 17:50:43 +01:00
Max Kellermann
9c870e4276
input/rewind: convert to C++
2013-01-21 17:36:19 +01:00
Max Kellermann
5cffe693b0
input/file,mms: convert to C++
2013-01-21 10:52:40 +01:00
Max Kellermann
e01615fd1e
input_internal.h: add extern "C"
2013-01-21 10:52:19 +01:00
Max Kellermann
c1daa857a5
test/run_tcp_connect: delete obsolete source file
2013-01-21 10:47:38 +01:00
Max Kellermann
3928c4e9ae
UpdateRemove: Mutex/Cond instead of GMutex/GCond
2013-01-21 10:42:47 +01:00
Max Kellermann
32799fef5c
DecoderControl: move functions into the class
2013-01-21 10:13:29 +01:00
Max Kellermann
e1b03b4a71
PlayerControl: move functions into the class
2013-01-20 17:48:23 +01:00
Denis Krjuchkov
e6ed592b8a
FileSystem: new library for Path-friendly file system routines
2013-01-20 19:08:36 +06:00
Denis Krjuchkov
6f4560184c
dummy.cxx: remove unused file
...
This file was used previously to force C++ linkage.
It's no longer required because most of the code is C++ anyway.
2013-01-19 12:45:50 +06:00
Max Kellermann
e5039c478a
Path: new class "Path" wraps filesystem path strings
2013-01-18 15:34:01 +01:00
Max Kellermann
8901514506
Playlist, Song: clarify parameter encoding
2013-01-18 15:34:01 +01:00
Max Kellermann
21fe376d1d
path: convert to C++
2013-01-17 00:43:27 +01:00
Max Kellermann
e22ef6c481
output/roar: convert to C++
2013-01-16 23:29:56 +01:00
Max Kellermann
2bb01093c0
Idle: don't wake up event loop on duplicate event
2013-01-16 23:27:17 +01:00
Max Kellermann
36c814d26e
Idle: use std::atomic instead of GMutex
2013-01-16 23:23:47 +01:00
Max Kellermann
d769b74d61
Main: fix comment typo
2013-01-16 23:23:47 +01:00
Max Kellermann
601495fa0f
ClientList: convert to a class
2013-01-16 23:00:13 +01:00
Max Kellermann
1998633739
ClientGlobal: move client_close_all() to ClientList.cxx
2013-01-16 22:56:52 +01:00
Max Kellermann
0194217f9d
Revert "ClientList: allow deleting clients in client_list_foreach() callback"
...
This reverts commit f56c6a18c1 . This
fix is not necessary anymore because clients are now being deleted by
the timer callback.
2013-01-16 22:49:51 +01:00
Max Kellermann
b0bbb8b693
Client: use TimeoutMonitor to track connection timeout
...
Don't use a global loop over the whole client list.
2013-01-16 21:51:08 +01:00
Max Kellermann
cab84af72e
Client: move "idle" functions into the class
2013-01-16 21:46:13 +01:00
Max Kellermann
74500eacca
Merge branch 'v0.17.x'
2013-01-16 20:05:26 +01:00
Brice Jaglin
1105e61f29
decoder/ffmpeg: support float planar audio
2013-01-16 19:54:54 +01:00
Max Kellermann
b7cf279d6d
zeroconf-avahi: eliminate "goto"
2013-01-16 00:23:00 +01:00
Max Kellermann
c614e550d9
valgrind.suppressions: more GLib suppressions
2013-01-15 23:44:21 +01:00
Max Kellermann
452a30d7af
input/Curl: break loop when remaining length becomes 0
...
Fixes assertion failure (regression).
2013-01-15 23:39:32 +01:00
Max Kellermann
49e79620fd
PlayerControl: initialise attribute "border_pause"
2013-01-15 23:21:14 +01:00
Max Kellermann
ae5a721df9
Playlist: initialise attribute "playing"
2013-01-15 23:09:18 +01:00
Max Kellermann
0dd5f2915a
ServerSocket: use the SocketMonitor class
2013-01-15 22:56:06 +01:00
Max Kellermann
a0ebd444ad
event/SocketMonitor: add method Open()
...
Allow creating a closed SocketMonitor instance.
2013-01-15 22:56:06 +01:00
Max Kellermann
0c6072c4e4
ServerSocket: move more code to methods
2013-01-15 22:53:14 +01:00
Max Kellermann
8917264110
ServerSocket, SocketUtil: use the SocketError library
...
Use WinSock errors on Windows.
2013-01-15 22:42:15 +01:00
Max Kellermann
e90d606f0a
socket_util: convert to C++
2013-01-15 22:41:56 +01:00
Max Kellermann
5bb2d64ddb
SocketError: merge duplicate FormatMessage() calls
...
Make a class that contains the formatting code and the buffer.
2013-01-15 22:41:56 +01:00
Max Kellermann
bc66dc45e6
server_socket: convert to C++
2013-01-15 21:42:55 +01:00
Max Kellermann
7087935656
output/httpd: convert to C++
2013-01-15 20:20:51 +01:00
Max Kellermann
5822daa63d
output_internal, ...: add extern "C"
2013-01-15 20:20:51 +01:00
Max Kellermann
4808c7ef39
encoder/{Vorbis,Opus}: use new/delete
2013-01-15 20:20:51 +01:00
Max Kellermann
7071126770
InotifySource: use the SocketMonitor class
2013-01-15 18:18:34 +01:00
Max Kellermann
2101daef5a
mixer/Alsa: use MultiSocketMonitor
2013-01-15 18:18:00 +01:00
Max Kellermann
083065f433
input/Curl: move code to class MultiSocketMonitor
2013-01-15 18:16:55 +01:00
Max Kellermann
4cfc4a5a94
input/Curl: simpler GPollFD initialisation
...
Using initializer list.
2013-01-15 18:16:38 +01:00
Max Kellermann
1c7ee737e6
input/Curl: don't remove/add modified GPollFD
...
Not necessary, GLib will pick up the updated GPollFD automatically.
2013-01-15 18:16:15 +01:00
Max Kellermann
39439b80f5
Client: rebase on the new BufferedSocket class
2013-01-15 12:15:33 +01:00
Max Kellermann
396480cf94
event/SocketMonitor: wrapper class for GSource + GPollFD
2013-01-15 11:00:48 +01:00
Max Kellermann
3e03527930
Client: move output buffer code to new class PeakBuffer
2013-01-15 10:59:28 +01:00
Max Kellermann
4fa724461e
util/fifo_buffer: add method _init()
2013-01-15 10:59:28 +01:00
Max Kellermann
1e2018ce83
Client: move connection functions into the class
2013-01-15 10:59:28 +01:00
Max Kellermann
3fcf17cb79
SignalHandlers: emit GlobalEvents::SHUTDOWN
...
.. instead of calling g_main_loop_quit(), which may dead-lock.
2013-01-15 10:59:28 +01:00
Max Kellermann
f9fc3a42cc
fifo_buffer: move to util/
2013-01-15 01:02:13 +01:00
Max Kellermann
76bc28ab1e
fifo_buffer: add extern "C"
2013-01-15 01:01:25 +01:00
Max Kellermann
f47f86ef02
socket_error: new library for errno / WSAGetLastError()
2013-01-15 00:53:12 +01:00
Max Kellermann
31268ffa24
io_error: add function new_error_errno()
2013-01-15 00:53:12 +01:00
Max Kellermann
0634be9724
Client*: include check.h / config.h
2013-01-14 23:50:01 +01:00
Dark Raven
f56c6a18c1
ClientList: allow deleting clients in client_list_foreach() callback
2013-01-14 11:24:54 +01:00
Max Kellermann
aa4c506fcd
Revert "ClientList.cxx: copy client list before iterating"
...
This reverts commit f53dadcc6d , to
prepare for a better solution.
2013-01-14 11:24:29 +01:00
Max Kellermann
d3a479b7fa
event/TimeoutMonitor: wrapper for g_timeout_source_new()
2013-01-14 11:12:28 +01:00
Max Kellermann
92fb0e829a
StateFile: convert to a class
2013-01-14 11:00:22 +01:00
Max Kellermann
43a9928537
gcc.h: add C++11 "final" fallback macro
2013-01-14 10:56:42 +01:00
Max Kellermann
c8b408beae
InotifyQueue: convert to a class
2013-01-14 10:13:28 +01:00
Max Kellermann
8e3982dd42
InotifySource: convert to a class
2013-01-14 10:08:26 +01:00
Max Kellermann
e83f805b8f
Main, IOThread: move GMainLoop setup code to class EventLoop
2013-01-14 09:15:49 +01:00
Max Kellermann
be98afe34d
IOThread: use gcc.h
2013-01-14 09:15:49 +01:00
Denis Krjuchkov
f53dadcc6d
ClientList.cxx: copy client list before iterating
...
It seems that it is not safe to remove the item from std::list
while it's being iterated somewhere else.
This is a very simple quick fix to make things work
until some better solution is implemented.
2013-01-13 15:36:25 +06:00
Denis Krjuchkov
90ab65f8c7
WakeFD.cxx: use two sockets instead of pipe on Win32
...
Pipes aren't really pollable on Windows.
GLib emulates polling on pipes using separate reader/writer threads.
This adds significant overhead and keeps a strong dependency on GLib.
socketpair() function is absent on Windows as well.
We implement it here in a loose way.
2013-01-13 15:30:53 +06:00
Denis Krjuchkov
abb0fcb203
Win32Main.cxx: more clean shutdown
...
This change fixes two issues:
1) console_handler is called from a separate thread.
Thread-safe primitive is required for correct operation.
2) If console_handler returns TRUE our process is immediately terminated.
We use Sleep() to give main thread an opportunity to shutdown correctly.
2013-01-13 15:20:32 +06:00
Denis Krjuchkov
eef4f33a29
configure.ac: use correct variable for checking libmpdclient presence
2013-01-11 16:47:56 +06:00
Max Kellermann
0226440a2d
thread/{Mutex,Cond}: new backend for WIN32
...
Use CRITICAL_SECTION and CONDITION_VARIABLE. This requires Windows
Vista or newer. It fixes problems with GLib threading objects that
were implicitly created by static constructors before g_thread_init().
2013-01-11 11:11:07 +01:00
Max Kellermann
9d770d6084
GlobalEvents: #undef DELETE on Windows
...
Work around a build failure due to windows.h macro.
2013-01-11 11:10:46 +01:00
Max Kellermann
7f0297dc44
configure.ac: require Windows Vista or newer
...
We're going to use Vista features soon. Sorry for those poor people
still on XP (or Windows, anyway).
2013-01-11 11:09:27 +01:00
Max Kellermann
49f3855407
configure.ac: enable WIN32_LEAN_AND_MEAN on Windows
2013-01-11 11:06:16 +01:00
Denis Krjuchkov
905d493fd7
.gitignore: add src/win/mpd_win32_rc.rc
...
This file is generated during configuration and should be ignored.
2013-01-11 15:30:59 +06:00
Denis Krjuchkov
5def2a09bd
mpdconf.example: example improvements
...
- Add mandatory "name" setting for winmm/openal examples.
- Fix the language in openal sample (a -> an)
2013-01-11 15:28:21 +06:00
Denis Krjuchkov
a98aa66620
string_util.c: provide fallback strndup() implementation
...
This patch also adds extern "C" { } wrapper around string_util.h
to allow its usage in C++ code
2013-01-11 13:51:39 +06:00
Max Kellermann
631a268996
input/curl: use std::list instead of GQueue
2013-01-10 23:00:23 +01:00
Max Kellermann
85074f5ac6
icy_metadata: convert to C++
2013-01-10 22:33:16 +01:00
Max Kellermann
12a8ed39d4
input/Curl: add constructor to input_curl class
2013-01-10 22:25:57 +01:00
Max Kellermann
b9ac5e9e76
input/Curl: remove unused source/source_id attributes
2013-01-10 22:25:33 +01:00
Max Kellermann
2758a734a2
input/Curl: remove redundant attribute "url"
...
Use the "url" attribute from the base class instead.
2013-01-10 22:21:30 +01:00
Max Kellermann
01f3131c81
input/Curl: use std::forward_list instead of GSList
2013-01-10 20:52:58 +01:00
Max Kellermann
2ca9236864
input/Curl: remove unused attribute "fds"
2013-01-10 20:52:44 +01:00
Max Kellermann
3bb711837e
input/Curl: require libcurl 7.18
2013-01-10 20:46:47 +01:00
Max Kellermann
ed8798e82f
output/shout: refactor check_block_param() to a function
...
Don't use macro magic, don't dereference the block_param.
2013-01-10 18:46:33 +01:00
Max Kellermann
38474961fd
Log, ...: include cleanup
2013-01-10 18:34:40 +01:00
Max Kellermann
3dd38e7b7f
decoder/wavpack: convert to C++
2013-01-10 18:18:14 +01:00
Max Kellermann
3711a97657
decoder/wavpack: include cleanup
2013-01-10 18:18:02 +01:00
Max Kellermann
911411e630
conf: convert to C++
2013-01-10 18:18:02 +01:00
Max Kellermann
c02cc199bc
path: move code to IsSupportedCharset()
2013-01-10 18:06:21 +01:00
Max Kellermann
dd6c21e092
path: make the "win_charset" buffer static
...
It is illegal to use it after going out of scope.
2013-01-10 17:54:11 +01:00
Denis Krjuchkov
7801ca86b9
mpdconf.example: provide an example of openal output
2013-01-10 15:50:00 +06:00
Denis Krjuchkov
10fc288c91
mpdconf.example: provide an example of winmm output
2013-01-10 15:46:30 +06:00
Max Kellermann
b8cda53bd3
notify: convert to C++
2013-01-10 10:44:04 +01:00
Denis Krjuchkov
43806d524d
mpdconf.example: improve documentation for replay gain
...
- Added replaygain_missing_preamp and replaygain_limit settings
- Added information about "auto" replay gain mode
2013-01-10 15:34:25 +06:00
Max Kellermann
e0a97a030f
io_thread: convert to C++
2013-01-10 10:33:20 +01:00
Max Kellermann
33ba288622
input/{curl,soup}: convert to C++
2013-01-10 10:23:20 +01:00
Max Kellermann
d5516dee00
input_stream: convert to C++ (internally)
2013-01-10 10:15:09 +01:00
Max Kellermann
06e0741a52
PlayerControl: switch to the Mutex/Cond classes
2013-01-10 10:12:54 +01:00
Max Kellermann
0b93445380
thread/Cond: new wrapper for pthread_cond_t or GCond
2013-01-10 10:03:19 +01:00
Max Kellermann
483ba5ea1c
thread/GLibMutex: new Mutex implementation
...
Switch WIN32 to this implementation to be able to use condition
variables, which is impossible with CriticalSection.
2013-01-10 10:03:18 +01:00
Max Kellermann
18076ac9b7
PlayerThread: use pc.cond instead of main_cond
...
The main_cond variable was completely unnecessary. The pc.cond object
can be used for both main->pc and pc->main.
2013-01-10 10:01:24 +01:00
Max Kellermann
ad15ca7104
DecoderControl: take ownership of client_cond
...
Don't let the "client" pass its own GCond. This was not used
consistently.
2013-01-10 10:01:18 +01:00
Max Kellermann
53117ac204
DecoderThread: signal the client after decoder finishes
...
Fixes potential dead lock bug.
2013-01-10 10:00:53 +01:00
Max Kellermann
51a8c109ab
thread/PosixMutex: fix indent
2013-01-10 10:00:52 +01:00
Denis Krjuchkov
ea25e0ee55
configure.ac: change newline position to fit into 80 chars
2013-01-10 14:47:15 +06:00
Denis Krjuchkov
e6fdae431f
configure.ac: print results of libmpdclient detection
2013-01-10 14:42:10 +06:00
Denis Krjuchkov
34afc272fd
configure.ac: print results of AdPlug detection
2013-01-10 14:33:10 +06:00
Denis Krjuchkov
a5673fcb28
configure.ac: consistently use Opus name
2013-01-10 14:32:18 +06:00
Max Kellermann
5c3c506638
GlobalEvents: lock-less operation using std::atomic
...
Use a bit field instead of a mutex-protected bool array.
2013-01-10 00:57:18 +01:00
Max Kellermann
ecd5eb02c5
event/WakeFD: use eventfd() if available
2013-01-10 00:10:01 +01:00
Max Kellermann
3be57dc4a3
fd_util: support eventfd()
2013-01-10 00:10:01 +01:00
Max Kellermann
a93caf3cfe
GlobalEvents: move code to class WakeFD
2013-01-09 23:47:38 +01:00
Max Kellermann
26ebfc04b0
EventPipe: rename to GlobalEvents
2013-01-09 23:31:43 +01:00
Max Kellermann
8782f6d232
EventPipe: use Mutex instead of GMutex
2013-01-09 23:30:07 +01:00
Max Kellermann
5faf443038
event_pipe.h: convert to C++
2013-01-09 22:37:47 +01:00
Max Kellermann
8eacd13ce7
sig_handlers, log: convert to C++
2013-01-09 22:33:06 +01:00
Max Kellermann
d3e1b72d38
mixer/{alsa,pulse}: convert to C++
2013-01-09 22:25:24 +01:00
Max Kellermann
b5e1bd5705
Playlist.hxx: move prototype to PlaylistGlobal.hxx
2013-01-09 22:23:37 +01:00
Max Kellermann
4bef0a1e62
Playlist: move playlist_increment_version_all() into the class
2013-01-09 22:21:16 +01:00
Max Kellermann
3e5f09be0b
event_pipe: convert to C++
2013-01-09 13:02:13 +01:00
Max Kellermann
e86e77ad67
idle: convert to C++
2013-01-09 13:01:38 +01:00
Max Kellermann
3c4bb9ff4e
test/FakeReplayGainConfig: move fake symbols from a few debug programs
2013-01-09 12:26:07 +01:00
Max Kellermann
a890dadfd2
test/run_decoder,read_tags: remove obsolete dummy functions
2013-01-09 12:25:39 +01:00
Max Kellermann
6b4374583a
ReplayGainCoinfig: initialize replay_gain_limit with default value
2013-01-09 12:25:14 +01:00
Denis Krjuchkov
78f4171a7a
configure.ac: improve detection of libgme
...
At least in my configuration libgme lacks .pc file
thus could not be detected with pkg-config.
2013-01-09 14:35:25 +06:00
Max Kellermann
f8a99a391e
ReplayGainCoinfig: make DEFAULT_REPLAYGAIN_LIMIT static
2013-01-09 08:56:16 +01:00
Max Kellermann
2564f763d7
ClientList: don't use GLib
...
Use std::list instead of GList.
2013-01-09 08:12:44 +01:00
Max Kellermann
377a2b9e07
ClientList: add header ClientList.hxx
2013-01-09 08:08:36 +01:00
Max Kellermann
045993001c
zeroconf-bonjour: include Listen.hxx instead of listen.h
...
Should fix the OS X build.
2013-01-09 08:07:26 +01:00
Max Kellermann
affc446690
Queue: use std::stable_sort() instead of g_qsort_with_data()
2013-01-08 16:51:21 +01:00
Max Kellermann
255ee646c2
song: don't use GLib
2013-01-08 16:47:12 +01:00
Max Kellermann
0308ec564e
util/list: don't use GLib
2013-01-08 16:41:36 +01:00
Max Kellermann
6cafec8ae6
Queue: allocate memory with new/delete
2013-01-08 16:35:09 +01:00
Max Kellermann
8ef87be482
Queue: use signed integer instead of G_MAXUINT
...
The check for unsigned underflow is fragile and unreliable.
2013-01-08 16:33:33 +01:00
Max Kellermann
6c57047362
Queue: move code to new class IdTable
2013-01-08 16:11:25 +01:00
Max Kellermann
e29bc6912b
Queue: rename internal types
2013-01-08 16:05:10 +01:00
Max Kellermann
ce57b8b6df
Queue: move HASH_MULT and Item into the Queue class
2013-01-08 16:04:10 +01:00
Max Kellermann
d81a9029db
Queue: move GenerateId() and others into the class
2013-01-08 15:38:10 +01:00
Max Kellermann
620ae7790b
test: rename debug programs back to old names
2013-01-08 15:33:58 +01:00
Denis Krjuchkov
23b2b7144b
Makefile.am: distribute mpc.ico
2013-01-08 17:46:04 +06:00
Max Kellermann
bf4311cd9b
decoder/OggUtil,Opus: move code to new class OggSyncState
2013-01-08 11:04:14 +01:00
Max Kellermann
8f7adf79a3
decoder/Opus: read total time
2013-01-08 01:38:02 +01:00
Max Kellermann
97b164d03b
decoder/OggUtil: add OggExpectPageSeek()
2013-01-08 01:30:44 +01:00
Max Kellermann
61e7e531c2
decoder/Opus: move page reader into the decoder class
2013-01-08 01:22:11 +01:00
Max Kellermann
ceb652915f
decoder/Opus: move code to HandlePackets()
2013-01-08 01:20:03 +01:00
Max Kellermann
cdaf504ab8
decoder/Opus: make internal methods inline
2013-01-08 01:19:18 +01:00
Max Kellermann
9fb5aad157
decoder/OggUtil: add OggExpectFirstPage() and OggExpectPageIn()
2013-01-08 01:08:01 +01:00
Max Kellermann
a6301d45f4
decoder/Opus: use OggExpectPage() in main loop
2013-01-08 01:05:59 +01:00
Max Kellermann
b83d069266
decoder/OggUtil: add struct forward declarations
2013-01-08 01:02:06 +01:00
Max Kellermann
960b9a9664
input_stream: add method _cheap_seeking()
...
Move code from the Vorbis decoder plugin.
2013-01-07 23:25:08 +01:00
Max Kellermann
acb45caa42
decoder/ogg_codec: convert to C++
2013-01-07 22:14:52 +01:00
Max Kellermann
39060b528a
decoder/vorbis: convert to C++
2013-01-07 22:04:58 +01:00
Max Kellermann
4a36323f1b
Queue: don't include glib.h
2013-01-07 22:01:56 +01:00
Max Kellermann
c6281b2680
Queue: use C++ random instead of GLib's GRand
2013-01-07 22:00:57 +01:00
Max Kellermann
5b8b7d1412
util/LazyRandomEngine: lazy wrapper for std::mt19937
2013-01-07 21:27:51 +01:00
Max Kellermann
53e5139b99
Queue: move queue_shuffle_order_first() into the class
2013-01-07 21:26:22 +01:00
Max Kellermann
2b8ce83c9b
Queue: move queue_shuffle_order_range() into the class
2013-01-07 21:17:01 +01:00
Max Kellermann
52638c68f5
Playlist: convert functions to methods
2013-01-07 11:35:35 +01:00
Max Kellermann
400ff1c812
DatabaseQueue: pass DatabaseSelection to Add...()
2013-01-07 11:33:00 +01:00
Max Kellermann
d360f17a59
Client: add Partition reference attribute
...
playlist and player_control are deprecated.
2013-01-07 10:59:56 +01:00
Max Kellermann
a6ee6be960
TagPool: use the Mutex class instead of GStaticMutex
2013-01-07 10:49:21 +01:00
Max Kellermann
47911f9544
tag: convert to C++
2013-01-07 10:36:27 +01:00
Max Kellermann
48025c2279
DatabaseLock: use the Mutex class instead of GLib's GMutex
2013-01-07 10:34:55 +01:00
Max Kellermann
a68302e50b
thread/Mutex: don't use std::mutex
...
Use a custom pthread_mutex_t wrapper because std::mutex adds overhead.
2013-01-07 10:33:37 +01:00
Max Kellermann
333a08ebf9
replay_gain_info, ...: use cmath instead of math.h in C++ mode
...
Fixes build problems with mingw32.
2013-01-07 10:19:02 +01:00
Max Kellermann
989c9a7317
filter/replay_gain: convert to C++
2013-01-07 10:17:16 +01:00
Max Kellermann
975370c084
decoder_api.h, ...: add "extern C"
2013-01-07 10:07:40 +01:00
Max Kellermann
c3c776bc6a
mixer_all: convert to C++
2013-01-07 09:05:06 +01:00
Max Kellermann
9f4b906e6c
volume: convert to C++
2013-01-07 09:05:01 +01:00
Max Kellermann
804900df36
audio_config, volume, mixer_all: include cleanup
2013-01-07 08:54:01 +01:00
Max Kellermann
3781f6cf39
Merge tag 'release-0.17.3'
2013-01-07 08:46:55 +01:00
Avuton Olrich
227da2377a
Modify version string to post-release version 0.17.4~git
2013-01-06 16:47:09 -08:00
Avuton Olrich
ffb3a9f526
mpd version 0.17.3
2013-01-06 16:47:09 -08:00
Max Kellermann
6936c0e2ab
Queue: use std::swap
2013-01-06 23:48:34 +01:00
Max Kellermann
108242042e
queue: convert all functions to methods
2013-01-06 21:33:58 +01:00
Max Kellermann
70652abf97
Queue: add constructor and destructor
2013-01-06 18:59:39 +01:00
Max Kellermann
e202b407ec
Playlist: add constructor and destructor
2013-01-06 18:59:33 +01:00
Max Kellermann
2cc89e60cc
DatabaseQueue: force passing playlist reference to std::bind()
...
Avoid implicit copy.
2013-01-06 18:59:01 +01:00
Max Kellermann
d536944beb
Partition: new class, container for Playlist and PlayerControl
...
This is the beginning of multi-player support. There will be support
for multiple Partition objects in one MPD process.
2013-01-05 02:43:00 +01:00
Max Kellermann
1a8ef3cdab
filter/ReplayGain: add method _set_mode()
...
Push the new mode to the filter instead of accessing global variables
through replay_gain_get_real_mode().
2013-01-05 02:40:33 +01:00
Max Kellermann
7be33eba48
DecoderAPI: don't use replay_gain_get_real_mode()
...
replay_gain_get_real_mode() accesses dangerous globals. Let's just
use the global variable replay_gain_mode, and assume "AUTO" means
"TRACK". At this point, this is the best we can do, because neither
the decoder nor the player should know about the current replay gain
mode. This is applied as a filter in the output thread.
2013-01-05 02:40:32 +01:00
Max Kellermann
46ed91b53d
DecoderAPI: _replay_gain() returns void
...
Let the function decoder_replay_gain() update
decoder_control::replay_gain_db instead of letting each decoder plugin
take care for that.
2013-01-05 02:40:29 +01:00
Max Kellermann
73f6fc428a
test: revert debug program renames
2013-01-05 02:39:32 +01:00
Max Kellermann
44d260f911
replay_gain_*: convert to C++
2013-01-04 23:50:58 +01:00
Max Kellermann
07249fc395
replay_gain_config: remove unused variable replay_gain_mode_names
2013-01-04 23:49:41 +01:00
Max Kellermann
bc1e8e01f3
DatabaseQueue: pass playlist object
...
Don't use the global variable "g_playlist".
2013-01-04 23:19:46 +01:00
Max Kellermann
fe8e77e556
Client: add "playlist" attribute
...
Reduce access to the global variable "g_playlist".
2013-01-04 23:07:11 +01:00
Max Kellermann
b0833084a6
PlayerControl: initialize all attributes
2013-01-04 23:04:42 +01:00
Max Kellermann
3cacaa5dad
Client: initialize num_subscriptions
2013-01-04 23:02:35 +01:00
Max Kellermann
e89bd30db5
Playlist: pass max_length to playlist_init()
...
Move the configuration lookup to Main.cxx.
2013-01-04 22:55:11 +01:00
Max Kellermann
2a9d933a81
PlayerControl: add constructor and destructor
2013-01-04 22:45:14 +01:00
Max Kellermann
81f3d893d9
player_control.h: convert header to C++
2013-01-04 22:31:53 +01:00
Max Kellermann
05c91082e3
playlist: convert to C++
2013-01-04 22:12:33 +01:00
Max Kellermann
7267558ba1
DecoderThread: move code to destructor
2013-01-04 22:02:52 +01:00
Max Kellermann
ac6803e7b7
DecoderInternal: initialize replay_gain_serial
2013-01-04 22:01:13 +01:00
Max Kellermann
ffabf8b013
DecoderInternal: move initializers to constructor
2013-01-04 21:59:03 +01:00
Max Kellermann
e9b71a0d28
MusicChunk: move functions to methods
2013-01-04 21:38:46 +01:00
Max Kellermann
efbfe66f21
Mutex: new wrapper for std::mutex, replaces GMutex
2013-01-04 21:24:29 +01:00
Max Kellermann
6886063703
MusicPipe: allocate with new/delete
2013-01-04 21:22:07 +01:00
Max Kellermann
c04e1ad401
mpd_error.h: add missing glib.h include
2013-01-04 21:20:10 +01:00
Max Kellermann
223b90d0d4
MusicBuffer: return memory to kernel when stopping playback
...
Use the new HugeAllocator as backend for SliceBuffer and call
HugeDiscard() when the last chunk was returned.
2013-01-04 20:48:28 +01:00
Max Kellermann
692b2cfb79
HugeAllocator: new memory allocator
2013-01-04 20:38:06 +01:00
Max Kellermann
447a86c922
SliceBuffer: lazy initialization
...
Avoid page faults on MPD startup. This saves a lot of memory for an
idle MPD.
2013-01-04 20:29:47 +01:00
Max Kellermann
e3a2bd3a1e
MusicBuffer: move code to template class SliceBuffer
2013-01-04 17:12:21 +01:00
Max Kellermann
f0be6a4b9e
MusicBuffer: allocate with new/delete
2013-01-04 17:03:50 +01:00
Max Kellermann
bdab5d5f6e
MusicBuffer: disable memory poisoning
...
This is harmful for memory usage, because it forces the kernel to
allocate physical memory, even before playback has started. No bug
has been found in a few years with this, so it's safe to assume that
this code is not necessary.
2013-01-04 15:42:15 +01:00
Max Kellermann
15a4246ead
Client, Inotify: use std::list instead of std::deque
...
Random access is not necessary here.
2013-01-04 14:44:06 +01:00
Max Kellermann
9a71845700
crossfade: convert to C++
2013-01-04 10:31:59 +01:00
Max Kellermann
22f0a1547c
buffer, pipe: convert to C++
2013-01-04 10:16:16 +01:00
Max Kellermann
de0ab43bc1
output_*: convert to C++
2013-01-04 09:46:41 +01:00
Max Kellermann
e12cc01aa4
decoder_*: convert to C++
2013-01-04 09:41:45 +01:00
Max Kellermann
71c697288b
pcm_convert: make C++ safe
2013-01-04 08:49:15 +01:00
Max Kellermann
a7d1daee93
CommandListBuilder: use std::list instead of GSList
2013-01-04 01:17:25 +01:00
Max Kellermann
77a99cc61d
CommandListBuilder: rename attributes
2013-01-04 01:16:22 +01:00
Max Kellermann
fb337418a5
Client: move code to class CommandListBuilder
2013-01-04 00:50:13 +01:00
Max Kellermann
9d312ab208
PlaylistFile: reuse classes PlaylistInfo and PlaylistVector
...
.. instead of rolling own classes.
2013-01-04 00:02:09 +01:00
Max Kellermann
06be0a1997
PlaylistInfo: remove the obsolete list_head attribute
2013-01-04 00:01:01 +01:00
Max Kellermann
9e4509b846
ClientNew: initialise the "idle" attributes
...
Make valgrind happy.
2013-01-03 23:59:45 +01:00
Max Kellermann
fc1f0eeda7
Client: add constructor and destructor
...
Move code from client_new() and client_close().
2013-01-03 23:59:45 +01:00
Max Kellermann
3d5c094804
PlaylistFile: fix memory leak
2013-01-03 23:59:45 +01:00
Max Kellermann
6abc94ec07
valgrind.suppressions: add more suppressions
2013-01-03 23:59:02 +01:00
Max Kellermann
6837e5a6a0
Merge branch 'v0.17.x'
2013-01-03 22:53:53 +01:00
Max Kellermann
9761abf3b5
cue_parser: fix CUE files with only one track
...
Track whether _finish() has been called, and deliver all partial
results then. Fixes Mantis ticket 0003621.
2013-01-03 21:58:20 +01:00
Max Kellermann
599a562170
cue_parser: add code comments
2013-01-03 21:38:38 +01:00
Max Kellermann
d29a251547
.gitignore: add more debug programs
2013-01-03 21:21:32 +01:00
Max Kellermann
31da4bc566
cue_parser: fix memory leak
2013-01-03 21:02:59 +01:00
Denis Krjuchkov
0f1a180e15
mpd_auto.m4: Pass libraries to AC_CHECK_LIB in MPD_AUTO_PKG_LIB
...
Rationale: vanilla libid3tag does not have any pkg-config stuff
and fails to detect because symbols from libz are not found.
2013-01-03 19:59:41 +01:00
Denis Krjuchkov
01a45a53aa
cmdline: bunch of fixes related to config file selection
...
- fix potential memory leak of system_path
'Potential' because currently g_get_system_config_dirs()
returns single entry on Windows, but that might change.
- remove incorrect g_free() call
It's not required at all because
g_get_system_config_dirs() returns GLib owned memory.
- remove extra semicolon
2013-01-03 19:45:51 +01:00
Max Kellermann
59400d38a9
Client: use std::deque for messages
2013-01-03 18:07:48 +01:00
Max Kellermann
5155b0f608
ClientMessage: turn into a class
2013-01-03 17:58:22 +01:00
Max Kellermann
d919f8d50a
ClientInternal: use std::set for subscriptions
2013-01-03 17:49:47 +01:00
Max Kellermann
d67aa7c19d
ClientNew: allocate/dispose client objects with new/delete
...
Prepare for adding non-trivial attributes.
2013-01-03 17:47:39 +01:00
Max Kellermann
7a982169c9
Client: rename the struct client to class Client
2013-01-03 17:36:28 +01:00
Max Kellermann
f2510d60fa
ls.h: rename to ls.hxx
2013-01-03 17:34:51 +01:00
Max Kellermann
1e0ea57dc4
cmdline: convert to C++
2013-01-03 17:31:38 +01:00
Max Kellermann
70b87f2eb6
client: convert to C++
2013-01-03 11:16:18 +01:00
Max Kellermann
94b2ee627c
decoder_print: convert to C++
2013-01-03 11:14:36 +01:00
Max Kellermann
e30a2dd2d7
listen: convert to C++
2013-01-03 11:05:44 +01:00
Max Kellermann
7e07daf8cb
ls: convert to C++
2013-01-03 11:01:02 +01:00
Max Kellermann
981906ecd1
output_print: convert to C++
2013-01-03 10:58:39 +01:00
Max Kellermann
90fe4c5124
TextFile: convert to a class
2013-01-03 10:16:05 +01:00
Max Kellermann
2452447c81
text_file: convert to C++
2013-01-03 10:12:41 +01:00
Max Kellermann
93f0bb8307
ExcludeList: convert to a class
2013-01-03 10:02:43 +01:00
Max Kellermann
47fc08bffe
exclude: convert to C++
2013-01-03 10:02:33 +01:00
Max Kellermann
c0f2024a2e
exclude: make variables more local
2013-01-03 10:02:26 +01:00
Max Kellermann
28f3e190c8
InotifyQueue: use std::deque instead of GSList
2013-01-03 10:02:26 +01:00
Max Kellermann
c4090b670d
Permission: use std::map instead of GHashTable
2013-01-03 03:11:39 +01:00
Max Kellermann
ddf112378b
permission: convert to C++
2013-01-03 03:09:50 +01:00
Max Kellermann
b25cce464a
client_new: convert to C++
2013-01-03 03:07:16 +01:00
Max Kellermann
a2297558ff
MessageCommands: use std::set instead of GHashTable
2013-01-03 02:40:21 +01:00
Max Kellermann
84cdf0cacc
StickerDatabase: use std::map instead of GHashTable
2013-01-03 02:39:08 +01:00
Max Kellermann
9e99e5bef9
strset: delete obsolete library
2013-01-03 02:31:47 +01:00
Max Kellermann
9023ba4a81
PlaylistVector: use std::list
2013-01-03 02:25:06 +01:00
Max Kellermann
83488848e1
Directory: initialise in default constructor
2013-01-03 02:12:34 +01:00
Max Kellermann
f5a92d6cc3
Directory: add constructor and destructor
2013-01-03 01:36:28 +01:00
Max Kellermann
3e8047e583
Directory: rename struct directory to Directory
2013-01-03 01:10:47 +01:00
Max Kellermann
440ac51cf0
database.h: rename to DatabaseSimple.hxx
2013-01-03 01:06:11 +01:00
Max Kellermann
d3293b889d
database.h: move prototypes to DatabaseGlue.hxx
2013-01-03 01:04:18 +01:00
Max Kellermann
b4b0b34e5a
database.h: eliminate db_*_song()
...
Use the C++ API.
2013-01-03 00:37:18 +01:00
Max Kellermann
fa3d1156a6
playlist_edit: convert to C++
2013-01-03 00:35:05 +01:00
Max Kellermann
0eb05b827f
Directory: turn functions to methods
2013-01-02 23:06:10 +01:00
Max Kellermann
0c245bc271
Directory: make the header C++ only
2013-01-02 22:52:08 +01:00
Max Kellermann
d65ad1bf15
mapper: convert to C++
2013-01-02 22:43:56 +01:00
Max Kellermann
43cbbe111b
song_update: convert to C++
2013-01-02 22:42:12 +01:00
Max Kellermann
9ceb8a717a
sticker: convert to C++
2013-01-02 22:25:17 +01:00
Max Kellermann
8331de424a
PlaylistInfo: rename class, use std::string
2013-01-02 22:16:05 +01:00
Max Kellermann
98dbdf72b3
PlaylistVector: move struct playlist_metadata to PlaylistInfo.hxx
2013-01-02 22:01:04 +01:00
Max Kellermann
51a2d09eb7
db_lock: convert to C++
2013-01-02 20:56:21 +01:00
Max Kellermann
22f0ef6d6b
don't include stdbool.h in C++ sources
...
The "bool" type is built-in.
2013-01-02 20:56:04 +01:00
Max Kellermann
975deca85b
{decoder,player}_thread: convert to C++
2013-01-02 20:36:28 +01:00
Max Kellermann
3bbb502387
*_print: convert to C++
2013-01-02 20:29:24 +01:00
Max Kellermann
0023dffd0b
playlist_vector: convert to C++
2013-01-02 20:25:20 +01:00
Max Kellermann
b715e522cf
db_save, state_file: convert to C++
2013-01-02 20:22:59 +01:00
Max Kellermann
4b0b8315a9
string_util: use const_cast in C++ mode
2013-01-02 20:22:59 +01:00
Max Kellermann
a654f146d1
update: convert to C++
2013-01-02 19:22:15 +01:00
Max Kellermann
67b46a151d
playlist_{any,song,queue}: convert to C++
2013-01-02 19:19:58 +01:00
Max Kellermann
83c7e1e129
configure.ac: disable C++ RTTI
...
RTTI adds overhead to the binary, and we don't need that.
2013-01-02 19:19:58 +01:00
Max Kellermann
a6371e2e66
configure.ac: disable C++ exceptions
...
We don't use exceptions currently. Since allowing exceptions means a
lot of overhead, this commit disables the feature.
2013-01-02 19:12:27 +01:00
Max Kellermann
7768baa4d1
configure.ac: hide internal symbols
...
Allows eliminating more dead code. Adds two more C++ options that may
reduce the binary size.
2013-01-02 19:04:23 +01:00
John
a9a5907a0f
mpd.service: depend on network.target
...
Since some configurations use the "bind_to_address" option in their
/etc/mpd.conf, the systemd service file must wait for the
network.target or else mpd will start before it and thus fail due to
no iface.
2012-11-21 17:26:23 +01:00
Jurgen Kramer
dc32d1f3f3
Add tag support for DSD (DSDIFF & DSF) decoders
2012-10-27 11:42:34 +02:00
Max Kellermann
cbdaa1369f
Merge branch 'v0.17.x'
...
Conflicts:
src/PlaylistSave.cxx
2012-10-05 17:12:44 +02:00
Max Kellermann
8fb20fcdf8
playlist_song: fix potential charset bug in apply_song_metadata()
...
The song's URI must be UTF-8, not filesystem character set.
2012-10-05 17:01:04 +02:00
Max Kellermann
72bf226608
playlist_save: use temp2 instead of temp
...
Fixes minor Windows compatibility problem.
2012-10-05 16:55:30 +02:00
Max Kellermann
d4b5699403
decoder/ffmpeg: support planar audio
...
Implements Mantis feature request 3582.
2012-10-05 16:40:25 +02:00
Max Kellermann
1dc27be015
decoder/ffmpeg: fix playback of planar PCM data
...
Interleaving was completely wrong. This code was never used, so it
didn't have an effect.
2012-10-05 16:38:55 +02:00
Max Kellermann
230a3eb400
decoder/ffmpeg: move code to copy_interleave_frame2()
2012-10-05 16:37:07 +02:00
Max Kellermann
e39382dedd
decoder/ffmpeg: ignore negative time stamps
...
Works around assertion failure in decoder_timestamp().
2012-10-05 16:37:07 +02:00
Max Kellermann
fd016f4507
decoder/ffmpeg: show unsupported sample format name
...
Use av_get_sample_fmt_string() to obtain a human-readable string.
2012-10-05 15:24:53 +02:00
Max Kellermann
9d728b365d
decoder/ffmpeg: pass AVSampleFormat to ffmpeg_sample_format()
...
API simplification.
2012-10-05 15:14:57 +02:00
Max Kellermann
ddc0283339
decoder/ffmpeg: remove duplicate sample format error message
2012-10-05 14:52:30 +02:00
Max Kellermann
b8fdb452be
decoder/flac: support FLAC files inside archives
...
Implement the "scan_stream" method that can read tags from any
input_stream object. This requires a FLAC__IOCallbacks implementation
based on the input_stream API.
2012-10-04 10:37:09 +02:00
Max Kellermann
6b416ce6be
decoder/flac: move flac_scan_file2() to main plugin file
2012-10-04 10:32:52 +02:00
Max Kellermann
ef0392e854
input/file: use errno_quark()
2012-10-04 10:32:04 +02:00
Max Kellermann
efbf184fe8
PlaylistFile, client_file, tag_id3: don't use g_file_error_quark()
...
g_file_error_quark() is meant to be used with the GFileError enum
which does not correspond with errno, but must be converted with
g_file_error_from_errno().
At the same time, this removes g_strerror() use for
g_file_error_quark().
2012-10-04 10:31:53 +02:00
Max Kellermann
dd577fb857
test/read_tags: wait until input_stream becomes ready
...
Improved support for scanning http:// resources.
2012-10-04 09:28:13 +02:00
Max Kellermann
ebd90dbb1a
decoder/flac: move callbacks to class FLACInput
2012-10-02 19:59:49 +02:00
Max Kellermann
c9e700f079
decoder/flac: add ctor/dtor to struct flac_data
2012-10-02 19:47:31 +02:00
Max Kellermann
3c2d73d161
decoder/flac: add method FLACMetadataChain::Scan()
...
Merge common code.
2012-10-02 18:24:15 +02:00
Max Kellermann
343de8b8ab
decoder/flac: don't use FLAC__Metadata_SimpleIterator
...
Use the new FLACMetadataIterator C++ class, which is more powerful.
2012-10-02 17:38:21 +02:00
Max Kellermann
c645b906f3
decoder/flac: add C++ libFLAC wrappers
...
Not using libFLAC++ because this library adds a lot of overhead due to
virtual method calls. This new class library is zero-overhead.
2012-10-02 17:37:07 +02:00
Max Kellermann
9c1d1ef268
decoder/flac: eliminate the obsolete "track number" code
...
This has been deprecated by the "embcue" playlist plugin.
2012-10-02 17:36:54 +02:00
Max Kellermann
ade0483641
Merge branch 'v0.17.x'
2012-10-02 17:34:03 +02:00
Gregory Smith
03a401e477
OSX: Set mDataByteSize correctly on AudioBuffers during render.
2012-10-02 17:27:52 +02:00
Max Kellermann
9994521b8c
test/dump_playlist: add missing newline to error message
2012-10-02 17:27:47 +02:00
Max Kellermann
e5fd1924db
decoder/flac: remove unused function flac_tag_load()
2012-10-02 11:39:10 +02:00
Max Kellermann
cbdd042adc
decoder/flac: use C++ compiler
2012-10-02 10:59:56 +02:00
Max Kellermann
a9419da09c
Makefile.am: eliminate FLAC_COMMON
2012-10-02 10:58:53 +02:00
Max Kellermann
ccd7104cdc
{decoder,encoder}/flac: drop support for libFLAC 1.1
2012-10-02 10:04:44 +02:00
Max Kellermann
1cf4b5ce47
encoder/opus: implement lookahead
...
The "opusinfo" program complained about preskip value that was too
small. This commit uses OPUS_GET_LOOKAHEAD to obtain the number of
frames that shall be silence at the beginning.
2012-10-02 09:42:03 +02:00
Max Kellermann
1badb3b5d5
encoder/opus: initialize the "granulepos" packet attribute
2012-10-02 09:16:44 +02:00
Max Kellermann
038d216f18
encoder/{vorbis,opus}: merge code to new class OggStream
2012-10-02 09:06:03 +02:00
Max Kellermann
9e3f843291
encoder/vorbis: accept floating point input samples
...
Improves quality by not squeezing 32 bit samples down to 16 bit, and
then back to 32 bit floating point. Reduces CPU usage by skipping a
conversion step.
2012-10-02 08:39:39 +02:00
Max Kellermann
e166ddf46f
pcm_channels: support floating point samples
2012-10-02 08:39:12 +02:00
Max Kellermann
31e1be7570
encoder/opus: call ogg_stream_flush() only in the last iteration
...
If there are multiple pages, the last partial page must be flushed.
2012-10-02 08:13:48 +02:00
Max Kellermann
d793b7c03f
encoder/opus: new encoder plugin for the Opus codec
2012-10-02 00:45:24 +02:00
Max Kellermann
9a715267ad
output/shout: move code to my_shout_configure()
...
Eliminate the evil goto.
2012-10-02 00:39:21 +02:00
Max Kellermann
eafa432cc6
encoder/vorbis: use C++ compiler
2012-10-02 00:37:19 +02:00
Max Kellermann
d95e538020
Merge branch 'v0.17.x'
2012-10-02 00:36:05 +02:00
Max Kellermann
adbe8c409a
output/{recorder,shout}: call encoder_read() in a loop
...
This is necessary for Ogg packets that span more than one page.
2012-10-02 00:26:40 +02:00
Max Kellermann
58e600f408
output/recorder: move code to _write_to_file()
2012-10-02 00:26:40 +02:00
Max Kellermann
d34e55c370
output/recorder: fix write() error check
...
We can only check for negative values if the variable is signed.
2012-10-02 00:20:42 +02:00
Max Kellermann
fbcbcdc001
output/recorder: make variables more local
2012-10-02 00:20:32 +02:00
Max Kellermann
4227a325a5
output/httpd: make variables more local
2012-10-02 00:20:13 +02:00
Max Kellermann
d115507502
encoder/vorbis: make variables more local
2012-10-02 00:20:01 +02:00
Max Kellermann
43d8252050
output/recorder, test/*: invoke encoder_read() after _open()
...
Make sure the file header gets written at the beginning, before
_write() gets called.
2012-10-02 00:18:18 +02:00
Max Kellermann
674b4ab647
output/shout: eliminate struct shout_buffer
...
Move the raw buffer to struct shout_data.
2012-10-02 00:18:04 +02:00
Max Kellermann
fe8fc1081a
output/shout: remove shout_buffer.len
...
Make it a local variable instead.
2012-10-02 00:17:53 +02:00
Max Kellermann
c7748fedab
output/shout: fix memory leak in error handler
2012-10-02 00:17:27 +02:00
Max Kellermann
c392efb481
output/shout: make variables more local
2012-10-02 00:17:17 +02:00
Max Kellermann
1ddd9dd52a
test/run_encoder: fix encoder_open() call
2012-10-02 00:17:08 +02:00
Max Kellermann
aa171dcc18
configure.ac: fix AC_CONFIG_SRCDIR call
...
main.c has been renamed to Main.cxx.
2012-10-01 13:37:02 +02:00
Max Kellermann
b4d8cb7bc1
Merge tag 'release-0.17.2'
2012-10-01 11:06:54 +02:00
Avuton Olrich
f672e4016f
Modify version string to post-release version 0.17.3~git
2012-09-30 03:27:38 -07:00
Avuton Olrich
76e3dec723
mpd version 0.17.2
2012-09-30 03:27:38 -07:00
Max Kellermann
d0c3fa0150
main: use C++ compiler
2012-09-28 00:40:00 +02:00
Max Kellermann
609f6ce66d
PlaylistFile: use std::list instead of GPtrArray
2012-09-28 00:10:02 +02:00
Max Kellermann
7298b6c846
stored_playlist, playlist_save: use C++ compiler
2012-09-28 00:08:15 +02:00
Max Kellermann
acec9c4fd7
stored_playlist: make variables more local
2012-09-28 00:05:21 +02:00
Max Kellermann
9cdbde4f5e
output: new option "tags" may be used to disable sending tags
...
Implements Mantis ticket 0003340.
2012-09-25 23:31:07 +02:00
Max Kellermann
f9147a0706
NEWS: mention the AdPlug decoder
2012-09-25 23:31:07 +02:00
Max Kellermann
33364edfb3
decoder/adplug: new decoder plugin
2012-09-25 22:03:44 +02:00
Simon Hosie
5e9ccdec63
decoder/vorbis: skip 16 bit quantisation, provide float samples
...
Internally the vorbis (non-Tremor) decoder is working in floating
point, and it's not really necessary to cut the output back to 16-bit
if the soundcard or OS supports higher resolution.
The decoder can be trivially modified to bypass its internal
quantisation and produce floating-point output, and a separate
quantisation can be used as appropriate to the platform.
2012-09-25 21:27:50 +02:00
Max Kellermann
071aca60be
decoder/vorbis: rename local variables
2012-09-25 21:26:27 +02:00
Max Kellermann
133e4d5c51
decoder/vorbis: improved support for initial seek
...
Call decoder_get_command() before doing anything else.
2012-09-25 21:26:27 +02:00
Max Kellermann
fd56461d5f
decoder/vorbis: make variables more local
2012-09-25 21:11:38 +02:00
Max Kellermann
d5f59f8c86
INSTALL: correct the libopus URL
2012-09-25 21:09:05 +02:00
Max Kellermann
a5d8b27671
command.h: move function prototypes to AllCommands.h
2012-09-25 12:20:36 +02:00
Max Kellermann
f3f25d5d40
command.h: remove obsolete command_success() prototype
...
This lives in protocol/result.h now.
2012-09-25 12:20:33 +02:00
Max Kellermann
f118812c34
playlist: include cleanup
2012-09-25 12:20:30 +02:00
Max Kellermann
98dbc95913
rename CommandError.h to CommandError.hxx
2012-09-25 12:20:15 +02:00
Max Kellermann
145c1d214c
*Commands: remove extern"C" from C++ headers
2012-09-25 12:19:18 +02:00
Max Kellermann
b62a8e3e3e
command: add COMMAND_RETURN_IDLE
...
Eliminate the hack in handle_idle().
2012-09-25 12:04:20 +02:00
Max Kellermann
e47240931a
command: add documentation for "enum command_return"
2012-09-25 12:02:08 +02:00
Max Kellermann
a84874426d
command: remove enum integer values
...
Just use the values assigned by the compiler.
2012-09-25 12:01:53 +02:00
Max Kellermann
f38dfd9231
command: rename to AllCommands.cxx
2012-09-25 11:56:37 +02:00
Max Kellermann
510c4a3ef1
command: move remaining handlers to OtherCommands.cxx
2012-09-25 11:44:49 +02:00
Max Kellermann
e7e52c24f5
gcc.h: require gcc 4.6
...
We use range-based for and nullptr, which was not implemented prior to
gcc 4.6.
2012-09-25 11:39:46 +02:00
Max Kellermann
e2a574e2a0
Merge branch 'v0.17.x'
...
Conflicts:
src/locate.c
2012-09-25 11:39:01 +02:00
Max Kellermann
ba6ef53ef9
decoder_control: remove MixRamp debug messages
...
These are confusing, and since MixRamp development has ceased, not
useful to anybody.
2012-09-25 11:08:16 +02:00
Max Kellermann
c93a28c641
configure.ac: don't auto-detect the Vorbis encoder when Tremor is enabled
...
libvorbisidec and libvorbis export the same symbols, which is a
dangerous thing. Since libvorbisenc depends on libvorbis, this can
get nasty, so let's disable the Vorbis encoder unless the user
explicitly wants it.
2012-09-25 10:41:39 +02:00
Max Kellermann
7088a679a2
decoder/wavpack: support all APEv2 tags
...
WavPack tags are always APEv2, by definition. Reuse the tag_table
from tag_ape.c, instead of rolling our own.
2012-09-25 09:37:16 +02:00
Max Kellermann
04c02a1eb8
locate: cast enum tag_type to int before comparing with integer
...
Avoids clang pickiness. This code is not correct, but we'll fix that
another day.
2012-09-22 09:48:27 +02:00
Max Kellermann
1536b5a9d6
src/decoder/opus: new decoder plugin for the Opus codec
...
Using libopus and libogg.
2012-09-05 23:01:17 +02:00
Max Kellermann
bab756a5d0
decoder/{flac,vorbis}: move tag table to XiphTags.c
...
Merge duplicate data.
2012-09-05 22:56:57 +02:00
Max Kellermann
8c763fe458
Makefile.am: rename HAVE_OGG_COMMON to HAVE_XIPH
2012-09-05 22:56:17 +02:00
Max Kellermann
886255e38a
db/SimpleDatabasePlugin: fix memory leak in Visit()
...
When visiting a song, GetSong() was called, but this object was never
returned by calling ReturnSong(). This patch locks the database only
once in Visit() and passes the original song object to the visitor,
avoiding the copy.
2012-09-05 20:56:20 +02:00
Max Kellermann
0240e75426
db_lock: add C++ helper class ScopeDatabaseLock
2012-09-05 20:52:02 +02:00
Max Kellermann
7102ed8026
decoder/ogg_codec: return UNKNOWN on error
2012-09-04 13:46:12 +02:00
Max Kellermann
ebf481e1a1
decoder/ogg_common: rename to ogg_codec.c
2012-09-04 13:05:12 +02:00
Max Kellermann
5a52e91350
decoder/ogg_common: pass decoder to _type_detect()
...
Allow the function to be cancelled.
2012-09-04 12:49:02 +02:00
Max Kellermann
18e458154a
decoder/ogg_common: apply coding style
2012-09-04 11:52:18 +02:00
Max Kellermann
015e1ab183
decoder/_ogg_common: rename to ogg_common.c
2012-09-04 11:28:36 +02:00
Max Kellermann
2a4c799471
Merge branch 'v0.17.x'
2012-09-04 11:28:13 +02:00
Max Kellermann
41487426f5
decoder/_ogg_common: fix buffer size check
...
Fixes potential access to uninitialised memory.
2012-09-04 11:22:15 +02:00
Max Kellermann
0d24250aa7
decoder/_ogg_common: simplify the large "if" expression
2012-09-04 11:22:05 +02:00
Wieland Hoffmann
2050e2f886
mpd.conf(5): Use the correct default value for max_playlist_length
2012-09-03 22:49:51 +02:00
Max Kellermann
013e8479af
AudioCompress: abort on out-of-memory
...
This library crashes on out-of-memory (NULL pointer dereference).
There's not much useful MPD can do in such a situation, so let's
explicitly abort instead, just like GLib does.
2012-09-03 22:45:33 +02:00
Max Kellermann
27535a7f78
update_walk: fix unsafe readlink() usage
2012-09-03 22:41:04 +02:00
Max Kellermann
333d226ed0
SongFilter: convert to a C++ class
2012-08-29 20:19:02 +02:00
Max Kellermann
04a9dec952
playlist_print: rename to PlaylistPrint.cxx
2012-08-29 20:17:13 +02:00
Max Kellermann
6ee76b7154
DatabaseSelection: add method Match()
2012-08-29 20:03:37 +02:00
Max Kellermann
36b1c08ad7
locate: rename to SongFilter.cxx
2012-08-29 19:12:26 +02:00
Max Kellermann
7b35d5e9d4
queue_print: rename to QueuePrint.cxx
2012-08-29 19:07:30 +02:00
Max Kellermann
6d4ca071a5
dbUtils.h: eliminate this header
2012-08-29 18:55:49 +02:00
Max Kellermann
684a3d30a6
command: move code to *Commands.cxx
2012-08-29 17:42:06 +02:00
Max Kellermann
25740d27bf
Stats: stats_print() returns void
2012-08-29 17:41:26 +02:00
Max Kellermann
fb0a52a34a
decoder/mad, output_thread: add gcc_unlikely()
2012-08-29 17:41:22 +02:00
Max Kellermann
c852970cf6
Makefile.am: distribute DatabaseCommands.hxx
2012-08-29 17:41:22 +02:00
Max Kellermann
def21cc87e
Merge branch 'v0.17.x'
...
Conflicts:
src/queue_save.c
2012-08-25 10:28:33 +02:00
Max Kellermann
488c1eb87b
test/test_queue_priority: fix SIGABRT
2012-08-25 10:24:34 +02:00
Max Kellermann
acaa725478
playlist/cue: map "PERFORMER" to "artist" or "album artist"
...
Implements Mantis ticket 0003549.
2012-08-25 09:56:14 +02:00
Max Kellermann
f351550534
player_thread: disable cross-fading in "single" mode
...
This commit reimplements the core of the "single" mode. Instead of
doing the detection in the playlist code from the outside, it is moved
to the player thread, which gets a new option called "border_pause".
It will now pause playback exactly at the beginning of the new song,
making the feature more reliable.
Now that the player thread knows what will happen, it can suppress
cross-fading.
Fixes mantis tickets 0003055 and 0003166.
2012-08-25 09:38:41 +02:00
Max Kellermann
e8df7e8da5
Database*: fix nullptr dereference when no database is configured
2012-08-22 21:40:20 +02:00
Max Kellermann
af4252bc80
fd_util: make C++ safe
2012-08-22 15:51:56 +02:00
Max Kellermann
695ffedef9
Makefile.am: swap libdb_plugins.a and -lmpdclient order
...
With some linkers, it is important to specify the static library
first, and then libmpdclient. Fixes linker failures.
2012-08-22 13:54:31 +02:00
Max Kellermann
66ecf39efe
command: make "single" a bool
2012-08-21 19:38:08 +02:00
Max Kellermann
5ad21d7e98
queue_save: save song priorities
2012-08-21 19:17:14 +02:00
Max Kellermann
1c3e03837c
configure.ac: set VERSION_MINOR to 18
...
Updates the WIN32 version number for the upcoming 0.18 release.
2012-08-21 18:42:48 +02:00
Max Kellermann
7968fa3779
ProxyDatabase: implement GetSong()
2012-08-16 00:29:25 +02:00
Max Kellermann
31009bb1f6
ProxyDatabase: clear libmpdclient errors in CheckError()
...
Auto-recover from soft errors.
2012-08-16 00:29:25 +02:00
Max Kellermann
3b8532f3fb
DatabasePlugin: add method ReturnSong()
...
Allow the plugin to allocate the GetSong() return value.
2012-08-16 00:04:14 +02:00
Max Kellermann
f45616e5f6
Merge branch 'v0.17.x'
2012-08-16 00:04:03 +02:00
Max Kellermann
ef5125f8f4
playlist_print: fix memory leak
2012-08-16 00:01:01 +02:00
Max Kellermann
bf2e07074b
playlist_song: pass const song to _check_load_song()
2012-08-16 00:00:50 +02:00
Max Kellermann
20695ef369
playlist_song: fix user-after-free bug
2012-08-16 00:00:21 +02:00
Max Kellermann
e391f4b17b
ProxyDatabase: pass "detached" objects to visitors
...
Fixes wrong object URIs with duplicate base names.
2012-08-15 23:10:59 +02:00
Max Kellermann
2bd344549b
queue: duplicate all song objects
...
Make sure the queue "owns" all song objects, so nobody else can free
them.
2012-08-15 23:10:00 +02:00
Max Kellermann
e96779de48
player_control: duplicate the song object
...
Make sure the player "owns" the next_song object, so nobody else can
free it.
2012-08-15 23:09:22 +02:00
Max Kellermann
eb54337c40
decoder_control: duplicate the song object
...
Make sure the decoder "owns" the song object, so nobody else can free
it.
2012-08-15 23:08:39 +02:00
Max Kellermann
916a020173
Song: add function song_dup_detached()
...
Initial support for "detached" songs that come from the database, but
are private copies.
2012-08-15 23:07:24 +02:00
Max Kellermann
c2e4fe983d
Song: add function song_equals()
...
decoder_is_current_song() now recognizes different instances of the
same physical song.
2012-08-15 23:06:59 +02:00
Max Kellermann
81e898375b
Song: move trivial inline functions up
2012-08-15 23:06:48 +02:00
Max Kellermann
3c0dea811d
DatabasePlugin: add method GetStats()
...
Optimize the ProxyDatabase by invoking "stats" on the peer, instead of
visiting all songs.
2012-08-15 23:05:08 +02:00
Max Kellermann
a6ac0f8965
DatabasePlugin: add method VisitUniqueTags()
...
Optimize the ProxyDatabase by invoking "list" on the peer, instead of
visiting all songs.
2012-08-15 23:02:27 +02:00
Max Kellermann
4e1eb03287
ProxyDatabase: obey visitor return values
2012-08-15 23:02:00 +02:00
Max Kellermann
fcf0f8291d
ProxyDatabasePlugin: add OO wrapper for mpd_entity
...
Let the C++ compiler take care for freeing the objects safely.
2012-08-15 23:01:08 +02:00
Max Kellermann
0ed71fa027
ProxyDatabasePlugin: move tag table to the global name space
2012-08-15 23:00:44 +02:00
Max Kellermann
affe21f7c1
db_visitor: delete obsolete header
2012-08-15 22:57:20 +02:00
Max Kellermann
9facf7897d
DatabasePrint: remove bogus "nonnull" attributes
2012-08-15 22:56:24 +02:00
Max Kellermann
8422402c39
Merge branch 'v0.17.x'
...
Conflicts:
src/player_thread.c
2012-08-15 22:56:11 +02:00
Max Kellermann
9374e0f445
player_thread: add local variable "start_ms"
...
Just in case "song" becomes invalid at some point.
2012-08-15 22:51:48 +02:00
Max Kellermann
19ed233118
playlist: fix unprotected player_control access
2012-08-15 22:47:08 +02:00
Max Kellermann
faa4fff4dd
filter/volume: include cleanup
2012-08-15 22:45:03 +02:00
Max Kellermann
2276e7677b
mapper: fix potential crash in file permission check
2012-08-15 22:44:13 +02:00
Max Kellermann
b5fde6dfa5
decoder_control: add function _is_current_song()
...
Replaces _current_song().
2012-08-15 17:58:15 +02:00
Max Kellermann
784d666a8e
decoder_control: add assertion to dc_get_error()
2012-08-15 17:58:09 +02:00
Max Kellermann
c035910df9
decoder_thread: create GError for mapper failure
...
Fixes crash.
2012-08-15 17:57:55 +02:00
Max Kellermann
efccb6ac82
Merge branch 'v0.17.x'
2012-08-15 01:04:34 +02:00
Max Kellermann
93f9c2ab6b
doc/user: add wildmidi documentation
2012-08-15 01:03:16 +02:00
Max Kellermann
4a993cd79e
decoder/fluidsynth: add "sample_rate" setting
2012-08-15 00:57:32 +02:00
Max Kellermann
02325d2ede
decoder/fluidsynth: add "soundfont" setting
...
Replaces the old global "soundfont" which never worked.
2012-08-15 00:51:45 +02:00
Max Kellermann
9c83464b95
configure.ac: auto-detect libfluidsynth
...
Now that the libfluidsynth API was sanitized, we can enable the plugin
automatically if libfluidsynth is installed.
2012-08-15 00:48:52 +02:00
Max Kellermann
b1bbd70f0f
decoder/fluidsynth: stop playback at end of file
...
Use libfluidsynth's new function fluid_player_get_status().
2012-08-15 00:47:10 +02:00
Max Kellermann
c31d11bfe0
decoder/fluidsynth: don't duplicate path
...
The libfluidsynth now accepts const strings.
2012-08-15 00:39:22 +02:00
Max Kellermann
c8ec85d649
decoder/fluidsynth: check if file is really a MIDI
...
Use fluid_is_midifile() to verify the file format.
2012-08-15 00:36:04 +02:00
Max Kellermann
e291f3d257
decoder/fluidsynth: remove throttle (requires libfluidsynth 1.1)
...
The libfluidsynth API is now sane, and does not require real-time
decoding.
2012-08-15 00:29:38 +02:00
Max Kellermann
7d27d2ea5e
Merge branch 'v0.17.x'
2012-08-14 23:58:54 +02:00
Max Kellermann
dc22846d58
log: store duplicated path string
...
Don't free the string right after calling log_init_file(). Add a new
function log_deinit() that frees the string on shutdown.
This fixes cycling the log file after SIGHUP (Mantis ticket 0003524).
2012-08-14 23:16:46 +02:00
Max Kellermann
c9aaabb5d4
output/jack: implement method delay()
...
Eliminate the g_usleep() call.
2012-08-14 22:47:25 +02:00
Max Kellermann
335d5d5d72
output/pulse: implement method delay()
...
Reduce command latency while paused.
2012-08-14 22:30:46 +02:00
Max Kellermann
51d793bec1
output/pulse: simplify _wait_stream()
...
One large loop and only one pa_stream_get_state() call.
2012-08-14 22:22:55 +02:00
Max Kellermann
249dcd967e
output/httpd: move delay from _pause() to _delay()
2012-08-14 21:54:47 +02:00
Max Kellermann
302972e9fc
output/httpd: fix throttling bug after resuming playback
...
Reset the timer when paused and no client is connected.
This fixes Mantis ticket 0003527.
2012-08-14 21:39:33 +02:00
Max Kellermann
31b380b266
output/httpd: move code to _has_clients()
2012-08-14 20:22:32 +02:00
Max Kellermann
a869dfea85
timer: use monotonic clock if available
2012-08-14 19:07:31 +02:00
Max Kellermann
12838c6294
input/ffmpeg: remove fallback AV_VERSION_INT definition
...
This is part of libavutil.
2012-08-14 19:07:27 +02:00
Wieland Hoffmann
49c7102547
mpd.conf(5): Document the existence of musicbrainz_ tags
...
Additionally, update mpdconf.example to refer to mpd.conf(5) for the
complete list of tags instead of trying to repeat it.
2012-08-14 09:43:18 +02:00
Max Kellermann
5cc3338267
Merge branch 'v0.17.x'
...
Conflicts:
src/mapper.h
2012-08-14 02:39:03 +02:00
Max Kellermann
1ae8972859
mapper: fix non-UTF8 music directory name
...
Duplicate the music_dir variable: one encoded in UTF-8, and another
one using the configured filesystem character set. This fixes an
ancient MPD bug.
2012-08-14 02:28:04 +02:00
Max Kellermann
adcd2c8eac
playlist_song: use map_to_relative_path()
2012-08-14 02:25:19 +02:00
Max Kellermann
45ff355835
playlist_song: improve const-correctness
2012-08-14 02:24:16 +02:00
Max Kellermann
f8bf3afeae
playlist_song: move code to playlist_check_load_song()
2012-08-14 02:17:25 +02:00
Max Kellermann
f703da1516
valgrind.suppressions: suppressions for GStaticMutex and more
2012-08-14 01:58:17 +02:00
Max Kellermann
a582deee2c
input_stream, main: remove obsolete GLib version checks
...
MPD requires GLib 2.16.
2012-08-14 01:57:53 +02:00
Max Kellermann
3047bdf653
Merge branch 'v0.17.x'
...
Conflicts:
NEWS
configure.ac
src/client_file.h
2012-08-13 07:59:19 +02:00
Anton Khirnov
12be9e818f
client_file: remove pure attribute from client_allow_file().
...
That function is not pure, it writes to error.
When marked as pure, the compiler is allowed to assume it does not do
anything to error, so it can remain NULL, which would result in an
invalid read in print_error().
2012-08-13 07:55:40 +02:00
Max Kellermann
a0478f98af
Directory: move code to directory_allocate()
2012-08-09 21:04:07 +02:00
Max Kellermann
5e2c62db2f
valgrind.suppressions: suppressions for GStaticMutex and more
2012-08-09 20:59:48 +02:00
Max Kellermann
d488d796f4
player_control: add GError attribute
...
Rewrite of the pc_get_error_message() function, now using a GError
object instead of the complicated "errored_song" attribute.
2012-08-08 22:54:49 +02:00
Max Kellermann
f794b1e1aa
output_all: add basic GError support
2012-08-08 22:48:59 +02:00
Max Kellermann
8c425c758c
decoder_control: add GError attribute
2012-08-08 22:38:16 +02:00
Max Kellermann
0b9e912297
player_control: rename attribute "error" to "error_type"
2012-08-08 22:29:09 +02:00
Max Kellermann
d35d2b269f
player_control: rename player_error enum values
2012-08-08 22:28:59 +02:00
Max Kellermann
fa84ed412d
player_control: remove unused enum player_error values
2012-08-08 22:28:49 +02:00
Max Kellermann
16951099d1
player_control: inline trivial functions
2012-08-08 22:27:00 +02:00
Max Kellermann
050ba302cb
song: use C++ compiler
2012-08-08 21:08:37 +02:00
Max Kellermann
c1f90a99f4
tag_pool: use GStaticMutex
...
Eliminates explicit global initialisation.
2012-08-08 21:01:25 +02:00
Max Kellermann
510097cc37
song: include cleanup
2012-08-08 20:14:24 +02:00
Max Kellermann
6a83721c55
directory: use gcc.h macros, not GLib
2012-08-08 20:07:47 +02:00
Max Kellermann
ca9795c30a
conf: add a "database" block
...
The new block overrides the "db_file" setting, and allows configuring
any database plugin.
2012-08-08 09:28:13 +02:00
Max Kellermann
dc2fa246a9
DatabaseGlue: look up the database plugin
...
No more hard-coded "simple" plugin.
2012-08-08 09:28:13 +02:00
Max Kellermann
b46bb611b3
DatabaseGlue: pass block to db_init()
...
Let the caller take care for legacy conversion.
2012-08-08 09:28:13 +02:00
Max Kellermann
aa55d759f5
DatabaseGlue: add function db_is_simple()
...
Preparing for non-"simple" database plugins.
2012-08-08 09:28:13 +02:00
Max Kellermann
2043579f71
main: don't call db_init() without database
...
Useless call.
2012-08-08 09:28:13 +02:00
Max Kellermann
346e31efa0
ProxyDatabasePlugin: obey the "recursive" flag
2012-08-08 09:28:13 +02:00
Max Kellermann
b504d63117
ProxyDatabasePlugin: use an artificial "root" directory
...
Fixes assertion failures in the Directory library.
2012-08-08 09:27:42 +02:00
Max Kellermann
b4b1728b6f
DatabasePrint: don't print Last-Modified if unknown
2012-08-08 09:27:42 +02:00
Max Kellermann
21792386d8
time_print: new library, function time_print()
...
Implements error checking for the gmtime_r() call, which was missing
in two code locations.
2012-08-08 09:27:12 +02:00
Max Kellermann
63a2ac21e1
ProxyDatabasePlugin: new database plugin using libmpdclient
...
Implementation incomplete, but sort-of-works. DumpDatabase works, but
MPD is still hard-coded on the "simple" plugin.
2012-08-08 01:20:45 +02:00
Max Kellermann
c42b206292
DatabaseCommands: allow empty criteria for "list"
...
Fixes regression.
2012-08-08 01:16:47 +02:00
Max Kellermann
733d6a6b16
DatabaseSelection: add "match" attribute
...
Let the database plugin do the match.
2012-08-08 00:55:02 +02:00
Max Kellermann
8d2725234e
DatabaseCommands: merge duplicate search/find code
2012-08-08 00:49:07 +02:00
Max Kellermann
0823711106
locate: add a per-item "fold_case" flag
...
Merge locate_song_search() and locate_song_match().
2012-08-08 00:47:45 +02:00
Max Kellermann
860e9eb8c9
locate: make "tag" unsigned
2012-08-08 00:45:46 +02:00
Max Kellermann
3d2092ee23
locate: make the structs opaque
2012-08-07 23:52:11 +02:00
Max Kellermann
8855efebc0
locate: don't allow empty list
2012-08-07 23:45:00 +02:00
Max Kellermann
7725577a53
locate: pass unsigned integer to _parse()
2012-08-07 23:44:43 +02:00
Max Kellermann
668e3f664f
locate: add "pure" attributes
2012-08-07 23:43:36 +02:00
Max Kellermann
9e51733c71
DatabaseCommands: remove stray locate_item_list_parse() call
2012-08-07 23:41:35 +02:00
Max Kellermann
6b39a5621d
locate: add "casefold" flag to parser
...
Fold the case during construction, without having to create another
copy.
2012-08-07 23:27:23 +02:00
Max Kellermann
0d46e11826
locate: remove unused function locate_item_free()
2012-08-07 23:27:08 +02:00
Max Kellermann
ff58207034
db_selection: rename to DatabaseSelection
2012-08-07 23:12:26 +02:00
Max Kellermann
b3d76b7e5c
db_print.h: rename to DatabasePrint.hxx
2012-08-07 23:10:34 +02:00
Max Kellermann
4d6c816abb
dbUtils.h: move to DatabaseQueue.hxx, DatabasePlaylist.hxx
2012-08-07 22:57:18 +02:00
Max Kellermann
f35ceaee0a
command: move code to DatabaseCommands.cxx
...
Prepare to use the DatabasePlugin C++ API directly.
2012-08-07 22:36:18 +02:00
Max Kellermann
a64a2a65a9
command: move print_error() to CommandError.cxx
...
Prepare for splitting command.c.
2012-08-07 22:26:14 +02:00
Max Kellermann
1a75abffa5
Database{Plugin,Visitor}: pass references
2012-08-07 21:32:08 +02:00
Max Kellermann
c6a0f5d3f9
test/DumpDatabase: new debug program
2012-08-07 20:21:10 +02:00
Max Kellermann
bb75e3ea55
DatabaseRegistry: list of plugins
2012-08-07 20:07:17 +02:00
Max Kellermann
814eebf976
configure.ac: copy missing file m4/ax_check_link_flag.m4
...
Needed by ax_append_link_flags.m4.
2012-08-03 14:40:04 +02:00
Max Kellermann
e08d4f28aa
Makefile.am: add libdb_plugins.a
2012-08-02 19:25:18 +02:00
Max Kellermann
6f3c65dc64
DatabaseGlue: remove db_walk(), db_visit()
...
Unused.
2012-08-02 19:15:01 +02:00
Max Kellermann
0a3ada4fea
stats: convert to C++
2012-08-02 19:14:53 +02:00
Max Kellermann
8bdf7917c4
db_print: convert to C++
2012-08-02 19:14:40 +02:00
Max Kellermann
67d16a086e
dbUtils: split to Database{Queue,Playlist}.cxx
2012-08-02 19:14:09 +02:00
Max Kellermann
b8018f12ba
DatabaseGlue: add function GetDatabase()
...
Allow using the object outside of DatabaseGlue.cxx.
2012-08-02 19:13:58 +02:00
Max Kellermann
607780b7f9
DatabasePlugin: add simpler Visit() wrapepr
2012-08-02 19:12:42 +02:00
Max Kellermann
af1c497759
DatabasePlugin: make Visit() const
2012-08-02 19:12:27 +02:00
Max Kellermann
8e331cfc65
gcc.h: re-add gcc_const and gcc_pure
...
Remove GLib dependency from some headers.
2012-08-02 19:12:18 +02:00
Max Kellermann
edf811fa02
DatabaseVisitor, ...: use GError forward declaration
2012-08-02 19:12:06 +02:00
Max Kellermann
b25b7693ba
configure.ac: enable --gc-sections
...
Produce a smaller binary by removing all unused functions.
2012-08-02 19:09:29 +02:00
Max Kellermann
9dc9459f3a
db_plugin: convert to C++
2012-08-01 09:59:12 +02:00
Max Kellermann
37b92967c5
gcc.h: require g++ 4.5 or newer
...
Soon we'll use C++11 lambdas which were implemented in gcc 4.5.
2012-08-01 09:59:12 +02:00
Max Kellermann
768504e956
configure.ac: enable C++ warnings
2012-08-01 09:59:12 +02:00
Max Kellermann
2571accfc3
configure.ac: require C++11 compiler
...
We'll add some C++11 code soon.
2012-08-01 09:59:12 +02:00
Max Kellermann
0d2abdb5d9
gcc.h: add fallback for C++11 "override"
2012-08-01 09:59:12 +02:00
Max Kellermann
79200a8611
decoder/sidplay: fix C++ compiler warnings
2012-08-01 09:59:12 +02:00
Max Kellermann
123ae985d5
util/list: make safe for C++
2012-08-01 09:59:12 +02:00
Max Kellermann
659d1c7cf7
Modify version string to post-release version 0.18~git
2012-08-01 09:58:42 +02:00
Avuton Olrich
281cd7c057
Modify version string to post-release version 0.17.2~git
2012-07-31 19:05:52 -07:00