# This is a shell archive. Save it in a file, remove anything before # this line, and then unpack it by entering "sh file". Note, it may # create directories; files and directories will be owned by you and # have default permissions. # # This archive contains: # # Makefile # distinfo # pkg-descr # files/ # files/patch-teletext # echo x - Makefile sed 's/^X//' >Makefile << 'b67911656ef5d18c4ae36cb6741b7965' X# New ports collection makefile for: szap_s2 X# Date created: Wed Apr 14 19:30:36 CEST 2010 X# Whom: Juergen Lock X# X# $FreeBSD: $ X# X XPORTNAME= szap_s2 XPORTVERSION= 20100129s XCATEGORIES= multimedia XMASTER_SITES= ${MASTER_SITE_LOCAL} XMASTER_SITE_SUBDIR= nox/ X XMAINTAINER= nox@FreeBSD.org XCOMMENT= Simple zapping tool for the Linux DVB S2 API X XBUILD_DEPENDS= ${LOCALBASE}/include/linux/dvb/frontend.h:${PORTSDIR}/multimedia/v4l_compat X XUSE_BZIP2= yes XUSE_GMAKE= yes XPATCH_STRIP= -p1 XMAKE_ARGS= INCLUDE=-I"${LOCALBASE}/include" XWRKSRC= ${WRKDIR}/szap-s2-e34f73b254db XPORTDOCS= README XPLIST_FILES= bin/szap-s2 X X.if !defined(NOPORTDOCS) Xpost-install: X ${MKDIR} ${DOCSDIR} X (cd ${WRKSRC} && ${INSTALL_DATA} ${PORTDOCS} ${DOCSDIR}) X.endif X X.include b67911656ef5d18c4ae36cb6741b7965 echo x - distinfo sed 's/^X//' >distinfo << '57677d168a5ec21bdf22c9501f075a8f' XMD5 (szap_s2-20100129s.tar.bz2) = d7ce70f636430e95f16a792d963cc832 XSHA256 (szap_s2-20100129s.tar.bz2) = 69e50c970b874eafe551b3c0e5534875005899d9aaba5c6b43f81264212c1c2b XSIZE (szap_s2-20100129s.tar.bz2) = 9371 57677d168a5ec21bdf22c9501f075a8f echo x - pkg-descr sed 's/^X//' >pkg-descr << '7f9555c3c1089940396b503dd37f3979' Xszap-s2 is a command line channel zapping (i.e. tuning) utility similar Xto szap but including support for S2API a.k.a. DVB API version 5, which Xsupports DVB-S2. When using szap-s2, one instructs it to change the channel Xto one of a list of channels supplied in a channels.conf type file. X XThere is no manpage yet, but you can run szap-s2 without args to get a Xusage message. X Xlocation of channel list file is ~/.szap/channels.conf X Xone line of the szap channel file has the following format: Xname:frequency_MHz:polarization[coderate][delivery][modulation][rolloff]:sat_no:symbolrate:vpid:apid:service_id Xone line of the VDR channel file has the following format: Xname:frequency_MHz:polarization[coderate][delivery][modulation][rolloff]:sat_no:symbolrate:vpid:apid:tpid:?:service_id:?:?:? X XWWW: http://www.linuxtv.org/wiki/index.php/Szap-s2 7f9555c3c1089940396b503dd37f3979 echo c - files/ mkdir -p files/ > /dev/null 2>&1 echo x - files/patch-teletext sed 's/^X//' >files/patch-teletext << '07c7010733c508a9ae42ad13ee55cff0' X--- a/szap-s2.c X+++ b/szap-s2.c X@@ -206,6 +206,7 @@ static char *usage_str = X " -i : run interactively, allowing you to type in channel names\n" X " -p : add pat and pmt to TS recording (implies -r)\n" X " or -n numbers for zapping\n" X+ " -t : add teletext to TS recording (needs -V)\n" X " -S : delivery system type DVB-S=0, DVB-S2=1\n" X " -M : modulation 1=BPSK 2=QPSK 5=8PSK\n" X " -C : fec 0=NONE 12=1/2 23=2/3 34=3/4 35=3/5 45=4/5 56=5/6 67=6/7 89=8/9 910=9/10 999=AUTO\n" X@@ -434,7 +435,8 @@ int check_frontend (int fe_fd, int dvr, X static X int zap_to(unsigned int adapter, unsigned int frontend, unsigned int demux, X unsigned int sat_no, unsigned int freq, unsigned int pol, X- unsigned int sr, unsigned int vpid, unsigned int apid, int sid, X+ unsigned int sr, unsigned int vpid, unsigned int apid, X+ unsigned int tpid, int sid, X int dvr, int rec_psi, int bypass, unsigned int delivery, X int modulation, int fec, int rolloff, int human_readable) X { X@@ -448,7 +450,7 @@ int zap_to(unsigned int adapter, unsigne X }; X X char fedev[128], dmxdev[128], auddev[128]; X- static int fefd, dmxfda, dmxfdv, audiofd = -1, patfd, pmtfd; X+ static int fefd, dmxfda, dmxfdv, dmxfdt = -1, audiofd = -1, patfd, pmtfd; X int pmtpid; X uint32_t ifreq; X int hiband, result; X@@ -475,7 +477,13 @@ int zap_to(unsigned int adapter, unsigne X close(fefd); X return FALSE; X } X- X+ X+ if ((dmxfdt = open(dmxdev, O_RDWR)) < 0) { X+ perror("opening teletext demux failed"); X+ close(fefd); X+ return FALSE; X+ } X+ X if (dvr == 0) /* DMX_OUT_DECODER */ X audiofd = open(auddev, O_RDWR); X X@@ -485,6 +493,7 @@ int zap_to(unsigned int adapter, unsigne X close(audiofd); X close(dmxfda); X close(dmxfdv); X+ close(dmxfdt); X close(fefd); X return FALSE; X } X@@ -495,6 +504,7 @@ int zap_to(unsigned int adapter, unsigne X close(audiofd); X close(dmxfda); X close(dmxfdv); X+ close(dmxfdt); X close(fefd); X return FALSE; X } X@@ -544,6 +554,11 @@ int zap_to(unsigned int adapter, unsigne X result = TRUE; X } X } X+ X+ if (tpid != -1 && !set_demux(dmxfdt, tpid, DMX_PES_TELETEXT, dvr)) { X+ fprintf(stderr, "set_demux DMX_PES_TELETEXT failed\n"); X+ } X+ X check_frontend (fefd, dvr, human_readable); X X if (!interactive) { X@@ -553,6 +568,7 @@ int zap_to(unsigned int adapter, unsigne X close(audiofd); X close(dmxfda); X close(dmxfdv); X+ close(dmxfdt); X close(fefd); X } X X@@ -581,14 +597,14 @@ static int read_channels(const char *fil X int bypass, unsigned int delsys, X int modulation, int fec, int rolloff, X int human_readable, int params_debug, X- int use_vdr_format) X+ int use_vdr_format, int use_tpid) X { X FILE *cfp; X char buf[4096]; X char inp[256]; X char *field, *tmp, *p; X unsigned int line; X- unsigned int freq, pol, sat_no, sr, vpid, apid, sid; X+ unsigned int freq, pol, sat_no, sr, vpid, apid, tpid, sid; X int ret; X int trash; X again: X@@ -751,11 +767,14 @@ again: X if (!apid) X apid = 0x1fff; X X+ tpid = -1; X if (use_vdr_format) { X if (!(field = strsep(&tmp, ":"))) X goto syntax_err; X X- strtoul(field, NULL, 0); X+ if (use_tpid) X+ tpid = strtoul(field, NULL, 0); X+ X if (!(field = strsep(&tmp, ":"))) X goto syntax_err; X X@@ -806,7 +825,7 @@ again: X } X X ret = zap_to(adapter, frontend, demux, sat_no, freq * 1000, X- pol, sr, vpid, apid, sid, dvr, rec_psi, bypass, X+ pol, sr, vpid, apid, tpid, sid, dvr, rec_psi, bypass, X delsys, modulation, fec, rolloff, human_readable); X X if (interactive) X@@ -878,6 +897,8 @@ int main(int argc, char *argv[]) X int human_readable = 0; X int params_debug = 0; X int use_vdr_format = 0; X+ int use_tpid = 0; X+ X X int delsys = -1; X int modulation = -1; X@@ -885,7 +906,7 @@ int main(int argc, char *argv[]) X int rolloff = -1; X X lnb_type = *lnb_enum(0); X- while ((opt = getopt(argc, argv, "M:C:O:HDVhqrpn:a:f:d:S:c:l:xib")) != -1) { X+ while ((opt = getopt(argc, argv, "M:C:O:HDVhqrpn:a:f:d:S:c:l:xibt")) != -1) { X switch (opt) { X case '?': X case 'h': X@@ -951,6 +972,9 @@ int main(int argc, char *argv[]) X case 'V': X use_vdr_format = 1; X break; X+ case 't': X+ use_tpid = 1; X+ break; X case 'i': X interactive = 1; X exit_after_tuning = 1; X@@ -993,7 +1017,8 @@ int main(int argc, char *argv[]) X X if (!read_channels(chanfile, list_channels, chan_no, chan_name, X adapter, frontend, demux, dvr, rec_psi, bypass, delsys, X- modulation, fec, rolloff, human_readable, params_debug, use_vdr_format)) X+ modulation, fec, rolloff, human_readable, params_debug, X+ use_vdr_format, use_tpid)) X X return TRUE; X 07c7010733c508a9ae42ad13ee55cff0 exit