lede-packages-rs

git clone git://archive.git.mtrnord.blog/MTRNord/lede-packages-rs.git
Log | Files | Refs | README | LICENSE

squeezelite.init (3565B)


      1 #!/bin/sh /etc/rc.common
      2 # Copyright (C) 2015 OpenWrt.org
      3 
      4 START=99
      5 STOP=1
      6 
      7 USE_PROCD=1
      8 PROG=/usr/bin/squeezelite
      9 
     10 #
     11 # Auto config checks for existing codec installations if not specified in config
     12 # Explicit disable (override) by setting appropriate "decode_xxx" in config
     13 #
     14 checkcodec() {
     15 	config_get_bool auto_conf options "decoder_auto_conf" 1
     16 	config_get_bool codec options "$1" $auto_conf
     17 	
     18 	if [ $codec -ne 0 ] ; then 
     19 		if [ $auto_conf -eq 0 ] ; then
     20 			#force use requested
     21 			echo "$4"
     22 		else
     23 			if [ -e "/usr/lib/${2}" ] ; then
     24 				# Use codec (it exists)
     25 				echo "$4"
     26 			else
     27  				#exclude non-existant
     28 			        if [ -z "$4" ] ; then
     29 			                echo "-e $3"
     30 			        else
     31 			                echo "$4,$3"
     32 			        fi
     33 			fi
     34 		fi
     35 	else
     36 		# explicitly excluded
     37 	        if [ -z "$4" ] ; then
     38 	                echo "-e $3"
     39 	        else
     40 	                echo "$4,$3"
     41 	        fi
     42 	fi
     43 }
     44 
     45 make_cmdline() {
     46 	cmdline=""
     47 
     48 	config_get name options name "SqueezeWrt"
     49 	cmdline="$cmdline -n $name"
     50 
     51 	config_get model_name options model_name "SqueezeLite"
     52 	cmdline="$cmdline -M $model_name"
     53 
     54 	config_get interface options interface ""
     55 	[ -n "$interface" ] && cmdline="$cmdline -I $interface"
     56 
     57 	config_get device options device ""
     58 	[ -n "$device" ] && cmdline="$cmdline -o $device"
     59 
     60 	config_get alsa_buffer options alsa_buffer 200
     61 	[ $alsa_buffer -eq 0 ] && alsa_buffer="200"
     62     
     63 	config_get alsa_period options alsa_period 4
     64 	[ $alsa_period -eq 0 ] && alsa_period="4"
     65     
     66 	config_get alsa_format options alsa_format 16
     67 	[ $alsa_format = "0" ] && alsa_format="16"
     68 
     69 	config_get alsa_mmap options alsa_mmap 0
     70 	cmdline="$cmdline -a $alsa_buffer:$alsa_period:$alsa_format:$alsa_mmap"
     71 
     72 	config_get stream_bufsiz options stream_bufsiz 2048
     73 	config_get out_bufsiz options out_bufsiz 3763
     74 	cmdline="$cmdline -b $stream_bufsiz:$out_bufsiz"
     75 
     76 	config_get max_sr options max_sr 0
     77 	if [ $max_sr -ne 0 ] ; then
     78 		max_sr="-r $max_sr"
     79 
     80 		config_get sr_delay options sr_delay 0
     81 		[ $sr_delay -ne 0 ] && 	max_sr="$max_sr:$sr_delay"
     82 		cmdline="$cmdline $max_sr"
     83 	fi
     84 
     85 
     86 	config_get close_delay options close_delay 0
     87 	[ $close_delay -ne 0 ] && cmdline="$cmdline -C $close_delay"
     88 
     89 	config_get server_addr options server_addr ""
     90 	if [ -n "$server_addr" ] ; then
     91 		config_get server_port options server_port 3483
     92 		cmdline="$cmdline -s $server_addr:$server_port"
     93 	fi
     94 
     95 	config_get priority options priority 0
     96 	[ $priority -ne 0 ] && cmdline="$cmdline -p $priority"
     97 
     98 	#
     99 	# ***NOTE: codec lib names are in squeezelite.h (set decode_auto_conf to 0 to ignore)
    100 	#
    101 	local excl_codecs=""
    102 	local vorbis_lib="libvorbisidec.so.1"
    103 
    104 	excl_codecs=`checkcodec decode_flac "libFLAC.so.8" flac "$excl_codecs"`
    105 	excl_codecs=`checkcodec decode_mp3 "libmad.so.0" mp3 "$excl_codecs"`
    106 	excl_codecs=`checkcodec decode_aac "libfaad.so.2" aac "$excl_codecs"`
    107 
    108 	[ -e "/usr/lib/$vorbis_lib" ] || vorbis_lib="libvorbisfile.so.3"
    109 
    110 	excl_codecs=`checkcodec decode_ogg "$vorbis_lib" ogg "$excl_codecs"`
    111 	excl_codecs=`checkcodec decode_wma_alac "libavcodec.so.56" wma,alac "$excl_codecs"`
    112 	cmdline="$cmdline $excl_codecs"
    113 
    114 	config_get dop options dsd_over_pcm 0
    115 	[ $dop -eq 1 ] && cmdline="$cmdline -D"
    116 }
    117 
    118 start_service() {
    119 	config_load squeezelite
    120 
    121 	config_get_bool enabled options 'enabled' 0
    122 	[ $enabled -eq 0 ] && return
    123 
    124 	# Build command params
    125 	make_cmdline
    126 
    127 	procd_open_instance
    128 	logger -t 'squeezelite' "$cmdline"
    129 	procd_set_param command "$PROG" $cmdline
    130 	procd_close_instance
    131 }
    132 
    133 # Wait for service to exit and release sockets
    134 reload_service() {
    135 	stop
    136 	sleep 2
    137 	start
    138 }
    139 
    140 restart() {
    141 	reload_service
    142 }