Three reasons why the most popular Android OS is built on Linux Kernel?

Android is overwhelming. Its spreading and taking over its competitors. For the readers who don’t know, Android is actually Linux-kernel based operating system for mobile devices! That is Android integrates Linux kernel at the bottom of its software stack. In fact Android was created on top of Linux Kernel 2.6. Have you wondered why did Android team choose Linux Kernel? Read on.

Android is open source, therefore any manufacturer can access it, customize it and adapt it according to the requirements of their own gadget. This is the reason why Android is found on variety of gadgets. With camera, without, high-end and low-end, whether a full-fledged tablet or a low-end entertainment device (like Kindle) Android can run on any platform. This has not only given freedom to manufacturers to customize the operating system, add personalized skin, applications or strip-off default Google services (i.e. endless options), adapt the OS to run on high/low spec gadget but it has also given freedom to people—freedom of choice. You are no longer tied to the single company’s ecosystem. You have myriad of devices to choose from. You no longer need a hefty 500 USD you can get a decent Android tablet for just 100 USD. Thanks to open source nature of Android which has made tablet devices so accessible!

Having introduced you to the much popular Android, let me tell you that Android is built on top of Linux kernel 2.6! Kernel? A kernel is the first layer of software that interacts with the device hardware. The kernel is responsible for providing basic architectural model for process scheduling, resource handling, memory management, networking and isolation etc. It must be noted that while Android is built on Linux Kernel, Google has maintained its own forked version of Linux Kernel specifically for android since 2010.

There are number of reasons for selecting Linux kernel. Linux Kernel boasts some proven core features that are integrated in Android operating system. The features of Linux Kernel are:

1) Portability:

In a post regarding “Who runs Linux?” it's illustrated the fact that Linux runs on devices of diverse architecture from enormous machines like supercomputers to Large Hadron Collider to smaller devices like motor bikes and tiVo. This is due to the fact that Linux is an immensely portable platform. It is fairly easy to compile Linux on various hardware!
What do you think is the major concern of Android? Well that is that it is picked by many manufacturers and is used on a variety of gadgets. Linux makes that possible. Linux brings Android a level of hardware abstraction. Most parts particularly the low-level ones are written in portable C code that can be accessed and modified by manufacturer easily. This means manufacturers can pick up Android and modify it to adapt it according to their hardware requirements rather that improving the hardware to fit the software!

2) Features:

Linux brings to Android some useful features. The Linux Kernel 2.6 includes these features:
Memory Management: While developing for mobile devices memory handling becomes a point of great concern. Thanks to Linux Kernel over which Android is built you can free yourself from the worry. Linux will handle Linux kernel forthreading and lowlevel memory management for Android. Linux kernel is responsible to manage the core feature of any mobile device i.e. memory cache. Linux kernel manages memory by allocating and de-allocating memory for the file system, processes, applications etc.
  1. Process Management: Linux Kernel is responsible to start stop and execute the program. For a beginner a process can be thought of as an instance of computer program. i.e. whenever a program is run on computer the OS creates its instance or process for it which is executed by the OS. In case of Android Linux is responsible to allocate resources to various processes that need them.
  2. Driver Model: As evident this is the layer where all the device specific drivers run. Here Linux ensures that your application is able to run on Android. Manufacturers/ hardware vendors can develop their drivers into Linux in a familiar environment. That is giving plenty room for hardware vendors to optimizing OS. This is one major reason Linux kernel was chosen for Android.
  3. File System Management: Linux also manages the file system which in turn controls the data storage service for android device.
  4. Network Stack: Linux Kernel is responsible to communicate with the network. It also controls networking stack, drivers, routing devices and network adapters.
  5. User account (Security): Linux kernel handles the security between application and the system. Linux takes control of authentication of users and is responsible for user management.Besides this Linux kernel is also responsible for power management and for undertaking various services like internet search, voice communication, system logging etc.
3) Security: 

Linux runs in scientific research labs, supercomputers and systems for mission critical tasks. Android completely relies on Linux for security. All android applications run as distinct Linux processes under permissions set by Linux system.

Above all, Linux is the poster child of open source and Linux is freely available! Its interesting to note that while Android has gained quiet momentum the former popular PALM smartphone running WebOS were also built on Linux kernel!

Reference : UnixMen

Sync audio with your video permanently

So you might have come across  a situation when you finally got your movie after a long wait and then you find that the audio-video is not synchronised. Audio is leading/lagging the video,it is a common problem and VLC media player simple provides for delaying the audio in ms(by pressing J and K keys) for temporary playing. Here's the tutorial how you can permanently sync you audio with the video.

MKV ToolNix :

MKVToolNix’ is not an encoder as you can only use it to ‘extract’ audio/video/subtitle tracks from other containers (MP4, AVI, FLV etc) and put them into the powerful and open-source MKV container. While doing so this tools also lets you pass certain settings (sync, fps, aspect ratio …) and it is through that we can attempt to fix sync problems.

But please be aware that the only output format it support is MKV (and few of its variations such as ‘MKA’ for audio’, ‘MKS’ for subtitles etc) and unlike MP4 or AVI, MKV is not supported by a lot of commercial and strictly hardware based multimedia players. Computer users however do not have to worry about it as popular players (VLC, MPC, PotPlayer, SMPlayer, KMPlayer …) support it. Enough talking, let’s do it!.

Note: Make sure you have downloaded and installed the latest builds of ‘MKVToolNix’ from here. I also recommend that you use VLC because both these utilities are available for multiple operating system platforms, so you can use this ‘guide’ in any of them.

What we are going to do is …

  •  First we are going to play the ‘troublesome’ file in VLC (or any other player that lets you change the sync temporarily) and we will try to identify the proper sync value.
  • Then we will simply enter that sync value into ‘MKVToolNix’ and save it as a new MKV file so that it is saved permanently. That is it!.

Step 1:

So open your ‘troublesome’ file in VLC, and let it play for a few seconds. Then simply press the ‘j’ key on your keyboard. This will make VLC play the audio track a bit ahead of the video. A single click increases the value by 50 milliseconds only, so unless the ‘gap’ is very small, you will have to press it a few times to get see its effect.

Anyhow, if after pressing ‘j’ key for a few times it worsens the ‘gap’, then it is an indication that you actually have to make VLC play the audio track a bit behind (delay) the video. The shortcut key for that is ‘k’. Again, to feel its effect, you might have to press it a few times. If after doing that it seems to shorten the ‘gap’ then it is an indication that you are on the right track. So keep doing that until you come up with the perfect sync value.

So as a general rule, play with ‘j’ and ‘k’ keys, until you find the perfect sync value for that multimedia file. Once you have found it, simply take a note of it (note that depending on the file the value could be positive or a negative one. If it is a negative/minus one, then you should enter a minus sign before entering the value in ‘MKVToolNix’, more below) and close VLC.

Step 2:

Now open ‘MKVToolNix’ and load the ‘troublesome’ file into it. Then under ‘Tracks, chapters and tags’ field, select the audio stream/track (shown below is an example).

Step 3:

Then from under it, click on the ‘Format specific options’ tab and you will see an empty field that says ‘Delay (in ms)’. Now simply enter the sync value you found above into that field.

Make sure to enter a minus sign (-) when needed (-200 for instance)

Step 4:

Now click on the ‘Browse’ button under ‘Output filename’ field. Select a location and a file name for the output MKV file. Once done, simply click on the ‘Start muxing’ button. If everything goes without any errors, try playing the newly saved MKV file and now you should be able to enjoy it without any ‘lip-sync’ issues! See you at the movies. ;)

References : Hectic Geek.