SPx AV Video Software


SPx AV is Cambridge Pixel's audio and video streaming, processing and display software. It allows audio and video data from multiple sources to be compressed, distributed, processed and recorded. The software is available as an executable application (SPx AV-Server) and as a middleware library, allowing system integrators to develop their own applications.

Applications developed with SPx AV can exploit a wide range of video capture devices including PCI and PCIexpress hardware and XMC cards for embedded (cPCI, VME etc) solutions. The software provides an open, extensible framework for video manipulation, including software-based encoding and decoding using standard nVidia and AMD GPUs. On the client side, Cambridge Pixel's compositing software allows real-time video to be overlaid with graphics derived from Windows or Linux (X11) applications to provide a multi-layer display. Real-time video can be alpha-blended with underlays and overlaid with text or graphics.

The server software is accompanied by client libraries that support the receipt, decompression and display of video on Windows and Linux displays. SPx AV supports a number of different input sources and compression technologies, providing the user with a flexible framework to build their system around. This approach means that the user is not restricted to specific capture hardware or compression methods and is free to specify their own system architecture.

SPx Block Diagram Enlarge

SPx AV Middleware

The SPx AV software has been designed to be a flexible middleware solution for video applications. The approach, which has been used in Cambridge Pixel's established SPx radar processing software, is to provide a flexible set of software capabilities that provide all the major functional components of a video and audio capture, distribution, recording and presentation solution. System integrators can work with the SPx AV software to build complete systems, complementing the library software with custom application code. Cambridge Pixel's engineers provide best-in-class technical support from software engineers who combine application knowledge with first-class programming skills across Linux, Windows, .NET, Java and others.

Video Capture + H.264 Compression

The Tech Source Condor VC100x video capture and compression card supports a wide range of video capture formats in a XMC form-factor. The SPx AV software provides a controlling API for this card to allow the compressed H.264 video to be streamed to multiple display clients, whilst simultaneously recorded. On the client side, software-based GPU-accelerated decompression allows the video to be displayed under Windows or Linux with optional graphics overlays updated in real-time. The programming API provides a flexible toolkit of software components that handle the networking, decompression and display compositing.

Matrox Morphis JPEG-2000 Support

SPx AV supports the Matrox Morphis PCI/PCIexpress card for video capture and JPEG-2000 compression. The standard AV Server can be configured to receive JPEG-2000 compressed video from Morphis and distribute the data to any number of client systems. On the client, the video may be decompressed using another Morphis card, or host software. The SPx AV library provide automatic monitoring of frame latency during the encoding and distribution process, allowing detailed verification testing of an end-to-end distribution system. The Morphis cards accepts standard NTSC/PAL video inputs through front-panel BNC connectors.

Video Compression and Decompression

The volume of data created by video sources is potentially very large. Compression is therefore usually necessary in order to accommodate this data. SPx software works with COTS hardware and modern compression technologies, such as H.264, to achieve substantial reductions in data volumes. Standard CPUs and GPUs can be utilised for compression and decompression, alongside their existing processing requirements.

SPx AV software exploits the enormous power of the GPU to provide hardware-accelerated H.264 video compression or decompression inexpensively. This capability is presented in a flexible software framework that can be incorporated into server and client applications.

Flexible Architecture

Under Windows, SPx AV can take its input from a DirectShow or Media Foundation compatible device. This makes it compatible with a wealth of COTS video capture hardware including PCI and PCIe cards as well as webcams and other USB devices. The Matrox Morphis JPEG2000 capture and compression card is also directly supported, along with the TechSource Condor VC100x. SPx AV can automatically detect which input sources and compression methods are available, selecting the most appropriate encoding for a given input source automatically.

The SPx AV software can also take advantage of the power of GPUs to offload the compression or decompression of video using the H.264 algorithm. This saves valuable CPU resource, whilst requiring only that an inexpensive COTS graphics card is present. Configuration files provide a convenient method to save and restore a particular system setup. The configuration is saved as a set of logically named parameters within a human-readable ASCII text file, making it easy to manage configuration files and perform simple edits on them if required.

