Updated to allow the versions of video4linux to existed independently of each other. Ubuntu 11.04 oalyn has V4L2.

git-svn-id: http://svn.zoneminder.com/svn/zm/trunk@3302 e3e1d417-86f3-4887-817a-d78f3d33393f
This commit is contained in:
stan 2011-02-15 21:59:06 +00:00
parent beffdab035
commit 8048c1c355
48 changed files with 339 additions and 165 deletions

View File

@ -216,6 +216,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -223,7 +226,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -134,11 +134,11 @@
/* Define to 1 if you have the <limits.h> header file. */
#undef HAVE_LIMITS_H
/* Define to 1 if you have the <linux/videodev2.h> header file. */
#undef HAVE_LINUX_VIDEODEV2_H
/* Define to 1 if you have the <linux/videodevX2.h> header file. */
#undef HAVE_LINUX_VIDEODEVX2_H
/* Define to 1 if you have the <linux/videodev.h> header file. */
#undef HAVE_LINUX_VIDEODEV_H
/* Define to 1 if you have the <linux/videodevX.h> header file. */
#undef HAVE_LINUX_VIDEODEVX_H
/* Define to 1 if your system has a GNU libc compatible `malloc' function, and
to 0 otherwise. */

31
configure vendored
View File

@ -607,7 +607,9 @@ LIBDIR
BINDIR
PERL
ZM_PCRE
ZM_V4L2
ZM_HAS_V4L
ZM_HAS_V4L2
ZM_HAS_V4L1
ALLOCA
PATH_NETPBM
OPT_NETPBM
@ -3210,7 +3212,7 @@ $as_echo "$as_me: WARNING: You can call configure with the --enable-mmap=<yes|no
fi
if test "$ENABLE_MMAP" = "yes"; then
if test "$ENABLE_MMAP" == "yes"; then
$as_echo "#define ZM_MEM_MAPPED 1" >>confdefs.h
@ -6413,7 +6415,7 @@ $as_echo "no" >&6; }
fi
if test "$OPT_NETPBM" = "yes"; then
if test "$OPT_NETPBM" == "yes"; then
PATH_NETPBM=`dirname $PATH_NETPBM`
fi
@ -7562,9 +7564,11 @@ if test "x$ac_cv_header_linux_videodev_h" = x""yes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LINUX_VIDEODEV_H 1
_ACEOF
ZM_HAS_V4L1=1
else
as_fn_error "zm requires Video4Linux to be installed" "$LINENO" 5
ZM_HAS_V4L1=0
fi
done
@ -7576,15 +7580,24 @@ if test "x$ac_cv_header_linux_videodev2_h" = x""yes; then :
cat >>confdefs.h <<_ACEOF
#define HAVE_LINUX_VIDEODEV2_H 1
_ACEOF
ZM_V4L2="1"
ZM_HAS_V4L2=1
else
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: zm requires Video4Linux2 to be installed for V4L2 support" >&5
$as_echo "$as_me: WARNING: zm requires Video4Linux2 to be installed for V4L2 support" >&2;}
ZM_HAS_V4L2=0
fi
done
if test "$ZM_HAS_V4L1" == "1" || test "$ZM_HAS_V4L2" == "1"; then
ZM_HAS_V4L=1
else
ZM_HAS_V4L=0
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: zm requires Video4Linux or Video4Linux2 to be installed for analog or USB camera support" >&5
$as_echo "$as_me: WARNING: zm requires Video4Linux or Video4Linux2 to be installed for analog or USB camera support" >&2;}
fi
for ac_header in jpeglib.h
do :
ac_fn_cxx_check_header_mongrel "$LINENO" "jpeglib.h" "ac_cv_header_jpeglib_h" "$ac_includes_default"
@ -7735,7 +7748,7 @@ fi
done
if test "$ENABLE_MMAP" = "yes"; then
if test "$ENABLE_MMAP" == "yes"; then
for ac_header in sys/mman.h
do :
ac_fn_cxx_check_header_mongrel "$LINENO" "sys/mman.h" "ac_cv_header_sys_mman_h" "$ac_includes_default"
@ -8507,7 +8520,7 @@ else
{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: could not find perl" >&5
$as_echo "$as_me: WARNING: could not find perl" >&2;}
fi
if test "$ENABLE_MMAP" = "yes"; then
if test "$ENABLE_MMAP" == "yes"; then
ac_perl_modules="Sys::Mmap"
# Make sure we have perl
if test -z "$PERL"; then

View File

