How to fix blue tint in Flash videos on Linux without disabling hardware acceleration

So, I’ve been having this problem for a while now, where Youtube videos and some other videos will mess up the color channels for a video, and you get a blue tint on all videos, also known as the smurf effect. An example can be seen below:

Most of the solutions posted online for this problem involves disabling hardware acceleration, which is wildly undesirable, since, you know, this makes videos slow and sluggish, especially in fullscreen. Removing the faulty library, libvdpau, is also undesirable, since it is used in other video players than Flash.

But there is one solution, posted here, that lets you keep your hardware acceleration enabled, and fixes the smurfy colors. I keep forgetting the solution, though, hence this blog post. Hopefully, some other poor bugger (you?) is able to find it as well. Here’s the solution for Fedora 17 64-bit:

cd /usr/lib64/flash-plugin/
sudo perl -pi.bak -e 's/libvdpau/lixvdpau/g' libflashplayer.so

The directory where libflashplayer.so is stored may vary, you can find out where it is by doing something like this:

cd /usr
find . -name libflashplayer.so

What the command does is to change the string «libvdpau» to «lixvdpau» in libflashplayer.so, making it impossible to load that library. The performance will take a little hit, but not as much as disabling acceleration altogether.

Note: after each flash-update, you need to apply this fix again, as the file gets overwritten by the update. Hopefully libvdpau (or preferably flash itself, but don’t count on it) will get patched with a workaround for this annoying bug soon.