MacOS – Does the Mac still only have one hardware video decoder for the first video, and then it will be software decoder that is used

gpumacmacos

I remember in the past, a PC had one hardware decoder, and say, if any video is being shown, such as on YouTube, iTunes, or perhaps even just a video ad on the web browser, then the hardware video decoder could be used and already busy.

And if that video is paused, and the user start to watch a movie, then the hardware video decoder cannot be used and the software one would be used, and it possibly would not be as smooth as the hardware decoder.

If it is the Mac or MacBook, would it be the same? For example, if it is a mid 2014 MacBook Pro, probably with Intel Iris Graphics, or a late 2015 iMac 27 inch with AMD Radeon R9 M380, would it be the same situation? However, if I look at the Processor graph when some YouTube video is being paused and then I play another movie from a streaming provider like Netflix or Disney+, then I see that out of the 8 cores (4 of them virtual), 4 cores were at about 40%, and the rest of the 4 cores are near 0. So would that mean the processor itself can decode the video with ease, and therefore no hardware decoding is needed? Does the GPU participate in it, when (1) it is the only video being played, or (2) when there are multiple videos and all are paused except one?

Best Answer

Yes, depending on the specs it often does have only one hardware media decoder. This is either integrated in the CPU (Intel processors) or on a graphic card. (Note that some graphic cards can have more than one hardware media decoder / encoder).

But that hardware decoder can play multiple streams of media, upto a limit, before the OS is forced to switch to the CPU (software rendering).

The limit though depends on the hardware decoders capability. For example, if a particular hardware media decoder claims it can decode a 1080p H.264 videos at 600 fps, then you should theoretically be able to play ten 1080p videos of 60fps (600/60 = 10) simultaneously on it.

Ofcourse, all this depends on the app playing the media and even on the OS.

For example, on Google's Chrome browser Youtube will often send you a VP8/9 encoded video or a H.264 encoded video depending on whether your laptop is running on battery or main power (H.264 consumes less power than VP8, so if you are running on battery, Youtube on Chrome will opt for H.264). If your hardware decoder can't decode VP8/9 the OS will switch to CPU software rendering. Many media players have an option to explcitly enable Hardware Acceleration (to decode videos through the hardware decoder), and if this is not enabled, then the media player app will use the CPU (for software decoding) even if your computer has a hardware decoder.

It's not that easy to test as there are many other such factors at play too - can you open 10+ videos? Is your hard disk or internet fast enough to all play 10+ videos? Will the OS hang? And so on ...