Bluecherry's primary device for their video surveillance applications is the Softlogic based MPEG-4 codec card, which is available in 4, 8 and 16 channel models. The original driver for this card, although available as open source, was pretty pathetic to say the least. Most of it was just a kludge of the Windows driver, exposing all of the functionality, but with little effort to make it Linux savvy.
Ben Collins rewritten the driver so that it makes use of Linux's Video4Linux2 and Alsa driver API's.It's currently 90% functional, and many times more efficient than the original OEM driver.
Here are some key features of "Softlogic 6010 Driver":
· Video4Linux2 interface allows easy use of existing capture software
· Alsa interface allows for easy audio capture (however, see G.723 caveats from my previous posts)
· Zero-copy in the driver. The original driver DMA'd and then copied the MPEG frames to userspace. The new driver makes use of v4l2 buffers and can DMA directly to an MMAP buffer for userspace.
· Simultaneous MPEG/MJPEG feed per channel, selectable via v4l2 format
· Standard v4l2 uncompressed video YUV display with multi-channel display format (4-up)
What's New in This Release: [ read full changelog ]
· As previously mentioned we have been working hard over the past few months on the driver for version 2 of our Linux hardware compression card. Since version 2 is a complete rewrite of our DVR software we naturally wanted to start with a clean driver, one that was written from scratch. So, we leveraged the Linux kernel’s API for Video (Video4Linux) and Audio (ALSA). This effectively puts Bluecherry as the first company to produce a multi-input MPEG-4 hardware compression GPL driver written around the Linux kernel’s API.
· While we have a few features we still plan to add to the driver along with the Video4Linux API, but it’s close enough that we feel comfortable releasing the driver to the community. The driver was originally intended for version 2 of the Bluecherry surveillance application, however we felt that other open source applications could make use of the time and effort we put into the driver.
· This driver will load up to 16 MPEG-4 and JPEG encoders, 16 audio (ALSA) devices, along with a uncompressed YUV display port. This display port allows you to change the composite video output, for example you can have a quad view (or more) of attached cameras, also known as a “4-UP”. This can actually save hundreds of dollars, since technically you would not need an external video quad or mulitplexer to combine separate cameras into one video output.
· The driver is really meant for those with a bit of technical knowledge in using the Video4Linux API, since (currently) most Video4Linux expect to receive MPEG-2 / JPEG / YUV from the Video4Linux API. This means that the majority of open source applications will only be able to access the JPEG feed off the card. It should be noted that the FPS on each port in JPEG and MPEG-4 are dedicated. This basically means that there’s no switching of inputs, so applications can expect to receive a full 7.5FPS @ 704×480 (Using 16 channels). Making use of the MPEG-4 stream would require some modification in the Video4Linux support in the user-space application, or piping the MPEG-4 stream into an application that supports MPEG-4 streams.
· Note: This currently only covers our MPEG-4 cards. We will be adding support for a seperate line of H.264 in the next month, so check back for an updated driver.