Monday, April 12, 2010

Why Android Music Player doesn’t have Equalizer?

Equalizer has been a standard feature in music players on almost all mobile phones nowadays. Unfortunately, Android phones doesn’t have it, due to limitations of Android platform.

Who is the culprit?

Android platform makes use of PacketVideo OpenCORE multimedia framework for Audio/Video support. OpenCORE framework doesn’t provide support for a generic equalizer implementation. Equalization is a process of increasing or decreasing the signal strength for a portion of (a band of) audio frequencies. Equalization in an Audio playback is achieved through ‘post processing’ of the decoded data of digital audio packets. Though, OpenCORE takes care of third-party codec integration (well, its bit tricky too…) and hardware codec integration, the framework is not designed to support integration of third-party post processing modules or plugins.

Is it really required?

In audio, there’s no commonly accepted ‘best sounding’ factor. What sounds best to a person may not sound best to others. In audio, ‘Best sounding’ depends on lot of factors such as listener’s taste, mood, and even the perception of sound by listener’s ears. This calls for tuning the audio output to one’s taste. Though, we all appreciate ‘flat frequency response’ of a sound system, many of us would like to tune it to some extent at least to take care of the ‘general’ discrepancies of the perceived sound by our ears (See, Fletcher-Munson Curves for a detailed discussion on this matter).

No support for ‘post processing’ plugins can prove to be a significant disadvantage in any multimedia framework. Years of research and work has gone into DSP algorithms to achieve finest tuning of the audio playback as per one’s listening tastes. Consider Windows Media Player for example; It has wide range of plugins available to enhance the audio playback. There are open source frameworks such as GStreamer and VLC, for which there are many developers contributing DSP post processing effects, worldwide. Having no support for such plugins renders a framework less friendly for contributors and consequently, the player applications based on such frameworks would be less attractive to many users.

Aren’t there any such frameworks readily available?

At first I wondered why Google adopted OpenCORE, when we have well proven multimedia framework, GStreamer for which so many codec support and plugins are already available. But, there are quite lot of issues in adopting open sources that are GPL or LGPL, especially in products that also features manufacturer’s Intellectual Properties (IP). I think, with this vision of making the platform mobile device manufacturer friendly, Google might have selected OpenCORE as the multimedia framework for its Android platform. OpenCORE is licensed under Apache License, Version 2.0, which allows us to change the adopted source code without mandating us to include the changed source code in the derived product.

1 comment:

  1. Thanks for sharing your info. I really appreciate your efforts and I will be waiting for your further write ups thanks once again.
    flash to html5 converter