AlexVG t-player: an SVG Tiny 1.1 Player

SVG is one of the most important components in the web environment. They also provide SVG Tiny for vector graphics facilities on small scale embedded systems including mobile phones. On the other hand, OpenVG is a 2D vector graphics API for embedded systems, which is established by Khronos group. In this paper, we present an SVG Tiny 1.1 Player on our OpenVG implementation. Since OpenVG covers most of rendering functions in SVG Tiny standard, our implementation strategy would be an efficient and cost-effective way of implementing SVG Tiny applications especially on small-scale embedded systems.

OpenVG focuses on the efficient implementation of vector graphics applications. It aims to not only hardware acceleration features but also efficient software implementations. In near future, lots of chip vendors and solution providers will provide hardware and software OpenVG products. These OpenVG products will be available on many handheld devices and embedded systems. Thus, especially from the view point of cost-effectiveness, it would be a good choice to develop various applications on this graphics API.

When we already have an existing OpenVG implementation, it is intuitive and relatively easy to implement SVG Tiny applications, based on the existing OpenVG facilities. As an example, most of SVG Tiny rendering features can be achieved by the OpenVG rendering pipeline, whose rendering performance may be even better with smaller code size. In this case, another benefit can be the reduced size of the footprint of the SVG Tiny applications.

Since OpenVG covers most of SVG Tiny rendering functions, SVG Tiny and its applications can be implemented on the OpenVG. In contrast, OpenVG does not provide functionalities for scene graph handling, parsing, animation, link and scripting. Thus, we need to implement these additional features, which are not directly supported by OpenVG.

To show the correctness and benefits of our implementation strategy, we implemented an SVG Tiny 1.1 Player, named AlexVG t-player, on our OpenVG implementation, AlexVG. This application program starts from SVG parsing stage. The parsed SVG element trees are traversed to prepare the OpenVG attributes for the final rendering stage. This application program uses a internal stack to mange the SVG attributes. We expect that this implementation result shows an efficient and cost-effective way of implementing SVG Tiny applications.

In contrast, OpenVG rendering pipeline can handle only one graphics context, and thus, all primitive drawings from SVG Tiny should be passed to the OpenVG pipeline one by one. It may become a bottleneck for the rendering speed. In the new version of OpenVG 1.1, they will introduce multiple graphics contexts, and thus, further research is needed for organizing the SVG scene to optimize the rendering interface calls, to finally reduce the number of passes in the underlying OpenVG pipeline.