Browse Source

MPD: Upgrade to 0.18.11, convert to procd, refresh patches

Signed-off-by: Ted Hess <thess@kitschensync.net>
lilik-openwrt-22.03
Ted Hess 10 years ago
parent
commit
a3255798d7
6 changed files with 46 additions and 85 deletions
  1. +10
    -10
      sound/mpd/Makefile
  2. +17
    -19
      sound/mpd/files/mpd.init
  3. +0
    -23
      sound/mpd/patches/100-compile-fixes.patch
  4. +0
    -16
      sound/mpd/patches/200-allow-float-samples-ffmpeg.patch
  5. +3
    -17
      sound/mpd/patches/210-support_raw_pcm_streams.patch
  6. +16
    -0
      sound/mpd/patches/220-handle_slow_server_stream_startup.patch

+ 10
- 10
sound/mpd/Makefile View File

@ -8,14 +8,17 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=mpd
PKG_VERSION:=0.17.6
PKG_RELEASE:=4
PKG_VERSION:=0.18.11
PKG_RELEASE:=1
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
PKG_SOURCE_URL:=http://www.musicpd.org/download/mpd/0.17/
PKG_MD5SUM:=0a42ed81ff298c12e22c16be31097e4c
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_SOURCE_URL:=http://www.musicpd.org/download/mpd/0.18/
PKG_MD5SUM:=be23120f342250e8352f6499cb960fd2
PKG_MAINTAINER:=Ted Hess <thess@kitschensync.net>
PKG_LICENSE:=GPL-2.0
PKG_LICENSE_FILE:=COPYING
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
PKG_BUILD_PARALLEL:=1
@ -32,7 +35,7 @@ define Package/mpd/Default
CATEGORY:=Sound
TITLE:=Music Player Daemon
URL:=http://www.musicpd.org/
DEPENDS:= +glib2 +libcurl +libpthread $(ICONV_DEPENDS) \
DEPENDS:= +glib2 +libcurl +libpthread +libmpdclient $(ICONV_DEPENDS) \
+libflac +BUILD_PATENTED:libmad +libvorbisidec
endef
@ -98,6 +101,7 @@ CONFIGURE_ARGS += \
--disable-fluidsynth \
--disable-gme \
--enable-inotify \
--disable-eventfd \
--disable-iso9660 \
--disable-jack \
--disable-lame-encoder \
@ -134,12 +138,8 @@ CONFIGURE_VARS += \
$(if $(CONFIG_BUILD_PATENTED),MAD_CFLAGS="$(TARGET_CFLAGS)") \
$(if $(CONFIG_BUILD_PATENTED),MAD_LIBS="$(TARGET_LDFLAGS) -lmad") \
TARGET_CFLAGS += -std=gnu99
TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib $(if $(ICONV_FULL),-liconv)
# use gcc instead of g++ to avoid unnecessary linking against libstdc++
TARGET_CXX:=$(TARGET_CC)
ifeq ($(BUILD_VARIANT),full)
CONFIGURE_ARGS += \


+ 17
- 19
sound/mpd/files/mpd.init View File

