Ekiga3 and webcamd working (was: [FreeBSD 8/9] USB webcamd and video4bsd: Call for testing)

Curtis Villamizar curtis at occnc.com
Tue Feb 2 07:21:57 UTC 2010


Still playing with my netbook.  I now have Ekiga3 running with
webcamd, video4bsd, libv4l.

The patches are *not* quite ready for prime time but if you also do a
"setenv LDFLAGS '-L /usr/local/lib'" or equiv for your shell it will
all work.  The configure and Makefiles may need to be patched in
plugins/vidinput_v4l2 may need to be changed to have /usr/local/lib
added to the library search path correctly.

The patches are applied to devel/ptlib26 and are all tiny changes.  A
few less PTRACE lines in vidinput_names.cxx might have been plenty.

The sound_oss.cxx patch creates four entries with dsp0, dsp1, dsp2,
dsp3, rather than four entries each with dsp0 in it.

The patches aren't quite right but it gets ekiga3 running with V4L2
for now.  That said, I haven't tried a call yet, just the "View ->
Show Call Panel" and "View -> Local Video".

Curtis

-------------- next part --------------
--- Makefile.orig	2009-11-14 13:13:04.000000000 -0800
+++ Makefile	2010-02-01 22:39:54.000000000 -0800
@@ -31,6 +31,7 @@
 
 OPTIONS=	ODBC		"Use ODBC" On \
 		V4L		"Use Video4Linux" Off \
+		V4L2		"Use Video4BSD (incl V4L)" Off \
 		BSDVIDEO	"Enable BSD video support" On \
 		SDL		"Use SDL" On \
 		LDAP		"Enable LDAP support" Off
@@ -64,6 +65,11 @@
 PLIST_SUB+=	BSDVIDEO="@comment "
 .endif
 
+#  if V4L2 is defined add V4L
+.if defined(WITH_V4L2)
+WITH_V4L=1
+.endif
+
 .if defined(WITH_V4L)
 CONFIGURE_ARGS+=--enable-v4l
 PLIST_SUB+=	V4L=""
@@ -74,6 +80,15 @@
 PLIST_SUB+=	V4L="@comment "
 .endif
 
+.if defined(WITH_V4L2)
+CONFIGURE_ARGS+=--enable-v4l2
+PLIST_SUB+=	V4L2=""
+BUILD_DEPENDS+= ${LOCALBASE}/include/libv4l2.h:${PORTSDIR}/multimedia/libv4l
+.else
+CONFIGURE_ARGS+=--disable-v4l2
+PLIST_SUB+=	V4L2="@comment "
+.endif
+
 .if defined(WITH_VIDEO)
 CONFIGURE_ARGS+=	--enable-video
 PLIST_SUB+=	VIDEODIR=""
-------------- next part --------------
--- pkg-plist.orig	2009-10-31 12:44:19.000000000 -0700
+++ pkg-plist	2010-02-01 22:37:06.000000000 -0800
@@ -163,6 +163,7 @@
 lib/ptlib-%%PORTVERSION%%/devices/sound/oss_pwplugin.so
 %%BSDVIDEO%%lib/ptlib-%%PORTVERSION%%/devices/videoinput/bsdvideo_pwplugin.so
 %%V4L%%lib/ptlib-%%PORTVERSION%%/devices/videoinput/v4l_pwplugin.so
+%%V4L2%%lib/ptlib-%%PORTVERSION%%/devices/videoinput/v4l2_pwplugin.so
 libdata/pkgconfig/ptlib.pc
 %%DATADIR%%/make/common.mak
 %%DATADIR%%/make/lib.mak
-------------- next part --------------
--- plugins/sound_oss/sound_oss.cxx.orig	2009-09-20 17:25:31.000000000 -0700
+++ plugins/sound_oss/sound_oss.cxx	2010-01-31 22:42:36.000000000 -0800
@@ -179,7 +179,7 @@
               // like /dev/dsp0.0 /dev/dsp0.1 ...
               // everything else would conflict with other KDE apps using the
               // audio
-              devname = devdir + "dsp0";
+              devname = devdir + "dsp" + PString(cardnum);
               PTRACE(1, "OSS\tCollectSoundDevices FreeBSD devname set to devfs(5) name:" << devname );
 #endif /* defined (P_FREEBSD) */
               dsp.SetAt(cardnum+1, devname);
-------------- next part --------------
--- plugins/vidinput_v4l2/vidinput_names.cxx.orig	2009-09-20 17:25:31.000000000 -0700
+++ plugins/vidinput_v4l2/vidinput_names.cxx	2010-02-01 22:04:32.000000000 -0800
@@ -33,21 +33,25 @@
 
 void  V4LXNames::ReadDeviceDirectory(PDirectory devdir, POrdinalToString & vid)
 {
+  PTRACE(2, "V4L2: V4LXNames::ReadDeviceDirectory : enter");
   if (!devdir.Open())
     return;
 
-#if defined (P_SOLARIS) || defined (P_NETBSD)
+#if defined (P_SOLARIS) || defined (P_NETBSD) || defined (P_FREEBSD)
   int devnum = 0;
   do {
     PString filename = devdir.GetEntryName();
     if (!filename.NumCompare("video", 5 , 0)) {
       PString devname = devdir + filename;
       struct stat s;
+      PTRACE(2, "V4L2: check: " << devname);
       if (lstat(devname, &s) == 0) {
+	PTRACE(1, "V4L2: vid[" << devnum << "] set to " << devname);
         vid.SetAt(devnum++, devname);
       }
     }
   } while (devdir.Next());
+  PTRACE(2, "V4L2: V4LXNames::ReadDeviceDirectory : done");
 #else  
   do {
     PString filename = devdir.GetEntryName();


More information about the freebsd-multimedia mailing list