Subject: Webcam support - where to go from here?
To: None <current-users@netbsd.org>
From: Martijn van Buul <martijnb@atlas.ipv6.stack.nl>
List: current-users
Date: 02/26/2005 12:02:49
As we're hopefully all painfully aware, webcam support for NetBSD has been
rather minimal - although all *BSD systems seem to suffer from this. While
Linux has Video4Linux - a more or less hardware independant interface -, all
we have is a rather wild collection of tools in pkgsrc (None of them even
remotely interchangeable) to address individual webcams using the ugen 
device driver. Not a really good selling point, if you ask me.

So, where do we go from here? In my humble opinion, we've got a couple of
possibilities:

1) Keep the current situation, maybe trying to make the aforementioned
   userland programs have a compareable calling convention, so that the
   amount of chaos is slightly reduced. Shouldn't take a lot of work.
2) Shoehorn these devices into being compatible with the bktr. This would
   make these devices accessible to everything using the bktr API. However,
   I'm not sure if this is actually doable without extending the bktr API,
   and I'm not really sure it's a clever idea to begin with. Certainly not
   my favourite option, but it's one to consider.
3) Assimilate v4l. While v4l is far from free from design errors - like many
   linux interfaces, really - there is a modest amount of software which would
   readily support this. And while v4l is slightly biased towards video 
   capture cards and TV tuners, it has proven to be working for webcams as
   well. There's a newer version of this standard in the works (v4l2) which
   gets rid of some of the design flaws of v4l, but there's not a lot of 
   support for that. 
4) Invent our own hardware independant video driver layer, avoiding the 
   pitfalls from v4l. Some basic v4l compatibility would still be possible,
   using a compatibility layer (much like the OSS emulation for audio)
5) The brilliant, very obvious, and mindboggingly simple plan that takes no
   time at all to implement - but which I failed to see...

Any ideas? I'd be more than willing to invest time in this. 

Kind regards,

Martijn