OpenKODE® is a royalty-free, open standard that combines a set of native APIs to increase source portability for rich media and graphics applications. OpenKODE reduces mobile platform fragmentation by providing a cross-platform API for accessing operating system resources, and a media architecture for portable access to advanced mixed graphics acceleration.
The OpenKODE 1.0.1 core API specification and header files, optional OpenKODE extension specifications and headers, and links to related EGL, OpenGL ES, and OpenVG specifications and extensions, are in the OpenKODE API & Extension Registry
OpenKODE reduces mobile platform fragmentation by introducing the cross-platform OpenKODE Core API for accessing operating system resources to minimize source changes when porting applications between Linux, Rex/Brew, Symbian, Windows CE, WIPI and RTOS-based platforms. OpenKODE 1.0 also defines an advanced media-stack architecture by bringing together the OpenGL ES and OpenVG media APIs through EGL 1.3 and a set of EGL extensions to provide state-of-the-art acceleration for mixed 3D and vector 2D graphics. Subsequent versions of OpenKODE will use upcoming versions of EGL to integrate synchronization and data processing of streaming media using the OpenSL ES™ and OpenMAX™ media APIs to provide accelerated video and audio functionality that is fully integrated with graphics processing.
The following information is an excerpt from the OpenKODE Whitepaper.
Any product can utilize one or more Khronos media acceleration APIs, and an increasing number of products are now shipping that use these standards. OpenKODE takes an additional step to reduce fragmentation by defining a standardized set of native media acceleration APIs – and defining precisely how those APIs work together. OpenKODE even defines conformance tests to ensure that this trans-API functionality is implemented correctly.
OpenKODE also includes the new OpenKODE Core API that abstracts operating system resources to minimize source changes when porting applications between Linux, Rex/Brew, Symbian, Windows and RTOS-based platforms. OpenKODE Core will be familiar to POSIX and C programmers and is a small and light abstraction layer that provides access to lowlevel operating system functionality. An OpenKODE Core implementation is typically less than 100KB in size and adds very minimal performance overhead. OpenKODE Core provides advanced functionality, such as multi-threading under an event-driven architecture, while being carefully designed to provide real-world portability to a wide variety of mobile platforms.
Bundling a set of APIs is a similar approach to the successful DirectX on desktop Windows that defines Direct3D for 3D, DirectShow for video, DirectInput for input etc. - to provide the functionality required by rich media applications. OpenKODE takes a similar approach, but unlike DirectX, OpenKODE is an open, cross-platform standard that has been carefully designed to be implementable on a wide range of operating systems from Symbian, Windows and Linux to Rex and smaller RTOS kernels.
The OpenKODE set of native APIs
Through being designed to be deployable on almost any handset, the tested OpenKODE set of APIs can provide a reliable and cross-platform set of functionality for rich-media applications, significantly reducing application source fragmentation.
OpenKODE Core must always be present in any OpenKODE implementation, hence the name of this new API.
OpenKODE 1.0 brings together the OpenGL ES 1.1 and OpenVG 1.0 media APIs with EGL 1.3 plus defined EGL extensions to provide state-of-the-art acceleration for mixed vector 2D and 3D graphics. EGL provides common rendering surfaces that both OpenGL ES and OpenVG can manipulate directly.
Upcoming versions of OpenKODE will use future versions of EGL to integrate synchronization and data processing of streaming media using the OpenSL ES and OpenMAX media APIs to provide accelerated video and audio that is fully integrated with graphics processing. OpenKODE will also integrate OpenGL ES 2.0 as soon as the conformance tests for that version for that API are released. Extensions will be available to integrate these APIs in advance of the next full version of the OpenKODE specification.
OpenKODE 1.0 enables an implementer to select which media APIs are appropriate for a particular platform. The OpenKODE specification precisely defines the level of EGL functionality that is mandated to provide trans-API operation of the selected APIs.
Components within an OpenKODE implementation
All APIs included in a conformant OpenKODE implementation must pass the individual conformance tests defined for that API – including OpenKODE Core. In addition, OpenKODE defines a set of trans-API conformance tests to ensure that the media APIs and EGL correctly provide the specified mixed media functionality. Ensuring that the mixed-media functionality in OpenKODE is reliably implemented by multiple vendors is an important factor in genuinely reducing platform fragmentation for application developers.
OpenKODE does not mandate whether the set of APIs is shipped from a single vendor or multiple vendors, as long as the final complete implementation passes all conformance tests. The selected set of media APIs, together with associated EGL functionality, will often be provided by the silicon vendor. On the other hand, OpenKODE Core has been carefully defined to have no direct implementation dependencies on the media APIs, making it straightforward for the OpenKODE Core API to be deployed onto a platform independently from the media APIs.
Many middleware vendors will include OpenKODE Core implementations within their products to provide portability even if OpenKODE Core is not made available by the platform vendor, enabling rapid industry deployment of this new standard. Over time it is expected that platform vendors will provide OpenKODE Core as part of a complete OpenKODE implementation to enable easy porting of OpenKODE applications to their products.
A complete OpenKODE Implementation can ship from multiple vendors
The set of OpenKODE APIs provides a robust set of functionality that can provide acceleration for a wide range of applications, middleware and engines, regardless of the type of media acceleration needed, including: 3D games, Flash and SVG players, imaging and camera software, TV and video applications, widget toolkits and audio/video players. OpenKODE provides a fully capable media stack architecture that can form the low-level media processing foundation for sophisticated software platforms such as Brew, Symbian UIQ, S60, Android, LIMO, ALP, Qtopia and WIPI. Through the relevant JSRs, OpenKODE can provide acceleration for Java as well as native applications.
Additionally, OpenKODE has been designed to enable multi-process capable implementations, so that multiple applications can be accelerated even when they are executing simultaneously. This is a vital evolution in media architecture design as it enables handsets to provide a media-rich, multi-tasking environment. Significantly, a multiprocess OpenKODE media stack also enables the full power of media acceleration to be used by the window system or launcher applications - in parallel to applications – opening the possibility for accelerated, composition-based user interfaces.
OpenKODE can accelerate all media applications on a device
Also, being able to reliably mix-and-match media types within a single application will catalyze the development of new classes of mixed rich-media applications and user interfaces, for example:
OpenKODE provides the low-level functionality and access to acceleration needed on all media-capable mobile devices. As an open standard it enables key players in the mobile ecosystem communicate requirements and functionality more efficiently and effectively – growing the market opportunity for the entire industry.
OpenKODE can be valuable to all parties in the mobile ecosystem