[arch-dev-public] Request for new extra package: libv4l / Roadmap to better Webcam support

Thomas Bächler thomas at archlinux.org
Wed Oct 15 13:00:59 EDT 2008

It all starts here: http://bugs.archlinux.org/task/11736

Many webcam drivers are now available for Linux in the 2.6.27 kernel. 
The current basis is video4linux 2 (v4l2), but there are problems:

1) Many applications only support v4l1, while many v4l2 drivers have 
missing or incomplete v4l1 emulations
2) Many webcams only support weird image formats requiring conversion 
which is not done in the kernel, so they won't work in either v4l1 or 
v4l2 programs.

The solution is libv4l. See http://hansdegoede.livejournal.com/3636.html 
and http://people.atrpms.net/~hdegoede/libv4l-0.5.1.tar.gz.

libv4l provides the following features:
1) Using libv4l1, all v4l2 devices are supported by old v4l1 
applications. All that has to be done is replace open, close, mmap and 
ioctl calls to the video device by v4l1_open, v4l1_close, v4l1_mmap and 
v4l1_ioctl respectively.
2) libv4l2 provides a similar wrapper for v4l2 applications.
3) Both of these libraries use libv4lconvert to convert all known image 
formats to BGR24 or YUV420 if necessary, so that applications will be 
able to use them.
4) There are two LD_PRELOAD wrappers, v4l1compat and v4l2convert. 
v4l1compat can be preloaded to allow (binary) v4l1 applications to use 
all v4l2 devices and use the conversion feature of libv4lconvert. 
v4l2convert can be preloaded to allow (binary) v4l2 applications to use 
the conversion features as well.

I suggest the following roadmap:
1) Add libv4l 0.5.1 to extra (I can do that).
2) Provide a HOWTO on the wiki on how to use the LD_PRELOAD wrappers to 
gain support for your camera (Should be done by a user who has done 
stuff on the wiki before).
3) Adjust applications to use libv4l directly. 
http://linuxtv.org/v4lwiki/index.php/Libv4l_Progress is part of a 
cross-distro effort (although all the work so far has been done by 
Fedora apparently) to fix applications. Right now, patches for 
gstreamer, vlc and xawtv exist, ptlib already includes support for 
libv4l when it is installed at compile-time. Apply those patches and in 
the long run adjust more applications to use libv4l, then submit those 
patches upstream.

Just from my personal experience: I own a camera that is supported by 
the gspca_ov519 driver included in 2.6.27. However, this camera has only 
support for jpeg, and thus won't work in any v4l(2) application. By 
preloading v4l2convert.so, this camera works like a charm in skype.

All this should result in support for ALL webcams in ALL v4l(2) 
applications. Are there any objections against implementing this or any 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 260 bytes
Desc: OpenPGP digital signature
URL: <http://archlinux.org/pipermail/arch-dev-public/attachments/20081015/e9b6bede/attachment.pgp>

More information about the arch-dev-public mailing list