Hacker News new | ask | show | jobs
by btdmaster 1249 days ago
The difference is much more pronounced at lower resolutions. 4K60 is not handled efficiently by any hardware.
2 comments

That's the opposite of my experience. Depending on the decoder, lower resolutions may be more efficiently handled by the CPU instead of the hardware decoder (which is a decent chunk of silicon and takes extra power to use). But once you hit a certain resolution, the hardware decoder is pretty much always way more efficient than a software CPU decoder. Some well-implemented hardware decoders even handle low resolutions more efficiently.

My experience is largely focused on battery-powered mobile devices (Android/iOS), though.

To give a concrete example, VAAPI Haswell integrated graphics, peak CPU usage:

  mpv hardware H.264 1080p60: 3% CPU usage
  mpv software H.264 1080p60: 20% CPU usage

  mpv hardware H.264 4K60: 96% CPU usage
  mpv software H.264 4K60: 80% CPU usage
There comes a point of diminishing (or in this case, negative) returns. A bit more subjectively, the H.264 software rendering at 4K60 also felt smoother.

I'm using H.264 as it is hardware accelerated on this platform.

I don't think all Haswell chips support 4k H.264. That's one downside of hardware decoders: they have limits on what they support. I suspect the decoder is actually falling back to a software implementation to handle the bitstream since the hardware can't.

For example: https://www.avsforum.com/threads/no-hardware-4k-h264-decode-...

"Offloaded decoding takes more CPU than non-offloaded decoding" doesn't make any sense - clearly something else is going awry here.
I have desktop product that among other things decodes 4K60P using MMF. The decoding part either decodes straight into DirectX texture if hardware based video decoding is supported or does it in software otherwise.

Software based path causes significant CPU load. Using hardware path keeps CPU at about 0%. Since hardware video decoding supported nearly on any modern Laptop, Desktop I would say 4K60 is handled very efficiently.