- Oct 9, 1999
- 5,118
- 3,656
- 136
First I want to say that I'm not saying it isn't difficult. I know there is a reason it's just that I don't know what it is. My programming experience is limited. Some assembly back in high school on my Atari 2600 and then Fortran (!!) back in college when I was studying mechanical engineering. I know that currently Handbrake uses multicores quite effectively up to about 6 cores and then less so after that.
Anyway, to my question. I'm wondering why each core in a multicore system can't be assigned to work on a single GOP in Handbrake? In a very simplified view I would think the following could occur.
Using a not very fine grained approached 1 core could be dedicated to scanning the source file to determine the frame range for each GOP. Once the GOP was determined it would then be assigned to core #2, next GOP to core #3, and so on. Depending on how compute intensive this GOP scanning operation is then Core #1 could also stitch the rendered GOP's together as the other cores are transcoding the video. It seems as though encoding 1 GOP is a completely independent operation requiring no data except for the original video from that specific GOP.
If more cores are needed for the scanning and stitching then they would be allocated in such a way as to keep all remaining cores transcoding all of the time.
Obviously this is not possible because I'm not understanding the whole story here. Could someone explain how this really works and why my idea cannot?
Anyway, to my question. I'm wondering why each core in a multicore system can't be assigned to work on a single GOP in Handbrake? In a very simplified view I would think the following could occur.
Using a not very fine grained approached 1 core could be dedicated to scanning the source file to determine the frame range for each GOP. Once the GOP was determined it would then be assigned to core #2, next GOP to core #3, and so on. Depending on how compute intensive this GOP scanning operation is then Core #1 could also stitch the rendered GOP's together as the other cores are transcoding the video. It seems as though encoding 1 GOP is a completely independent operation requiring no data except for the original video from that specific GOP.
If more cores are needed for the scanning and stitching then they would be allocated in such a way as to keep all remaining cores transcoding all of the time.
Obviously this is not possible because I'm not understanding the whole story here. Could someone explain how this really works and why my idea cannot?