|
From: libvidcap c. m. <lib...@li...> - 2007-09-06 15:39:55
|
Revision: 4
http://libvidcap.svn.sourceforge.net/libvidcap/?rev=4&view=rev
Author: jpgrayson
Date: 2007-09-06 08:39:40 -0700 (Thu, 06 Sep 2007)
Log Message:
-----------
Add pkg-config file.
Fix installation directory for header files.
No longer use multibyte constants for fourcc values.
Add api function for mapping fourcc values to strings.
Modified Paths:
--------------
trunk/Makefile.am
trunk/configure.ac
trunk/examples/simplegrab.c
trunk/examples/vidcapTester/Grabber.cpp
trunk/include/vidcap/Makefile.am
trunk/include/vidcap/vidcap.h
trunk/src/Makefile.am
trunk/src/conv.h
trunk/src/directshow/DirectShowSource.cpp
trunk/src/sapi_qt.c
trunk/src/vidcap.c
Added Paths:
-----------
trunk/vidcap.pc.in
Modified: trunk/Makefile.am
===================================================================
--- trunk/Makefile.am 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/Makefile.am 2007-09-06 15:39:40 UTC (rev 4)
@@ -1,4 +1,7 @@
SUBDIRS = include src examples
+pkgconfigdir = $(libdir)/pkgconfig
+pkgconfig_DATA = vidcap.pc
+
dist-hook:
find $(distdir) -name ".svn" -type d -print0 | xargs -0 rm -rf
Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/configure.ac 2007-09-06 15:39:40 UTC (rev 4)
@@ -1,11 +1,11 @@
+dnl Copyright (C) 2007 Wimba, Inc.
+
AC_PREREQ(2.59)
dnl package version
-m4_define(VC_MAJOR, [0])
-m4_define(VC_MINOR, [1])
-m4_define(VC_MICRO, [0])
+m4_define(VIDCAP_VERSION, [0.1])
-AC_INIT([libvidcap], VC_MAJOR.VC_MINOR.VC_MICRO, [jpgrayson (at) gmail (dot) com])
+AC_INIT([libvidcap], VIDCAP_VERSION, [jpg...@gm...])
AC_CONFIG_SRCDIR([include/vidcap/vidcap.h])
AC_CONFIG_HEADERS([config.h])
AM_INIT_AUTOMAKE([foreign -Wall])
@@ -36,6 +36,14 @@
ACX_PTHREAD
+AC_CHECK_PROG(have_pkg_config, pkg-config, yes, no)
+
+if test x"$have_pkg_config" = "xno"; then
+ AC_MSG_ERROR(pkg-config is required to install this program)
+fi
+
+PKG_PROG_PKG_CONFIG
+
AC_CHECK_FUNCS(nanosleep gettimeofday snprintf Sleep)
AC_CHECK_HEADER(linux/videodev.h,
@@ -63,11 +71,15 @@
AM_CONDITIONAL(HAVE_QUICKTIME, test "x$have_quicktime" = "xyes")
AM_CONDITIONAL(HAVE_DIRECTSHOW, test "x$have_directshow" = "xyes")
+dnl TODO: how do we make the various quicktime frameworks fit in?
+AC_SUBST(PKG_REQUIRES)
+
AC_CONFIG_FILES([
Makefile
include/Makefile
include/vidcap/Makefile
examples/Makefile
+ vidcap.pc
src/Makefile
])
Modified: trunk/examples/simplegrab.c
===================================================================
--- trunk/examples/simplegrab.c 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/examples/simplegrab.c 2007-09-06 15:39:40 UTC (rev 4)
@@ -150,13 +150,10 @@
{
const int size = 255;
char * s = malloc(size);
- snprintf(s, size, "%3dx%3d %c%c%c%c %.2f %d/%d",
+ snprintf(s, size, "%3dx%3d %s %.2f %d/%d",
fmt_info->width,
fmt_info->height,
- (fmt_info->fourcc >> 24) & 0xff,
- (fmt_info->fourcc >> 16) & 0xff,
- (fmt_info->fourcc >> 8) & 0xff,
- (fmt_info->fourcc >> 0) & 0xff,
+ vidcap_fourcc_string_get(fmt_info->fourcc),
(float)fmt_info->fps_numerator /
(float)fmt_info->fps_denominator,
fmt_info->fps_numerator,
Modified: trunk/examples/vidcapTester/Grabber.cpp
===================================================================
--- trunk/examples/vidcapTester/Grabber.cpp 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/examples/vidcapTester/Grabber.cpp 2007-09-06 15:39:40 UTC (rev 4)
@@ -65,14 +65,10 @@
throw std::runtime_error("failed vidcap_format_info_get()");
qDebug() << " bind fmt:"
- << QString("%2x%3 %4%5%6%7 (0x%8) %9 %10/%11")
+ << QString("%2x%3 %4 %5 %6/%7")
.arg(fmt_info.width, 3)
.arg(fmt_info.height, 3)
- .arg(QChar(static_cast<uchar>(fmt_info.fourcc >> 24)))
- .arg(QChar(static_cast<uchar>(fmt_info.fourcc >> 16)))
- .arg(QChar(static_cast<uchar>(fmt_info.fourcc >> 8)))
- .arg(QChar(static_cast<uchar>(fmt_info.fourcc >> 0)))
- .arg(static_cast<uint>(fmt_info.fourcc), 8, 16, QChar('0'))
+ .arg(vidcap_fourcc_string_get(fmt_info.fourcc))
.arg(static_cast<double>(fmt_info.fps_numerator) /
static_cast<double>(fmt_info.fps_denominator),
0, 'f', 2)
Modified: trunk/include/vidcap/Makefile.am
===================================================================
--- trunk/include/vidcap/Makefile.am 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/include/vidcap/Makefile.am 2007-09-06 15:39:40 UTC (rev 4)
@@ -1,3 +1,5 @@
-pkginclude_HEADERS = \
+pkgincludedir = $(includedir)/vidcap
+
+pkginclude_HEADERS = \
vidcap.h \
converters.h
Modified: trunk/include/vidcap/vidcap.h
===================================================================
--- trunk/include/vidcap/vidcap.h 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/include/vidcap/vidcap.h 2007-09-06 15:39:40 UTC (rev 4)
@@ -33,9 +33,9 @@
#define VIDCAP_NAME_LENGTH 256
enum vidcap_fourccs {
- VIDCAP_FOURCC_I420 = 'i420',
- VIDCAP_FOURCC_YUY2 = 'yuy2',
- VIDCAP_FOURCC_RGB32 = ' rgb',
+ VIDCAP_FOURCC_I420 = 100,
+ VIDCAP_FOURCC_YUY2 = 101,
+ VIDCAP_FOURCC_RGB32 = 102,
};
typedef void vidcap_state;
@@ -143,6 +143,9 @@
int
vidcap_src_capture_stop(vidcap_src *);
+const char *
+vidcap_fourcc_string_get(int fourcc);
+
#ifdef __cplusplus
}
#endif
Modified: trunk/src/Makefile.am
===================================================================
--- trunk/src/Makefile.am 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/src/Makefile.am 2007-09-06 15:39:40 UTC (rev 4)
@@ -3,10 +3,8 @@
lib_LTLIBRARIES = libvidcap.la
libvidcap_la_CPPFLAGS = -I$(top_srcdir)/include
-libvidcap_la_CFLAGS = -Wall -Wextra -Wno-unused-parameter -Wno-multichar \
- $(PTHREAD_CFLAGS)
-libvidcap_la_CXXFLAGS = -Wall -Wextra -Wno-unused-parameter -Wno-multichar \
- $(PTHREAD_CFLAGS)
+libvidcap_la_CFLAGS = -Wall -Wextra -Wno-unused-parameter $(PTHREAD_CFLAGS)
+libvidcap_la_CXXFLAGS = -Wall -Wextra -Wno-unused-parameter $(PTHREAD_CFLAGS)
libvidcap_la_LIBADD = $(PTHREAD_LIBS)
Modified: trunk/src/conv.h
===================================================================
--- trunk/src/conv.h 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/src/conv.h 2007-09-06 15:39:40 UTC (rev 4)
@@ -31,10 +31,10 @@
enum vidcap_fourccs_extra
{
- VIDCAP_FOURCC_RGB24 = ' r24',
- VIDCAP_FOURCC_RGB555 = 'r555',
- VIDCAP_FOURCC_YVU9 = 'yvu9',
- VIDCAP_FOURCC_2VUY = '2vuy',
+ VIDCAP_FOURCC_RGB24 = 200,
+ VIDCAP_FOURCC_RGB555 = 201,
+ VIDCAP_FOURCC_YVU9 = 202,
+ VIDCAP_FOURCC_2VUY = 203,
};
typedef int (*conv_func)(int width, int height,
Modified: trunk/src/directshow/DirectShowSource.cpp
===================================================================
--- trunk/src/directshow/DirectShowSource.cpp 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/src/directshow/DirectShowSource.cpp 2007-09-06 15:39:40 UTC (rev 4)
@@ -1011,11 +1011,8 @@
data = 0x32595559;
break;
default:
- log_warn("failed to map '%c%c%c%c' to DS media type\n",
- (char)((fourcc >> 24) & 0xff),
- (char)((fourcc >> 16) & 0xff),
- (char)((fourcc >> 8) & 0xff),
- (char)((fourcc >> 0) & 0xff));
+ log_warn("failed to map '%s' to DS media type\n",
+ vidcap_fourcc_string_get(fourcc));
return -1;
}
Modified: trunk/src/sapi_qt.c
===================================================================
--- trunk/src/sapi_qt.c 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/src/sapi_qt.c 2007-09-06 15:39:40 UTC (rev 4)
@@ -202,19 +202,15 @@
}
if ( qt_src_ctx->frame_count == 1 )
- log_info("capture time: %c%c%c%c %c%c%c%c %c%c%c%c %s\n",
+ log_info("capture time: %c%c%c%c %s %s %s\n",
(char)(pixel_format >> 24),
(char)(pixel_format >> 16),
(char)(pixel_format >> 8),
(char)(pixel_format >> 0),
- (char)(src_ctx->fmt_native.fourcc >> 24),
- (char)(src_ctx->fmt_native.fourcc >> 16),
- (char)(src_ctx->fmt_native.fourcc >> 8),
- (char)(src_ctx->fmt_native.fourcc >> 0),
- (char)(src_ctx->fmt_nominal.fourcc >> 24),
- (char)(src_ctx->fmt_nominal.fourcc >> 16),
- (char)(src_ctx->fmt_nominal.fourcc >> 8),
- (char)(src_ctx->fmt_nominal.fourcc >> 0),
+ vidcap_fourcc_string_get(
+ src_ctx->fmt_native.fourcc),
+ vidcap_fourcc_string_get(
+ src_ctx->fmt_nominal.fourcc),
src_ctx->src_info.identifier);
sapi_src_capture_notify(src_ctx,
@@ -285,27 +281,19 @@
if ( map_fourcc_to_ostype(src_ctx->fmt_native.fourcc, &pixel_format) )
{
- log_error("invalid bound fourcc '%c%c%c%c'\n",
- (char)(src_ctx->fmt_native.fourcc >> 24),
- (char)(src_ctx->fmt_native.fourcc >> 16),
- (char)(src_ctx->fmt_native.fourcc >> 8),
- (char)(src_ctx->fmt_native.fourcc >> 0));
+ log_error("invalid bound fourcc '%s'\n",
+ vidcap_fourcc_string_get(
+ src_ctx->fmt_native.fourcc));
return -1;
}
- log_info("setup decomp: %c%c%c%c %c%c%c%c %c%c%c%c %s\n",
+ log_info("setup decomp: %c%c%c%c %s %s %s\n",
(char)(pixel_format >> 24),
(char)(pixel_format >> 16),
(char)(pixel_format >> 8),
(char)(pixel_format >> 0),
- (char)(src_ctx->fmt_native.fourcc >> 24),
- (char)(src_ctx->fmt_native.fourcc >> 16),
- (char)(src_ctx->fmt_native.fourcc >> 8),
- (char)(src_ctx->fmt_native.fourcc >> 0),
- (char)(src_ctx->fmt_nominal.fourcc >> 24),
- (char)(src_ctx->fmt_nominal.fourcc >> 16),
- (char)(src_ctx->fmt_nominal.fourcc >> 8),
- (char)(src_ctx->fmt_nominal.fourcc >> 0),
+ vidcap_fourcc_string_get(src_ctx->fmt_native.fourcc),
+ vidcap_fourcc_string_get(src_ctx->fmt_nominal.fourcc),
src_ctx->src_info.identifier);
n = CFNumberCreate(0, kCFNumberSInt32Type, &pixel_format);
@@ -403,12 +391,9 @@
if ( map_fourcc_to_ostype(src_ctx->fmt_native.fourcc, &pixel_format) )
{
- log_error("invalid pixel format '%c%c%c%c' (0x%08x)\n",
- (char)(src_ctx->fmt_native.fourcc >> 24),
- (char)(src_ctx->fmt_native.fourcc >> 16),
- (char)(src_ctx->fmt_native.fourcc >> 8),
- (char)(src_ctx->fmt_native.fourcc >> 0),
- src_ctx->fmt_native.fourcc);
+ log_error("invalid pixel format '%s'\n",
+ vidcap_fourcc_string_get(
+ src_ctx->fmt_native.fourcc));
return (void *)-1;
}
Modified: trunk/src/vidcap.c
===================================================================
--- trunk/src/vidcap.c 2007-09-03 20:34:33 UTC (rev 3)
+++ trunk/src/vidcap.c 2007-09-06 15:39:40 UTC (rev 4)
@@ -369,12 +369,9 @@
if ( !src_ctx->format_validate(src_ctx, fmt_info, &fmt_native) )
{
- log_error("invalid format %dx%d %c%c%c%c %d/%d\n",
+ log_error("invalid format %dx%d %s %d/%d\n",
fmt_info->width, fmt_info->height,
- (char)(fmt_info->fourcc >> 24),
- (char)(fmt_info->fourcc >> 16),
- (char)(fmt_info->fourcc >> 8),
- (char)(fmt_info->fourcc >> 0),
+ vidcap_fourcc_string_get(fmt_info->fourcc),
fmt_info->fps_numerator,
fmt_info->fps_denominator);
return -1;
@@ -405,11 +402,9 @@
if ( !src_ctx->fmt_conv_buf_size )
{
- log_error("failed to get buffer size for %c%c%c%c\n",
- (char)(fmt_info->fourcc >> 24),
- (char)(fmt_info->fourcc >> 16),
- (char)(fmt_info->fourcc >> 8),
- (char)(fmt_info->fourcc >> 0));
+ log_error("failed to get buffer size for %s\n",
+ vidcap_fourcc_string_get(
+ fmt_info->fourcc));
return -1;
}
@@ -492,3 +487,26 @@
return ret;
}
+const char *
+vidcap_fourcc_string_get(int fourcc)
+{
+ switch ( fourcc )
+ {
+ case VIDCAP_FOURCC_I420:
+ return "i420";
+ case VIDCAP_FOURCC_YUY2:
+ return "yuy2";
+ case VIDCAP_FOURCC_RGB32:
+ return " rgb";
+ case VIDCAP_FOURCC_RGB24:
+ return " r24";
+ case VIDCAP_FOURCC_RGB555:
+ return "r555";
+ case VIDCAP_FOURCC_YVU9:
+ return "yvu9";
+ case VIDCAP_FOURCC_2VUY:
+ return "2vuy";
+ default:
+ return "????";
+ }
+}
Added: trunk/vidcap.pc.in
===================================================================
--- trunk/vidcap.pc.in (rev 0)
+++ trunk/vidcap.pc.in 2007-09-06 15:39:40 UTC (rev 4)
@@ -0,0 +1,12 @@
+prefix=@prefix@
+exec_prefix=${prefix}
+libdir=@libdir@
+includedir=${prefix}/include
+
+Name: vidcap
+Description: Cross-platform video capture library
+Version: @PACKAGE_VERSION@
+Libs: -L${libdir} -lvidcap @PTHREAD_LIBS@
+Libs.private:
+Cflags: -I${includedir}
+Requires.private: @PKG_REQUIRES@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|