132065846SFrançois RevolUSB Webcam driver 232065846SFrançois Revol(c) 2004,2005,2006 François Revol. 3*a6ccb0beSFrançois RevolParts (c) Be,Inc. (ProducerNode sample code). 432065846SFrançois Revol 532065846SFrançois RevolCurrent version of my USB Webcam driver. WORK IN PROGRESS! 632065846SFrançois RevolUses the USB Kit (userland API, needs libusb) to publish a 732065846SFrançois Revolmedia node representing the webcam. 832065846SFrançois Revol 932065846SFrançois RevolIt currently only works with my Sonix webcam (3Euro cheapo 10ffe8b391SFrançois Revolcam, using an SN9C120 chip), but is modular enough to easily 11ffe8b391SFrançois Revolexpand it, some code is already there to detect Quickcams. 1232065846SFrançois Revol 1332065846SFrançois RevolNote however that most webcams only support isochronous 1432065846SFrançois Revoltransfers, so will NOT work in R5 or even Zeta as isochronous 1532065846SFrançois Revolis mostly not working. That's the reason for only supporting 1632065846SFrançois Revolmy Sonix webcam as it is bulk capable. 1732065846SFrançois RevolAs soon as iso support is added to the USB stack and the 1832065846SFrançois RevolUSB Kit it should be possible to support other webcams quite 1932065846SFrançois Revoleasily. 2032065846SFrançois Revol 2132065846SFrançois RevolFor now you should be able to build it under Zeta with the 2232065846SFrançois Revolmakefile provided. 2332065846SFrançois Revol 2432065846SFrançois RevolMaking a Jamfile might get tricky as several source files are 2532065846SFrançois Revolcreated by the makefile itself to include addons and censors 2632065846SFrançois Revolin the build. 2732065846SFrançois Revol 28ffe8b391SFrançois RevolThere are 3 kinds of device-specific folders : 29ffe8b391SFrançois Revoladdons/ contains actual usb chip support code for each device. 30ffe8b391SFrançois Revolsensors/ contains code to handle CMOS sensors, as each model 31ffe8b391SFrançois Revol of a specific brand usually have a different CMOS chip 32ffe8b391SFrançois Revol despite a common usb chip. 33ffe8b391SFrançois Revolcstransforms/ for colorspace transforms so other device using 34ffe8b391SFrançois Revol the same weird colorspace can reuse the code (not yet 35ffe8b391SFrançois Revol used, sonix has its own code for now). It should be 36ffe8b391SFrançois Revol possible to use Translator-based transforms, making 37ffe8b391SFrançois Revol it easy to support webcams sending JPEG pictures. 38ffe8b391SFrançois Revol Another option is to turn all cstransforms into actual 39ffe8b391SFrançois Revol Translators usable by other apps, or also media codecs 40ffe8b391SFrançois Revol but that would be more work for few added value. 41ffe8b391SFrançois Revol 42*a6ccb0beSFrançois RevolOther notes and TODO: 43*a6ccb0beSFrançois Revol- finish the bayer cstransform and use that instead of copied 44*a6ccb0beSFrançois Revol(MIT) code in Sonix addon. 45*a6ccb0beSFrançois Revol- implement handling picture sizes correctly (currently forced 46*a6ccb0beSFrançois Revolin the ProducerNode and the Sonix code to 320x240) 47*a6ccb0beSFrançois Revol- there are currently 2 Deframer classes, the StreamingDeframer 48*a6ccb0beSFrançois Revolalthough more complex seems to work much better than the 49*a6ccb0beSFrançois RevolBufferingDeframer. Make my mind about them. 50*a6ccb0beSFrançois Revol- write isochronous code when USB Kit supports it 51*a6ccb0beSFrançois Revol- add quickcam support (I have some code around) (requires iso) 52*a6ccb0beSFrançois Revol- add code to support Fuji FinePix to merge the FinePix addon 53*a6ccb0beSFrançois Revolfrom bebits ? (need to find one to test) 54*a6ccb0beSFrançois Revol- design an extensible API to publish possible controls as 55*a6ccb0beSFrançois RevolParameterWeb or forward ParameterWeb changes right to the 56*a6ccb0beSFrançois Revoldevice-specific addon and provide default handlers for usual 57*a6ccb0beSFrançois Revolcontrols ? 58*a6ccb0beSFrançois Revol 5932065846SFrançois RevolReferences: 6032065846SFrançois Revol 6132065846SFrançois Revol* Sonix linux drivers (several of them): 62ffe8b391SFrançois Revolhttp://sourceforge.net/projects/sonix/ -- http://sonix.sourceforge.net/ 6332065846SFrançois Revolhttp://freshmeat.net/projects/sonic-snap/?branch_id=55324&release_id=183982 6432065846SFrançois Revolhttp://tgnard.free.fr/linux/ 65ffe8b391SFrançois Revol(datasheet) 66ffe8b391SFrançois Revolhttp://www.mnementh.co.uk/sonix/sn9c102.pdf 6732065846SFrançois Revol 6832065846SFrançois Revol* Other webcam drivers: 6932065846SFrançois Revolhttp://zc0302.sourceforge.net/zc0302.php?page=cams 70ffe8b391SFrançois Revolhttp://www.medias.ne.jp/~takam/bsd/NetBSD.html 7132065846SFrançois Revol 7232065846SFrançois Revol* CMOS Sensor datasheets (rather, marketing buzz): 7332065846SFrançois Revolhttp://www.tascorp.com.tw/product_file/TAS5110C1B_Brief_V0.3.pdf 7432065846SFrançois Revolhttp://www.tascorp.com.tw/product_file/TAS5130D1B_Brief_V0.3.pdf 7532065846SFrançois Revol 7632065846SFrançois Revol* Linux USB stack: 7732065846SFrançois Revolhttp://www.iglu.org.il/lxr/source/include/linux/usb.h 7832065846SFrançois Revol 7932065846SFrançois Revol* Linux V4L webcam list: 8032065846SFrançois Revolhttp://linuxtv.org/v4lwiki/index.php/Webcams 8132065846SFrançois Revol 82ffe8b391SFrançois Revol* Fuji FinePix BeOS driver, should probably be merged at some point: 83ffe8b391SFrançois Revolhttp://bebits.com/app/4185 84ffe8b391SFrançois Revol 85