I’ve attended a webinar entitled “Harness the power and flexibility of the Midgard architecture for Embedded GPUs” presented Steve Steele, Product Manager at ARM Media Processing Division and sponsored by EETimes. Steve starts to talk about the current GPU architecture “Utgard” used in Mali-200, Mali-300 and Mali-400MP which allows resolutions up to 1080p and are used in many smartphones today including Samsung Galaxy S2 (Mali-400MP) which provides great graphics performance. He then explains how mobile devices are used today and what performance we may except in the future: Mobile As Main compute platform: New UI and Augmented Reality Social Networks and emails Content Creation/consumption 1 Device to multiple screen (e.g LCD screen and TV via HDMI) Evolving Processing Demand: Graphics Complexity multiplied by 25 Increase in screen size (1080p resolution support). Graphics API: Khronos OpenGL ES, Microsoft DirectX 11 Compute API: OpenCL, Renderscript Compute and Direct Compute. After this overview, […]
WebP Image Format Could Replace JPEG, PNG and GIF
In September 2010, Google announced the WebP image format with lossy compression. Since last month, WebP can also support animation, ICC profile, XMP metadata and tiling. Today, it announced lossless compression and transparency support. WebP could be used as an alternative to JPEG, with 25–34% better compression compared to JPEG images at equivalent SSIM index as well as PNG as it now supports lossless compression and transparency – also known as alpha channel – in both the lossless and lossy modes. On average, Google got a 45% reduction in size when starting with PNGs found on the web, and a 28% reduction in size compared to PNGs that are re-compressed with pngcrush and pngout. Photos typically encoded as JPEG can be encoded in WebP lossy mode to achieve smaller file size. Icons and graphics can be encoded better in WebP lossless mode than in PNG. WebP lossy with alpha can […]
DLNA/UPnP Linux Server with Coherence
Coherence is a DLNA/UPnP Media Server written in Python which exports local files or online media to UPnP clients. Coherence fetch the media files from several sources such as: Local applications media collections, like those from Rythmbox or Banschee, Audio-CD or DVB Online services like Flickr, last.fm, YouTube, Picasa Web Albums and other. Other sources can also be added thanks to Coherence plug-in architecture. The media server supports transcoding (currently experimental) that is to convert media files in another format. Coherence toolkit also contains other packages such as: Coherence-Config: a cross-platform GUI frontend for ‘Coherence’. Cadre: a picture DLNA/UPnP MediaRenderer which can display pictures from the local filesystem or from a MediaServer. Mirabeau: An application level proxy for UPnP devices which allows to share your UPnP content between two or more local networks over the Internet. It uses XMPP as a transport (work in progress). UPnP-Inspector: a graphical UPnP Device […]
Enable OpenGL 2.0 and WebGL for Intel GMA3150 in Ubuntu
I wanted to use WebGL in my Acer Aspire One D255E netbook that uses an Intel GMA 3150 onboard graphics card, but it did not work in Chromium nor Firefox. WebGL requires OpenGL 2.0 support, but I found out I only had support for OpenGL 1.4:
1 2 |
glxinfo | grep -i "OpenGL version" OpenGL version string: 1.4 Mesa 7.7.1 |
But I found out it was possible to enable OpenGL 2.0 for GMA 3150 in Linux by installing and running driconf:
1 2 |
sudo apt-get install driconf driconf |
and clicking on “Enable limited ARB_fragment_shader support on 915/945.” and “Enable stub ARB_occlusion_query support on 915/945.” options. They are not enabled by default because they do cause problems. After those two options were enabled, OpenGL 2.0 was enabled.
1 2 |
glxinfo | grep -i "OpenGL version" OpenGL version string: 2.0 Mesa 7.7.1 |
But I still could not use WebGL in either Chromium nor Firefox, so I decided to install the latest version of Mesa (7.11) with indirect rendering (software) enabled with libOSMesa:
1 2 3 4 5 6 7 |
sudo apt-get install libffi-dev wget ftp://ftp.freedesktop.org/pub/mesa/7.11/MesaLib-7.11.tar.bz2 tar xjvf MesaLib-7.11.tar.bz2 cd Mesa-7.11 ./configure --enable-os-mesa --prefix=/usr make make install |
Even with the latest Mesa library, I could not use WebGL […]
OpenMAX (Open Media Acceleration)
OpenMAX (Open Media Acceleration) is a royalty-free, cross-platform set of C-language programming interfaces that provides abstractions for routines especially useful for audio, video, and still images. OpenMAX standard is managed by the non-profit technology consortium Khronos Group. OpenMAX allows developers to take advantages of hardware media decoding/encoding. For example, If you want to play video using Raspberry Pi hardware (VideoCore IV GPU in Broadcom BCM2835) you’ll have to use OpenMAX IL. OpenMAX provides three layers of interfaces: Application Layer (AL): Open standard for accelerating the capture, and presentation of audio, video, and images in multimedia applications on embedded and mobile devices. Integration Layer (IL) : API defining a standardized media component interface to enable developers and platform providers to integrate and communicate with multimedia codecs implemented in hardware or software. Development Layer (DL): APIs containing a comprehensive set of audio, video and imaging functions that can be implemented and optimized […]
Android Platform Optimizations – ELCE 2011
Ruud Derwig and Mischa Jonker, both working at Synopsys, present different Android optimization methods at Embedded Linux Conference Europe 2011. Abstract: Although compute platforms gain performance with every new generation, getting the most out of every cycle and milliwatt remains a key value driver for Consumer Electronics. This presentation opens up the Android platform and explain what platform components and frameworks can benefit from performance optimizations. The optimizations are illustrated using real-life examples from the porting and optimization of the Android platform for the DesignWare ARC CPU. Both Android platform and application developers will gain insight in how to improve Android performance. Topics that are addressed include the Pixelflinger, Linux kernel and drivers, Javascript engine, Bionic C library, and the Dalvik VM. We’ll demonstrate the portability of Android and suitability of the ARC architecture for building efficiently Android systems. You can also download the presentation slides. Jean-Luc Aufranc (CNXSoft)Jean-Luc started […]
Mentor Embedded Inflexion UI Demo for STB/IPTV
Mentor Embedded developed a user interface for STB/IPTV demo using their Inflexion UI framework and they showcase it at ARM Techcon 2011. The demo runs on Android and looks very smooth thanks to OpenGL ES hardware acceleration. They also have a separate demo with pandaboard and a laptop running Sourcery codebench development tool to show how to develop a simple user interface with Inflexion UI. Finally, they showcase “Stella“, a self-balancing robot with 2 wheels. The board is based on TI Stellartis (Cortex M3) micro-controller and runs Mentor Embedded Nucleus RTOS. Jean-Luc Aufranc (CNXSoft)Jean-Luc started CNX Software in 2010 as a part-time endeavor, before quitting his job as a software engineering manager, and starting to write daily news, and reviews full time later in 2011. www.cnx-software.com
Cross Compiling libavg for ARM
libavg is a high-level development platform for media-centric applications using Python as scripting language and written in C++. Bear in mind that are many dependencies with libavg 1.6. I have not built all the libraries required, but instead simply taken the pre-built binaries and header files in the qemu overo image and copied the files as follows: mkdir mnt sudo mount -o loop,offset=$[106496*512] overo_sd_alip.img mnt mkdir ~/edev/beagleboard/libs/lib -p mkdir ~/edev/beagleboard/libs/include cp mnt/usr/lib/* ~/edev/beagleboard/libs/lib/ -rf -d cp mnt/lib/* ~/edev/beagleboard/libs/lib/ -rf -d cp /mnt/usr/include/* ~/edev/beagleboard/libs/include -rf -d sudo umount mnt The -d flag skips the symlink, so we need to recreate then for all library so that the compiler can find libname.so instead of libname.so.12. Save the following scripts to symlinks.sh:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#!/bin/sh liblist=`ls *.so.??` for f in $liblist do echo $f fileres=`echo $f | sed 's/\..\{2\}$//'` ln -s $f $fileres done liblist=`ls *.so.?` for f in $liblist do echo $f fileres=`echo $f | sed 's/\..\{1\}$//'` ln -s $f $fileres done |
and run it where the arm libraries are located (in my case in /home/jaufranc/edev/beagleboard/libs/lib, /home/jaufranc/edev/beagleboard/libs/lib/arm-linux-gnueabi and /home/jaufranc/edev/beagleboard/libs/lib/mesa). This will create symlinks for most libraries, but not all. Some will still […]