[Sumover-dev] [svn commit] r4415 - in vic/branches/mpeg4: video

sumover-dev at cs.ucl.ac.uk sumover-dev at cs.ucl.ac.uk
Mon Apr 13 06:00:45 BST 2009


Author: douglask
Date: Mon Apr 13 06:00:36 2009
New Revision: 4415

Modified:
   vic/branches/mpeg4/Makefile.in
   vic/branches/mpeg4/bsd-endian.h
   vic/branches/mpeg4/configure.in
   vic/branches/mpeg4/configure.in.tail
   vic/branches/mpeg4/configure.in.tk
   vic/branches/mpeg4/video/grabber-v4l2.cpp
   vic/branches/mpeg4/video/grabber-video4linux.cpp
   vic/branches/mpeg4/video/yuv_convert.cpp

Log:
cleanup of redundant code in configure.in.tail which should have been removed when tcl.m4 support was added.

Support for finding libuclmmbase header files and library in directories other than and including ../common/src, e.g. in include/common-mml (i.e NetBSD) and include/uclmmbase (FreeBSD, Debian and Ubuntu).

Initial handling support for handling V4L and V4L2 on non-Linux platforms.

Removed support for old V4L2 grabber based on early draft.

Updated bsd-endian.h.

Merged some patches from NetBSD and FreeBSD ports, while made some other patches redundant.


Modified: vic/branches/mpeg4/Makefile.in
==============================================================================
--- vic/branches/mpeg4/Makefile.in	(original)
+++ vic/branches/mpeg4/Makefile.in	Mon Apr 13 06:00:36 2009
@@ -48,10 +48,16 @@
 C++ = @CXX@
 CCOPT = @V_CCOPT@
 
+LDFLAGS= @LDFLAGS@
+
+INSTALL = @INSTALL@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_DATA = @INSTALL_DATA@
+
 INCLUDE_TK = @V_INCLUDE_TK@
 INCLUDE_TCL = @V_INCLUDE_TCL@
 INCLUDE_X11 = @V_INCLUDE_X11@
-INCLUDE_MISC = -I. -Icodec/tmndec -Icodec/tmn-x -Icodec/h263 -Irtp -Irender -Inet -Ivideo -Icodec -I../common/src @V_INCLUDE@ 
+INCLUDE_MISC = -I. -Icodec/tmndec -Icodec/tmn-x -Icodec/h263 -Irtp -Irender -Inet -Ivideo -Icodec @V_INCLUDE@ 
 
 STATIC = @V_STATIC@
 MKDEP = ./mkdep
@@ -85,7 +91,7 @@
 CODEC_LIB = @V_CODEC_LIB@ codec/tmndec/libh263.a codec/tmn-x/libh263coder.a
 
 LIB = $(LIB_GRABBER) @V_LIB_TK@ @V_LIB_TCL@ @V_LIB_X11@ @V_LIB@ $(CODEC_LIB) $(VIDEO_LIB) \
-	../common/src/libuclmmbase.a -lm -lz -lpthread @V_LIB_FFMPEG@ @V_LIB_X264@ 
+	-luclmmbase -lm -lz -lpthread @V_LIB_FFMPEG@ @V_LIB_X264@ 
 
 
 INCLUDE = $(INCLUDE_MISC) $(INCLUDE_GRABBER) $(INCLUDE_TK) $(INCLUDE_TCL) \
@@ -341,15 +347,13 @@
 	$(CC) -o $@ $(CFLAGS) render/ppmtolut/ppmtolut.c -lm $(STATIC)
 
 install: force
