.gear/rules | 3 + .../tags/4fefa67849d4eb17af853d6964200f660de32454 | 13 ++ .gear/tags/list | 1 + Makefile | 6 +- Makefile.defs.sh | 4 +- config.c | 2 +- config.h | 2 +- getstream.8 | 30 +++ getstream.conf | 230 +++++++++++++++++++++ getstream.h | 2 +- getstream.init | 93 +++++++++ getstream.spec | 75 +++++++ libhttp.c | 10 +- libhttp.h | 3 +- output.h | 2 +- output_http.c | 2 +- 16 files changed, 463 insertions(+), 15 deletions(-) diff --git a/.gear/rules b/.gear/rules new file mode 100644 index 0000000..a68f429 --- /dev/null +++ b/.gear/rules @@ -0,0 +1,3 @@ +spec: getstream.spec +tar: @version@:. +diff: @version@:. . diff --git a/.gear/tags/4fefa67849d4eb17af853d6964200f660de32454 b/.gear/tags/4fefa67849d4eb17af853d6964200f660de32454 new file mode 100644 index 0000000..3ab812c --- /dev/null +++ b/.gear/tags/4fefa67849d4eb17af853d6964200f660de32454 @@ -0,0 +1,13 @@ +object b71cdf5fd80d109c6e3725b2d42307167e53f389 +type commit +tag 20120411 +tagger Alexei Takaseev 1338037194 +0900 + +20120411 +-----BEGIN PGP SIGNATURE----- +Version: GnuPG v1.4.12 (GNU/Linux) + +iEYEABECAAYFAk/A08oACgkQ/bd21Jt2ne89KACdHSbf5iKO3IKEBVLq4olIw3sf +qO0An2TX9G5VsEPzF+i3Sqi7A0iZOuMO +=j54N +-----END PGP SIGNATURE----- diff --git a/.gear/tags/list b/.gear/tags/list new file mode 100644 index 0000000..361ded3 --- /dev/null +++ b/.gear/tags/list @@ -0,0 +1 @@ +4fefa67849d4eb17af853d6964200f660de32454 20120411 diff --git a/Makefile b/Makefile index bb533c1..7f30517 100644 --- a/Makefile +++ b/Makefile @@ -7,7 +7,7 @@ else CFLAGS+=-O0 -g endif -LDFLAGS=-lpthread +LDLIBS=-lpthread MDEFS := $(shell sh Makefile.defs.sh >Makefile.defs) include Makefile.defs @@ -26,10 +26,10 @@ OBJ-tsdecode=tsdecode.o psi.o crc32.o all: getstream tsdecode tsdecode: $(OBJ-tsdecode) - gcc -o $@ $+ $(LDFLAGS) + gcc -o $@ $+ $(LDLIBS) getstream: $(OBJ-getstream) - gcc -o $@ $+ $(LDFLAGS) + gcc -o $@ $+ $(LDLIBS) clean: -rm -f $(OBJ-getstream) $(OBJ-tsdecode) diff --git a/Makefile.defs.sh b/Makefile.defs.sh index 9d065f2..3c2a13a 100644 --- a/Makefile.defs.sh +++ b/Makefile.defs.sh @@ -1,5 +1,5 @@ echo CFLAGS+=`pkg-config --cflags glib-2.0` -echo LDFLAGS+=`pkg-config --libs glib-2.0` +echo LDLIBS+=`pkg-config --libs glib-2.0` libeventlibs=`pkg-config --libs libevent 2>/dev/null` libeventcflags=`pkg-config --cflags libevent 2>/dev/null` @@ -13,4 +13,4 @@ if [ -z "${libeventlibs}" ]; then fi echo CFLAGS+=${libeventcflags} -echo LDFLAGS+=${libeventlibs} +echo LDLIBS+=${libeventlibs} diff --git a/config.c b/config.c index 0a6a502..11498a2 100644 --- a/config.c +++ b/config.c @@ -10,7 +10,7 @@ #include #include -#include +#include #include "config.h" #include "libconf.h" diff --git a/config.h b/config.h index b035851..f899174 100644 --- a/config.h +++ b/config.h @@ -1,5 +1,5 @@ -#include +#include #include "getstream.h" diff --git a/getstream.8 b/getstream.8 new file mode 100644 index 0000000..5a2b6bc --- /dev/null +++ b/getstream.8 @@ -0,0 +1,30 @@ +.TH GETSTREAM 8 "2007-06-06" "20070419" "Lightweight DVB Streaming tool" + +.SH NAME +GETSTREAM \- Lightweight DVB Streaming tool + +.SH SYNOPSIS +.B getstream +.I [OPTION] + +.SH DESCRIPTION +.B GETSTREAM +is a lightweight tool that streams a full DVB-S transponder into individual Multicast +groups, one per program into the local area network. +symbol tables. + +.SH OPTIONS +.IP -d +Start GetStream in debug mode. +.IP "-c config-file" +Mandatory path to the configuration file. See the package documentation for examples. + +.SH SEE ALSO +.BR Website + + +.SH AUTHOR +GETSTREAM was writter by Florian Lohoff +.PP +This manual page was writter by Herve Rousseau , for the +Debian project (but may be used by others). diff --git a/getstream.conf b/getstream.conf new file mode 100644 index 0000000..b5b97af --- /dev/null +++ b/getstream.conf @@ -0,0 +1,230 @@ + +http { + port 8001; +}; + +adapter 0 { + packet-buffer 50; + stat-interval 120; + + dvb-s { + #lnb-sharing yes; + lnb { + lof1 9750000; + lof2 10600000; + slof 11700000; + }; + + transponder { + frequency 10995000; + polarisation v; + symbol-rate 20000000; + }; + }; + stream { + name "Perviy kanal"; + input { + pnr 13; + }; + output-http { + url /tv/1.ts; + }; + output-udp { + remote-address 239.255.1.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "Perviy kanal"; + }; + }; + }; + + stream { + name "Telekanal Rossiya"; + input { + pnr 14; + }; + output-http { + url /tv/2.ts; + }; + output-udp { + remote-address 239.255.2.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "Telekanal Rossiya"; + }; + }; + }; + + stream { + name "Kultura"; + input { + pnr 15; + }; + output-http { + url /tv/3.ts; + }; + output-udp { + remote-address 239.255.3.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "Kultura"; + }; + }; + }; + stream { + name "STS"; + input { + pnr 16; + }; + output-http { + url /tv/4.ts; + }; + output-udp { + remote-address 239.255.4.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "STS"; + }; + }; + }; + + stream { + name "TNT"; + input { + pnr 17; + }; + output-http { + url /tv/5.ts; + }; + output-udp { + remote-address 239.255.5.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "TNT"; + }; + }; + }; + + stream { + name "Muz TV"; + input { + pnr 18; + }; + output-http { + url /tv/6.ts; + }; + output-udp { + remote-address 239.255.6.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "Muz TV"; + }; + }; + }; + stream { + name "TNV Tatarstan"; + input { + pnr 19; + }; + output-http { + url /tv/7.ts; + }; + output-udp { + remote-address 239.255.7.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "TNV Tatarstan"; + }; + }; + }; + + stream { + name "Domashniy"; + input { + pnr 20; + }; + output-http { + url /tv/8.ts; + }; + output-udp { + remote-address 239.255.8.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "Domashniy"; + }; + }; + }; + + stream { + name "TV Centr"; + input { + pnr 21; + }; + output-http { + url /tv/9.ts; + }; + output-udp { + remote-address 239.255.9.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "TV Centr"; + }; + }; + }; + stream { + name "Sport"; + input { + pnr 22; + }; + output-http { + url /tv/10.ts; + }; + output-udp { + remote-address 239.255.10.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "Sport"; + }; + }; + }; + + stream { + name "5 kanal"; + input { + pnr 23; + }; + output-http { + url /tv/11.ts; + }; + output-udp { + remote-address 239.255.11.1; + remote-port 3000; + sap { + scope global; + ttl 4; + playgroup "5 kanal"; + }; + }; + } + +}; diff --git a/getstream.h b/getstream.h index e67a16b..d5111c1 100644 --- a/getstream.h +++ b/getstream.h @@ -10,7 +10,7 @@ #include #include -#include +#include #include "sap.h" #include "psi.h" diff --git a/getstream.init b/getstream.init new file mode 100755 index 0000000..dec4faa --- /dev/null +++ b/getstream.init @@ -0,0 +1,93 @@ +#!/bin/sh +# +### BEGIN INIT INFO +# Provides: getstream +# Required-Start: $network $syslog +# Should-Start: +# Required-Stop: +# Default-Start: +# Default-Stop: +# Description: getstream is a Lightweight DVB Streaming tool +### END INIT INFO + +# +# getstream: This is an init script for ALT Linux distribution. +# +# chkconfig: 345 42 10 +# description: getstream is a Lightweight DVB Streaming tool + +# Source function library. +WITHOUT_RC_COMPAT=1 + +. /etc/rc.d/init.d/functions + +[ -x /usr/bin/getstream ] || exit 0 + +LOCKFILE="/var/lock/subsys/getstream" +PIDFILE="/var/run/getstream.pid" +RETVAL=0 + +start() +{ + touch "$PIDFILE" + chown getstream "$PIDFILE" + if start-stop-daemon --start --test --quiet --pidfile "$PIDFILE" \ + --user getstream --exec /usr/bin/getstream >/dev/null; then + action "Starting getstream:" \ + start-stop-daemon --start --pidfile "$PIDFILE" --make-pidfile \ + --background --chuid getstream --exec /usr/bin/getstream -- -c /etc/getstream.conf + else + msg_already_running getstream + passed "getstream startup" + echo + fi + RETVAL=$? + [ "$RETVAL" -ne 0 ] || touch "$LOCKFILE" + return $RETVAL +} + +stop() +{ + action "Stopping getstream:" \ + start-stop-daemon --stop --pidfile "$PIDFILE" --user getstream --exec /usr/bin/getstream + RETVAL=$? + [ "$RETVAL" -ne 0 ] || rm -f -- "$LOCKFILE" "$PIDFILE" + return $RETVAL + +} + +restart() +{ + stop + start +} + +case "$1" in + start) + start + ;; + stop) + stop + ;; + status) + status getstream + ;; + restart) + restart + ;; + condstop) + if [ -e "$LOCKFILE" ]; then + stop + fi + ;; + condrestart) + if [ -e "$LOCKFILE" ]; then + restart + fi + ;; + *) + echo "Usage: getstream {start|stop|status|restart|condstop|condrestart}" + RETVAL=1 +esac + +exit $RETVAL diff --git a/getstream.spec b/getstream.spec new file mode 100644 index 0000000..7eb9a22 --- /dev/null +++ b/getstream.spec @@ -0,0 +1,75 @@ +Name: getstream +Summary: DVB to multicast streamer +Version: 20120411 +Release: alt4 +License: GPL +Group: Networking/Other +Source: %name-%version.tar +Patch0: %name-%version-%release.patch +# Automatically added by buildreq on Thu Nov 12 2009 +BuildRequires: glib2-devel libevent-devel + +Packager: Alexei Takaseev + +Url: http://silicon-verl.de/home/flo/projects/streaming/ + +%description +getstream is an DVB to multicast or unicast streamer +Features provided by getstream: + * Full transponder streaming + * DVB-T/C/S/S2 support (S2 only via multiproto API) + * UDP or RTP multicast streaming + * SAP/SDP Announcements (VLC Compatible) for multicast streams + * HTTP streaming for unicast setups + * High optimization for multiple transponders per machine + +%prep +%setup -q +%patch0 -p1 + +%build +%make LIBDIR=%_lib + +%install + +install -pm0755 -D %name %buildroot%_bindir/%name +install -pm0755 -D %name.init %buildroot%_sysconfdir/rc.d/init.d/%name +install -pm0644 -D %name.conf %buildroot%_sysconfdir/ +install -pm0644 -D %name.8 %buildroot%_mandir/man8/%name.8 +mkdir -p %buildroot%_localstatedir/%name + +%pre +/usr/sbin/useradd -G video -s /bin/false -r -c "user for getstream" -d /var/lib/getstream getstream &>/dev/null ||: + +%files +%doc README configs +%_bindir/%name +%_mandir/*/* +%_sysconfdir/rc.d/init.d/%name +%config %attr(644,root,root) %_sysconfdir/getstream.conf +%dir %_localstatedir/%name + +%changelog +* Fri Mar 29 2019 Alexei Takaseev 20120411-alt4 +- Change BR to libevent-devel + +* Tue Feb 26 2019 Alexei Takaseev 20120411-alt3 +- rebuilt with libevent2.1 + +* Thu Aug 09 2012 Alexei Takaseev 20120411-alt2 +- Add lsb-init headers to startscripts + +* Sat May 26 2012 Alexei Takaseev 20120411-alt1 +- new version + +* Wed Apr 04 2012 Eugeny A. Rostovtsev (REAL) 20100816-alt1.2 +- Fixed built with new glib2 + +* Sat Jun 25 2011 Igor Vlasenko 20100816-alt1.1 +- rebuilt with libevent2 + +* Tue Sep 28 2010 Anton Farygin 20100816-alt1 +- new version + +* Thu Nov 12 2009 Anton Farygin 20090226-alt1 +- first build for Sisyphus diff --git a/libhttp.c b/libhttp.c index 8d1105c..be9fbb4 100644 --- a/libhttp.c +++ b/libhttp.c @@ -13,7 +13,7 @@ #include #include -#include +#include #include "libhttp.h" @@ -556,11 +556,15 @@ struct http_server *http_init(int port) { hs->sin.sin_addr.s_addr=INADDR_ANY; if (bind(hs->fd, (struct sockaddr *) &hs->sin, - sizeof(struct sockaddr_in))) + sizeof(struct sockaddr_in))) { + free(hs); return NULL; + } - if (listen(hs->fd, 3)) + if (listen(hs->fd, 3)) { + free(hs); return NULL; + } flags=fcntl(hs->fd, F_GETFL); fcntl(hs->fd, F_GETFL, flags | O_NONBLOCK); diff --git a/libhttp.h b/libhttp.h index 6c4b7a5..a88f59f 100644 --- a/libhttp.h +++ b/libhttp.h @@ -7,8 +7,7 @@ #include #include -#include -#include +#include #define MAX_HEADER_SIZE 3000 diff --git a/output.h b/output.h index d11b2a1..4fc6f20 100644 --- a/output.h +++ b/output.h @@ -4,7 +4,7 @@ #include "getstream.h" #include "libhttp.h" -#include +#include #include diff --git a/output_http.c b/output_http.c index eddd22e..cebf59d 100644 --- a/output_http.c +++ b/output_http.c @@ -5,7 +5,7 @@ #include #include -#include +#include #include "output.h" #include "simplebuffer.h"