ports/117960: Patches to enable webcam support in kopete

Mike Durian durian at boogie.com
Sat Nov 10 16:10:01 UTC 2007


>Number:         117960
>Category:       ports
>Synopsis:       Patches to enable webcam support in kopete
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          change-request
>Submitter-Id:   current-users
>Arrival-Date:   Sat Nov 10 16:10:00 UTC 2007
>Closed-Date:
>Last-Modified:
>Originator:     Mike Durian
>Release:        FreeBSD 6.3-PRERELEASE i386
>Organization:
>Environment:
System: FreeBSD carwash.boogie.com 6.3-PRERELEASE FreeBSD 6.3-PRERELEASE #7: Wed Oct 31 09:38:00 MDT 2007 root at carwash.boogie.com:/usr/obj/usr/src/sys/BOOGIE i386


	
>Description:
	A few basic patches that enable webcam support in the
	net-im/kopete port.  It adds a dependancy on multimedia/v4l_compat.
	Perhaps there should be a RUN_DEPEND on multimedia/pwcbsd too.
	I'm not sure.  Are there other Video4Linux compatbile webcam
	drivers in the port tree?  If not, then I'm thinking the
	RUN_DEPEND on multimedia/pwcbsd should be added.
>How-To-Repeat:
	I tested with a Logitech QuickCam Pro 4000.  Actually, I've
	only tested in the configuration window.  I haven't verified
	that the feed makes it across the network.

>Fix:

