aboutsummaryrefslogtreecommitdiffstats
path: root/multimedia
diff options
context:
space:
mode:
authoredwin <edwin@FreeBSD.org>2003-10-06 09:50:23 +0800
committeredwin <edwin@FreeBSD.org>2003-10-06 09:50:23 +0800
commit3962d4b96ae3ef900dd8c2eeb80debbf1560892b (patch)
tree8b68ab321751dbd8029f6cdcb5a15d8df2d9b47d /multimedia
parent93ce8fa1307f4f380a5746eb9932139cdc3fe6b5 (diff)
downloadfreebsd-ports-graphics-3962d4b96ae3ef900dd8c2eeb80debbf1560892b.tar.gz
freebsd-ports-graphics-3962d4b96ae3ef900dd8c2eeb80debbf1560892b.tar.zst
freebsd-ports-graphics-3962d4b96ae3ef900dd8c2eeb80debbf1560892b.zip
new port: multimedia/nxtvepg (electronic tv programme guide, bktr)
This is a new port for nxtvepg, an electronic tv programme guide that extracts its information from special teletext signals. The programming will need a working tv tuner card that is supported by the bktr(4) driver. PR: ports/46847 Submitted by: Simon Barner <barner@in.tum.de>
Diffstat (limited to 'multimedia')
-rw-r--r--multimedia/Makefile1
-rw-r--r--multimedia/nxtvepg/Makefile40
-rw-r--r--multimedia/nxtvepg/distinfo1
-rw-r--r--multimedia/nxtvepg/files/patch-Makefile105
-rw-r--r--multimedia/nxtvepg/files/patch-epgctl::debug.h11
-rw-r--r--multimedia/nxtvepg/files/patch-epgdb::epgnetio.c11
-rw-r--r--multimedia/nxtvepg/files/patch-epgui::menucmd.c11
-rw-r--r--multimedia/nxtvepg/files/patch-epgvbi::btdrv4linux.c153
-rw-r--r--multimedia/nxtvepg/files/patch-tcl2c.c19
-rw-r--r--multimedia/nxtvepg/pkg-descr24
-rw-r--r--multimedia/nxtvepg/pkg-plist7
11 files changed, 383 insertions, 0 deletions
diff --git a/multimedia/Makefile b/multimedia/Makefile
index 689f7187bdc..42b4f18676a 100644
--- a/multimedia/Makefile
+++ b/multimedia/Makefile
@@ -73,6 +73,7 @@
SUBDIR += nautilus-media
SUBDIR += netshow
SUBDIR += nuppelvideo
+ SUBDIR += nxtvepg
SUBDIR += ogle
SUBDIR += ogle-gui
SUBDIR += ogmtools
diff --git a/multimedia/nxtvepg/Makefile b/multimedia/nxtvepg/Makefile
new file mode 100644
index 00000000000..fbea4d1a64d
--- /dev/null
+++ b/multimedia/nxtvepg/Makefile
@@ -0,0 +1,40 @@
+# New ports collection makefile for: nxtvepg-2.4.2
+# Date created: 07 Jan 2003
+# Whom: Simon Barner <barner@gmx.de>
+#
+# $FreeBSD$
+#
+
+PORTNAME= nxtvepg
+PORTVERSION= 2.4.2
+CATEGORIES= multimedia tcl83 tk83
+MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
+MASTER_SITE_SUBDIR=${PORTNAME}
+
+MAINTAINER= barner@gmx.de
+COMMENT= Viewer for Nextview Electronic TV Programme Guide (needs bktr driver)
+
+LIB_DEPENDS= tk83.1:${PORTSDIR}/x11-toolkits/tk83
+
+USE_GMAKE= yes
+USE_XLIB= yes
+USE_X_PREFIX= yes
+
+MAN1= nxtvepg.1
+PORTDOCS= README TODO CHANGES manual.html
+
+.include <bsd.port.pre.mk>
+
+post-install:
+ ${INSTALL_PROGRAM} ${WRKSRC}/nxtvepg ${PREFIX}/bin
+ ${INSTALL_DATA} ${WRKSRC}/Nxtvepg.ad ${PREFIX}/lib/X11/app-defaults/Nxtvepg
+ ${INSTALL_MAN} ${WRKSRC}/nxtvepg.1 ${PREFIX}/man/man1
+
+.if !defined(NOPORTDOCS)
+ @${MKDIR} ${DOCSDIR}
+.for file in ${PORTDOCS}
+ ${INSTALL_DATA} ${WRKSRC}/${file} ${DOCSDIR}
+.endfor
+.endif
+
+.include <bsd.port.post.mk>
diff --git a/multimedia/nxtvepg/distinfo b/multimedia/nxtvepg/distinfo
new file mode 100644
index 00000000000..3cc3f143818
--- /dev/null
+++ b/multimedia/nxtvepg/distinfo
@@ -0,0 +1 @@
+MD5 (nxtvepg-2.4.2.tar.gz) = f711308b4e81c8bc1d2384b2d98d45d9
diff --git a/multimedia/nxtvepg/files/patch-Makefile b/multimedia/nxtvepg/files/patch-Makefile
new file mode 100644
index 00000000000..d9651c5abdf
--- /dev/null
+++ b/multimedia/nxtvepg/files/patch-Makefile
@@ -0,0 +1,105 @@
+--- Makefile.orig Sun Dec 8 21:18:25 2002
++++ Makefile Wed Jan 8 00:31:16 2003
+@@ -32,12 +32,24 @@
+ include Makefile.win32
+ else
+
++ifndef X11BASE
++ X11BASE=/usr/X11R6
++endif
++
++ifndef LOCALBASE
++ LOCALBASE=/usr/local
++endif
++
++ifndef PREFIX
++ PREFIX=$(X11BASE)
++endif
++
+ ROOT =
+-prefix = /usr/local
++prefix = $(PREFIX)
+ exec_prefix = ${prefix}
+ bindir = $(ROOT)${exec_prefix}/bin
+ mandir = $(ROOT)${prefix}/man/man1
+-resdir = $(ROOT)/usr/X11R6/lib/X11
++resdir = $(ROOT)$(X11BASE)/lib/X11
+
+ # if you have perl set the path here, else just leave it alone
+ PERL = /usr/bin/perl
+@@ -45,22 +57,25 @@
+ # select Tcl/Tk version
+ TCL_VER = 8.3
+
+-LDLIBS = -ltk$(TCL_VER) -ltcl$(TCL_VER) -L/usr/X11R6/lib -lX11 -lXmu -lm -ldl
++LDLIBS = -L$(LOCALBASE)/lib -L$(LOCALBASE)/lib/tcl83 -L$(LOCALBASE)/lib/tk83\
++ -ltk83 -ltcl83 -L$(X11BASE)/lib -lX11 -lXmu -lm
+
+ # use static libraries for debugging only
+ #LDLIBS += -Ldbglib -static
+
+-INCS += -I. -I/usr/X11R6/include
++INCS += -I. -I$(X11BASE)/include -I$(LOCALBASE)/include/tcl8.3\
++ -I$(LOCALBASE)/include/tk8.3 -I $(LOCALBASE)//include
++
+ # path to Tcl/Tk headers, if not properly installed
+ #INCS += -I/usr/local/tcl/tcl8.0/generic -I/usr/local/tcl/tk8.0/generic
+
+ # path to Tcl/Tk script library (Tk is usually in X11/lib/tk#.#)
+-DEFS += -DTK_LIBRARY_PATH=\"/usr/lib/tk$(TCL_VER)\"
+-DEFS += -DTCL_LIBRARY_PATH=\"/usr/lib/tcl$(TCL_VER)\"
++DEFS += -DTK_LIBRARY_PATH=\"$(LOCALBASE)/lib/tk$(TCL_VER)\"
++DEFS += -DTCL_LIBRARY_PATH=\"$(LOCALBASE)/lib/tcl$(TCL_VER)\"
+
+ # enable use of multi-threading
+ DEFS += -DUSE_THREADS
+-LDLIBS += -lpthread
++LDLIBS += -pthread
+
+ # enable use of daemon and client/server connection
+ DEFS += -DUSE_DAEMON
+@@ -68,10 +83,10 @@
+ # The database directory can be either in the user's $HOME (or relative to any
+ # other env variable) or at a global place like /var/spool (world-writable)
+ # -> uncomment 2 lines below to put the databases in the user's home
+-#USER_DBDIR = .nxtvdb
+-#DEFS += -DEPG_DB_ENV=\"HOME\" -DEPG_DB_DIR=\"$(USER_DBDIR)\"
++USER_DBDIR = .nxtvdb
++DEFS += -DEPG_DB_ENV=\"HOME\" -DEPG_DB_DIR=\"$(USER_DBDIR)\"
+ ifndef USER_DBDIR
+-SYS_DBDIR = /usr/tmp/nxtvdb
++SYS_DBDIR = /var/tmp/nxtvdb
+ DEFS += -DEPG_DB_DIR=\"$(SYS_DBDIR)\"
+ INST_DB_DIR = $(ROOT)$(SYS_DBDIR)
+ INST_DB_PERM = 0777
+@@ -79,8 +94,8 @@
+
+ WARN = -Wall -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes
+ #WARN += -Wpointer-arith -Werror
+-CC = gcc
+-CFLAGS = -pipe $(WARN) $(INCS) $(DEFS) -O6
++CC ?= gcc
++CFLAGS += -pipe $(WARN) $(INCS) $(DEFS)
+ #LDLIBS += -pg
+
+ # ----- don't change anything below ------------------------------------------
+@@ -109,18 +124,7 @@
+ nxtvepg: $(OBJS)
+ $(CC) $(LDFLAGS) -o nxtvepg $(OBJS) $(LDLIBS)
+
+-install: nxtvepg nxtvepg.1 Nxtvepg.ad
+- test -d $(bindir) || mkdirhier $(bindir)
+- test -d $(mandir) || mkdirhier $(mandir)
+- test -d $(resdir) || mkdirhier $(resdir)
+-ifndef USER_DBDIR
+- test -d $(INST_DB_DIR) || mkdirhier $(INST_DB_DIR)
+- chmod $(INST_DB_PERM) $(INST_DB_DIR)
+-endif
+- install -c -m 0755 nxtvepg $(bindir)
+- install -c -m 0644 nxtvepg.1 $(mandir)
+- install -c -m 0644 Nxtvepg.ad $(resdir)/app-defaults/Nxtvepg
+- rm -f $(mandir)/nxtvepg.1x
++install:
+
+ .SUFFIXES: .c .o .tcl
+
diff --git a/multimedia/nxtvepg/files/patch-epgctl::debug.h b/multimedia/nxtvepg/files/patch-epgctl::debug.h
new file mode 100644
index 00000000000..496eb72eb01
--- /dev/null
+++ b/multimedia/nxtvepg/files/patch-epgctl::debug.h
@@ -0,0 +1,11 @@
+--- epgctl/debug.h.orig Tue Sep 17 17:23:00 2002
++++ epgctl/debug.h Sun Jan 5 23:11:30 2003
+@@ -207,7 +207,7 @@
+ #define xmalloc(SIZE) chk_malloc((SIZE),__FILE__,__LINE__)
+ #define xfree(PTR) chk_free(PTR)
+ #else
+-#include <malloc.h>
++#include <stdlib.h>
+ void * xmalloc( size_t size );
+ #define xfree(PTR) free(PTR)
+ #endif
diff --git a/multimedia/nxtvepg/files/patch-epgdb::epgnetio.c b/multimedia/nxtvepg/files/patch-epgdb::epgnetio.c
new file mode 100644
index 00000000000..ecdbc06caad
--- /dev/null
+++ b/multimedia/nxtvepg/files/patch-epgdb::epgnetio.c
@@ -0,0 +1,11 @@
+--- epgdb/epgnetio.c.orig Sun Nov 17 19:14:32 2002
++++ epgdb/epgnetio.c Sun Jan 5 23:43:08 2003
+@@ -65,7 +65,7 @@
+ #include "epgdb/epgdbsav.h"
+ #include "epgdb/epgnetio.h"
+
+-#if defined(linux) || defined(__NetBSD__)
++#if defined(linux) || defined(__NetBSD__) || defined(__FreeBSD__)
+ #define HAVE_GETADDRINFO
+ #endif
+
diff --git a/multimedia/nxtvepg/files/patch-epgui::menucmd.c b/multimedia/nxtvepg/files/patch-epgui::menucmd.c
new file mode 100644
index 00000000000..b75ea9b9419
--- /dev/null
+++ b/multimedia/nxtvepg/files/patch-epgui::menucmd.c
@@ -0,0 +1,11 @@
+--- epgui/menucmd.c.orig Sat Nov 30 14:46:44 2002
++++ epgui/menucmd.c Sun Jan 5 23:41:49 2003
+@@ -2312,7 +2312,7 @@
+ }
+ else
+ {
+- #ifdef __NetBSD__
++ #if defined(__NetBSD__) || defined(__FreeBSD__)
+ // On NetBSD BtDriver_GetCardName fetches its data from a struct which is filled here
+ BtDriver_ScanDevices(TRUE);
+ #endif
diff --git a/multimedia/nxtvepg/files/patch-epgvbi::btdrv4linux.c b/multimedia/nxtvepg/files/patch-epgvbi::btdrv4linux.c
new file mode 100644
index 00000000000..59f258bf5a7
--- /dev/null
+++ b/multimedia/nxtvepg/files/patch-epgvbi::btdrv4linux.c
@@ -0,0 +1,153 @@
+--- epgvbi/btdrv4linux.c.orig Mon Nov 25 20:30:52 2002
++++ epgvbi/btdrv4linux.c Mon Jan 6 16:01:47 2003
+@@ -195,25 +195,26 @@
+ switch (j) {
+ case 0: //i map 0 to tuner
+ input_id=METEOR_DEV1;
+- input_name ="tuner";
++ input_name = "tuner";
+ break;
+ case 1:
+ input_id=METEOR_DEV0;
+- input_name="video";
++ input_name = "video";
+ break;
+ case 2:
+ input_id=METEOR_DEV_SVIDEO;
+- input_name="svideo";
++ input_name = "svideo";
+ break;
+ case 3:
+ input_id=METEOR_DEV2;
+- input_name ="csvideo";
++ input_name = "csvideo";
+ break;
+ }
++
+ if (ioctl(fd,METEORSINPUT,&input_id)==0) {
+- pVbiBuf->tv_cards[i].inputs[j].inputID=input_id;
++ pVbiBuf->tv_cards[i].inputs[j].inputID=input_id;
+ pVbiBuf->tv_cards[i].inputs[j].isTuner=(input_id==METEOR_DEV1);
+- strncpy((char*)pVbiBuf->tv_cards[i].inputs[j].name,input_name, DEV_MAX_NAME_LEN);
++ strncpy((char*)pVbiBuf->tv_cards[i].inputs[j].name,input_name, 20);
+ pVbiBuf->tv_cards[i].inputs[j].isAvailable=1;
+ }
+ else
+@@ -354,6 +355,14 @@
+ #else // __NetBSD__ || __FreeBSD__
+ if (tuner_fd != -1)
+ {
++ // unmute tuner
++ int mute_arg = AUDIO_UNMUTE;
++ if (ioctl (tuner_fd, BT848_SAUDIO, &mute_arg) == 0) {
++ dprintf0("Unmuting tuner.\n");
++ }
++ else
++ SystemErrorMessage_Set(&pSysErrorText, errno, "unmuting the tuner (ioctl AUDIO_UNMUTE)", NULL);
++
+ close(tuner_fd);
+ tuner_fd = -1;
+ }
+@@ -433,17 +442,20 @@
+ int cardIndex = pVbiBuf->cardIndex;
+
+ // XXX TODO: need to set TV norm
+-
+- if ((cardIndex<MAX_CARDS) && (inputIdx<MAX_INPUTS))
+- if (pVbiBuf->tv_cards[cardIndex].isAvailable)
+- if (!pVbiBuf->tv_cards[cardIndex].isBusy)
+- if (pVbiBuf->tv_cards[cardIndex].inputs[inputIdx].isAvailable) {
+- result=TRUE;
+- pVbiBuf->inputIndex=inputIdx;
+- if (pVbiBuf->tv_cards[cardIndex].inputs[inputIdx].isTuner)
+- *pIsTuner=TRUE;
+-
+- }
++ if ((cardIndex<MAX_CARDS) && (inputIdx<MAX_INPUTS)) {
++ if (pVbiBuf->tv_cards[cardIndex].isAvailable) {
++ if (!pVbiBuf->tv_cards[cardIndex].isBusy) {
++ if (pVbiBuf->tv_cards[cardIndex].inputs[inputIdx].isAvailable) {
++ result=TRUE;
++ pVbiBuf->inputIndex=inputIdx;
++ if (pVbiBuf->tv_cards[cardIndex].inputs[inputIdx].isTuner) {
++ *pIsTuner=TRUE;
++ }
++
++ }
++ }
++ }
++ }
+
+ return result;
+ #endif
+@@ -522,17 +534,27 @@
+ {
+ if (tuner_fd == -1)
+ {
++ int mute_arg = AUDIO_MUTE;
+ assert(devKeptOpen == FALSE);
+ if (!pVbiBuf->tv_cards[pVbiBuf->cardIndex].isBusy) {
+ sprintf(devName, TUNERNAME "%u", pVbiBuf->cardIndex);
+ tuner_fd = open(devName, O_RDONLY);
+- if (tuner_fd == -1)
++ if (tuner_fd == -1) {
+ SystemErrorMessage_Set(&pSysErrorText, errno, "open tuner device ", devName, ": ", NULL);
++ }
+ else
+ dprintf1("BtDriver-TuneChannel: opened tuner device, fd=%d\n", tuner_fd);
+ }
+ else
+ SystemErrorMessage_Set(&pSysErrorText, 0, "tuner device ", devName, " is busy (-> close other video apps)", NULL);
++
++ // mute tuner
++ if (ioctl (tuner_fd, BT848_SAUDIO, &mute_arg) == 0) {
++ dprintf0("Muting tuner.\n");
++ }
++ else
++ SystemErrorMessage_Set(&pSysErrorText, errno, "muting the tuner (ioctl AUDIO_UNMUTE)", NULL);
++
+ }
+ if (tuner_fd != -1)
+ {
+@@ -553,6 +575,7 @@
+ }
+ else
+ devKeptOpen = TRUE;
++
+ }
+ }
+ }
+@@ -1180,9 +1203,14 @@
+ uint line;
+
+ #if defined(__NetBSD__) || defined(__FreeBSD__)
+- // wait 10 seconds for the read to complete. After this time, close
++ // wait 180 seconds for the read to complete. After this time, close
+ // dev/vbi in the signal handler, avoiding endless blocking
+- alarm(10);
++
++ // Changed to 180 because of channel gap at my tv provider: [Simon]
++ // E2 E3 ... E12 <huge gap> S2 ... S?
++ //
++ // Otherwisely, the application exits with an alarm during the gap
++ alarm(180);
+ #endif
+
+ stat = read(vbi_fdin, rawbuf, bufSize);
+@@ -1232,7 +1260,7 @@
+ int result=FALSE;
+ int c;
+ int close_fd=0;
+-
++
+ width=100;
+ height=100;
+ geo.rows = height;
+@@ -1319,6 +1347,7 @@
+ }
+
+ ioctl(tuner_fd, TVTUNER_SETTYPE, &c);
++
+ if (close_fd) {
+ close(tuner_fd);
+ tuner_fd=-1;
diff --git a/multimedia/nxtvepg/files/patch-tcl2c.c b/multimedia/nxtvepg/files/patch-tcl2c.c
new file mode 100644
index 00000000000..52f2eb3497f
--- /dev/null
+++ b/multimedia/nxtvepg/files/patch-tcl2c.c
@@ -0,0 +1,19 @@
+--- tcl2c.c.orig Sun Nov 3 04:15:11 2002
++++ tcl2c.c Sun Oct 5 18:45:58 2003
+@@ -43,6 +43,7 @@
+
+ #include <stdlib.h>
+ #include <stdio.h>
++#include <time.h>
+ #include <errno.h>
+
+ #define FALSE 0
+@@ -123,6 +124,8 @@
+ scriptName = malloc(fileNameLen + 1);
+ strncpy(outNameC, argv[1], fileNameLen - 4);
+ strncpy(outNameH, argv[1], fileNameLen - 4);
++ outNameC[fileNameLen-4]=0;
++ outNameH[fileNameLen-4]=0;
+ baseName = (char *)strrchr(argv[1], '/');
+ if (baseName != NULL)
+ {
diff --git a/multimedia/nxtvepg/pkg-descr b/multimedia/nxtvepg/pkg-descr
new file mode 100644
index 00000000000..9f8a2f4916a
--- /dev/null
+++ b/multimedia/nxtvepg/pkg-descr
@@ -0,0 +1,24 @@
+nxtvepg - Decoder, Browser and Analyzer for the Nextview
+ Electronic Programme Guide
+
+nxtvepg is an X11 application to decode, analyze and browse TV programme
+schedules transmitted on analog TV channels as defined in ETS 300 707:
+"Protocol for a TV Guide using electronic data transmission" by the European
+Telecommunications Standards Institute.
+
+nxtvepg enables you to obtain free TV programme listings for all of the major
+networks in Germany, Austria, France and Switzerland.
+
+Currently Nextview EPG is transmitted by the following TV networks (note that
+each of these EPGs cover not only the provider's programme but also that of many
+other networks): Kabel1, 3Sat, RTL-II (Germany and Austria), SF1, TSR1, TSI1,
+EuroNews (Switzerland), Canal+, M6 (France), TRT-1 (Turkey).
+
+You will need a bktr(4) compatible tv tuner card with teletext support in order
+to use nxtvepg.
+
+It is recommended to check the card's setup before using nxtvepg, e.g. with the
+following applications from the ports collection:
+graphic/fxtv for tv tuner and misc/alevtv for Teletext support.
+
+WWW: http://nxtvepg.sourceforge.net/
diff --git a/multimedia/nxtvepg/pkg-plist b/multimedia/nxtvepg/pkg-plist
new file mode 100644
index 00000000000..c94f48959bc
--- /dev/null
+++ b/multimedia/nxtvepg/pkg-plist
@@ -0,0 +1,7 @@
+bin/nxtvepg
+lib/X11/app-defaults/Nxtvepg
+%%PORTDOCS%%share/doc/nxtvepg/README
+%%PORTDOCS%%share/doc/nxtvepg/TODO
+%%PORTDOCS%%share/doc/nxtvepg/CHANGES
+%%PORTDOCS%%share/doc/nxtvepg/manual.html
+@dirrm share/doc/nxtvepg