@ -203,7 +203,7 @@ AC_ARG_ENABLE(mmap,
filesystem however this will not normally be the case.
e.g. --enable-mmap=yes or --disable-mmap])
)
if test "$ENABLE_MMAP" = "yes"; then
if test "$ENABLE_MMAP" == "yes"; then
AC_DEFINE(ZM_MEM_MAPPED,1,"Whether to use mapped rather than shared memory")
else
AC_DEFINE(ZM_MEM_MAPPED,0,"Whether to use mapped rather than shared memory")
@ -253,7 +253,7 @@ AC_CHECK_PROG(OPT_FFMPEG,ffmpeg,yes,no)
AC_PATH_PROG(PATH_FFMPEG,ffmpeg)
AC_CHECK_PROG(OPT_NETPBM,pnmscale,yes,no)
AC_PATH_PROG(PATH_NETPBM,pnmscale)
if test "$OPT_NETPBM" = "yes"; then
if test "$OPT_NETPBM" == "yes"; then
PATH_NETPBM=`dirname $PATH_NETPBM`
fi
@ -285,8 +285,14 @@ AC_CHECK_LIB(z,compress,,)
AC_FUNC_ALLOCA
AC_HEADER_STDC
AC_CHECK_HEADERS([fcntl.h limits.h memory.h netdb.h netinet/in.h stddef.h stdlib.h string.h strings.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h unistd.h values.h])
AC_CHECK_HEADERS(linux/videodev.h,,AC_MSG_ERROR(zm requires Video4Linux to be installed),)
AC_CHECK_HEADERS(linux/videodev2.h,AC_SUBST(ZM_V4L2,"1"),AC_MSG_WARN(zm requires Video4Linux2 to be installed for V4L2 support),)
AC_CHECK_HEADERS(linux/videodev.h,AC_SUBST(ZM_HAS_V4L1,1),AC_SUBST(ZM_HAS_V4L1,0),)
AC_CHECK_HEADERS(linux/videodev2.h,AC_SUBST(ZM_HAS_V4L2,1),AC_SUBST(ZM_HAS_V4L2,0),)
if test "$ZM_HAS_V4L1" == "1" || test "$ZM_HAS_V4L2" == "1"; then
AC_SUBST(ZM_HAS_V4L,1)
else
AC_SUBST(ZM_HAS_V4L,0)
AC_MSG_WARN(zm requires Video4Linux or Video4Linux2 to be installed for analog or USB camera support)
fi
AC_CHECK_HEADERS(jpeglib.h,,AC_MSG_ERROR(zm requires libjpeg headers to be installed),)
AC_CHECK_HEADERS(mysql/mysql.h,,AC_MSG_ERROR(zm requires MySQL headers - check that MySQL development packages are installed),)
AC_CHECK_HEADERS(libavutil/avutil.h,,,)
@ -299,7 +305,7 @@ AC_CHECK_HEADERS(libswscale/swscale.h,,,)
AC_CHECK_HEADERS(ffmpeg/swscale.h,,,)
AC_CHECK_HEADERS(pcre/pcre.h,AC_SUBST(ZM_PCRE,"1"),,)
AC_CHECK_HEADERS(pcre.h,AC_SUBST(ZM_PCRE,"1"),,)
if test "$ENABLE_MMAP" = "yes"; then
if test "$ENABLE_MMAP" == "yes"; then
AC_CHECK_HEADERS(sys/mman.h,,,)
AC_CHECK_HEADERS(fcntl.h,,,)
else
@ -331,7 +337,7 @@ AC_PROG_PERL_MODULES(Time::HiRes,,AC_MSG_ERROR(zm requires Time::HiRes))
AC_PROG_PERL_MODULES(Date::Manip,,AC_MSG_ERROR(zm requires Date::Manip))
AC_PROG_PERL_MODULES(LWP::UserAgent,,AC_MSG_ERROR(zm requires LWP::UserAgent))
AC_PROG_PERL_MODULES(PHP::Serialization,,AC_MSG_ERROR(zm requires PHP::Serialization))
if test "$ENABLE_MMAP" = "yes"; then
if test "$ENABLE_MMAP" == "yes"; then
AC_PROG_PERL_MODULES(Sys::Mmap,,AC_MSG_ERROR(zm requires Sys::Mmap for mapped memory))
fi

View File

@ -128,6 +128,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -135,7 +138,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -202,6 +202,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -209,7 +212,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -192,6 +192,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -199,7 +202,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -25,6 +25,14 @@
#define ZM_CONFIG "@ZM_CONFIG@" // Path to config file
#define ZM_VERSION "@VERSION@" // ZoneMinder Version
#define ZM_HAS_V4L1 @ZM_HAS_V4L1@
#define ZM_HAS_V4L2 @ZM_HAS_V4L2@
#define ZM_HAS_V4L @ZM_HAS_V4L@
#ifdef HAVE_LIBAVFORMAT
#define ZM_HAS_FFMPEG 1
#endif // HAVE_LIBAVFORMAT
#define ZM_MAX_IMAGE_WIDTH 2048 // The largest image we imagine ever handling
#define ZM_MAX_IMAGE_HEIGHT 1536 // The largest image we imagine ever handling
#define ZM_MAX_IMAGE_COLOURS 3 // The largest image we imagine ever handling

View File

