132065846SFrançois RevolUSB Webcam driver 2a1830cbdSFrançois Revol(c) 2004-2008 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 5574b3713aSFrançois RevolReferences and other drivers of interest: 5632065846SFrançois Revol 570866ac7eSFrançois Revol* Logitech opensource effort: 580866ac7eSFrançois Revolhttp://www.quickcamteam.net/ 590866ac7eSFrançois Revol 6032065846SFrançois Revol* Sonix linux drivers (several of them): 61ffe8b391SFrançois Revolhttp://sourceforge.net/projects/sonix/ -- http://sonix.sourceforge.net/ 6232065846SFrançois Revolhttp://freshmeat.net/projects/sonic-snap/?branch_id=55324&release_id=183982 6332065846SFrançois Revolhttp://tgnard.free.fr/linux/ 64ffe8b391SFrançois Revol(datasheet) 65ffe8b391SFrançois Revolhttp://www.mnementh.co.uk/sonix/sn9c102.pdf 6632065846SFrançois Revol 6774b3713aSFrançois Revol* some of the (many!) linux quickcam drivers: 6874b3713aSFrançois Revolhttp://www.lrr.in.tum.de/~acher/quickcam/quickcam.html 6974b3713aSFrançois Revolhttp://www.seismo.ethz.ch/linux/webcam.html 7039cd0ceaSFrançois Revol 7139cd0ceaSFrançois Revol* NW80x based: 7239cd0ceaSFrançois Revolhttp://nw802.cvs.sourceforge.net NW80x based (like the QuickCam I have here) 73d55e0f83SFrançois Revolhttp://tuukkat.awardspace.com/quickcam/quickcam.html for PID 0xd001 7439cd0ceaSFrançois Revolhttp://blognux.free.fr/sources/EasyCam2/04032006_11:11/drivers/nw802/ 7539cd0ceaSFrançois Revoldatasheets: 7639cd0ceaSFrançois Revolhttp://www.digchip.com/datasheets/parts/datasheet/132/NW800.php 7774b3713aSFrançois Revol 7874b3713aSFrançois Revol* Creative's own list of linux drivers: 7974b3713aSFrançois Revolhttp://connect.creativelabs.com/opensource/Lists/Webcam%20Support/AllItems.aspx 8074b3713aSFrançois Revol 8132065846SFrançois Revol* Other webcam drivers: 8232065846SFrançois Revolhttp://zc0302.sourceforge.net/zc0302.php?page=cams 8339cd0ceaSFrançois Revolhttp://www.smcc.demon.nl/webcam/ (philips) 84ffe8b391SFrançois Revolhttp://www.medias.ne.jp/~takam/bsd/NetBSD.html 8539cd0ceaSFrançois Revolhttp://blognux.free.fr/sources/EasyCam2/04032006_19:49/ 8639cd0ceaSFrançois Revolhttp://www.wifi.com.ar/english/doc/webcam/ov511cameras.html 87c38af24cSFrançois Revolhttp://mxhaard.free.fr/spca5xx.html 8832065846SFrançois Revol 89*40f0a873SFrançois Revolhttp://lkml.indiana.edu/hypermail/linux/kernel/0904.0/03427.html 90*40f0a873SFrançois Revol 9132065846SFrançois Revol* CMOS Sensor datasheets (rather, marketing buzz): 92c38af24cSFrançois Revolhttp://mxhaard.free.fr/spca50x/Doc/ many 9332065846SFrançois Revolhttp://www.tascorp.com.tw/product_file/TAS5110C1B_Brief_V0.3.pdf 9432065846SFrançois Revolhttp://www.tascorp.com.tw/product_file/TAS5130D1B_Brief_V0.3.pdf 95c38af24cSFrançois Revolhttp://www.mnementh.co.uk/sonix/hv7131e1.pdf 9639cd0ceaSFrançois RevolDivio NW80x: 9739cd0ceaSFrançois Revolhttp://www.digchip.com/datasheets/parts/datasheet/132/NW800.php 9839cd0ceaSFrançois Revolhttp://www.digchip.com/datasheets/parts/datasheet/132/NW802.php 9939cd0ceaSFrançois Revolhttp://web.archive.org/web/*/divio.com/* 10039cd0ceaSFrançois RevolAll from eTOMS (ET31X110 would be == NW800 but isn't there): 10139cd0ceaSFrançois Revolhttp://www.etomscorp.com/english/webdesign/product_search.asp 10239cd0ceaSFrançois Revolhttp://web.archive.org/web/*re_pd_sr_1nr_50/http://etomscorp.com/* 10339cd0ceaSFrançois RevolAgilent HDCS: 10439cd0ceaSFrançois Revolhttp://www.ortodoxism.ro/datasheets2/2/05jj45dcrga6zr0zjg7hrde83cpy.pdf 10532065846SFrançois Revol 10632065846SFrançois Revol* Linux USB stack: 10732065846SFrançois Revolhttp://www.iglu.org.il/lxr/source/include/linux/usb.h 10832065846SFrançois Revol 10932065846SFrançois Revol* Linux V4L webcam list: 11032065846SFrançois Revolhttp://linuxtv.org/v4lwiki/index.php/Webcams 11132065846SFrançois Revol 11274b3713aSFrançois Revol* Linux source code crossref: 11374b3713aSFrançois Revolhttp://lxr.linux.no/linux 11474b3713aSFrançois Revol 115ffe8b391SFrançois Revol* Fuji FinePix BeOS driver, should probably be merged at some point: 116ffe8b391SFrançois Revolhttp://bebits.com/app/4185 117ffe8b391SFrançois Revol 11874b3713aSFrançois Revol* Macam generic OSX webcam driver (interesting but sadly GPL and in ObjC): 11974b3713aSFrançois Revolhttp://webcam-osx.sourceforge.net/index.html 12074b3713aSFrançois Revolhttp://webcam-osx.sourceforge.net/cameras/index.php list of supported cams in OSX 12174b3713aSFrançois Revolhttp://sourceforge.net/projects/webcam-osx 122