Plex 4K transcoding + PGS subtitles (with, and without iGPU) - 12700k

Server Version#: 4.129.1
Player Version#: Chrome Browser

NOTE: please see the end of my post - maybe this has been fixed.

I’ve run into a rather strange issue. I keep a 4K library separate from my 1080p library, but I’ve considered merging them and just transcoding the 4K content for users who can’t handle the 4K. My 12700k iGPU is more than up to the task, but sometimes I have to rely on the software transcoder, especially when people use subtitles.

I did some tests and discovered some strange behavior with 4K transcodes + PGS subtitles.

I noticed that my server wouldn’t use more than 4 threads (‘top’ shows CPU utilization at 400%). However, with 4 threads maxed out, my video buffers a lot - I get 20 seconds of playback followed by about 10 seconds of buffering, which then repeats.

However, if I disable the iGPU, then the CPU utilization shoots up to around 1000%, and all my buffering problems disappear.

For whatever reason, even though it is a software transcode, having the iGPU seems to lock the performance of the transcode to 4 threads. If I remove the iGPU, then the transcoder can take advantage of the entire CPU, and the transcoding works perfectly.

I’m happy to provide logs of this behavior, just let me know if it would help.

Hmmm - I just upgraded my Plex server this morning and I just retested this - I don’t seem to have the problem anymore. Did this just get fixed?

Oops, I think I included the wrong version above - it should have been: 1.40.3.8555

Having PGS subtitles + HW transcoding is a 'fixed pipeline".
As you’ve found, there are 4 cores which run:

HW Decode - burn - HW encode + the (de)multiplexer

Since the GPU is a singular resource, and subtitles are single-core burning, you get the 4-core max.

When you remove the constraint on the GPU, the transcoder can work on multiple frames of video concurrently. It will multiplex it all back together when done. This is why you see 10 cores (PGS is being done in parallel)

Thanks - I’m understanding the overall point but I’m not sure I’m following some of the details. In the case of the active iGPU + PGS, am I still using the iGPU for the video transcoding, but then using a single-threaded PGS encode? Or, is it all being handled in software, video and subtitles both?

Sorry - I’m re-reading your response and I think you already answered my question.

Essentially with the iGPU, the CPU is waiting on the output and in a single-threaded way handles the subtitles.

Without the iGPU and the video encoding done in software, the whole thing is more parallelizable and you get higher utilization but less buffering - yes?