revive fxtv, was told it can be used as a composite video viewer

This commit is contained in:
tnn 2022-04-24 10:57:28 +00:00
parent 67e4d489d3
commit cc81d22e19
38 changed files with 2098 additions and 1 deletions

View file

@ -1,4 +1,4 @@
# $NetBSD: Makefile,v 1.323 2022/04/24 08:33:04 wiz Exp $
# $NetBSD: Makefile,v 1.324 2022/04/24 10:57:28 tnn Exp $
#
COMMENT= Multimedia utilities
@ -40,6 +40,7 @@ SUBDIR+= ffplay5
SUBDIR+= flashplayer
SUBDIR+= flvstreamer
SUBDIR+= frei0r
SUBDIR+= fxtv
SUBDIR+= gerbera
SUBDIR+= ggrab
SUBDIR+= gmencoder

4
multimedia/fxtv/DESCR Normal file
View file

@ -0,0 +1,4 @@
To use this application, you need a video capture/tuner card
that's based on the Brooktree 848 capture chip, such as one of the
Hauppauge Wincast/TV or Win/TV cards, the STV TV PCI card, or the
Intel Smart Video Recorder III.

43
multimedia/fxtv/Makefile Normal file
View file

@ -0,0 +1,43 @@
# $NetBSD: Makefile,v 1.39 2022/04/24 10:57:28 tnn Exp $
DISTNAME= fxtv-1.03
PKGREVISION= 23
CATEGORIES= multimedia
MASTER_SITES= ${HOMEPAGE:Q}
EXTRACT_SUFX= .tgz
MAINTAINER= pkgsrc-users@NetBSD.org
HOMEPAGE= https://people.freebsd.org/~rhh/fxtv/
COMMENT= TV display application for Brooktree 848 compatible TV cards
USE_TOOLS+= gmake
INSTALLATION_DIRS= ${PKGMANDIR}/man1
SUBST_CLASSES+= ossaudio
SUBST_MESSAGE.ossaudio= Fixing path to audio device.
SUBST_STAGE.ossaudio= pre-configure
SUBST_FILES.ossaudio= app_rsrc.h Fxtv README
SUBST_SED.ossaudio= -e 's|/dev/dsp|${DEVOSSAUDIO}|g'
post-extract:
${RM} -f ${WRKSRC}/videolib/videolib.o
pre-configure:
set -e; if [ -r /usr/include/machine/mouse.h ] ; then \
${ECHO} '#define HAVE_MOUSE_H 1' > ${WRKSRC}/netbsdconf.h; \
else \
${ECHO} '#define HAVE_MOUSE_H 0' > ${WRKSRC}/netbsdconf.h; \
fi
.include "../../graphics/png/buildlink3.mk"
.include "../../graphics/tiff/buildlink3.mk"
.include "../../x11/libXaw/buildlink3.mk"
.include "../../x11/libXext/buildlink3.mk"
.include "../../x11/libXpm/buildlink3.mk"
.include "../../x11/libXxf86dga/buildlink3.mk"
.include "../../x11/libXxf86vm/buildlink3.mk"
.include "../../x11/xorgproto/buildlink3.mk"
.include "../../mk/oss.buildlink3.mk"
.include "../../mk/bsd.pkg.mk"

13
multimedia/fxtv/PLIST Normal file
View file

@ -0,0 +1,13 @@
@comment $NetBSD: PLIST,v 1.5 2022/04/24 10:57:28 tnn Exp $
bin/fxtv
lib/X11/app-defaults/Fxtv
lib/X11/fxtv/README
lib/X11/fxtv/bitmaps/mini-camera.xpm
lib/X11/fxtv/bitmaps/mini-down.xbm
lib/X11/fxtv/bitmaps/mini-resize.xpm
lib/X11/fxtv/bitmaps/mini-sound.xbm
lib/X11/fxtv/bitmaps/mini-up.xbm
lib/X11/fxtv/bitmaps/radio_off.xbm
lib/X11/fxtv/bitmaps/radio_on.xbm
lib/X11/fxtv/fxtv_cnvt.sh
man/man1/fxtv.1

38
multimedia/fxtv/distinfo Normal file
View file

@ -0,0 +1,38 @@
$NetBSD: distinfo,v 1.23 2022/04/24 10:57:28 tnn Exp $
BLAKE2s (fxtv-1.03.tgz) = 1800aa8e7a387ad88f6c902846096aceed7fed0957df191b9bd09c708e197e80
SHA512 (fxtv-1.03.tgz) = 5aa0372227f7c8d5b7bdf4885fead20ce174fcd1102e77febcd5166ecc1a8123f15c9b23ca536b9486bd281ff1c872c96f32845a188d503564de9aebc0d26016
Size (fxtv-1.03.tgz) = 198669 bytes
SHA1 (patch-aa) = cddeabd154563b4ab84f004cd6dedf1665887227
SHA1 (patch-ab) = 803ef888b8894617b4f3516fc6822784aba314ee
SHA1 (patch-ac) = 27a825287c17d1cc957fb89ba2f665c01f998c15
SHA1 (patch-actions_c) = 3b1c75de416c66a9f502d9096a31192363da4ac9
SHA1 (patch-ad) = 1560755a8e504a80e89d66278517959e7bdea34d
SHA1 (patch-ae) = 2a05aa4abb593a54aafb7122f76907c12c40e6a5
SHA1 (patch-af) = 1ada82aa78cf357df1c697a64c4e4f20ebd36859
SHA1 (patch-ag) = 6833a48904ac01f053d991de0fb96cb65aa33d52
SHA1 (patch-ah) = eee3ac0314c45f392b3cc64c934d9191a9f172ba
SHA1 (patch-ai) = 2ee8bdae28f8ad0a9a42c73c6a20a9433e65a2f3
SHA1 (patch-aj) = fc4d08c6ddbd141227677e68377bb563b6eff2db
SHA1 (patch-ak) = e57eacc2fe2a0c7e1ab56ae1867ed7275777b2a3
SHA1 (patch-al) = 08dfc0ad859086ab758df349510fc27cc2c9b971
SHA1 (patch-am) = 2166c83b8e5ef74c716fc22b70fa9b266968c30c
SHA1 (patch-an) = 2b09f6e3e1ccd24a68e98881faa57d7b9ecc5e04
SHA1 (patch-annot_c) = 9caaa139138a6a53edd294cb2a5d3ef47bec45f6
SHA1 (patch-ao) = bf602e6ac5f4fd213cf135a466fd29a765573ef9
SHA1 (patch-ap) = 16cfb290089e30e63fde8e5f3a9e6d51efa0a9f0
SHA1 (patch-appear_dlg_c) = c55bb9882633454e147811381a6cc0e3f3932df4
SHA1 (patch-aq) = e673486847f35b037870fba089b5d72eac5945f5
SHA1 (patch-audiocnvt_c) = 1c2748c4d1499fb3083748df017935984d5c710e
SHA1 (patch-audsav_dlg_c) = aebba653b89e06562e04381fec6c9fac5e122a0e
SHA1 (patch-ba) = 11ebc91ce21a9132d116dffbefde58ef3f223e46
SHA1 (patch-bb) = 861d7e52e7a1bbf3433b8b35dc0737e12ca2d82a
SHA1 (patch-bc) = 97d02b5f725f15a9eb31aff9a93872315247da75
SHA1 (patch-bd) = c11c09060d3f2b9512682078b035e93195e0e16e
SHA1 (patch-be) = f93df2ce14cb83641d29031d541b5c822d5d1e63
SHA1 (patch-bf) = a2c7b93ef9fb5eb28c2ac867d84d9b8e6f06dab8
SHA1 (patch-bg) = 8078acbccbb34bb30251187f56cb2a28db579bf4
SHA1 (patch-ca) = f80c76b57cd6b4be91a432d506141896d6630be5
SHA1 (patch-remotetrans_c) = 87e8cc3ad428c082f89d76c018bcca76298d62cf
SHA1 (patch-tvscreen_c) = 4e9d49674610e827a42ea02fc350698c435162cf
SHA1 (patch-videolib_Makefile) = a15a33fb4e756d2b2ddfa2e72835b1ffcbcd8c60

View file

@ -0,0 +1,118 @@
$NetBSD: patch-aa,v 1.13 2022/04/24 10:57:28 tnn Exp $
Config for pkgsrc.
--- Makefile.orig 2001-02-12 22:08:59.000000000 +0000
+++ Makefile
@@ -4,13 +4,10 @@
HAVE_XFREE86 = YES
-ifneq ($(X11PREFIX),) # NetBSD
-X11BASE ?= $(X11PREFIX)
-else
X11BASE ?= /usr/X11R6
-endif
+X11BASEINST ?= $(PREFIX)
-X11BASEINST ?= $(X11BASE)
+PREFIX ?= /usr/local
LOCALBASE ?= /usr/local
DEBUG = NO
OS = $(shell uname -s)
@@ -24,15 +21,6 @@ override LIBDIRS = $(X11BASE)/
override SHELL = /bin/sh
#
-# NetBSD stuff
-#
-ifeq ($(OS),NetBSD)
- override INC += -I/usr/pkg/include
- override LIBDIRS += /usr/pkg/lib
- override LD_INC += -lossaudio -lz
-endif
-
-#
# OpenBSD stuff
#
ifeq ($(OS),OpenBSD)
@@ -50,19 +38,22 @@ endif
ifeq ($(OS),NetBSD)
override RPATH_FLAG = -R
endif
+ifeq ($(OS),DragonFly)
+ override RPATH_FLAG = -R
+endif
-override LD_INC = $(foreach dir,$(LIBDIRS),-Wl,-L,$(dir))
+override LD_INC = $(foreach dir,$(LIBDIRS),-Wl,-L$(dir))
ifneq ($(RPATH_FLAG),)
- override LD_INC += $(foreach dir,$(LIBDIRS),-Wl,$(RPATH_FLAG),$(dir))
+ override LD_INC += $(foreach dir,$(LIBDIRS),-Wl,$(RPATH_FLAG)$(dir))
endif
#
# CFLAGS
#
ifneq ($(DEBUG),NO)
- override CFLAGS = -DDEBUG -g
+ override CFLAGS += -DDEBUG -g
else
- override CFLAGS = -DNDEBUG -O2
+ override CFLAGS += -DNDEBUG
endif
C_WARN_FLAG = -Wall
override CFLAGS += $(C_WARN_FLAG) $(INC) $(CF_VERS)
@@ -72,6 +63,15 @@ endif
override CFLAGS += $(C_WARN_FLAG) -DX11BASE=\"$(X11BASEINST)\"
+#
+# NetBSD stuff
+#
+ifeq ($(OS),NetBSD)
+ override INC += -I$(LOCALBASE)/include
+ override LIBDIRS += $(LOCALBASE)/lib
+ override LD_INC += $(LIBOSSAUDIO) -lz
+endif
+
ifeq ($(OS), linux)
override CFLAGS = $(CFLAGS) -DOLD_TUNER_IFACE
endif
@@ -79,9 +79,9 @@ endif
#
# LDFLAGS,LIBS
#
-override LDFLAGS = $(LD_INC)
+override LDFLAGS += $(LD_INC)
override VIDEOLIB_LIB = $(VIDEOLIB_DIR)/libvideo.a
-override LIBS = -ltiff -ljpeg -lXaw3d -lXmu -lXt -lXpm \
+override LIBS = -lpng -ltiff -ljpeg -lXaw -lXmu -lXt -lXpm \
-lSM -lICE -lXext -lX11 -lm
ifeq ($(HAVE_XFREE86),YES)
override LIBS += -lXxf86dga -lXxf86vm
@@ -116,15 +116,15 @@ $(VIDEOLIB_LIB) :
tv.o : tv.c app_rsrc.h
install : fxtv
- mkdir -p $(FXTV_LIBDIR)/bitmaps
- install -c -m 444 -o root $(PIXMAPS) $(FXTV_LIBDIR)/bitmaps
- install -c -m 444 -o root README $(FXTV_LIBDIR)
- mkdir -p $(X11BASEINST)/lib/X11/app-defaults
- install -c -m 444 -o root Fxtv $(X11BASEINST)/lib/X11/app-defaults
- mkdir -p $(X11BASEINST)/bin
- install -c -m 444 -o root fxtv.1 $(X11BASEINST)/man/man1/fxtv.1
- install -c -m 555 -o root fxtv $(X11BASEINST)/bin
- install -c -m 555 -o root fxtv_cnvt.sh $(FXTV_LIBDIR)
+ mkdir -p ${DESTDIR}$(FXTV_LIBDIR)/bitmaps
+ ${BSD_INSTALL_DATA} $(PIXMAPS) ${DESTDIR}$(FXTV_LIBDIR)/bitmaps
+ ${BSD_INSTALL_DATA} README ${DESTDIR}$(FXTV_LIBDIR)
+ ${BSD_INSTALL_DATA_DIR} ${DESTDIR}$(X11BASEINST)/lib/X11/app-defaults
+ ${BSD_INSTALL_DATA} Fxtv ${DESTDIR}$(X11BASEINST)/lib/X11/app-defaults
+ ${BSD_INSTALL_PROGRAM_DIR} ${DESTDIR}$(X11BASEINST)/bin
+ ${BSD_INSTALL_MAN} fxtv.1 ${DESTDIR}$(X11BASEINST)/$(PKGMANDIR)/man1/fxtv.1
+ ${BSD_INSTALL_PROGRAM} fxtv ${DESTDIR}$(X11BASEINST)/bin
+ ${BSD_INSTALL_SCRIPT} fxtv_cnvt.sh ${DESTDIR}$(FXTV_LIBDIR)
clean:
rm -f *.o fxtv *.core *~

