logo Sign In

Avisynth parallel encoding

Author
Time
 (Edited)

Studing a good way to improve speed with avisynth, I tested some different path…

  • New CPU: obvious… but take in account the complete cpubenchmark score, not only the single thread - if, for example, your old dual core CPU has a single thread score of 500 and complete score of 1000, and the new quad core has a single thread score of 1000 and complete score of 4000, it will go four time faster, more or less!
  • Faster HDD (or better SSD): haven’t tried an SSD yet, but I’m pretty sure this will not improve the overall speed.
  • Avisynth 64bit: could indeed improve speed, but it has quite few compatible plugins…
  • MT version and other multithread plugins: could work, but sometimes MT crashes, and other plugins didn’t work - probably my fault
  • Parallel encoding: it works well! Follow me…

I tried this path in the latest days; I didn’t dare to try it with my poor old dual core, dual threaded CPU, but with the new quad core, eight treaded one, I wanted to give it a try… and, oh boys, it works, very well!

How it works?

Well, just take your script, and “cut” it in several pieces - it seems that four pieces works well here, they run the CPU at around 80%, leaving some breath for surfing and other little things; probably it could work with more pieces, but your mileage can vary.

Before


project1.avs
avisource(“your source.avi”)
filter1
filter2
filter3
[/code]

After


project1_part1.avs

avisource(“your source.avi”)
filter1
filter2
filter3
trim(000000,040020)

project1_part2.avs

avisource(“your source.avi”)
filter1
filter2
filter3
trim(040000,080020)

project1_part3.avs

avisource(“your source.avi”)
filter1
filter2
filter3
trim(080000,120020)

project1_part4.avs

avisource(“your source.avi”)
filter1
filter2
filter3
trim(120000,000000)

project1_final.avs

a=avisource(“project1_part1.avi”).trim(000000,039999)
b=avisource(“project1_part2.avi”).trim(000000,039999)
c=avisource(“project1_part3.avi”).trim(000000,039999)
d=avisource(“project1_part4.avi”)

a+b+c+d


Encode them at the same time; speed improvement: from 250% up to 400%, depending on how “heavy” are the filters/plugins…

You know, instead of waiting, let’s say, two days, it’s better to wait “just” 12 hours, don’t you think?

Hope this would be of some help.

Sadly my projects are lost due to an HDD crash… 😦 | [Fundamental Collection] thread | blog.spoRv.com | fan preservation forum: fanres.com

Author
Time

or try using vapoursynth instead? It natively supports threading.

Author
Time

Too old to learn also vapoursynth… 😄

Well, preparing the various parts would take usually five minutes, while the time spared is roughly equal to several hours, so I think I could follow this path for some time more…

Sadly my projects are lost due to an HDD crash… 😦 | [Fundamental Collection] thread | blog.spoRv.com | fan preservation forum: fanres.com