[packages] mjpg-streamer: upgrade package
authorLuka Perkov <luka@openwrt.org>
Mon, 23 Sep 2013 21:59:42 +0000 (21:59 +0000)
committerLuka Perkov <luka@openwrt.org>
Mon, 23 Sep 2013 21:59:42 +0000 (21:59 +0000)
Changes include:

* version bump to r181
* convert init script so it can use procd
* add menu so one can select only desired features

Signed-off-by: Luka Perkov <luka@openwrt.org>
SVN-Revision: 38143

multimedia/mjpg-streamer/Config.in [new file with mode: 0644]
multimedia/mjpg-streamer/Makefile
multimedia/mjpg-streamer/files/mjpg-streamer.config
multimedia/mjpg-streamer/files/mjpg-streamer.hotplug
multimedia/mjpg-streamer/files/mjpg-streamer.init

diff --git a/multimedia/mjpg-streamer/Config.in b/multimedia/mjpg-streamer/Config.in
new file mode 100644 (file)
index 0000000..0154085
--- /dev/null
@@ -0,0 +1,23 @@
+if PACKAGE_mjpg-streamer
+
+config MJPG_STREAMER_INPUT_FILE
+       bool "Install input file library"
+       default y
+
+config MJPG_STREAMER_INPUT_UVC
+       bool "Install input uvc library"
+       default y
+
+config MJPG_STREAMER_OUTPUT_FILE
+       bool "Install output file library"
+       default y
+
+config MJPG_STREAMER_OUTPUT_HTTP
+       bool "Install output http library"
+       default y
+
+config MJPG_STREAMER_WWW
+       bool "Install WWW files"
+       default y
+
+endif
index f97e03958893eb8c5d20b6a4be9d49200e487c0f..01b5cdc5f06131c0456576d1429ada4741723b01 100644 (file)
@@ -1,5 +1,5 @@
 #
-# Copyright (C) 2006-2011 OpenWrt.org
+# Copyright (C) 2006-2013 OpenWrt.org
 #
 # This is free software, licensed under the GNU General Public License v2.
 # See /LICENSE for more information.
@@ -8,9 +8,9 @@
 include $(TOPDIR)/rules.mk
 
 PKG_NAME:=mjpg-streamer
-PKG_REV:=148
+PKG_REV:=181
 PKG_VERSION:=r$(PKG_REV)
-PKG_RELEASE:=4
+PKG_RELEASE:=1
 
 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.bz2
 PKG_SOURCE_URL:=https://svn.code.sf.net/p/mjpg-streamer/code/mjpg-streamer
@@ -26,14 +26,23 @@ define Package/mjpg-streamer
   TITLE:=MJPG-streamer
   DEPENDS:=+libpthread +libjpeg
   URL:=http://mjpg-streamer.wiki.sourceforge.net/
+  MENU:=1
 endef
 
 define Package/mjpg-streamer/description
-       Streaming application for Linux-UVC compatible webcams
+ Streaming application for Linux-UVC compatible webcams
+endef
+
+define Package/mjpg-streamer/config
+  source "$(SOURCE)/Config.in"
 endef
 
 EXTRA_CFLAGS += $(TARGET_CPPFLAGS) $(TARGET_LDFLAGS)
 
+define Package/mjpg-streamer/conffiles
+/etc/config/mjpg-streamer
+endef
+
 define Package/mjpg-streamer/install
        $(INSTALL_DIR) $(1)/usr/bin
        $(INSTALL_BIN) $(PKG_BUILD_DIR)/mjpg_streamer $(1)/usr/bin/
@@ -41,17 +50,25 @@ define Package/mjpg-streamer/install
        $(CP) ./files/mjpg-streamer.config $(1)/etc/config/mjpg-streamer
        $(INSTALL_DIR) $(1)/etc/init.d
        $(INSTALL_BIN) ./files/mjpg-streamer.init $(1)/etc/init.d/mjpg-streamer
-       $(INSTALL_DIR) $(1)/usr/lib
-       $(CP) $(foreach input_plugin,file uvc,$(PKG_BUILD_DIR)/input_$(input_plugin).so) $(1)/usr/lib
-       $(CP) $(foreach output_plugin,http file,$(PKG_BUILD_DIR)/output_$(output_plugin).so) $(1)/usr/lib
        $(INSTALL_DIR) $(1)/etc/hotplug.d/usb
        $(INSTALL_DATA) ./files/mjpg-streamer.hotplug $(1)/etc/hotplug.d/usb/20-mjpg-streamer
