OpenML is a cross-platform standard programming environment for capturing, transporting, processing, displaying, and synchronizing digital media (2D and 3D graphics, audio and video processing, I/O, and networking). Any developer or company can freely download the OpenML Specification & SDK and implement and ship products using OpenML completely free of charge, royalty or licensing.
Content creators, whether working on a video production, developing a game, or constructing an interactive disc, are currently forced to use many different APIs and tools from many different vendors and organizations to simply tie their multiple applications and hardware peripherals together.
Similarly, application developers in this situation currently have to make some very difficult decisions about the APIs to use in order to access the various pieces of hardware in the system. Much of the work is liable to be hardware- and operating system-specific and require hand-tuning to achieve acceptable performance.
The goal of OpenML is to rectify this situation. OpenML offers a common specification for interoperability across platforms, operating systems, hardware devices and software applications. The existence of such a standard will allow content developers to mix and match applications and hardware and develop their multimedia content without regard to the hardware that might or might not be available during playback. It will allow application developers to spend more time and energy on application development and much less time on mundane details such as device control, synchronization, and buffering issues. It will also free them from the unenviable task of dealing with different APIs for video, graphics, and audio for each operating environment.
Problem |
Solution |
|||
#1: Configure and control the Input/Output and processing of video and digital audio | ![]() |
SGI's dmSDK Digital Media Handling |
![]() |
![]() |
#2: Configure and control display devices | ![]() |
SGI's Xdc extension to X11 Display Control |
||
#3: Enable OpenGL hardware to add more value to the media authoring workflow | ![]() |
OpenGL Extensions Integrating graphics and video |
||
#4: Synchronization of diverse media streams (graphics, audio, video) | ![]() |
UST/MSC Synchronization |
The diagram below shows the major components of the OpenML environment from a programmer's perspective. Items shown with a blue background already exist, and the OpenML programming environment does not change how they are accessed in any way. Items with a red background are new in OpenML.
Window System
Rather than attempt to achieve cross-platform standardization in this
area, the OpenML environment will simply coexist peacefully with the
native windowing environment.
OpenGL and OpenML tight and synergistic integration
OpenGL Extensions Bring Together the Worlds of 3D and Video
Extensions to OpenGL add capabilities for synchronization with other
parts of the system, for improved rendering performance and quality,
and for improved treatment of video formats.
Extensions include:
MLdc API for abstracted display control
The OpenML Display Control API (MLdc) provides an interface to initialize,
set and change parameters to control video output devices MLdc also facilitates communication to and
from monitors capable of sending and receiving commands.
ML Digital Media I/O
The Open Source OpenML Media Library (ML) provides an application programming interface
to the digital media I/O, digital media data conversion, and digital
media synchronization facilities in an OpenML programming environment.
ML is a low-level API in the same sense that OpenGL is considered a
low-level API: it exposes the capabilities of the underlying hardware
in a way that imposes little policy.
The primary functions of ML are to:
The UST/MSC/SBC Solution for Synchronizing Audio, Video and Graphics
Underneath all of this are system facilities that provide precise timing
and synchronization information.
Using UST/MSC/SBC
There are three level of participation in OpenML development and use:
OpenML is the key to enabling the growth of the digital content market for both hardware and software providers. It provides the abstraction layer that allows application developers to focus on their value proposition, enables their products to move easily across the new range of platforms, and lets them move rapidly to reap the rewards of emerging opportunities.