GPU Processing

The SPx AV libraries support GPU accelerated processing of video frames. Video data may be processed prior to display to enhance features of interest, or else information may be extracted from the video data, for example for object detection and tracking.

The SPx AV library provides the processing middleware that allows client applications to implement custom data processing on the GPU. In a typical application, compressed video may be received by a SPx AV client application then decompressed manipulated, combined with graphics and then displayed. This processing chain operates on the GPU and may combine standard library modules and custom processing components.

Quality of Service (QoS)

Video data packets from an SPx AV server are numbered and include a unique server ID, a channel number and an incrementing frame or field number. This enables clients to select which server they connect to and which channel, or channels, of video they receive. It also enables clients to determine whether any of the video data has been lost during transmission or if packets have been received out of order.

Transmission of video may be controlled automatically, to reduce data bursts on the network and warnings are provided if data cannot be distributed in real time or if packet loss is occurring. Transmission may also be adjusted automatically in the event of network overload. Each channel may be assigned a priority, with lower priority channels being affected first if the network becomes too busy. Data rates may then be controlled by a configurable combination of sub-sampling and increased compression. A channel may have a priority set such that it will not be subject to these data rate reductions. This allows the user to make best use of the available bandwidth.

Record and Replay

One of the core functions of the SPx AV software is the ability to write video content to disk and to provide a replay function. The software allows the user to record a video input at the same time as transmitting it across the network. Several video streams may optionally be multiplexed together within the same recording file, allowing for guaranteed synchronised playback of the individual streams from the server. Recording files are fully indexed, allowing for fast navigation to a chosen time point, which is essential for large recordings. The timestamp information within recordings is derived from the local system clock. This means that it is simple to achieve accurate time-stamping and synchronisation of multiple recordings or multiple servers by using a time source, such as NTP or GPS, to set the system clock.

SPx AV-Server

The SPx AV-Server application supplied by Cambridge Pixel runs as a background process, presenting the user with a socket command interface. A Java GUI is available that communicates with the SPx AV-Server and provides all its controls and features in a user-friendly, graphical control window. The Java interface runs as a client to the SPx AV-Server and is capable of listening to the network for available servers. Once a server has been selected by the user and a connection established, the Java interface provides full control over the server's operation:

  • Full control over the SPx AV-Server application
  • Graphical status reporting (CPU and network loading, data rate and latency)
  • Preview window: displays thumbnail of current video source
  • Client connection information
  • Runs on Windows and Linux

Client Interfacing

A C++ client library is available that provides full control over the server's operation and also simplifies the receipt and display of network video. Client applications built using the client library may control all aspects of the server's operation. For example, the client may select how a video being received by the server is encoded, whether the incoming video should be recorded and which file should be chosen to replay. SPx AV supports the use of native display visuals on both Windows and Linux systems, making it easier for the application programmer to integrate video into existing code and not requiring the use of additional, third-party software.

The client library provides dynamic automatic selection of the most appropriate available decoder based on the input video encoding. This can reduce the amount of application code required and enables the client application to handle changes in video encoding automatically.

Comprehensive example client application code is supplied, to help developers write their own applications quickly. Monitoring SPx AV-Server provides a number of monitoring and diagnostic features to aid the user in ensuring that the system is appropriately configured and performing as desired. Among these facilities is the ability to measure the latency between video transmission and receipt and display by the client. The SPx AV-Server also sends regular heartbeat messages onto the network, containing information about the status and health of the server. These messages can be used to alert the user to a number of events, including: loss of input source data, loss of data during encoding, network or processing overloads.

view > SPx AV Software
SPx Brochure
view > SPx AV
Data Sheet
SPx Scan Datasheet
view > GPUs Offer Dual Solution for Radar and Video... COTS Journal November 2013
view > Streaming real-time video with CPUs/GPUs Military Embedded Systems Article