diff --git a/packages/addons/service/snapserver/changelog.txt b/packages/addons/service/snapserver/changelog.txt
index ffbebe8438..b2c0fa1580 100644
--- a/packages/addons/service/snapserver/changelog.txt
+++ b/packages/addons/service/snapserver/changelog.txt
@@ -1,2 +1,7 @@
+101
+- Add streaming from Kodi
+- Keep daemon state
+- Rework settings
+
100
- Initial addon
diff --git a/packages/addons/service/snapserver/package.mk b/packages/addons/service/snapserver/package.mk
index 74d6fc6bb4..4598ecbcf3 100644
--- a/packages/addons/service/snapserver/package.mk
+++ b/packages/addons/service/snapserver/package.mk
@@ -18,7 +18,7 @@
PKG_NAME="snapserver"
PKG_VERSION="0.13.0"
-PKG_REV="100"
+PKG_REV="101"
PKG_ARCH="any"
PKG_LICENSE="GPLv3"
PKG_DEPENDS_TARGET="toolchain shairport-sync snapcast"
@@ -30,6 +30,7 @@ PKG_AUTORECONF="no"
PKG_IS_ADDON="yes"
PKG_ADDON_NAME="Snapserver"
PKG_ADDON_TYPE="xbmc.service"
+PKG_ADDON_REQUIRES="service.librespot:0.0.0"
PKG_MAINTAINER="Anton Voyl (awiouy)"
make_target() {
diff --git a/packages/addons/service/snapserver/source/bin/snapserver.start b/packages/addons/service/snapserver/source/bin/snapserver.start
index 3cc71a6609..2741d2d581 100644
--- a/packages/addons/service/snapserver/source/bin/snapserver.start
+++ b/packages/addons/service/snapserver/source/bin/snapserver.start
@@ -20,20 +20,43 @@
. /etc/profile
oe_setup_addon service.snapserver
-case "$ss_ps" in
+config="pulseaudio.conf"
+link="/storage/.config/pulse-daemon.conf.d/50-snapserver.conf"
+mkdir -p "$(dirname $link)"
+ln -sf "$ADDON_HOME/$config" "$link"
+if [ ! -e "$ADDON_HOME/$config" ]; then
+ cp "$ADDON_DIR/config/$config" "$ADDON_HOME"
+fi
+
+file="/tmp/snapkodi"
+sink_name="Snapserver"
+if [ -z "$(pactl list short | grep $sink_name)" ]; then
+ pactl load-module module-pipe-sink \
+ file="$file" \
+ rate=48000 \
+ sink_name="$sink_name" \
+ sink_properties=device.description="$sink_name"
+fi
+
+case "$ss_st" in
Default)
- ss_us="--stream pipe:///tmp/snapfifo?name=Default"
+ stream="pipe:///tmp/snapfifo?name=Default"
;;
- Airplay)
- ss_us="--stream airplay:///shairport-sync?name=Airplay"
+ Kodi)
+ stream="pipe://$file?name=Kodi"
;;
Spotify)
- ss_us="--stream spotify:///librespot?name=Spotify"
+ stream="spotify:///librespot?name=Spotify"
+ ;;
+ *)
+ stream="airplay:///shairport-sync?name=AirPlay"
;;
esac
+HOME="$ADDON_HOME" \
+nice -n "$ss_ni" \
snapserver \
- --controlPort "$ss_cp" \
- --daemon "$ss_ni" \
- --port "$ss_sp" \
- $ss_us
+ --controlPort "$ss_cp" \
+ --port "$ss_sp" \
+ --stream "$stream" \
+ > /dev/null
diff --git a/packages/addons/service/snapserver/source/config/pulseaudio.conf b/packages/addons/service/snapserver/source/config/pulseaudio.conf
new file mode 100644
index 0000000000..a797abef70
--- /dev/null
+++ b/packages/addons/service/snapserver/source/config/pulseaudio.conf
@@ -0,0 +1,6 @@
+### Pulseaudio reads this file when it starts-up
+### Uncomment or add options if you know what you are doing
+
+#resample-method = soxr-vhq
+#default-sample-format = s16le
+#default-sample-rate = 48000
diff --git a/packages/addons/service/snapserver/source/resources/language/English/strings.po b/packages/addons/service/snapserver/source/resources/language/English/strings.po
index 2ee26e3825..e05d5b99d3 100644
--- a/packages/addons/service/snapserver/source/resources/language/English/strings.po
+++ b/packages/addons/service/snapserver/source/resources/language/English/strings.po
@@ -6,7 +6,7 @@ msgid ""
msgstr ""
msgctxt "#30000"
-msgid "Snapserver"
+msgid "Configuration"
msgstr ""
msgctxt "#30001"
@@ -22,9 +22,5 @@ msgid "Priority"
msgstr ""
msgctxt "#30004"
-msgid "Preset"
-msgstr ""
-
-msgctxt "#30005"
msgid "Stream"
msgstr ""
diff --git a/packages/addons/service/snapserver/source/resources/settings.xml b/packages/addons/service/snapserver/source/resources/settings.xml
index 2a1ea8583a..ddf0e292e6 100644
--- a/packages/addons/service/snapserver/source/resources/settings.xml
+++ b/packages/addons/service/snapserver/source/resources/settings.xml
@@ -3,8 +3,7 @@
-
-
-
+
+
diff --git a/packages/addons/service/snapserver/source/settings-default.xml b/packages/addons/service/snapserver/source/settings-default.xml
index c414a13335..f171ffd427 100644
--- a/packages/addons/service/snapserver/source/settings-default.xml
+++ b/packages/addons/service/snapserver/source/settings-default.xml
@@ -1,7 +1,6 @@
-
-
+
diff --git a/packages/addons/service/snapserver/source/system.d/service.snapserver.service b/packages/addons/service/snapserver/source/system.d/service.snapserver.service
index 09232a23f5..2f83b72754 100644
--- a/packages/addons/service/snapserver/source/system.d/service.snapserver.service
+++ b/packages/addons/service/snapserver/source/system.d/service.snapserver.service
@@ -4,8 +4,8 @@ After=kodi.service network-online.target sound.target
Requires=kodi.service network-online.target sound.target
[Service]
-Type=forking
ExecStart=/bin/sh /storage/.kodi/addons/service.snapserver/bin/snapserver.start
+Restart=always
[Install]
WantedBy=kodi.target