View file

@ -0,0 +1,25 @@
$NetBSD: patch-ab,v 1.5 2022/04/24 10:57:28 tnn Exp $
Needs sys/ioctl.h.
Dragonfly support.
--- pixelview_remote.c.orig 2000-05-21 15:10:09.000000000 +0000
+++ pixelview_remote.c
@@ -32,6 +32,7 @@
*
*/
+#include <sys/ioctl.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
@@ -39,6 +40,9 @@
#include <sys/fcntl.h>
#ifdef __NetBSD__
# include <dev/ic/bt8xx.h>
+#elif defined(__DragonFly__)
+# include <dev/video/meteor/ioctl_meteor.h>
+# include <dev/video/bktr/ioctl_bt848.h>
#else
# include <machine/ioctl_meteor.h>
# include <machine/ioctl_bt848.h>

View file

@ -0,0 +1,16 @@
$NetBSD: patch-ac,v 1.3 2022/04/24 10:57:28 tnn Exp $
--- tvaudio.c.orig Mon Feb 12 15:56:29 2001
+++ tvaudio.c
@@ -107,7 +107,11 @@
#ifdef SOUND_MIXER_VIDEO
else if ( STREQ( buf, "VIDEO" ) ) {
Mixer_dev_id = SOUND_MIXER_VIDEO;
+#ifndef SOUND_MASK_VIDEO
+ Mixer_dev_mask = 1 << SOUND_MIXER_VIDEO;
+#else
Mixer_dev_mask = SOUND_MASK_VIDEO;
+#endif
Mixer_dev_name = "VIDEO";
}
#endif

View file

