Hardware JPEG2000 on Linux

On this page you can find a Linux driver for the Eurotech CTR1474 frame grabber for embedded surveillance/monitoring applications.

If you are looking for the old E0904 please go here.

The CTR1474 uses the Analog Devices ADV212 for encoding and decoding a JPEG2000 video stream. It is interfaced to the PCI bus via a PLX 9056. The video-front end is the TWA2835. Both PAL and NTSC standards are supported (even in de-interlace mode).

CTR1474 block diagram

The board has 8 input channel but the video front-end can work on 4 channels at a time. So each of the actual channels (numbered from 0 to 3) has an independent mux that can select one of 2 inputs (A and B). Each of the 4 channels can be used to display playback video stream coming from ADV212 instead of the analog video-in.

The video front-end has 2 internal path: the monitor and the record path. It's possible to do a lot of video manipulation operations on each of these (like composing 4 channels in a picture, mirroring, filtering and much more). The monitor path is more specialized for end-user video output (has capabilities such as zooming, identifying area of motions, etc.), the record path for archiving purposes (DVR mode, automatic timed switching of channels, etc.). It's also possible to overlay the video with a user defined bitmap. Each path can be independently routed to one of 3 available outputs: analog video X, analog video Y and digital connection to the ADV212.

The ADV212 is connected digitally to the video front-end. The connection can be switched in direction, so it's possible to record and to playback a video stream. The ADV212 is very flexible with a lot of options that can be set to achieve the right balance between quality and size of the obtained JPEG2000 frames. HIPI mode is also supported so the ADV212 can be used as a hardware accelerator for JPEG2000 encoding/decoding.

The video front-end provides motion, blind, night and loss of video detection. Such an event can generate an interrupt so polling is not required.

The current driver revision is 4.7 which is a complete rewrite for a better code style. It does use newer Linux kernel facilities so it's not compatible with aged kernels. You can download a copy here: ctr1474-4.7.tar.gz. The doxygen generated documentation is available on-line. The driver is released under the GNU Public License v.2, a complete copy is in the tarball.

Here you can see some picture of the CTR1474 itself obtained with a cheap (LIDL) surveillance camera attached to it:

I wish to thank Eurotech for letting me work on this interesting project. And especially Luca Calligaris, Stefano Zanolin, Claudio Trevisan, Enrico De Fent and Mauro Barella for their support. I wish to thank Christine Bako from Analog Devices for kindly and promptly answering my questions.