Smart-crop and process in segments

I’m definitely a novice in understanding what is going on under the hood, but from my observation, when you go to process something like a movie, the software processes 1 thread linearly.

Would it not be efficient to scan the file, look for transitions, offer up recommended transitions, crop the video into segments in between the transitions, and process those segments multi-threaded in parallel and then recombine at the end? This may also allow for shutting down threads so that you can take breaks after a few segments have processed and then queue up the rest later.

Use case, 120 minute movie file:

  • Topaz scans file
  • Topaz detects 8 transitions
  • User identifies 6 of them to be true transitions.
    – Opportunity for training feedback on detecting transitions
  • Topaz begins processing and filling GPU threads up to user-defined limit (let’s say 3)
    – Opportunity to process in user-defined priority order (shortest first, longest first, etc)
    – As Topaz processes files, completes them, and fills its next slot, toward the end it speeds up given less strain on the GPU with threads going unburdened
  • Topaz takes all completed segments and then recombines to create the final output file

Two versions ago, this was a reasonable feature request. Now, most people don’t have the CPU cores for this to make sense. From my own tests, with a two hour movie, it might process fifteen minutes faster. That’s with my hardware. I have a 12 core Ryzen 5900X. So I think, 16 cores might see more improvement, but that also depends on if the GPU can handle more than one file at a time.

I do like the idea of scanning for segments. It would be awesome if there was a function to scan for segments that would create a file that lists out all the timestamps for them. Of course you should be able to load that file and have it display on the timeline. You should also be able to select segments for processing.