[linux-dvb] webcam and v4l-dvb related modules

Brandon Drummond nijusan at utdallas.edu
Sun Jan 28 01:04:47 CET 2007


Ah, yes that makes sense. Unfortunately, after making the appropriate
kernel links the quickcam express module (qc-usb-0.6.5) rufuses to
build. I was using the module that comes in the ubuntu distribution
before, and I applied the kernel links command before trying to build my
own so I'm not sure if it's really the v4l-dvb headers that are causing
the problem. I do, however, own another webcam who's driver I have been
successfully compiling using the original headers that now refuses to
build with the headers supplied by the v4l-dvb distribution. It's the
linux-uvc driver https://linux-uvc.berlios.de/
I receive the following errors when trying to compile using the supplied
headers:
Building USB Video Class driver...
make[1]: Entering directory `/usr/src/linux-headers-2.6.17-10-generic'
  CC [M]  /media/sda4/nijusan/drivers/linuxuvc/uvc_driver.o
In file included from /media/sda4/nijusan/drivers/linuxuvc/uvcvideo.h:8,

from /media/sda4/nijusan/drivers/linuxuvc/uvc_driver.c:45:
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:11: error:
redefinition of ‘struct v4l2_ext_control’
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:22: error:
redefinition of ‘struct v4l2_ext_controls’
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:57: error: nested
redefinition of ‘enum v4l2_frmsizetypes’
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:57: error:
redeclaration of ‘enum v4l2_frmsizetypes’
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:58: error:
redeclaration of enumerator ‘V4L2_FRMSIZE_TYPE_DISCRETE’
include/linux/videodev2.h:292: error: previous definition of
‘V4L2_FRMSIZE_TYPE_DISCRETE’ was here
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:59: error:
redeclaration of enumerator ‘V4L2_FRMSIZE_TYPE_CONTINUOUS’
include/linux/videodev2.h:293: error: previous definition of
‘V4L2_FRMSIZE_TYPE_CONTINUOUS’ was here
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:60: error:
redeclaration of enumerator ‘V4L2_FRMSIZE_TYPE_STEPWISE’
include/linux/videodev2.h:294: error: previous definition of
‘V4L2_FRMSIZE_TYPE_STEPWISE’ was here
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:64: error:
redefinition of ‘struct v4l2_frmsize_discrete’
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:70: error:
redefinition of ‘struct v4l2_frmsize_stepwise’
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:80: error:
redefinition of ‘struct v4l2_frmsizeenum’
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:94: error: nested
redefinition of ‘enum v4l2_frmivaltypes’
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:94: error:
redeclaration of ‘enum v4l2_frmivaltypes’
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:95: error:
redeclaration of enumerator ‘V4L2_FRMIVAL_TYPE_DISCRETE’
include/linux/videodev2.h:332: error: previous definition of
‘V4L2_FRMIVAL_TYPE_DISCRETE’ was here
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:96: error:
redeclaration of enumerator ‘V4L2_FRMIVAL_TYPE_CONTINUOUS’
include/linux/videodev2.h:333: error: previous definition of
‘V4L2_FRMIVAL_TYPE_CONTINUOUS’ was here
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:97: error:
redeclaration of enumerator ‘V4L2_FRMIVAL_TYPE_STEPWISE’
include/linux/videodev2.h:334: error: previous definition of
‘V4L2_FRMIVAL_TYPE_STEPWISE’ was here
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:101: error:
redefinition of ‘struct v4l2_frmival_stepwise’
/media/sda4/nijusan/drivers/linuxuvc/uvc_compat.h:108: error:
redefinition of ‘struct v4l2_frmivalenum’
make[2]: *** [/media/sda4/nijusan/drivers/linuxuvc/uvc_driver.o] Error 1
make[1]: *** [_module_/media/sda4/nijusan/drivers/linuxuvc] Error 2
make[1]: Leaving directory `/usr/src/linux-headers-2.6.17-10-generic'
make: *** [uvcvideo] Error 2

This is a v4l2-only driver. I notice there are some incompatibilities
between the v4l-dvb's videodev2.h header file and the uvc_compat.h
header supplied by the wedcam module. What are the differences between
the stock v4l headers and those supplied by the v4l-dvb distribution?

Cheers,
-Brandon Drummond

On Fri, 2007-01-26 at 22:31 -0800, Trent Piepho wrote:
> On Fri, 26 Jan 2007, Brandon Drummond wrote:
> > [17181665.160000] Linux video capture interface: v2.00
> > [17181665.196000] quickcam: disagrees about version of symbol
> > video_devdata
> > [17181665.196000] quickcam: Unknown symbol video_devdata
> >
> > At first glance one would assume that this arose from compilation under
> > a different kernel, but that is not the case. I am aware that this is a
> > known issue, but I have a couple of questions:
> 
> Effectively, it _is_ from compiling under a different kernel.  The modules
> from v4l-dvb, like videodev.ko, were compiled using the source from
> v4l-dvb.  The out of tree quickcam driver was compiled using the source
> from your kernel.  videodev.ko and quickcam.ko were compiled with different
> versions of header files they both use, like videodev.h, and so the two
> modules will not work together.
> 
> You have this same problem if you try to compile the latest ALSA sources
> and use those modules with a sound driver that isn't part of the ALSA
> source.
> 
> A solution would be the use the "make kernel-links" command in v4l-dvb,
> which will install the v4l-dvb source into your kernel source.  Now if you
> compile quickcam against that upgraded kernel source, it should use the
> same headers that v4l-dvb used, and so work with the v4l-dvb modules.




More information about the linux-dvb mailing list