This chapter describes the components that make up IC Imaging Control and the basic concepts behind the library.
IC Imaging Control is an API that covers all aspects of DirectShow that are related to managing, controlling and accessing imaging devices and image data. It simplifies the usage of DirectShow by maintaining hardware independence. The abstraction implemented by IC Imaging Control addresses all programmers who are familiar with frame grabbers. In other words: IC Imaging Control lets DirectShow look like a frame grabber.
Because the idea behind IC Imaging Control is to build something similar to a frame grabber, the main component IC Imaging Control provides methods to control the inputs, video formats, and the grabbing process which are typical for frame grabber APIs. In contrast to most frame grabber APIs, IC Imaging Control provides:
The image data is generated by the video capture device as consecutive frames that build an image stream running from the device to the sink. If the display is activated, the image stream is split, feeding the sink and the display. In this case, the image stream is a graph that looks like a "Y" and consists of the following segments:
While the figure above illustrates the flow of image data, the next figure shows the relationship between the image stream and the classes.
IC Imaging Control provides generic access to device properties, multiple overlays and filter chains at different locations of the image stream:
As described above, IC Imaging Control provides very powerful components to manipulate and control the acquisition and display of image streams. It is obvious that this functionality requires a certain overhead for internal management and processing. This may lead to the conclusion that IC Imaging Control is not suitable for high speed image processing application. This is absolutely not the case, as all features that make it easy to build complex applications with IC Imaging Control may be switched off. For applications that require as much CPU time for image processing as possible, IC Imaging Control may be configured in a way that the overhead to process the image stream is comparable to a low level frame grabber or FireWire library. In order to reduce the internal overhead to a minimum, you have to:
Doing so guarantees that the image data is not modified or copied by IC Imaging Control nor DirectShow.