The trials and tribulations of video decoding on Linux

I like using Linux. I use it on my desktop – especially now that League of Legends runs incredibly well on Linux thanks to the Lutris and League of Linux reddit community. I’d also like to use Linux on my laptop (an XPS 13 9370), but here I run into a major hurdle that despite a lot of trials and tribulations, I have been unable to overcome: playing video.

Of course, Linux – in my case, Linux Mint – can play any format under the sun just fine, either locally, on-demand, or streaming, and in my case, it’s YouTube video that matters (720p-1080p). The problem lies not in what desktop Linux can play, but in how it does so. Decoding video on my laptop running Linux is apparently remarkably inefficient, to the point where the processor reaches temperatures of 60-70°C, and since the fan kicks in at around 60°C, watching video on Linux means constant fan noise. When playing the same videos on Windows on the exact same laptop, temperatures stay comfortably below 40°C, without ever even coming close to spinning up a fan.

I have tried everything. Here’s an itemised list of things I’ve tried, including multiple different combinations:

  • I’ve installed tlp. This has had no effect.
  • I’ve manually configured my processor – through tlp – to make sure it doesn’t turbo beyond 50%. This has had no effect.
  • I’ve disabled Intel Turbo Boost in UEFI altogether. This has had no effect.
  • I’ve undervolted my CPU. This gives me maybe 1-2 degrees every now and then, so effectively it hasn’t helped.
  • I’ve tried the latest mainline kernel just to see if there’s been improvements in power management or any Intel drivers. This has had no effect.
  • I’ve tried the Chromium builds with VAAPI support to enable hardware acceleration on YouTube video. This has had no effect.
  • I’ve tried downloading YouTube videos with youtube-dl and playing them back locally. This has had no effect.
  • I’ve tried forcing H264 on YouTube. This has had no effect.

There’s probably things I’ve tried that I’ve forgotten about and thus aren’t on this list. As you can imagine, my past few days and weeks have been frustrating, to say the least. I even decided to install Linux Mint on my Surface Pro 4 to see if similar problems pop-up there, and lo and behold, that device, too, sees massive temperature spikes when using Linux instead of Windows.

I understand and can accept if Linux isn’t as efficient as Windows when it comes to power management and decoding video, and am okay with a few degrees here and there. However, I just cannot understand nor accept a 20-30°C difference with something as elemental as decoding video.

After all of this, I can only conclude that desktop Linux has an incredibly bad video decoding pipeline compared to Windows, and considering I’ve been struggling with this several times over the past few years without any noticeable improvement, it seems like it’s not something high on anybody’s list of things to improve. Linux’ inefficient video decoding pipeline won’t be much of an issue on desktop machines – playing video has virtually no material temperature impact on my desktop since my custom watercooled GTX 1070 and i7-7700K are way overkill – but on thermally constrained laptops, the problem becomes massively apparent.

It is frustrating. I prefer Linux over Windows, I want to use it on my laptop, but as it stands now, I simply can’t. I’m at my wits’ end.

44 Comments

  1. 2019-11-24 6:06 pm
    • 2019-11-24 7:49 pm
      • 2019-11-24 8:29 pm
        • 2019-11-24 8:37 pm
  2. 2019-11-24 7:41 pm
  3. 2019-11-24 8:36 pm
    • 2019-11-24 8:44 pm
      • 2019-11-24 9:33 pm
        • 2019-11-25 11:12 am
  4. 2019-11-24 9:55 pm
    • 2019-11-25 2:36 am
  5. 2019-11-24 11:01 pm
  6. 2019-11-25 6:55 am
    • 2019-11-25 7:01 am
  7. 2019-11-25 7:57 am
    • 2019-11-25 9:22 am
      • 2019-11-25 12:41 pm
        • 2019-11-25 3:02 pm
          • 2019-11-26 3:55 am
      • 2019-11-26 8:41 am
  8. 2019-11-25 9:47 am
    • 2019-11-25 1:26 pm
      • 2019-11-25 7:21 pm
        • 2019-11-26 2:07 pm
      • 2019-11-25 7:53 pm
      • 2019-11-26 8:25 am
  9. 2019-11-25 12:10 pm
    • 2019-11-25 12:41 pm
      • 2019-11-26 8:48 am
        • 2019-11-26 2:08 pm
    • 2019-11-26 8:25 am
      • 2019-11-26 2:13 pm
  10. 2019-11-25 12:43 pm
  11. 2019-11-25 1:16 pm
  12. 2019-11-25 3:10 pm
  13. 2019-11-25 3:14 pm
    • 2019-11-29 12:30 pm
  14. 2019-11-26 1:55 am
  15. 2019-11-26 5:07 am
  16. 2019-11-26 2:08 pm
  17. 2019-11-27 6:09 am
  18. 2019-11-27 8:00 pm
  19. 2019-12-03 12:45 am