Re: [libdc1394-devel] Re: Major code cleanup: new branch for 2.0?
Capture and control API for IIDC compliant cameras
Brought to you by:
ddouxchamps,
gordp
From: Damien D. <da...@do...> - 2004-11-01 04:59:26
|
Hi Johann, On Mon, 2004-10-11 at 03:11, Johann Schoonees wrote: > Yes, I think this is worth the discussion. > > I am not sure what you mean by "cleaning libdc1394". If you mean > retaining only the low-level register access then, yes, we need a > "middle" API for setting things up and providing some of the functions > libdc1394 currently does (particularly DMA). I just think it's a good time to review the current interface, structures,... to make the lib better and easier to use. I don't wish to remove functionalities of libdc at this time. I would prefer a strong polish and a quick release of an updated version. > I am a little unsure of what exactly the IIDC-API is (or will be). My > initial assumption has been that it will define an interface that > libdc1394 (or a "middle interface") could offer to higher-level libs > and apps like Camwire and Coriander. > > For me, the critical question is: Does IIDC-API mention or assume > things about IEEE 1394? If it does, then in my opinion it belongs > inside libdc1394 (or its successor). If it is more generic (only > mentions camera functions like start-stop, shutter speed, frame rate, > etc) then it is on the same level as Camwire. Yes it assumes the camera is an IIDC1394 camera. The IIDC capabilities (like trigger modes,format7...) are too much far-fetched for the highest level interface. The API keeps a relatively low level to allow all functionalities. > To get an idea of how Camwire differs from both libdc1394 and perhaps > the IIDC-API, have a look at the two headers camwirebus.h and > camwire.h. There is no mention of IEEE 1394 in them. > > For example, to set a shutter speed, the user calls > camwire_set_shutter() with a float argument in seconds. Internally, > Camwire has to translate that (using a config file for the particular > camera) into a shutter register value which it passes to > dc1394_set_shutter(). While this is certainly suitable for general purpose users (e.g. webcams, simple video grabbing,...) I think libdc or iidcapi should remain low-level for power users. *But* they should also aim to be as simple as possible (simple structures and interfaces, only one way to perform one action,...). I would favor the merge of libdc and iidcapi, if the official API is flexible like libdc. > Using the shutter example, if the IIDC-API expects a shutter register > value, then it belongs in the 1394-IIDC world. If it expects a time > in seconds, then it belongs in the camera user's world and I would > have no objection to merging Camwire with it. (Of course the shutter > is only one example. One would have to look at the whole API to > decide where it fits in.) The IIDC-API will expect a value, either register or absolute (if such feature is supported by the camera). There is no will to include databases of cameras in the API, and I think we should avoid that in libdc too. I'm afraid such database will be difficult to maintain, especially because the cameras have different firmware revisions. It is thus obviously better if camwire remains separated from the IIDC-API. Damien -- _ Damien 'Takahara' Douxchamps ('- Post-doctoral investigator //\ Image Processing Group, Nara Institute of Science and Technology V_/_ http://chihara.aist-nara.ac.jp/ |