I see there was a discussion about these options here. It’d probably be more intuitive if these options were next to one another.
No, it is not related to the video codec. It is about the video processing.
Aren’t these related config options? From reading the forum, I came out with the impression that parallel processing is only an option for CPU, not GPU, processing. Is that right? Also, doesn’t selecting a single processing thread negate parallel processing? Shouldn’t these options disable one another in the UI when they conflict?
The Parallel Processing option is a feature of Shotcut, and has nothing to do with the Codec. If you set it then Shotcut will use up to 4 background threads to render 4 video frames concurrently while editing.
If you set the Codec Threads say to 8 then FFMPEG will attempt to use all 8 threads to encode the video.
As you can see the two features are independent of each other.
Doesn’t the FAQ say that “Shotcut’s engine … uses multiple CPU cores/threads for … encoding video when not using the hardware encoder on most video codecs”? How can it have “nothing to do with the Codec” then?
You can have parallel processing switched off (default) and have multiple codec threads selected. They are independent of each other.
The codec threads are used by FFMPEG in encoding the data. The parallel processing option has no bearing on how FFMPEG runs the software codec that encodes the video, hence it has nothing to do with the codec.
To verbosely expand on @Elusien’s accurate statements:
Parallel Processing is a process inside of Shotcut which adds the ability to build multiple frames at the same time (as opposed to sequentially one at a time), where “build” means things like applying filters and rendering fonts that are then composited over video.
The result of the build process is a finished max-quality frame that is handed over to the codec for encoding. This handoff point is the line of demarcation between Shotcut processes and codec processes.
The “codec threads” parameter is how many threads the codec will use to take the finished frame from Shotcut and encode it into the destination format, like H.264 or ProRes.
By nature, frame-building has to be completed before encoding can even begin. This is why Parallel Processing (a build process) has nothing to do with codecs, and therefore it does not appear on the Codec panel.
Since building the frame is a Shotcut process, it goes on the Video panel.
Since encoding the frame is a codec process, it goes on the Codec panel.
These are two non-overlapping processes which can be configured independently. Shotcut builds a perfect master, then the codec usually destroys it with lossy compression haha.
It may feel like splitting hairs and complicating the UI in the process, but there are reasons for it at the technical level.