[XviD-devel] mulithread rework

Stephan Assmus superstippi at gmx.de
Wed Apr 23 16:23:05 CEST 2008


Bill Mccormick wrote:
> This is kind of a newbie question, and I readily admit I don't completely 
> understand the details of the encoding process.
> 
> If you want to do the frame encoding in parallel on n processors, 
> wouldn't it be ideal to tessallate the frame into n pieces?   For example 
> if you have 4 processors then split the frame up into 4 quadrants and 
> make each processor responsible for 1 quadrant.
> 
> For inter-coded frames all 4 threads could share read only access to the 
> reference frame(s).   Statically create 1 thread per processor to perform 
> encoding so you don't waste time with thread creation/destruction.    
> Maybe there's a final thread to consolidate the 4 quadrants into a 
> complete frame if necessary.
> 
> I'm sure I'm missing something, what is it?

I will also readily admit that I am clueless with regards to the encoding 
process and it's requirements. However, I wrote a graphics app prototype 
once that processed different regions of the image in multiple threads. One 
thing interested me: When implementing a gaussian blur filter the threads 
needed to access pixels outside of their region to calculate pixels within 
their region. But since this was read only access it was ok. It got 
interesting when processing multiple layers of gaussian blurs. Because then 
these threads would duplicate some work. Ie thread A would calculate a 
region outside it's target region for the first blur, only to be able to 
have all data for the second blur. But thread B might also have calculated 
those very same pixels because it needed them for it's own target region. 
My point is, I allowed this happening and also used more memory so that 
each thread had it's own (full frame) intermediate buffer if it needed to 
store some results. But the effect was that each thread could work quite 
independently from each other. I don't know if anything of this can be 
applied to xvid though, so sorry for wasting your time if that is not the 
case. :-)

Best regards,
-Stephan


More information about the XviD-devel mailing list