aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.am1
-rw-r--r--NEWS7
-rw-r--r--src/db/plugins/upnp/Directory.cxx1
-rw-r--r--src/decoder/plugins/FfmpegDecoderPlugin.cxx3
-rw-r--r--src/input/AsyncInputStream.cxx5
-rw-r--r--src/input/Domain.cxx24
-rw-r--r--src/input/Domain.hxx27
-rw-r--r--src/input/Open.cxx3
-rw-r--r--src/lib/upnp/ContentDirectoryService.cxx2
9 files changed, 68 insertions, 5 deletions
diff --git a/Makefile.am b/Makefile.am
index dac3e1772..72b6a0ca4 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -1112,6 +1112,7 @@ endif
#
libinput_a_SOURCES = \
+ src/input/Domain.cxx src/input/Domain.hxx \
src/input/Init.cxx src/input/Init.hxx \
src/input/Registry.cxx src/input/Registry.hxx \
src/input/Open.cxx \
diff --git a/NEWS b/NEWS
index 81656deca..67f7b647f 100644
--- a/NEWS
+++ b/NEWS
@@ -4,6 +4,13 @@ ver 0.20 (not yet released)
* output
- pulse: set channel map to WAVE-EX
+ver 0.19.3 (not yet released)
+* database
+ - upnp: fix breakage due to malformed URIs
+* decoder
+ - audiofile: fix crash while playing streams
+ - ffmpeg: support opus
+
ver 0.19.2 (2014/11/02)
* input
- curl: fix redirected streams
diff --git a/src/db/plugins/upnp/Directory.cxx b/src/db/plugins/upnp/Directory.cxx
index 683022a10..e94a1a997 100644
--- a/src/db/plugins/upnp/Directory.cxx
+++ b/src/db/plugins/upnp/Directory.cxx
@@ -129,6 +129,7 @@ public:
state(NONE),
tag_type(TAG_NUM_OF_ITEM_TYPES)
{
+ m_tobj.clear();
}
protected:
diff --git a/src/decoder/plugins/FfmpegDecoderPlugin.cxx b/src/decoder/plugins/FfmpegDecoderPlugin.cxx
index 2e72269b2..466caa3d1 100644
--- a/src/decoder/plugins/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/plugins/FfmpegDecoderPlugin.cxx
@@ -657,7 +657,7 @@ static const char *const ffmpeg_suffixes[] = {
"mj2", "mjpeg", "mjpg", "mka", "mkv", "mlp", "mm", "mmf", "mov", "mp+",
"mp1", "mp2", "mp3", "mp4", "mpc", "mpeg", "mpg", "mpga", "mpp", "mpu",
"mve", "mvi", "mxf", "nc", "nsv", "nut", "nuv", "oga", "ogm", "ogv",
- "ogx", "oma", "ogg", "omg", "psp", "pva", "qcp", "qt", "r3d", "ra",
+ "ogx", "oma", "ogg", "omg", "opus", "psp", "pva", "qcp", "qt", "r3d", "ra",
"ram", "rl2", "rm", "rmvb", "roq", "rpl", "rvc", "shn", "smk", "snd",
"sol", "son", "spx", "str", "swf", "tgi", "tgq", "tgv", "thp", "ts",
"tsp", "tta", "xa", "xvid", "uv", "uv2", "vb", "vid", "vob", "voc",
@@ -691,6 +691,7 @@ static const char *const ffmpeg_mime_types[] = {
"audio/mpeg",
"audio/musepack",
"audio/ogg",
+ "audio/opus",
"audio/qcelp",
"audio/vorbis",
"audio/vorbis+ogg",
diff --git a/src/input/AsyncInputStream.cxx b/src/input/AsyncInputStream.cxx
index d34ba2ff3..c8e3fcfd5 100644
--- a/src/input/AsyncInputStream.cxx
+++ b/src/input/AsyncInputStream.cxx
@@ -19,6 +19,7 @@
#include "config.h"
#include "AsyncInputStream.hxx"
+#include "Domain.hxx"
#include "tag/Tag.hxx"
#include "event/Call.hxx"
#include "thread/Cond.hxx"
@@ -113,8 +114,10 @@ AsyncInputStream::Seek(offset_type new_offset, Error &error)
/* no-op */
return true;
- if (!IsSeekable())
+ if (!IsSeekable()) {
+ error.Set(input_domain, "Not seekable");
return false;
+ }
/* check if we can fast-forward the buffer */
diff --git a/src/input/Domain.cxx b/src/input/Domain.cxx
new file mode 100644
index 000000000..26ae298a4
--- /dev/null
+++ b/src/input/Domain.cxx
@@ -0,0 +1,24 @@
+/*
+ * Copyright (C) 2003-2014 The Music Player Daemon Project
+ * http://www.musicpd.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#include "config.h"
+#include "Domain.hxx"
+#include "util/Domain.hxx"
+
+const Domain input_domain("input");
diff --git a/src/input/Domain.hxx b/src/input/Domain.hxx
new file mode 100644
index 000000000..16fa5e0f1
--- /dev/null
+++ b/src/input/Domain.hxx
@@ -0,0 +1,27 @@
+/*
+ * Copyright (C) 2003-2014 The Music Player Daemon Project
+ * http://www.musicpd.org
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+ */
+
+#ifndef MPD_INPUT_DOMAIN_HXX
+#define MPD_INPUT_DOMAIN_HXX
+
+class Domain;
+
+extern const Domain input_domain;
+
+#endif
diff --git a/src/input/Open.cxx b/src/input/Open.cxx
index 18572d6b2..66ccdce74 100644
--- a/src/input/Open.cxx
+++ b/src/input/Open.cxx
@@ -22,14 +22,13 @@
#include "Registry.hxx"
#include "InputPlugin.hxx"
#include "LocalOpen.hxx"
+#include "Domain.hxx"
#include "plugins/RewindInputPlugin.hxx"
#include "fs/Traits.hxx"
#include "fs/Path.hxx"
#include "util/Error.hxx"
#include "util/Domain.hxx"
-static constexpr Domain input_domain("input");
-
InputStream *
InputStream::Open(const char *url,
Mutex &mutex, Cond &cond,
diff --git a/src/lib/upnp/ContentDirectoryService.cxx b/src/lib/upnp/ContentDirectoryService.cxx
index ee7c0d7f5..0e5d2d955 100644
--- a/src/lib/upnp/ContentDirectoryService.cxx
+++ b/src/lib/upnp/ContentDirectoryService.cxx
@@ -29,7 +29,7 @@
ContentDirectoryService::ContentDirectoryService(const UPnPDevice &device,
const UPnPService &service)
- :m_actionURL(uri_apply_base(device.URLBase, service.controlURL)),
+ :m_actionURL(uri_apply_base(service.controlURL, device.URLBase)),
m_serviceType(service.serviceType),
m_deviceId(device.UDN),
m_friendlyName(device.friendlyName),