Post
by trythil » Mon Sep 10, 2007 10:30 pm
There's a few things at play here.
(1) You almost will never need (nor, for that matter, be able to) specify which core(s) a process will use. That's the process scheduler's job.
(2) There is ongoing work to make VirtualDub more multi-thread friendly; check out the 1.7 branch if you're interested. From what I can tell, the bulk of the work Avery Lee is doing involves reworking the rendering engine (which, among other things, includes the filter graph) to run multithreaded, which means that if you are applying some particularly expensive filters that can be easily parallelized, you may see a speedup there.
(3) Some encoders support multithreaded encoding. (Lagarith does, for example.) Some don't. You need to figure out this for yourself. If the encoder does support it, turning on multithreaded encoding often does result in a speedup and greater CPU utilization, but sometimes may reduce encoding efficiency and/or quality. (Some people have reported this with e.g. x264.)
(4) If you're using a frameserver like Avisynth, that throws another variable into the mix. Prior to v2.6, I think Avisynth's parallelism was limited to filters that explicitly multithreaded themselves. Avisynth v2.6 allows you to specify how many threads you want to use for processing the filter graph; see the GetMTMode and SetMTMode functions. Note that such work is still experimental, so if you're using some badly-behaved filters, expect things to break badly if you push it too far.