Smooth video playback @Youtube [Linux]

So recently I’ve been researching about how to get a better video playback experience on Linux when browsing sites like Youtube. Video playback from the early days of Linux was most of the times a headache, especially because there were not many “good” alternative to a lot of proprietary codecs. Especially now that flashplayer is long dead and is no longer being supported widely, we look up to html5 to solve our media playback woes online.

But the thing is html5 doesn’t solve our problem yet. On sites like Youtube, vp9 is the codec that is being served by default when html5 is enabled on your browser. Vp9 is a successor to vp8 and is about 5-15% improvement over it’s predecessor but on the downside hardware acceleration for vp9 is not built onto most hardware other than the latest smartphones like the Samsung Galaxy S6, etc.

Hardware based decoding is important because it is more efficient than software based decoding, not only in terms of raw performance but the overall cpu usage goes down resulting in less energy being used on your laptops or mobile devices. Therefore hardware based decoding also helps conserve battery life by a big margin when watching videos.

Even if hardware acceleration of vp9 is built into your hardware, the software side of things aren’t ready yet on almost all platforms since vp9 is still a pretty recent development and the industry needs some time to catch up.

Anyway long story short, I turned towards various browsers at first without doing much research hoping that they would magically solve my problem but that was not the case. After a while I learned about this open sourced api being developed by intel (vaapi) thats allows hardware decoding of various codecs using the built in intel gpu on most CPUs. Vaapi on Arch Linux can be accessed by installing the packages “libva-intel-driver” and “libva”. On other distros should be something similar.

Another thing I discovered while testing the browsers is that Firefox for some reason uses a lot more cpu during video playback than a Google chrome based browser like Chromium although they both rely on software based decoding methods. It probably has something to do with how Firefox renders the video internally.

Anyway, the bad news is that vaapi doesn’t yet support vp9 decoding but what you can do is install a browser plugin that forces h264 codec only and then take advantage of hardware acceleration using vaapi as h264 decoding is supported. In my case I used an external player (mpv) with my custom config  (placed in ~/.config/mpv/config) and a firefox plugin called open-with and I can just right click on any video and select open_with mpv to have awesome video playback with negligible cpu usage.

Before hardware accelerated video playback my average cpu usage on Chromium was around 20-25% where as on Firefox was around 40-50%. After hardware acceleration on my netbook with n3700 processor, cpu usage is less than 10% using Firefox. Power usage dropped from 9-10W to 5-6W. That’s a pretty big improvement not to mention the video playback seemed more crisp compared to the software decoded version.

It might seem that I was complaining about Firefox at the start, but after switching video playback to mpv it seems to be a much better solution than even chromium.

If you have some tricks of your own, feel free to comment and share below! 🙂

 

Advertisements

Reason why Linux is not main stream yet…

Alright, I wanted to talk about a lot of the things that have been bugging me lately. This post is totally my personal opinion and is based off on my experience with GNU/Linux.

First of all, let me tell you that I’ve personally tried various distributions (distros) of Linux…from Ubuntu to Gentoo, Fedora, Arch and every thing in between but I don’t consider myself an expert. This post highlights what I think is wrong with the GNU/Linux in general and what can be improved to make it more appealing to the end users.

The various distributions of Linux that I’ve tried are quite similar in nature, they have a lot of the commonalities like the kernel, the architecture and software that run on it but they vary based on the philosophy among their communities, their vision, their goals, their package managers, etc.

For example Gentoo’s philosophy is that it’s a source based distribution where you have to compile everything from source where as others like Ubuntu rely mainly on binary builds.

Anyway that’s not what I wanted to talk about. What I’m trying to highlight here is that a lot of the things that we do in the Linux world is just too damn complicated for a typical end user to go through.

For example, I bought a new laptop eight months ago and it came with a proprietary AMD Radeon HD 8750m card with dual switchable graphics. When I bought it I didn’t expect the card to work at all since it’s so new. But recently I realised that the support for this card is available in the newer 3.11 kernel which allows dynamic power management to improve battery life and decrease heating, etc.

Therefore I decided to install the latest kernel for which I had to use a script (smxi on Debian) to get it installed. Even after installing the kernel, next issue was that I had to enable dynamic power management (dpm) in the boot settings (grub) manually as it was disabled by default. Then again it didn’t work because I was missing some firmware or because I had to disable the proprietary intel driver and load the radeon driver manually. Or may be because of something else that I need to spend time experimenting.

My point is that a typical end user shouldn’t be worrying about these kinds of stuff. In the Linux world we expect the user to be able to manage and handle these kinds of stuff. We assume they have some knowledge of bash, terminal navigation or even programming skills.

In contrast, the Windows or MacOSX world is like handing the end users freshly baked cakes out of the oven. They don’t need to know anything about baking power or the ingredients that goes into it, they don’t need to worry about the correct temperature in the oven….they just enjoy their freshly baked cakes.

That is the reason why I think people (general population) are unlikely to come over to Linux anytime in the future except for hobbyists, geeks and people who need to run Linux for their day jobs. But I can not totally disregard the effort distros like Ubuntu have been putting in….to make a big impact in the department of user friendliness, making all these subtle things that is so hard for a normal Windows user….fade away. So I should obviously give props to them for trying to make Linux go in that direction.

But still, from my last experience with Ubuntu 12.04 there’s a lot of things I didn’t like….let me start off with the Zeitgist and online search bullshit. Whenever you search on the dash, your search results get sent off directly to Ubuntu servers and that is turned on by default! Talk about privacy…..next thing they had was this Geo-location service thing going on and from what I’ve read on Ubuntu forums itself…when your computer boots off it tries to ping Ubuntu server or something similar even while you’re not logged in. So ya that totally turned me off.

Anyway there’s still hope that Linux can make it to the main stream in the Desktop world if SteamOS can be a big hit. Valve is a pretty resourceful, reputable company and the steam platform itself has hundreds and thousand of AAA titles. If they can somehow make all these subtle things in Linux that we have to deal with every day go away and make Linux more usable then I think people can be convinced to switch over to Linux after all.

Don’t get me wrong, I love Linux and use it on a daily basis….but I simply think that it’s not for everyone yet. At my University, I even opted for teaching a Linux course as a term project in order to get more people interested in Linux. From that teaching experience, although there were a handful of students…..what impressed me the most was that even people with no prior experience with Linux were able to grasp things so easily and fast. If I imagine my personal experience with Linux itself…it took me a whole lot longer than that to get the hang of things. Perhaps it was because they had programming experience or IT background etc.  but as of yet I can not confidently go to someone who has zero knowledge of Linux and recommend that person to switch over to Linux. In my opinion they’re better off with their freshly baked cakes.