1 #!/bin/sh /etc/rc.common
2 # Copyright (C) 2015 OpenWrt.org
8 PROG
=/usr
/bin
/squeezelite
11 # Auto config checks for existing codec installations if not specified in config
12 # Explicit disable (override) by setting appropriate "decode_xxx" in config
15 config_get_bool auto_conf options
"decoder_auto_conf" 1
16 config_get_bool codec options
"$1" $auto_conf
18 if [ $codec -ne 0 ] ; then
19 if [ $auto_conf -eq 0 ] ; then
23 if [ -e "/usr/lib/${2}" ] ; then
24 # Use codec (it exists)
48 config_get name options name
"SqueezeWrt"
49 cmdline
="$cmdline -n $name"
51 config_get model_name options model_name
"SqueezeLite"
52 cmdline
="$cmdline -M $model_name"
54 config_get interface options interface
""
55 [ -n "$interface" ] && cmdline
="$cmdline -I $interface"
57 config_get device options device
""
58 [ -n "$device" ] && cmdline
="$cmdline -o $device"
60 config_get alsa_buffer options alsa_buffer
200
61 [ $alsa_buffer -eq 0 ] && alsa_buffer
="200"
63 config_get alsa_period options alsa_period
4
64 [ $alsa_period -eq 0 ] && alsa_period
="4"
66 config_get alsa_format options alsa_format
16
67 [ $alsa_format = "0" ] && alsa_format
="16"
69 config_get alsa_mmap options alsa_mmap
0
70 cmdline
="$cmdline -a $alsa_buffer:$alsa_period:$alsa_format:$alsa_mmap"
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"
76 config_get max_sr options max_sr
0
77 if [ $max_sr -ne 0 ] ; then
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"
86 config_get close_delay options close_delay
0
87 [ $close_delay -ne 0 ] && cmdline
="$cmdline -C $close_delay"
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"
95 config_get priority options priority
0
96 [ $priority -ne 0 ] && cmdline
="$cmdline -p $priority"
99 # ***NOTE: codec lib names are in squeezelite.h (set decode_auto_conf to 0 to ignore)
102 local vorbis_lib
="libvorbisidec.so.1"
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"`
108 [ -e "/usr/lib/$vorbis_lib" ] || vorbis_lib
="libvorbisfile.so.3"
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"
114 config_get dop options dsd_over_pcm
0
115 [ $dop -eq 1 ] && cmdline
="$cmdline -D"
119 config_load squeezelite
121 config_get_bool enabled options
'enabled' 0
122 [ $enabled -eq 0 ] && return
124 # Build command params
128 logger
-t 'squeezelite' "$cmdline"
129 procd_set_param
command "$PROG" $cmdline
133 # Wait for service to exit and release sockets