+       $(INSTALL_DIR) $(1)/usr/lib
+ifeq ($(CONFIG_MJPG_STREAMER_INPUT_FILE),y)
+       $(CP) $(PKG_BUILD_DIR)/input_file.so $(1)/usr/lib
+endif
+ifeq ($(CONFIG_MJPG_STREAMER_INPUT_UVC),y)
+       $(CP) $(PKG_BUILD_DIR)/input_uvc.so $(1)/usr/lib
+endif
+ifeq ($(CONFIG_MJPG_STREAMER_OUTPUT_FILE),y)
+       $(CP) $(PKG_BUILD_DIR)/output_file.so $(1)/usr/lib
+endif
+ifeq ($(CONFIG_MJPG_STREAMER_OUTPUT_HTTP),y)
+       $(CP) $(PKG_BUILD_DIR)/output_http.so $(1)/usr/lib
+endif
+ifeq ($(CONFIG_MJPG_STREAMER_WWW),y)
        $(INSTALL_DIR) $(1)/www/webcam
        $(INSTALL_DATA) $(PKG_BUILD_DIR)/www/* $(1)/www/webcam
-endef
-
-define Package/mjpg-streamer/conffiles
-/etc/config/mjpg-streamer
+endif
 endef
 
 $(eval $(call BuildPackage,mjpg-streamer))
index 5be37ea4f7c228869291474892071505af015948..9ce5c79e453e75fbe9c5733fcca4b91f4add934e 100644 (file)
@@ -1,7 +1,10 @@
-config mjpg-streamer core
-       option enabled          "0"
-       option device           "/dev/video0"
-       option resolution       "640x480"
-       option fps              "5"
-       option www              "/www/webcam"
-       option port             "8080"
+config mjpg-streamer 'core'
+       option enabled '0'
+       option input 'uvc'
+       option output 'http'
+       option device '/dev/video0'
+       option resolution '640x480'
+       option fps '5'
+       option www '/www/webcam'
+       option port '8080'
+
index c6f29cc3dea6943289c8c1d3562ea131450772f6..1443b17352f3246cbd73f3adc9b43dbb6a6b015e 100644 (file)
@@ -1,11 +1,10 @@
 case "$ACTION" in
        add)
-               # start process
+               # start process
                /etc/init.d/mjpg-streamer start
-               ;;
+               ;;
        remove)
-               # stop process
+               # stop process
                /etc/init.d/mjpg-streamer stop
-               ;;
+               ;;
 esac
-
index b0a2043828fcafa7f75040e0be8d825b5c329a1f..550ea4d2f213aa5f983581d89e00585f9525ba3f 100644 (file)
@@ -1,57 +1,83 @@
 #!/bin/sh /etc/rc.common
-# Copyright (C) 2009-2012 OpenWrt.org
+# Copyright (C) 2009-2013 OpenWrt.org
 
-START=50
-
-SERVICE_DAEMONIZE=1
-SERVICE_WRITE_PID=1
+START=90
+STOP=10
 
+USE_PROCD=1
 PROG=/usr/bin/mjpg_streamer
 
 error() {
        echo "${initscript}:" "$@" 1>&2
 }
 
-section_enabled() {
-       config_get_bool enabled "$1" 'enabled' 0
-       [ $enabled -gt 0 ]
-}
-
 start_instance() {
        local s="$1"
 
-       section_enabled "$s" || return 1
+       config_get_bool enabled "$1" 'enabled' 0
+       [ $enabled -eq 0 ] && return
 
-       config_get device "$s" 'device'
-       config_get resolution "$s" 'resolution'
-       config_get fps "$s" 'fps'
-       config_get www "$s" 'www'
-       config_get port "$s" 'port'
+       config_get input "$s" 'input'
+       if [ -z "$input" ]; then
+               error "in section '$s' option input is missing"
+               return 1
+       fi
 
-       [ -c "$device" ] || {
-               error "device '$device' does not exist"
+       config_get output "$s" 'output'
+       if [ -z "$output" ]; then
+               error "in section '$s' option output is missing"
                return 1
-       }
+       fi
 
-       service_start /usr/bin/mjpg_streamer --input "input_uvc.so \
-               --device $device --fps $fps --resolution $resolution" \
-               --output "output_http.so --www $www --port $port"
-}
+       local input_arg
+       if [ "x$input" = 'xuvc' ]; then
+               input_arg="input_uvc.so"
 
-stop_instance() {
-       local s="$1"
+               config_get device "$s" 'device'
+               if [ ! -c "$device" ]; then
+                       error "device '$device' does not exist"
+                       return 1
+               fi
+               input_arg="${input_arg} --device $device"
+
+               config_get fps "$s" 'fps'
+               [ -n "$fps" ] && input_arg="${input_arg} --fps $fps"
 
-       section_enabled "$s" || return 1
+               config_get resolution "$s" 'resolution'
+               [ -n "$resolution" ] && input_arg="${input_arg} --resolution $resolution"
+       fi
 
-       service_stop /usr/bin/mjpg_streamer
+       if [ -z "$input_arg" ]; then
+               error "unsuported input option '$input' in section '$s'"
+               return 1
+       fi
+
+       local output_arg
+       if [ "x$output" = 'xhttp' ]; then
+               output_arg="output_http.so"
+
+               config_get port "$s" 'port'
+               [ -n "$port" ] && output_arg="${output_arg} --port $port"
+
+               config_get www "$s" 'www'
+               [ -n "$www" ] && output_arg="${output_arg} --www $www"
+       fi
+
+       if [ -z "$output_arg" ]; then
+               error "unsuported output option '$output' in section '$s'"
+               return 1
+       fi
+
+       procd_open_instance
+       procd_set_param command "$PROG" --input "$input_arg" --output "$output_arg"
+       procd_close_instance
 }
 
-start() {
+start_service() {
        config_load 'mjpg-streamer'
        config_foreach start_instance 'mjpg-streamer'
 }
 
-stop() {
-       config_load 'mjpg-streamer'
-       config_foreach stop_instance 'mjpg-streamer'
+service_triggers() {
+       procd_add_reload_trigger 'mjpg-streamer'
 }