# This is a shell archive.  Save it in a file, remove anything before
# this line, and then unpack it by entering "sh file".  Note, it may
# create directories; files and directories will be owned by you and
# have default permissions.
#
# This archive contains:
#
#	Makefile.diff
#	patch-kopete__libkopete__avdevice__videodevice.cpp
#	patch-kopete__libkopete__avdevice__videodevice.h
#	patch-kopete__libkopete__avdevice__videodevicepool.cpp
#
echo x - Makefile.diff
sed 's/^X//' >Makefile.diff << 'END-of-Makefile.diff'
X--- Makefile.orig	2007-11-10 08:08:53.000000000 -0700
X+++ Makefile	2007-11-10 08:13:04.000000000 -0700
X@@ -17,6 +17,7 @@
X MAINTAINER=	kde at FreeBSD.org
X COMMENT=	KDE multi-protocol instant messenger (IM)
X 
X+BUILD_DEPENDS=	${LOCALBASE}/include/linux/videodev.h:multimedia/v4l_compat
X RUN_DEPENDS=	${QT_PREFIX}/lib/plugins/crypto/libqca-tls.so:${PORTSDIR}/security/qca-tls
X 
X CONFLICTS=	kdenetwork-[0-2]* kdenetwork-3.[0-4]* kdenetwork-3.5.[0-2]* kvirc-[0-9]*
END-of-Makefile.diff
echo x - patch-kopete__libkopete__avdevice__videodevice.cpp
sed 's/^X//' >patch-kopete__libkopete__avdevice__videodevice.cpp << 'END-of-patch-kopete__libkopete__avdevice__videodevice.cpp'
X--- kopete/libkopete/avdevice/videodevice.cpp.orig	2007-11-09 17:22:19.000000000 -0700
X+++ kopete/libkopete/avdevice/videodevice.cpp	2007-11-10 08:07:05.000000000 -0700
X@@ -139,7 +139,7 @@
X 		m_videostream=false;
X 
X 		m_driver=VIDEODEV_DRIVER_NONE;
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 
X if(!getWorkaroundBrokenDriver())
X@@ -425,7 +425,7 @@
X 	m_io_method = IO_METHOD_NONE;
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			if(V4L2_capabilities.capabilities & V4L2_CAP_READWRITE)
X@@ -471,7 +471,7 @@
X 	}
X 
X // Select video input, video standard and tune here.
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 	cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
X 	if (-1 == xioctl (VIDIOC_CROPCAP, &cropcap))
X@@ -568,7 +568,7 @@
X // Change resolution for the video device
X 		switch(m_driver)
X 		{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 			case VIDEODEV_DRIVER_V4L2:
X //				CLEAR (fmt);
X@@ -670,7 +670,7 @@
X // Change the pixel format for the video device
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X //			CLEAR (fmt);
X@@ -756,7 +756,7 @@
X 	{
X 		switch (m_driver)
X 		{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 			case VIDEODEV_DRIVER_V4L2:
X 				if (-1 == ioctl (descriptor, VIDIOC_S_INPUT, &newinput))
X@@ -824,7 +824,7 @@
X 			case IO_METHOD_READ: // Nothing to do
X 				break;
X 			case IO_METHOD_MMAP:
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 				{
X 					unsigned int loop;
X@@ -846,7 +846,7 @@
X #endif
X 				break;
X 			case IO_METHOD_USERPTR:
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 				{
X 					unsigned int loop;
X@@ -884,7 +884,7 @@
X     /// @todo implement me
X 	ssize_t bytesread;
X 
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 	struct v4l2_buffer v4l2buffer;
X #endif
X@@ -918,7 +918,7 @@
X 				}
X 				break;
X 			case IO_METHOD_MMAP:
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 				CLEAR (v4l2buffer);
X 				v4l2buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
X@@ -978,7 +978,7 @@
X #endif
X 				break;
X 			case IO_METHOD_USERPTR:
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 				{
X 					unsigned int i;
X@@ -1304,7 +1304,7 @@
X 
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			break;
X@@ -1342,7 +1342,7 @@
X 
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			break;
X@@ -1380,7 +1380,7 @@
X 
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			break;
X@@ -1418,7 +1418,7 @@
X 
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			break;
X@@ -1456,7 +1456,7 @@
X 
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			break;
X@@ -1569,7 +1569,7 @@
X {
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			switch(palette)
X@@ -1604,7 +1604,7 @@
X 				case VIDEO_PALETTE_RGB32	: return PIXELFORMAT_RGB32;	break;
X 				case VIDEO_PALETTE_YUYV		: return PIXELFORMAT_YUYV;	break;
X 				case VIDEO_PALETTE_UYVY		: return PIXELFORMAT_UYVY;	break;
X-				case VIDEO_PALETTE_YUV420	: return PIXELFORMAT_YUV420P;	break;
X+				case VIDEO_PALETTE_YUV420P	: return PIXELFORMAT_YUV420P;	break;
X 				case VIDEO_PALETTE_YUV422P	: return PIXELFORMAT_YUV422P;	break;
X 			}
X 			break;
X@@ -1620,7 +1620,7 @@
X {
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			switch(pixelformat)
X@@ -1659,7 +1659,7 @@
X 				case PIXELFORMAT_BGR32	: return PIXELFORMAT_NONE;	break;
X 				case PIXELFORMAT_YUYV	: return VIDEO_PALETTE_YUYV;	break;
X 				case PIXELFORMAT_UYVY	: return VIDEO_PALETTE_UYVY;	break;
X-				case PIXELFORMAT_YUV420P: return VIDEO_PALETTE_YUV420;	break;
X+				case PIXELFORMAT_YUV420P: return VIDEO_PALETTE_YUV420P;	break;
X 				case PIXELFORMAT_YUV422P: return VIDEO_PALETTE_YUV422P;	break;
X 			}
X 			break;
X@@ -1688,7 +1688,11 @@
X 		case PIXELFORMAT_BGR32	: return 32;	break;
X 		case PIXELFORMAT_YUYV	: return 16;	break;
X 		case PIXELFORMAT_UYVY	: return 16;	break;
X+#if defined(__FreeBSD__)
X+		case PIXELFORMAT_YUV420P: return 24;	break;
X+#else
X 		case PIXELFORMAT_YUV420P: return 16;	break;
X+#endif
X 		case PIXELFORMAT_YUV422P: return 16;	break;
X 	}
X 	return 0;
X@@ -1725,7 +1729,7 @@
X 	returnvalue = "None";
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			switch(pixelformat)
X@@ -1758,7 +1762,7 @@
X 				case VIDEO_PALETTE_RGB32	: returnvalue = pixelFormatName(PIXELFORMAT_RGB32);	break;
X 				case VIDEO_PALETTE_YUYV		: returnvalue = pixelFormatName(PIXELFORMAT_YUYV);	break;
X 				case VIDEO_PALETTE_UYVY		: returnvalue = pixelFormatName(PIXELFORMAT_UYVY);	break;
X-				case VIDEO_PALETTE_YUV420	: returnvalue = pixelFormatName(PIXELFORMAT_YUV420P);	break;
X+				case VIDEO_PALETTE_YUV420P	: returnvalue = pixelFormatName(PIXELFORMAT_YUV420P);	break;
X 				case VIDEO_PALETTE_YUV422P	: returnvalue = pixelFormatName(PIXELFORMAT_YUV422P);	break;
X 			}
X 			break;
X@@ -1774,7 +1778,7 @@
X {
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			switch(standard)
X@@ -1916,7 +1920,7 @@
X 	returnvalue = "None";
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			switch(standard)
X@@ -1986,7 +1990,7 @@
X {
X 	switch(m_driver)
X 	{
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 		case VIDEODEV_DRIVER_V4L2:
X 			break;
END-of-patch-kopete__libkopete__avdevice__videodevice.cpp
echo x - patch-kopete__libkopete__avdevice__videodevice.h
sed 's/^X//' >patch-kopete__libkopete__avdevice__videodevice.h << 'END-of-patch-kopete__libkopete__avdevice__videodevice.h'
X--- kopete/libkopete/avdevice/videodevice.h.orig	2007-11-09 17:22:29.000000000 -0700
X+++ kopete/libkopete/avdevice/videodevice.h	2007-11-09 17:34:16.000000000 -0700
X@@ -33,9 +33,11 @@
X #include <unistd.h>
X #include <signal.h>
X 
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X 
X+#if defined(__linux__)
X #include <asm/types.h>
X+#endif
X #undef __STRICT_ANSI__
X #ifndef __u64 //required by videodev.h
X #define __u64 unsigned long long
X@@ -50,8 +52,10 @@
X #define pgoff_t unsigned long
X #endif
X 
X+#if defined(__linux__)
X #include <linux/fs.h>
X #include <linux/kernel.h>
X+#endif
X #include <linux/videodev.h>
X #define VIDEO_MODE_PAL_Nc  3
X #define VIDEO_MODE_PAL_M   4
X@@ -79,7 +83,7 @@
X typedef enum
X {
X 	VIDEODEV_DRIVER_NONE
X-#if defined( __linux__) && defined(ENABLE_AV)
X+#if (defined( __linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X         ,
X 	VIDEODEV_DRIVER_V4L
X #ifdef HAVE_V4L2
X@@ -255,7 +259,7 @@
X 	int descriptor;
X 
X //protected:
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X #ifdef HAVE_V4L2
X 	struct v4l2_capability V4L2_capabilities;
X 	struct v4l2_cropcap cropcap;
END-of-patch-kopete__libkopete__avdevice__videodevice.h
echo x - patch-kopete__libkopete__avdevice__videodevicepool.cpp
sed 's/^X//' >patch-kopete__libkopete__avdevice__videodevicepool.cpp << 'END-of-patch-kopete__libkopete__avdevice__videodevicepool.cpp'
X--- kopete/libkopete/avdevice/videodevicepool.cpp.orig	2007-11-09 21:12:49.000000000 -0700
X+++ kopete/libkopete/avdevice/videodevicepool.cpp	2007-11-09 21:13:54.000000000 -0700
X@@ -650,7 +650,7 @@
X     /// @todo implement me
X 
X 	kdDebug() <<  k_funcinfo << "called" << endl;
X-#if defined(__linux__) && defined(ENABLE_AV)
X+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
X 	QDir videodevice_dir;
X 	const QString videodevice_dir_path=QString::fromLocal8Bit("/dev/v4l/");
X 	const QString videodevice_dir_filter=QString::fromLocal8Bit("video*");
END-of-patch-kopete__libkopete__avdevice__videodevicepool.cpp
exit


>Release-Note:
>Audit-Trail:
>Unformatted:



More information about the freebsd-ports-bugs mailing list