132065846SFrançois RevolUSB Webcam driver 2941a8959SFrançois Revol(c) 2004-2007 François Revol. 3a6ccb0beSFranç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 24ffe8b391SFrançois RevolThere are 3 kinds of device-specific folders : 25ffe8b391SFrançois Revoladdons/ contains actual usb chip support code for each device. 26ffe8b391SFrançois Revolsensors/ contains code to handle CMOS sensors, as each model 27ffe8b391SFrançois Revol of a specific brand usually have a different CMOS chip 28ffe8b391SFrançois Revol despite a common usb chip. 29ffe8b391SFrançois Revolcstransforms/ for colorspace transforms so other device using 30ffe8b391SFrançois Revol the same weird colorspace can reuse the code (not yet 31ffe8b391SFrançois Revol used, sonix has its own code for now). It should be 32ffe8b391SFrançois Revol possible to use Translator-based transforms, making 33ffe8b391SFrançois Revol it easy to support webcams sending JPEG pictures. 34ffe8b391SFrançois Revol Another option is to turn all cstransforms into actual 35ffe8b391SFrançois Revol Translators usable by other apps, or also media codecs 36ffe8b391SFrançois Revol but that would be more work for few added value. 37ffe8b391SFrançois Revol 38a6ccb0beSFrançois RevolOther notes and TODO: 39a6ccb0beSFrançois Revol- finish the bayer cstransform and use that instead of copied 40a6ccb0beSFrançois Revol(MIT) code in Sonix addon. 41a6ccb0beSFrançois Revol- implement handling picture sizes correctly (currently forced 42a6ccb0beSFrançois Revolin the ProducerNode and the Sonix code to 320x240) 43a6ccb0beSFrançois Revol- there are currently 2 Deframer classes, the StreamingDeframer 44a6ccb0beSFrançois Revolalthough more complex seems to work much better than the 45a6ccb0beSFrançois RevolBufferingDeframer. Make my mind about them. 46a6ccb0beSFrançois Revol- write isochronous code when USB Kit supports it 47a6ccb0beSFrançois Revol- add quickcam support (I have some code around) (requires iso) 48a6ccb0beSFrançois Revol- add code to support Fuji FinePix to merge the FinePix addon 49a6ccb0beSFrançois Revolfrom bebits ? (need to find one to test) 50a6ccb0beSFrançois Revol- design an extensible API to publish possible controls as 51a6ccb0beSFrançois RevolParameterWeb or forward ParameterWeb changes right to the 52a6ccb0beSFrançois Revoldevice-specific addon and provide default handlers for usual 53a6ccb0beSFrançois Revolcontrols ? 54a6ccb0beSFrançois Revol 55*74b3713aSFrançois RevolReferences and other drivers of interest: 5632065846SFrançois Revol 5732065846SFrançois Revol* Sonix linux drivers (several of them): 58ffe8b391SFrançois Revolhttp://sourceforge.net/projects/sonix/ -- http://sonix.sourceforge.net/ 5932065846SFrançois Revolhttp://freshmeat.net/projects/sonic-snap/?branch_id=55324&release_id=183982 6032065846SFrançois Revolhttp://tgnard.free.fr/linux/ 61ffe8b391SFrançois Revol(datasheet) 62ffe8b391SFrançois Revolhttp://www.mnementh.co.uk/sonix/sn9c102.pdf 6332065846SFrançois Revol 64*74b3713aSFrançois Revol* some of the (many!) linux quickcam drivers: 65*74b3713aSFrançois Revolhttp://www.lrr.in.tum.de/~acher/quickcam/quickcam.html 66*74b3713aSFrançois Revolhttp://www.seismo.ethz.ch/linux/webcam.html 67*74b3713aSFrançois Revol 68*74b3713aSFrançois Revol* Creative's own list of linux drivers: 69*74b3713aSFrançois Revolhttp://connect.creativelabs.com/opensource/Lists/Webcam%20Support/AllItems.aspx 70*74b3713aSFrançois Revol 7132065846SFrançois Revol* Other webcam drivers: 7232065846SFrançois Revolhttp://zc0302.sourceforge.net/zc0302.php?page=cams 73ffe8b391SFrançois Revolhttp://www.medias.ne.jp/~takam/bsd/NetBSD.html 7432065846SFrançois Revol 7532065846SFrançois Revol* CMOS Sensor datasheets (rather, marketing buzz): 7632065846SFrançois Revolhttp://www.tascorp.com.tw/product_file/TAS5110C1B_Brief_V0.3.pdf 7732065846SFrançois Revolhttp://www.tascorp.com.tw/product_file/TAS5130D1B_Brief_V0.3.pdf 7832065846SFrançois Revol 7932065846SFrançois Revol* Linux USB stack: 8032065846SFrançois Revolhttp://www.iglu.org.il/lxr/source/include/linux/usb.h 8132065846SFrançois Revol 8232065846SFrançois Revol* Linux V4L webcam list: 8332065846SFrançois Revolhttp://linuxtv.org/v4lwiki/index.php/Webcams 8432065846SFrançois Revol 85*74b3713aSFrançois Revol* Linux source code crossref: 86*74b3713aSFrançois Revolhttp://lxr.linux.no/linux 87*74b3713aSFrançois Revol 88ffe8b391SFrançois Revol* Fuji FinePix BeOS driver, should probably be merged at some point: 89ffe8b391SFrançois Revolhttp://bebits.com/app/4185 90ffe8b391SFrançois Revol 91*74b3713aSFrançois Revol* Macam generic OSX webcam driver (interesting but sadly GPL and in ObjC): 92*74b3713aSFrançois Revolhttp://webcam-osx.sourceforge.net/index.html 93*74b3713aSFrançois Revolhttp://webcam-osx.sourceforge.net/cameras/index.php list of supported cams in OSX 94*74b3713aSFrançois Revolhttp://sourceforge.net/projects/webcam-osx 95