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 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.
Benefits of Digital distribution
Distribution and switching of analogue video is extremely expensive and inflexible, requiring dedicated cabling and specialised switches. Transmitting video digitally however, allows the user to take advantage of infrastructure that may already be in place (Ethernet is ubiquitous). Compression allows several video streams to be present within a modest amount of network bandwidth. As network bandwidths continue to expand, so too does the capacity to add additional video streams. With a digital distribution system, additional nodes can be added readily, simply by connecting them to the video network. Furthermore, by using IP multicast, there is no additional network overhead associated with adding additional clients and each client may have access to any of the videos on the network.
Network Video Distribution
Digital video distribution utilises the common Ethernet network infrastructure already present in many instances. Digital distribution systems provide the following key benefits over analogue equivalents:
· Readily scalable - additional input or display nodes can simply be added to the network
· Many-to-many switching - each display node can access each video source that is present on the network
· Utilises existing infrastructure - Ethernet networks are ubiquitous, eliminating the need for specialist switches and cabling
The use of IP multicast means any number of clients may connect to the same video stream without imposing any increase in network load. Each client may subscribe to any of the videos available on the network. A single server may be connected to several video sources, distributing each of their videos on separate multicast addresses to any number of clients.
All video data received from an SPx AV server is packaged in Cambridge Pixel's standard SPx data format. This means that the video can readily be received and displayed by other SPx applications (e.g. RadarView display client), providing a clear path to integrated radar and video display applications.
Feature summary
Video Input Options: |
Hardware capture (PCI, PCIe, XMC cards) |
Webcams |
|
Network Video Cameras |
|
Network AV Servers |
|
File Replay |
|
Screen/Window capture |
|
Test Pattern generation |
|
Video Compression and Decompression Options: |
JPEG-2000 |
H.264 (MPEG-4 Part 10, AVC) |
|
Software (GPU/CPU) or Hardware-based Windows Media Video |
|
Audio Compression (WMA, AAC) |
|
Streaming: |
Distribution of multiple channels of compressed video and audio |
UDP Distribution |
|
Configurable network parameters |
|
Graphical tools for analysis and configuration |
|
Low latency |
|
Latency monitoring and reporting tools |
|
Record and Replay: |
Recording of video and audio |
Simultaneous distribution and recording |
|
Indexed recording files |
|
Camera Control: |
Remote or local camera control |
Pelco-D interface |
|
Metadata: |
General-purpose annotations with video and audio |
Client Software: |
Flexible client library |
GPU-based decompression of H.264 |
|
Display rendering and overlay annotation, including watermarks, semi-transparent underlays and overlays of text or graphics. |