Exchanging Data With Computers
FireWire cameras are able to exchange data with any other FireWire device, as long as both devices use the same protocol (please cf. Structure / Interface). Depending upon the specific camera, these data are:
- Image and audio files (protocol: SBP-2)
- Image and audio data flows (protocol: AV/C or DCAM (IIDC))
- Parameters to control the camera (protocol: AV/C or DCAM (IIDC))
If the camera is to communicate with a computer, this computer has to have a FireWire interface and to use the camera's protocol. The old days of FireWire cameras were dominated by company specific solutions. Some specialist offered interface boards and drivers, which were accessible only by their application software. Following this approach, application software is in charge of the protocol. Since this solution utilizes the computing resources in a very efficient manner, it is still used in the context of highly specialized, industrial projects. This strategy often leads to problems, using other FireWire devices, as for instance hard disks. Open systems avoid this disadvantage.
Open systems are based on a layer model. The behavior of the single layers (interface board, low level driver, high level driver and API) follows the constraints of the respective operating system manufacturer. Application software is allowed to access operating system APIs, but never should access any level lower. In the context of FireWire cameras, the high level drivers are responsible for the protocol. The low level drivers and the interface boards put the definitions of the standard IEEE 1394 into effect. The advantage of this strategy is the simple realization of application software, which is independent of hardware and specific manufacturers.
Especially in the domains of photo cameras and special cameras hybrids between open and company specific systems are used. The interface boards and the low level drivers typically adhere to the standard, while the levels above are company specific.
The basic characteristic of open systems is not to use the APIs of the hardware manufacturers, but those of the operating system. For Apple and Microsoft the subject "image and sound" is of high importance. According to their APIs - QuickTime and DirectX - are very well known. However, in the public perception they are reduced to the reproduction of audio and video. Actually, they are powerful APIs that are also responsible for image acquisition.
Under Linux this API is called video4linux. It is less powerful than QuickTime and DirectX and therefore additional APIs exist besides video4linux:
- Photo cameras
- Photo cameras usually use Linux' infrastructure for mass storage devices. One of the typical applications is digiKam.
- Video cameras
- Video cameras are accessed by various APIs. The image to the right depicts the access of the video editing software Kino to the libavc1394 API. Kino also accesses other APIs which are not shown in the image to simplify matters.
- Special cameras
- The most important API for special cameras is libdc1394. The image to the right depicts the access of the application software Coriander to this API. Coriander controls FireWire cameras that are based on the protocol DCAM (IIDC) and acquires their images.
In order to simplify the use of video4linux and the dedicated APIs, the meta API unicap has been developed. It covers their bits and pieces with the aid of a simple programming model.
Read more about this topic: Fire Wire Camera