 |
 |
 |
Platform-independent API for hardware acceleration
OpenRL is a new platform-independent Application Programming
Interface (API) which allows developers of high-performance
image processing applications (such as video effects plug-ins
for non-linear editing), to take advantage of high performance
hardware acceleration platforms, such as Aspex's Accelera™ 3000
PCI-X card.
The OpenRL API is a high-level API, allowing programmers to
access the power of embedded hardware acceleration platforms
without having to learn a new programming model.
Unlike OpenGL™ or DirectX™, OpenRL provides a high-level node-based architecture, optimised for processing bitmap images.
With OpenRL, developers can quickly develop complex image processing applications by connecting together different "nodes" or
filters.
Download OpenRL FAQ PDF
PDF format | Approx 125kb
OpenRL stands for "Open Rendering Library". We decided to call the API "OpenRL", as it shares several conceptual similarities with
the widely-used OpenGL API:
|
A software interface to graphics processing hardware
Platform-independent, supporting multiple graphics hardware platforms
Operating-System independent
An open industry standard
Royalty-free API
|
[return to top]
OpenGL and DirectX were developed and optimised for the display of synthetic objects (such as PC graphics or 3D games) onto a monitor using the GPU on a graphics card.
OpenGL is not well suited for 2D processing of real (bitmap) images, such as film or video editing, which only use a small subset of the OpenGL pipeline, and which usually operate from disk: disk or memory: memory rather than being drawn on a screen.
Non-linear editing systems and effects plug-ins often use parts of OpenGL for rendering previews to the screen, but still use the CPU for final rendering.
OpenRL is intended to allow acceleration of that final rendering step.
To quote nVidia: “OpenGL and DirectX expose too many hardware details…and are burdened with large portions of the API dedicated to interactive functionality that is not used in film.”
[return to top]
Although conceptually similar to DirectShow, which also provides a high-level node-based architecture, OpenRL will be supported across multiple platforms, whereas DirectShow is limited to Windows operating systems.
OpenRL also includes native support for hardware acceleration, including acceleration of multiple graph nodes by the same hardware platform.
[return to top]
Yes, the OpenRL API will be a royalty-free, open standard.
[return to top]
Not at the moment. OpenGL and OpenML™ are maintained by the Khronos Group. The OpenRL API is being developed independently by Imagineer Systems and Aspex Semiconductor.
[return to top]
OpenRL is a node-based architecture. This means that each library function is represented as a "node", or filter, with input and output "pins". Additional pins are used to configure parameters for the nodes. The programmer constructs the required functionality by connecting together nodes in a "node tree", or filter graph, similar to that used in Apple Shake or Microsoft DirectShow.
[return to top]
OpenRL is all three! OpenRL consists of three main elements:
|
1. The OpenRL API, which provides C functions to create nodes, connect them together using pins, and to set and read values of pins;
2. OpenRL node libraries, with a core library of basic image processing functions, and a framework for development of new library functions. OpenRL libraries consist of functional code, and supporting XML metadata, which describes the capabilities & performance of the libraries, allowing the scheduler to make intelligent decisions about execution of the node tree;
3. The OpenRL Scheduler, which controls the execution of the OpenRL node tree on the available resources.
|
[return to top]
Yes. There are two ways of creating custom OpenRL nodes or filters:
|
1. A "macro node" can be created, allowing a complete OpenRL node tree to be grouped into a single OpenRL node. Individual control pins within the macro can be defined as constants, or flagged as being macro-level control pins.
2. A new function can be created with an OpenRL-compliant C interface, and published as an OpenRL node with appropriate XML metadata.
|
[return to top]
Yes, an entire OpenRL node tree can be encapsulated in a DirectShow™ wrapper and integrated into a DirectShow filter graph.
[return to top]
For maximum compatibility, the OpenRL API is written in C. However, as the node-based architecture of OpenRL is inherently object-oriented, OpenRL functions can be called directly from C++.
[return to top]
OpenRL is fully resolution-independent. OpenRL allows the user to specify a number of image sizes and formats:
|
RGB, RGBA, Greyscale, Greyscale + Alpha
8, 10, 12 and 16 bits per component
|
The default OpenRL image types have multiple components packed into an integer number of bytes.
[return to top]
Where the target input and output formats do not correspond to any of the OpenRL image formats, special interface nodes can be created to translate the image formats at the boundaries of the node tree. For example, custom OpenRL nodes can be created to take images from a third-party application such as Adobe AfterEffects, process the images using the OpenRL node tree, and return translated images back to AfterEffects.
The OpenRL core image processing library from Aspex will include several colour space conversion functions to assist with format translation.
[return to top]
Although the OpenRL API is platform-independent, the library functions and scheduler are
platform-specific. Initial supported platforms will be Linux (RedHat / Mandrake) and Windows XP, with Max OS-X support planned for late 2005/early 2006.
[return to top]
The initial release of OpenRL will include a core image processing library ported to Aspex's Accelera 3000 platform.
[return to top]
The Accelera 3000 is a full-length PCI-X plug-in card with four Aspex Linedancer™ Extreme Processors and 1GB of SDRAM.
With 16,000 parallel processing elements, Accelera offers significant performance increases over single-processor or dual-processor machines.
Unlike fixed-function hardware accelerators, the Accelera board is completely software programmable, allowing multiple processes in the workflow to take advantage of the high performance of Aspex's Linedancer processors.
Linedancers are programmed in 'C', with a small number of extensions to support parallel processing.
[return to top]
The initial release of the Aspex OpenRL scheduler will execute the OpenRL node tree on the hardware resources specified by the programmer/user, i.e. the Accelera 3000 platform, or the host CPU.
For accelerated nodes, it automatically takes care of image transfers from the host machine to the Accelera 3000 card and back again when needed. Where several accelerated nodes are executed sequentially, accelerated code is executed in sequence on the Accelera card to minimise data transfer bandwidth requirements.
Future releases of the Aspex OpenRL scheduler will optimise system performance by intelligently allocating tasks to the appropriate resources based on the projected execution time and image transfer time. For example the scheduler may decide not to accelerate a simple function if the data transfer overhead would negate the benefit of the acceleration.
[return to top]
Aspex's OpenRL core image processing library consists of the following functions:
|
|
Convolution Filters
|
Generic 1D FIR filter
Generic 2D convolution filter (3x3, 5x5, 7x7, nxn, nxm)
|
|
Sharpen & Blur
|
Gaussian Blur, Sharpen, Unsharp
|
|
Edge detection
|
Sobel, Roberts, Prewitt, Frei-chen, Laplacian, Laplacian of Gaussian
|
|
Pixel processing
|
Over compositing (Alpha blend), Add, Sub, Mult, Div, AND, OR, XOR, Invert
|
|
Log-Lin conversion
|
Conversion to and from SMPTE-268M 10-bit logarithmic film colourspace and 16 bit linear colourspace
|
|
Colour space conversion
|
Lookup-table colour correction, RGB YUV conversion, RGB HSV conversion
|
|
Image transforms
|
Fast Fourier Transform, Discrete Cosine Transform, Discrete Hadamard Transform
|
|
[return to top]
Imagineer will be licensing several high-value OpenRL-compliant functions, accelerated on the Aspex
Accelera 3000 platform.
These functions are ideal for developers of high-value video effects systems:
|
|
Correlation
|
An image correlation function, suitable for motion tracking applications
|
|
Motion Blur
|
A proprietary motion blur operator with variable blur per pixel, computed from a homography or
flow image. Camera distortion may also be specified.
|
|
Retimer
|
A proprietary motion-based retimer. This can also be used with interlaced video for
frame-rate conversion.
|
|
Temporal resizer
|
A proprietary up/down resolution converter, using information from other frames
in an image sequence to achieve ultrahigh quality results.
|
|
Interlace/Deinterlace
|
Proprietary motion-based interlacing & de-interlacing.
|
|
Chroma Keyer
|
A proprietary chroma keyer.
|
|
Warping
|
Projective Warp - translation, rotation, scaling, shear & perspective.
|
|
[return to top]
Yes, we will also be developing reference implementations of each of the nodes which will
execute on the PC processor.
[return to top]
The initial release of OpenRL with the core libraries as described is planned for October 2005.
[return to top]
Yes, we would welcome contributions and feedback to the OpenRL development effort. As OpenRL
is an open standard, contributors must be prepared for all contributions to become public domain.
[return to top]
|
|
|
|