@ -1,28 +1,26 @@
#!/bin/sh /etc/rc.common
# Copyright (C) 2007-2011 OpenWrt.org
# Copyright (C) 2007-2014 OpenWrt.org
START=93
start() {
#create mpd directories
pld=`grep ^playlist_directory /etc/mpd.conf | cut -d "\"" -f 2 | sed "s/~/\/root/g"`
if [ ! -d $pld ]; then
mkdir -m 0755 -p $pld
fi
USE_PROCD=1
# Set the initial volume to something manageable
[ -x /usr/bin/amixer ] && /usr/bin/amixer set PCM 40
PROG=/usr/bin/mpd
CONFIGFILE=/etc/mpd.conf
NICEPRIO=-10
if [ -x /bin/nice ]; then
# This has real-time constraints, so let's at least tell the OS
# that this should have higher priority to avoid skipping
# when doing other things in the background.
nice -n -10
fi
#TODO: Add uci config - nice, config
service_start /usr/bin/mpd
}
start_service() {
#create mpd directories from config
local pld=`grep ^playlist_directory "$CONFIGFILE" | cut -d "\"" -f 2 | sed "s/~/\/root/g"`
if [ ! -d $pld ]; then
mkdir -m 0755 -p $pld
fi
stop() {
service_stop /usr/bin/mpd
procd_open_instance
procd_set_param command "$PROG" --no-daemon "$CONFIGFILE"
# Give MPD some real-time priority
procd_set_param nice "$NICEPRIO"
procd_close_instance
}

+ 0
- 23
sound/mpd/patches/100-compile-fixes.patch View File

@ -1,23 +0,0 @@
--- a/configure
+++ b/configure
@@ -9821,6 +9821,7 @@ fi
# Check whether --with-faad was given.
if test "${with_faad+set}" = set; then :
withval=$with_faad;
+ faad_prefix=$with_faad;
else
faad_prefix=""
fi
--- a/src/input/file_input_plugin.c
+++ b/src/input/file_input_plugin.c
@@ -82,10 +82,6 @@ input_file_open(const char *filename,
return NULL;
}
-#ifdef POSIX_FADV_SEQUENTIAL
- posix_fadvise(fd, (off_t)0, st.st_size, POSIX_FADV_SEQUENTIAL);
-#endif
-
fis = g_new(struct file_input_stream, 1);
input_stream_init(&fis->base, &input_plugin_file, filename,
mutex, cond);

+ 0
- 16
sound/mpd/patches/200-allow-float-samples-ffmpeg.patch View File

@ -1,16 +0,0 @@
--- a/src/decoder/ffmpeg_decoder_plugin.c
+++ b/src/decoder/ffmpeg_decoder_plugin.c
@@ -370,6 +370,13 @@
#endif
return SAMPLE_FORMAT_S32;
+#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(52, 94, 1)
+ case AV_SAMPLE_FMT_FLT:
+#else
+ case SAMPLE_FMT_FLOAT:
+#endif
+ return SAMPLE_FORMAT_FLOAT;
+
default:
g_warning("Unsupported libavcodec SampleFormat value: %d",
codec_context->sample_fmt);

+ 3
- 17
sound/mpd/patches/210-support_raw_pcm_streams.patch View File

@ -1,20 +1,6 @@
--- a/src/decoder/ffmpeg_decoder_plugin.c
+++ b/src/decoder/ffmpeg_decoder_plugin.c
@@ -387,6 +387,13 @@ ffmpeg_probe(struct decoder *decoder, st
unsigned char *buffer = g_malloc(BUFFER_SIZE);
size_t nbytes = decoder_read(decoder, is, buffer, BUFFER_SIZE);
+
+ if ((nbytes > 0) && (nbytes < 1024))
+ {
+ // Gobble some more data if header is small
+ nbytes += decoder_read(decoder, is, buffer + nbytes, BUFFER_SIZE - nbytes);
+ }
+
if (nbytes <= PADDING ||
!input_stream_lock_seek(is, 0, SEEK_SET, NULL)) {
g_free(buffer);
@@ -683,6 +690,7 @@ static const char *const ffmpeg_mime_typ
--- a/src/decoder/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/FfmpegDecoderPlugin.cxx
@@ -634,6 +634,7 @@ static const char *const ffmpeg_mime_typ
"audio/qcelp",
"audio/vorbis",
"audio/vorbis+ogg",


+ 16
- 0
sound/mpd/patches/220-handle_slow_server_stream_startup.patch View File

@ -0,0 +1,16 @@
--- a/src/decoder/FfmpegDecoderPlugin.cxx
+++ b/src/decoder/FfmpegDecoderPlugin.cxx
@@ -373,6 +373,13 @@ ffmpeg_probe(Decoder *decoder, InputStre
unsigned char buffer[BUFFER_SIZE];
size_t nbytes = decoder_read(decoder, is, buffer, BUFFER_SIZE);
+
+ if ((nbytes > 0) && (nbytes < 1024))
+ {
+ // Gobble some more data if header is small
+ nbytes += decoder_read(decoder, is, buffer + nbytes, BUFFER_SIZE - nbytes);
+ }
+
if (nbytes <= PADDING || !is.LockRewind(IgnoreError()))
return nullptr;

Loading…
Cancel
Save