@ -0,0 +1,127 @@
$NetBSD: patch-actions_c,v 1.3 2022/04/24 10:57:28 tnn Exp $
Fix LP64 problems.
Fix illegal C.
--- actions.c~ 2001-02-12 19:26:23.000000000 +0000
+++ actions.c
@@ -238,7 +238,7 @@ static void TVACTIONKeyStationEntryHdlr(
S_chan_entry_active = TRUE;
S_entry_freq = do_freq;
if ( isa_digit )
- sprintf( S_chan_str, "%ld", digit );
+ sprintf( S_chan_str, "%d", digit );
else if ( do_freq )
strcpy( S_chan_str, "f" );
else
@@ -549,7 +549,7 @@ static void TVActionSetStationAction(
/* Are we incrementally changing the channel or frequency? */
if (( str[0] == '+' ) || ( str[0] == '-' )) {
- if ( toupper( str[1] ) == 'F' )
+ if ( toupper( (unsigned char)str[1] ) == 'F' )
freq_inc = ( str[0] == '-' ? -1 : +1 );
else {
chan_inc = atoi( str );
@@ -609,7 +609,7 @@ static void TVActionSetStationAction(
if (( sscanf( str, "f%f", &chan_freq ) == 1 ) ||
( sscanf( str, "F%f", &chan_freq ) == 1 ))
chan_num = -1;
- else if (( sscanf( str, "%ld", &chan_num ) == 1 ) &&
+ else if (( sscanf( str, "%d", &chan_num ) == 1 ) &&
( chan_num >= TV_CHAN_MIN ))
chan_freq = 0.0;
else {
@@ -729,8 +729,10 @@ static void TVActionToggleZoomAction(
arg[0] = '\0';
strncat( arg, params[0], sizeof(arg)-1 );
- while ( *p != '\0' )
- *(p++) = tolower( *p );
+ while ( *p != '\0' ) {
+ *p = tolower( (unsigned char)*p );
+ p++;
+ }
if ( strncmp( arg, "win", strlen("win") ) == 0 )
fullscreen = False;
else if ( strncmp( arg, "full", strlen("full") ) == 0 )
@@ -925,8 +927,10 @@ static void TVActionSetCaptureInputActio
arg[0] = '\0';
strncat( arg, str, sizeof(arg)-1 );
- while ( *p != '\0' )
- *(p++) = tolower( *p );
+ while ( *p != '\0' ) {
+ *p = tolower( (unsigned char)*p );
+ p++;
+ }
if ( strncmp( str, "tuner", strlen("tuner") ) == 0 )
dev = TV_DEVICE_TUNER;
@@ -1032,8 +1036,10 @@ static void TVActionSetTunerModeAction(
arg[0] = '\0';
strncat( arg, str, sizeof(arg)-1 );
- while ( *p != '\0' )
- *(p++) = tolower( *p );
+ while ( *p != '\0' ) {
+ *p = tolower( (unsigned char)*p );
+ p++;
+ }
if ( strncmp( str, "ant", strlen("ant") ) == 0 )
mode = TV_TUNER_MODE_ANTENNA;
@@ -1151,7 +1157,7 @@ static void TVActionSaveImageAction(
else
len = p - dsk->fn_freeze_base;
- sprintf( fname, "%.*s%.3ld%s", (int)len, dsk->fn_freeze_base,
+ sprintf( fname, "%.*s%.3d%s", (int)len, dsk->fn_freeze_base,
dsk->freeze_next_suffix, (p ? p : "") );
}
else
@@ -1306,7 +1312,7 @@ static void TVActionVideoRecordStartActi
}
if (( *num_params == 1 ) && params[0] ) {
- if (( sscanf( params[0], "%ldx%ld", &w, &h ) != 2 ) ||
+ if (( sscanf( params[0], "%dx%d", &w, &h ) != 2 ) ||
( w <= 0 ) || ( h <= 0 )) {
fprintf( stderr,
"TVActionVideoRecordStartAction: Bad resolution.\n" );
@@ -1426,7 +1432,7 @@ void TVActionSetVolume( TV_INT32 vol )
String param[1] = { str };
Cardinal num_param = 1;
- sprintf( str, "%ld", vol );
+ sprintf( str, "%d", vol );
TVActionSetVolumeAction( NULL, NULL, param, &num_param );
}
@@ -1436,7 +1442,7 @@ void TVActionSetVolumeRel( TV_INT32 vol_
String param[1] = { str };
Cardinal num_param = 1;
- sprintf( str, "%+ld", vol_delta );
+ sprintf( str, "%+d", vol_delta );
TVActionSetVolumeAction( NULL, NULL, param, &num_param );
}
@@ -1467,7 +1473,7 @@ void TVActionSetCaptureInputRel( TV_INT3
String param[1] = { str };
Cardinal num_param = 1;
- sprintf( str, "%+ld", dev_delta );
+ sprintf( str, "%+d", dev_delta );
TVActionSetCaptureInputAction( NULL, NULL, param, &num_param );
}
@@ -1528,7 +1534,7 @@ static void TVActionFlipStationAction(
}
if ( p->last_chan >= TV_CHAN_MIN )
- sprintf( chan_str, "%ld" , p->last_chan );
+ sprintf( chan_str, "%d" , p->last_chan );
else
sprintf( chan_str, "f%f", p->last_freq );
TVActionSetStation( chan_str );

View file

@ -0,0 +1,256 @@
$NetBSD: patch-ad,v 1.5 2022/04/24 10:57:28 tnn Exp $
Handle always-on-top.
Handle png.
Fix illegal C.
--- app_rsrc.h.orig 2001-02-12 22:17:53.000000000 +0100
+++ app_rsrc.h
@@ -80,6 +80,8 @@ typedef struct _AppResources {
int Bpp_24bit;
int Bpp_32bit;
+ Boolean aot_mode;
+
Boolean afc_mode;
Boolean disable_direct_v;
String remote_type; /* Type of Remote Control attached */
@@ -191,6 +193,8 @@ extern AppResources App_res;
#define RNafc "afc"
#define RCafc "Afc"
+#define RNalwaysOnTop "alwaysOnTop"
+#define RCalwaysOnTop "AlwaysOnTop"
#define RNdisableDirectV "disableDirectV"
#define RCdisableDirectV "DisableDirectV"
@@ -284,6 +288,7 @@ static XrmOptionDescRec Cmd_line_options
{ "-Bpp24bit" , RNBpp24bit , XrmoptionSepArg, NULL },
{ "-Bpp32bit" , RNBpp32bit , XrmoptionSepArg, NULL },
+ { "-noalwaysOnTop" , RNalwaysOnTop , XrmoptionNoArg , pFALSE },
{ "-noafc" , RNafc , XrmoptionNoArg , pFALSE },
{ "-disableDirectV" , RNdisableDirectV , XrmoptionNoArg , pTRUE },
{ "-remoteType" , RNremoteType , XrmoptionSepArg, NULL },
@@ -434,6 +439,10 @@ static XtResource Resources[] = {
XtOffsetOf(AppResources, Bpp_32bit), XtRString,
"-1" /* 0 = Guess */ },
+ { RNalwaysOnTop, RCalwaysOnTop, XtRBoolean, sizeof(Boolean),
+ XtOffsetOf(AppResources, aot_mode), XtRImmediate,
+ (XtPointer) True },
+
{ RNafc, RCafc, XtRBoolean, sizeof(Boolean),
XtOffsetOf(AppResources, afc_mode), XtRImmediate,
(XtPointer) True },
@@ -525,96 +534,96 @@ static XtResource Resources[] = {
};
-#define OPTION_HELP_STR "\
- BSD X TV (fxtv), Version " VERS_STR ".
- Written by Randall Hopper
-
-Please mail Fxtv and Bt848 driver-related comments and help requests to the
-multimedia@freebsd.org list. Feel free to subscribe and contribute
-(listserv: majordomo@freebsd.org).
-
-Available options:
-
--driverDefaults - Use appearance parms from driver on startup
--colorbars - Turn on colorbar display (for testing)
--hue [-90...90] - Initial Hue ; def=0
--brightness [-50..50] - Initial Brightness (%); def=0
--contrast [0..200] - Initial Contrast (%); def=100
--satU [0..200] - U Saturation (%); def=100
--satV [0..284] - V Saturation (%); def=100
--aspectlock - Enable 4:3 aspect lock on video window
-
--deviceNumber <#> - bktr/tuner device numbers; def=0
--inputFormat <fmt> - Tuner signal input format (ntsc,ntscm,ntscj,
- palbdghi,pal,palm,paln,secam,palncomb,rsvd)
-
--tunerMode [cable|antenna] - Tuner Mode
--defaultInput <input> - Startup tuner signal input
- [tuner|video|svideo|csvideo|dev3]
--defaultAudioInput <input> - Startup TV card audio input
- [tuner|external|internal|auto]
--defaultChannel <#> - Startup Channel Number
--cableStationList <...> - List of cable station presets (see rsrc file)
--antennaStationList <...> - List of antenna station presets
--cableFreqSet <freqset> - Freq set for cable (def = cableirc)
- [nabcst|cableirc|cablehrc|weurope|jpnbcst|
- jpncable|xussr|australia|france]
--antennaFreqSet <freqset> - Freq set for antenna (def = nabcst)
-
--noAudio - Suppress playing audio through soundcard
--dspDevice - Override default DSP device (def=/dev/dsp)
--mixerDevice - Override default mixer device (def=/dev/mixer)
--mixerChannel - Audio mixer (line,line1/2/3,cd,mic,video)
-
--stationInWinTitle - Display station text in window title
--stationInWinIcon - Display station text in window icon
-
--stationAnnotFont <fontpat> - Font pattern for station annot (see rsrc file)
--stationAnnotColor <color> - Color for station annot
--stationAnnotDelay <msec> - How long to display (0 = never; -1 = always)
--stationAnnotIDOnly - Display station ID alone (when available)
-
--tunerModeAnnot{Font,Color,Delay}
--inputDevAnnot{Font,Color,Delay}
--volumeDevAnnot{Font,Color,Delay}
--muteDevAnnot{Font,Color,Delay}
- - Other annotation options (see stationAnnot)
-
--remoteType - Type of attached remote control
- [None|X10|Hauppauge|PixelView]
-
--recCmdMpeg2 - MPEG-2 Audio record command
--recCmdMpeg3 - MPEG-3 Audio record command
--playCmdMpeg2 - MPEG-2 Audio play command
--playCmdMpeg3 - MPEG-3 Audio play command
-
--videoCnvtScript - Video conversion workhorse script for vid encod.
-
--bswap2Bpp - Byte/word swap options for direct video
--nobswap2Bpp (used to match driver's pixel format with
--bswap3Bpp the video card's)
--nobswap3Bpp
--bswap4Bpp 2Bpp - 15/16-bpp modes
--nobswap4Bpp 3Bpp - packed 24bpp modes
--bwwap4Bpp 4Bpp - unpacked 24bpp modes
--nowswap4Bpp
-
--Bpp24bit [3|4] - Set frame buffer Bytes-per-pixel for 24bpp mode
--Bpp32bit [3|4] - Set frame buffer Bytes-per-pixel for 32bpp mode
-
--videoCapFile[1-4] - Optional paths (0-4) to scratch file paths to
- use for video capture; spreads load across disks
-
--noafc - Disable AFC
--disableDirectV - Disable DMA transfers straight to video card
--debug <area> - Debug Msgs
- {startup,driver,subproc,events,video,frame}
--help - Display program options
-
-NOTE: All command line options are accessible as X resources as well.
- The X resources have the same names as the command-line options.
- See the sample Fxtv class resource file for details.
-"
+#define OPTION_HELP_STR \
+" BSD X TV (fxtv), Version " VERS_STR ".\n" \
+" Written by Randall Hopper\n" \
+"\n" \
+"Please mail Fxtv and Bt848 driver-related comments and help requests to the\n" \
+"multimedia@freebsd.org list. Feel free to subscribe and contribute\n" \
+"(listserv: majordomo@freebsd.org).\n" \
+"\n" \
+"Available options:\n" \
+"\n" \
+"-driverDefaults - Use appearance parms from driver on startup\n" \
+"-colorbars - Turn on colorbar display (for testing)\n" \
+"-hue [-90...90] - Initial Hue ; def=0\n" \
+"-brightness [-50..50] - Initial Brightness (%); def=0\n" \
+"-contrast [0..200] - Initial Contrast (%); def=100\n" \
+"-satU [0..200] - U Saturation (%); def=100\n" \
+"-satV [0..284] - V Saturation (%); def=100\n" \
+"-aspectlock - Enable 4:3 aspect lock on video window\n" \
+"-noalwaysOnTop - Disable always on top\n" \
+"\n" \
+"-deviceNumber <#> - bktr/tuner device numbers; def=0\n" \
+"-inputFormat <fmt> - Tuner signal input format (ntsc,ntscm,ntscj,\n" \
+" palbdghi,pal,palm,paln,secam,palncomb,rsvd)\n" \
+"\n" \
+"-tunerMode [cable|antenna] - Tuner Mode\n" \
+"-defaultInput <input> - Startup tuner signal input\n" \
+" [tuner|video|svideo|csvideo|dev3]\n" \
+"-defaultAudioInput <input> - Startup TV card audio input\n" \
+" [tuner|external|internal|auto]\n" \
+"-defaultChannel <#> - Startup Channel Number\n" \
+"-cableStationList <...> - List of cable station presets (see rsrc file)\n" \
+"-antennaStationList <...> - List of antenna station presets\n" \
+"-cableFreqSet <freqset> - Freq set for cable (def = cableirc)\n" \
+" [nabcst|cableirc|cablehrc|weurope|jpnbcst|\n" \
+" jpncable|xussr|australia|france]\n" \
+"-antennaFreqSet <freqset> - Freq set for antenna (def = nabcst)\n" \
+"\n" \
+"-noAudio - Suppress playing audio through soundcard\n" \
+"-dspDevice - Override default DSP device (def=/dev/audio)\n" \
+"-mixerDevice - Override default mixer device (def=/dev/mixer)\n" \
+"-mixerChannel - Audio mixer (line,line1/2/3,cd,mic,video)\n" \
+"\n" \
+"-stationInWinTitle - Display station text in window title\n" \
+"-stationInWinIcon - Display station text in window icon\n" \
+"\n" \
+"-stationAnnotFont <fontpat> - Font pattern for station annot (see rsrc file)\n" \
+"-stationAnnotColor <color> - Color for station annot\n" \
+"-stationAnnotDelay <msec> - How long to display (0 = never; -1 = always)\n" \
+"-stationAnnotIDOnly - Display station ID alone (when available)\n" \
+"\n" \
+"-tunerModeAnnot{Font,Color,Delay}\n" \
+"-inputDevAnnot{Font,Color,Delay}\n" \
+"-volumeDevAnnot{Font,Color,Delay}\n" \
+"-muteDevAnnot{Font,Color,Delay}\n" \
+" - Other annotation options (see stationAnnot)\n" \
+"\n" \
+"-remoteType - Type of attached remote control\n" \
+" [None|X10|Hauppauge|PixelView]\n" \
+"\n" \
+"-recCmdMpeg2 - MPEG-2 Audio record command\n" \
+"-recCmdMpeg3 - MPEG-3 Audio record command\n" \
+"-playCmdMpeg2 - MPEG-2 Audio play command\n" \
+"-playCmdMpeg3 - MPEG-3 Audio play command\n" \
+"\n" \
+"-videoCnvtScript - Video conversion workhorse script for vid encod.\n" \
+"\n" \
+"-bswap2Bpp - Byte/word swap options for direct video\n" \
+"-nobswap2Bpp (used to match driver's pixel format with\n" \
+"-bswap3Bpp the video card's)\n" \
+"-nobswap3Bpp\n" \
+"-bswap4Bpp 2Bpp - 15/16-bpp modes\n" \
+"-nobswap4Bpp 3Bpp - packed 24bpp modes\n" \
+"-bwwap4Bpp 4Bpp - unpacked 24bpp modes\n" \
+"-nowswap4Bpp\n" \
+"\n" \
+"-Bpp24bit [3|4] - Set frame buffer Bytes-per-pixel for 24bpp mode\n" \
+"-Bpp32bit [3|4] - Set frame buffer Bytes-per-pixel for 32bpp mode\n" \
+"\n" \
+"-videoCapFile[1-4] - Optional paths (0-4) to scratch file paths to\n" \
+" use for video capture; spreads load across disks\n" \
+"\n" \
+"-noafc - Disable AFC\n" \
+"-disableDirectV - Disable DMA transfers straight to video card\n" \
+"-debug <area> - Debug Msgs\n" \
+" {startup,driver,subproc,events,video,frame}\n" \
+"-help - Display program options\n" \
+"\n" \
+"NOTE: All command line options are accessible as X resources as well.\n" \
+" The X resources have the same names as the command-line options.\n" \
+" See the sample Fxtv class resource file for details.\n"
static String fallback_resources[] = {
/*"Fxtv.geometry: +10+10",*/
@@ -681,6 +690,7 @@ static String fallback_resources[] = {
"*menuBox*optionsMenu*captureToCmd.label: Capture To...",
"*menuBox*optionsMenu*saveOptionsCmd.label:Save Options",
"*menuBox*optionsMenu*setAfcCmd.label: AFC",
+ "*menuBox*optionsMenu*setAotCmd.label: Always on top",
"*menuBox*helpMenu.label: Help",
"*menuBox*helpMenu.menu.label: Help",
@@ -789,6 +799,7 @@ static String fallback_resources[] = {
"*imageSaveDialog*suffixLabel.label: Append Img # Suffix",
"*imageSaveDialog*formatLabel.label: Format:",
"*imageSaveDialog*formatMenuBox*tiffCmd.label: TIFF",
+ "*imageSaveDialog*formatMenuBox*pngCmd.label: PNG",
"*imageSaveDialog*formatMenuBox*ppmCmd.label: PPM",
"*imageSaveDialog*okCmd.label: OK",
@@ -902,6 +913,7 @@ static String fallback_resources[] = {
"*videoSaveDialog*imageEncLabel.label: IMAGE ENCODE",
"*videoSaveDialog*iFileFmtLabel.label: Format:",
"*videoSaveDialog*iFileFmtMenuBox*tiffCmd.label: TIFF",
+ "*videoSaveDialog*iFileFmtMenuBox*pngCmd.label: PNG",
"*videoSaveDialog*iFileFmtMenuBox*ppmCmd.label: PPM",
"*videoSaveDialog*iFileFmtMenuBox*yuvCmd.label: YUV",

View file

@ -0,0 +1,167 @@
$NetBSD: patch-ae,v 1.5 2022/04/24 10:57:28 tnn Exp $
Support png screenshots.
Fix LP64 problems.
--- imgsav.c.orig 1999-09-26 14:35:06.000000000 +0000
+++ imgsav.c
@@ -29,6 +29,8 @@
/* ******************** Include Files ************** */
+#include <png.h>
+#include <zlib.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
@@ -137,7 +139,7 @@ static void TVIMGSAVFmtScanline24bpp(
break;
default:
fprintf( stderr,
- "TVIMGSAVFmtScanline24bpp: Unsupported Bpp %ld\n",
+ "TVIMGSAVFmtScanline24bpp: Unsupported Bpp %d\n",
img->pix_geom.Bpp );
exit(1);
}
@@ -146,7 +148,7 @@ static void TVIMGSAVFmtScanline24bpp(
if (( !img->pix_geom.swap_shorts ) &&
( img->pix_geom.Bpp == 4 ))
pix = (pix >> 16) | (pix << 16);
- if ( !img->pix_geom.swap_bytes )
+ if ( !img->pix_geom.swap_bytes ) {
if ( img->pix_geom.Bpp == 3 )
pix = ((pix & 0x00FF0000) >> 16) |
((pix & 0x000000FF) << 16);
@@ -155,6 +157,7 @@ static void TVIMGSAVFmtScanline24bpp(
((pix & 0x00FF0000) << 8) |
((pix & 0x0000FF00) >> 8) |
((pix & 0x000000FF) << 8);
+ }
pix = SHIFT_AND_MASK( pix, shf[0], msk[0] ) |
SHIFT_AND_MASK( pix, shf[1], msk[1] ) |
@@ -216,7 +219,7 @@ void TVIMGSAVDoSaveTIFF( char filename[]
#endif
if ( TIFFScanlineSize(out) != linebytes ) {
- fprintf( stderr, "Linebytes mismatch: TIFF says %ld, we say %ld\n",
+ fprintf( stderr, "Linebytes mismatch: TIFF says %d, we say %d\n",
TIFFScanlineSize(out), linebytes );
exit(1);
}
@@ -254,6 +257,96 @@ void TVIMGSAVDoSaveTIFF( char filename[]
}
+void TVIMGSAVDoSavePNG( char filename[], TV_IMAGE *img )
+{
+ char errmsg[160];
+ png_structp png_ptr;
+ png_infop info_ptr;
+ FILE *out;
+ TV_INT32 linebytes,
+ y,
+ pass,
+ compon;
+ TV_UINT8 *buf;
+
+ buf = NULL;
+ if ( img->pix_geom.type != TV_PIXELTYPE_RGB ) {
+ fprintf( stderr, "Attempt to save non-RGB data as TIFF\n" );
+ exit(1);
+ }
+
+ /* Open output file */
+ if ( (out = fopen( filename, "wb" )) == NULL ) {
+ sprintf( errmsg, "Can't open output file '%s'", filename );
+ XUTILDialogPause( TVTOPLEVEL, "Error", errmsg, TV_DIALOG_TYPE_OK );
+ return;
+ }
+
+ /* Create PNG data structures and initialize */
+ png_ptr = png_create_write_struct
+ (PNG_LIBPNG_VER_STRING, NULL, NULL, NULL);
+ if (!png_ptr) {
+ sprintf( errmsg, "Can't create PNG write structure" );
+ XUTILDialogPause( TVTOPLEVEL, "Error", errmsg, TV_DIALOG_TYPE_OK );
+ return;
+ }
+ info_ptr = png_create_info_struct(png_ptr);
+ if (!info_ptr) {
+ png_destroy_write_struct(&png_ptr, NULL);
+ sprintf( errmsg, "Can't create PNG info structure" );
+ XUTILDialogPause( TVTOPLEVEL, "Error", errmsg, TV_DIALOG_TYPE_OK );
+ return;
+ }
+
+ if (setjmp(png_jmpbuf(png_ptr))) {
+ fprintf( stderr, "PNG write error\n" );
+ XBell( TVDISPLAY, 100 );
+ png_destroy_write_struct( &png_ptr, &info_ptr );
+ free( buf );
+ fclose( out );
+ unlink( filename );
+ return;
+ }
+ png_init_io(png_ptr, out);
+ /* fast compression */
+ png_set_compression_level(png_ptr, Z_BEST_SPEED);
+
+ /* Setup image format info (chunks) */
+ png_set_IHDR(png_ptr, info_ptr, img->geom.w, img->geom.h,
+ TV_BITS_PER_COMP, PNG_COLOR_TYPE_RGB /* XXX: ? */,
+ PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
+ PNG_FILTER_TYPE_DEFAULT);
+ /* and write it */
+ png_write_info(png_ptr, info_ptr);
+ /* flush image out every 50 rows */
+ png_set_flush(png_ptr, 50);
+
+ linebytes = img->geom.w * TV_BYTES_PER_PIX;
+
+ if ( (buf = malloc( linebytes )) == NULL )
+ TVUTILOutOfMemory();
+
+ /* Convert & write the image data */
+ for ( pass = 0; pass < 1; pass++ ) {
+ compon = DoRed | DoGreen | DoBlue;
+ for ( y = 0; y < img->geom.h; y++ ) {
+
+ /* Format scanline */
+ TVIMGSAVFmtScanline24bpp( img, y, compon, buf );
+
+ /* And write it in PNG */
+ png_write_row(png_ptr, buf);
+ }
+ }
+
+ /* All done. Close up shop and go home */
+ png_write_end(png_ptr, NULL);
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+ fclose(out);
+ free( buf );
+}
+
+
void TVIMGSAVDoSavePPM( char filename[], TV_IMAGE *img )
{
static char *S_fp_buf = NULL;
@@ -288,7 +381,7 @@ void TVIMGSAVDoSavePPM( char filename[],
out = stdout;
/* Write binary PPM header */
- fprintf( out, "P6\n%ld %ld\n%d\n", img->geom.w, img->geom.h,
+ fprintf( out, "P6\n%d %d\n%d\n", img->geom.w, img->geom.h,
(1 << TV_BITS_PER_COMP) - 1 );
linebytes = img->geom.w * TV_BYTES_PER_PIX;
@@ -408,6 +501,9 @@ void TVIMGSAVDoSave( char filename[], TV
}
TVIMGSAVDoSaveTIFF( filename, img ); break;
+ case TV_STILL_FMT_PNG :
+ TVIMGSAVDoSavePNG ( filename, img ); break;
+
case TV_STILL_FMT_PPM :
TVIMGSAVDoSavePPM ( filename, img ); break;

View file

@ -0,0 +1,85 @@
$NetBSD: patch-af,v 1.5 2022/04/24 10:57:28 tnn Exp $
Dragonfly support.
Use correct sysctl mibs on NetBSD.
Fix LP64 problems.
Fix illegal C.
--- tvutil.c.orig 2000-10-23 02:43:46.000000000 +0000
+++ tvutil.c
@@ -35,7 +35,7 @@
#include <fcntl.h>
#include <signal.h>
#include <sys/types.h>
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__DragonFly__)
# include <sys/sysctl.h>
#elif defined(__bsdi__) || defined(__NetBSD__) || defined(__OpenBSD__)
# include <sys/param.h>
@@ -105,14 +105,14 @@ void CleanupChildFileDesc()
{
static int Max_files_per_proc = -1;
-#if defined(__FreeBSD__)
+#if defined(__FreeBSD__) || defined(__DragonFly__)
int mib[2] = { CTL_KERN, KERN_MAXFILESPERPROC };
#elif defined(linux)
int mib[2] = { CTL_KERN, FOPEN_MAX };
#elif defined(__bsdi__)
int mib[2] = { CTL_KERN, KERN_MAXFILES };
#elif defined(__NetBSD__)
- int mib[2] = { CTL_KERN, OPEN_MAX };
+ int mib[2] = { CTL_KERN, KERN_MAXFILES };
#elif defined(__OpenBSD__)
int mib[2] = { CTL_KERN, OPEN_MAX };
#endif
@@ -184,14 +184,14 @@ void TVUTILCmdStrToArgList(
*argbuf = NULL;
while ( *s != '\0' ) { /* For all args */
- while ( isspace( *s ) ) /* Skip spaces */
+ while ( isspace( (unsigned char)*s ) ) /* Skip spaces */
s++;
if ( *s == '\0' )
continue;
in_quote = FALSE; /* Extract an arg */
p = arg;
- while ( (in_quote || !isspace(*s)) && (*s != '\0') ) {
+ while ( (in_quote || !isspace((unsigned char)*s)) && (*s != '\0') ) {
ignore = FALSE;
if (( *s == '\'' ) || ( *s == '\"' ))
@@ -450,7 +450,7 @@ void TVUTILPipeCleanup( pid_t
(( end[2].fd >= 0 ) && end[2].is_pipe &&
( close( end[2].fd ) < 0 )) ||
- ( waitpid( child_pid, &status, NULL ) < 0 ) ||
+ ( waitpid( child_pid, &status, 0 ) < 0 ) ||
(( end[0].fd >= 0 ) && end[1].is_pipe &&
(( dup2( end[0].fd_saved, end[0].fd ) < 0 ) ||
@@ -475,15 +475,19 @@ void TVUTILPipeCleanup( pid_t
/* TVUTILstrupr - Convert a string to upper case */
void TVUTILstrupr( char *str )
{
- while ( *str != '\0' )
- *(str++) = toupper( *str );
+ while ( *str != '\0' ) {
+ *str = toupper( (unsigned char)*str );
+ str++;
+ }
}
/* TVUTILstrlwr - Convert a string to lower case */
void TVUTILstrlwr( char *str )
{
- while ( *str != '\0' )
- *(str++) = tolower( *str );
+ while ( *str != '\0' ) {
+ *str = tolower( (unsigned char)*str );
+ str++;
+ }
}
/* TVUTILStrStrip - Strip selected characters out of a string */

View file

@ -0,0 +1,62 @@
$NetBSD: patch-ag,v 1.4 2022/04/24 10:57:28 tnn Exp $
Handle png.
Use raw instead of AIFF for ... (unclear what) ...
--- fxtv_cnvt.sh.orig Mon Feb 12 22:18:40 2001
+++ fxtv_cnvt.sh
@@ -32,7 +32,7 @@
#VIDEO_TARGET_FPS="30"
#VIDEO_STREAM="YES"
#
-#IMAGE_TARGET_FMT="YUV" # TIFF|PPM|YUV
+#IMAGE_TARGET_FMT="YUV" # TIFF|PNG|PPM|YUV
#
#CLEANUP_TEMP_FILES="YES"
@@ -73,6 +73,10 @@ MPEG_ENC_PARAM_STR_TIFF=\
'BASE_FILE_FORMAT PPM
INPUT_CONVERT tifftopnm *'
+MPEG_ENC_PARAM_STR_PNG=\
+'BASE_FILE_FORMAT PPM
+INPUT_CONVERT pngtopnm *'
+
MPEG_ENC_PARAM_STR_PPM=\
'BASE_FILE_FORMAT PPM
INPUT_CONVERT *'
@@ -181,8 +185,8 @@ GenAudioPipe() {
# Do we need an intermediate file?
if [ $mpeg_enc = YES ]; then
- out_soxfn="$out_fnbase.aiff"
- out_soxfmt="AIFF"
+ out_soxfn="$out_fnbase.raw"
+ out_soxfmt="RAW"
else
out_soxfn="$GAout_fn"
out_soxfmt="$out_fmt"
@@ -258,6 +262,7 @@ WriteMPEGEncodeParamFile() {
# Write the frame-format specific part
case $frame_fmt in
TIFF) str="$MPEG_ENC_PARAM_STR_TIFF";;
+ PNG) str="$MPEG_ENC_PARAM_STR_PNG";;
PPM) str="$MPEG_ENC_PARAM_STR_PPM" ;;
YUV) str="$MPEG_ENC_PARAM_STR_IYUV";;
esac
@@ -277,6 +282,7 @@ WriteMPEGEncodeParamFile() {
base=`basename $out_fnbase`
case $frame_fmt in
TIFF) ext="tif";;
+ PNG) ext="png";;
PPM) ext="ppm";;
YUV) ext="yuv";;
esac
@@ -321,6 +327,7 @@ CountFrameFiles() {
case $frame_fmt in
TIFF) ext="tif";;
+ PNG) ext="png";;
PPM) ext="ppm";;
YUV) ext="yuv";;
esac

View file

@ -0,0 +1,14 @@
$NetBSD: patch-ah,v 1.4 2022/04/24 10:57:28 tnn Exp $
Handle png.
--- imgsav_dlg.c.orig Mon Sep 6 15:07:29 1999
+++ imgsav_dlg.c
@@ -69,6 +69,7 @@ static Pixmap Select_pixmap = None,
static TV_IFILEFMT_ITEM_DEF Fmtitem_def[] = {
{ TV_STILL_FMT_TIFF , "tiff", "tiffCmd" },
+ { TV_STILL_FMT_PNG , "png", "pngCmd" },
{ TV_STILL_FMT_PPM , "ppm" , "ppmCmd" }
};

View file

@ -0,0 +1,60 @@
$NetBSD: patch-ai,v 1.4 2022/04/24 10:57:28 tnn Exp $
Support png.
Fix LP64 problems.
--- batch_mode.c.orig 1999-10-23 13:50:35.000000000 +0000
+++ batch_mode.c
@@ -154,6 +154,8 @@ static void DoStreamVideo( TV_BATCH_PARM
if ( STREQ( parm->frame_fmt, "TIFF" ) )
fmt = TV_STILL_FMT_TIFF;
+ else if ( STREQ( parm->frame_fmt, "PNG" ) )
+ fmt = TV_STILL_FMT_PNG;
else if ( STREQ( parm->frame_fmt, "PPM" ) )
fmt = TV_STILL_FMT_PPM;
else if ( STREQ( parm->frame_fmt, "YUV" ) )
@@ -175,6 +177,7 @@ static void DoStreamVideo( TV_BATCH_PARM
if ( parm->video_target && !video2stdout )
switch ( fmt ) {
case TV_STILL_FMT_TIFF : frame_ext = "tif"; break;
+ case TV_STILL_FMT_PNG : frame_ext = "png"; break;
case TV_STILL_FMT_PPM : frame_ext = "ppm"; break;
case TV_STILL_FMT_YUV : frame_ext = "yuv"; break;
default: abort();
@@ -187,7 +190,7 @@ static void DoStreamVideo( TV_BATCH_PARM
}
/* Prepare the audio output filedesc */
- if ( parm->audio_target )
+ if ( parm->audio_target ) {
if ( audio2stdout )
aud_fd = 1;
else
@@ -197,6 +200,7 @@ static void DoStreamVideo( TV_BATCH_PARM
parm->audio_target );
exit(1);
}
+ }
/* Read header */
if ( !TVRAWVIDEOHeaderRead( rf, &img, &snd, &eof ) ) {
@@ -209,7 +213,8 @@ static void DoStreamVideo( TV_BATCH_PARM
return;
/* Sanity check raw data with save type */
- if ( ((( fmt == TV_STILL_FMT_TIFF ) || ( fmt == TV_STILL_FMT_PPM )) &&
+ if ( ((( fmt == TV_STILL_FMT_TIFF ) || ( fmt == TV_STILL_FMT_PNG )
+ || ( fmt == TV_STILL_FMT_PPM )) &&
( img.pix_geom.type != TV_PIXELTYPE_RGB )) ||
(( fmt == TV_STILL_FMT_YUV ) &&
( img.pix_geom.type != TV_PIXELTYPE_YUV )) ) {
@@ -288,7 +293,7 @@ static void DoStreamVideo( TV_BATCH_PARM
else {
char suffix[80];
- sprintf( suffix, ".%.5ld.%s", frame_no++, frame_ext );
+ sprintf( suffix, ".%.5d.%s", frame_no++, frame_ext );
sprintf( img_fname, parm->video_target, suffix );
if ( i == 0 ) {

View file

@ -0,0 +1,32 @@
$NetBSD: patch-aj,v 1.5 2022/04/24 10:57:28 tnn Exp $
Handle always-on-top.
Handle png.
--- Fxtv.orig 2003-09-28 17:38:29.000000000 +0200
+++ Fxtv 2003-09-28 17:38:29.000000000 +0200
@@ -11,6 +11,8 @@
! tuner, video, svideo, csvideo, dev3
!Fxtv*defaultAudioInput: tuner
! tuner, external, internal, auto
+Fxtv*alwaysOnTop: True
+ ! Always On Top
Fxtv*afc: False
! Automatic Frequency Control
!Fxtv*remoteType: Hauppauge
@@ -320,6 +322,7 @@
*imageSaveDialog*suffixLabel.label: Append Img # Suffix
*imageSaveDialog*formatLabel.label: Format:
*imageSaveDialog*formatMenuBox*tiffCmd.label: TIFF
+*imageSaveDialog*formatMenuBox*pngCmd.label: PNG
*imageSaveDialog*formatMenuBox*ppmCmd.label: PPM
*imageSaveDialog*okCmd.label: OK
@@ -432,6 +435,7 @@
*videoSaveDialog*imageEncLabel.label: IMAGE ENCODE
*videoSaveDialog*iFileFmtLabel.label: Format:
*videoSaveDialog*iFileFmtMenuBox*tiffCmd.label: TIFF
+*videoSaveDialog*iFileFmtMenuBox*pngCmd.label: PNG
*videoSaveDialog*iFileFmtMenuBox*ppmCmd.label: PPM
*videoSaveDialog*iFileFmtMenuBox*yuvCmd.label: YUV

View file

@ -0,0 +1,24 @@
$NetBSD: patch-ak,v 1.4 2022/04/24 10:57:28 tnn Exp $
Handle always-on-top.
Handle png.
--- glob.h.orig 2001-02-12 20:24:44.000000000 +0100
+++ glob.h
@@ -54,6 +54,7 @@ typedef enum {
typedef enum {
TV_STILL_FMT_TIFF,
+ TV_STILL_FMT_PNG,
TV_STILL_FMT_PPM,
TV_STILL_FMT_YUV,
TV_NUM_STILL_FMTS
@@ -133,6 +134,8 @@ typedef struct {
TV_TUNER_MODE tuner_mode;
TV_BOOL afc_mode;
+ TV_BOOL aot_mode;
+
TV_BOOL last_station_is_chan;
TV_INT32 last_chan;
double last_freq;

View file

@ -0,0 +1,170 @@
$NetBSD: patch-al,v 1.4 2022/04/24 10:57:28 tnn Exp $
Support png.
Fix LP64 problems.
--- vidsav_dlg.c.orig 2001-02-12 21:20:10.000000000 +0000
+++ vidsav_dlg.c
@@ -235,6 +235,7 @@ static TV_ICAPFMT_ITEM_DEF Icap_fmt_
static TV_IFILEFMT_ITEM_DEF Ifile_fmt_item_def[] = {
{ TV_STILL_FMT_TIFF , "tiff", "tiffCmd" },
+ { TV_STILL_FMT_PNG , "png", "pngCmd" },
{ TV_STILL_FMT_PPM , "ppm" , "ppmCmd" },
{ TV_STILL_FMT_YUV , "yuv" , "yuvCmd" }
};
@@ -270,7 +271,7 @@ static void SetMenuSelection( Widget men
}
if ( i >= Icap_fmt_item_def_size ) {
fprintf( stderr,
- "TVVIDSAVDIALOGSetSel: Unsupported filefmt %lu\n",
+ "TVVIDSAVDIALOGSetSel: Unsupported filefmt %u\n",
choice );
exit(1);
}
@@ -287,7 +288,7 @@ static void SetMenuSelection( Widget men
}
if ( i >= Ifile_fmt_item_def_size ) {
fprintf( stderr,
- "TVVIDSAVDIALOGSetSel: Unsupported filefmt %lu\n",
+ "TVVIDSAVDIALOGSetSel: Unsupported filefmt %u\n",
choice );
exit(1);
}
@@ -304,7 +305,7 @@ static void SetMenuSelection( Widget men
}
if ( i >= Ffmt_item_def_size ) {
fprintf( stderr,
- "TVVIDSAVDIALOGSetSel: Unsupported filefmt %lu\n",
+ "TVVIDSAVDIALOGSetSel: Unsupported filefmt %u\n",
choice );
exit(1);
}
@@ -321,7 +322,7 @@ static void SetMenuSelection( Widget men
}
if ( i >= Sfmt_item_def_size ) {
fprintf( stderr,
- "TVVIDSAVDIALOGSetSel: Unsupported sampfmt %lu\n",
+ "TVVIDSAVDIALOGSetSel: Unsupported sampfmt %u\n",
choice );
exit(1);
}
@@ -338,7 +339,7 @@ static void SetMenuSelection( Widget men
}
if ( i >= Chan_item_def_size ) {
fprintf( stderr,
- "TVVIDSAVDIALOGSetSel: Unsupported #chan %lu\n",
+ "TVVIDSAVDIALOGSetSel: Unsupported #chan %u\n",
choice );
exit(1);
}
@@ -355,7 +356,7 @@ static void SetMenuSelection( Widget men
}
if ( i >= Rate_item_def_size ) {
fprintf( stderr,
- "TVVIDSAVDIALOGSetSel: Unsupported rate %lu\n",
+ "TVVIDSAVDIALOGSetSel: Unsupported rate %u\n",
choice );
exit(1);
}
@@ -372,7 +373,7 @@ static void SetMenuSelection( Widget men
}
if ( i >= XtNumber( Vtrg_item_def ) ) {
fprintf( stderr,
- "TVVIDSAVDIALOGSetSel: Unsupported filefmt %lu\n",
+ "TVVIDSAVDIALOGSetSel: Unsupported filefmt %u\n",
choice );
exit(1);
}
@@ -507,7 +508,7 @@ static TV_BOOL PrepareForVideo( TV_BOOL
NULL );
if ( str == NULL )
str = "";
- if (( sscanf( str, "%ldx%ld", &g.w, &g.h ) != 2 ) ||
+ if (( sscanf( str, "%dx%d", &g.w, &g.h ) != 2 ) ||
!TVCAPTUREValidRegionGeom( c, &g )) {
XUTILDialogPause( TVTOPLEVEL, "Error", "Invalid size.",
TV_DIALOG_TYPE_OK );
@@ -521,7 +522,7 @@ static TV_BOOL PrepareForVideo( TV_BOOL
NULL );
if ( str == NULL )
str = "";
- if (( sscanf( str, "%ld", &fps ) != 1 ) ||
+ if (( sscanf( str, "%d", &fps ) != 1 ) ||
( fps < 1 ) || ( fps > c->fps_max )) {
XUTILDialogPause( TVTOPLEVEL, "Error", "Invalid speed.",
TV_DIALOG_TYPE_OK );
@@ -840,7 +841,7 @@ static TV_BOOL WriteVidConvertShScript(
}
fprintf( fp, "AUDIO_CAP_FMT_SAMPLE='%s'\n", str );
fprintf( fp, "AUDIO_CAP_FMT_CHAN='%d'\n", p->snd_fmt.stereo ? 2 : 1 );
- fprintf( fp, "AUDIO_CAP_FMT_FREQ='%ld'\n", p->snd_fmt.samp_rate );
+ fprintf( fp, "AUDIO_CAP_FMT_FREQ='%d'\n", p->snd_fmt.samp_rate );
switch ( p->snd_fmt.file_fmt ) {
case TV_AUDIO_FILE_FMT_RAW : str = "RAW" ; break;
@@ -855,8 +856,8 @@ static TV_BOOL WriteVidConvertShScript(
fprintf( fp, "AUDIO_TARGET_FMT='%s'\n\n", str );
- fprintf( fp, "VIDEO_RES_X='%ld'\n", p->geom.w );
- fprintf( fp, "VIDEO_RES_Y='%ld'\n", p->geom.h );
+ fprintf( fp, "VIDEO_RES_X='%d'\n", p->geom.w );
+ fprintf( fp, "VIDEO_RES_Y='%d'\n", p->geom.h );
switch ( p->img_cap_fmt ) {
case TV_ICAP_FMT_RGB16 : str = "RGB16"; break;
@@ -867,11 +868,12 @@ static TV_BOOL WriteVidConvertShScript(
}
fprintf( fp, "VIDEO_CAP_FMT='%s'\n", str );
- fprintf( fp, "VIDEO_TARGET_FPS='%ld'\n", p->fps );
+ fprintf( fp, "VIDEO_TARGET_FPS='%d'\n", p->fps );
fprintf( fp, "VIDEO_STREAM='%s'\n\n", ( p->streaming ? "YES" : "NO" ) );
switch ( p->img_sav_fmt ) {
case TV_STILL_FMT_TIFF : str = "TIFF"; break;
+ case TV_STILL_FMT_PNG : str = "PNG"; break;
case TV_STILL_FMT_PPM : str = "PPM" ; break;
case TV_STILL_FMT_YUV : str = "YUV" ; break;
default : str = "" ; break;
@@ -1202,7 +1204,7 @@ static void RecordCmdCB( Widget w, XtPoi
/* This is a cheesy first-cut */
fps = Vid_stats.frames*1000000L/Vid_stats.time_us;
- sprintf( str, "%ld", fps );
+ sprintf( str, "%d", fps );
TextValUpdate( FPS_text, str );
}
@@ -1926,10 +1928,10 @@ void TVVIDSAVDIALOGResync()
/* Set text fields to current settings */
TextValUpdate( Fname_text, d->fn_video_base );
- sprintf( str, "%ldx%ld", d->video.geom.w, d->video.geom.h );
+ sprintf( str, "%dx%d", d->video.geom.w, d->video.geom.h );
TextValUpdate( Res_text, str );
- sprintf( str, "%ld", d->video.fps );
+ sprintf( str, "%d", d->video.fps );
TextValUpdate( FPS_text, str );
/* Set selections based on active format */
@@ -2048,7 +2050,7 @@ void TVVIDSAVDIALOGNewFrameHdlr( TV_IMAG
else
in_a_row = 0;
- VDPRINTF(("%4ld: Delay = %7ld us (Avg = %7ld ms, FPS = %2ld)%s\n",
+ VDPRINTF(("%4d: Delay = %7ld us (Avg = %7d ms, FPS = %2ld)%s\n",
Vid_stats.frames, diff,
Vid_stats.time_us/Vid_stats.frames/1000,
Vid_stats.frames*1000000L/Vid_stats.time_us,
@@ -2158,7 +2160,7 @@ void TVVIDSAVDIALOGRecordStart( TV_INT32
d->video.geom.w = w;
d->video.geom.h = h;
if ( Res_text ) {
- sprintf( res_str, "%ldx%ld", w,h );
+ sprintf( res_str, "%dx%d", w,h );
TextValUpdate( Res_text, res_str );
}
}

View file

@ -0,0 +1,15 @@
$NetBSD: patch-am,v 1.4 2022/04/24 10:57:28 tnn Exp $
Dragonfly support.
--- tvcapture.h.orig 2006-01-03 14:45:01.000000000 +0000
+++ tvcapture.h
@@ -34,6 +34,8 @@
#include <X11/Intrinsic.h>
#ifdef __NetBSD__
# include <dev/ic/bt8xx.h>
+#elif defined(__DragonFly__)
+# include <dev/video/meteor/ioctl_meteor.h>
#else
# include <machine/ioctl_meteor.h>
#endif

View file

@ -0,0 +1,15 @@
$NetBSD: patch-an,v 1.4 2022/04/24 10:57:28 tnn Exp $
Dragonfly support.
--- voxware.h.orig 2006-01-03 14:46:08.000000000 +0000
+++ voxware.h
@@ -32,7 +32,7 @@
#if defined(__FreeBSD__)
# include <machine/soundcard.h>
-#elif defined(linux) || defined(__bsdi__)
+#elif defined(linux) || defined(__bsdi__) || defined(__DragonFly__)
# include <sys/soundcard.h>
#elif defined(__NetBSD__) || defined(__OpenBSD__)
# include <soundcard.h>

View file

@ -0,0 +1,33 @@
$NetBSD: patch-annot_c,v 1.3 2022/04/24 10:57:28 tnn Exp $
Fix LP64 problems.
--- annot.c~ 1999-09-05 18:42:16.000000000 +0000
+++ annot.c
@@ -57,7 +57,7 @@
#define AUTOMODE_TIMER_MS 8
-#define VOLUME_FMT "Volume: %ld%%"
+#define VOLUME_FMT "Volume: %d%%"
#define MUTE_STR "MUTE"
/*#define FNPRINTF(x) printf x*/
@@ -444,7 +444,7 @@ static void TVANNOTVolumePropSetDrawable
}
/* Determine new location */
- sprintf( str, VOLUME_FMT, 100L );
+ sprintf( str, VOLUME_FMT, 100 );
str_width = XmbTextEscapement( p->fontset, str, strlen(str) );
extents = XExtentsOfFontSet( p->fontset );
@@ -607,7 +607,7 @@ static TV_BOOL TVANNOTStationPropUpdate(
station->freq );
}
else if ( state.tuner_chan_active )
- sprintf( chan_str, "%ld", state.tuner_chan );
+ sprintf( chan_str, "%d", state.tuner_chan );
else
sprintf( chan_str, "%.2f MHz", state.tuner_freq );

View file

@ -0,0 +1,25 @@
$NetBSD: patch-ao,v 1.4 2022/04/24 10:57:28 tnn Exp $
Needs sys/ioctl.h.
Dragonfly support.
--- haup_remote.c.orig 2000-05-21 15:10:04.000000000 +0000
+++ haup_remote.c
@@ -31,6 +31,7 @@
*
*/
+#include <sys/ioctl.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
@@ -38,6 +39,9 @@
#include <sys/fcntl.h>
#ifdef __NetBSD__
# include <dev/ic/bt8xx.h>
+#elif defined(__DragonFly__)
+# include <dev/video/meteor/ioctl_meteor.h>
+# include <dev/video/bktr/ioctl_bt848.h>
#else
# include <machine/ioctl_meteor.h>
# include <machine/ioctl_bt848.h>

View file

@ -0,0 +1,45 @@
$NetBSD: patch-ap,v 1.4 2022/04/24 10:57:28 tnn Exp $
Fix illegal C.
--- videolib/videolib.c.orig 1999-11-03 02:22:04.000000000 +0000
+++ videolib/videolib.c 2006-06-30 19:10:23.000000000 +0100
@@ -479,9 +479,9 @@
*(p++) = (*src16 >> 8) | (*src16 << 8);
src16++;
}
- for ( i = dst_line_pad; i > 0; i-- )
- *(((VL_UINT8 *)p)++) = 0x00;
- (VL_UINT8 *)dst_line += dst->geom.bytes_per_line;
+ (void)memset(p, 0, dst_line_pad);
+ dst_line = (VL_UINT16 *)((VL_UINT8 *)dst_line +
+ dst->geom.bytes_per_line);
}
src16 = dst_line = (VL_UINT16 *) dst->buf;
@@ -513,9 +513,9 @@
if ( src_padded )
src16 = (VL_UINT16 *)( (VL_UINT8 *)src16 + dst_line_pad );
else
- for ( i = dst_line_pad; i > 0; i-- )
- *(((VL_UINT8 *)dst)++) = 0x00;
- (VL_UINT8 *)dst_line += dst->geom.bytes_per_line;
+ (void)memset(p, 0, dst_line_pad);
+ dst_line = (VL_UINT16 *)((VL_UINT8 *)dst_line +
+ dst->geom.bytes_per_line);
}
if ( !dst_swap_b ) { /* More ugliness */
@@ -527,8 +527,10 @@
*(p++) = (*src16 >> 8) | (*src16 << 8);
src16++;
}
- (VL_UINT8 *)dst_line += dst->geom.bytes_per_line;
- (VL_UINT8 *)src16 += dst->geom.bytes_per_line;
+ dst_line = (VL_UINT16 *)((VL_UINT8 *)dst_line +
+ dst->geom.bytes_per_line);
+ src16 = (VL_UINT16 *)((VL_UINT8 *)src16 +
+ dst->geom.bytes_per_line);
}
}
}

View file

@ -0,0 +1,15 @@
$NetBSD: patch-appear_dlg_c,v 1.3 2022/04/24 10:57:28 tnn Exp $
Fix LP64 warning.
--- appear_dlg.c~ 1999-09-04 18:10:26.000000000 +0000
+++ appear_dlg.c
@@ -159,7 +159,7 @@ static void ControlSliderScrollCB( Widge
TV_CAPTURE *c = &G_glob.capture;
TV_APPEAR_CTL_DEF *r = (TV_APPEAR_CTL_DEF *) cl_data;
float percent;
- int pos = (int)cb_data;
+ int pos = (intptr_t)cb_data;
Dimension length;
double lim[2],
val;

View file

@ -0,0 +1,105 @@
$NetBSD: patch-aq,v 1.4 2022/04/24 10:57:28 tnn Exp $
Support Dragonfly.
Fix LP64 problems.
--- tvcapture.c.orig 2001-02-12 18:59:22.000000000 +0000
+++ tvcapture.c
@@ -37,6 +37,8 @@
#include <sys/mman.h>
#ifdef __NetBSD__
# include <dev/ic/bt8xx.h>
+#elif defined(__DragonFly__)
+# include <dev/video/bktr/ioctl_bt848.h>
#else
# include <machine/ioctl_bt848.h>
#endif
@@ -238,7 +240,7 @@ TV_BOOL TVCAPTUREGetPendingFrame( TV_IMA
return FALSE;
if ( S_frame_done_count-- > 0 )
- DRVPRINTF(( "%ld frames behind\n", S_frame_done_count ));
+ DRVPRINTF(( "%d frames behind\n", S_frame_done_count ));
image.buf = c->drv_buf;
memcpy( &image.geom, &c->geom, sizeof( image.geom ) );
@@ -815,7 +817,7 @@ TV_BOOL TVCAPTUREQueryDriverState( TV_CA
case METEOR_INPUT_DEV3 : s->input_dev = TV_DEVICE_DEV3 ; break;
#endif
default :
- fprintf( stderr, "TVCAPTUREQueryDriverState(): Bad INPUT %ld\n",
+ fprintf( stderr, "TVCAPTUREQueryDriverState(): Bad INPUT %d\n",
larg );
return False;
}
@@ -835,7 +837,7 @@ TV_BOOL TVCAPTUREQueryDriverState( TV_CA
case BT848_IFORM_F_SECAM : s->input_fmt = TV_INPUT_SECAM ; break;
case BT848_IFORM_F_RSVD : s->input_fmt = TV_INPUT_PALNCOMB; break;
default :
- fprintf( stderr, "TVCAPTUREQueryDriverState(): Bad FMT %ld\n",
+ fprintf( stderr, "TVCAPTUREQueryDriverState(): Bad FMT %d\n",
larg );
return False;
}
@@ -1289,7 +1291,7 @@ void TVCAPTUREPrintPixelFormats( TV_CAPT
}
SUPRINTF((
- " %2ld %2ld %.8lx, %.8lx, %.8lx %s\n",
+ " %2d %2d %.8x, %.8x, %.8x %s\n",
bpp, pg->Bpp, pg->mask[0], pg->mask[1], pg->mask[2],
swap_chars ));
}
@@ -1306,7 +1308,7 @@ void TVCAPTUREPrintPixelFormats( TV_CAPT
continue;
SUPRINTF((
- " %ld,%ld,%ld %ld,%ld,%ld %ld,%ld,%ld %-7s %-10s "
+ " %d,%d,%d %d,%d,%d %d,%d,%d %-7s %-10s "
"%-5s %-6s %s\n",
pg->samp_size [0], pg->samp_size [1], pg->samp_size [2],
pg->samp_int_h[0], pg->samp_int_h[1], pg->samp_int_h[2],
@@ -1535,7 +1537,7 @@ void TVCAPTUREInit( TV_CAPTURE *c )
c->contrast = 70.0; /* % */
c->sat_u = 100.0; /* % */
c->sat_v = 100.0; /* % */
- c->addr = NULL;
+ c->addr = 0;
/* geom -- see below */
c->frame_done_cb = NULL;
@@ -1565,7 +1567,7 @@ void TVCAPTUREInit( TV_CAPTURE *c )
default :
case TV_INPUT_AUTO :
fprintf( stderr,
- "TVCAPTUREInit: Unsupported input format %ld\n",
+ "TVCAPTUREInit: Unsupported input format %d\n",
c->input_format );
exit(1);
}
@@ -1729,7 +1731,7 @@ TV_BOOL TVCAPTUREConfigure( TV_CAPTURE
goto RETURN;
}
- if ( c->xfer_mode == TV_TRANSFER_DIRECT )
+ if ( c->xfer_mode == TV_TRANSFER_DIRECT ) {
if ( !( x->visual_modes[ x->active_visual ] & TV_TRANSFER_DIRECT )) {
strcpy( S_err_msg, "Active visual does not support direct video");
goto RETURN;
@@ -1738,6 +1740,7 @@ TV_BOOL TVCAPTUREConfigure( TV_CAPTURE
strcpy( S_err_msg, "Direct transfer only supported for video" );
goto RETURN;
}
+ }
/* Get capture geometry */
if ( c->xfer_mode == TV_TRANSFER_DIRECT ) {
@@ -1752,7 +1755,7 @@ TV_BOOL TVCAPTUREConfigure( TV_CAPTURE
/* Verify res limits and precision (all modes) */
if (( g.w != g.w / c->width_res * c->width_res ) ||
( g.h != g.h / c->height_res * c->height_res )) {
- sprintf( S_err_msg, "Capture geometry must be a multiple of %ldx%ld",
+ sprintf( S_err_msg, "Capture geometry must be a multiple of %dx%d",
c->width_res, c->height_res );
goto RETURN;
}

View file

@ -0,0 +1,15 @@
$NetBSD: patch-audiocnvt_c,v 1.3 2022/04/24 10:57:28 tnn Exp $
Fix LP64 problems.
--- audiocnvt.c~ 1999-09-04 18:27:13.000000000 +0000
+++ audiocnvt.c
@@ -166,7 +166,7 @@ void TVAUDIOCNVTBuildSoundFmtSoxArgs(
if ( fmt->file_fmt == TV_AUDIO_FILE_FMT_RAW ) {
srec = GetSampleFmtDef( fmt->samp_fmt );
- sprintf( args, "%s -c %d -r %ld",
+ sprintf( args, "%s -c %d -r %d",
srec->sox_opt, fmt->stereo ? 2 : 1, fmt->samp_rate );
}
else {

View file

@ -0,0 +1,51 @@
$NetBSD: patch-audsav_dlg_c,v 1.3 2022/04/24 10:57:28 tnn Exp $
Fix LP64 problems.
--- audsav_dlg.c~ 1999-09-04 18:09:01.000000000 +0000
+++ audsav_dlg.c
@@ -154,7 +154,7 @@ static void SetMenuSelection( Widget men
}
if ( i >= XtNumber( Ffmt_item_def ) ) {
fprintf( stderr,
- "TVAUDSAVDIALOGSetSel: Unsupported filefmt %ld\n",
+ "TVAUDSAVDIALOGSetSel: Unsupported filefmt %d\n",
choice );
exit(1);
}
@@ -171,7 +171,7 @@ static void SetMenuSelection( Widget men
}
if ( i >= XtNumber( Sfmt_item_def ) ) {
fprintf( stderr,
- "TVAUDSAVDIALOGSetSel: Unsupported sampfmt %ld\n",
+ "TVAUDSAVDIALOGSetSel: Unsupported sampfmt %d\n",
choice );
exit(1);
}
@@ -187,7 +187,7 @@ static void SetMenuSelection( Widget men
break;
}
if ( i >= XtNumber( Chan_item_def ) ) {
- fprintf( stderr, "TVAUDSAVDIALOGSetSel: Unsupported #chan %ld\n",
+ fprintf( stderr, "TVAUDSAVDIALOGSetSel: Unsupported #chan %d\n",
choice );
exit(1);
}
@@ -203,7 +203,7 @@ static void SetMenuSelection( Widget men
break;
}
if ( i >= XtNumber( Rate_item_def ) ) {
- fprintf( stderr, "TVAUDSAVDIALOGSetSel: Unsupported rate %ld\n",
+ fprintf( stderr, "TVAUDSAVDIALOGSetSel: Unsupported rate %d\n",
choice );
exit(1);
}
@@ -698,7 +698,7 @@ static void PlaybackCmdCB( Widget w, XtP
break;
/* Build Cmd: "sox %s - %s -c %d -r %d -" */
- sprintf( shell_cmd, "sox %s - %s -c %d -r %ld -",
+ sprintf( shell_cmd, "sox %s - %s -c %d -r %d -",
Ffmt_item_def[j].sox_opt, Sfmt_item_def[i].sox_opt,
Sel_stereo ? 2 : 1, Sel_rate );
}

View file

@ -0,0 +1,64 @@
$NetBSD: patch-ba,v 1.6 2022/04/24 10:57:28 tnn Exp $
Deal with mouse headers.
Fix illegal C.
Dragonfly support.
--- remote.c.orig 2001-02-12 21:05:08.000000000 +0000
+++ remote.c
@@ -33,6 +33,8 @@
/* ******************** Include Files ************** */
+#include "netbsdconf.h"
+
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
@@ -52,9 +54,13 @@
# else
# include <machine/mouse.h>
# endif
+#elif defined(__DragonFly__)
+# include <sys/mouse.h>
#else
+#if HAVE_MOUSE_H
# include <machine/mouse.h>
#endif
+#endif
#include <X11/Intrinsic.h>
#include "tvdebug.h"
#include "tvutil.h"
@@ -62,10 +68,12 @@
#include "haup_remote.h"
#include "pixelview_remote.h"
+#if HAVE_MOUSE_H
+
/* ******************** Local defines ************** */
/* FIXME: Remove this old code someday */
-#ifdef 0
+#if 0
# define OLD_DEV_SYSMOUSE_STUFF
#endif
@@ -847,3 +855,18 @@ void TVREMOTEFlush( void )
case REMOTE_TYPE_PIXELVIEW : TVPIXELVIEWREMOTEFlush(); break;
}
}
+
+#else /* HAVE_MOUSE_H */
+void
+TVREMOTEOpen( XtAppContext app_ctx,
+ char rem_type[],
+ TVREMOTE_CB_FUNCT *cb )
+ {
+ }
+
+void
+TVREMOTEFlush( void )
+ {
+ }
+
+#endif /* HAVE_MOUSE_H */

View file

@ -0,0 +1,14 @@
$NetBSD: patch-bb,v 1.4 2022/04/24 10:57:28 tnn Exp $
Handle always-on-top.
--- glob.c.orig 2001-02-12 19:26:16.000000000 +0100
+++ glob.c
@@ -131,6 +131,7 @@ void TVGLOBInitPrefs( TV_PREFS *p )
p->cable_freq_set = 1;
p->tuner_mode = TV_TUNER_MODE_ANTENNA;
p->afc_mode = TRUE;
+ p->aot_mode = TRUE;
p->last_chan = 3; /* -1 = use last_freq */
p->last_freq = 0.0;

View file

@ -0,0 +1,87 @@
$NetBSD: patch-bc,v 1.4 2022/04/24 10:57:28 tnn Exp $
Handle always-on-top.
Fix LP64 problems.
--- tvmenu.c.orig 2001-02-12 21:19:33.000000000 +0000
+++ tvmenu.c
@@ -103,7 +103,7 @@ typedef void XT_CB( Widget w, XtPointer
/* ******************** Forward declarations ************** */
-static XT_CB QuitCB, FreezeCB, MuteCB, ZoomCB, InputCB, AfcCB, TModeCB,
+static XT_CB QuitCB, FreezeCB, MuteCB, ZoomCB, InputCB, AfcCB, AotCB, TModeCB,
ChanUpDnCB, AppearCB, AspectCB, AboutCB, ImgSavCB, ImgSavAsCB,
AudSavAsCB, VidSavAsCB, FormatCB, AudInpCB, StationPopupCB;
@@ -160,6 +160,7 @@ static TV_MENUITEM_DEF Menuitem_def[] =
{ TVMI( FORMAT,FORMAT_PALNCOMB ), "palncombFmt" , WC_mcmd , FormatCB },
{ TVMI( OPTIONS,OPTIONS_ASPECT ), "aspectLockCmd" , WC_mcmd , AspectCB },
{ TVMI( OPTIONS,OPTIONS_AFC ), "setAfcCmd", WC_mcmd , AfcCB },
+ { TVMI( OPTIONS,OPTIONS_AOT ), "setAotCmd", WC_mcmd , AotCB },
{ TV_MENU_OPTIONS, -1 , "line" , WC_mline, NULL },
/*
{ TVMI( OPTIONS,OPTIONS_SAVE ), "saveOptionsCmd", WC_mcmd , NULL },
@@ -396,6 +397,16 @@ static void AfcCB( Widget w, XtPointer c
TVMENUSetSelectedAfcMode( p->afc_mode );
}
+/* AotCB - Change the always on top mode */
+static void AotCB( Widget w, XtPointer cl, XtPointer cb )
+{
+ TV_PREFS *p = &G_glob.prefs;
+
+ p->aot_mode = !p->aot_mode;
+ XUTILSetAlwaysOnTop( p->aot_mode );
+ TVMENUSetSelectedAotMode( p->aot_mode );
+}
+
void TVMENUSetSelectedInputFormat( TV_INPUT_FORMAT fmt )
{
TV_MENUITEM_DEF *mi;
@@ -896,7 +907,7 @@ void TVTOOLSSetToggleState( TV_TOOLITEM_
break;
if ( i >= XtNumber( Toolitem_def ) ) {
- fprintf( stderr, "TVTOOLSETSetToggleState: Bad key %ld\n", i );
+ fprintf( stderr, "TVTOOLSETSetToggleState: Bad key %d\n", i );
exit(1);
}
@@ -1008,6 +1019,19 @@ void TVMENUSetSelectedAfcMode( TV_BOOL a
NULL);
}
+void TVMENUSetSelectedAotMode( TV_BOOL aot )
+{
+ TV_MENUITEM_DEF *item = LookupMenuItemByKey( TV_MENUITEM_OPTIONS_AOT );
+ Pixmap pix;
+
+ if ( Select_pixmap == None )
+ TVMENULoadRadioPixmaps();
+
+ pix = aot ? Select_pixmap : Unselect_pixmap;
+ XtVaSetValues( item->wgt , XtNleftBitmap, pix,
+ NULL);
+}
+
void TVMENUSetSelectedAspectLock( TV_BOOL aspect_lock )
{
TV_MENUITEM_DEF *item = LookupMenuItemByKey( TV_MENUITEM_OPTIONS_ASPECT );
@@ -1043,6 +1067,7 @@ void TVMENUResync()
TVMENUSetSelectedAudioInputDevice( aud_input );
TVMENUSetSelectedTunerMode ( p->tuner_mode );
TVMENUSetSelectedAfcMode ( p->afc_mode );
+ TVMENUSetSelectedAotMode ( p->aot_mode );
}
/* TVTOOLSSetStationText - Sets the channel text to the specified */
@@ -1134,7 +1159,7 @@ void TVTOOLSResync()
strncat( chan_str, station->id, sizeof(chan_str)-1 );
}
else if ( s.tuner_chan_active )
- sprintf( chan_str, "%ld", s.tuner_chan );
+ sprintf( chan_str, "%d", s.tuner_chan );
else
sprintf( chan_str, "f%.2f", s.tuner_freq );

View file

@ -0,0 +1,23 @@
$NetBSD: patch-bd,v 1.4 2022/04/24 10:57:28 tnn Exp $
Handle always-on-top.
--- tvmenu.h.orig 2001-02-12 20:00:59.000000000 +0100
+++ tvmenu.h
@@ -63,6 +63,7 @@ typedef enum {
TV_MENUITEM_FORMAT_PALNCOMB,
TV_MENUITEM_OPTIONS_ASPECT,
TV_MENUITEM_OPTIONS_AFC,
+ TV_MENUITEM_OPTIONS_AOT,
TV_MENUITEM_OPTIONS_SAVE,
TV_MENUITEM_HELP_ABOUT,
TV_NUM_MENUITEMS
@@ -101,6 +102,8 @@ void TVMENUSetSelectedAudioInputDevice(
void TVMENUSetSelectedAfcMode( TV_BOOL afc );
+void TVMENUSetSelectedAotMode( TV_BOOL aot );
+
void TVMENUSetSelectedAspectLock( TV_BOOL aspect_lock );
void TVMENUSetSelectedTunerMode( TV_TUNER_MODE mode );

View file

@ -0,0 +1,15 @@
$NetBSD: patch-be,v 1.4 2022/04/24 10:57:28 tnn Exp $
Handle always-on-top.
--- xutil.h.orig 2003-09-28 17:18:28.000000000 +0200
+++ xutil.h 2003-09-28 17:18:28.000000000 +0200
@@ -137,6 +137,8 @@
int screen,
XVisualInfo **fb_visual );
+void XUTILSetAlwaysOnTop( TV_BOOL status );
+
#ifdef __cplusplus
} /* Close 'extern "C"' */
#endif

View file

@ -0,0 +1,96 @@
$NetBSD: patch-bf,v 1.4 2022/04/24 10:57:28 tnn Exp $
Handle always-on-top.
Fix LP64 problems.
--- xutil.c.orig 1999-11-05 00:38:54.000000000 +0000
+++ xutil.c
@@ -44,6 +44,7 @@
#include <X11/Shell.h>
#include <X11/Xaw/Dialog.h>
#include <X11/xpm.h>
+#include "glob.h"
#include "tvdefines.h"
#include "xutil.h"
#include "app_rsrc.h"
@@ -63,6 +64,10 @@ void XawScrollbarSetThumb( Widget w, flo
#define WM_BORDER_PAD 40
+#define _NET_WM_STATE_REMOVE 0
+#define _NET_WM_STATE_ADD 1
+#define _NET_WM_STATE_TOGGLE 2
+
typedef struct {
pid_t cmd_pid;
TVUTIL_PIPE_END end[3];
@@ -371,7 +376,7 @@ TV_BOOL XUTILPixmapLoad( char *pixmap
XFreePixmap( XtDisplay( wgt ), pixmap_depth1 );
XFreeGC ( XtDisplay( wgt ), gc );
if ( pixmap_mask != NULL )
- *pixmap_mask = NULL;
+ *pixmap_mask = 0;
}
else {
@@ -406,11 +411,12 @@ TV_BOOL XUTILPixmapLoad( char *pixmap
}
*pixmap = pix_returned;
- if ( pix_mask_returned )
+ if ( pix_mask_returned ) {
if ( pixmap_mask != NULL )
*pixmap_mask = pix_mask_returned;
else
XFreePixmap( XtDisplay( wgt ), pix_mask_returned );
+ }
}
if ( pixmap_path != NULL )
@@ -1543,3 +1549,46 @@ void XUTILDetermineFrameBufferVisual( Di
}
}
}
+
+static void
+change_state (Display *d, Screen * screen, Window xwindow, int add,
+ Atom state1, Atom state2)
+{
+ XEvent xev;
+
+ xev.xclient.type = ClientMessage;
+ xev.xclient.serial = 0;
+ xev.xclient.send_event = True;
+ xev.xclient.display = d;
+ xev.xclient.window = xwindow;
+ xev.xclient.message_type = XInternAtom (d, "_NET_WM_STATE", FALSE);
+ xev.xclient.format = 32;
+ xev.xclient.data.l[0] = add ? _NET_WM_STATE_ADD : _NET_WM_STATE_REMOVE;
+ xev.xclient.data.l[1] = state1;
+ xev.xclient.data.l[2] = state2;
+
+ XSendEvent (d, RootWindowOfScreen (screen), False,
+ SubstructureRedirectMask | SubstructureNotifyMask, &xev);
+}
+
+void XUTILSetAlwaysOnTop(TV_BOOL status)
+{
+ Display *d = TVDISPLAY;
+ Screen *screen = XtScreen ( TVTOPLEVEL );
+ Window win = XtWindow ( TVTOPLEVEL );
+ static Atom xa_ABOVE = 0;
+ static Atom xa_BELOW = 0;
+
+ if (!xa_ABOVE)
+ {
+ xa_ABOVE = XInternAtom (d, "_NET_WM_STATE_ABOVE", FALSE);
+ xa_BELOW = XInternAtom (d, "_NET_WM_STATE_BELOW", FALSE);
+ }
+
+ if (status) {
+ change_state (d, screen, win, FALSE, xa_ABOVE, xa_BELOW);
+ change_state (d, screen, win, TRUE, xa_ABOVE, None);
+ } else {
+ change_state (d, screen, win, FALSE, xa_ABOVE, xa_BELOW);
+ }
+}

View file

@ -0,0 +1,52 @@
$NetBSD: patch-bg,v 1.4 2022/04/24 10:57:28 tnn Exp $
Handle always-on-top.
Fix LP64 problems.
--- tv.c.orig 2001-02-12 19:03:09.000000000 +0000
+++ tv.c
@@ -285,7 +285,7 @@ static void TVStationListStrToList(
TVUTILOutOfMemory();
for ( i = 0; i < TV_MAX_CHANNELS; i++ ) {
- sprintf( (*station)[i].id, "%ld", i+TV_CHAN_MIN );
+ sprintf( (*station)[i].id, "%d", i+TV_CHAN_MIN );
(*station)[i].set_via_channel = TRUE;
(*station)[i].channel = i+TV_CHAN_MIN;
}
@@ -328,13 +328,13 @@ static void TVStationListStrToList(
if (( sscanf( tok, "%[^()](f%f)", new.id, &new.freq ) == 2 ) ||
( sscanf( tok, "%[^()](F%f)", new.id, &new.freq ) == 2 ))
new.set_via_channel = FALSE;
- else if ( sscanf( tok, "%[^()](%ld)", new.id, &tmp_int ) == 2 ) {
+ else if ( sscanf( tok, "%[^()](%d)", new.id, &tmp_int ) == 2 ) {
new.set_via_channel = TRUE;
new.channel = tmp_int;
}
- else if ( sscanf( tok, "%ld-%ld", &chan1, &chan2 ) == 2 )
+ else if ( sscanf( tok, "%d-%d", &chan1, &chan2 ) == 2 )
chan_range = TRUE;
- else if ( sscanf( tok, "%ld", &tmp_int ) == 1 ) {
+ else if ( sscanf( tok, "%d", &tmp_int ) == 1 ) {
new.set_via_channel = TRUE;
new.channel = tmp_int;
sprintf( new.id, "%d", new.channel );
@@ -371,7 +371,7 @@ static void TVStationListStrToList(
memcpy( &(*station)[i++], &new, sizeof(new) );
else
for ( ; chan1 <= chan2; chan1++ ) {
- sprintf( new.id, "%ld", chan1 );
+ sprintf( new.id, "%d", chan1 );
new.set_via_channel = TRUE;
new.channel = chan1;
new.freq = 0.0;
@@ -873,6 +873,9 @@ int main( int argc, char *argv[] )
S_wm_delete_window = XInternAtom( TVDISPLAY, "WM_DELETE_WINDOW", False );
XSetWMProtocols( TVDISPLAY, XtWindow( top_level ), &S_wm_delete_window, 1);
+ p->aot_mode = (App_res.aot_mode != FALSE);
+ XUTILSetAlwaysOnTop( p->aot_mode );
+
TVSCREENUpdateShellRsrcs( top_level, d->video_wgt );
TVMENUResync();

View file

@ -0,0 +1,25 @@
$NetBSD: patch-ca,v 1.4 2022/04/24 10:57:28 tnn Exp $
Use correct sized types.
--- tvtypes.h.orig 2008-01-15 18:31:30.000000000 -0500
+++ tvtypes.h 2008-01-15 18:32:33.000000000 -0500
@@ -34,12 +34,12 @@
#include <math.h>
#include <string.h>
-typedef unsigned char TV_UINT8;
-typedef signed char TV_INT8;
-typedef unsigned short TV_UINT16;
-typedef short TV_INT16;
-typedef unsigned long TV_UINT32;
-typedef long TV_INT32;
+typedef uint8_t TV_UINT8;
+typedef int8_t TV_INT8;
+typedef uint16_t TV_UINT16;
+typedef int16_t TV_INT16;
+typedef uint32_t TV_UINT32;
+typedef int32_t TV_INT32;
typedef TV_INT32 TV_BOOL;

View file

@ -0,0 +1,15 @@
$NetBSD: patch-remotetrans_c,v 1.3 2022/04/24 10:57:28 tnn Exp $
Fix LP64 problems.
--- remotetrans.c~ 1999-09-05 16:36:35.000000000 +0000
+++ remotetrans.c
@@ -152,7 +152,7 @@ void TVREMOTETRANSParse( Display *displa
}
Rem_trans_len = i;
- RMPRINTF(( "\nTVREMOTE: Parsed %ld user translations:\n",
+ RMPRINTF(( "\nTVREMOTE: Parsed %d user translations:\n",
Rem_trans_len ));
for ( i = 0; i < Rem_trans_len; i++ ) {
RMPRINTF(( " <Remote>%-10s : %s(",

View file

@ -0,0 +1,116 @@
$NetBSD: patch-tvscreen_c,v 1.3 2022/04/24 10:57:28 tnn Exp $
Fix LP64 problems.
--- tvscreen.c~ 2000-05-21 13:49:47.000000000 +0000
+++ tvscreen.c
@@ -517,8 +517,8 @@ void TVSCREENInit( TV_XSCREEN *s,
(int *) &s->ram_size );
s->ram_size *= 1024;
- SUPRINTF(( " BaseAddr = 0x%lx, Pitch = %ld, "
- "BankSize/RamSize = %ld/%ld\n",
+ SUPRINTF(( " BaseAddr = 0x%x, Pitch = %d, "
+ "BankSize/RamSize = %d/%d\n",
s->base_addr, s->pitch, s->bank_size, s->ram_size ));
}
}
@@ -611,7 +611,7 @@ void TVSCREENInit( TV_XSCREEN *s,
/* FIXME: Handle byte swapping */
SUPRINTF((
- " %3ld %-11s %2d %1ld,%1ld %.8lx, %.8lx, %.8lx "
+ " %3d %-11s %2d %1d,%1d %.8lx, %.8lx, %.8lx "
"-- %-3s\n",
rank, visual_classes[ v->class ], v->depth, Bpp_pixmap, Bpp_fbuffer,
v->red_mask, v->green_mask, v->blue_mask,
@@ -1003,11 +1003,12 @@ static void TVSCREENGetCapturePixGeom( T
/* Prefer 2Bpp byte swapped over the rest (since its the */
/* thing NewFrameHdlr currently byte swaps well). */
- else if (( best_pg.Bpp != 2 ) || !best_pg.swap_bytes )
+ else if (( best_pg.Bpp != 2 ) || !best_pg.swap_bytes ) {
if (( pg.Bpp == 2 ) && pg.swap_bytes )
take_it = True;
else if ( pg.Bpp == 2 )
take_it = True;
+ }
if ( take_it ) {
best_i = i;
@@ -1628,7 +1629,7 @@ void TVSCREENVideoWinEventHdlr(
}
S_call_level++;
- EVPRINTF(( "%2ld: VideoWin EVENT: %s\n", S_call_level,
+ EVPRINTF(( "%2d: VideoWin EVENT: %s\n", S_call_level,
event_names[ ev->type ] ));
/* Always keep recorded visibility state current */
@@ -1939,7 +1940,7 @@ void TVSCREENSetVideoWinGeom(
XtNy, g.y,
NULL );
#endif
- EVPRINTF(( "Resetting video widget geometry: %ldx%ld\n", g.w, g.h ));
+ EVPRINTF(( "Resetting video widget geometry: %dx%d\n", g.w, g.h ));
#ifdef OLD
XawPanedSetRefigureMode( XtParent( d->video_wgt ), False );
XtVaSetValues( d->video_wgt, XtNwidth , g.w,
@@ -2390,8 +2391,8 @@ void TVSCREENSetScreenUpdateEnabled(
char *cfg_fail_msg;
if ( enabled == d->enabled ) {
- fprintf( stderr, "TVSCREENSetScreenUpdateEnabled: new/was=%ld\n",
- enabled );
+ fprintf( stderr, "TVSCREENSetScreenUpdateEnabled: new/was=%d\n",
+ (int)enabled );
return;
}
@@ -2479,7 +2480,7 @@ static void TVSCREENPrepXImage( TV_DISPL
d->ximage_use_for_expose = FALSE;
/* Free the old */
- if ( image->ximg )
+ if ( image->ximg ) {
if ( image->is_shm ) {
if ( !XShmDetach ( TVDISPLAY, &image->shm_info ) ) {
fprintf( stderr, "XShmDetach() failed\n" );
@@ -2503,6 +2504,7 @@ static void TVSCREENPrepXImage( TV_DISPL
XDestroyImage( image->ximg );
image->ximg = NULL;
}
+ }
/* Create desired new */
if ( c->xfer_mode == TV_TRANSFER_SHMEM_IMAGE ) {
@@ -2587,7 +2589,7 @@ static void TVSCREENPrepXImage( TV_DISPL
static void TVSCREENAllocColorCube( TV_DISPLAY *d,
VL_COLORMAP **cmap )
{
- static Color_cubes[][3] =
+ static int Color_cubes[][3] =
{ {7,7,5},{6,6,6},{6,6,5},{6,6,4},{5,5,5},{5,5,4},{5,5,3},
{4,4,4},{3,3,3},{2,2,2} };
@@ -2646,17 +2648,17 @@ static void TVSCREENAllocColorCube( TV_D
if ( i >= num_col )
break;
- SUPRINTF(( "Failed to alloc %ldx%ldx%ld color cube\n",
+ SUPRINTF(( "Failed to alloc %dx%dx%d color cube\n",
r_dim, g_dim, b_dim ));
for ( i--; i >= 0; i-- )
XFreeColors( TVDISPLAY, colormap, &col[i].pixel, 1, 0 );
}
if ( r_dim < 2 ) {
- fprintf( stderr, "Can't even get a %ldx%ldx%ld colormap..."
+ fprintf( stderr, "Can't even get a %dx%dx%d colormap..."
"bailing out\n", r_dim, g_dim, b_dim );
exit(1);
}
- SUPRINTF(( "%ldx%ldx%ld Color Cube Allocated\n",r_dim,g_dim,b_dim ));
+ SUPRINTF(( "%dx%dx%d Color Cube Allocated\n",r_dim,g_dim,b_dim ));
/* Done. Now allocate and fill in the VideoLib colormap definition */
*cmap = VIDEOLIBNewColormap( num_col );

View file

@ -0,0 +1,16 @@
$NetBSD: patch-videolib_Makefile,v 1.3 2022/04/24 10:57:28 tnn Exp $
--- videolib/Makefile.orig 2001-02-12 19:04:45.000000000 +0000
+++ videolib/Makefile
@@ -13,9 +13,9 @@ override INC =
# CFLAGS
#
ifneq ($(DEBUG),NO)
- override CFLAGS = -DDEBUG -g
+ override CFLAGS += -DDEBUG -g
else
- override CFLAGS = -DNDEBUG -O2
+ override CFLAGS += -DNDEBUG -O2
endif
C_WARN_FLAG = -Wall
override CFLAGS += $(C_WARN_FLAG) $(INC)