From 063259dc52fef24dace5952dea5da12438aae6b4 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 16 May 2017 07:06:57 +0200 Subject: [PATCH 1/8] increment version number to 0.20.8 --- NEWS | 2 ++ configure.ac | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index f3786f689..748616d44 100644 --- a/NEWS +++ b/NEWS @@ -1,3 +1,5 @@ +ver 0.20.8 (not yet released) + ver 0.20.7 (2017/05/15) * database - simple: fix false positive directory loop detection with NFS diff --git a/configure.ac b/configure.ac index cb74afbdb..26053f833 100644 --- a/configure.ac +++ b/configure.ac @@ -1,10 +1,10 @@ AC_PREREQ(2.60) -AC_INIT(mpd, 0.20.7, musicpd-dev-team@lists.sourceforge.net) +AC_INIT(mpd, 0.20.8, musicpd-dev-team@lists.sourceforge.net) VERSION_MAJOR=0 VERSION_MINOR=20 -VERSION_REVISION=7 +VERSION_REVISION=8 VERSION_EXTRA=0 AC_CONFIG_SRCDIR([src/Main.cxx]) From b3c82f888691670e272b522a92be8dfb5f1e6b32 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 16 May 2017 07:12:30 +0200 Subject: [PATCH 2/8] output/{osx,haiku,pulse,sles}: add missing "noexcept" Fixes build failure on OS X, closes #44. With the other plugins, that's not critical, because those use the AudioOutputWrapper, which hides this problem. --- NEWS | 2 ++ src/output/plugins/HaikuOutputPlugin.cxx | 4 ++-- src/output/plugins/OSXOutputPlugin.cxx | 2 +- src/output/plugins/PulseOutputPlugin.cxx | 4 ++-- src/output/plugins/sles/SlesOutputPlugin.cxx | 2 +- 5 files changed, 8 insertions(+), 6 deletions(-) diff --git a/NEWS b/NEWS index 748616d44..c4aefd52d 100644 --- a/NEWS +++ b/NEWS @@ -1,4 +1,6 @@ ver 0.20.8 (not yet released) +* output + - osx: fix build failure due to missing "noexcept" ver 0.20.7 (2017/05/15) * database diff --git a/src/output/plugins/HaikuOutputPlugin.cxx b/src/output/plugins/HaikuOutputPlugin.cxx index 5d0371e9e..732a90900 100644 --- a/src/output/plugins/HaikuOutputPlugin.cxx +++ b/src/output/plugins/HaikuOutputPlugin.cxx @@ -79,7 +79,7 @@ public: size_t Play(const void *chunk, size_t size); void Cancel(); - std::chrono::steady_clock::duration Delay(); + std::chrono::steady_clock::duration Delay() noexcept; void FillBuffer(void* _buffer, size_t size, gcc_unused const media_raw_audio_format& _format); @@ -309,7 +309,7 @@ HaikuOutput::Play(const void *chunk, size_t size) } inline std::chrono::steady_clock::duration -HaikuOutput::Delay() +HaikuOutput::Delay() noexcept { unsigned delay = buffer_filled ? 0 : buffer_delay; diff --git a/src/output/plugins/OSXOutputPlugin.cxx b/src/output/plugins/OSXOutputPlugin.cxx index 5c9d55a2e..020044a47 100644 --- a/src/output/plugins/OSXOutputPlugin.cxx +++ b/src/output/plugins/OSXOutputPlugin.cxx @@ -670,7 +670,7 @@ osx_output_play(AudioOutput *ao, const void *chunk, size_t size) } static std::chrono::steady_clock::duration -osx_output_delay(AudioOutput *ao) +osx_output_delay(AudioOutput *ao) noexcept { OSXOutput *od = (OSXOutput *)ao; return od->ring_buffer->write_available() diff --git a/src/output/plugins/PulseOutputPlugin.cxx b/src/output/plugins/PulseOutputPlugin.cxx index 6e9bc7344..01302e53d 100644 --- a/src/output/plugins/PulseOutputPlugin.cxx +++ b/src/output/plugins/PulseOutputPlugin.cxx @@ -100,7 +100,7 @@ public: void Open(AudioFormat &audio_format); void Close(); - std::chrono::steady_clock::duration Delay(); + std::chrono::steady_clock::duration Delay() noexcept; size_t Play(const void *chunk, size_t size); void Cancel(); bool Pause(); @@ -740,7 +740,7 @@ PulseOutput::StreamPause(bool pause) } inline std::chrono::steady_clock::duration -PulseOutput::Delay() +PulseOutput::Delay() noexcept { Pulse::LockGuard lock(mainloop); diff --git a/src/output/plugins/sles/SlesOutputPlugin.cxx b/src/output/plugins/sles/SlesOutputPlugin.cxx index da88662cc..bc6c214ca 100644 --- a/src/output/plugins/sles/SlesOutputPlugin.cxx +++ b/src/output/plugins/sles/SlesOutputPlugin.cxx @@ -96,7 +96,7 @@ public: void Open(AudioFormat &audio_format); void Close(); - std::chrono::steady_clock::duration Delay() { + std::chrono::steady_clock::duration Delay() noexcept { return pause && !cancel ? std::chrono::milliseconds(100) : std::chrono::steady_clock::duration::zero(); From 64786ec12a6e648bf64d2e7e76772cf0d2029487 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 16 May 2017 07:20:47 +0200 Subject: [PATCH 3/8] Main: omit "constexpr" on MIN_BUFFER_SIZE with GCC 4.x --- NEWS | 1 + src/Main.cxx | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index c4aefd52d..f3bc7a04f 100644 --- a/NEWS +++ b/NEWS @@ -1,6 +1,7 @@ ver 0.20.8 (not yet released) * output - osx: fix build failure due to missing "noexcept" +* fix build failure with GCC 4.x ver 0.20.7 (2017/05/15) * database diff --git a/src/Main.cxx b/src/Main.cxx index a431aa4ec..e05afe633 100644 --- a/src/Main.cxx +++ b/src/Main.cxx @@ -121,8 +121,16 @@ static constexpr size_t KILOBYTE = 1024; static constexpr size_t MEGABYTE = 1024 * KILOBYTE; static constexpr size_t DEFAULT_BUFFER_SIZE = 4 * MEGABYTE; -static constexpr size_t MIN_BUFFER_SIZE = std::max(CHUNK_SIZE * 32, - 64 * KILOBYTE); + +static +#if GCC_OLDER_THAN(5,0) +/* gcc 4.x has no "constexpr" for std::max() */ +const +#else +constexpr +#endif +size_t MIN_BUFFER_SIZE = std::max(CHUNK_SIZE * 32, + 64 * KILOBYTE); static constexpr unsigned DEFAULT_BUFFER_BEFORE_PLAY = 10; From 90c84081110bcaefdd81db5d157749833d6662fb Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 24 Apr 2017 19:54:25 +0200 Subject: [PATCH 4/8] doc/user.xml: add Zeroconf documentation --- INSTALL | 3 --- doc/user.xml | 49 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 3 deletions(-) diff --git a/INSTALL b/INSTALL index bc551dff1..9cb90d9d4 100644 --- a/INSTALL +++ b/INSTALL @@ -117,9 +117,6 @@ For AdLib playback. Optional Miscellaneous Dependencies ----------------------------------- -Avahi - http://www.avahi.org/ -For Zeroconf support. - libsamplerate - http://www.mega-nerd.com/SRC/ For advanced samplerate conversions. diff --git a/doc/user.xml b/doc/user.xml index d1a895160..7e7348315 100644 --- a/doc/user.xml +++ b/doc/user.xml @@ -1165,6 +1165,55 @@ systemctl start mpd.socket + +
+ Zeroconf + + + If Zeroconf support (Avahi or Apple's Bonjour) + was enabled at compile time with + --with-zeroconf=..., MPD can announce + its presence on the network. The following settings control + this feature: + + + + + + + Setting + Description + + + + + + + zeroconf_enabled + yes|no + + + Enables or disables this feature. Default is + yes. + + + + + + zeroconf_name + NAME + + + The service name to publish via Zeroconf. The + default is "Music Player". + + + + + + +
From 2bb77851897bb8abc173c0ec91972b66ebd2fbf5 Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 24 Apr 2017 20:04:13 +0200 Subject: [PATCH 5/8] doc/user.xml: add sticker documentation --- INSTALL | 3 --- doc/user.xml | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 34 insertions(+), 3 deletions(-) diff --git a/INSTALL b/INSTALL index 9cb90d9d4..78b157ed1 100644 --- a/INSTALL +++ b/INSTALL @@ -126,9 +126,6 @@ For playing HTTP streams. libmms - https://launchpad.net/libmms For playing MMS streams. -SQLite - http://www.sqlite.org/ -For the sticker database. - libcdio - http://www.gnu.org/software/libcdio/ For playing audio CDs. diff --git a/doc/user.xml b/doc/user.xml index 7e7348315..c19ef8db1 100644 --- a/doc/user.xml +++ b/doc/user.xml @@ -1035,6 +1035,40 @@ systemctl start mpd.socket +
+ The Sticker Database + + + "Stickers" are pieces of information attached to songs. + Some clients use them to store ratings and other volatile + data. This feature requires SQLite, compile-time + configure option --enable-sqlite. + + + + + + + Setting + Description + + + + + + sticker_file + PATH + + + The location of the sticker database. + + + + + +
+
Resource Limitations From e3994e517ebfe1623a2441f1976b5bc4e5d9a57b Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Mon, 24 Apr 2017 15:32:24 +0200 Subject: [PATCH 6/8] INSTALL: merge into doc/user.xml --- INSTALL | 200 --------------------------------------------------- README.md | 3 +- doc/user.xml | 99 ++++++++++++++++++------- 3 files changed, 74 insertions(+), 228 deletions(-) delete mode 100644 INSTALL diff --git a/INSTALL b/INSTALL deleted file mode 100644 index 78b157ed1..000000000 --- a/INSTALL +++ /dev/null @@ -1,200 +0,0 @@ - Music Player Daemon (MPD) - INSTALL - - -Introduction ------------- - -This document is a very small amount of documentation about what is needed to -install MPD. If more information is desired, read the user manual: - - http://www.musicpd.org/doc/user/ - -Dependencies ------------- - -gcc 4.7 or later - http://gcc.gnu.org/ -clang 3.2 or later - http://clang.llvm.org/ -Any other C++11 compliant compiler should also work. - -Boost 1.46 - http://www.boost.org/ - - -Optional Output Dependencies ----------------------------- - -You will need at least one of these to compile MPD. - -Most of these are available as packages on major distributions. Be sure to -install both the library package as well as the development package. - -AO - http://www.xiph.org/ao/ -A portable library that abstracts many audio output types as one API. Should -be used only if there is no native plugin available or if the native plugin -doesn't work. You will need libao. - -ALSA - http://www.alsa-project.org/ -The Advanced Linux Sound Architecture. Recommended audio output if you use -Linux. You will need libasound. - -FIFO -This is a mostly undocumented, developer plugin to transmit raw data. - -OSS - http://www.opensound.com -Open Sound System. - -PulseAudio - http://www.pulseaudio.org/ -An advanced sound daemon. You will need libpulse. - -JACK - http://www.jackaudio.org/ -A low-latency sound daemon. - -libshout - http://www.icecast.org/ -For streaming to an Icecast or Shoutcast server. -You also need an encoder: either libvorbisenc (ogg), or liblame (mp3). - -OpenAL - http://kcat.strangesoft.net/openal.html -Open Audio Library - - -Optional Input Dependencies ---------------------------- - -You will need at least one of these to compile MPD. - -Most of these are available as packages on major distributions. Be sure to -install both the library package as well as the development package. - -MAD - http://www.underbit.com/products/mad/ -For MP3 support. You will need libmad, and optionally libid3tag if you want -ID3 tag support. - -libmpg123 - http://www.mpg123.de/ -Alternative for MP3 support. - -Ogg Vorbis - http://www.xiph.org/ogg/vorbis/ -For Ogg Vorbis support. You will need libogg and libvorbis. - -libopus - http://www.opus-codec.org/ -Opus codec support - -FLAC - http://flac.sourceforge.net/ -For FLAC support. You will need version 1.2 or higher of libFLAC. - -Audio File - http://www.68k.org/~michael/audiofile/ -For WAVE, AIFF, and AU support. You will need libaudiofile. - -FAAD2 - http://www.audiocoding.com/ -For MP4/AAC support. - -libmpcdec - http://www.musepack.net/ -For Musepack support. - -MikMod - http://mikmod.raphnet.net/ -For MOD support. You will need libmikmod. - -libavcodec, libavformat (ffmpeg or libav) - http://ffmpeg.mplayerhq.hu/ http://libav.org/ -Multi-codec library. - -libsidplay2 - http://sidplay2.sourceforge.net/ -For C64 SID support. - -libfluidsynth - http://fluidsynth.resonance.org/ -For MIDI support. - -libwildmidi 0.2.3 - http://wildmidi.sourceforge.net/ -For MIDI support. - -libsndfile - http://www.mega-nerd.com/libsndfile/ -WAVE, AIFF, and many others. - -libwavpack - http://www.wavpack.com/ -For WavPack playback. - -libadplug - http://adplug.sourceforge.net/ -For AdLib playback. - - -Optional Miscellaneous Dependencies ------------------------------------ - -libsamplerate - http://www.mega-nerd.com/SRC/ -For advanced samplerate conversions. - -libcurl - http://curl.haxx.se/ -For playing HTTP streams. - -libmms - https://launchpad.net/libmms -For playing MMS streams. - -libcdio - http://www.gnu.org/software/libcdio/ -For playing audio CDs. - -libsystemd-daemon - http://freedesktop.org/wiki/Software/systemd/ -For systemd activation. - - -pkg-config ----------- - -MPD uses pkg-config to locate most external libraries. If you do not -have pkg-config, or if your version of the library does not ship the -".pc" file, you have to provide the library's build options in -environment variables. These variables are documented in "./configure ---help". Example: - - FLAC_CFLAGS=-I/usr/include/FLAC FLAC_LIBS=-lFLAC ./configure - - -Download --------- - -Get the latest release from of MPD from . - -Compile -------- - -1) unpack the archive - -$ tar xf mpd-x.x.x.tar.xz - -2) change to directory created - -$ cd mpd-x.x.x - -3) Run configure script (this will determine what dependencies you have) - -$ ./configure - -4) Compile - -$ make - -Install (Optional) -------- - -(as root) -$ make install - -Run ---- - -1) run mpd: - -$ mpd - -First default is $XDG_CONFIG_HOME/mpd/mpd.conf then ~/.mpdconf then -~/.mpd/mpd.conf then /etc/mpd.conf. If neither of these exist a mpd -configuration file must be specified at runtime. - -A sample config file is included with the source of MPD, mpdconf.example. - -The first time MPD is run it will attempt to discover all music in your -music root, recursively. This can be affected by the symbolic link -options specified in the example mpd.conf. - -Using MPD ---------- - -You can download many different interfaces for MPD at - - http://www.musicpd.org/clients/ diff --git a/README.md b/README.md index f605dd461..ea588710d 100644 --- a/README.md +++ b/README.md @@ -7,7 +7,8 @@ server's audio device. The daemon stores info about all available music, and this info can be easily searched and retrieved. Player control, info retrieval, and playlist management can all be managed remotely. -For basic installation information see the INSTALL file. +For basic installation instructions +[read the manual](https://www.musicpd.org/doc/user/install.html). # Users diff --git a/doc/user.xml b/doc/user.xml index c19ef8db1..9a93123f3 100644 --- a/doc/user.xml +++ b/doc/user.xml @@ -80,8 +80,35 @@ cd mpd-version - Make sure that all the required libraries and build tools are - installed. The INSTALL file has a list. + In any case, you need: + + + + + + a C++14 compiler (e.g. gcc 4.9 or clang 3.9) + + + + + + Boost 1.46 + + + + + + pkg-config + + + + + + Each plugin usually needs a codec library, which you also need + to install. Check the plugin reference for details about + required libraries. @@ -2161,7 +2188,9 @@ run <varname>cdio_paranoia</varname> - Plays audio CDs. The URI has the form: + Plays audio CDs using libcdio. + The URI has the form: "cdda://[DEVICE][/TRACK]". The simplest form cdda:// plays the whole disc in the default drive. @@ -2197,7 +2226,8 @@ run <varname>curl</varname> - Opens remote files or streams over HTTP. + Opens remote files or streams over HTTP using libcurl. @@ -2290,7 +2320,8 @@ run <varname>mms</varname> - Plays streams with the MMS protocol. + Plays streams with the MMS protocol using libmms.
@@ -2346,7 +2377,8 @@ run <varname>adplug</varname> - Decodes AdLib files. + Decodes AdLib files using libadplug. @@ -2377,8 +2409,8 @@ run <varname>audiofile</varname> - Decodes WAV and AIFF files using - libaudiofile. + Decodes WAV and AIFF files using libaudiofile. @@ -2386,7 +2418,8 @@ run <varname>faad</varname> - Decodes AAC files using libfaad. + Decodes AAC files using libfaad. @@ -2394,8 +2427,8 @@ run <varname>ffmpeg</varname> - Decodes various codecs using - FFmpeg. + Decodes various codecs using FFmpeg. @@ -2446,7 +2479,7 @@ run Decodes FLAC files using - libFLAC. + libFLAC. @@ -2566,7 +2599,8 @@ run <varname>mad</varname> - Decodes MP3 files using libmad. + Decodes MP3 files using libmad. @@ -2646,8 +2680,8 @@ run <varname>mpcdec</varname> - Decodes Musepack files using - libmpcdec. + Decodes Musepack files using libmpcdec. @@ -2655,7 +2689,17 @@ run <varname>mpg123</varname> - Decodes MP3 files using libmpg123. + Decodes MP3 files using libmpg123. + + + +
+ <varname>opus</varname> + + + Decodes Opus files using libopus.
@@ -2675,8 +2719,8 @@ run <varname>sidplay</varname> - C64 SID decoder based on - libsidplay. + C64 SID decoder based on libsidplay. @@ -2732,8 +2776,8 @@ run <varname>sndfile</varname> - Decodes WAV and AIFF files using - libsndfile. + Decodes WAV and AIFF files using libsndfile. @@ -2741,8 +2785,8 @@ run <varname>vorbis</varname> - Decodes Ogg-Vorbis files using - libvorbis. + Decodes Ogg-Vorbis files using libvorbis. @@ -2751,7 +2795,7 @@ run Decodes WavPack files using - libwavpack. + libwavpack. @@ -3575,7 +3619,7 @@ run -
+
<varname>jack</varname> @@ -3855,7 +3899,7 @@ run
-
+
<varname>openal</varname> @@ -4006,7 +4050,7 @@ run The pulse plugin connects to a PulseAudio - server. + server. Requires libpulse. @@ -4194,7 +4238,8 @@ run url="http://www.shoutcast.com/">ShoutCast or IceCast - server. It forwards tags to this server. + server using libshout. It forwards + tags to this server. From 50e86340978dfe2075b678c9f241b29518bb67ad Mon Sep 17 00:00:00 2001 From: Max Kellermann Date: Tue, 16 May 2017 07:27:08 +0200 Subject: [PATCH 7/8] python/build/libs: upgrade FFmpeg to 3.3.1 --- python/build/libs.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/python/build/libs.py b/python/build/libs.py index 7db98bed4..caf922ffb 100644 --- a/python/build/libs.py +++ b/python/build/libs.py @@ -58,8 +58,8 @@ libmad = AutotoolsProject( ) ffmpeg = FfmpegProject( - 'http://ffmpeg.org/releases/ffmpeg-3.3.tar.xz', - '599e7f7c017221c22011c4037b88bdcd1c47cd40c1e466838bc3c465f3e9569d', + 'http://ffmpeg.org/releases/ffmpeg-3.3.1.tar.xz', + 'b702a7fc656ac23e276b8c823a2f646e4e6f6309bb2788435a708e69bea98f2f', 'lib/libavcodec.a', [ '--disable-shared', '--enable-static', From f7fffc9be89c4d1bc03489f982fad20243f941b3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Klitzing?= Date: Thu, 27 Apr 2017 19:43:05 +0200 Subject: [PATCH 8/8] Add initial travis configuration --- .travis.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .travis.yml diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..cea4e765d --- /dev/null +++ b/.travis.yml @@ -0,0 +1,31 @@ +dist: trusty +language: cpp + +addons: + apt: + packages: + - libcppunit-dev + - libboost-dev + +os: + - linux + +compiler: + - gcc + +before_install: + # C++14 + - sudo add-apt-repository -y ppa:ubuntu-toolchain-r/test + - sudo apt-get update -qq + +install: + # C++14 + - sudo apt-get install -qq g++-5 + - sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-5 90 + - sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-5 90 + +script: + - ./autogen.sh + - ./configure --enable-test + - make + - make check