Android 4.0 Source Code is Now Available

Google has just released Android 4.0.1 source code in AOSP. There are 3 main branches: android-4.0.1_r1: the release branch, ITL41D, that is expected to ship on Galaxy Nexus. That’s the one you want to be using to port to devices. ics-mr0: ICS development branch. It contains a few changes that aren’t in the release branch, so it might not be as stable. That’s the one you want to use if you plan to contribute to CTS. master: usual master branch, it contains all of ics-mr0 plus a few extra changes. That’s the branch that you should use if you want to contribute to the platform. The release and development branch require the “classic” host configurations (Ubuntu 10.04, or MacOS 10.6 with XCode 3). The master branch had a few tweaks to make it work better on newer systems  (Ubuntu 11.10, Mac OS 10.7 with XCode 4.2) but it’s not 100% there yet. In addition to the usual emulator targets and …

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 and Service analyzer, and a debugging tool. Detected devices are …

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: But I found out it was possible to enable OpenGL 2.0 for GMA 3150 in Linux by installing and running 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. 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: Even with the latest Mesa library, I could not use WebGL applications, so I enabled software rendering in Firefox as follows: Type about:config in the …

Android NDK Revision 7 for Android 4.0 (ICS)

Google has just released Android Native Development Kit Revision 7, the Android SDK that allows developers to reuse C/C++ code. This version adds new native APIs available in Android 4.0. Here’s the changelog of the most important new features and bug fixes: NDK APIs for Android 4.0 (API level 14): Low-level streaming multimedia: A new API based on Khronos OpenMAX AL 1.0.1 provides a direct, efficient path for low-level streaming multimedia. The new path is ideal for applications that need to maintain complete control over media data before passing it to the platform for presentation. Audio decoding into PCM: Extensions to the existing native audio API based on Khronos OpenSL ES let native apps decode compressed audio assets to PCM format. CCache support to allow faster rebuilds. Added support for setting APP_ABI to all to indicate that you want to build your NDK modules for all the ABIs supported by your given NDK release. Imported shared libraries are now installed …

New Embedded System Development Book by O’Reilly

This new book “Making Embedded Systems: Design Patterns for Great Software” has been written by Elicia White, the founder of Logical Elegance, an embedded systems consulting company based in San Jose and an expert who’s created embedded systems ranging from urban surveillance and DNA scanners to children’s toys. O’Reilly says this book is ideal for intermediate and experienced C programmers and will show you how to: Optimize your system to reduce cost and increase performance. Develop an architecture that makes your software robust in resource-constrained environments. Explore sensors, motors, and other I/O devices. Do more with less: reduce RAM consumption, code space, processor cycles, and power consumption. Update embedded code directly in the processor. Implement complex mathematics on small processors. Understand what interviewers look for when you apply for an embedded systems job. This 328-page book has 10 chapters: Chapter 1 Introduction Chapter 2 Creating a System Architecture Chapter 3 Getting Your Hands on the Hardware Chapter 4 Outputs, Inputs, …

11 Recommendations for Optimizing Mobile Apps Power Efficiency

Following an AT&T Labs Research and corresponding paper entitled “Profiling Resource Usage for Mobile Applications: A Cross-layer Approach“,  AT&T found that a few simple design approaches could significantly improve mobile application responsiveness and reduce battery drain by lowering your application power consumption. They analyzed PANDORA internet radio and  discovered that the streaming music was delivered efficiently, but periodic audience measurements were draining battery life. Here is an excerpt of the PANDORA Case Study: While the music itself was sent simply and efficiently as a single file, the periodic audience measurements—each constituting only 2KBs or so—were being transmitted at regular 62.5-second intervals. The constant cycle of ramping up to full power (2 seconds to ramp up, 1 second to download 2KB) and back to idle (17 seconds for the two tail times, the first down from full-power mode and the second down from half-power mode) was extremely wasteful. Of the total amount of device battery energy consumed, 46% was expended on …

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 on new CPUs , hardware engines, and DSPs and then …

ARM Announces New Mali-T658 GPU

About one year ago, ARM announced the Mali-T604 GPU which has yet to be used in current products. Yet today, ARM announced an even more powerful GPU called Mali-T658 in Tokyo at Japan ARM Technical Symposium. Mali T658 is based on Midgard GPU architecture (as is Mali T604) which allows great GPGPU capabilities thanks to three types of pipeline (‘tri-pipe’) optimized repetitively for arithmetic, load/store and texturing. The GPU will also support standard graphics APIs such as Khronos OpenGL ES, OpenVG andMicrosoft DirectX® 11) as well as Compute APIs such as Khronos OpenCL (Full Profile), Google RenderScript compute and Microsoft DirectCompute. Performance-wise, Mali-T658 has twice as many shader cores and double the arithmetic pipelines per core which means the GPU can offer up to 10 times the performance of the Mali-400 MP GPU. On the compute side, Mali-T658 provides 4 times the processing power of Mali-T604. Mali-T658 will work with Cortex A7 and Cortex A15 processors either in standalone mode …