-	 cp vic @prefix@/bin/vic
-	 chown bin @prefix@/bin/vic
-	 chgrp bin @prefix@/bin/vic
-	 chmod 555 @prefix@/bin/vic
-	 cp vic.1 @prefix@/man/vic.1
-	 cp histtolut @prefix@/bin/histtolut
-	 chown bin @prefix@/bin/histtolut
-	 chgrp bin @prefix@/bin/histtolut
-	 chmod 555 @prefix@/bin/histtolut
+	test -d $(DESTDIR)@prefix@/bin || \
+		$(INSTALL) -d $(DESTDIR)@prefix@/bin
+	test -d $(DESTDIR)@prefix@/man || \
+		$(INSTALL) -d $(DESTDIR)@prefix@/man/man1
+	$(INSTALL_PROGRAM) vic $(DESTDIR)@prefix@/bin
+	$(INSTALL_PROGRAM) histtolut $(DESTDIR)@prefix@/bin
+	$(INSTALL_DATA) vic.1 $(DESTDIR)@prefix@/man/man1
 
 clean:
 	rm -f *.o codec/jpeg/*.o codec/p64/*.o codec/h263/*.o \
@@ -360,6 +364,7 @@
 		vic vic.dyn vic.xil h261_play h261_dump jpeg_play cb_wish \
 		mkcube rgb-cube.ppm yuv-map.ppm cm0.c cm1.c ppmtolut \
 		config.cache config.log domake.* dotar.*
+	rm -rf autom4te.cache
 	cd codec/tmn && $(MAKE) clean
 	cd codec/tmndec && $(MAKE) realclean
 	rm -f codec/tmn-x/*.o codec/tmn-x/*.a
@@ -367,6 +372,7 @@
 realclean:
 	$(MAKE) clean
 	rm -f config.log config.cache config.status
+	rm -rf autom4te.cache
 
 tags:	force
 	ctags -tdwC $(SRC) *.h $(TKSRC)/*.c $(TKSRC)/*.h \

Modified: vic/branches/mpeg4/bsd-endian.h
==============================================================================
--- vic/branches/mpeg4/bsd-endian.h	(original)
+++ vic/branches/mpeg4/bsd-endian.h	Mon Apr 13 06:00:36 2009
@@ -29,21 +29,26 @@
 
 #include "config.h"
 
-#ifdef WIN32
-//#include <winsock.h>
+#if defined(_WIN32) || defined(_WIN64)
+#define LITTLE_ENDIAN 1234
+#define BIG_ENDIAN 4321
+#define BYTE_ORDER LITTLE_ENDIAN
 #else
 #include <sys/param.h>
 #endif
+
 #ifdef __linux__
 #include <endian.h>
 #endif
+
 #ifndef IPPROTO_IP
 #include <netinet/in.h>
 #endif
+
 #ifndef BYTE_ORDER
 #define LITTLE_ENDIAN 1234
 #define BIG_ENDIAN 4321
-#if defined(ultrix) || defined(__alpha) || defined(__i386__) || defined(__i486__) || defined(_X86_)
+#if defined(ultrix) || defined(__alpha__) || defined(__ia64__) || defined(__i386__) || defined(__i486__) || defined(__i586__) || defined(__i686__) || defined(__x86_64__) || defined(__amd64__) || defined(_X86_) 
 #define BYTE_ORDER LITTLE_ENDIAN
 #else
 #define BYTE_ORDER BIG_ENDIAN
@@ -55,5 +60,6 @@
 #else
 #define SHIFT(n) (n)
 #endif
+
 #define EXTRACT(v, n) (((v) >> SHIFT(n)) & 0xff)
 #define SPLICE(v, p, n) (v) |= (p) << SHIFT(n)

Modified: vic/branches/mpeg4/configure.in
==============================================================================
--- vic/branches/mpeg4/configure.in	(original)
+++ vic/branches/mpeg4/configure.in	Mon Apr 13 06:00:36 2009
@@ -3,6 +3,8 @@
 
 AC_INIT(main.cpp)
 
+AC_PROG_INSTALL
+
 V_PROG="vic"
 V_ALL="$V_PROG"
 V_SHM="-DUSE_SHM"
@@ -297,24 +299,57 @@
 dnl lots of hairy special cases for detecting which frame capture
 dnl support to compile in
 
-AC_ARG_ENABLE(v4l2old,	--enable-v4l2old    Enable or disable old Video4Linux2 grabber (default: disabled), v4l2old=yes, v4l2old=no)
-if test "$v4l2old" = "yes" ; then
-                V_OBJ_GRABBER="$V_OBJ_GRABBER video/grabber-v4l2-old.o"
-		echo "Using old Linux grabber-v4l2"
-elif test -r /usr/include/linux/videodev.h ; then
-        AC_CHECK_HEADER(libv4lconvert.h,
-        [V_DEFINE="$V_DEFINE -DHAVE_LIBV4L"
-         V_LIB_GRABBER="$V_LIB_GRABBER -lv4l1 -lv4l2"],
-        [V_OBJ_GRABBER="$V_OBJ_GRABBER  video/tinyjpeg.o video/jidctflt.o"])
-        if test -r /usr/include/linux/videodev2.h  ; then
-                V_OBJ_GRABBER="$V_OBJ_GRABBER video/grabber-v4l2.o video/grabber-video4linux.o video/yuv_convert.o"
-		echo "Using Linux Grabbers: Video4Linux2 and Video4Linux1"
-        else
-                V_OBJ_GRABBER="$V_OBJ_GRABBER video/grabber-video4linux.o video/yuv_convert.o"
-		echo "Using Linux Grabber: Video4Linux1"
+AC_MSG_NOTICE([checking for V4L support])
+AC_CHECK_HEADER([linux/videodev.h], [ have_videodev_h=yes; ])
+if test x$have_videodev_h = xyes; then
+        AC_MSG_NOTICE([suitable V4L support found... using linux/videodev.h])
+        V_OBJ_GRABBER="$V_OBJ_GRABBER video/grabber-video4linux.o"
+        have_V4L=yes
+fi
+
+AC_MSG_NOTICE([checking for V4L2 support])
+AC_CHECK_HEADER([linux/videodev2.h], [ have_linux_videodev2_h=yes; ])
+AC_CHECK_HEADER([sys/videodev2.h], [ have_sys_videodev2_h=yes; ])
+AC_CHECK_HEADER([sys/videoio.h], [ have_sys_videoio_h=yes; ])
+
+if test x$have_linux_videodev2_h = xyes ; then
+        AC_MSG_NOTICE([suitable V4L2 support found... using linux/videodev2.h])
+        V_DEFINE="$V_DEFINE -DHAVE_LINUX_VIDEODEV2_H"
+        V_OBJ_GRABBER="$V_OBJ_GRABBER video/grabber-v4l2.o"
+        have_V4L2=yes
+
+elif test x$have_sys_videodev2_h = xyes; then
+        AC_MSG_NOTICE([suitable V4L2 support found... using sys/videodev2.h])
+        V_DEFINE="$V_DEFINE -DHAVE_SYS_VIDEODEV2_H"
+        V_OBJ_GRABBER="$V_OBJ_GRABBER video/grabber-v4l2.o"
+        have_V4L2=yes
+
+elif test x$have_sys_videodev2_h = xyes; then
+        AC_MSG_NOTICE([suitable V4L2 support found... using sys/videoio.h])
+        V_DEFINE="$V_DEFINE -DHAVE_SYS_VIDEOIO_H"
+        V_OBJ_GRABBER="$V_OBJ_GRABBER video/grabber-v4l2.o"
+        have_V4L2=yes
+
+fi
+
+if test x$have_V4L = xyes -o x$have_V4L2 = xyes; then
+        V_OBJ_GRABBER="$V_OBJ_GRABBER video/yuv_convert.o"
+fi
+
+AC_CHECK_HEADER([libv4lconvert.h], [ have_videodev_h=yes; ])
+if test x$have_videodev_h = xyes; then
+        V_DEFINE="$V_DEFINE -DHAVE_LIBV4L"
+        if test x$have_V4L = xyes; then
+                V_LIB_GRABBER="$V_LIB_GRABBER -lv4l1"
+        fi
+        if test x$have_V4L2 = xyes; then
+                V_LIB_GRABBER="$V_LIB_GRABBER -lv4l2"
         fi
+else
+        V_OBJ_GRABBER="$V_OBJ_GRABBER  video/tinyjpeg.o video/jidctflt.o"
 fi
 
+
 if test -r /usr/lib/libvl.so ; then
 	V_LIB_GRABBER="$V_LIB_GRABBER -lvl -ldmedia"
 	V_OBJ_GRABBER="video/grabber-vl.o video/output-vl.o $V_OBJ_GRABBER"
@@ -525,16 +560,15 @@
 	V_LIB="$V_LIB -lipc"
 	;;
 *-*-netbsd*)
+	V_STATIC=""
 	V_TARCMD="tar -h -c -f"
-	V_LIB="$V_LIB -L/usr/local/lib"
 	;;
 *-*-freebsd*)
 	V_STATIC=""
+	V_DEFINE="$V_DEFINE -DSIGARGS=int -DFreeBSD"
 	if test $ipv6 = yes; then
-		V_DEFINE="$V_DEFINE -DFreeBSD -DHAVE_IPV6"
+		V_DEFINE="$V_DEFINE -DHAVE_IPV6"
 		V_LIB="$V_LIB -L/usr/local/v6/lib"
-	else
-		V_DEFINE="$V_DEFINE -DFreeBSD"
 	fi
 	OPSYS=freebsd
 	;;

Modified: vic/branches/mpeg4/configure.in.tail
==============================================================================
--- vic/branches/mpeg4/configure.in.tail	(original)
+++ vic/branches/mpeg4/configure.in.tail	Mon Apr 13 06:00:36 2009
@@ -1,53 +1,36 @@
 dnl standard final commands for vic/vat/etc. autoconf scripts
 dnl $Header$ (LBL)
 
-# tcl7.5 needs a dynamic loading library (unless built with the
-# -disable-load flag).  Try to find the appropriate one.
-
-if test ! -z "$V_NEED_DL" ; then
-	V_LIB_DL=""
-	case "$target" in 
-	*-*-solaris*)
-		V_LIB_DL="dl"
-		;;
-	sparc-sun-sunos*)
-		V_LIB_DL="dl"
-		;;
-	*-*-hpux*)
-		V_LIB_DL="dld"
-		;;
-	*-*-linux*)
-		AC_CHECK_LIB(dl, dlopen, V_LIB_DL="dl", V_LIB_DL="dld")
-		;;
-	*-*-aix4*)
-		V_LIB_DL="ld"
-		;;
-	esac
-	if test ! -z "$V_LIB_DL" ; then
-		AC_CHECK_LIB($V_LIB_DL, main, , V_LIB_DL="", $V_STATIC)
-	fi
-	if test ! -z "$V_LIB_DL" ; then
-		V_LIB="$V_LIB -l$V_LIB_DL"
-	else
-		echo "no dynamic load lib"
-	fi
-fi
-
-AC_SUBST(V_STATIC)
+# various include hacks
+dirs="../common/src \
+	/usr/include/uclmmbase \
+	/usr/include/common-mml \
+	/usr/local/include/uclmmbase \
+	/usr/local/include/common-mml"
 
-if test "$host_cpu" = alpha ; then 
-	V_DEFINE="$V_DEFINE -DINT_64=u_long"
+if test x$prefix != xNONE ; then
+	dirs="$prefix/include/common-mml $prefix/include/uclmmbase $dirs"
 fi
 
-# various include hacks
-dirs="/usr/src/local/include-fixes \
-	/import/mcast/include"
 for dir in $dirs; do
 	if test -d $dir ; then
 		V_INCLUDE="$V_INCLUDE -I$dir"
 	fi
 done
 
+# various linker hacks
+if test x$prefix != xNONE ; then
+	if test -d $prefix/lib64 ; then
+		LDFLAGS="-L$prefix/lib64 $LDFLAGS"
+	else
+		LDFLAGS="-L$prefix/lib $LDFLAGS"
+	fi
+else
+	if test -d ../common/src ; then
+		LDFLAGS="-L../common/src $LDFLAGS"
+	fi
+fi
+
 # always use -g with gcc during development (even with -O)
 #if test "$CC" = gcc && test -f .devel ; then
 if test "$CC" = gcc  ; then
@@ -56,7 +39,6 @@
 	V_DEFINE="$V_DEFINE -fsigned-char"
 fi
 
-
 V_TAR_TARGET=$target_os
 AC_SUBST(V_TAR_TARGET)
 
@@ -68,6 +50,7 @@
 AC_SUBST(V_DEFINE)
 AC_SUBST(V_SIGRET)
 AC_SUBST(V_SHELL)
+AC_SUBST(V_STATIC)
 AC_SUBST(V_TARCMD)
 AC_SUBST(V_INCLUDE)
 AC_SUBST(V_OBJ)
@@ -79,4 +62,3 @@
 if test -f .devel ; then
 	make depend
 fi
-

Modified: vic/branches/mpeg4/configure.in.tk
==============================================================================
--- vic/branches/mpeg4/configure.in.tk	(original)
+++ vic/branches/mpeg4/configure.in.tk	Mon Apr 13 06:00:36 2009
@@ -11,7 +11,7 @@
         V_DEFINE="$V_DEFINE -DMAC_OSX_TCL"
     fi
 
-elif test "${TCL_VERSION}" == "8.0" ; then
+elif test "${TCL_VERSION}" = "8.0" ; then
     if test -f "${TCL_SRC_DIR}/generic/tcl2c.c" ; then
         AC_MSG_RESULT([UCL Tcl ${TCL_VERSION}${TCL_PATCH_LEVEL}])
     else
@@ -27,7 +27,7 @@
 SC_LOAD_TKCONFIG
 
 AC_MSG_CHECKING([for a compatible version of Tk])
-if test "${TCL_VERSION}" == "${TK_VERSION}"; then
+if test "${TCL_VERSION}" = "${TK_VERSION}"; then
     AC_MSG_RESULT([Tk ${TK_VERSION}${TK_PATCH_LEVEL}])
 
     if test "$aquatk" = yes; then

Modified: vic/branches/mpeg4/video/grabber-v4l2.cpp
==============================================================================
--- vic/branches/mpeg4/video/grabber-v4l2.cpp	(original)
+++ vic/branches/mpeg4/video/grabber-v4l2.cpp	Mon Apr 13 06:00:36 2009
@@ -31,7 +31,6 @@
 #include <string.h>
 #include <signal.h>
 #include <errno.h>
-#include <endian.h>
 
 #include <sys/types.h>
 #include <sys/fcntl.h>
@@ -45,8 +44,13 @@
 
 extern "C"
 {
-#include <asm/types.h>
+#if defined(HAVE_SYS_VIDEOIO_H)
+#include <sys/videoio.h>
+#elif defined(DHAVE_SYS_VIDEODEV2_H)
+#include <sys/videodev2.h]>
+#else
 #include <linux/videodev2.h>
+#endif
 }
 
 #ifdef HAVE_LIBV4L

Modified: vic/branches/mpeg4/video/grabber-video4linux.cpp
==============================================================================
--- vic/branches/mpeg4/video/grabber-video4linux.cpp	(original)
+++ vic/branches/mpeg4/video/grabber-video4linux.cpp	Mon Apr 13 06:00:36 2009
@@ -23,7 +23,7 @@
 #include <string.h>
 #include <signal.h>
 #include <errno.h>
-#include <endian.h>
+#include "bsd-endian.h"
 
 #include <sys/types.h>
 #include <sys/fcntl.h>
@@ -48,11 +48,9 @@
 
 extern "C"
 {
-#include <asm/types.h>
-//#include <linux/videodev.h>
+#include <linux/videodev.h>
 }
 
-#include "videodev.h"
 #include "grabber.h"
 #include "vic_tcl.h"
 #include "device-input.h"
@@ -208,8 +206,7 @@
     struct video_capability capability;
     struct video_channel channel;
     struct video_picture pict;
-    unsigned int j;
-    int i, fd;
+    int i, j, fd;
     char *nick, *attr;
 
     // AGTk 3.02 and earlier use VIC_DEVICE env variable to select device
@@ -309,7 +306,7 @@
 
 V4lGrabber::V4lGrabber(const char *cformat, const char *dev)
 {
-    unsigned int i = 0;
+    int i = 0;
     struct video_mmap vid_mmap;
 
     have_mmap = 0;
@@ -430,7 +427,7 @@
 
 int V4lGrabber::command(int argc, const char *const *argv)
 {
-    unsigned int i;
+    int i;
     //struct video_channel     channel;
     //static const char *norms[] = {"pal", "ntsc", "secam", "auto"};
 

Modified: vic/branches/mpeg4/video/yuv_convert.cpp
==============================================================================
--- vic/branches/mpeg4/video/yuv_convert.cpp	(original)
+++ vic/branches/mpeg4/video/yuv_convert.cpp	Mon Apr 13 06:00:36 2009
@@ -41,12 +41,7 @@
 #include <string.h>
 #include <stdio.h>
 
-#if defined(_WIN32) || defined(_WIN64) 
-#define BYTE_ORDER 1
-#define BIG_ENDIAN 0
-#else
-#include <endian.h>
-#endif
+#include "bsd-endian.h"
 
 //
 //  planarYUYV422_to_planarYUYV422



More information about the Sumover-dev mailing list