@ -17,6 +17,10 @@
// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//
#include "zm.h"
#if ZM_HAS_V4L
#include "zm_local_camera.h"
#include <sys/types.h>
@ -40,7 +44,7 @@ static int vidioctl( int fd, int request, void *arg )
static PixelFormat getFfPixFormatFromV4lPalette( int v4l_version, int palette )
{
PixelFormat pixFormat = PIX_FMT_NONE;
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
if ( v4l_version == 2 )
{
switch( palette )
@ -165,8 +169,8 @@ static PixelFormat getFfPixFormatFromV4lPalette( int v4l_version, int palette )
}
}
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( v4l_version == 1 )
{
switch( palette )
@ -231,6 +235,7 @@ static PixelFormat getFfPixFormatFromV4lPalette( int v4l_version, int palette )
}
}
}
#endif // ZM_HAS_V4L1
return( pixFormat );
}
#endif // HAVE_LIBSWSCALE
@ -243,10 +248,12 @@ int LocalCamera::standards[VIDEO_MAX_FRAME];
int LocalCamera::vid_fd = -1;
int LocalCamera::v4l_version = 0;
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
LocalCamera::V4L2Data LocalCamera::v4l2_data;
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
LocalCamera::V4L1Data LocalCamera::v4l1_data;
#endif // ZM_HAS_V4L1
#if HAVE_LIBSWSCALE
AVFrame **LocalCamera::capturePictures = 0;
@ -262,11 +269,11 @@ short *LocalCamera::b_u_table;
LocalCamera *LocalCamera::last_camera = NULL;
LocalCamera::LocalCamera( int p_id, const std::string &p_device, int p_channel, int p_standard, const std::string &p_method, int p_width, int p_height, int p_palette, int p_brightness, int p_contrast, int p_hue, int p_colour, bool p_capture ) :
#ifdef ZM_V4L2
Camera( p_id, LOCAL_SRC, p_width, p_height, ((p_palette==VIDEO_PALETTE_GREY||p_palette==V4L2_PIX_FMT_GREY)?1:3), p_brightness, p_contrast, p_hue, p_colour, p_capture ),
#else // ZM_V4L2
#if ZM_HAS_V4L2
Camera( p_id, LOCAL_SRC, p_width, p_height, (p_palette==V4L2_PIX_FMT_GREY?1:3), p_brightness, p_contrast, p_hue, p_colour, p_capture ),
#elif ZM_HAS_V4L1
Camera( p_id, LOCAL_SRC, p_width, p_height, (p_palette==VIDEO_PALETTE_GREY?1:3), p_brightness, p_contrast, p_hue, p_colour, p_capture ),
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
device( p_device ),
channel( p_channel ),
standard( p_standard ),
@ -282,9 +289,7 @@ LocalCamera::LocalCamera( int p_id, const std::string &p_device, int p_channel,
if ( device_prime )
{
v4l_version = (p_method=="v4l2"?2:1);
#ifdef ZM_V4L2
Debug( 2, "V4L2 support enabled, using V4L%d api", v4l_version );
#endif // ZM_V4L2
Debug( 2, "V4L support enabled, using V4L%d api", v4l_version );
}
if ( !last_camera || channel != last_camera->channel )
@ -351,7 +356,7 @@ void LocalCamera::Initialise()
if ( (vid_fd = open( device.c_str(), O_RDWR, 0 )) < 0 )
Fatal( "Failed to open video device %s: %s", device.c_str(), strerror(errno) );
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
Debug( 2, "V4L2 support enabled, using V4L%d api", v4l_version );
if ( v4l_version == 2 )
{
@ -523,8 +528,8 @@ void LocalCamera::Initialise()
Hue(hue);
Colour(colour);
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( v4l_version == 1 )
{
Debug( 3, "Configuring picture attributes" );
@ -686,6 +691,7 @@ void LocalCamera::Initialise()
Debug( 4, "New Cl:%d", vid_pic.colour );
Debug( 4, "New Cn:%d", vid_pic.contrast );
}
#endif // ZM_HAS_V4L1
Debug( 3, "Setting up static colour tables" );
@ -728,7 +734,7 @@ void LocalCamera::Initialise()
void LocalCamera::Terminate()
{
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
if ( v4l_version == 2 )
{
Debug( 3, "Terminating video stream" );
@ -743,7 +749,8 @@ void LocalCamera::Terminate()
Error( "Failed to munmap buffer %d: %s", i, strerror(errno) );
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( v4l_version == 1 )
{
Debug( 3, "Unmapping video buffers" );
@ -752,6 +759,7 @@ void LocalCamera::Terminate()
delete[] v4l1_data.buffers;
}
#endif // ZM_HAS_V4L1
close( vid_fd );
}
@ -792,7 +800,7 @@ bool LocalCamera::GetCurrentSettings( const char *device, char *output, int vers
else
sprintf( output+strlen(output), "d:%s|", queryDevice );
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
if ( version == 2 )
{
struct v4l2_capability vid_cap;
@ -1066,8 +1074,9 @@ bool LocalCamera::GetCurrentSettings( const char *device, char *output, int vers
if ( !verbose )
output[strlen(output)-1] = '\n';
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( version == 1 )
{
struct video_capability vid_cap;
if ( ioctl( vid_fd, VIDIOCGCAP, &vid_cap ) < 0 )
@ -1240,6 +1249,7 @@ bool LocalCamera::GetCurrentSettings( const char *device, char *output, int vers
if ( !verbose )
output[strlen(output)-1] = '\n';
}
#endif // ZM_HAS_V4L1
close( vid_fd );
if ( device )
break;
@ -1250,7 +1260,7 @@ bool LocalCamera::GetCurrentSettings( const char *device, char *output, int vers
int LocalCamera::Brightness( int p_brightness )
{
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
if ( v4l_version == 2 )
{
struct v4l2_control vid_control;
@ -1283,8 +1293,8 @@ int LocalCamera::Brightness( int p_brightness )
}
return( vid_control.value );
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( v4l_version == 1 )
{
struct video_picture vid_pic;
@ -1305,12 +1315,13 @@ int LocalCamera::Brightness( int p_brightness )
}
return( vid_pic.brightness );
}
#endif // ZM_HAS_V4L1
return( -1 );
}
int LocalCamera::Hue( int p_hue )
{
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
if ( v4l_version == 2 )
{
struct v4l2_control vid_control;
@ -1340,8 +1351,8 @@ int LocalCamera::Hue( int p_hue )
}
return( vid_control.value );
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( v4l_version == 1 )
{
struct video_picture vid_pic;
@ -1362,12 +1373,13 @@ int LocalCamera::Hue( int p_hue )
}
return( vid_pic.hue );
}
#endif // ZM_HAS_V4L1
return( -1 );
}
int LocalCamera::Colour( int p_colour )
{
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
if ( v4l_version == 2 )
{
struct v4l2_control vid_control;
@ -1397,8 +1409,8 @@ int LocalCamera::Colour( int p_colour )
}
return( vid_control.value );
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( v4l_version == 1 )
{
struct video_picture vid_pic;
@ -1419,12 +1431,13 @@ int LocalCamera::Colour( int p_colour )
}
return( vid_pic.colour );
}
#endif // ZM_HAS_V4L1
return( -1 );
}
int LocalCamera::Contrast( int p_contrast )
{
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
if ( v4l_version == 2 )
{
struct v4l2_control vid_control;
@ -1454,8 +1467,8 @@ int LocalCamera::Contrast( int p_contrast )
}
return( vid_control.value );
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( v4l_version == 1 )
{
struct video_picture vid_pic;
@ -1476,6 +1489,7 @@ int LocalCamera::Contrast( int p_contrast )
}
return( vid_pic.contrast );
}
#endif // ZM_HAS_V4L1
return( -1 );
}
@ -1484,7 +1498,7 @@ int LocalCamera::PrimeCapture()
Initialise();
Debug( 2, "Priming capture" );
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
if ( v4l_version == 2 )
{
Debug( 3, "Queueing buffers" );
@ -1509,8 +1523,8 @@ int LocalCamera::PrimeCapture()
if ( vidioctl( vid_fd, VIDIOC_STREAMON, &type ) < 0 )
Fatal( "Failed to start capture stream: %s", strerror(errno) );
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( v4l_version == 1 )
{
for ( int frame = 0; frame < v4l1_data.frames.frames; frame++ )
@ -1523,6 +1537,7 @@ int LocalCamera::PrimeCapture()
}
}
}
#endif // ZM_HAS_V4L1
return( 0 );
}
@ -1549,7 +1564,7 @@ int LocalCamera::Capture( Image &image )
if ( channel_prime )
{
int capture_frame = -1;
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
if ( v4l_version == 2 )
{
static struct v4l2_buffer vid_buf;
@ -1591,8 +1606,8 @@ int LocalCamera::Capture( Image &image )
captureWidth = v4l2_data.fmt.fmt.pix.width;
captureHeight = v4l2_data.fmt.fmt.pix.height;
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( v4l_version == 1 )
{
Debug( 3, "Capturing %d frames", captures_per_frame );
@ -1620,6 +1635,7 @@ int LocalCamera::Capture( Image &image )
buffer = v4l1_data.bufptr+v4l1_data.frames.offsets[capture_frame];
}
#endif // ZM_HAS_V4L1
#if HAVE_LIBSWSCALE
Debug( 3, "Doing format conversion" );
@ -1650,10 +1666,12 @@ int LocalCamera::Capture( Image &image )
static unsigned char temp_buffer[ZM_MAX_IMAGE_SIZE];
switch( palette )
{
#if ZM_HAS_V4L1
case VIDEO_PALETTE_YUV420P :
#ifdef ZM_V4L2
#endif // ZM_HAS_V4L1
#if ZM_HAS_V4L2
case V4L2_PIX_FMT_YUV420 :
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
{
static unsigned char y_plane[ZM_MAX_IMAGE_DIM];
static char u_plane[ZM_MAX_IMAGE_DIM];
@ -1725,10 +1743,12 @@ int LocalCamera::Capture( Image &image )
buffer = temp_buffer;
break;
}
#if ZM_HAS_V4L1
case VIDEO_PALETTE_YUV422P :
#ifdef ZM_V4L2
#endif // ZM_HAS_V4L1
#if ZM_HAS_V4L2
case V4L2_PIX_FMT_YUV422P :
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
{
static unsigned char y_plane[ZM_MAX_IMAGE_DIM];
static char u_plane[ZM_MAX_IMAGE_DIM];
@ -1785,11 +1805,13 @@ int LocalCamera::Capture( Image &image )
buffer = temp_buffer;
break;
}
#if ZM_HAS_V4L1
case VIDEO_PALETTE_YUYV :
case VIDEO_PALETTE_YUV422 :
#ifdef ZM_V4L2
#endif // ZM_HAS_V4L1
#if ZM_HAS_V4L2
case V4L2_PIX_FMT_YUYV :
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
{
int size = width*height*2;
unsigned char *s_ptr = buffer;
@ -1823,10 +1845,12 @@ int LocalCamera::Capture( Image &image )
buffer = temp_buffer;
break;
}
#if ZM_HAS_V4L1
case VIDEO_PALETTE_RGB555 :
#ifdef ZM_V4L2
#endif // ZM_HAS_V4L1
#if ZM_HAS_V4L2
case V4L2_PIX_FMT_RGB555 :
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
{
int size = width*height*2;
unsigned char r,g,b;
@ -1846,10 +1870,12 @@ int LocalCamera::Capture( Image &image )
buffer = temp_buffer;
break;
}
#if ZM_HAS_V4L1
case VIDEO_PALETTE_RGB565 :
#ifdef ZM_V4L2
#endif // ZM_HAS_V4L1
#if ZM_HAS_V4L2
case V4L2_PIX_FMT_RGB565 :
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
{
int size = width*height*2;
unsigned char r,g,b;
@ -1887,7 +1913,7 @@ int LocalCamera::Capture( Image &image )
}
break;
}
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
case V4L2_PIX_FMT_BGR24 :
{
int size = width*height*3;
@ -1903,11 +1929,13 @@ int LocalCamera::Capture( Image &image )
buffer = temp_buffer;
break;
}
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
case VIDEO_PALETTE_GREY :
#ifdef ZM_V4L2
#endif // ZM_HAS_V4L1
#if ZM_HAS_V4L2
case V4L2_PIX_FMT_GREY :
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
{
//int size = width*height;
//for ( int i = 0; i < size; i++ )
@ -1938,7 +1966,7 @@ int LocalCamera::PostCapture()
// Requeue the buffer unless we need to switch or are a duplicate camera on a channel
if ( channel_count == 1 || channel_prime )
{
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
if ( v4l_version == 2 )
{
if ( channel_count > 1 )
@ -1965,8 +1993,8 @@ int LocalCamera::PostCapture()
return( -1 );
}
}
else
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
if ( v4l_version == 1 )
{
if ( channel_count > 1 )
@ -2000,7 +2028,9 @@ int LocalCamera::PostCapture()
}
v4l1_data.active_frame = (v4l1_data.active_frame+1)%v4l1_data.frames.frames;
}
#endif // ZM_HAS_V4L1
}
return( 0 );
}
#endif // ZM_HAS_V4L

View File

@ -23,15 +23,16 @@
#include "zm.h"
#include "zm_camera.h"
#include "zm_ffmpeg.h"
#if ZM_HAS_V4L
#ifdef HAVE_LINUX_VIDEODEV2_H
#include <linux/videodev2.h>
#define ZM_V4L2
#endif // HAVE_LINUX_VIDEODEV2_H
#ifdef HAVE_LINUX_VIDEODEV_H
#include <linux/videodev.h>
#endif // HAVE_LINUX_VIDEODEV_H
#ifdef HAVE_LINUX_VIDEODEV2_H
#include <linux/videodev2.h>
#endif // HAVE_LINUX_VIDEODEV2_H
#include "zm_ffmpeg.h"
//
// Class representing 'local' cameras, i.e. those which are
@ -41,7 +42,7 @@
class LocalCamera : public Camera
{
protected:
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
struct V4L2MappedBuffer
{
void *start;
@ -57,8 +58,9 @@ protected:
V4L2MappedBuffer *buffers;
v4l2_buffer *bufptr;
};
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
struct V4L1Data
{
int active_frame;
@ -66,6 +68,7 @@ protected:
video_mmap *buffers;
unsigned char *bufptr;
};
#endif // ZM_HAS_V4L1
protected:
std::string device;
@ -87,10 +90,12 @@ protected:
static int v4l_version;
#ifdef ZM_V4L2
#if ZM_HAS_V4L2
static V4L2Data v4l2_data;
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2
#if ZM_HAS_V4L1
static V4L1Data v4l1_data;
#endif // ZM_HAS_V4L1
#if HAVE_LIBSWSCALE
PixelFormat imagePixFormat;
@ -133,4 +138,6 @@ public:
static bool GetCurrentSettings( const char *device, char *output, int version, bool verbose );
};
#endif // ZM_HAS_V4L
#endif // ZM_LOCAL_CAMERA_H

View File

@ -28,7 +28,9 @@
#include "zm_mpeg.h"
#include "zm_signal.h"
#include "zm_monitor.h"
#if ZM_HAS_V4L
#include "zm_local_camera.h"
#endif // ZM_HAS_V4L
#include "zm_remote_camera.h"
#include "zm_remote_camera_http.h"
#if HAVE_LIBAVFORMAT
@ -1725,6 +1727,7 @@ void Monitor::ReloadLinkedMonitors( const char *p_linked_monitors )
}
}
#if ZM_HAS_V4L
int Monitor::LoadLocalMonitors( const char *device, Monitor **&monitors, Purpose purpose )
{
static char sql[ZM_SQL_MED_BUFSIZ];
@ -1863,6 +1866,7 @@ int Monitor::LoadLocalMonitors( const char *device, Monitor **&monitors, Purpose
return( n_monitors );
}
#endif // ZM_HAS_V4L
int Monitor::LoadRemoteMonitors( const char *protocol, const char *host, const char *port, const char *path, Monitor **&monitors, Purpose purpose )
{
@ -2362,6 +2366,7 @@ Monitor *Monitor::Load( int id, bool load_zones, Purpose purpose )
Camera *camera = 0;
if ( type == "Local" )
{
#if ZM_HAS_V4L
camera = new LocalCamera(
id,
device.c_str(),
@ -2377,6 +2382,9 @@ Monitor *Monitor::Load( int id, bool load_zones, Purpose purpose )
colour,
purpose==CAPTURE
);
#else // ZM_HAS_V4L
Fatal( "You must have video4linux libraries and headers installed to use local analog or USB cameras for monitor %d", id );
#endif // ZM_HAS_V4L
}
else if ( type == "Remote" )
{
@ -2440,9 +2448,9 @@ Monitor *Monitor::Load( int id, bool load_zones, Purpose purpose )
purpose==CAPTURE
);
}
#if HAVE_LIBAVFORMAT
else if ( type == "Ffmpeg" )
{
#if HAVE_LIBAVFORMAT
camera = new FfmpegCamera(
id,
path.c_str(),
@ -2455,8 +2463,10 @@ Monitor *Monitor::Load( int id, bool load_zones, Purpose purpose )
colour,
purpose==CAPTURE
);
}
#else // HAVE_LIBAVFORMAT
Fatal( "You must have ffmpeg libraries installed to use ffmpeg cameras for monitor %d", id );
#endif // HAVE_LIBAVFORMAT
}
else
{
Fatal( "Bogus monitor type '%s' for monitor %d", type.c_str(), id );
@ -2843,13 +2853,16 @@ bool Monitor::DumpSettings( char *output, bool verbose )
sprintf( output+strlen(output), "Id : %d\n", id );
sprintf( output+strlen(output), "Name : %s\n", name );
sprintf( output+strlen(output), "Type : %s\n", camera->IsLocal()?"Local":(camera->IsRemote()?"Remote":"File") );
#if ZM_HAS_V4L
if ( camera->IsLocal() )
{
sprintf( output+strlen(output), "Device : %s\n", ((LocalCamera *)camera)->Device().c_str() );
sprintf( output+strlen(output), "Channel : %d\n", ((LocalCamera *)camera)->Channel() );
sprintf( output+strlen(output), "Standard : %d\n", ((LocalCamera *)camera)->Standard() );
}
else if ( camera->IsRemote() )
else
#endif // ZM_HAS_V4L
if ( camera->IsRemote() )
{
sprintf( output+strlen(output), "Protocol : %s\n", ((RemoteCamera *)camera)->Protocol().c_str() );
sprintf( output+strlen(output), "Host : %s\n", ((RemoteCamera *)camera)->Host().c_str() );
@ -2868,10 +2881,12 @@ bool Monitor::DumpSettings( char *output, bool verbose )
#endif // HAVE_LIBAVFORMAT
sprintf( output+strlen(output), "Width : %d\n", camera->Width() );
sprintf( output+strlen(output), "Height : %d\n", camera->Height() );
#if ZM_HAS_V4L
if ( camera->IsLocal() )
{
sprintf( output+strlen(output), "Palette : %d\n", ((LocalCamera *)camera)->Palette() );
}
#endif // ZM_HAS_V4L
sprintf( output+strlen(output), "Colours : %d\n", camera->Colours() );
sprintf( output+strlen(output), "Event Prefix : %s\n", event_prefix );
sprintf( output+strlen(output), "Label Format : %s\n", label_format );

View File

@ -355,7 +355,9 @@ public:
bool DumpSettings( char *output, bool verbose );
void DumpZoneImage( const char *zone_string=0 );
#if ZM_HAS_V4L
static int LoadLocalMonitors( const char *device, Monitor **&monitors, Purpose purpose );
#endif // ZM_HAS_V4L
static int LoadRemoteMonitors( const char *protocol, const char *host, const char*port, const char*path, Monitor **&monitors, Purpose purpose );
static int LoadFileMonitors( const char *file, Monitor **&monitors, Purpose purpose );
#if HAVE_LIBAVFORMAT

View File

@ -154,11 +154,14 @@ int main( int argc, char *argv[] )
Monitor **monitors = 0;
int n_monitors = 0;
#if ZM_HAS_V4L
if ( device[0] )
{
n_monitors = Monitor::LoadLocalMonitors( device, monitors, Monitor::CAPTURE );
}
else if ( host[0] )
else
#endif // ZM_HAS_V4L
if ( host[0] )
{
if ( !port )
port = "80";

View File

@ -190,11 +190,13 @@ int main( int argc, char *argv[] )
char *username = 0;
char *password = 0;
char *auth = 0;
#ifdef ZM_V4L2
#if ZM_HAS_V4L
#if ZM_HAS_V4L2
int v4lVersion = 2;
#else // ZM_V4L2
#elif ZM_HAS_V4L1
int v4lVersion = 1;
#endif // ZM_V4L2
#endif // ZM_HAS_V4L2/1
#endif // ZM_HAS_V4L
while (1)
{
int option_index = 0;
@ -306,9 +308,11 @@ int main( int argc, char *argv[] )
case 'A':
auth = optarg;
break;
#if ZM_HAS_V4L
case 'V':
v4lVersion = (atoi(optarg)==1)?1:2;
break;
#endif // ZM_HAS_V4L
case 'h':
Usage( 0 );
break;
@ -658,10 +662,15 @@ int main( int argc, char *argv[] )
{
if ( function & ZMU_QUERY )
{
#if ZM_HAS_V4L
char vidString[0x10000] = "";
bool ok = LocalCamera::GetCurrentSettings( device, vidString, v4lVersion, verbose );
printf( "%s", vidString );
exit( ok?0:-1 );
#else // ZM_HAS_V4L
fprintf( stderr, "Error, video4linux is required for device querying\n" );
exit( -1 );
#endif // ZM_HAS_V4L
}
if ( function & ZMU_LIST )

View File

@ -192,6 +192,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -199,7 +202,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -42,9 +42,11 @@ fclose( $cfg );
define( "ZMU_PATH", ZM_PATH_BIN."/zmu" ); // Local path to the ZoneMinder Utility
//
// If setup supports Video 4 Linux v2
// If setup supports Video 4 Linux v2 and/or v1
//
define( "ZM_V4L2", "@ZM_V4L2@" ); // V4L2 support enabled
define( "ZM_HAS_V4L2", "@ZM_HAS_V4L2@" ); // V4L2 support enabled
define( "ZM_HAS_V4L1", "@ZM_HAS_V4L1@" ); // V4L1 support enabled
define( "ZM_HAS_V4L", "@ZM_HAS_V4L@" ); // V4L support enabled
//
// If PCRE dev libraries are installed

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -167,6 +167,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -174,7 +177,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -192,6 +192,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -199,7 +202,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -192,6 +192,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -199,7 +202,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -55,7 +55,7 @@ else
'Function' => "Monitor",
'Enabled' => true,
'LinkedMonitors' => "",
'Type' => "Local",
'Type' => "",
'Device' => "/dev/video",
'Channel' => "0",
'Format' => "",
@ -157,7 +157,7 @@ if ( !empty($_REQUEST['probe']) )
$newMonitor[$name] = $value;
}
}
if ( $newMonitor['Type'] == 'Local' )
if ( ZM_HAS_V4L && $newMonitor['Type'] == 'Local' )
{
$newMonitor['Palette'] = fourCC( substr($newMonitor['Palette'],0,1), substr($newMonitor['Palette'],1,1), substr($newMonitor['Palette'],2,1), substr($newMonitor['Palette'],3,1) );
if ( $newMonitor['Format'] == 'PAL' )
@ -175,13 +175,17 @@ $sourceTypes = array(
'File' => $SLANG['File'],
'Ffmpeg' => $SLANG['Ffmpeg'],
);
if ( !ZM_HAS_V4L )
unset($sourceTypes['Local']);
$localMethods = array(
'v4l2' => "Video For Linux version 2",
'v4l1' => "Video For Linux version 1",
);
if ( !ZM_V4L2 )
if ( !ZM_HAS_V4L2 )
unset($localMethods['v4l2']);
if ( !ZM_HAS_V4L1 )
unset($localMethods['v4l1']);
$remoteProtocols = array(
"http" => "HTTP",
@ -205,7 +209,9 @@ if ( !ZM_PCRE )
// Currently unsupported
unset($httpMethods['jpegTags']);
$v4l1DeviceFormats = array(
if ( ZM_HAS_V4L1 )
{
$v4l1DeviceFormats = array(
$SLANG['Undefined'] => '',
"PAL" => 0,
"NTSC" => 1,
@ -215,14 +221,14 @@ $v4l1DeviceFormats = array(
"FMT5" => 5,
"FMT6" => 6,
"FMT7" => 7
);
);
$v4l1MaxChannels = 15;
$v4l1DeviceChannels = array();
for ( $i = 0; $i <= $v4l1MaxChannels; $i++ )
$v4l1MaxChannels = 15;
$v4l1DeviceChannels = array();
for ( $i = 0; $i <= $v4l1MaxChannels; $i++ )
$v4l1DeviceChannels["$i"] = $i;
$v4l1LocalPalettes = array(
$v4l1LocalPalettes = array(
$SLANG['Undefined'] => '',
$SLANG['Grey'] => 1,
"RGB24" => 4,
@ -232,9 +238,10 @@ $v4l1LocalPalettes = array(
"YUYV" => 8,
"YUV422P" => 13,
"YUV420P" => 15
);
);
}
if ( ZM_V4L2 )
if ( ZM_HAS_V4L2 )
{
$v4l2DeviceFormats = array(
$SLANG['Undefined'] => '',
@ -422,7 +429,7 @@ if ( $tab != 'general' )
}
}
}
if ( $tab != 'source' || $newMonitor['Type'] != 'Local' )
if ( ZM_HAS_V4L && ($tab != 'source' || $newMonitor['Type'] != 'Local') )
{
?>
<input type="hidden" name="newMonitor[Device]" value="<?= validHtmlStr($newMonitor['Device']) ?>"/>
@ -513,7 +520,7 @@ if ( $tab != 'misc' )
<input type="hidden" name="newMonitor[WebColour]" value="<?= validHtmlStr($newMonitor['WebColour']) ?>"/>
<?php
}
if ( $tab != 'misc' || $newMonitor['Type'] != 'Local' )
if ( ZM_HAS_V4L && ($tab != 'misc' || $newMonitor['Type'] != 'Local') )
{
?>
<input type="hidden" name="newMonitor[SignalCheckColour]" value="<?= validHtmlStr($newMonitor['SignalCheckColour']) ?>"/>
@ -600,18 +607,18 @@ switch ( $tab )
// Set up initial palette value
if ( $newMonitor['Palette'] == '' )
{
if ( $newMonitor['Type'] == 'Local' )
if ( ZM_HAS_V4L && $newMonitor['Type'] == 'Local' )
$newMonitor['Palette'] = 4;
else
$newMonitor['Palette'] = 3;
}
if ( $newMonitor['Type'] == "Local" )
if ( ZM_HAS_V4L && $newMonitor['Type'] == "Local" )
{
?>
<tr><td><?= $SLANG['DevicePath'] ?></td><td><input type="text" name="newMonitor[Device]" value="<?= validHtmlStr($newMonitor['Device']) ?>" size="24"/></td></tr>
<tr><td><?= $SLANG['CaptureMethod'] ?></td><td><?= buildSelect( "newMonitor[Method]", $localMethods, "submitTab( '$tab' )" ); ?></td></tr>
<?php
if ( !ZM_V4L2 || $newMonitor['Method'] == 'v4l1' )
if ( ZM_HAS_V4L1 || $newMonitor['Method'] == 'v4l1' )
{
?>
<tr><td><?= $SLANG['DeviceChannel'] ?></td><td><select name="newMonitor[Channel]"><?php foreach ( $v4l1DeviceChannels as $name => $value ) { ?><option value="<?= $value ?>"<?php if ( $value == $newMonitor['Channel'] ) { ?> selected="selected"<?php } ?>><?= $name ?></option><?php } ?></select></td></tr>
@ -619,7 +626,7 @@ switch ( $tab )
<tr><td><?= $SLANG['CapturePalette'] ?></td><td><select name="newMonitor[Palette]"><?php foreach ( $v4l1LocalPalettes as $name => $value ) { ?><option value="<?= $value ?>"<?php if ( $value == $newMonitor['Palette'] ) { ?> selected="selected"<?php } ?>><?= $name ?></option><?php } ?></select></td></tr>
<?php
}
else
else if ( ZM_HAS_V4L2 || $newMonitor['Method'] == 'v4l2' )
{
?>
<tr><td><?= $SLANG['DeviceChannel'] ?></td><td><select name="newMonitor[Channel]"><?php foreach ( $v4l2DeviceChannels as $name => $value ) { ?><option value="<?= $value ?>"<?php if ( $value == $newMonitor['Channel'] ) { ?> selected="selected"<?php } ?>><?= $name ?></option><?php } ?></select></td></tr>
@ -741,7 +748,7 @@ switch ( $tab )
<tr><td><?= $SLANG['DefaultRate'] ?></td><td><?= buildSelect( "newMonitor[DefaultRate]", $rates ); ?></td></tr>
<tr><td><?= $SLANG['DefaultScale'] ?></td><td><?= buildSelect( "newMonitor[DefaultScale]", $scales ); ?></td></tr>
<?php
if ( $newMonitor['Type'] == "Local" )
if ( ZM_HAS_V4L && $newMonitor['Type'] == "Local" )
{
?>
<tr><td><?= $SLANG['SignalCheckColour'] ?></td><td><input type="text" name="newMonitor[SignalCheckColour]" value="<?= validHtmlStr($newMonitor['SignalCheckColour']) ?>" size="10" onchange="$('SignalCheckSwatch').setStyle( 'backgroundColor', this.value )"/><span id="SignalCheckSwatch" class="swatch" style="background-color: <?= $newMonitor['SignalCheckColour'] ?>;">&nbsp;&nbsp;&nbsp;&nbsp;</span></td></tr>

View File

@ -192,6 +192,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -199,7 +202,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -192,6 +192,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -199,7 +202,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -192,6 +192,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -199,7 +202,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -192,6 +192,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -199,7 +202,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -167,6 +167,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -174,7 +177,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@

View File

@ -152,6 +152,9 @@ ZM_DB_HOST = @ZM_DB_HOST@
ZM_DB_NAME = @ZM_DB_NAME@
ZM_DB_PASS = @ZM_DB_PASS@
ZM_DB_USER = @ZM_DB_USER@
ZM_HAS_V4L = @ZM_HAS_V4L@
ZM_HAS_V4L1 = @ZM_HAS_V4L1@
ZM_HAS_V4L2 = @ZM_HAS_V4L2@
ZM_LOGDIR = @ZM_LOGDIR@
ZM_MYSQL_ENGINE = @ZM_MYSQL_ENGINE@
ZM_PCRE = @ZM_PCRE@
@ -159,7 +162,6 @@ ZM_PID = @ZM_PID@
ZM_RUNDIR = @ZM_RUNDIR@
ZM_SSL_LIB = @ZM_SSL_LIB@
ZM_TMPDIR = @ZM_TMPDIR@
ZM_V4L2 = @ZM_V4L2@
abs_builddir = @abs_builddir@
abs_srcdir = @abs_srcdir@
abs_top_builddir = @abs_top_builddir@