From: Luka Perkov Date: Mon, 23 Sep 2013 21:59:42 +0000 (+0000) Subject: [packages] mjpg-streamer: upgrade package X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fsvn-archive%2Farchive.git;a=commitdiff_plain;hb=8986099d6fb141639e551ab8a67d52ffa4246232 [packages] mjpg-streamer: upgrade package 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 SVN-Revision: 38143 --- diff --git a/multimedia/mjpg-streamer/Config.in b/multimedia/mjpg-streamer/Config.in new file mode 100644 index 0000000000..0154085460 --- /dev/null +++ b/multimedia/mjpg-streamer/Config.in @@ -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 diff --git a/multimedia/mjpg-streamer/Makefile b/multimedia/mjpg-streamer/Makefile index f97e039588..01b5cdc5f0 100644 --- a/multimedia/mjpg-streamer/Makefile +++ b/multimedia/mjpg-streamer/Makefile @@ -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)) diff --git a/multimedia/mjpg-streamer/files/mjpg-streamer.config b/multimedia/mjpg-streamer/files/mjpg-streamer.config index 5be37ea4f7..9ce5c79e45 100644 --- a/multimedia/mjpg-streamer/files/mjpg-streamer.config +++ b/multimedia/mjpg-streamer/files/mjpg-streamer.config @@ -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' + diff --git a/multimedia/mjpg-streamer/files/mjpg-streamer.hotplug b/multimedia/mjpg-streamer/files/mjpg-streamer.hotplug index c6f29cc3de..1443b17352 100644 --- a/multimedia/mjpg-streamer/files/mjpg-streamer.hotplug +++ b/multimedia/mjpg-streamer/files/mjpg-streamer.hotplug @@ -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 - diff --git a/multimedia/mjpg-streamer/files/mjpg-streamer.init b/multimedia/mjpg-streamer/files/mjpg-streamer.init index b0a2043828..550ea4d2f2 100644 --- a/multimedia/mjpg-streamer/files/mjpg-streamer.init +++ b/multimedia/mjpg-streamer/files/mjpg-streamer.init @@ -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' }