aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Changes16
-rw-r--r--Makefile.in5
-rw-r--r--README.recording100
-rw-r--r--build-test2
-rw-r--r--config.h.in9
-rwxr-xr-xconfigure307
-rw-r--r--configure.in11
-rw-r--r--debian/changelog7
-rw-r--r--debian/control1
-rw-r--r--debian/rules2
-rw-r--r--http/bottom.html8
-rw-r--r--http/page.c7
-rw-r--r--http/response.c2
-rw-r--r--log825
-rw-r--r--src/Xawtv.ad4
-rw-r--r--src/capture.c301
-rw-r--r--src/capture.h23
-rw-r--r--src/commands.c45
-rw-r--r--src/commands.h3
-rw-r--r--src/fbtools.c2
-rw-r--r--src/fbtools.h2
-rw-r--r--src/fbtv.c63
-rw-r--r--src/grab-ng.c47
-rw-r--r--src/grab-ng.h24
-rw-r--r--src/grab-v4l.c2
-rw-r--r--src/grab.c153
-rw-r--r--src/main.c187
-rw-r--r--src/rootv.c1
-rw-r--r--src/streamer.c60
-rw-r--r--src/v4l-conf.c4
-rw-r--r--src/webcam.c47
-rw-r--r--src/webcam.h3
-rw-r--r--src/writefile.c164
-rw-r--r--src/writefile.h7
-rw-r--r--src/x11.c4
-rw-r--r--src/xv.c19
-rw-r--r--src/xvideo.c11
-rw-r--r--tools/record.c25
-rw-r--r--webcam/webcam.c6
-rw-r--r--webcam/webcam.man4
-rw-r--r--xawtv.spec2
41 files changed, 1029 insertions, 1486 deletions
diff --git a/Changes b/Changes
index 6f1c4bf..d6562f4 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,19 @@
+
+3.28 => 3.29
+============
+
+ * next chunk of the capture core rewrite.
+ * moved audio recording to a thread, this hopefully fixes a few
+ problems (should stop audio overruns, doesn't need select
+ support in the driver any more).
+ * Added a fancy status display which hopefully helps to trouble-shoot
+ syncronisation problems.
+ * major update for README.recording
+ * killed the --enable-efence configure option. Isn't thread safe :-(
+ Anyone knows a free malloc debugger which is?
+ * added autoconf tests for getopt.h / getopt_long
+ * streamer can write raw video data (again).
+
3.27 => 3.28
============
diff --git a/Makefile.in b/Makefile.in
index bd26575..ae74505 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -27,9 +27,8 @@ checkit: distclean
lintian ../xawtv_*.changes
diff:
- (cd /tmp; tar xvzf `ls -t $(HOME)/debian/Archive/xawtv_*.tar.gz | head -n 1`)
- (cd ..; diff -urN /tmp/xawtv-* xawtv-$(VERSION) | gzip > xawtv_$(VERSION).diff.gz)
- rm -rf /tmp/xawtv-*
+ last=`ls -t $(HOME)/strusel/linux/xawtv/xawtv_*.tar.gz | head -1`;\
+ tardiff $$last . | gzip > ../xawtv_$(VERSION).diff.gz
release: realclean diff
make -C font bdf
diff --git a/README.recording b/README.recording
index 51b3412..ca07e40 100644
--- a/README.recording
+++ b/README.recording
@@ -5,7 +5,8 @@ Audio
If you don't get sound when recording avi movies, double-check the
mixer settings first. The record source defaults to micro on many
linux sound drivers, you probably have to change this to line-in with
-one of the available mixer tools.
+one of the available mixer tools. Also keep in mind that ALSA has
+all mixer controls at 0 (i.e. muted) by default.
/me uses kmix (because it is small). The inputs where the sound cards
record from have a red background color. With the right mouse botton
@@ -15,57 +16,78 @@ you'll get a menu where you can change the settings.
Video
=====
-xawtv/streamer handle video recording with tree processes. Process #1
-is the main process. It does the video capture. It also does color
-space conversion / byteswapping / video compression if needed. The
-processed video frames are stored in a shared memory area. The shared
-memory is organizes as ring buffer wiht (by default) 8 buffers.
+xawtv/streamer handle video recording with multiple threads:
-Process #2 will simply write out the frames from the shared memory to
-the hard disk. This way Process #1 can continue to work even if
-writing to the hard disk blocks (at least until the ring buffer is
-full). Process #2 also handles the sound recording.
+ - one thread records video (and does color space conversion
+ / compression, maybe this should be separated)
+ - one thread records audio (unless you do video only).
+ - one thread writes the movie data to the disk.
+ - one thread calls sync frequently to make the writeouts more
+ smoothly (more smaller chunks instead of few very big ones).
-Process #3 calls sync() from time to time. The default intervall
-linux uses (5 seconds) is to big. If the kernel tries to flush 5
-seconds uncompressed video to the hard disk, recording will loose some
-frames because the kernel is very busy with this...
+There are buffer fifo's between the recording threads and the disk
+writer to avoid recording overruns due to a temporarely busy hard
+disk.
+If you see messages about a full fifo it is very likely that your hard
+disk is too slow, especially it you try to record uncompressed video.
-While recording you'll see lines like this one on stderr:
+bttv 0.7.x allows you to use more than just two video buffers, you can
+configure the number at insmod time. Using more buffers (say 4-8)
+should help to reduce the number of dropped frames.
-+--+-+-+-+-+-+-+-+-+-+-+-+s-+-+-+-+-++--+-+-+-+-+-+ 25/25 (-2)
+If you want to record quicktime movies install the quicktime4linux
+libraries (http://heroinewarrior.com/quicktime.html), then (re-)build
+xawtv. The configure script should find the library automatically.
- "+" = Process #1 has written one frame to the shmem ring buffer
- "-" = Process #2 has written a frame from the ring buffer to disk.
- "o" = Frame lost: Process #1 couldn't put a frame into the ring
- buffer because it was full.
- "s" = Process #3 called sync().
-25/25 = # of frames stored in the ring buffer / # of frames captured
- last second.
- (-2) = 2 frames lost (in total)
+Known problems (and workarounds)
+================================
+streamer/xawtv can't handle floating point frame rates (like 29.97).
+Bad luck for now [to be fixed].
-When recording uncompressed video (avi15/avi24), most likely the hard
-disk is the bottleneck. If you see a few o's from time to time,
-increasing the number of buffers might help. If you see alot of o's,
-your harddisk is to slow.
+streamer/xawtv can't deal very good with lost frames, it can't do
+(yet) tricks like stuffing the next frame twice it has lost one.
+That's a problem if you want to record at full framerate. A
+workaround is to use a slightly lower rate, say 24 instead of 25 fps
+(for PAL). If you lose a single frame now and then, streamer can deal
+with that much better because there is one "unused" frame per second.
+streamer can use that spare frame make video catch up if it lags
+behind a bit and avoid that audio/video run out of sync in the long
+run.
-For compressed video (mjpeg) it is very unlikely that you see any
-"o"'s. The bottleneck is the CPU which has to handle all the
-compressing. If the CPU can't keep up, the number of captured
-frames/sec will be lower than the the rate you've asked for. Again:
-if this only happens from time to time, increasing the number of
-buffers might help. This time the number of capture buffers of the
-hardware driver (for bttv this requires version 0.7.15 or newer).
+The timestamping for the video frames isn't very exact as it does
+_not_ come from the v4l(1) driver but is just a gettimeofday() call
+after receiving the video frame. API design bug, needs fixing.
-both
-====
+Troubleshooting syncronisation problems
+=======================================
-Yes, I know, there are some syncronisation problems. Unfortunality it
-is'nt trivial to fix them...
+If you are recording a movie with xawtv/stremaer you get a display
+like this on stderr:
+
+real: 3.638s audio: 3.529s video: 3.700s
+
+ - "real" is the real time, i.e. simply the number of seconds passed
+ since you've started recording.
+
+ - "audio" says how much audio data was recorded: simply the total
+ number of bytes divided by the data rate (bytes/second).
+
+ - "video" is the same for video: total frames divided by the
+ frames/second.
+
+Obviously these numbers should stay close together. If audio and
+video run out of sync, you should be able to see whenever audio or
+video is wrong by comparing the two with the real time.
+
+The display says how much media data streamer/xawtv tried to put into
+the fifos. Any data which get lost due to fifo overruns will *not* be
+taken into accout here, i.e. if you see "fifo full" error messages
+your movie will have bad syncronisation even if the display looks
+fine. Fix: try recording compressed video or buy a faster hard disk.
Gerd
diff --git a/build-test b/build-test
index c661a28..19efba7 100644
--- a/build-test
+++ b/build-test
@@ -41,7 +41,7 @@ kernel=`echo /usr/src/kernel/2.2.17`
make distclean
# 2.4.x kernel headers
-kernel=`echo /usr/src/kernel/2.4.*`
+kernel=`echo /usr/src/kernel/2.4.[0-9]`
./configure && make CC="gcc -I$kernel/include" || exit 1
make distclean
diff --git a/config.h.in b/config.h.in
index d44d73b..7b69966 100644
--- a/config.h.in
+++ b/config.h.in
@@ -27,12 +27,18 @@
/* Define if you have the getnameinfo function. */
#undef HAVE_GETNAMEINFO
+/* Define if you have the getopt_long function. */
+#undef HAVE_GETOPT_LONG
+
/* Define if you have the getpt function. */
#undef HAVE_GETPT
/* Define if you have the <endian.h> header file. */
#undef HAVE_ENDIAN_H
+/* Define if you have the <getopt.h> header file. */
+#undef HAVE_GETOPT_H
+
/* Define if you have the <soundcard.h> header file. */
#undef HAVE_SOUNDCARD_H
@@ -50,6 +56,3 @@
/* Define if you have the Xxf86vm library (-lXxf86vm). */
#undef HAVE_LIBXXF86VM
-
-/* Define if you have the efence library (-lefence). */
-#undef HAVE_LIBEFENCE
diff --git a/configure b/configure
index 3aacc9a..f4b53e4 100755
--- a/configure
+++ b/configure
@@ -22,8 +22,6 @@ ac_help="$ac_help
ac_help="$ac_help
--enable-quicktime quicktime support"
ac_help="$ac_help
- --enable-efence link against ElectricFence (malloc debug)"
-ac_help="$ac_help
--enable-motif enable experimental motif support"
ac_help="$ac_help
--with-x use the X Window System"
@@ -571,12 +569,6 @@ if test "${enable_quicktime+set}" = set; then
:
fi
-# Check whether --enable-efence or --disable-efence was given.
-if test "${enable_efence+set}" = set; then
- enableval="$enable_efence"
- :
-fi
-
# Check whether --enable-motif or --disable-motif was given.
if test "${enable_motif+set}" = set; then
enableval="$enable_motif"
@@ -589,7 +581,7 @@ fi
# Extract the first word of "gcc", so it can be a program name with args.
set dummy gcc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:593: checking for $ac_word" >&5
+echo "configure:585: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -619,7 +611,7 @@ if test -z "$CC"; then
# Extract the first word of "cc", so it can be a program name with args.
set dummy cc; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:623: checking for $ac_word" >&5
+echo "configure:615: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -670,7 +662,7 @@ fi
# Extract the first word of "cl", so it can be a program name with args.
set dummy cl; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:674: checking for $ac_word" >&5
+echo "configure:666: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_CC'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -702,7 +694,7 @@ fi
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works""... $ac_c" 1>&6
-echo "configure:706: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
+echo "configure:698: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) works" >&5
ac_ext=c
# CFLAGS is not in ac_cpp because -g, -O, etc. are not valid cpp options.
@@ -713,12 +705,12 @@ cross_compiling=$ac_cv_prog_cc_cross
cat > conftest.$ac_ext << EOF
-#line 717 "configure"
+#line 709 "configure"
#include "confdefs.h"
main(){return(0);}
EOF
-if { (eval echo configure:722: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:714: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
ac_cv_prog_cc_works=yes
# If we can't run a trivial program, we are probably using a cross compiler.
if (./conftest; exit) 2>/dev/null; then
@@ -744,12 +736,12 @@ if test $ac_cv_prog_cc_works = no; then
{ echo "configure: error: installation or configuration problem: C compiler cannot create executables." 1>&2; exit 1; }
fi
echo $ac_n "checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler""... $ac_c" 1>&6
-echo "configure:748: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
+echo "configure:740: checking whether the C compiler ($CC $CFLAGS $LDFLAGS) is a cross-compiler" >&5
echo "$ac_t""$ac_cv_prog_cc_cross" 1>&6
cross_compiling=$ac_cv_prog_cc_cross
echo $ac_n "checking whether we are using GNU C""... $ac_c" 1>&6
-echo "configure:753: checking whether we are using GNU C" >&5
+echo "configure:745: checking whether we are using GNU C" >&5
if eval "test \"`echo '$''{'ac_cv_prog_gcc'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -758,7 +750,7 @@ else
yes;
#endif
EOF
-if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:762: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
+if { ac_try='${CC-cc} -E conftest.c'; { (eval echo configure:754: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }; } | egrep yes >/dev/null 2>&1; then
ac_cv_prog_gcc=yes
else
ac_cv_prog_gcc=no
@@ -777,7 +769,7 @@ ac_test_CFLAGS="${CFLAGS+set}"
ac_save_CFLAGS="$CFLAGS"
CFLAGS=
echo $ac_n "checking whether ${CC-cc} accepts -g""... $ac_c" 1>&6
-echo "configure:781: checking whether ${CC-cc} accepts -g" >&5
+echo "configure:773: checking whether ${CC-cc} accepts -g" >&5
if eval "test \"`echo '$''{'ac_cv_prog_cc_g'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -809,7 +801,7 @@ else
fi
echo $ac_n "checking how to run the C preprocessor""... $ac_c" 1>&6
-echo "configure:813: checking how to run the C preprocessor" >&5
+echo "configure:805: checking how to run the C preprocessor" >&5
# On Suns, sometimes $CPP names a directory.
if test -n "$CPP" && test -d "$CPP"; then
CPP=
@@ -824,13 +816,13 @@ else
# On the NeXT, cc -E runs the code through the compiler's parser,
# not just through cpp.
cat > conftest.$ac_ext <<EOF
-#line 828 "configure"
+#line 820 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:834: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:826: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -841,13 +833,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -E -traditional-cpp"
cat > conftest.$ac_ext <<EOF
-#line 845 "configure"
+#line 837 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:851: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:843: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -858,13 +850,13 @@ else
rm -rf conftest*
CPP="${CC-cc} -nologo -E"
cat > conftest.$ac_ext <<EOF
-#line 862 "configure"
+#line 854 "configure"
#include "confdefs.h"
#include <assert.h>
Syntax Error
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:868: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:860: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
:
@@ -920,7 +912,7 @@ ac_configure=$ac_aux_dir/configure # This should be Cygnus configure.
# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff"
# ./install, which can be erroneously created by make from ./install.sh.
echo $ac_n "checking for a BSD compatible install""... $ac_c" 1>&6
-echo "configure:924: checking for a BSD compatible install" >&5
+echo "configure:916: checking for a BSD compatible install" >&5
if test -z "$INSTALL"; then
if eval "test \"`echo '$''{'ac_cv_path_install'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -977,7 +969,7 @@ do
# Extract the first word of "$ac_prog", so it can be a program name with args.
set dummy $ac_prog; ac_word=$2
echo $ac_n "checking for $ac_word""... $ac_c" 1>&6
-echo "configure:981: checking for $ac_word" >&5
+echo "configure:973: checking for $ac_word" >&5
if eval "test \"`echo '$''{'ac_cv_prog_DEPEND'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
@@ -1011,12 +1003,12 @@ test -n "$DEPEND" || DEPEND="true"
echo $ac_n "checking for open64""... $ac_c" 1>&6
-echo "configure:1015: checking for open64" >&5
+echo "configure:1007: checking for open64" >&5
if eval "test \"`echo '$''{'ac_cv_func_open64'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1020 "configure"
+#line 1012 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char open64(); below. */
@@ -1039,7 +1031,7 @@ open64();
; return 0; }
EOF
-if { (eval echo configure:1043: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1035: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_open64=yes"
else
@@ -1062,15 +1054,15 @@ else
echo "$ac_t""no" 1>&6
fi
-for ac_func in ftello getpt getnameinfo
+for ac_func in ftello getpt getnameinfo getopt_long
do
echo $ac_n "checking for $ac_func""... $ac_c" 1>&6
-echo "configure:1069: checking for $ac_func" >&5
+echo "configure:1061: checking for $ac_func" >&5
if eval "test \"`echo '$''{'ac_cv_func_$ac_func'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1074 "configure"
+#line 1066 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char $ac_func(); below. */
@@ -1093,7 +1085,7 @@ $ac_func();
; return 0; }
EOF
-if { (eval echo configure:1097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1089: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_$ac_func=yes"
else
@@ -1118,7 +1110,7 @@ fi
done
cat > conftest.$ac_ext <<EOF
-#line 1122 "configure"
+#line 1114 "configure"
#include "confdefs.h"
#include <sys/socket.h>
EOF
@@ -1132,21 +1124,21 @@ EOF
fi
rm -f conftest*
-for ac_hdr in endian.h soundcard.h sys/soundcard.h
+for ac_hdr in endian.h soundcard.h sys/soundcard.h getopt.h
do
ac_safe=`echo "$ac_hdr" | sed 'y%./+-%__p_%'`
echo $ac_n "checking for $ac_hdr""... $ac_c" 1>&6
-echo "configure:1140: checking for $ac_hdr" >&5
+echo "configure:1132: checking for $ac_hdr" >&5
if eval "test \"`echo '$''{'ac_cv_header_$ac_safe'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1145 "configure"
+#line 1137 "configure"
#include "confdefs.h"
#include <$ac_hdr>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1150: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1142: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1174,7 +1166,7 @@ done
echo $ac_n "checking for pthread_create in -lpthread""... $ac_c" 1>&6
-echo "configure:1178: checking for pthread_create in -lpthread" >&5
+echo "configure:1170: checking for pthread_create in -lpthread" >&5
ac_lib_var=`echo pthread'_'pthread_create | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1182,7 +1174,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lpthread $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1186 "configure"
+#line 1178 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1193,7 +1185,7 @@ int main() {
pthread_create()
; return 0; }
EOF
-if { (eval echo configure:1197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1215,7 +1207,7 @@ fi
if test "$LIBPTHREAD" = ""; then
echo $ac_n "checking for pthread_create in -lc_r""... $ac_c" 1>&6
-echo "configure:1219: checking for pthread_create in -lc_r" >&5
+echo "configure:1211: checking for pthread_create in -lc_r" >&5
ac_lib_var=`echo c_r'_'pthread_create | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1223,7 +1215,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lc_r $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1227 "configure"
+#line 1219 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1234,7 +1226,7 @@ int main() {
pthread_create()
; return 0; }
EOF
-if { (eval echo configure:1238: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1230: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1256,7 +1248,7 @@ fi
fi
echo $ac_n "checking for main in -lossaudio""... $ac_c" 1>&6
-echo "configure:1260: checking for main in -lossaudio" >&5
+echo "configure:1252: checking for main in -lossaudio" >&5
ac_lib_var=`echo ossaudio'_'main | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1264,14 +1256,14 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lossaudio $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1268 "configure"
+#line 1260 "configure"
#include "confdefs.h"
int main() {
main()
; return 0; }
EOF
-if { (eval echo configure:1275: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1267: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1292,7 +1284,7 @@ else
fi
echo $ac_n "checking for initscr in -lncurses""... $ac_c" 1>&6
-echo "configure:1296: checking for initscr in -lncurses" >&5
+echo "configure:1288: checking for initscr in -lncurses" >&5
ac_lib_var=`echo ncurses'_'initscr | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1300,7 +1292,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lncurses $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1304 "configure"
+#line 1296 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1311,7 +1303,7 @@ int main() {
initscr()
; return 0; }
EOF
-if { (eval echo configure:1315: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1307: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1333,7 +1325,7 @@ fi
if test "$LIBCURSES" = ""; then
echo $ac_n "checking for initscr in -lcurses""... $ac_c" 1>&6
-echo "configure:1337: checking for initscr in -lcurses" >&5
+echo "configure:1329: checking for initscr in -lcurses" >&5
ac_lib_var=`echo curses'_'initscr | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1341,7 +1333,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lcurses $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1345 "configure"
+#line 1337 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1352,7 +1344,7 @@ int main() {
initscr()
; return 0; }
EOF
-if { (eval echo configure:1356: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1348: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1388,7 +1380,7 @@ fi
# Uses ac_ vars as temps to allow command line to override cache and checks.
# --without-x overrides everything else, but does not touch the cache.
echo $ac_n "checking for X""... $ac_c" 1>&6
-echo "configure:1392: checking for X" >&5
+echo "configure:1384: checking for X" >&5
# Check whether --with-x or --without-x was given.
if test "${with_x+set}" = set; then
@@ -1450,12 +1442,12 @@ if test "$ac_x_includes" = NO; then
# First, try using that file with no special directory specified.
cat > conftest.$ac_ext <<EOF
-#line 1454 "configure"
+#line 1446 "configure"
#include "confdefs.h"
#include <$x_direct_test_include>
EOF
ac_try="$ac_cpp conftest.$ac_ext >/dev/null 2>conftest.out"
-{ (eval echo configure:1459: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
+{ (eval echo configure:1451: \"$ac_try\") 1>&5; (eval $ac_try) 2>&5; }
ac_err=`grep -v '^ *+' conftest.out | grep -v "^conftest.${ac_ext}\$"`
if test -z "$ac_err"; then
rm -rf conftest*
@@ -1524,14 +1516,14 @@ if test "$ac_x_libraries" = NO; then
ac_save_LIBS="$LIBS"
LIBS="-l$x_direct_test_library $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1528 "configure"
+#line 1520 "configure"
#include "confdefs.h"
int main() {
${x_direct_test_function}()
; return 0; }
EOF
-if { (eval echo configure:1535: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
LIBS="$ac_save_LIBS"
# We can link X programs with no special library path.
@@ -1637,17 +1629,17 @@ else
case "`(uname -sr) 2>/dev/null`" in
"SunOS 5"*)
echo $ac_n "checking whether -R must be followed by a space""... $ac_c" 1>&6
-echo "configure:1641: checking whether -R must be followed by a space" >&5
+echo "configure:1633: checking whether -R must be followed by a space" >&5
ac_xsave_LIBS="$LIBS"; LIBS="$LIBS -R$x_libraries"
cat > conftest.$ac_ext <<EOF
-#line 1644 "configure"
+#line 1636 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1651: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1643: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_R_nospace=yes
else
@@ -1663,14 +1655,14 @@ rm -f conftest*
else
LIBS="$ac_xsave_LIBS -R $x_libraries"
cat > conftest.$ac_ext <<EOF
-#line 1667 "configure"
+#line 1659 "configure"
#include "confdefs.h"
int main() {
; return 0; }
EOF
-if { (eval echo configure:1674: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1666: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
ac_R_space=yes
else
@@ -1702,7 +1694,7 @@ rm -f conftest*
# libraries were built with DECnet support. And karl@cs.umb.edu says
# the Alpha needs dnet_stub (dnet does not exist).
echo $ac_n "checking for dnet_ntoa in -ldnet""... $ac_c" 1>&6
-echo "configure:1706: checking for dnet_ntoa in -ldnet" >&5
+echo "configure:1698: checking for dnet_ntoa in -ldnet" >&5
ac_lib_var=`echo dnet'_'dnet_ntoa | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1710,7 +1702,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldnet $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1714 "configure"
+#line 1706 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1721,7 +1713,7 @@ int main() {
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:1725: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1717: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1743,7 +1735,7 @@ fi
if test $ac_cv_lib_dnet_dnet_ntoa = no; then
echo $ac_n "checking for dnet_ntoa in -ldnet_stub""... $ac_c" 1>&6
-echo "configure:1747: checking for dnet_ntoa in -ldnet_stub" >&5
+echo "configure:1739: checking for dnet_ntoa in -ldnet_stub" >&5
ac_lib_var=`echo dnet_stub'_'dnet_ntoa | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1751,7 +1743,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ldnet_stub $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1755 "configure"
+#line 1747 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1762,7 +1754,7 @@ int main() {
dnet_ntoa()
; return 0; }
EOF
-if { (eval echo configure:1766: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1758: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1791,12 +1783,12 @@ fi
# The nsl library prevents programs from opening the X display
# on Irix 5.2, according to dickey@clark.net.
echo $ac_n "checking for gethostbyname""... $ac_c" 1>&6
-echo "configure:1795: checking for gethostbyname" >&5
+echo "configure:1787: checking for gethostbyname" >&5
if eval "test \"`echo '$''{'ac_cv_func_gethostbyname'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1800 "configure"
+#line 1792 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char gethostbyname(); below. */
@@ -1819,7 +1811,7 @@ gethostbyname();
; return 0; }
EOF
-if { (eval echo configure:1823: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1815: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_gethostbyname=yes"
else
@@ -1840,7 +1832,7 @@ fi
if test $ac_cv_func_gethostbyname = no; then
echo $ac_n "checking for gethostbyname in -lnsl""... $ac_c" 1>&6
-echo "configure:1844: checking for gethostbyname in -lnsl" >&5
+echo "configure:1836: checking for gethostbyname in -lnsl" >&5
ac_lib_var=`echo nsl'_'gethostbyname | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1848,7 +1840,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lnsl $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1852 "configure"
+#line 1844 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1859,7 +1851,7 @@ int main() {
gethostbyname()
; return 0; }
EOF
-if { (eval echo configure:1863: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1855: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1889,12 +1881,12 @@ fi
# -lsocket must be given before -lnsl if both are needed.
# We assume that if connect needs -lnsl, so does gethostbyname.
echo $ac_n "checking for connect""... $ac_c" 1>&6
-echo "configure:1893: checking for connect" >&5
+echo "configure:1885: checking for connect" >&5
if eval "test \"`echo '$''{'ac_cv_func_connect'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1898 "configure"
+#line 1890 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char connect(); below. */
@@ -1917,7 +1909,7 @@ connect();
; return 0; }
EOF
-if { (eval echo configure:1921: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1913: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_connect=yes"
else
@@ -1938,7 +1930,7 @@ fi
if test $ac_cv_func_connect = no; then
echo $ac_n "checking for connect in -lsocket""... $ac_c" 1>&6
-echo "configure:1942: checking for connect in -lsocket" >&5
+echo "configure:1934: checking for connect in -lsocket" >&5
ac_lib_var=`echo socket'_'connect | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -1946,7 +1938,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lsocket $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 1950 "configure"
+#line 1942 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -1957,7 +1949,7 @@ int main() {
connect()
; return 0; }
EOF
-if { (eval echo configure:1961: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:1953: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -1981,12 +1973,12 @@ fi
# gomez@mi.uni-erlangen.de says -lposix is necessary on A/UX.
echo $ac_n "checking for remove""... $ac_c" 1>&6
-echo "configure:1985: checking for remove" >&5
+echo "configure:1977: checking for remove" >&5
if eval "test \"`echo '$''{'ac_cv_func_remove'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 1990 "configure"
+#line 1982 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char remove(); below. */
@@ -2009,7 +2001,7 @@ remove();
; return 0; }
EOF
-if { (eval echo configure:2013: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2005: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_remove=yes"
else
@@ -2030,7 +2022,7 @@ fi
if test $ac_cv_func_remove = no; then
echo $ac_n "checking for remove in -lposix""... $ac_c" 1>&6
-echo "configure:2034: checking for remove in -lposix" >&5
+echo "configure:2026: checking for remove in -lposix" >&5
ac_lib_var=`echo posix'_'remove | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2038,7 +2030,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lposix $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2042 "configure"
+#line 2034 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2049,7 +2041,7 @@ int main() {
remove()
; return 0; }
EOF
-if { (eval echo configure:2053: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2045: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2073,12 +2065,12 @@ fi
# BSDI BSD/OS 2.1 needs -lipc for XOpenDisplay.
echo $ac_n "checking for shmat""... $ac_c" 1>&6
-echo "configure:2077: checking for shmat" >&5
+echo "configure:2069: checking for shmat" >&5
if eval "test \"`echo '$''{'ac_cv_func_shmat'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
else
cat > conftest.$ac_ext <<EOF
-#line 2082 "configure"
+#line 2074 "configure"
#include "confdefs.h"
/* System header to define __stub macros and hopefully few prototypes,
which can conflict with char shmat(); below. */
@@ -2101,7 +2093,7 @@ shmat();
; return 0; }
EOF
-if { (eval echo configure:2105: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2097: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_func_shmat=yes"
else
@@ -2122,7 +2114,7 @@ fi
if test $ac_cv_func_shmat = no; then
echo $ac_n "checking for shmat in -lipc""... $ac_c" 1>&6
-echo "configure:2126: checking for shmat in -lipc" >&5
+echo "configure:2118: checking for shmat in -lipc" >&5
ac_lib_var=`echo ipc'_'shmat | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2130,7 +2122,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lipc $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2134 "configure"
+#line 2126 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2141,7 +2133,7 @@ int main() {
shmat()
; return 0; }
EOF
-if { (eval echo configure:2145: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2137: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2174,7 +2166,7 @@ fi
# libraries we check for below, so use a different variable.
# --interran@uluru.Stanford.EDU, kb@cs.umb.edu.
echo $ac_n "checking for IceConnectionNumber in -lICE""... $ac_c" 1>&6
-echo "configure:2178: checking for IceConnectionNumber in -lICE" >&5
+echo "configure:2170: checking for IceConnectionNumber in -lICE" >&5
ac_lib_var=`echo ICE'_'IceConnectionNumber | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2182,7 +2174,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lICE $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2186 "configure"
+#line 2178 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2193,7 +2185,7 @@ int main() {
IceConnectionNumber()
; return 0; }
EOF
-if { (eval echo configure:2197: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2189: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2228,7 +2220,7 @@ fi
if test "$enable_xaw3d" != "no"; then
echo $ac_n "checking for Xaw3dComputeTopShadowRGB in -lXaw3d""... $ac_c" 1>&6
-echo "configure:2232: checking for Xaw3dComputeTopShadowRGB in -lXaw3d" >&5
+echo "configure:2224: checking for Xaw3dComputeTopShadowRGB in -lXaw3d" >&5
ac_lib_var=`echo Xaw3d'_'Xaw3dComputeTopShadowRGB | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2236,7 +2228,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXaw3d $X_LIBS $X_PRE_LIBS -lXext -lXmu -lXt -lX11 $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2240 "configure"
+#line 2232 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2247,7 +2239,7 @@ int main() {
Xaw3dComputeTopShadowRGB()
; return 0; }
EOF
-if { (eval echo configure:2251: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2243: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2277,7 +2269,7 @@ fi
GFXLIBS="";
echo $ac_n "checking for jpeg_start_compress in -ljpeg""... $ac_c" 1>&6
-echo "configure:2281: checking for jpeg_start_compress in -ljpeg" >&5
+echo "configure:2273: checking for jpeg_start_compress in -ljpeg" >&5
ac_lib_var=`echo jpeg'_'jpeg_start_compress | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2285,7 +2277,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-ljpeg $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2289 "configure"
+#line 2281 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2296,7 +2288,7 @@ int main() {
jpeg_start_compress()
; return 0; }
EOF
-if { (eval echo configure:2300: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2292: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2321,62 +2313,11 @@ if test "$JPEG" != "found"; then
exit 1
fi
-if test "$enable_efence" = "yes"; then
- echo "*** ElectricFence (malloc debugger) enabled"
- echo $ac_n "checking for EF_Print in -lefence""... $ac_c" 1>&6
-echo "configure:2328: checking for EF_Print in -lefence" >&5
-ac_lib_var=`echo efence'_'EF_Print | sed 'y%./+-%__p_%'`
-if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
- echo $ac_n "(cached) $ac_c" 1>&6
-else
- ac_save_LIBS="$LIBS"
-LIBS="-lefence $LIBS"
-cat > conftest.$ac_ext <<EOF
-#line 2336 "configure"
-#include "confdefs.h"
-/* Override any gcc2 internal prototype to avoid an error. */
-/* We use char because int might match the return type of a gcc2
- builtin and then its argument prototype would still apply. */
-char EF_Print();
-
-int main() {
-EF_Print()
-; return 0; }
-EOF
-if { (eval echo configure:2347: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=yes"
-else
- echo "configure: failed program was:" >&5
- cat conftest.$ac_ext >&5
- rm -rf conftest*
- eval "ac_cv_lib_$ac_lib_var=no"
-fi
-rm -f conftest*
-LIBS="$ac_save_LIBS"
-
-fi
-if eval "test \"`echo '$ac_cv_lib_'$ac_lib_var`\" = yes"; then
- echo "$ac_t""yes" 1>&6
- ac_tr_lib=HAVE_LIB`echo efence | sed -e 's/[^a-zA-Z0-9_]/_/g' \
- -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
- cat >> confdefs.h <<EOF
-#define $ac_tr_lib 1
-EOF
-
- LIBS="-lefence $LIBS"
-
-else
- echo "$ac_t""no" 1>&6
-fi
-
-fi
-
LIRC=""
if test "$enable_lirc" != "no"; then
echo $ac_n "checking for lirc_init in -llirc_client""... $ac_c" 1>&6
-echo "configure:2380: checking for lirc_init in -llirc_client" >&5
+echo "configure:2321: checking for lirc_init in -llirc_client" >&5
ac_lib_var=`echo lirc_client'_'lirc_init | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2384,7 +2325,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-llirc_client $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2388 "configure"
+#line 2329 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2395,7 +2336,7 @@ int main() {
lirc_init()
; return 0; }
EOF
-if { (eval echo configure:2399: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2340: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2424,7 +2365,7 @@ fi
if test "$enable_quicktime" != "no"; then
echo $ac_n "checking for png_read_info in -lpng""... $ac_c" 1>&6
-echo "configure:2428: checking for png_read_info in -lpng" >&5
+echo "configure:2369: checking for png_read_info in -lpng" >&5
ac_lib_var=`echo png'_'png_read_info | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2432,7 +2373,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lpng $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2436 "configure"
+#line 2377 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2443,7 +2384,7 @@ int main() {
png_read_info()
; return 0; }
EOF
-if { (eval echo configure:2447: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2388: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2465,7 +2406,7 @@ fi
if test "$PNG" = "found"; then
echo $ac_n "checking for quicktime_open in -lquicktime""... $ac_c" 1>&6
-echo "configure:2469: checking for quicktime_open in -lquicktime" >&5
+echo "configure:2410: checking for quicktime_open in -lquicktime" >&5
ac_lib_var=`echo quicktime'_'quicktime_open | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2473,7 +2414,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lquicktime -lglib -ljpeg -lpng $LIBPTHREAD $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2477 "configure"
+#line 2418 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2484,7 +2425,7 @@ int main() {
quicktime_open()
; return 0; }
EOF
-if { (eval echo configure:2488: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2429: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2516,7 +2457,7 @@ fi
if test "$enable_xfree_ext" != "no"; then
echo $ac_n "checking for XF86DGAQueryExtension in -lXxf86dga""... $ac_c" 1>&6
-echo "configure:2520: checking for XF86DGAQueryExtension in -lXxf86dga" >&5
+echo "configure:2461: checking for XF86DGAQueryExtension in -lXxf86dga" >&5
ac_lib_var=`echo Xxf86dga'_'XF86DGAQueryExtension | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2524,7 +2465,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXxf86dga $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2528 "configure"
+#line 2469 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2535,7 +2476,7 @@ int main() {
XF86DGAQueryExtension()
; return 0; }
EOF
-if { (eval echo configure:2539: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2480: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2563,7 +2504,7 @@ else
fi
echo $ac_n "checking for XF86VidModeQueryExtension in -lXxf86vm""... $ac_c" 1>&6
-echo "configure:2567: checking for XF86VidModeQueryExtension in -lXxf86vm" >&5
+echo "configure:2508: checking for XF86VidModeQueryExtension in -lXxf86vm" >&5
ac_lib_var=`echo Xxf86vm'_'XF86VidModeQueryExtension | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2571,7 +2512,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXxf86vm $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2575 "configure"
+#line 2516 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2582,7 +2523,7 @@ int main() {
XF86VidModeQueryExtension()
; return 0; }
EOF
-if { (eval echo configure:2586: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2527: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2610,7 +2551,7 @@ else
fi
echo $ac_n "checking for DPMSQueryExtension in -lXdpms""... $ac_c" 1>&6
-echo "configure:2614: checking for DPMSQueryExtension in -lXdpms" >&5
+echo "configure:2555: checking for DPMSQueryExtension in -lXdpms" >&5
ac_lib_var=`echo Xdpms'_'DPMSQueryExtension | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2618,7 +2559,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXdpms $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2622 "configure"
+#line 2563 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2629,7 +2570,7 @@ int main() {
DPMSQueryExtension()
; return 0; }
EOF
-if { (eval echo configure:2633: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2574: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2658,7 +2599,7 @@ fi
if test "$ac_cv_lib_Xdpms_DPMSQueryExtension" = "no"; then
echo $ac_n "checking for DPMSQueryExtension in -lXext""... $ac_c" 1>&6
-echo "configure:2662: checking for DPMSQueryExtension in -lXext" >&5
+echo "configure:2603: checking for DPMSQueryExtension in -lXext" >&5
ac_lib_var=`echo Xext'_'DPMSQueryExtension | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2666,7 +2607,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXext $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2670 "configure"
+#line 2611 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2677,7 +2618,7 @@ int main() {
DPMSQueryExtension()
; return 0; }
EOF
-if { (eval echo configure:2681: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2622: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2707,7 +2648,7 @@ fi
if test "$enable_xvideo" != "no"; then
echo $ac_n "checking for XvQueryExtension in -lXv""... $ac_c" 1>&6
-echo "configure:2711: checking for XvQueryExtension in -lXv" >&5
+echo "configure:2652: checking for XvQueryExtension in -lXv" >&5
ac_lib_var=`echo Xv'_'XvQueryExtension | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2715,7 +2656,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXv $X_LIBS $X_PRE_LIBS -lXext -lX11 $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2719 "configure"
+#line 2660 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2726,7 +2667,7 @@ int main() {
XvQueryExtension()
; return 0; }
EOF
-if { (eval echo configure:2730: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2671: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2764,7 +2705,7 @@ if test "$enable_motif" = "yes"; then
fi
echo $ac_n "checking for XShmAttach in -lXext""... $ac_c" 1>&6
-echo "configure:2768: checking for XShmAttach in -lXext" >&5
+echo "configure:2709: checking for XShmAttach in -lXext" >&5
ac_lib_var=`echo Xext'_'XShmAttach | sed 'y%./+-%__p_%'`
if eval "test \"`echo '$''{'ac_cv_lib_$ac_lib_var'+set}'`\" = set"; then
echo $ac_n "(cached) $ac_c" 1>&6
@@ -2772,7 +2713,7 @@ else
ac_save_LIBS="$LIBS"
LIBS="-lXext $X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS $LIBS"
cat > conftest.$ac_ext <<EOF
-#line 2776 "configure"
+#line 2717 "configure"
#include "confdefs.h"
/* Override any gcc2 internal prototype to avoid an error. */
/* We use char because int might match the return type of a gcc2
@@ -2783,7 +2724,7 @@ int main() {
XShmAttach()
; return 0; }
EOF
-if { (eval echo configure:2787: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
+if { (eval echo configure:2728: \"$ac_link\") 1>&5; (eval $ac_link) 2>&5; } && test -s conftest${ac_exeext}; then
rm -rf conftest*
eval "ac_cv_lib_$ac_lib_var=yes"
else
@@ -2811,7 +2752,7 @@ XAWTV_VERSION="`(cd $srcdir; pwd) | sed -e 's/.*-//'`"
echo $ac_n "checking for X11 config directory""... $ac_c" 1>&6
-echo "configure:2815: checking for X11 config directory" >&5
+echo "configure:2756: checking for X11 config directory" >&5
x11conf=/usr/X11R6/lib/X11
if test -d /etc/X11; then
x11conf=/etc/X11
@@ -2820,7 +2761,7 @@ echo "$ac_t""$x11conf" 1>&6
echo $ac_n "checking for X11 app-defaults directory""... $ac_c" 1>&6
-echo "configure:2824: checking for X11 app-defaults directory" >&5
+echo "configure:2765: checking for X11 app-defaults directory" >&5
resdir=/usr/X11R6/lib/X11/app-defaults
if test -d /etc/X11/app-defaults; then
resdir=/etc/X11/app-defaults
diff --git a/configure.in b/configure.in
index 43e8096..1c9904e 100644
--- a/configure.in
+++ b/configure.in
@@ -18,8 +18,6 @@ AC_ARG_ENABLE(lirc,
[ --enable-lirc lirc support])
AC_ARG_ENABLE(quicktime,
[ --enable-quicktime quicktime support])
-AC_ARG_ENABLE(efence,
- [ --enable-efence link against ElectricFence (malloc debug)])
AC_ARG_ENABLE(motif,
[ --enable-motif enable experimental motif support])
@@ -40,9 +38,9 @@ dnl Checks for functions
AC_CHECK_FUNC(open64,
AC_DEFINE(HAVE_LFS)
CFLAGS="$CFLAGS -D_FILE_OFFSET_BITS=64")
-AC_CHECK_FUNCS(ftello getpt getnameinfo)
+AC_CHECK_FUNCS(ftello getpt getnameinfo getopt_long)
AC_EGREP_HEADER(sockaddr_storage,sys/socket.h,AC_DEFINE(HAVE_SOCKADDR_STORAGE))
-AC_CHECK_HEADERS(endian.h soundcard.h sys/soundcard.h)
+AC_CHECK_HEADERS(endian.h soundcard.h sys/soundcard.h getopt.h)
AC_CHECK_LIB(pthread,pthread_create,LIBPTHREAD="-lpthread")
if test "$LIBPTHREAD" = ""; then
@@ -93,11 +91,6 @@ if test "$JPEG" != "found"; then
exit 1
fi
-if test "$enable_efence" = "yes"; then
- echo "*** ElectricFence (malloc debugger) enabled"
- AC_CHECK_LIB(efence, EF_Print)
-fi
-
AC_SUBST(LIRC)
LIRC=""
if test "$enable_lirc" != "no"; then
diff --git a/debian/changelog b/debian/changelog
index c9c3470..b25a8bf 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,10 @@
+xawtv (3.29) unstable; urgency=low
+
+ * new release (closes: #74458)
+ * updated v4l-conf package for the new dpkg-statoverride
+
+ -- Gerd Knorr <kraxel@debian.org> Sat, 13 Jan 2001 22:02:05 +0100
+
xawtv (3.28) unstable; urgency=low
* new release (closes: #80933)
diff --git a/debian/control b/debian/control
index 7512332..4fd8f34 100644
--- a/debian/control
+++ b/debian/control
@@ -44,6 +44,7 @@ Description: ncurses-bases radio application
Package: v4l-conf
Architecture: any
Depends: ${shlibs:Depends}
+Conflicts: suidmanager (<< 0.50)
Description: tool to configure video4linux drivers
This is a small tool to configure a video4linux
device driver. It is required to make the video
diff --git a/debian/rules b/debian/rules
index 79b4559..b761ab5 100644
--- a/debian/rules
+++ b/debian/rules
@@ -45,8 +45,6 @@ binary-arch: install
# dh_strip
dh_compress
dh_fixperms -Xv4l-conf
- # You may want to make some executables suid here.
- dh_suidregister
# dh_makeshlibs
dh_installdeb
# dh_perl
diff --git a/http/bottom.html b/http/bottom.html
index 34a2a8e..a48f286 100644
--- a/http/bottom.html
+++ b/http/bottom.html
@@ -10,5 +10,13 @@
<a href="/800/">800</a> &nbsp;
<a href="/about.html">about</a>
</div>
+<form name="goto" action="/goto/">
+Jump to page
+<input type="text" name="p" size="4" maxlength="3">
+<input type="submit" value="ok">
+</form>
+<script language="JavaScript">
+document.forms["goto"].elements["p"].focus();
+</script>
</body>
</html>
diff --git a/http/page.c b/http/page.c
index 33c20b0..33b6ee6 100644
--- a/http/page.c
+++ b/http/page.c
@@ -274,6 +274,13 @@ void buildpage(struct REQUEST *req)
return;
}
+ /* goto form */
+ if (1 == sscanf(req->path,"/goto/?p=%d",&pagenr)) {
+ sprintf(req->path,"/%d/",pagenr);
+ mkredirect(req);
+ return;
+ }
+
mkerror(req,404,1);
return;
}
diff --git a/http/response.c b/http/response.c
index fc5f674..27be324 100644
--- a/http/response.c
+++ b/http/response.c
@@ -22,7 +22,7 @@ static struct HTTP_STATUS {
} http[] = {
{ 200, "200 OK", NULL },
{ 400, "400 Bad Request", "*PLONK*\n" },
- { 404, "404 Not Found", "File or directory not found\n" },
+ { 404, "404 Not Found", "videotext page not found in cache\n" },
{ 408, "408 Request Timeout", "Request Timeout\n" },
{ 500, "500 Internal Server Error", "Sorry folks\n" },
{ 501, "501 Not Implemented", "Sorry folks\n" },
diff --git a/log b/log
deleted file mode 100644
index 345d724..0000000
--- a/log
+++ /dev/null
@@ -1,825 +0,0 @@
-dpkg-buildpackage: source package is xawtv
-dpkg-buildpackage: source version is 3.20
-dpkg-buildpackage: source maintainer is Gerd Knorr <kraxel@debian.org>
- debian/rules clean DEB_BUILD_ARCH=powerpc DEB_BUILD_GNU_CPU=powerpc DEB_BUILD_GNU_SYSTEM=linux DEB_BUILD_GNU_TYPE=powerpc-linux DEB_HOST_ARCH=powerpc DEB_HOST_GNU_CPU=powerpc DEB_HOST_GNU_SYSTEM=linux DEB_HOST_GNU_TYPE=powerpc-linux
-make distclean
-make[1]: Entering directory `/home/kraxel/debian/xawtv-3.20'
-make[1]: *** No rule to make target `distclean'. Stop.
-make[1]: Leaving directory `/home/kraxel/debian/xawtv-3.20'
-make: [clean] Error 2 (ignored)
-dh_clean
- rm -f debian/substvars debian/postinst.debhelper debian/postrm.debhelper debian/preinst.debhelper debian/prerm.debhelper
- rm -rf debian/tmp
- rm -f debian/fbtv.substvars debian/fbtv.postinst.debhelper debian/fbtv.postrm.debhelper debian/fbtv.preinst.debhelper debian/fbtv.prerm.debhelper
- rm -rf debian/fbtv
- rm -f debian/streamer.substvars debian/streamer.postinst.debhelper debian/streamer.postrm.debhelper debian/streamer.preinst.debhelper debian/streamer.prerm.debhelper
- rm -rf debian/streamer
- rm -f debian/radio.substvars debian/radio.postinst.debhelper debian/radio.postrm.debhelper debian/radio.preinst.debhelper debian/radio.prerm.debhelper
- rm -rf debian/radio
- rm -f debian/v4l-conf.substvars debian/v4l-conf.postinst.debhelper debian/v4l-conf.postrm.debhelper debian/v4l-conf.preinst.debhelper debian/v4l-conf.prerm.debhelper
- rm -rf debian/v4l-conf
- rm -f debian/xawtv-tools.substvars debian/xawtv-tools.postinst.debhelper debian/xawtv-tools.postrm.debhelper debian/xawtv-tools.preinst.debhelper debian/xawtv-tools.prerm.debhelper
- rm -rf debian/xawtv-tools
- rm -f debian/webcam.substvars debian/webcam.postinst.debhelper debian/webcam.postrm.debhelper debian/webcam.preinst.debhelper debian/webcam.prerm.debhelper
- rm -rf debian/webcam
- rm -f debian/alevtd.substvars debian/alevtd.postinst.debhelper debian/alevtd.postrm.debhelper debian/alevtd.preinst.debhelper debian/alevtd.prerm.debhelper
- rm -rf debian/alevtd
- rm -f debian/files
- find . -type f -a \( -name \#\*\# -o -name \*\~ -o -name DEADJOE -o -name \*.orig -o -name \*.rej -o -name \*.bak -o -name .\*.orig -o -name .\*.rej -o -name .SUMS -o -name TAGS -o -name core -o \( -path \*/.deps/\* -a -name \*.P \) \) -exec rm -f {} \;
- dpkg-source -b xawtv-3.20
-dpkg-source: building xawtv in xawtv_3.20.tar.gz
-dpkg-source: building xawtv in xawtv_3.20.tar.gz
-dpkg-source: building xawtv in xawtv_3.20.tar.gz
-dpkg-source: building xawtv in xawtv_3.20.dsc
- debian/rules build DEB_BUILD_ARCH=powerpc DEB_BUILD_GNU_CPU=powerpc DEB_BUILD_GNU_SYSTEM=linux DEB_BUILD_GNU_TYPE=powerpc-linux DEB_HOST_ARCH=powerpc DEB_HOST_GNU_CPU=powerpc DEB_HOST_GNU_SYSTEM=linux DEB_HOST_GNU_TYPE=powerpc-linux
-test -f config.h || ./configure --prefix=/usr --mandir=/usr/share/man
-creating cache ./config.cache
-checking for gcc... gcc
-checking whether the C compiler (gcc ) works... yes
-checking whether the C compiler (gcc ) is a cross-compiler... no
-checking whether we are using GNU C... yes
-checking whether gcc accepts -g... yes
-checking how to run the C preprocessor... gcc -E
-checking for a BSD compatible install... /usr/bin/install -c
-checking for gccmakedep... gccmakedep
-checking for open64... yes
-checking for ftello... yes
-checking for getpt... yes
-checking for getnameinfo... yes
-checking for endian.h... yes
-checking for soundcard.h... no
-checking for sys/soundcard.h... yes
-checking for pthread_create in -lpthread... yes
-checking for pthread_create in -lc_r... no
-checking for main in -lossaudio... no
-checking for X... libraries /usr/X11R6/lib, headers /usr/X11R6/include
-checking for dnet_ntoa in -ldnet... no
-checking for dnet_ntoa in -ldnet_stub... no
-checking for gethostbyname... yes
-checking for connect... yes
-checking for remove... yes
-checking for shmat... yes
-checking for IceConnectionNumber in -lICE... yes
-checking for Xaw3dComputeTopShadowRGB in -lXaw3d... yes
-checking for jpeg_start_compress in -ljpeg... yes
-checking for lirc_init in -llirc_client... no
-checking for XF86DGAQueryExtension in -lXxf86dga... yes
-checking for XF86VidModeQueryExtension in -lXxf86vm... yes
-checking for DPMSQueryExtension in -lXdpms... yes
-checking for XvQueryExtension in -lXv... no
-checking for XShmAttach in -lXext... yes
-updating cache ./config.cache
-creating ./config.status
-creating Makefile
-creating src/Makefile
-creating tools/Makefile
-creating radio/Makefile
-creating man/Makefile
-creating i2c/Makefile
-creating font/Makefile
-creating webcam/Makefile
-creating http/Makefile
-creating libvbi/Makefile
-creating xawtv.spec
-creating config.h
-make build
-make[1]: Entering directory `/home/kraxel/debian/xawtv-3.20'
-set -e; for dir in libvbi src man radio font tools webcam http ; do make -C $dir build; done
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/libvbi'
-gcc -Wall -O2 -g -c -o vbi.o vbi.c
-vbi.c: In function `vbi_send':
-vbi.c:59: warning: suggest parentheses around assignment used as truth value
-vbi.c: In function `vbi_pll_reset':
-vbi.c:137: warning: suggest explicit braces to avoid ambiguous `else'
-vbi.c: In function `vbi_line':
-vbi.c:361: warning: suggest parentheses around assignment used as truth value
-vbi.c:361: warning: suggest explicit braces to avoid ambiguous `else'
-gcc -Wall -O2 -g -c -o fdset.o fdset.c
-gcc -Wall -O2 -g -c -o misc.o misc.c
-gcc -Wall -O2 -g -c -o hamm.o hamm.c
-gcc -Wall -O2 -g -c -o lang.o lang.c
-lang.c: In function `enhance':
-lang.c:206: warning: suggest explicit braces to avoid ambiguous `else'
-lang.c:218: warning: suggest parentheses around assignment used as truth value
-lang.c:218: warning: suggest explicit braces to avoid ambiguous `else'
-gcc -Wall -O2 -g -c -o cache.o cache.c
-cache.c: In function `cache_reset':
-cache.c:73: warning: suggest parentheses around assignment used as truth value
-cache.c: In function `cache_foreach_pg':
-cache.c:178: warning: suggest parentheses around assignment used as truth value
-cache.c:195: warning: suggest parentheses around assignment used as truth value
-cache.c: In function `cache_open':
-cache.c:238: warning: unused variable `vtp'
-cache.c:260: warning: label `fail2' defined but not used
-gcc -Wall -O2 -g -c -o font.o font.c
-gcc -Wall -O2 -g -c -o export.o export.c
-export.c: In function `find_opt':
-export.c:59: warning: suggest parentheses around assignment used as truth value
-export.c:60: warning: suggest parentheses around assignment used as truth value
-export.c:62: warning: suggest parentheses around assignment used as truth value
-export.c: In function `export_open':
-export.c:87: warning: suggest parentheses around assignment used as truth value
-export.c:89: warning: suggest parentheses around assignment used as truth value
-export.c:91: warning: suggest parentheses around assignment used as truth value
-export.c:96: warning: suggest parentheses around assignment used as truth value
-export.c:106: warning: suggest parentheses around assignment used as truth value
-export.c:110: warning: suggest parentheses around assignment used as truth value
-export.c: In function `adjust':
-export.c:189: warning: suggest parentheses around assignment used as truth value
-export.c: In function `export_mkname':
-export.c:200: warning: suggest parentheses around assignment used as truth value
-export.c: In function `fmt_page':
-export.c:249: warning: unused variable `c'
-gcc -Wall -O2 -g -c -o exp-gfx.o exp-gfx.c
-exp-gfx.c:40: warning: missing braces around initializer
-exp-gfx.c:40: warning: (near initialization for `export_ppm[0]')
-gcc -Wall -O2 -g -c -o exp-html.o exp-html.c
-exp-html.c:27: warning: missing braces around initializer
-exp-html.c:27: warning: (near initialization for `export_html[0]')
-gcc -Wall -O2 -g -c -o exp-txt.o exp-txt.c
-exp-txt.c:31: warning: missing braces around initializer
-exp-txt.c:31: warning: (near initialization for `export_txt[0]')
-exp-txt.c:43: warning: missing braces around initializer
-exp-txt.c:43: warning: (near initialization for `export_ansi[0]')
-exp-txt.c: In function `put_attr':
-exp-txt.c:125: warning: implicit declaration of function `stpcpy'
-exp-txt.c:125: warning: assignment makes pointer from integer without a cast
-exp-txt.c:128: warning: assignment makes pointer from integer without a cast
-exp-txt.c:134: warning: assignment makes pointer from integer without a cast
-exp-txt.c:136: warning: assignment makes pointer from integer without a cast
-exp-txt.c: In function `txt_output':
-exp-txt.c:159: warning: unused variable `x3'
-exp-txt.c:159: warning: unused variable `x2'
-exp-txt.c:157: warning: unused variable `fp'
-rm -f libvbi.a
-ar -r libvbi.a vbi.o fdset.o misc.o hamm.o lang.o cache.o font.o export.o exp-gfx.o exp-html.o exp-txt.o
-ranlib libvbi.a
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/libvbi'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/src'
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o main.o main.c
-In file included from main.c:38:
-/usr/X11R6/include/X11/Xaw/XawInit.h:29: warning: function declaration isn't a prototype
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o xt.o xt.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o toolbox.o toolbox.c
-In file included from toolbox.c:18:
-/usr/X11R6/include/X11/Xaw/XawInit.h:29: warning: function declaration isn't a prototype
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o conf.o conf.c
-In file included from conf.c:20:
-/usr/X11R6/include/X11/Xaw/XawInit.h:29: warning: function declaration isn't a prototype
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o x11.o x11.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o xv.o xv.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o complete.o complete.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o wmhooks.o wmhooks.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o channel.o channel.c
-In file included from channel.c:34:
-/usr/X11R6/include/X11/Xaw/XawInit.h:29: warning: function declaration isn't a prototype
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o sound.o sound.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o grab.o grab.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o grab-v4l.o grab-v4l.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o grab-v4l2.o grab-v4l2.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o grab-bsd.o grab-bsd.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o colorspace.o colorspace.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o webcam.o webcam.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o frequencies.o frequencies.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o writefile.o writefile.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o commands.o commands.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o parseconfig.o parseconfig.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o mjpeg.o mjpeg.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o capture.o capture.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o writeavi.o writeavi.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o lirc.o lirc.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -o xawtv main.o xt.o toolbox.o conf.o x11.o xv.o complete.o wmhooks.o channel.o sound.o grab.o grab-v4l.o grab-v4l2.o grab-bsd.o colorspace.o webcam.o frequencies.o writefile.o commands.o parseconfig.o mjpeg.o capture.o writeavi.o lirc.o -ljpeg -L/usr/X11R6/lib -lXdpms -lXxf86vm -lXxf86dga -lXaw3d -lXmu -lXt -lSM -lICE -lXext -lX11 -lpthread
-test -f Xawtv.ad || cp -v ./Xawtv.ad .
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o xawtv-remote.o xawtv-remote.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -o xawtv-remote xawtv-remote.o -L/usr/X11R6/lib -lXdpms -lXxf86vm -lXxf86dga -lXmu -lXt -lSM -lICE -lXext -lX11
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o v4l-conf.o v4l-conf.c
-v4l-conf.c:75: warning: function declaration isn't a prototype
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -o v4l-conf v4l-conf.o -L/usr/X11R6/lib -lXdpms -lXxf86vm -lXxf86dga -lXext -lX11
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o v4lctl.o v4lctl.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -DNO_X11=1 -c -o channel-no-x11.o channel.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -o v4lctl v4lctl.o channel-no-x11.o xv.o sound.o grab.o grab-v4l.o grab-v4l2.o grab-bsd.o colorspace.o webcam.o frequencies.o writefile.o commands.o parseconfig.o mjpeg.o -ljpeg -L/usr/X11R6/lib -lXdpms -lXxf86vm -lXxf86dga -lXaw3d -lXmu -lXt -lSM -lICE -lXext -lX11 -lpthread
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o streamer.o streamer.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -o streamer streamer.o channel-no-x11.o sound.o grab.o grab-v4l.o grab-v4l2.o grab-bsd.o colorspace.o webcam.o frequencies.o writefile.o commands.o parseconfig.o mjpeg.o capture.o writeavi.o -ljpeg -lpthread
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o fbtv.o fbtv.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o fbtools.o fbtools.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o matrox.o matrox.c
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -o fbtv fbtv.o fbtools.o channel-no-x11.o matrox.o sound.o grab.o grab-v4l.o grab-v4l2.o grab-bsd.o colorspace.o webcam.o frequencies.o writefile.o commands.o parseconfig.o mjpeg.o capture.o writeavi.o lirc.o -ljpeg -lncurses -lm -lpthread
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi xvideo.c -L/usr/X11R6/lib -lXdpms -lXxf86vm -lXxf86dga -lXaw3d -lXmu -lXt -lSM -lICE -lXext -lX11 -lpthread -o xvideo
-xvideo.c:4: warning: function declaration isn't a prototype
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o rootv.o rootv.c
-rootv.c:4: warning: function declaration isn't a prototype
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -o rootv rootv.o parseconfig.o -L/usr/X11R6/lib -lXdpms -lXxf86vm -lXxf86dga -lXext -lX11
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -c -o scantv.o scantv.c
-In file included from ../libvbi/vbi.h:6,
- from scantv.c:35:
-../libvbi/cache.h:32: warning: function declaration isn't a prototype
-gcc -g -Wall -Wstrict-prototypes -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -I/usr/X11R6/include -D_REENTRANT -DVERSION='"xawtv-3.20"' -I./../libvbi -L../libvbi -o scantv scantv.o channel-no-x11.o xv.o sound.o grab.o grab-v4l.o grab-v4l2.o grab-bsd.o colorspace.o webcam.o frequencies.o writefile.o commands.o parseconfig.o mjpeg.o -lvbi -ljpeg -L/usr/X11R6/lib -lXdpms -lXxf86vm -lXxf86dga -lXaw3d -lXmu -lXt -lSM -lICE -lXext -lX11 -lpthread
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/src'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/man'
-make[2]: Nothing to be done for `build'.
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/man'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/radio'
-gcc -g -Wall -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -c -o radio.o radio.c
-gcc -g -Wall -g -O2 -D_FILE_OFFSET_BITS=64 -I./.. -I.. -o radio radio.o -lncurses
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/radio'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/font'
-bdftopcf -o led-latin1.pcf led-latin1.bdf
-bdftopcf -o led-latin2.pcf led-latin2.bdf
-bdftopcf -o led-koi8.pcf led-koi8.bdf
-mkfontdir
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/font'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/tools'
-gcc -g -Wall -I./.. -I.. -D_XOPEN_SOURCE=500 -g -O2 -D_FILE_OFFSET_BITS=64 -I/usr/X11R6/include -c -o dump-mixers.o dump-mixers.c
-gcc -g -Wall -I./.. -I.. -D_XOPEN_SOURCE=500 -g -O2 -D_FILE_OFFSET_BITS=64 -I/usr/X11R6/include -o dump-mixers dump-mixers.o
-gcc -g -Wall -I./.. -I.. -D_XOPEN_SOURCE=500 -g -O2 -D_FILE_OFFSET_BITS=64 -I/usr/X11R6/include -c -o record.o record.c
-gcc -g -Wall -I./.. -I.. -D_XOPEN_SOURCE=500 -g -O2 -D_FILE_OFFSET_BITS=64 -I/usr/X11R6/include -o record record.o -lncurses
-gcc -g -Wall -I./.. -I.. -D_XOPEN_SOURCE=500 -g -O2 -D_FILE_OFFSET_BITS=64 -I/usr/X11R6/include -c -o showriff.o showriff.c
-gcc -g -Wall -I./.. -I.. -D_XOPEN_SOURCE=500 -g -O2 -D_FILE_OFFSET_BITS=64 -I/usr/X11R6/include -o showriff showriff.o
-gcc -g -Wall -I./.. -I.. -D_XOPEN_SOURCE=500 -g -O2 -D_FILE_OFFSET_BITS=64 -I/usr/X11R6/include -c -o propwatch.o propwatch.c
-gcc -g -Wall -I./.. -I.. -D_XOPEN_SOURCE=500 -g -O2 -D_FILE_OFFSET_BITS=64 -I/usr/X11R6/include -o propwatch propwatch.o -L/usr/X11R6/lib -lXdpms -lXxf86vm -lXxf86dga -lXaw3d -lXmu -lXt -lSM -lICE -lXext -lX11
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/tools'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/webcam'
-gcc -O2 -Wall -I./.. -I.. -D_GNU_SOURCE -c -o webcam.o webcam.c
-gcc -O2 -Wall -I./.. -I.. -D_GNU_SOURCE -c -o ftp.o ftp.c
-gcc -O2 -Wall -I./.. -I.. -D_GNU_SOURCE -c -o parseconfig.o parseconfig.c
-gcc -O2 -Wall -I./.. -I.. -D_GNU_SOURCE -o webcam webcam.o ftp.o parseconfig.o -ljpeg
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/webcam'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/http'
-gcc -Wall -g -O2 -I. -I./../libvbi -L../libvbi -c -o main.o main.c
-gcc -Wall -g -O2 -I. -I./../libvbi -L../libvbi -c -o request.o request.c
-gcc -Wall -g -O2 -I. -I./../libvbi -L../libvbi -c -o response.o response.c
-perl -ne 's/\"/\\\"/g; chop; print "\"$_\\n\"\n"' alevt.css > alevt.css.h
-perl -ne 's/\"/\\\"/g; chop; print "\"$_\\n\"\n"' top.html > top.html.h
-perl -ne 's/\"/\\\"/g; chop; print "\"$_\\n\"\n"' bottom.html > bottom.html.h
-perl -ne 's/\"/\\\"/g; chop; print "\"$_\\n\"\n"' about.html > about.html.h
-gcc -Wall -g -O2 -I. -I./../libvbi -L../libvbi -c -o page.o page.c
-gcc -Wall -g -O2 -I. -I./../libvbi -L../libvbi -o alevtd main.o request.o response.o page.o -lvbi
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/http'
-make[1]: Leaving directory `/home/kraxel/debian/xawtv-3.20'
- debian/rules binary DEB_BUILD_ARCH=powerpc DEB_BUILD_GNU_CPU=powerpc DEB_BUILD_GNU_SYSTEM=linux DEB_BUILD_GNU_TYPE=powerpc-linux DEB_HOST_ARCH=powerpc DEB_HOST_GNU_CPU=powerpc DEB_HOST_GNU_SYSTEM=linux DEB_HOST_GNU_TYPE=powerpc-linux
-test -f config.h || ./configure --prefix=/usr --mandir=/usr/share/man
-make build
-make[1]: Entering directory `/home/kraxel/debian/xawtv-3.20'
-set -e; for dir in libvbi src man radio font tools webcam http ; do make -C $dir build; done
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/libvbi'
-make[2]: Nothing to be done for `build'.
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/libvbi'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/src'
-make[2]: Nothing to be done for `build'.
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/src'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/man'
-make[2]: Nothing to be done for `build'.
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/man'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/radio'
-make[2]: Nothing to be done for `build'.
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/radio'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/font'
-mkfontdir
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/font'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/tools'
-make[2]: Nothing to be done for `build'.
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/tools'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/webcam'
-make[2]: Nothing to be done for `build'.
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/webcam'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/http'
-make[2]: Nothing to be done for `build'.
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/http'
-make[1]: Leaving directory `/home/kraxel/debian/xawtv-3.20'
-make install ROOT=/home/kraxel/debian/xawtv-3.20/debian/tmp
-make[1]: Entering directory `/home/kraxel/debian/xawtv-3.20'
-set -e; for dir in libvbi src man radio font tools webcam http ; do make -C $dir install; done
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/libvbi'
-make[2]: Nothing to be done for `install'.
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/libvbi'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/src'
-mkdir -p /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-mkdir -p /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/X11R6/lib/X11/app-defaults
-/usr/bin/install -c -s xawtv /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -s xawtv-remote /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -s fbtv /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin;
-/usr/bin/install -c -s streamer /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -s v4lctl /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -s rootv /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -s scantv /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -s -m4711 -o root -g root v4l-conf /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -m 644 ./Xawtv.ad /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/X11R6/lib/X11/app-defaults/Xawtv
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/src'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/man'
-mkdir -p /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/share/man/man1
-for page in ./*.man; do \
- dest=`basename $page .man`; \
- /usr/bin/install -c -m 644 $page /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/share/man/man1/$dest.1; \
-done
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/man'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/radio'
-mkdir -p /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -s radio /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -m 644 ./radio.man /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/share/man/man1/radio.1
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/radio'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/font'
-mkfontdir
-mkdir -p /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/X11R6/lib/X11/fonts/misc
-for file in led-latin1.pcf led-latin2.pcf led-koi8.pcf; do \
- install -m 644 $file /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/X11R6/lib/X11/fonts/misc; \
-done
-if test "/home/kraxel/debian/xawtv-3.20/debian/tmp" = ""; then \
- (cd /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/X11R6/lib/X11/fonts/misc; mkfontdir); \
- xset fp rehash; \
- true; \
-fi
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/font'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/tools'
-mkdir -p /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-mkdir -p /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/share/man/man1
-/usr/bin/install -c -s dump-mixers /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -s record /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -s showriff /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -s propwatch /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-for page in ./*.man; do \
- dest=`basename $page .man`; \
- /usr/bin/install -c -m 644 $page /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/share/man/man1/$dest.1; \
-done
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/tools'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/webcam'
-mkdir -p /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-mkdir -p /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/share/man/man1
-/usr/bin/install -c -s webcam /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-/usr/bin/install -c -m 644 ./webcam.man /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/share/man/man1/webcam.1
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/webcam'
-make[2]: Entering directory `/home/kraxel/debian/xawtv-3.20/http'
-mkdir -p /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/share/man/man1
-/usr/bin/install -c -s alevtd /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/bin
-install -m 644 ./alevtd.man /home/kraxel/debian/xawtv-3.20/debian/tmp/usr/share/man/man1/alevtd.1
-make[2]: Leaving directory `/home/kraxel/debian/xawtv-3.20/http'
-make[1]: Leaving directory `/home/kraxel/debian/xawtv-3.20'
-dh_movefiles
- install -d debian/fbtv
- rm -f debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/fbtv ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/fbtv.1 ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/fbtv ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/fbtv.1 ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; tar --create --remove-files --files-from=../movelist --file -) | (cd debian/fbtv >/dev/null ;tar xpf -)
- rm -f debian/movelist
- install -d debian/streamer
- rm -f debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/streamer ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/streamer ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; tar --create --remove-files --files-from=../movelist --file -) | (cd debian/streamer >/dev/null ;tar xpf -)
- rm -f debian/movelist
- install -d debian/radio
- rm -f debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/radio ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/radio.1 ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/radio ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/radio.1 ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; tar --create --remove-files --files-from=../movelist --file -) | (cd debian/radio >/dev/null ;tar xpf -)
- rm -f debian/movelist
- install -d debian/v4l-conf
- rm -f debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/v4l-conf ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/v4l-conf.1 ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/v4l-conf ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/v4l-conf.1 ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; tar --create --remove-files --files-from=../movelist --file -) | (cd debian/v4l-conf >/dev/null ;tar xpf -)
- rm -f debian/movelist
- install -d debian/xawtv-tools
- rm -f debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/showriff ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/propwatch ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/dump-mixers ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/record ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/propwatch.1 ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/showriff.1 ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/showriff ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/propwatch ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/dump-mixers ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/record ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/propwatch.1 ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/showriff.1 ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; tar --create --remove-files --files-from=../movelist --file -) | (cd debian/xawtv-tools >/dev/null ;tar xpf -)
- rm -f debian/movelist
- install -d debian/webcam
- rm -f debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/webcam ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/webcam.1 ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/webcam ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/webcam.1 ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; tar --create --remove-files --files-from=../movelist --file -) | (cd debian/webcam >/dev/null ;tar xpf -)
- rm -f debian/movelist
- install -d debian/alevtd
- rm -f debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/alevtd ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/alevtd.1 ! -type d -and ! -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/bin/alevtd ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; find usr/share/man/man1/alevtd.1 ! -type d -and -type l -print || true) >> debian/movelist
- (cd debian/tmp >/dev/null ; tar --create --remove-files --files-from=../movelist --file -) | (cd debian/alevtd >/dev/null ;tar xpf -)
- rm -f debian/movelist
-# nop
-dh_installdocs README* Changes UPDATE_TO_v3.0 \
- Programming-FAQ Trouble-Shooting Sound-FAQ \
- contrib/dot.lircrc contrib/frequencies*
- install -g 0 -o 0 -d debian/tmp/usr/share/doc/xawtv
- cp -a README README.bttv README.de README.lirc README.recording README.xfree4 Changes UPDATE_TO_v3.0 Programming-FAQ Trouble-Shooting Sound-FAQ contrib/dot.lircrc contrib/frequencies-europe contrib/frequencies-japan debian/tmp/usr/share/doc/xawtv/
- chown -R 0.0 debian/tmp/usr/share/doc
- chmod -R go=rX debian/tmp/usr/share/doc
- chmod -R u\+rw debian/tmp/usr/share/doc
- install -g 0 -o 0 -m 644 -p debian/copyright debian/tmp/usr/share/doc/xawtv/copyright
- echo "# Automatically added by dh_installdocs">> debian/postinst.debhelper
- sed "s/#PACKAGE#/xawtv/g" /usr/share/debhelper/autoscripts/postinst-doc >> debian/postinst.debhelper
- echo '# End automatically added section' >> debian/postinst.debhelper
- echo "# Automatically added by dh_installdocs">> debian/prerm.debhelper
- sed "s/#PACKAGE#/xawtv/g" /usr/share/debhelper/autoscripts/prerm-doc >> debian/prerm.debhelper
- echo '# End automatically added section' >> debian/prerm.debhelper
- install -g 0 -o 0 -d debian/fbtv/usr/share/doc/fbtv
- install -g 0 -o 0 -m 644 -p debian/copyright debian/fbtv/usr/share/doc/fbtv/copyright
- echo "# Automatically added by dh_installdocs">> debian/fbtv.postinst.debhelper
- sed "s/#PACKAGE#/fbtv/g" /usr/share/debhelper/autoscripts/postinst-doc >> debian/fbtv.postinst.debhelper
- echo '# End automatically added section' >> debian/fbtv.postinst.debhelper
- echo "# Automatically added by dh_installdocs">> debian/fbtv.prerm.debhelper
- sed "s/#PACKAGE#/fbtv/g" /usr/share/debhelper/autoscripts/prerm-doc >> debian/fbtv.prerm.debhelper
- echo '# End automatically added section' >> debian/fbtv.prerm.debhelper
- install -g 0 -o 0 -d debian/streamer/usr/share/doc/streamer
- install -g 0 -o 0 -m 644 -p debian/copyright debian/streamer/usr/share/doc/streamer/copyright
- echo "# Automatically added by dh_installdocs">> debian/streamer.postinst.debhelper
- sed "s/#PACKAGE#/streamer/g" /usr/share/debhelper/autoscripts/postinst-doc >> debian/streamer.postinst.debhelper
- echo '# End automatically added section' >> debian/streamer.postinst.debhelper
- echo "# Automatically added by dh_installdocs">> debian/streamer.prerm.debhelper
- sed "s/#PACKAGE#/streamer/g" /usr/share/debhelper/autoscripts/prerm-doc >> debian/streamer.prerm.debhelper
- echo '# End automatically added section' >> debian/streamer.prerm.debhelper
- install -g 0 -o 0 -d debian/radio/usr/share/doc/radio
- install -g 0 -o 0 -m 644 -p debian/copyright debian/radio/usr/share/doc/radio/copyright
- echo "# Automatically added by dh_installdocs">> debian/radio.postinst.debhelper
- sed "s/#PACKAGE#/radio/g" /usr/share/debhelper/autoscripts/postinst-doc >> debian/radio.postinst.debhelper
- echo '# End automatically added section' >> debian/radio.postinst.debhelper
- echo "# Automatically added by dh_installdocs">> debian/radio.prerm.debhelper
- sed "s/#PACKAGE#/radio/g" /usr/share/debhelper/autoscripts/prerm-doc >> debian/radio.prerm.debhelper
- echo '# End automatically added section' >> debian/radio.prerm.debhelper
- install -g 0 -o 0 -d debian/v4l-conf/usr/share/doc/v4l-conf
- install -g 0 -o 0 -m 644 -p debian/copyright debian/v4l-conf/usr/share/doc/v4l-conf/copyright
- echo "# Automatically added by dh_installdocs">> debian/v4l-conf.postinst.debhelper
- sed "s/#PACKAGE#/v4l-conf/g" /usr/share/debhelper/autoscripts/postinst-doc >> debian/v4l-conf.postinst.debhelper
- echo '# End automatically added section' >> debian/v4l-conf.postinst.debhelper
- echo "# Automatically added by dh_installdocs">> debian/v4l-conf.prerm.debhelper
- sed "s/#PACKAGE#/v4l-conf/g" /usr/share/debhelper/autoscripts/prerm-doc >> debian/v4l-conf.prerm.debhelper
- echo '# End automatically added section' >> debian/v4l-conf.prerm.debhelper
- install -g 0 -o 0 -d debian/xawtv-tools/usr/share/doc/xawtv-tools
- install -g 0 -o 0 -m 644 -p debian/copyright debian/xawtv-tools/usr/share/doc/xawtv-tools/copyright
- echo "# Automatically added by dh_installdocs">> debian/xawtv-tools.postinst.debhelper
- sed "s/#PACKAGE#/xawtv-tools/g" /usr/share/debhelper/autoscripts/postinst-doc >> debian/xawtv-tools.postinst.debhelper
- echo '# End automatically added section' >> debian/xawtv-tools.postinst.debhelper
- echo "# Automatically added by dh_installdocs">> debian/xawtv-tools.prerm.debhelper
- sed "s/#PACKAGE#/xawtv-tools/g" /usr/share/debhelper/autoscripts/prerm-doc >> debian/xawtv-tools.prerm.debhelper
- echo '# End automatically added section' >> debian/xawtv-tools.prerm.debhelper
- install -g 0 -o 0 -d debian/webcam/usr/share/doc/webcam
- install -g 0 -o 0 -m 644 -p debian/copyright debian/webcam/usr/share/doc/webcam/copyright
- echo "# Automatically added by dh_installdocs">> debian/webcam.postinst.debhelper
- sed "s/#PACKAGE#/webcam/g" /usr/share/debhelper/autoscripts/postinst-doc >> debian/webcam.postinst.debhelper
- echo '# End automatically added section' >> debian/webcam.postinst.debhelper
- echo "# Automatically added by dh_installdocs">> debian/webcam.prerm.debhelper
- sed "s/#PACKAGE#/webcam/g" /usr/share/debhelper/autoscripts/prerm-doc >> debian/webcam.prerm.debhelper
- echo '# End automatically added section' >> debian/webcam.prerm.debhelper
- install -g 0 -o 0 -d debian/alevtd/usr/share/doc/alevtd
- install -g 0 -o 0 -m 644 -p debian/copyright debian/alevtd/usr/share/doc/alevtd/copyright
- echo "# Automatically added by dh_installdocs">> debian/alevtd.postinst.debhelper
- sed "s/#PACKAGE#/alevtd/g" /usr/share/debhelper/autoscripts/postinst-doc >> debian/alevtd.postinst.debhelper
- echo '# End automatically added section' >> debian/alevtd.postinst.debhelper
- echo "# Automatically added by dh_installdocs">> debian/alevtd.prerm.debhelper
- sed "s/#PACKAGE#/alevtd/g" /usr/share/debhelper/autoscripts/prerm-doc >> debian/alevtd.prerm.debhelper
- echo '# End automatically added section' >> debian/alevtd.prerm.debhelper
-dh_installdocs -p xawtv-tools tools/README
- cp -a tools/README debian/xawtv-tools/usr/share/doc/xawtv-tools/
- chown -R 0.0 debian/xawtv-tools/usr/share/doc
- chmod -R go=rX debian/xawtv-tools/usr/share/doc
- chmod -R u\+rw debian/xawtv-tools/usr/share/doc
- install -g 0 -o 0 -m 644 -p debian/copyright debian/xawtv-tools/usr/share/doc/xawtv-tools/copyright
- echo "# Automatically added by dh_installdocs">> debian/xawtv-tools.postinst.debhelper
- sed "s/#PACKAGE#/xawtv-tools/g" /usr/share/debhelper/autoscripts/postinst-doc >> debian/xawtv-tools.postinst.debhelper
- echo '# End automatically added section' >> debian/xawtv-tools.postinst.debhelper
- echo "# Automatically added by dh_installdocs">> debian/xawtv-tools.prerm.debhelper
- sed "s/#PACKAGE#/xawtv-tools/g" /usr/share/debhelper/autoscripts/prerm-doc >> debian/xawtv-tools.prerm.debhelper
- echo '# End automatically added section' >> debian/xawtv-tools.prerm.debhelper
-dh_installdocs -p webcam webcam/webcam.cgi
- cp -a webcam/webcam.cgi debian/webcam/usr/share/doc/webcam/
- chown -R 0.0 debian/webcam/usr/share/doc
- chmod -R go=rX debian/webcam/usr/share/doc
- chmod -R u\+rw debian/webcam/usr/share/doc
- install -g 0 -o 0 -m 644 -p debian/copyright debian/webcam/usr/share/doc/webcam/copyright
- echo "# Automatically added by dh_installdocs">> debian/webcam.postinst.debhelper
- sed "s/#PACKAGE#/webcam/g" /usr/share/debhelper/autoscripts/postinst-doc >> debian/webcam.postinst.debhelper
- echo '# End automatically added section' >> debian/webcam.postinst.debhelper
- echo "# Automatically added by dh_installdocs">> debian/webcam.prerm.debhelper
- sed "s/#PACKAGE#/webcam/g" /usr/share/debhelper/autoscripts/prerm-doc >> debian/webcam.prerm.debhelper
- echo '# End automatically added section' >> debian/webcam.prerm.debhelper
-dh_installmenu
- install -d debian/tmp/usr/lib/menu
- install -p -m644 debian/menu debian/tmp/usr/lib/menu/xawtv
- echo "# Automatically added by dh_installmenu">> debian/postinst.debhelper
- sed "" /usr/share/debhelper/autoscripts/postinst-menu >> debian/postinst.debhelper
- echo '# End automatically added section' >> debian/postinst.debhelper
- echo "# Automatically added by dh_installmenu">> debian/postrm.debhelper
- sed "" /usr/share/debhelper/autoscripts/postrm-menu >> debian/postrm.debhelper
- echo '# End automatically added section' >> debian/postrm.debhelper
- install -d debian/fbtv/usr/lib/menu
- install -p -m644 debian/fbtv.menu debian/fbtv/usr/lib/menu/fbtv
- echo "# Automatically added by dh_installmenu">> debian/fbtv.postinst.debhelper
- sed "" /usr/share/debhelper/autoscripts/postinst-menu >> debian/fbtv.postinst.debhelper
- echo '# End automatically added section' >> debian/fbtv.postinst.debhelper
- echo "# Automatically added by dh_installmenu">> debian/fbtv.postrm.debhelper
- sed "" /usr/share/debhelper/autoscripts/postrm-menu >> debian/fbtv.postrm.debhelper
- echo '# End automatically added section' >> debian/fbtv.postrm.debhelper
- install -d debian/radio/usr/lib/menu
- install -p -m644 debian/radio.menu debian/radio/usr/lib/menu/radio
- echo "# Automatically added by dh_installmenu">> debian/radio.postinst.debhelper
- sed "" /usr/share/debhelper/autoscripts/postinst-menu >> debian/radio.postinst.debhelper
- echo '# End automatically added section' >> debian/radio.postinst.debhelper
- echo "# Automatically added by dh_installmenu">> debian/radio.postrm.debhelper
- sed "" /usr/share/debhelper/autoscripts/postrm-menu >> debian/radio.postrm.debhelper
- echo '# End automatically added section' >> debian/radio.postrm.debhelper
-dh_undocumented -p xawtv scantv.1
- ln -sf ../man7/undocumented.7.gz debian/tmp/usr/share/man/man1/scantv.1.gz
-dh_undocumented -p xawtv-tools record.1 dump-mixers.1
- ln -sf ../man7/undocumented.7.gz debian/xawtv-tools/usr/share/man/man1/record.1.gz
- ln -sf ../man7/undocumented.7.gz debian/xawtv-tools/usr/share/man/man1/dump-mixers.1.gz
-dh_undocumented -p streamer streamer.1
- install -d debian/streamer/usr/share/man/man1
- ln -sf ../man7/undocumented.7.gz debian/streamer/usr/share/man/man1/streamer.1.gz
-dh_installchangelogs
- install -o 0 -g 0 -p -m644 debian/changelog debian/tmp/usr/share/doc/xawtv/changelog
- install -o 0 -g 0 -p -m644 debian/changelog debian/fbtv/usr/share/doc/fbtv/changelog
- install -o 0 -g 0 -p -m644 debian/changelog debian/streamer/usr/share/doc/streamer/changelog
- install -o 0 -g 0 -p -m644 debian/changelog debian/radio/usr/share/doc/radio/changelog
- install -o 0 -g 0 -p -m644 debian/changelog debian/v4l-conf/usr/share/doc/v4l-conf/changelog
- install -o 0 -g 0 -p -m644 debian/changelog debian/xawtv-tools/usr/share/doc/xawtv-tools/changelog
- install -o 0 -g 0 -p -m644 debian/changelog debian/webcam/usr/share/doc/webcam/changelog
- install -o 0 -g 0 -p -m644 debian/changelog debian/alevtd/usr/share/doc/alevtd/changelog
-dh_compress
- cd debian/tmp
- chmod a-x usr/share/man/man1/rootv.1 usr/share/man/man1/v4lctl.1 usr/share/man/man1/xawtv-remote.1 usr/share/man/man1/xawtv.1 usr/share/doc/xawtv/README usr/share/doc/xawtv/README.bttv usr/share/doc/xawtv/Changes usr/share/doc/xawtv/Trouble-Shooting usr/share/doc/xawtv/frequencies-europe usr/share/doc/xawtv/changelog
- gzip -9f usr/share/man/man1/rootv.1 usr/share/man/man1/v4lctl.1 usr/share/man/man1/xawtv-remote.1 usr/share/man/man1/xawtv.1 usr/share/doc/xawtv/README usr/share/doc/xawtv/README.bttv usr/share/doc/xawtv/Changes usr/share/doc/xawtv/Trouble-Shooting usr/share/doc/xawtv/frequencies-europe usr/share/doc/xawtv/changelog
- cd /home/kraxel/debian/xawtv-3.20
- cd debian/fbtv
- chmod a-x usr/share/man/man1/fbtv.1 usr/share/doc/fbtv/changelog
- gzip -9f usr/share/man/man1/fbtv.1 usr/share/doc/fbtv/changelog
- cd /home/kraxel/debian/xawtv-3.20
- cd debian/streamer
- chmod a-x usr/share/doc/streamer/changelog
- gzip -9f usr/share/doc/streamer/changelog
- cd /home/kraxel/debian/xawtv-3.20
- cd debian/radio
- chmod a-x usr/share/man/man1/radio.1 usr/share/doc/radio/changelog
- gzip -9f usr/share/man/man1/radio.1 usr/share/doc/radio/changelog
- cd /home/kraxel/debian/xawtv-3.20
- cd debian/v4l-conf
- chmod a-x usr/share/man/man1/v4l-conf.1 usr/share/doc/v4l-conf/changelog
- gzip -9f usr/share/man/man1/v4l-conf.1 usr/share/doc/v4l-conf/changelog
- cd /home/kraxel/debian/xawtv-3.20
- cd debian/xawtv-tools
- chmod a-x usr/share/man/man1/propwatch.1 usr/share/man/man1/showriff.1 usr/share/doc/xawtv-tools/changelog
- gzip -9f usr/share/man/man1/propwatch.1 usr/share/man/man1/showriff.1 usr/share/doc/xawtv-tools/changelog
- cd /home/kraxel/debian/xawtv-3.20
- cd debian/webcam
- chmod a-x usr/share/man/man1/webcam.1 usr/share/doc/webcam/changelog
- gzip -9f usr/share/man/man1/webcam.1 usr/share/doc/webcam/changelog
- cd /home/kraxel/debian/xawtv-3.20
- cd debian/alevtd
- chmod a-x usr/share/man/man1/alevtd.1 usr/share/doc/alevtd/changelog
- gzip -9f usr/share/man/man1/alevtd.1 usr/share/doc/alevtd/changelog
- cd /home/kraxel/debian/xawtv-3.20
-dh_fixperms
- find debian/tmp -print0 2>/dev/null | xargs -0r chown --no-dereference 0.0
- find debian/tmp ! -type l -print0 2>/dev/null | xargs -0r chmod go=rX,u+rw,a-s
- find debian/tmp/usr/share/doc debian/tmp/usr/doc -type f ! -regex '.*/examples/.*' -print0 2>/dev/null | xargs -0r chmod 644
- find debian/tmp/usr/share/doc debian/tmp/usr/doc -type d -print0 2>/dev/null | xargs -0r chmod 755
- find debian/tmp/usr/share/man debian/tmp/usr/man/ debian/tmp/usr/X11*/man/ -type f -print0 2>/dev/null | xargs -0r chmod 644
- find debian/tmp -perm -5 -type f \( -name '*.so*' -or -name '*.la' -or -name '*.a' \) -print0 2>/dev/null | xargs -0r chmod a-X
- find debian/fbtv -print0 2>/dev/null | xargs -0r chown --no-dereference 0.0
- find debian/fbtv ! -type l -print0 2>/dev/null | xargs -0r chmod go=rX,u+rw,a-s
- find debian/fbtv/usr/share/doc debian/fbtv/usr/doc -type f ! -regex '.*/examples/.*' -print0 2>/dev/null | xargs -0r chmod 644
- find debian/fbtv/usr/share/doc debian/fbtv/usr/doc -type d -print0 2>/dev/null | xargs -0r chmod 755
- find debian/fbtv/usr/share/man debian/fbtv/usr/man/ debian/fbtv/usr/X11*/man/ -type f -print0 2>/dev/null | xargs -0r chmod 644
- find debian/fbtv -perm -5 -type f \( -name '*.so*' -or -name '*.la' -or -name '*.a' \) -print0 2>/dev/null | xargs -0r chmod a-X
- find debian/streamer -print0 2>/dev/null | xargs -0r chown --no-dereference 0.0
- find debian/streamer ! -type l -print0 2>/dev/null | xargs -0r chmod go=rX,u+rw,a-s
- find debian/streamer/usr/share/doc debian/streamer/usr/doc -type f ! -regex '.*/examples/.*' -print0 2>/dev/null | xargs -0r chmod 644
- find debian/streamer/usr/share/doc debian/streamer/usr/doc -type d -print0 2>/dev/null | xargs -0r chmod 755
- find debian/streamer/usr/share/man debian/streamer/usr/man/ debian/streamer/usr/X11*/man/ -type f -print0 2>/dev/null | xargs -0r chmod 644
- find debian/streamer -perm -5 -type f \( -name '*.so*' -or -name '*.la' -or -name '*.a' \) -print0 2>/dev/null | xargs -0r chmod a-X
- find debian/radio -print0 2>/dev/null | xargs -0r chown --no-dereference 0.0
- find debian/radio ! -type l -print0 2>/dev/null | xargs -0r chmod go=rX,u+rw,a-s
- find debian/radio/usr/share/doc debian/radio/usr/doc -type f ! -regex '.*/examples/.*' -print0 2>/dev/null | xargs -0r chmod 644
- find debian/radio/usr/share/doc debian/radio/usr/doc -type d -print0 2>/dev/null | xargs -0r chmod 755
- find debian/radio/usr/share/man debian/radio/usr/man/ debian/radio/usr/X11*/man/ -type f -print0 2>/dev/null | xargs -0r chmod 644
- find debian/radio -perm -5 -type f \( -name '*.so*' -or -name '*.la' -or -name '*.a' \) -print0 2>/dev/null | xargs -0r chmod a-X
- find debian/v4l-conf -print0 2>/dev/null | xargs -0r chown --no-dereference 0.0
- find debian/v4l-conf ! -type l -print0 2>/dev/null | xargs -0r chmod go=rX,u+rw,a-s
- find debian/v4l-conf/usr/share/doc debian/v4l-conf/usr/doc -type f ! -regex '.*/examples/.*' -print0 2>/dev/null | xargs -0r chmod 644
- find debian/v4l-conf/usr/share/doc debian/v4l-conf/usr/doc -type d -print0 2>/dev/null | xargs -0r chmod 755
- find debian/v4l-conf/usr/share/man debian/v4l-conf/usr/man/ debian/v4l-conf/usr/X11*/man/ -type f -print0 2>/dev/null | xargs -0r chmod 644
- find debian/v4l-conf -perm -5 -type f \( -name '*.so*' -or -name '*.la' -or -name '*.a' \) -print0 2>/dev/null | xargs -0r chmod a-X
- find debian/xawtv-tools -print0 2>/dev/null | xargs -0r chown --no-dereference 0.0
- find debian/xawtv-tools ! -type l -print0 2>/dev/null | xargs -0r chmod go=rX,u+rw,a-s
- find debian/xawtv-tools/usr/share/doc debian/xawtv-tools/usr/doc -type f ! -regex '.*/examples/.*' -print0 2>/dev/null | xargs -0r chmod 644
- find debian/xawtv-tools/usr/share/doc debian/xawtv-tools/usr/doc -type d -print0 2>/dev/null | xargs -0r chmod 755
- find debian/xawtv-tools/usr/share/man debian/xawtv-tools/usr/man/ debian/xawtv-tools/usr/X11*/man/ -type f -print0 2>/dev/null | xargs -0r chmod 644
- find debian/xawtv-tools -perm -5 -type f \( -name '*.so*' -or -name '*.la' -or -name '*.a' \) -print0 2>/dev/null | xargs -0r chmod a-X
- find debian/webcam -print0 2>/dev/null | xargs -0r chown --no-dereference 0.0
- find debian/webcam ! -type l -print0 2>/dev/null | xargs -0r chmod go=rX,u+rw,a-s
- find debian/webcam/usr/share/doc debian/webcam/usr/doc -type f ! -regex '.*/examples/.*' -print0 2>/dev/null | xargs -0r chmod 644
- find debian/webcam/usr/share/doc debian/webcam/usr/doc -type d -print0 2>/dev/null | xargs -0r chmod 755
- find debian/webcam/usr/share/man debian/webcam/usr/man/ debian/webcam/usr/X11*/man/ -type f -print0 2>/dev/null | xargs -0r chmod 644
- find debian/webcam -perm -5 -type f \( -name '*.so*' -or -name '*.la' -or -name '*.a' \) -print0 2>/dev/null | xargs -0r chmod a-X
- find debian/alevtd -print0 2>/dev/null | xargs -0r chown --no-dereference 0.0
- find debian/alevtd ! -type l -print0 2>/dev/null | xargs -0r chmod go=rX,u+rw,a-s
- find debian/alevtd/usr/share/doc debian/alevtd/usr/doc -type f ! -regex '.*/examples/.*' -print0 2>/dev/null | xargs -0r chmod 644
- find debian/alevtd/usr/share/doc debian/alevtd/usr/doc -type d -print0 2>/dev/null | xargs -0r chmod 755
- find debian/alevtd/usr/share/man debian/alevtd/usr/man/ debian/alevtd/usr/X11*/man/ -type f -print0 2>/dev/null | xargs -0r chmod 644
- find debian/alevtd -perm -5 -type f \( -name '*.so*' -or -name '*.la' -or -name '*.a' \) -print0 2>/dev/null | xargs -0r chmod a-X
-# You may want to make some executables suid here.
-dh_suidregister
-dh_installdeb
- install -o 0 -g 0 -d debian/tmp/DEBIAN
- perl -pe 's~#DEBHELPER#~qx{cat debian/postinst.debhelper}~eg' < debian/postinst > debian/tmp/DEBIAN/postinst
- chown 0.0 debian/tmp/DEBIAN/postinst
- chmod 755 debian/tmp/DEBIAN/postinst
- echo '#!/bin/sh -e' > debian/tmp/DEBIAN/prerm
- cat debian/prerm.debhelper >> debian/tmp/DEBIAN/prerm
- chown 0.0 debian/tmp/DEBIAN/prerm
- chmod 755 debian/tmp/DEBIAN/prerm
- perl -pe 's~#DEBHELPER#~qx{cat debian/postrm.debhelper}~eg' < debian/postrm > debian/tmp/DEBIAN/postrm
- chown 0.0 debian/tmp/DEBIAN/postrm
- chmod 755 debian/tmp/DEBIAN/postrm
- install -o 0 -g 0 -d debian/fbtv/DEBIAN
- echo '#!/bin/sh -e' > debian/fbtv/DEBIAN/postinst
- cat debian/fbtv.postinst.debhelper >> debian/fbtv/DEBIAN/postinst
- chown 0.0 debian/fbtv/DEBIAN/postinst
- chmod 755 debian/fbtv/DEBIAN/postinst
- echo '#!/bin/sh -e' > debian/fbtv/DEBIAN/prerm
- cat debian/fbtv.prerm.debhelper >> debian/fbtv/DEBIAN/prerm
- chown 0.0 debian/fbtv/DEBIAN/prerm
- chmod 755 debian/fbtv/DEBIAN/prerm
- echo '#!/bin/sh -e' > debian/fbtv/DEBIAN/postrm
- cat debian/fbtv.postrm.debhelper >> debian/fbtv/DEBIAN/postrm
- chown 0.0 debian/fbtv/DEBIAN/postrm
- chmod 755 debian/fbtv/DEBIAN/postrm
- install -o 0 -g 0 -d debian/streamer/DEBIAN
- echo '#!/bin/sh -e' > debian/streamer/DEBIAN/postinst
- cat debian/streamer.postinst.debhelper >> debian/streamer/DEBIAN/postinst
- chown 0.0 debian/streamer/DEBIAN/postinst
- chmod 755 debian/streamer/DEBIAN/postinst
- echo '#!/bin/sh -e' > debian/streamer/DEBIAN/prerm
- cat debian/streamer.prerm.debhelper >> debian/streamer/DEBIAN/prerm
- chown 0.0 debian/streamer/DEBIAN/prerm
- chmod 755 debian/streamer/DEBIAN/prerm
- install -o 0 -g 0 -d debian/radio/DEBIAN
- echo '#!/bin/sh -e' > debian/radio/DEBIAN/postinst
- cat debian/radio.postinst.debhelper >> debian/radio/DEBIAN/postinst
- chown 0.0 debian/radio/DEBIAN/postinst
- chmod 755 debian/radio/DEBIAN/postinst
- echo '#!/bin/sh -e' > debian/radio/DEBIAN/prerm
- cat debian/radio.prerm.debhelper >> debian/radio/DEBIAN/prerm
- chown 0.0 debian/radio/DEBIAN/prerm
- chmod 755 debian/radio/DEBIAN/prerm
- echo '#!/bin/sh -e' > debian/radio/DEBIAN/postrm
- cat debian/radio.postrm.debhelper >> debian/radio/DEBIAN/postrm
- chown 0.0 debian/radio/DEBIAN/postrm
- chmod 755 debian/radio/DEBIAN/postrm
- install -o 0 -g 0 -d debian/v4l-conf/DEBIAN
- echo '#!/bin/sh -e' > debian/v4l-conf/DEBIAN/postinst
- cat debian/v4l-conf.postinst.debhelper >> debian/v4l-conf/DEBIAN/postinst
- chown 0.0 debian/v4l-conf/DEBIAN/postinst
- chmod 755 debian/v4l-conf/DEBIAN/postinst
- echo '#!/bin/sh -e' > debian/v4l-conf/DEBIAN/prerm
- cat debian/v4l-conf.prerm.debhelper >> debian/v4l-conf/DEBIAN/prerm
- chown 0.0 debian/v4l-conf/DEBIAN/prerm
- chmod 755 debian/v4l-conf/DEBIAN/prerm
- install -o 0 -g 0 -d debian/xawtv-tools/DEBIAN
- echo '#!/bin/sh -e' > debian/xawtv-tools/DEBIAN/postinst
- cat debian/xawtv-tools.postinst.debhelper >> debian/xawtv-tools/DEBIAN/postinst
- chown 0.0 debian/xawtv-tools/DEBIAN/postinst
- chmod 755 debian/xawtv-tools/DEBIAN/postinst
- echo '#!/bin/sh -e' > debian/xawtv-tools/DEBIAN/prerm
- cat debian/xawtv-tools.prerm.debhelper >> debian/xawtv-tools/DEBIAN/prerm
- chown 0.0 debian/xawtv-tools/DEBIAN/prerm
- chmod 755 debian/xawtv-tools/DEBIAN/prerm
- install -o 0 -g 0 -d debian/webcam/DEBIAN
- echo '#!/bin/sh -e' > debian/webcam/DEBIAN/postinst
- cat debian/webcam.postinst.debhelper >> debian/webcam/DEBIAN/postinst
- chown 0.0 debian/webcam/DEBIAN/postinst
- chmod 755 debian/webcam/DEBIAN/postinst
- echo '#!/bin/sh -e' > debian/webcam/DEBIAN/prerm
- cat debian/webcam.prerm.debhelper >> debian/webcam/DEBIAN/prerm
- chown 0.0 debian/webcam/DEBIAN/prerm
- chmod 755 debian/webcam/DEBIAN/prerm
- install -o 0 -g 0 -d debian/alevtd/DEBIAN
- echo '#!/bin/sh -e' > debian/alevtd/DEBIAN/postinst
- cat debian/alevtd.postinst.debhelper >> debian/alevtd/DEBIAN/postinst
- chown 0.0 debian/alevtd/DEBIAN/postinst
- chmod 755 debian/alevtd/DEBIAN/postinst
- echo '#!/bin/sh -e' > debian/alevtd/DEBIAN/prerm
- cat debian/alevtd.prerm.debhelper >> debian/alevtd/DEBIAN/prerm
- chown 0.0 debian/alevtd/DEBIAN/prerm
- chmod 755 debian/alevtd/DEBIAN/prerm
-dh_shlibdeps
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
-dpkg-shlibdeps: warning: unable to find dependency information for shared library /usr/lib/libfakeroot/libfakeroot (soname 0, path /usr/lib/libfakeroot/libfakeroot.so.0, dependency field Depends)
- dpkg-shlibdeps -Tdebian/substvars -dDepends debian/tmp/usr/bin/xawtv debian/tmp/usr/bin/xawtv-remote debian/tmp/usr/bin/v4lctl debian/tmp/usr/bin/rootv debian/tmp/usr/bin/scantv
- dpkg-shlibdeps -Tdebian/fbtv.substvars -dDepends debian/fbtv/usr/bin/fbtv
- dpkg-shlibdeps -Tdebian/streamer.substvars -dDepends debian/streamer/usr/bin/streamer
- dpkg-shlibdeps -Tdebian/radio.substvars -dDepends debian/radio/usr/bin/radio
- dpkg-shlibdeps -Tdebian/v4l-conf.substvars -dDepends debian/v4l-conf/usr/bin/v4l-conf
- dpkg-shlibdeps -Tdebian/xawtv-tools.substvars -dDepends debian/xawtv-tools/usr/bin/showriff debian/xawtv-tools/usr/bin/propwatch debian/xawtv-tools/usr/bin/dump-mixers debian/xawtv-tools/usr/bin/record
- dpkg-shlibdeps -Tdebian/webcam.substvars -dDepends debian/webcam/usr/bin/webcam
- dpkg-shlibdeps -Tdebian/alevtd.substvars -dDepends debian/alevtd/usr/bin/alevtd
-dh_gencontrol
- install -o 0 -g 0 -d debian/tmp/DEBIAN
- dpkg-gencontrol -ldebian/changelog -isp -pxawtv -Tdebian/substvars -Pdebian/tmp
- chmod 644 debian/tmp/DEBIAN/control
- chown 0.0 debian/tmp/DEBIAN/control
- install -o 0 -g 0 -d debian/fbtv/DEBIAN
- dpkg-gencontrol -ldebian/changelog -isp -pfbtv -Tdebian/fbtv.substvars -Pdebian/fbtv
- chmod 644 debian/fbtv/DEBIAN/control
- chown 0.0 debian/fbtv/DEBIAN/control
- install -o 0 -g 0 -d debian/streamer/DEBIAN
- dpkg-gencontrol -ldebian/changelog -isp -pstreamer -Tdebian/streamer.substvars -Pdebian/streamer
- chmod 644 debian/streamer/DEBIAN/control
- chown 0.0 debian/streamer/DEBIAN/control
- install -o 0 -g 0 -d debian/radio/DEBIAN
- dpkg-gencontrol -ldebian/changelog -isp -pradio -Tdebian/radio.substvars -Pdebian/radio
- chmod 644 debian/radio/DEBIAN/control
- chown 0.0 debian/radio/DEBIAN/control
- install -o 0 -g 0 -d debian/v4l-conf/DEBIAN
- dpkg-gencontrol -ldebian/changelog -isp -pv4l-conf -Tdebian/v4l-conf.substvars -Pdebian/v4l-conf
- chmod 644 debian/v4l-conf/DEBIAN/control
- chown 0.0 debian/v4l-conf/DEBIAN/control
- install -o 0 -g 0 -d debian/xawtv-tools/DEBIAN
- dpkg-gencontrol -ldebian/changelog -isp -pxawtv-tools -Tdebian/xawtv-tools.substvars -Pdebian/xawtv-tools
- chmod 644 debian/xawtv-tools/DEBIAN/control
- chown 0.0 debian/xawtv-tools/DEBIAN/control
- install -o 0 -g 0 -d debian/webcam/DEBIAN
- dpkg-gencontrol -ldebian/changelog -isp -pwebcam -Tdebian/webcam.substvars -Pdebian/webcam
- chmod 644 debian/webcam/DEBIAN/control
- chown 0.0 debian/webcam/DEBIAN/control
- install -o 0 -g 0 -d debian/alevtd/DEBIAN
- dpkg-gencontrol -ldebian/changelog -isp -palevtd -Tdebian/alevtd.substvars -Pdebian/alevtd
- chmod 644 debian/alevtd/DEBIAN/control
- chown 0.0 debian/alevtd/DEBIAN/control
-dh_md5sums
- cd debian/tmp >/dev/null ; find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums ; cd /home/kraxel/debian/xawtv-3.20 >/dev/null
- chmod 644 debian/tmp/DEBIAN/md5sums
- chown 0.0 debian/tmp/DEBIAN/md5sums
- cd debian/fbtv >/dev/null ; find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums ; cd /home/kraxel/debian/xawtv-3.20 >/dev/null
- chmod 644 debian/fbtv/DEBIAN/md5sums
- chown 0.0 debian/fbtv/DEBIAN/md5sums
- cd debian/streamer >/dev/null ; find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums ; cd /home/kraxel/debian/xawtv-3.20 >/dev/null
- chmod 644 debian/streamer/DEBIAN/md5sums
- chown 0.0 debian/streamer/DEBIAN/md5sums
- cd debian/radio >/dev/null ; find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums ; cd /home/kraxel/debian/xawtv-3.20 >/dev/null
- chmod 644 debian/radio/DEBIAN/md5sums
- chown 0.0 debian/radio/DEBIAN/md5sums
- cd debian/v4l-conf >/dev/null ; find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums ; cd /home/kraxel/debian/xawtv-3.20 >/dev/null
- chmod 644 debian/v4l-conf/DEBIAN/md5sums
- chown 0.0 debian/v4l-conf/DEBIAN/md5sums
- cd debian/xawtv-tools >/dev/null ; find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums ; cd /home/kraxel/debian/xawtv-3.20 >/dev/null
- chmod 644 debian/xawtv-tools/DEBIAN/md5sums
- chown 0.0 debian/xawtv-tools/DEBIAN/md5sums
- cd debian/webcam >/dev/null ; find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums ; cd /home/kraxel/debian/xawtv-3.20 >/dev/null
- chmod 644 debian/webcam/DEBIAN/md5sums
- chown 0.0 debian/webcam/DEBIAN/md5sums
- cd debian/alevtd >/dev/null ; find * -type f ! -regex '^DEBIAN/.*' -print0 | xargs -r0 md5sum > DEBIAN/md5sums ; cd /home/kraxel/debian/xawtv-3.20 >/dev/null
- chmod 644 debian/alevtd/DEBIAN/md5sums
- chown 0.0 debian/alevtd/DEBIAN/md5sums
-dh_builddeb
-dpkg-deb: building package `xawtv' in `../xawtv_3.20_powerpc.deb'.
-dpkg-deb: building package `fbtv' in `../fbtv_3.20_powerpc.deb'.
-dpkg-deb: building package `streamer' in `../streamer_3.20_powerpc.deb'.
-dpkg-deb: building package `radio' in `../radio_3.20_powerpc.deb'.
-dpkg-deb: building package `v4l-conf' in `../v4l-conf_3.20_powerpc.deb'.
-dpkg-deb: building package `xawtv-tools' in `../xawtv-tools_3.20_powerpc.deb'.
-dpkg-deb: building package `webcam' in `../webcam_3.20_powerpc.deb'.
-dpkg-deb: building package `alevtd' in `../alevtd_3.20_powerpc.deb'.
- dpkg --build debian/tmp ..
- dpkg --build debian/fbtv ..
- dpkg --build debian/streamer ..
- dpkg --build debian/radio ..
- dpkg --build debian/v4l-conf ..
- dpkg --build debian/xawtv-tools ..
- dpkg --build debian/webcam ..
- dpkg --build debian/alevtd ..
- dpkg-genchanges
-dpkg-genchanges: including full source code in upload
-dpkg-buildpackage: Debian-specific package; upload is full source
diff --git a/src/Xawtv.ad b/src/Xawtv.ad
index df039f6..5e371a3 100644
--- a/src/Xawtv.ad
+++ b/src/Xawtv.ad
@@ -235,11 +235,11 @@ Streamer*Text*type: string
Streamer*Text*useStringInPlace: false
Streamer*status.foreground: darkred
-Streamer*vlabel.vertDistance: 5
+Streamer*driver.vertDistance: 10
+Streamer*vlabel.vertDistance: 15
Streamer*vname.vertDistance: 0
Streamer*alabel.vertDistance: 15
Streamer*aname.vertDistance: 0
-Streamer*driver.vertDistance: 15
Streamer*audio.vertDistance: 5
Streamer*rate.vertDistance: 0
Streamer*video.vertDistance: 5
diff --git a/src/capture.c b/src/capture.c
index aacf18c..5c60fcc 100644
--- a/src/capture.c
+++ b/src/capture.c
@@ -31,11 +31,9 @@ fifo_init(struct FIFO *fifo, char *name, int slots)
}
int
-fifo_put(struct FIFO *fifo, unsigned char *data, int size)
+fifo_put(struct FIFO *fifo, void *data)
{
pthread_mutex_lock(&fifo->lock);
- if (debug > 1)
- fprintf(stderr,"put %s %p %d\n",fifo->name,data,size);
if (NULL == data) {
fifo->eof = 1;
pthread_cond_signal(&fifo->hasdata);
@@ -45,43 +43,43 @@ fifo_put(struct FIFO *fifo, unsigned char *data, int size)
if ((fifo->write + 1) % fifo->slots == fifo->read) {
pthread_mutex_unlock(&fifo->lock);
fprintf(stderr,"fifo %s is full\n",fifo->name);
- return 0;
+ return -1;
}
+ if (debug > 1)
+ fprintf(stderr,"put %s %d=%p [pid=%d]\n",
+ fifo->name,fifo->write,data,getpid());
fifo->data[fifo->write] = data;
- fifo->size[fifo->write] = size;
fifo->write++;
if (fifo->write >= fifo->slots)
fifo->write = 0;
pthread_cond_signal(&fifo->hasdata);
pthread_mutex_unlock(&fifo->lock);
- return size;
+ return 0;
}
-int
-fifo_get(struct FIFO *fifo, unsigned char **data)
+void*
+fifo_get(struct FIFO *fifo)
{
- int size;
+ void *data;
pthread_mutex_lock(&fifo->lock);
- if (debug > 1)
- fprintf(stderr,"get %s\n",fifo->name);
while (fifo->write == fifo->read && 0 == fifo->eof) {
pthread_cond_wait(&fifo->hasdata, &fifo->lock);
}
if (fifo->write == fifo->read) {
- *data = NULL;
pthread_cond_signal(&fifo->hasdata);
pthread_mutex_unlock(&fifo->lock);
- return 0;
+ return NULL;
}
- *data = fifo->data[fifo->read];
- size = fifo->size[fifo->read];
+ if (debug > 1)
+ fprintf(stderr,"get %s %d=%p [pid=%d]\n",
+ fifo->name,fifo->read,fifo->data[fifo->read],getpid());
+ data = fifo->data[fifo->read];
fifo->read++;
if (fifo->read >= fifo->slots)
fifo->read = 0;
- pthread_cond_signal(&fifo->hasdata);
pthread_mutex_unlock(&fifo->lock);
- return size;
+ return data;
}
static void*
@@ -101,50 +99,49 @@ flushit(void *arg)
/*-------------------------------------------------------------------------*/
struct movie_handle {
+ pthread_mutex_t lock;
const struct ng_writer *writer;
void *handle;
- pthread_mutex_t lock;
+ pthread_t tflush;
+ struct timeval start;
+ long long rusec;
+ long long stopby;
+
struct ng_video_fmt vfmt;
- struct ng_audio_fmt afmt;
int fps;
+ int frames;
+ struct FIFO vfifo;
+ pthread_t tvideo;
+ long long vusec;
- struct FIFO *vfifo;
- struct FIFO *afifo;
+ struct ng_audio_fmt afmt;
+ unsigned long bytes_per_sec;
+ unsigned long bytes;
+ struct FIFO afifo;
+ pthread_t taudio;
+ pthread_t raudio;
+ long long ausec;
};
-static struct movie_handle movie_state;
-
-static struct FIFO faudio;
-static struct FIFO fvideo;
-static pthread_t taudio;
-static pthread_t tvideo;
-static pthread_t tflush;
-static char *baudio,*bvideo;
-static int saudio,svideo;
-static int iaudio,ivideo;
-static int naudio,nvideo;
-static int caudio,cvideo;
-
static void*
writer_audio_thread(void *arg)
{
struct movie_handle *h = arg;
- struct ng_audio_buf buf;
- unsigned char *data;
- int size;
+ struct ng_audio_buf *buf;
if (debug)
- fprintf(stderr,"writer_audio_thread start\n");
+ fprintf(stderr,"writer_audio_thread start [pid=%d]\n",getpid());
for (;;) {
- size = fifo_get(h->afifo,&data);
- if (NULL == data)
+ buf = fifo_get(&h->afifo);
+ if (NULL == buf)
break;
pthread_mutex_lock(&h->lock);
- buf.fmt = h->afmt;
- buf.data = data;
- buf.size = size;
- h->writer->wr_audio(h->handle,&buf);
+ h->writer->wr_audio(h->handle,buf);
pthread_mutex_unlock(&h->lock);
+#if 0
+ free(buf->data);
+#endif
+ free(buf);
}
if (debug)
fprintf(stderr,"writer_audio_thread done\n");
@@ -155,80 +152,92 @@ static void *
writer_video_thread(void *arg)
{
struct movie_handle *h = arg;
- struct ng_video_buf buf;
- unsigned char *data;
- int size;
+ struct ng_video_buf *buf;
if (debug)
- fprintf(stderr,"writer_video_thread start\n");
+ fprintf(stderr,"writer_video_thread start [pid=%d]\n",getpid());
for (;;) {
- size = fifo_get(h->vfifo,&data);
- if (NULL == data)
+ buf = fifo_get(&h->vfifo);
+ if (NULL == buf)
break;
pthread_mutex_lock(&h->lock);
- buf.fmt = h->vfmt;
- buf.data = data;
- if (0 != size) {
- buf.size = size;
- } else {
- buf.size = buf.fmt.width * buf.fmt.height *
- ng_vfmt_to_depth[buf.fmt.fmtid] / 8;
- }
- h->writer->wr_video(h->handle,&buf);
+ h->writer->wr_video(h->handle,buf);
pthread_mutex_unlock(&h->lock);
+ ng_release_video_buf(buf);
}
if (debug)
fprintf(stderr,"writer_video_thread done\n");
return NULL;
}
-int
+static void*
+record_audio_thread(void *arg)
+{
+ struct movie_handle *h = arg;
+ struct ng_audio_buf *buf;
+ int size,left,last;
+
+ if (debug)
+ fprintf(stderr,"record_audio_thread start [pid=%d]\n",getpid());
+ size = sound_bufsize();
+ for (last = 0; !last;) {
+ buf = malloc(sizeof(*buf)+size);
+ buf->fmt = h->afmt;
+ buf->size = size;
+ buf->data = ((char*)buf) + sizeof(*buf);
+ memset(buf->data,0,size);
+ sound_read(buf->data);
+ if (h->stopby) {
+ left = (h->stopby - h->ausec) * h->bytes_per_sec / 1000000;
+ if (left <= size) {
+ size = left;
+ last = 1;
+ }
+ }
+ fifo_put(&h->afifo,buf);
+ h->bytes += size;
+ h->ausec = (long long)h->bytes * 1000000 / h->bytes_per_sec;
+ }
+ fifo_put(&h->afifo,NULL);
+ if (debug)
+ fprintf(stderr,"record_audio_thread done\n");
+ return NULL;
+}
+
+struct movie_handle*
movie_writer_init(char *moviename, char *audioname,
const struct ng_writer *writer,
struct ng_video_fmt *video, const void *priv_video, int fps,
struct ng_audio_fmt *audio, const void *priv_audio,
- int slots, int *sound)
+ int slots)
{
- struct movie_handle *h = &movie_state;
- int linelength;
+ struct movie_handle *h;
void *dummy;
if (debug)
fprintf(stderr,"movie_init_writer start\n");
+ h = malloc(sizeof(*h));
+ if (NULL == h)
+ return NULL;
memset(h,0,sizeof(*h));
pthread_mutex_init(&h->lock, NULL);
- h->afifo = &faudio;
- h->vfifo = &fvideo;
h->writer = writer;
/* audio */
- *sound = -1;
if (audio->fmtid != AUDIO_NONE)
- *sound = sound_open(audio);
+ sound_open(audio);
if (audio->fmtid != AUDIO_NONE) {
- fifo_init(&faudio,"audio",slots);
- pthread_create(&taudio,NULL,writer_audio_thread,h);
- iaudio = 0;
- naudio = slots+2;
- saudio = sound_bufsize();
- baudio = malloc(saudio*naudio);
- caudio = 0;
+ fifo_init(&h->afifo,"audio",slots);
+ pthread_create(&h->taudio,NULL,writer_audio_thread,h);
+ h->bytes_per_sec = ng_afmt_to_bits[audio->fmtid] *
+ ng_afmt_to_channels[audio->fmtid] * audio->rate / 8;
}
h->afmt = *audio;
/* video */
- grabber_setparams(video->fmtid, &video->width, &video->height,
- &linelength,0,0);
- fifo_init(&fvideo,"video",slots);
- pthread_create(&tvideo,NULL,writer_video_thread,h);
- ivideo = 0;
- nvideo = slots+2;
- svideo = video->width * video->height *
- ng_vfmt_to_depth[video->fmtid]/8;
- if (0 == svideo)
- svideo = video->width * video->height * 3;
- bvideo = malloc(svideo*nvideo);
- cvideo = 0;
+ ng_grabber_setparams(video,0,0);
+ fifo_init(&h->vfifo,"video",slots);
+ pthread_create(&h->tvideo,NULL,writer_video_thread,h);
h->vfmt = *video;
h->fps = fps;
@@ -239,84 +248,69 @@ movie_writer_init(char *moviename, char *audioname,
if (debug)
fprintf(stderr,"movie_init_writer end (h=%p)\n",h->handle);
if (NULL != h->handle)
- return 0;
+ return h;
/* Oops -- wr_open() didn't work. cleanup. */
if (h->afmt.fmtid != AUDIO_NONE) {
- pthread_cancel(taudio);
- pthread_join(taudio,&dummy);
+ pthread_cancel(h->taudio);
+ pthread_join(h->taudio,&dummy);
sound_close();
- free(baudio);
}
- pthread_cancel(tvideo);
- pthread_join(tvideo,&dummy);
- free(bvideo);
- pthread_cancel(tflush);
- pthread_join(tflush,&dummy);
+ pthread_cancel(h->tvideo);
+ pthread_join(h->tvideo,&dummy);
- return -1;
+ return NULL;
}
int
-movie_writer_start()
+movie_writer_start(struct movie_handle *h)
{
- struct movie_handle *h = &movie_state;
-
if (debug)
fprintf(stderr,"movie_writer_start\n");
+ gettimeofday(&h->start,NULL);
+ if (h->afmt.fmtid != AUDIO_NONE)
+ sound_startrec();
if (grabber->grab_start)
grabber->grab_start(h->fps,0);
if (h->afmt.fmtid != AUDIO_NONE)
- sound_startrec();
- pthread_create(&tflush,NULL,flushit,NULL);
+ pthread_create(&h->raudio,NULL,record_audio_thread,h);
+ pthread_create(&h->tflush,NULL,flushit,NULL);
return 0;
}
int
-movie_writer_stop()
+movie_writer_stop(struct movie_handle *h)
{
- struct movie_handle *h = &movie_state;
+ long long stopby;
+ int frames;
void *dummy;
- long long ausec,vusec;
- int soundbytes;
if (debug)
fprintf(stderr,"movie_writer_stop\n");
if (h->afmt.fmtid != AUDIO_NONE) {
- vusec = cvideo * 1000 / h->fps;
- ausec = ((long long)caudio*saudio*8*1000) /
- (h->afmt.rate * ng_afmt_to_bits[h->afmt.fmtid] *
- ng_afmt_to_channels[h->afmt.fmtid]);
- while (vusec < ausec) {
- grab_put_video();
- vusec = cvideo * 1000 / h->fps;
+ for (frames = 0; frames < 16; frames++) {
+ stopby = (long long)(h->frames + frames) * 1000000 / h->fps;
+ if (stopby > h->ausec)
+ break;
}
- soundbytes = (int)(vusec-ausec) * h->afmt.rate *
- ng_afmt_to_bits[h->afmt.fmtid] *
- ng_afmt_to_channels[h->afmt.fmtid]/8/1000;
- soundbytes = (soundbytes+4) & ~0x03;
- fprintf(stderr,"vs=%Ld as=%Ld %d/%d\n",vusec,ausec,
- soundbytes,saudio);
- while (soundbytes > saudio) {
- grab_put_audio();
- soundbytes -= saudio;
+ frames++;
+ h->stopby = (long long)(h->frames + frames) * 1000000 / h->fps;
+ while (frames) {
+ movie_grab_put_video(h);
+ frames--;
}
- sound_read(baudio + iaudio*saudio);
- fifo_put(&faudio,baudio + iaudio*saudio,soundbytes);
}
/* send EOF + join threads */
+ fifo_put(&h->vfifo,NULL);
if (h->afmt.fmtid != AUDIO_NONE) {
- fifo_put(&faudio,NULL,0);
- pthread_join(taudio,&dummy);
- free(baudio);
+ pthread_join(h->raudio,&dummy);
+ pthread_join(h->taudio,&dummy);
}
- fifo_put(&fvideo,NULL,0);
- pthread_join(tvideo,&dummy);
- free(bvideo);
- pthread_cancel(tflush);
- pthread_join(tflush,&dummy);
+ pthread_join(h->tvideo,&dummy);
+ pthread_cancel(h->tflush);
+ pthread_join(h->tflush,&dummy);
/* close file */
h->writer->wr_close(h->handle);
@@ -329,32 +323,37 @@ movie_writer_stop()
/*-------------------------------------------------------------------------*/
-int
-grab_put_video()
+static void
+movie_check_times(struct movie_handle *h)
{
- int size;
-
- if (debug > 1)
- fprintf(stderr,"grab_put_video\n");
-
- /* get next frame */
- grabber_capture(bvideo + ivideo*svideo,0,&size);
-
- fifo_put(&fvideo,bvideo + ivideo*svideo,size);
- ivideo = (ivideo+1) % nvideo;
- cvideo++;
- return 0;
+ struct timeval now;
+
+ gettimeofday(&now,NULL);
+ h->rusec = 1000000 * (now.tv_sec - h->start.tv_sec);
+ h->rusec += (now.tv_usec - h->start.tv_usec);
+
+ fprintf(stderr,"real: %d.%03ds audio: %d.%03ds video: %d.%03ds\r",
+ (int)((h->rusec / 1000000)),
+ (int)((h->rusec % 1000000) / 1000),
+ (int)((h->ausec / 1000000)),
+ (int)((h->ausec % 1000000) / 1000),
+ (int)((h->vusec / 1000000)),
+ (int)((h->vusec % 1000000) / 1000));
}
int
-grab_put_audio()
+movie_grab_put_video(struct movie_handle *h)
{
+ struct ng_video_buf *buf;
+
if (debug > 1)
- fprintf(stderr,"grab_put_audio\n");
+ fprintf(stderr,"grab_put_video\n");
- sound_read(baudio + iaudio*saudio);
- fifo_put(&faudio,baudio + iaudio*saudio,saudio);
- iaudio = (iaudio+1) % naudio;
- caudio++;
+ /* get next frame */
+ buf = ng_grabber_capture(NULL);
+ fifo_put(&h->vfifo,buf);
+ h->frames++;
+ h->vusec = (long long)h->frames * 1000000 / h->fps;
+ movie_check_times(h);
return 0;
}
diff --git a/src/capture.h b/src/capture.h
index 636288a..889957b 100644
--- a/src/capture.h
+++ b/src/capture.h
@@ -6,25 +6,24 @@
struct FIFO {
char *name;
unsigned char *data[FIFO_MAX];
- unsigned int size[FIFO_MAX];
int slots,read,write,eof;
pthread_mutex_t lock;
pthread_cond_t hasdata;
};
void fifo_init(struct FIFO *fifo, char *name, int slots);
-int fifo_put(struct FIFO *fifo, unsigned char *data, int size);
-int fifo_get(struct FIFO *fifo, unsigned char **data);
+int fifo_put(struct FIFO *fifo, void *data);
+void* fifo_get(struct FIFO *fifo);
-int movie_writer_init(char *moviename, char *audioname,
- const struct ng_writer *writer,
- struct ng_video_fmt *video, const void *priv_video, int fps,
- struct ng_audio_fmt *audio, const void *priv_audio,
- int slots, int *sound);
-int movie_writer_start(void);
-int movie_writer_stop(void);
+struct movie_handle*
+movie_writer_init(char *moviename, char *audioname,
+ const struct ng_writer *writer,
+ struct ng_video_fmt *video, const void *priv_video, int fps,
+ struct ng_audio_fmt *audio, const void *priv_audio, int slots);
+int movie_writer_start(struct movie_handle*);
+int movie_writer_stop(struct movie_handle*);
-int grab_put_video(void);
-int grab_put_audio(void);
+int movie_grab_put_video(struct movie_handle*);
+int movie_grab_put_audio(struct movie_handle*);
#endif /* CAPTURE_H */
diff --git a/src/commands.c b/src/commands.c
index e5cc164..06e0a1d 100644
--- a/src/commands.c
+++ b/src/commands.c
@@ -12,9 +12,9 @@
#include "config.h"
+#include "grab-ng.h"
#include "commands.h"
#include "writefile.h"
-#include "grab-ng.h"
#include "channel.h"
#include "webcam.h"
#include "frequencies.h"
@@ -50,8 +50,8 @@ void (*movie_hook)(int argc, char **argv);
int do_overlay;
char *snapbase = "snap";
-int x11_pixmap_format;
-int grab_width = 1536, grab_height = 1024;
+
+struct ng_video_fmt x11_fmt;
/* ----------------------------------------------------------------------- */
@@ -805,14 +805,12 @@ static int dattr_handler(char *name, int argc, char **argv)
static int snap_handler(char *hname, int argc, char **argv)
{
char message[512];
- void *buffer;
char *filename = NULL;
char *name;
int jpeg = 0;
int ret = 0;
- int width;
- int height;
- int linelength;
+ struct ng_video_fmt fmt;
+ struct ng_video_buf *buf = NULL;
if (!grabber->grab_setparams ||
!grabber->grab_capture) {
@@ -839,15 +837,17 @@ static int snap_handler(char *hname, int argc, char **argv)
}
/* size */
- width = 2048;
- height = 1572;
+ memset(&fmt,0,sizeof(fmt));
+ fmt.fmtid = VIDEO_RGB24;
+ fmt.width = 2048;
+ fmt.height = 1572;
if (argc > 1) {
if (0 == strcasecmp(argv[1],"full")) {
/* nothing */
} else if (0 == strcasecmp(argv[1],"win")) {
- width = grab_width;
- height = grab_height;
- } else if (2 == sscanf(argv[1],"%dx%d",&width,&height)) {
+ fmt.width = x11_fmt.width;
+ fmt.height = x11_fmt.height;
+ } else if (2 == sscanf(argv[1],"%dx%d",&fmt.width,&fmt.height)) {
/* nothing */
} else {
return -1;
@@ -858,9 +858,8 @@ static int snap_handler(char *hname, int argc, char **argv)
if (argc > 2)
filename = argv[2];
- if (0 != grabber_setparams(VIDEO_RGB24,&width,&height,
- &linelength,0,1) ||
- NULL == (buffer = grabber_capture(NULL,0,NULL))) {
+ if (0 != ng_grabber_setparams(&fmt,0,1) ||
+ NULL == (buf = ng_grabber_capture(NULL))) {
if (display_message)
display_message("grabbing failed");
ret = -1;
@@ -879,13 +878,13 @@ static int snap_handler(char *hname, int argc, char **argv)
}
if (jpeg) {
- if (-1 == write_jpeg(filename,buffer,width,height, jpeg_quality, 0)) {
+ if (-1 == write_jpeg(filename, buf, jpeg_quality, 0)) {
sprintf(message,"open %s: %s\n",filename,strerror(errno));
} else {
sprintf(message,"saved jpeg: %s",filename);
}
} else {
- if (-1 == write_ppm(filename,buffer,width,height)) {
+ if (-1 == write_ppm(filename, buf)) {
sprintf(message,"open %s: %s\n",filename,strerror(errno));
} else {
sprintf(message,"saved ppm: %s",filename);
@@ -895,6 +894,8 @@ static int snap_handler(char *hname, int argc, char **argv)
display_message(message);
done:
+ if (NULL != buf)
+ ng_release_video_buf(buf);
if (capture_rel_hook)
capture_rel_hook();
return ret;
@@ -902,7 +903,8 @@ done:
static int webcam_handler(char *hname, int argc, char **argv)
{
- int width = grab_width, height = grab_height, linelength = 0;
+ struct ng_video_fmt fmt;
+ struct ng_video_buf *buf;
if (webcam)
free(webcam);
@@ -921,8 +923,11 @@ static int webcam_handler(char *hname, int argc, char **argv)
the webcam happy */
if (capture_get_hook)
capture_get_hook();
- grabber_setparams(VIDEO_RGB24,&width,&height,&linelength,0,0);
- grabber_capture(NULL,0,NULL);
+ fmt = x11_fmt;
+ fmt.fmtid = VIDEO_RGB24;
+ ng_grabber_setparams(&fmt,0,0);
+ buf = ng_grabber_capture(NULL);
+ ng_release_video_buf(buf);
if (capture_rel_hook)
capture_rel_hook();
return 0;
diff --git a/src/commands.h b/src/commands.h
index 98bfe2b..90fc0b6 100644
--- a/src/commands.h
+++ b/src/commands.h
@@ -26,8 +26,7 @@ extern void (*movie_hook)(int argc, char **argv);
extern int do_overlay;
extern char *snapbase;
-extern int x11_pixmap_format;
-extern int grab_width, grab_height;
+extern struct ng_video_fmt x11_fmt;
/*------------------------------------------------------------------------*/
diff --git a/src/fbtools.c b/src/fbtools.c
index 7650735..5e69807 100644
--- a/src/fbtools.c
+++ b/src/fbtools.c
@@ -160,7 +160,7 @@ fb_putc(int x, int y, int c)
}
int
-fb_puts(int x, int y, char *text)
+fb_puts(int x, int y, unsigned char *text)
{
for (;*text;x++)
fb_putc(x,y,*(text++));
diff --git a/src/fbtools.h b/src/fbtools.h
index 9c829bc..ec52f7d 100644
--- a/src/fbtools.h
+++ b/src/fbtools.h
@@ -16,7 +16,7 @@ void fb_cleanup(void);
void fb_cleanup_fork(void);
/* print text - x,y are in char res */
-int fb_puts(int x, int y, char *text);
+int fb_puts(int x, int y, unsigned char *text);
void fb_memset(void *addr, int c, size_t len);
/* console switching */
diff --git a/src/fbtv.c b/src/fbtv.c
index 33bf9d0..9c59410 100644
--- a/src/fbtv.c
+++ b/src/fbtv.c
@@ -1,7 +1,7 @@
/*
* console TV application. Uses a framebuffer device.
*
- * (c) 1998-2000 Gerd Knorr <kraxel@goldbach.in-berlin.de>
+ * (c) 1998-2001 Gerd Knorr <kraxel@goldbach.in-berlin.de>
*
*/
@@ -42,7 +42,6 @@
#define MAX(x,y) ((x)>(y)?(x):(y))
#define MIN(x,y) ((x)<(y)?(x):(y))
-
/* ---------------------------------------------------------------------- */
/* framebuffer */
@@ -61,7 +60,8 @@ static int sig,quiet,matrox;
static int ww,hh;
static float fbgamma = 1.0;
-static int dx,dy,dw,dh,ll,off;
+static struct ng_video_buf buf;
+static int dx,dy;
char v4l_conf[128] = "v4l-conf";
int have_config;
@@ -272,13 +272,16 @@ void do_capture(int from, int to)
}
/* on */
+ memset(&buf,0,sizeof(buf));
switch (to) {
case CAPTURE_GRABDISPLAY:
if (ww && hh) {
- dw = ww;
- dh = hh;
- grabber_setparams(x11_native_format, &dw, &dh, &ll, 0, 1);
- dx = fb_var.xres-dw;
+ buf.fmt.fmtid = x11_native_format;
+ buf.fmt.width = ww;
+ buf.fmt.height = hh;
+ buf.fmt.bytesperline = fb_fix.line_length;
+ ng_grabber_setparams(&buf.fmt, 0, 1);
+ dx = fb_var.xres-buf.fmt.width;
dy = 0;
} else {
if (quiet) {
@@ -288,30 +291,35 @@ void do_capture(int from, int to)
dx = 24;
dy = 16;
}
- dw = fb_var.xres-dx;
- dh = fb_var.yres-dy;
- grabber_setparams(x11_native_format, &dw, &dh, &ll, 0, 1);
- dx += (fb_var.xres-24-dw)/2;
- dy += (fb_var.yres-16-dh)/2;
+ buf.fmt.fmtid = x11_native_format;
+ buf.fmt.width = fb_var.xres-dx;
+ buf.fmt.height = fb_var.yres-dy;
+ buf.fmt.bytesperline = fb_fix.line_length;
+ ng_grabber_setparams(&buf.fmt, 0, 1);
+ dx += (fb_var.xres-24-buf.fmt.width)/2;
+ dy += (fb_var.yres-16-buf.fmt.height)/2;
}
if (grabber->grab_start)
grabber->grab_start(-1,2);
- off = dy * fb_fix.line_length + dx * ((fb_var.bits_per_pixel+7)/8);
+ buf.data = fb_mem +
+ dy * fb_fix.line_length +
+ dx * ((fb_var.bits_per_pixel+7)/8);
break;
case CAPTURE_OVERLAY:
+ buf.fmt.fmtid = x11_native_format;
if (ww && hh) {
- dw = ww;
- dh = hh;
- dx = fb_var.xres-dw;
+ buf.fmt.width = ww;
+ buf.fmt.height = hh;
+ dx = fb_var.xres-buf.fmt.width;
dy = 0;
} else if (quiet) {
- dw = fb_var.xres;
- dh = fb_var.yres;
+ buf.fmt.width = fb_var.xres;
+ buf.fmt.height = fb_var.yres;
dx = 0;
dy = 0;
} else {
- dw = fb_var.xres-24;
- dh = fb_var.yres-16;
+ buf.fmt.width = fb_var.xres-24;
+ buf.fmt.height = fb_var.yres-16;
dx = 24;
dy = 16;
}
@@ -333,9 +341,12 @@ void do_capture(int from, int to)
width = fb_fix.line_length/2;
pitch = fb_fix.line_length;
grabber->grab_offscreen(starty,width,height,VIDEO_YUV422);
- gfx_scaler_on(starty*pitch,pitch,width,height,dx,dx+dw,dy,dy+dh);
+ gfx_scaler_on(starty*pitch,pitch,width,height,
+ dx,dx+buf.fmt.width,
+ dy,dy+buf.fmt.height);
} else {
- grabber->grab_overlay(dx,dy,dw,dh,x11_native_format,NULL,0);
+ grabber->grab_overlay(dx, dy, buf.fmt.width, buf.fmt.height,
+ buf.fmt.fmtid, NULL, 0);
}
break;
}
@@ -593,11 +604,6 @@ main(int argc, char *argv[])
case CAPTURE_GRABDISPLAY:
sprintf(text+strlen(text), " - grab %d.%d fps",fps/5,(fps*2)%10);
break;
-#if 0
- case CAPTURE_OVERLAY:
- strcat(text, " - overlay");
- break;
-#endif
}
fb_puts(0,0,text);
@@ -623,8 +629,7 @@ main(int argc, char *argv[])
FD_SET(lirc,&set);
if (cur_capture == CAPTURE_GRABDISPLAY) {
fps++;
- grabber_capture(fb_mem+fb_mem_offset+off,
- fb_fix.line_length,NULL);
+ ng_grabber_capture(&buf);
tv.tv_sec = 0;
tv.tv_usec = 0;
rc = select(MAX(0,lirc)+1,&set,NULL,NULL,&tv);
diff --git a/src/grab-ng.c b/src/grab-ng.c
index eab9319..88e741a 100644
--- a/src/grab-ng.c
+++ b/src/grab-ng.c
@@ -2,6 +2,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <string.h>
+#include <pthread.h>
#include <sys/time.h>
#ifdef HAVE_ENDIAN_H
# include <endian.h>
@@ -74,6 +75,7 @@ const char* ng_afmt_to_desc[] = {
/* --------------------------------------------------------------------- */
extern const struct ng_writer files_writer;
+extern const struct ng_writer raw_writer;
extern const struct ng_writer avi_writer;
#ifdef HAVE_LIBQUICKTIME
extern const struct ng_writer qt_writer;
@@ -81,9 +83,54 @@ extern const struct ng_writer qt_writer;
const struct ng_writer *ng_writers[] = {
&files_writer,
+ &raw_writer,
&avi_writer,
#ifdef HAVE_LIBQUICKTIME
&qt_writer,
#endif
NULL
};
+
+/* --------------------------------------------------------------------- */
+
+void ng_release_video_buf(struct ng_video_buf *buf)
+{
+ int release;
+
+ pthread_mutex_lock(&buf->lock);
+ buf->refcount--;
+ release = (buf->refcount == 0);
+ pthread_mutex_unlock(&buf->lock);
+ if (release && NULL != buf->release)
+ buf->release(buf);
+}
+
+static void ng_free_video_buf(struct ng_video_buf *buf)
+{
+ free(buf->data);
+ free(buf);
+}
+
+struct ng_video_buf*
+ng_malloc_video_buf(struct ng_video_fmt *fmt, int size)
+{
+ struct ng_video_buf *buf;
+
+ buf = malloc(sizeof(*buf));
+ if (NULL == buf)
+ return NULL;
+ memset(buf,0,sizeof(*buf));
+ buf->fmt = *fmt;
+ buf->size = size;
+ buf->data = malloc(size);
+ if (NULL == buf->data) {
+ free(buf);
+ return NULL;
+ }
+ buf->refcount = 1;
+ buf->release = ng_free_video_buf;
+ pthread_mutex_init(&buf->lock,NULL);
+ return buf;
+}
+
+/* --------------------------------------------------------------------- */
diff --git a/src/grab-ng.h b/src/grab-ng.h
index 1af7526..6613720 100644
--- a/src/grab-ng.h
+++ b/src/grab-ng.h
@@ -55,7 +55,7 @@ struct ng_video_fmt {
int fmtid; /* VIDEO_* */
int width;
int height;
- int bytesperline; /* nonzero if bytesperline != width * depth */
+ int bytesperline; /* zero for compressed formats */
};
struct ng_video_buf {
@@ -69,13 +69,21 @@ struct ng_video_buf {
/* FIXME: time (struct timeval?) */
-#if 0
+ /*
+ * the lock is for the reference counter.
+ * if the reference counter goes down to zero release()
+ * should be called. priv is for the owner of the
+ * buffer (can be used by the release callback)
+ */
+ pthread_mutex_t lock;
int refcount;
+ void (*release)(struct ng_video_buf *buf);
void *priv;
- /* add (*release)(struct buffer*) ??? */
-#endif
};
+void ng_release_video_buf(struct ng_video_buf *buf);
+struct ng_video_buf* ng_malloc_video_buf(struct ng_video_fmt *fmt,
+ int size);
/* --------------------------------------------------------------------- */
/* audio data structures */
@@ -130,3 +138,11 @@ struct ng_writer {
/* --------------------------------------------------------------------- */
extern const struct ng_writer *ng_writers[];
+
+
+/* --------------------------------------------------------------------- */
+/* half rewritten -- still in grab.c */
+
+int ng_grabber_setparams(struct ng_video_fmt *fmt, int lut_valid,
+ int fix_ratio);
+struct ng_video_buf* ng_grabber_capture(struct ng_video_buf *dest);
diff --git a/src/grab-v4l.c b/src/grab-v4l.c
index 79cf207..f537112 100644
--- a/src/grab-v4l.c
+++ b/src/grab-v4l.c
@@ -560,7 +560,7 @@ grab_open(char *filename)
fprintf(stderr," mbuf: size=%d frames=%d\n",
gb_buffers.size,gb_buffers.frames);
map = mmap(0,gb_buffers.size,PROT_READ|PROT_WRITE,MAP_SHARED,fd,0);
- if ((char*)-1 != map)
+ if ((char*)-1 == map)
perror("mmap");
} else {
map = (char*)-1;
diff --git a/src/grab.c b/src/grab.c
index b5ecc6b..b248714 100644
--- a/src/grab.c
+++ b/src/grab.c
@@ -89,6 +89,7 @@ grabber_open(char *device, int sw, int sh, void *base, int format, int width)
/*-------------------------------------------------------------------------*/
/* parameter negotation for capture */
+#if 0
static int grabber_width;
static int grabber_height;
static float grabber_depth;
@@ -97,6 +98,7 @@ static int grabber_format;
static int output_format;
static color_conv grabber_conv;
static void* grabber_data;
+#endif
struct CONV_LIST {
int format;
@@ -239,6 +241,7 @@ static struct CONV_LIST *conv_lists[] = {
mjpg_list,
};
+#if 0
int
grabber_setparams(int format, int *width, int *height,
int *linelength, int lut_valid, int fix_ratio)
@@ -394,6 +397,7 @@ grabber_capture(void *dest, int dest_linelength, int *size)
if (size) *size = rc;
return data;
}
+#endif
int
grabber_sw_rate(struct timeval *start, int fps, int count)
@@ -413,7 +417,7 @@ grabber_sw_rate(struct timeval *start, int fps, int count)
" count=%d ret=%d\n",
msecs,fps,frames,count,frames-count+1);
if (frames-count > 3)
- fprintf(stderr,"rate: video is %d frames behind\n",frames-count);
+ fprintf(stderr,"rate control: video lags %d frames behind\n",frames-count);
return frames-count+1;
}
@@ -435,3 +439,150 @@ grabber_fix_ratio(int *width, int *height, int *xoff, int *yoff)
*xoff += (w-*width)/2;
}
}
+
+/*-------------------------------------------------------------------------*/
+/* parameter negotation for capture */
+
+static struct ng_video_fmt gfmt;
+static struct ng_video_fmt ofmt;
+static color_conv gconv;
+static int gsize;
+static int osize;
+
+int
+ng_grabber_setparams(struct ng_video_fmt *fmt, int lut_valid, int fix_ratio)
+{
+ struct CONV_LIST *list;
+ int i;
+
+ /* no capture support */
+ if (NULL == grabber->grab_setparams ||
+ NULL == grabber->grab_capture) {
+ gfmt.fmtid = -1;
+ return -1;
+ }
+ gconv = NULL;
+
+ /* try native format first */
+ gfmt = *fmt;
+ if (0 == grabber->grab_setparams
+ (gfmt.fmtid, &gfmt.width, &gfmt.height, &gfmt.bytesperline)) {
+ goto found;
+ }
+
+ /* check all available conversion functions */
+ list = conv_lists[fmt->fmtid];
+ for (i = 0; list && list[i].converter; i++) {
+ if (list[i].lut && !lut_valid)
+ continue;
+ gfmt = *fmt;
+ gfmt.fmtid = list[i].format;
+ gconv = list[i].converter;
+ if (0 == grabber->grab_setparams
+ (gfmt.fmtid, &gfmt.width, &gfmt.height, &gfmt.bytesperline)) {
+ if (list[i].init)
+ list[i].init(gfmt.width,gfmt.height);
+ goto found;
+ }
+ }
+ fprintf(stderr,"grab: no match for: %dx%d %s\n",
+ fmt->width,fmt->height,ng_vfmt_to_desc[fmt->fmtid]);
+ gfmt.fmtid = -1;
+ return -1;
+
+ found:
+ if (fix_ratio) {
+ grabber_fix_ratio(&gfmt.width, &gfmt.height, NULL, NULL);
+ gfmt.bytesperline = 0;
+ if (0 != grabber->grab_setparams
+ (gfmt.fmtid, &gfmt.width, &gfmt.height, &gfmt.bytesperline)) {
+ fprintf(stderr,"Oops: ratio size renegotiation failed\n");
+ exit(1);
+ }
+ }
+ fmt->width = gfmt.width;
+ fmt->height = gfmt.height;
+ if (0 == fmt->bytesperline)
+ fmt->bytesperline = fmt->width * ng_vfmt_to_depth[fmt->fmtid] / 8;
+ ofmt = *fmt;
+
+ osize = ofmt.height * ofmt.bytesperline;
+ if (0 == osize)
+ osize = ofmt.width * ofmt.height * 3;
+ gsize = gfmt.height * gfmt.bytesperline;
+ if (0 == gsize)
+ gsize = gfmt.width * gfmt.height * 3;
+
+ if (debug) {
+ fprintf(stderr,"grab: use: %dx%d %s (size=%d)\n",
+ gfmt.width,gfmt.height,ng_vfmt_to_desc[gfmt.fmtid],gsize);
+ fprintf(stderr,"grab: req: %dx%d %s (size=%d)\n",
+ fmt->width,fmt->height,ng_vfmt_to_desc[fmt->fmtid],osize);
+ }
+ return 0;
+}
+
+static void
+ng_grabber_copy(struct ng_video_buf *dest,
+ struct ng_video_fmt *fmt,
+ unsigned char *data)
+{
+ int i,sw,dw;
+ unsigned char *sp,*dp;
+
+ if (gconv && 0 == dest->fmt.bytesperline) {
+ /* compressed output */
+ dest->size = gconv(dest->data, data, fmt->width * fmt->height);
+ return;
+ }
+
+ dw = dest->fmt.width * ng_vfmt_to_depth[dest->fmt.fmtid] / 8;
+ sw = fmt->width * ng_vfmt_to_depth[fmt->fmtid] / 8;
+ if (fmt->bytesperline == sw && dest->fmt.bytesperline == dw) {
+ /* can copy in one go */
+ if (gconv == NULL) {
+ memcpy(dest->data, data, fmt->bytesperline * fmt->height);
+ } else {
+ gconv(dest->data, data, fmt->width * fmt->height);
+ }
+ } else {
+ /* copy line by line */
+ dp = dest->data;
+ sp = data;
+ for (i = 0; i < fmt->height; i++) {
+ if (gconv == NULL) {
+ memcpy(dp,sp,dw);
+ } else {
+ gconv(dp,sp,fmt->width);
+ }
+ dp += dest->fmt.bytesperline;
+ sp += fmt->bytesperline;
+ }
+ }
+}
+
+struct ng_video_buf*
+ng_grabber_capture(struct ng_video_buf *dest)
+{
+ unsigned char *data;
+
+ if (-1 == gfmt.fmtid)
+ return NULL;
+ if (NULL == (data = grabber->grab_capture()))
+ return NULL;
+
+ if (NULL == dest) {
+ dest = ng_malloc_video_buf(&ofmt,osize);
+ } else {
+ dest->fmt = ofmt;
+ dest->size = osize;
+ }
+ ng_grabber_copy(dest, &gfmt, data);
+
+ if (NULL != webcam && 0 == webcam_put(webcam,dest)) {
+ free(webcam);
+ webcam = NULL;
+ }
+ return dest;
+}
+
diff --git a/src/main.c b/src/main.c
index a95d899..3498dbf 100644
--- a/src/main.c
+++ b/src/main.c
@@ -126,7 +126,6 @@ int lirc;
int rec_writer;
int rec_wsync;
XtWorkProcId rec_work_id;
-XtInputId rec_audio_id;
/* movie params / setup */
Widget w_movie_status;
@@ -151,6 +150,7 @@ int movie_audio = 0;
int movie_video = 0;
int movie_fps = 12;
int movie_rate = 44100;
+void *movie_state;
static struct STRTAB m_movie_fps[] = {
{ 5, " 5 fps" },
@@ -578,26 +578,30 @@ display_vtx(int lines, char **text)
static XImage *grab_ximage;
static void *grab_ximage_shm;
static GC grab_gc;
-static int grab_linelength;
static int win_width, win_height;
static int grabdisplay_suspended;
#ifdef HAVE_LIBXV
static XvImage *xv_image = NULL;
static void *xv_shm = NULL;
-static int xv_width = 320, xv_height = 240;
+static struct ng_video_fmt xv_fmt;
#endif
void
freeze_image(void)
{
+ struct ng_video_buf buf;
+
if (NULL == grabber->grab_capture)
return;
if (NULL == grab_ximage)
return;
- if (cur_capture != CAPTURE_GRABDISPLAY)
- if (NULL == grabber_capture(grab_ximage->data,0,NULL))
+ if (cur_capture != CAPTURE_GRABDISPLAY) {
+ buf.fmt = x11_fmt;
+ buf.data = grab_ximage->data;
+ if (NULL == ng_grabber_capture(&buf))
return;
+ }
if (!tv_pix) {
tv_pix = XCreatePixmap(dpy, RootWindowOfScreen(XtScreen(tv)),
@@ -605,8 +609,9 @@ freeze_image(void)
DefaultDepthOfScreen(XtScreen(tv)));
}
XPUTIMAGE(dpy, tv_pix, grab_gc, grab_ximage, 0,0,
- (win_width-grab_width) >> 1, (win_height-grab_height) >> 1,
- grab_width, grab_height);
+ (win_width - x11_fmt.width) >> 1,
+ (win_height - x11_fmt.height) >> 1,
+ x11_fmt.width, x11_fmt.height);
XtVaSetValues(tv,XtNbackgroundPixmap,tv_pix,NULL);
}
@@ -616,7 +621,8 @@ grabdisplay_idle(XtPointer data)
static long count,lastsec,errors;
struct timeval t;
struct timezone tz;
-
+ struct ng_video_buf buf;
+
if (NULL == grabber->grab_capture)
goto oops;
@@ -624,13 +630,15 @@ grabdisplay_idle(XtPointer data)
if (have_xv_scale) {
if (NULL == xv_image)
goto oops;
- if (NULL == grabber_capture(xv_image->data,0,NULL)) {
+ buf.fmt = xv_fmt;
+ buf.data = xv_image->data;
+ if (NULL == ng_grabber_capture(&buf)) {
if (errors++ > 10)
goto oops;
} else {
errors = 0;
XvShmPutImage(dpy, im_port, XtWindow(tv), grab_gc, xv_image,
- 0, 0, xv_width, xv_height,
+ 0, 0, xv_fmt.width, xv_fmt.height,
0, 0, win_width, win_height,
False);
}
@@ -639,15 +647,17 @@ grabdisplay_idle(XtPointer data)
#endif
if (!grab_ximage)
goto oops;
- if (NULL == grabber_capture(grab_ximage->data,0,NULL)) {
+ buf.fmt = x11_fmt;
+ buf.data = grab_ximage->data;
+ if (NULL == ng_grabber_capture(&buf)) {
if (errors++ > 10)
goto oops;
} else {
errors = 0;
XPUTIMAGE(dpy, XtWindow(tv), grab_gc, grab_ximage, 0,0,
- (win_width-grab_width) >> 1,
- (win_height-grab_height) >> 1,
- grab_width, grab_height);
+ (win_width - x11_fmt.width) >> 1,
+ (win_height - x11_fmt.height) >> 1,
+ x11_fmt.width, x11_fmt.height);
}
#ifdef HAVE_LIBXV
}
@@ -686,13 +696,11 @@ grabdisplay_restart(void)
{
#ifdef HAVE_LIBXV
if (have_xv_scale)
- grabber_setparams(VIDEO_YUV422,&xv_width,&xv_height,
- &grab_linelength,1,0);
+ ng_grabber_setparams(&xv_fmt,0,0);
else
#endif
- grabber_setparams(x11_pixmap_format,&grab_width,&grab_height,
- &grab_linelength,1,0);
-
+ ng_grabber_setparams(&x11_fmt,1,0);
+
if (cur_capture != CAPTURE_OFF)
return;
if (!grabdisplay_suspended)
@@ -709,9 +717,9 @@ grabdisplay_setsize(int width, int height)
win_width = width;
win_height = height;
- grab_width = width & ~3; /* alignment */
- grab_height = height;
- grab_linelength = 0;
+ x11_fmt.width = width & ~3; /* alignment */
+ x11_fmt.height = height;
+ x11_fmt.bytesperline = 0;
/* check what the driver can do ... */
if (!grabber->grab_setparams)
@@ -739,20 +747,21 @@ grabdisplay_setsize(int width, int height)
if (have_xv_scale) {
#if 0
/* FIXME: no hard coded max size, better ask the X-Server */
- xv_width = (width > 320) ? 320 : width;
- xv_height = (height > 240) ? 240 : height;
+ xv_fmt.width = (width > 320) ? 320 : width;
+ xv_fmt.height = (height > 240) ? 240 : height;
#else
- xv_width = width;
- xv_height = height;
+ xv_fmt.width = width;
+ xv_fmt.height = height;
#endif
- grabber_setparams(VIDEO_YUV422,&xv_width,&xv_height,
- &grab_linelength,1,0);
- xv_image = xv_create_ximage(dpy, xv_width, xv_height, &xv_shm);
+ xv_fmt.fmtid = VIDEO_YUV422;
+ xv_fmt.bytesperline = 0;
+ ng_grabber_setparams(&xv_fmt,0,0);
+ xv_image = xv_create_ximage(dpy, xv_fmt.width, xv_fmt.height, &xv_shm);
} else {
#endif
- grabber_setparams(x11_pixmap_format,&grab_width,&grab_height,
- &grab_linelength,1,1);
- grab_ximage = x11_create_ximage(dpy,&vinfo,grab_width,grab_height,
+ ng_grabber_setparams(&x11_fmt,1,1);
+ grab_ximage = x11_create_ximage(dpy,&vinfo,
+ x11_fmt.width,x11_fmt.height,
&grab_ximage_shm);
if (NULL == grab_ximage) {
fprintf(stderr,"oops: out of memory\n");
@@ -809,9 +818,9 @@ tv_expose_event(Widget widget, XtPointer client_data,
}
/* TODO: draw background for chroma keying */
XFillRectangle(dpy,XtWindow(widget),gc,
- (win_width-grab_width) >> 1,
- (win_height-grab_height) >> 1,
- grab_width, grab_height);
+ (win_width - x11_fmt.width) >> 1,
+ (win_height - x11_fmt.height) >> 1,
+ x11_fmt.width, x11_fmt.height);
}
break;
}
@@ -1080,8 +1089,8 @@ void
pixit(void)
{
Pixmap pix;
- char *data;
- int linelength = 0;
+ struct ng_video_fmt fmt;
+ struct ng_video_buf *buf;
if (cur_sender == -1)
return;
@@ -1102,11 +1111,13 @@ pixit(void)
return;
grabdisplay_suspend();
- if (0 == grabber_setparams(x11_pixmap_format,&pix_width,&pix_height,
- &linelength,1,0) &&
- NULL != (data = grabber_capture(NULL,0,NULL)) &&
- 0 != (pix = x11_create_pixmap(dpy,&vinfo,colormap,data,
- pix_width,pix_height,
+ fmt = x11_fmt;
+ fmt.width = pix_width;
+ fmt.height = pix_height;
+ if (0 == ng_grabber_setparams(&fmt,1,0) &&
+ NULL != (buf = ng_grabber_capture(NULL)) &&
+ 0 != (pix = x11_create_pixmap(dpy,&vinfo,colormap,buf->data,
+ fmt.width,fmt.height,
channels[cur_sender]->name))) {
XtVaSetValues(channels[cur_sender]->button,
XtNbackgroundPixmap,pix,
@@ -1117,6 +1128,7 @@ pixit(void)
if (channels[cur_sender]->pixmap)
XFreePixmap(dpy,channels[cur_sender]->pixmap);
channels[cur_sender]->pixmap = pix;
+ ng_release_video_buf(buf);
}
grabdisplay_restart();
}
@@ -1986,28 +1998,11 @@ exec_x11(char **argv)
static Boolean
rec_work(XtPointer client_data)
{
- grab_put_video();
+ movie_grab_put_video(movie_state);
return False;
}
void
-rec_audio_input(XtPointer client_data, int *src, XtInputId *id)
-{
- struct timeval tv;
- fd_set set;
-
- for (;;) {
- grab_put_audio();
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- FD_ZERO(&set);
- FD_SET(*src,&set);
- if (0 == select((*src)+1,&set,NULL,NULL,&tv))
- break;
- }
-}
-
-void
exec_record(Widget widget, XtPointer client_data, XtPointer calldata)
{
if (!grabber->grab_setparams ||
@@ -2032,7 +2027,7 @@ do_movie_record(int argc, char **argv)
struct ng_video_fmt video;
struct ng_audio_fmt audio;
const struct ng_writer *wr;
- int sound,i,rc;
+ int i;
/* set parameters */
if (argc > 1 && 0 == strcasecmp(argv[0],"fvideo")) {
@@ -2100,11 +2095,11 @@ do_movie_record(int argc, char **argv)
audio.fmtid = AUDIO_NONE;
}
- rc = movie_writer_init(fvideo, faudio, wr,
- &video, wr->video[movie_video].priv, movie_fps,
- &audio, wr->audio[movie_audio].priv,
- 16, &sound);
- if (0 != rc) {
+ movie_state = movie_writer_init
+ (fvideo, faudio, wr,
+ &video, wr->video[movie_video].priv, movie_fps,
+ &audio, wr->audio[movie_audio].priv,16);
+ if (NULL == movie_state) {
/* init failed */
grabdisplay_restart();
cur_movie = 0;
@@ -2112,12 +2107,8 @@ do_movie_record(int argc, char **argv)
XtVaSetValues(w_movie_status,XtNlabel,"error",NULL);
return;
}
- movie_writer_start();
+ movie_writer_start(movie_state);
rec_work_id = XtAppAddWorkProc(app_context,rec_work,NULL);
- if (-1 != sound)
- rec_audio_id = XtAppAddInput(app_context,sound,
- (XtPointer)XtInputReadMask,
- rec_audio_input,NULL);
XtVaSetValues(w_movie_status,XtNlabel,"recording",NULL);
return;
}
@@ -2127,13 +2118,9 @@ do_movie_record(int argc, char **argv)
if (0 == cur_movie)
return; /* nothing to stop here */
- movie_writer_stop();
+ movie_writer_stop(movie_state);
XtRemoveWorkProc(rec_work_id);
rec_work_id = 0;
- if (rec_audio_id) {
- XtRemoveInput(rec_audio_id);
- rec_audio_id = 0;
- }
XtVaSetValues(w_movie_status,XtNlabel,"",NULL);
grabdisplay_restart();
cur_movie = 0;
@@ -2185,9 +2172,16 @@ create_strwin(void)
form = XtVaCreateManagedWidget("form", formWidgetClass, str_shell,
NULL);
+ /* driver */
+ button = XtVaCreateManagedWidget("driver", commandWidgetClass, form,
+ FIX_LEFT_TOP,
+ NULL);
+ w_movie_driver = button;
+
/* movie filename */
label = XtVaCreateManagedWidget("vlabel", labelWidgetClass, form,
FIX_LEFT_TOP,
+ XtNfromVert, button,
NULL);
text = XtVaCreateManagedWidget("vname", asciiTextWidgetClass, form,
FIX_LEFT_TOP,
@@ -2207,17 +2201,10 @@ create_strwin(void)
NULL);
w_movie_faudio = text;
- /* driver */
- button = XtVaCreateManagedWidget("driver", commandWidgetClass, form,
- FIX_LEFT_TOP,
- XtNfromVert, text,
- NULL);
- w_movie_driver = button;
-
/* audio format */
button = XtVaCreateManagedWidget("audio", commandWidgetClass, form,
FIX_LEFT_TOP,
- XtNfromVert, button,
+ XtNfromVert, text,
NULL);
w_movie_audio = button;
button = XtVaCreateManagedWidget("rate", commandWidgetClass, form,
@@ -2354,26 +2341,39 @@ LaunchAction(Widget widget, XEvent *event,
/*------------------------------------------------------------------------*/
static void
-lirc_input(XtPointer data, int *fd, XtInputId *iproc)
+segfault(int signal)
{
- if (debug)
- fprintf(stderr,"lirc_input triggered\n");
- if (-1 == lirc_tv_havedata()) {
- fprintf(stderr,"lirc: connection lost\n");
- XtRemoveInput(*iproc);
- close(*fd);
- }
+ fprintf(stderr,"[pid=%d] segfault catched\n",getpid());
+ exit(1);
}
+
static void
siginit(void)
{
struct sigaction act,old;
memset(&act,0,sizeof(act));
- act.sa_handler = exec_done;
sigemptyset(&act.sa_mask);
+ act.sa_handler = exec_done;
sigaction(SIGCHLD,&act,&old);
+ if (debug) {
+ act.sa_handler = segfault;
+ sigaction(SIGSEGV,&act,&old);
+ fprintf(stderr,"main thread [pid=%d]\n",getpid());
+ }
+}
+
+static void
+lirc_input(XtPointer data, int *fd, XtInputId *iproc)
+{
+ if (debug)
+ fprintf(stderr,"lirc_input triggered\n");
+ if (-1 == lirc_tv_havedata()) {
+ fprintf(stderr,"lirc: connection lost\n");
+ XtRemoveInput(*iproc);
+ close(*fd);
+ }
}
static void
@@ -2432,6 +2432,7 @@ main(int argc, char *argv[])
progname = strdup(argv[0]);
/* toplevel */
+ XInitThreads();
app_shell = XtVaAppInitialize(&app_context,
"Xawtv",
opt_desc, opt_count,
diff --git a/src/rootv.c b/src/rootv.c
index 8197a1e..68240bb 100644
--- a/src/rootv.c
+++ b/src/rootv.c
@@ -10,7 +10,6 @@ int main(){puts("Compiled without Xvideo extention support, sorry.");exit(0);}
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
-#include <getopt.h>
#include <signal.h>
#include <X11/Xlib.h>
diff --git a/src/streamer.c b/src/streamer.c
index e9e6fc2..696f741 100644
--- a/src/streamer.c
+++ b/src/streamer.c
@@ -1,5 +1,5 @@
/*
- * (c) 1997-2000 Gerd Knorr <kraxel@bytesex.org>
+ * (c) 1997-2001 Gerd Knorr <kraxel@bytesex.org>
*
*/
#include "config.h"
@@ -35,7 +35,6 @@
/* ---------------------------------------------------------------------- */
-static int sound = -1;
static int bufcount = 16;
static char* tvnorm = NULL;
static char* input = NULL;
@@ -56,6 +55,7 @@ static struct ng_video_fmt video = {
static struct ng_audio_fmt audio = {
rate: 44100,
};
+static void *movie_state;
static int absframes = 1;
static int fd = -1, quiet = 0, fps = 10;
@@ -109,7 +109,8 @@ usage(FILE *out, char *prog)
prog = h+1;
fprintf(out,
- "%s grabs image(s) from a video4linux device\n"
+ "%s grabs image(s) and records movies\n"
+ "from a video4linux device\n"
"\n"
"usage: %s [ options ]\n"
"\n"
@@ -138,7 +139,7 @@ usage(FILE *out, char *prog)
" -R rate sample rate [%d]\n"
"\n",
prog, prog,
-
+
wait_seconds,
v4l_device, fps, video.width, video.height,
absframes, bufcount, jpeg_quality,
@@ -154,7 +155,7 @@ usage(FILE *out, char *prog)
"QuickTime) the -O option has no effect.\n"
"\n"
"-- \n"
- "(c) 1998-2000 Gerd Knorr <kraxel@bytesex.org>\n",
+ "(c) 1998-2001 Gerd Knorr <kraxel@bytesex.org>\n",
prog);
}
@@ -167,9 +168,11 @@ find_formats(void)
char *ext = NULL;
int w,v=-1,a=-1;
- ext = strrchr(moviename,'.');
- if (ext)
- ext++;
+ if (moviename) {
+ ext = strrchr(moviename,'.');
+ if (ext)
+ ext++;
+ }
for (w = 0; NULL != ng_writers[w]; w++) {
wr = ng_writers[w];
for (v = 0; NULL != wr->video[v].name; v++) {
@@ -294,11 +297,6 @@ main(int argc, char **argv)
exit(1);
}
}
-
- if (NULL == moviename) {
- fprintf(stderr,"no movie filename specified\n");
- exit(1);
- }
find_formats();
/* sanity checks */
@@ -332,11 +330,16 @@ main(int argc, char **argv)
do_va_cmd(2,"setnorm",tvnorm);
/* init movie writer */
- movie_writer_init(moviename, audioname,
- writer,
- &video, video_priv, fps,
- &audio, audio_priv,
- bufcount, &sound);
+ movie_state = movie_writer_init
+ (moviename, audioname, writer,
+ &video, video_priv, fps,
+ &audio, audio_priv, bufcount);
+ if (NULL == movie_state) {
+ fprintf(stderr,"movie writer initialisation failed\n");
+ audio_off();
+ grabber->grab_close();
+ exit(1);
+ }
/* wait for some cameras to wake up and adjust light and all that */
sleep(wait_seconds);
@@ -345,28 +348,13 @@ main(int argc, char **argv)
signal(SIGINT,ctrlc);
/* main loop */
- movie_writer_start();
+ movie_writer_start(movie_state);
for (;queued < absframes && !signaled; count++) {
- /* audio */
- if (-1 != sound) {
- for (;;) {
- struct timeval tv;
- fd_set set;
-
- tv.tv_sec = 0;
- tv.tv_usec = 0;
- FD_ZERO(&set);
- FD_SET(sound,&set);
- if (0 == select(sound+1,&set,NULL,NULL,&tv))
- break;
- grab_put_audio();
- }
- }
/* video */
- grab_put_video();
+ movie_grab_put_video(movie_state);
queued++;
}
- movie_writer_stop();
+ movie_writer_stop(movie_state);
/* done */
audio_off();
diff --git a/src/v4l-conf.c b/src/v4l-conf.c
index fd42614..082b554 100644
--- a/src/v4l-conf.c
+++ b/src/v4l-conf.c
@@ -14,7 +14,9 @@
#include <string.h>
#include <errno.h>
#include <fcntl.h>
-#include <getopt.h>
+#ifdef HAVE_GETOPT_H
+# include <getopt.h>
+#endif
#include <sys/ioctl.h>
#include <sys/stat.h>
#include <linux/vt.h>
diff --git a/src/webcam.c b/src/webcam.c
index e596346..72aba1e 100644
--- a/src/webcam.c
+++ b/src/webcam.c
@@ -23,9 +23,7 @@ struct WEBCAM {
pthread_mutex_t lock;
pthread_cond_t wait;
char *filename;
- int format, size;
- int width, height;
- char *data;
+ struct ng_video_buf *buf;
};
static void*
@@ -34,6 +32,8 @@ webcam_writer(void *arg)
struct WEBCAM *web = arg;
int rename,fd,old;
char tmpfilename[512];
+ struct ng_video_fmt *fmt;
+ char *data;
if (debug)
fprintf(stderr,"webcam_writer start\n");
@@ -41,36 +41,40 @@ webcam_writer(void *arg)
pthread_setcanceltype(PTHREAD_CANCEL_ASYNCHRONOUS,&old);
pthread_mutex_lock(&web->lock);
for (;;) {
- while (web->data == NULL) {
+ while (web->buf == NULL) {
if (debug)
fprintf(stderr,"webcam_writer: waiting for data\n");
pthread_cond_wait(&web->wait, &web->lock);
}
+ fmt = &web->buf->fmt;
if (debug)
fprintf(stderr,"webcam_writer: %d %dx%d \n",
- web->format,web->width,web->height);
+ fmt->fmtid,fmt->width,fmt->height);
rename = 1;
sprintf(tmpfilename,"%s.$$$",web->filename);
- switch (web->format) {
+ switch (fmt->fmtid) {
case VIDEO_MJPEG:
if (-1 == (fd = open(tmpfilename,O_CREAT|O_WRONLY,0666))) {
fprintf(stderr,"open(%s): %s\n",tmpfilename,
strerror(errno));
goto done;
}
- write(fd,web->data,web->size);
+ write(fd,web->buf->data,web->buf->size);
close(fd);
break;
case VIDEO_BGR24:
- swap_rgb24(web->data,web->width*web->height);
- /* fall throuth */
+ data = malloc(web->buf->size);
+ memcpy(data,web->buf->data,web->buf->size);
+ swap_rgb24(data,fmt->width*fmt->height);
+ write_jpeg(tmpfilename,web->buf,jpeg_quality,0);
+ free(data);
+ break;
case VIDEO_RGB24:
- write_jpeg(tmpfilename,web->data,
- web->width,web->height,jpeg_quality,0);
+ write_jpeg(tmpfilename,web->buf,jpeg_quality,0);
break;
default:
fprintf(stderr,"webcam_writer: can't deal with format=%d\n",
- web->format);
+ fmt->fmtid);
rename = 0;
}
if (rename) {
@@ -83,8 +87,8 @@ webcam_writer(void *arg)
unlink(tmpfilename);
}
free(web->filename);
- free(web->data);
- web->data = NULL;
+ ng_release_video_buf(web->buf);
+ web->buf = NULL;
}
done:
pthread_mutex_unlock(&web->lock);
@@ -119,8 +123,7 @@ webcam_exit()
}
int
-webcam_put(char *filename, int format, int width, int height,
- char *data, int size)
+webcam_put(char *filename, struct ng_video_buf *buf)
{
int ret = 0;
@@ -132,21 +135,16 @@ webcam_put(char *filename, int format, int width, int height,
fprintf(stderr,"webcam_put: locked\n");
return -1;
}
- if (NULL != web->data) {
+ if (NULL != web->buf) {
if (debug)
fprintf(stderr,"webcam_put: still has data\n");
ret = -1;
goto done;
}
- /* TODO: avoid this memcpy (needs buffer refcount) */
web->filename = strdup(filename);
- web->data = malloc(size);
- memcpy(web->data,data,size);
- web->format = format;
- web->width = width;
- web->height = height;
- web->size = size;
+ web->buf = buf;
+ buf->refcount++;
if (debug)
fprintf(stderr,"webcam_put: ok\n");
pthread_cond_signal(&web->wait);
@@ -155,4 +153,3 @@ webcam_put(char *filename, int format, int width, int height,
pthread_mutex_unlock(&web->lock);
return ret;
}
-
diff --git a/src/webcam.h b/src/webcam.h
index 0b0b66e..e3ec4af 100644
--- a/src/webcam.h
+++ b/src/webcam.h
@@ -1,5 +1,4 @@
extern char *webcam;
-int webcam_put(char *filename, int format, int width, int height,
- char *data, int size);
+int webcam_put(char *filename, struct ng_video_buf *buf);
void webcam_init(void);
void webcam_exit(void);
diff --git a/src/writefile.c b/src/writefile.c
index cbf689f..de36e00 100644
--- a/src/writefile.c
+++ b/src/writefile.c
@@ -81,7 +81,8 @@ snap_filename(char *base, char *channel, char *ext)
/* ---------------------------------------------------------------------- */
-int write_jpeg(char *filename, char *data, int width, int height, int quality, int gray)
+int write_jpeg(char *filename, struct ng_video_buf *buf,
+ int quality, int gray)
{
struct jpeg_compress_struct cinfo;
struct jpeg_error_mgr jerr;
@@ -98,16 +99,17 @@ int write_jpeg(char *filename, char *data, int width, int height, int quality, i
cinfo.err = jpeg_std_error(&jerr);
jpeg_create_compress(&cinfo);
jpeg_stdio_dest(&cinfo, fp);
- cinfo.image_width = width;
- cinfo.image_height = height;
+ cinfo.image_width = buf->fmt.width;
+ cinfo.image_height = buf->fmt.height;
cinfo.input_components = gray ? 1: 3;
cinfo.in_color_space = gray ? JCS_GRAYSCALE: JCS_RGB;
jpeg_set_defaults(&cinfo);
jpeg_set_quality(&cinfo, quality, TRUE);
jpeg_start_compress(&cinfo, TRUE);
- line_length = gray ? width: width * 3;
- for (i = 0, line = data; i < height; i++, line += line_length)
+ line_length = gray ? buf->fmt.width : buf->fmt.width * 3;
+ for (i = 0, line = buf->data; i < buf->fmt.height;
+ i++, line += line_length)
jpeg_write_scanlines(&cinfo, &line, 1);
jpeg_finish_compress(&(cinfo));
@@ -117,7 +119,7 @@ int write_jpeg(char *filename, char *data, int width, int height, int quality, i
return 0;
}
-int write_ppm(char *filename, char *data, int width, int height)
+int write_ppm(char *filename, struct ng_video_buf *buf)
{
FILE *fp;
@@ -125,14 +127,15 @@ int write_ppm(char *filename, char *data, int width, int height)
fprintf(stderr,"grab: can't open %s: %s\n",filename,strerror(errno));
return -1;
}
- fprintf(fp,"P6\n%d %d\n255\n",width,height);
- fwrite(data,height,3*width,fp);
+ fprintf(fp,"P6\n%d %d\n255\n",
+ buf->fmt.width,buf->fmt.height);
+ fwrite(buf->data, buf->fmt.height, 3*buf->fmt.width,fp);
fclose(fp);
return 0;
}
-int write_pgm(char *filename, char *data, int width, int height)
+int write_pgm(char *filename, struct ng_video_buf *buf)
{
FILE *fp;
@@ -140,8 +143,9 @@ int write_pgm(char *filename, char *data, int width, int height)
fprintf(stderr,"grab: can't open %s: %s\n",filename,strerror(errno));
return -1;
}
- fprintf(fp,"P5\n%d %d\n255\n",width,height);
- fwrite(data,height,width,fp);
+ fprintf(fp,"P5\n%d %d\n255\n",
+ buf->fmt.width, buf->fmt.height);
+ fwrite(buf->data, buf->fmt.height, buf->fmt.width, fp);
fclose(fp);
return 0;
@@ -274,6 +278,8 @@ files_open(char *filesname, char *audioname,
{
struct files_handle *h;
+ if (NULL == filesname)
+ return NULL;
if (NULL == (h = malloc(sizeof(*h))))
return NULL;
@@ -285,6 +291,11 @@ files_open(char *filesname, char *audioname,
if (h->audio.fmtid != AUDIO_NONE) {
h->wav_fd = open(audioname, O_CREAT | O_RDWR | O_TRUNC, 0666);
+ if (-1 == h->wav_fd) {
+ fprintf(stderr,"open %s: %s\n",audioname,strerror(errno));
+ free(h);
+ return NULL;
+ }
wav_start_write(h->wav_fd,&h->wav_header,&h->audio);
}
@@ -305,10 +316,10 @@ files_video(void *handle, struct ng_video_buf *buf)
switch (h->video.fmtid) {
case VIDEO_RGB24:
- rc = write_ppm(h->file, buf->data, h->video.width, h->video.height);
+ rc = write_ppm(h->file, buf);
break;
case VIDEO_GRAY:
- rc = write_pgm(h->file, buf->data, h->video.width, h->video.height);
+ rc = write_pgm(h->file, buf);
break;
case VIDEO_MJPEG:
if (NULL == (fp = fopen(h->file,"w"))) {
@@ -348,6 +359,100 @@ files_close(void *handle)
return 0;
}
+/* ---------------------------------------------------------------------- */
+
+struct raw_handle {
+ /* format */
+ struct ng_video_fmt video;
+ struct ng_audio_fmt audio;
+
+ /* video file*/
+ int fd;
+
+ /* *.wav file */
+ int wav_fd;
+ WAVEHDR wav_header;
+ int wav_size;
+};
+
+static void*
+raw_open(char *videoname, char *audioname,
+ struct ng_video_fmt *video, const void *priv_video, int fps,
+ struct ng_audio_fmt *audio, const void *priv_audio)
+{
+ struct raw_handle *h;
+
+ if (NULL == (h = malloc(sizeof(*h))))
+ return NULL;
+
+ /* init */
+ memset(h,0,sizeof(*h));
+ h->video = *video;
+ h->audio = *audio;
+
+ /* audio */
+ if (h->audio.fmtid != AUDIO_NONE) {
+ h->wav_fd = open(audioname, O_CREAT | O_RDWR | O_TRUNC, 0666);
+ if (-1 == h->wav_fd) {
+ fprintf(stderr,"open %s: %s\n",audioname,strerror(errno));
+ free(h);
+ return NULL;
+ }
+ wav_start_write(h->wav_fd,&h->wav_header,&h->audio);
+ }
+
+ /* video */
+ if (NULL != videoname) {
+ h->fd = open(videoname, O_CREAT | O_RDWR | O_TRUNC, 0666);
+ if (-1 == h->fd) {
+ fprintf(stderr,"open %s: %s\n",videoname,strerror(errno));
+ if (h->wav_fd)
+ close(h->wav_fd);
+ free(h);
+ return NULL;
+ }
+ } else {
+ h->fd = 1; /* use stdout */
+ }
+
+ return h;
+}
+
+static int
+raw_video(void *handle, struct ng_video_buf *buf)
+{
+ struct raw_handle *h = handle;
+
+ if (buf->size != write(h->fd,buf->data,buf->size))
+ return -1;
+ return 0;
+}
+
+static int
+raw_audio(void *handle, struct ng_audio_buf *buf)
+{
+ struct raw_handle *h = handle;
+ if (buf->size != write(h->wav_fd,buf->data,buf->size))
+ return -1;
+ h->wav_size += buf->size;
+ return 0;
+}
+
+static int
+raw_close(void *handle)
+{
+ struct raw_handle *h = handle;
+
+ if (h->audio.fmtid != AUDIO_NONE) {
+ wav_stop_write(h->wav_fd,&h->wav_header,h->wav_size);
+ close(h->wav_fd);
+ }
+ if (1 != h->fd)
+ close(h->fd);
+ free(h);
+ return 0;
+}
+
/* ----------------------------------------------------------------------- */
/* data structures describing our capabilities */
@@ -369,6 +474,28 @@ static const struct ng_format_list files_vformats[] = {
}
};
+static const struct ng_format_list raw_vformats[] = {
+ {
+ name: "rgb",
+ ext: "raw",
+ fmtid: VIDEO_RGB24,
+ },{
+ name: "gray",
+ ext: "raw",
+ fmtid: VIDEO_GRAY,
+ },{
+ name: "422",
+ ext: "raw",
+ fmtid: VIDEO_YUV422,
+ },{
+ name: "422p",
+ ext: "raw",
+ fmtid: VIDEO_YUV422P,
+ },{
+ /* EOF */
+ }
+};
+
static const struct ng_format_list wav_aformats[] = {
{
name: "mono8",
@@ -397,3 +524,14 @@ const struct ng_writer files_writer = {
wr_audio: files_audio,
wr_close: files_close,
};
+
+const struct ng_writer raw_writer = {
+ name: "raw",
+ desc: "single file, raw video data",
+ video: raw_vformats,
+ audio: wav_aformats,
+ wr_open: raw_open,
+ wr_video: raw_video,
+ wr_audio: raw_audio,
+ wr_close: raw_close,
+};
diff --git a/src/writefile.h b/src/writefile.h
index 4f1b7c7..43772f4 100644
--- a/src/writefile.h
+++ b/src/writefile.h
@@ -1,6 +1,7 @@
int patch_up(char *name);
char* snap_filename(char *base, char *channel, char *ext);
-int write_jpeg(char *filename, char *data, int width, int height, int quality, int gray);
-int write_ppm(char *filename, char *data, int width, int height);
-int write_pgm(char *filename, char *data, int width, int height);
+int write_jpeg(char *filename, struct ng_video_buf *buf,
+ int quality, int gray);
+int write_ppm(char *filename, struct ng_video_buf *buf);
+int write_pgm(char *filename, struct ng_video_buf *buf);
diff --git a/src/x11.c b/src/x11.c
index fabcc2a..bceee30 100644
--- a/src/x11.c
+++ b/src/x11.c
@@ -164,7 +164,7 @@ x11_init(Display *dpy, XVisualInfo *vinfo)
(fmt[i].red == vinfo->red_mask || fmt[i].red == 0) &&
(fmt[i].green == vinfo->green_mask || fmt[i].green == 0) &&
(fmt[i].blue == vinfo->blue_mask || fmt[i].blue == 0)) {
- x11_pixmap_format = fmt[i].format;
+ x11_fmt.fmtid = fmt[i].format;
break;
}
}
@@ -193,7 +193,7 @@ x11_init(Display *dpy, XVisualInfo *vinfo)
}
if (vinfo->class == StaticGray && vinfo->depth == 8) {
format = VIDEO_GRAY;
- x11_pixmap_format = VIDEO_GRAY;
+ x11_fmt.fmtid = VIDEO_GRAY;
}
if (0 == format) {
if (vinfo->class == PseudoColor && vinfo->depth == 8) {
diff --git a/src/xv.c b/src/xv.c
index fa26862..b33301b 100644
--- a/src/xv.c
+++ b/src/xv.c
@@ -312,7 +312,7 @@ xv_destroy_ximage(Display *dpy, XvImage * xvimage, void *shm)
void xv_init(int xvideo, int hwscale, int port)
{
- char norm[32],input[32];
+ char *h;
int i;
if (Success != XvQueryExtension(dpy,&ver,&rel,&req,&ev,&err)) {
@@ -378,13 +378,20 @@ void xv_init(int xvideo, int hwscale, int port)
}
enc_map = malloc(sizeof(*enc_map)*encodings);
for (i = 0; i < encodings; i++) {
+#if 1
+ if (NULL != (h = strrchr(ei[i].name,'-'))) {
+ *(h++) = 0;
+ enc_map[i].input = xv_strlist_add(&inputs,h);
+ }
+ enc_map[i].norm = xv_strlist_add(&norms,ei[i].name);
+ enc_map[i].encoding = ei[i].encoding_id;
+#else
if (2 == sscanf(ei[i].name,"%31[^-]-%31s",norm,input)) {
- enc_map[i].norm = xv_strlist_add(&norms,norm);
- enc_map[i].input = xv_strlist_add(&inputs,input);
- enc_map[i].encoding = ei[i].encoding_id;
- } else {
- /* FIXME */
+ enc_map[i].norm = xv_strlist_add(&norms,norm);
+ enc_map[i].input = xv_strlist_add(&inputs,input);
+ enc_map[i].encoding = ei[i].encoding_id;
}
+#endif
}
xv.norms = norms;
xv.inputs = inputs;
diff --git a/src/xvideo.c b/src/xvideo.c
index c4a53b4..8cfb34c 100644
--- a/src/xvideo.c
+++ b/src/xvideo.c
@@ -11,7 +11,9 @@ int main(){puts("Compiled without Xvideo extention support, sorry.");exit(0);}
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
-#include <getopt.h>
+#ifdef HAVE_GETOPT_H
+# include <getopt.h>
+#endif
#include <X11/Xlib.h>
#include <X11/StringDefs.h>
@@ -142,11 +144,13 @@ static char *reasons[] = {
int
main(int argc, char *argv[])
{
+#ifdef HAVE_GETOPT_LONG
static struct option long_opts[] = {
{"port", 1, 0, 'p'},
{"help", 0, 0, 'h'},
{0, 0, 0, 0}
};
+#endif
XtAppContext app_context;
Display *dpy;
@@ -174,8 +178,13 @@ main(int argc, char *argv[])
/* parse options */
for (;;) {
+#ifdef HAVE_GETOPT_LONG
if (-1 == (c = getopt_long(argc, argv, "hp:", long_opts,NULL)))
break;
+#else
+ if (-1 == (c = getopt(argc, argv, "hp:")))
+ break;
+#endif
switch (c) {
case 0:
/* long option */
diff --git a/tools/record.c b/tools/record.c
index 4d1babd..7de8847 100644
--- a/tools/record.c
+++ b/tools/record.c
@@ -44,14 +44,15 @@ static short *sound_buffer;
static int maxl,maxr;
static int secl,secr;
static struct timeval tl,tr;
+static char *audio_dev = "/dev/audio";
int
sound_open()
{
int frag,afmt,channels,rate,trigger;
- if (-1 == (sound_fd = open("/dev/audio", O_RDONLY))) {
- perror("open /dev/audio");
+ if (-1 == (sound_fd = open(audio_dev, O_RDONLY))) {
+ fprintf(stderr,"open %s: %s",audio_dev,strerror(errno));
exit(1);
}
@@ -163,6 +164,7 @@ char *config_names[SOUND_MIXER_NRDEVICES][4];
static int mix;
static int dev = -1;
static int volume;
+static char *mixer_dev = "/dev/mixer";
int
mixer_open(char *filename, char *device)
@@ -170,7 +172,7 @@ mixer_open(char *filename, char *device)
int i, devmask;
if (-1 == (mix = open(filename,O_RDONLY))) {
- perror("mixer open");
+ fprintf(stderr,"open %s: %s",filename,strerror(errno));
exit(1);
}
if (-1 == ioctl(mix,MIXER_READ(SOUND_MIXER_DEVMASK),&devmask)) {
@@ -397,15 +399,18 @@ usage()
"interactive curses application. You'll need a fast\n"
"terminal, don't try this on a 9600 bps vt100...\n"
"\n"
- "%s has three options:\n"
+ "%s has five options:\n"
" -h this text\n"
" -i dev mixer device [%s]. This should be the one\n"
" where you can adjust the record level for\n"
" your audio source.\n"
" -o file output file name [%s], a number and the .wav\n"
" extention are added by %s.\n"
+ " -d dev set audio device [%s]\n"
+ " -m dev set mixer device [%s]\n"
"\n",
- progname,progname,input,filename,progname);
+ progname,progname,input,filename,progname,
+ audio_dev,mixer_dev);
}
int
@@ -421,7 +426,7 @@ main(int argc, char *argv[])
/* parse options */
for (;;) {
- if (-1 == (c = getopt(argc, argv, "vhi:o:")))
+ if (-1 == (c = getopt(argc, argv, "vhi:o:d:m:")))
break;
switch (c) {
case 'v':
@@ -433,6 +438,12 @@ main(int argc, char *argv[])
case 'o':
filename = optarg;
break;
+ case 'd':
+ audio_dev = optarg;
+ break;
+ case 'm':
+ mixer_dev = optarg;
+ break;
case 'h':
default:
usage();
@@ -440,7 +451,7 @@ main(int argc, char *argv[])
}
}
- mixer_open("/dev/mixer",input);
+ mixer_open(mixer_dev,input);
sound_open();
delay = 0;
auto_adjust = 1;
diff --git a/webcam/webcam.c b/webcam/webcam.c
index c9236db..0b39d1c 100644
--- a/webcam/webcam.c
+++ b/webcam/webcam.c
@@ -368,9 +368,9 @@ rotate_image(unsigned char * in, int *wp, int *hp, int rot,
int rr = (ow-1-i)*oh;
int ic = i+left;
for (j = 0; j < oh; j++) {
- rotimg[3*(rr+(oh-1-j))] = in[3*((j+top)*w+ic)];
- rotimg[3*(rr+(oh-1-j))+1] = in[3*((j+top)*w+ic)+1];
- rotimg[3*(rr+(oh-1-j))+2] = in[3*((j+top)*w+ic)+2];
+ rotimg[3*(rr+j)] = in[3*((j+top)*w+ic)];
+ rotimg[3*(rr+j)+1] = in[3*((j+top)*w+ic)+1];
+ rotimg[3*(rr+j)+2] = in[3*((j+top)*w+ic)+2];
}
}
*wp = oh;
diff --git a/webcam/webcam.man b/webcam/webcam.man
index 0c88f5b..2940998 100644
--- a/webcam/webcam.man
+++ b/webcam/webcam.man
@@ -81,8 +81,8 @@ They should satisfy 0<=top<bottom<=height and
0<=left<right<=width. (0,0 is the top, left corner.)
If
.B rotate
-is positive, the output image will be rotated clockwise 90 degrees
-that number of times (1, 2, or 3).
+is positive, the output image will be rotated counter-clockwise
+90 degrees that number of times (1, 2, or 3).
.P
With
.B trigger
diff --git a/xawtv.spec b/xawtv.spec
index 611bed7..5c09554 100644
--- a/xawtv.spec
+++ b/xawtv.spec
@@ -8,7 +8,7 @@
Summary: Video4Linux Stream Capture Viewer
Name: xawtv
-Version: 3.28
+Version: 3.29
Release: 1
Source0: xawtv_%{version}.tar.gz
Group: X11/Applications

Privacy Policy