1USB Webcam driver 2(c) 2004-2008 François Revol. 3Parts (c) Be,Inc. (ProducerNode sample code). 4 5Current version of my USB Webcam driver. WORK IN PROGRESS! 6Uses the USB Kit (userland API, needs libusb) to publish a 7media node representing the webcam. 8 9It currently only works with my Sonix webcam (3Euro cheapo 10cam, using an SN9C120 chip), but is modular enough to easily 11expand it, some code is already there to detect Quickcams. 12 13Note however that most webcams only support isochronous 14transfers, so will NOT work in R5 or even Zeta as isochronous 15is mostly not working. That's the reason for only supporting 16my Sonix webcam as it is bulk capable. 17As soon as iso support is added to the USB stack and the 18USB Kit it should be possible to support other webcams quite 19easily. 20 21For now you should be able to build it under Zeta with the 22makefile provided. 23 24There are 3 kinds of device-specific folders : 25addons/ contains actual usb chip support code for each device. 26sensors/ contains code to handle CMOS sensors, as each model 27 of a specific brand usually have a different CMOS chip 28 despite a common usb chip. 29cstransforms/ for colorspace transforms so other device using 30 the same weird colorspace can reuse the code (not yet 31 used, sonix has its own code for now). It should be 32 possible to use Translator-based transforms, making 33 it easy to support webcams sending JPEG pictures. 34 Another option is to turn all cstransforms into actual 35 Translators usable by other apps, or also media codecs 36 but that would be more work for few added value. 37 38Other notes and TODO: 39- finish the bayer cstransform and use that instead of copied 40(MIT) code in Sonix addon. 41- implement handling picture sizes correctly (currently forced 42in the ProducerNode and the Sonix code to 320x240) 43- there are currently 2 Deframer classes, the StreamingDeframer 44although more complex seems to work much better than the 45BufferingDeframer. Make my mind about them. 46- write isochronous code when USB Kit supports it 47- add quickcam support (I have some code around) (requires iso) 48- add code to support Fuji FinePix to merge the FinePix addon 49from bebits ? (need to find one to test) 50- design an extensible API to publish possible controls as 51ParameterWeb or forward ParameterWeb changes right to the 52device-specific addon and provide default handlers for usual 53controls ? 54 55References and other drivers of interest: 56 57* Logitech opensource effort: 58http://www.quickcamteam.net/ 59 60* Sonix linux drivers (several of them): 61http://sourceforge.net/projects/sonix/ -- http://sonix.sourceforge.net/ 62http://freshmeat.net/projects/sonic-snap/?branch_id=55324&release_id=183982 63http://tgnard.free.fr/linux/ 64(datasheet) 65http://www.mnementh.co.uk/sonix/sn9c102.pdf 66 67* some of the (many!) linux quickcam drivers: 68http://www.lrr.in.tum.de/~acher/quickcam/quickcam.html 69http://www.seismo.ethz.ch/linux/webcam.html 70 71* NW80x based: 72http://nw802.cvs.sourceforge.net NW80x based (like the QuickCam I have here) 73http://tuukkat.awardspace.com/quickcam/quickcam.html for PID 0xd001 74http://blognux.free.fr/sources/EasyCam2/04032006_11:11/drivers/nw802/ 75datasheets: 76http://www.digchip.com/datasheets/parts/datasheet/132/NW800.php 77 78* Creative's own list of linux drivers: 79http://connect.creativelabs.com/opensource/Lists/Webcam%20Support/AllItems.aspx 80 81* Other webcam drivers: 82http://zc0302.sourceforge.net/zc0302.php?page=cams 83http://www.smcc.demon.nl/webcam/ (philips) 84http://www.medias.ne.jp/~takam/bsd/NetBSD.html 85http://blognux.free.fr/sources/EasyCam2/04032006_19:49/ 86http://www.wifi.com.ar/english/doc/webcam/ov511cameras.html 87http://mxhaard.free.fr/spca5xx.html 88 89* CMOS Sensor datasheets (rather, marketing buzz): 90http://mxhaard.free.fr/spca50x/Doc/ many 91http://www.tascorp.com.tw/product_file/TAS5110C1B_Brief_V0.3.pdf 92http://www.tascorp.com.tw/product_file/TAS5130D1B_Brief_V0.3.pdf 93http://www.mnementh.co.uk/sonix/hv7131e1.pdf 94Divio NW80x: 95http://www.digchip.com/datasheets/parts/datasheet/132/NW800.php 96http://www.digchip.com/datasheets/parts/datasheet/132/NW802.php 97http://web.archive.org/web/*/divio.com/* 98All from eTOMS (ET31X110 would be == NW800 but isn't there): 99http://www.etomscorp.com/english/webdesign/product_search.asp 100http://web.archive.org/web/*re_pd_sr_1nr_50/http://etomscorp.com/* 101Agilent HDCS: 102http://www.ortodoxism.ro/datasheets2/2/05jj45dcrga6zr0zjg7hrde83cpy.pdf 103 104* Linux USB stack: 105http://www.iglu.org.il/lxr/source/include/linux/usb.h 106 107* Linux V4L webcam list: 108http://linuxtv.org/v4lwiki/index.php/Webcams 109 110* Linux source code crossref: 111http://lxr.linux.no/linux 112 113* Fuji FinePix BeOS driver, should probably be merged at some point: 114http://bebits.com/app/4185 115 116* Macam generic OSX webcam driver (interesting but sadly GPL and in ObjC): 117http://webcam-osx.sourceforge.net/index.html 118http://webcam-osx.sourceforge.net/cameras/index.php list of supported cams in OSX 119http://sourceforge.net/projects/webcam-osx 120