[kde-freebsd] ports/117960: Patches to enable webcam support in net-im/kopete
Tino Engel
goaengel at gmx.net
Tue Jan 6 21:30:04 CET 2009
The following reply was made to PR ports/117960; it has been noted by GNATS.
From: Tino Engel <goaengel at gmx.net>
To: bug-followup at FreeBSD.org, durian at boogie.com
Cc:
Subject: Re: ports/117960: Patches to enable webcam support in net-im/kopete
Date: Tue, 6 Jan 2009 21:00:22 +0100
--MP_/Zx+xcji9o.BJoUV.WUx8yiT
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
Dear port maintainer,
I have used the patches (they were outdated) provided in PR ports/117960
to create port compliant patches for the current kopete port
(kdenetwork-kopete-0.12.8).
I have verified that the port compiles and installs clean with the 3
additional patch files in the files-directory.
kopete now recognizes a webcam with pwcbsd driver correctly.
(pwcbsd-1.4.1_1)
The webcam (in my case a Logitech Quickcam 4000 Pro) shows up in kopete
configuration dialog.
In addition I have veryfied the stream makes it through the internet,
and you can have a bidirectional webcam chat with another msn client.
Please note that I had to forward the needed ports on my router to make
it work. Those were:
TCP: 1863,6891-6900,6901
UDP: 1863,5190,6901
I have attached the three patches.
In addition I have attached a patch for the change to the Makefile
the original PR also suggested. It is adding the build dependencies
BUILD_DEPENDS=${LOCALBASE}/include/linux/videodev.h:${PORTSDIR}/multimedia/v4l_compat
KNOWN PROBLEM: The configuration section for the webcam does store all
options permanently except the whiteness. This results in a quite dark
picture when the value goes back to zero.
This is a minor issue, because the setting can be changed once the
webcam is on (during a conversation) and is stored as long as the
webcam is on.
Please contact me if there are any open questions concerning this topic.
Sincerely yours, Tino Engel
--MP_/Zx+xcji9o.BJoUV.WUx8yiT
Content-Type: text/x-c++src;
name=patch-kopete_libkopete_avdevice-videodevice.cpp
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename=patch-kopete_libkopete_avdevice-videodevice.cpp
--- kopete/libkopete/avdevice/videodevice.cpp 2009-01-06 19:45:41.000000000 +0100
+++ kopete/libkopete/avdevice/videodevice.cpp 2009-01-06 19:47:03.000000000 +0100
@@ -181,7 +181,7 @@
m_videostream=false;
m_driver=VIDEODEV_DRIVER_NONE;
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
//if(!getWorkaroundBrokenDriver())
@@ -512,7 +512,7 @@
m_io_method = IO_METHOD_NONE;
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
if(V4L2_capabilities.capabilities & V4L2_CAP_READWRITE)
@@ -558,7 +558,7 @@
}
// Select video input, video standard and tune here.
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
cropcap.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
if (-1 == xioctl (VIDIOC_CROPCAP, &cropcap))
@@ -676,7 +676,7 @@
// Change resolution for the video device
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
// CLEAR (fmt);
@@ -778,7 +778,7 @@
// Change the pixel format for the video device
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
// CLEAR (fmt);
@@ -867,7 +867,7 @@
{
switch (m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
if (-1 == ioctl (descriptor, VIDIOC_S_INPUT, &newinput))
@@ -935,7 +935,7 @@
case IO_METHOD_READ: // Nothing to do
break;
case IO_METHOD_MMAP:
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
{
unsigned int loop;
@@ -957,7 +957,7 @@
#endif
break;
case IO_METHOD_USERPTR:
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
{
unsigned int loop;
@@ -995,7 +995,7 @@
/// @todo implement me
ssize_t bytesread;
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
struct v4l2_buffer v4l2buffer;
#endif
@@ -1029,7 +1029,7 @@
}
break;
case IO_METHOD_MMAP:
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
CLEAR (v4l2buffer);
v4l2buffer.type = V4L2_BUF_TYPE_VIDEO_CAPTURE;
@@ -1089,7 +1089,7 @@
#endif
break;
case IO_METHOD_USERPTR:
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
{
unsigned int i;
@@ -1475,7 +1475,7 @@
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
{
@@ -1545,7 +1545,7 @@
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
{
@@ -1615,7 +1615,7 @@
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
{
@@ -1685,7 +1685,7 @@
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
{
@@ -1755,7 +1755,7 @@
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
{
@@ -1876,7 +1876,7 @@
{
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
switch(palette)
@@ -1939,7 +1939,6 @@
case VIDEO_PALETTE_RGB32 : return PIXELFORMAT_RGB32; break;
case VIDEO_PALETTE_YUYV : return PIXELFORMAT_YUYV; break;
case VIDEO_PALETTE_UYVY : return PIXELFORMAT_UYVY; break;
- case VIDEO_PALETTE_YUV420 :
case VIDEO_PALETTE_YUV420P : return PIXELFORMAT_YUV420P; break;
case VIDEO_PALETTE_YUV422P : return PIXELFORMAT_YUV422P; break;
}
@@ -1956,7 +1955,7 @@
{
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
switch(pixelformat)
@@ -2031,7 +2030,7 @@
case PIXELFORMAT_GREY : return VIDEO_PALETTE_GREY; break;
case PIXELFORMAT_YUYV : return VIDEO_PALETTE_YUYV; break;
case PIXELFORMAT_UYVY : return VIDEO_PALETTE_UYVY; break;
- case PIXELFORMAT_YUV420P: return VIDEO_PALETTE_YUV420; break;
+ case PIXELFORMAT_YUV420P: return VIDEO_PALETTE_YUV420P; break;
case PIXELFORMAT_YUV422P: return VIDEO_PALETTE_YUV422P; break;
// Compressed formats
@@ -2084,7 +2083,11 @@
case PIXELFORMAT_GREY : return 8; break;
case PIXELFORMAT_YUYV : return 16; break;
case PIXELFORMAT_UYVY : return 16; break;
+#if defined(__FreeBSD__)
+ case PIXELFORMAT_YUV420P: return 24; break;
+#else
case PIXELFORMAT_YUV420P: return 16; break;
+#endif
case PIXELFORMAT_YUV422P: return 16; break;
// Compressed formats
@@ -2162,7 +2165,7 @@
returnvalue = "None";
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
switch(pixelformat)
@@ -2224,7 +2227,6 @@
case VIDEO_PALETTE_RGB32 : returnvalue = pixelFormatName(PIXELFORMAT_RGB32); break;
case VIDEO_PALETTE_YUYV : returnvalue = pixelFormatName(PIXELFORMAT_YUYV); break;
case VIDEO_PALETTE_UYVY : returnvalue = pixelFormatName(PIXELFORMAT_UYVY); break;
- case VIDEO_PALETTE_YUV420 :
case VIDEO_PALETTE_YUV420P : returnvalue = pixelFormatName(PIXELFORMAT_YUV420P); break;
case VIDEO_PALETTE_YUV422P : returnvalue = pixelFormatName(PIXELFORMAT_YUV422P); break;
}
@@ -2242,7 +2244,7 @@
int err = 0;
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
fmtdesc.index = 0;
@@ -2319,7 +2321,7 @@
{
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
switch(standard)
@@ -2461,7 +2463,7 @@
returnvalue = "None";
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
switch(standard)
@@ -2531,7 +2533,7 @@
{
switch(m_driver)
{
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
case VIDEODEV_DRIVER_V4L2:
break;
--MP_/Zx+xcji9o.BJoUV.WUx8yiT
Content-Type: text/x-chdr;
name=patch-kopete_libkopete_avdevice-videodevice.h
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename=patch-kopete_libkopete_avdevice-videodevice.h
--- kopete/libkopete/avdevice/videodevice.h 2009-01-06 19:45:45.000000000 +0100
+++ kopete/libkopete/avdevice/videodevice.h 2009-01-06 19:47:07.000000000 +0100
@@ -33,9 +33,12 @@
#include <unistd.h>
#include <signal.h>
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
+#if defined(__linux__)
#include <asm/types.h>
+#endif
+
#undef __STRICT_ANSI__
#ifndef __u64 //required by videodev.h
#define __u64 unsigned long long
@@ -50,8 +53,11 @@
#define pgoff_t unsigned long
#endif
+#if defined(__linux__)
#include <linux/fs.h>
#include <linux/kernel.h>
+#endif
+
#include <linux/videodev.h>
#define VIDEO_MODE_PAL_Nc 3
#define VIDEO_MODE_PAL_M 4
@@ -80,8 +86,8 @@
typedef enum
{
VIDEODEV_DRIVER_NONE
-#if defined( __linux__) && defined(ENABLE_AV)
- ,
+#if (defined( __linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
+ ,
VIDEODEV_DRIVER_V4L
#ifdef V4L2_CAP_VIDEO_CAPTURE
,
@@ -276,7 +282,7 @@
int descriptor;
//protected:
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
#ifdef V4L2_CAP_VIDEO_CAPTURE
struct v4l2_capability V4L2_capabilities;
struct v4l2_cropcap cropcap;
--MP_/Zx+xcji9o.BJoUV.WUx8yiT
Content-Type: text/x-c++src;
name=patch-kopete_libkopete_avdevice-videodevicepool.cpp
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename=patch-kopete_libkopete_avdevice-videodevicepool.cpp
--- kopete/libkopete/avdevice/videodevicepool.cpp 2009-01-06 19:45:59.000000000 +0100
+++ kopete/libkopete/avdevice/videodevicepool.cpp 2009-01-06 19:47:13.000000000 +0100
@@ -608,7 +608,7 @@
/// @todo implement me
kdDebug(14010) << k_funcinfo << "called" << endl;
-#if defined(__linux__) && defined(ENABLE_AV)
+#if (defined(__linux__) || defined(__FreeBSD__)) && defined(ENABLE_AV)
QDir videodevice_dir;
const QString videodevice_dir_path=QString::fromLocal8Bit("/dev/v4l/");
const QString videodevice_dir_filter=QString::fromLocal8Bit("video*");
--MP_/Zx+xcji9o.BJoUV.WUx8yiT
Content-Type: text/x-patch; name=Makefile.diff
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment; filename=Makefile.diff
--- Makefile 2009-01-06 20:50:35.000000000 +0100
+++ Makefile 2009-01-06 20:47:43.000000000 +0100
@@ -17,6 +17,7 @@
MAINTAINER= kde at FreeBSD.org
COMMENT= KDE multi-protocol instant messenger (IM)
+BUILD_DEPENDS= ${LOCALBASE}/include/linux/videodev.h:${PORTSDIR}/multimedia/v4l_compat
RUN_DEPENDS= ${QT_PREFIX}/lib/plugins/crypto/libqca-tls.so:${PORTSDIR}/security/qca-tls
CONFLICTS= kdenetwork-[0-2]* kdenetwork-3.[0-4]* kdenetwork-3.5.[0-2]* kvirc-[0-9]*
--MP_/Zx+xcji9o.BJoUV.WUx8yiT--
More information about the kde-freebsd
mailing list