Architecture overview
This architecture is especially designed for NAO's camera. Other video sources are using this architecture by emulating parts such as the driver in stream mode and its circular buffers management.
A GVM needs to work on a specific image format to perform its processing. So it registers to the VIM that will apply transformations on the stream to the required format. If this format is a native one for video source, a direct raw access can be asked (but it implies some constraints).