Von meinem iPhone gesendet

Anfang der weitergeleiteten E‑Mail:

> Von: Daniel Oberhoff <danieloberh...@gmail.com>
> Datum: 25. November 2014 09:58:03 MEZ
> An: Reimar Döffinger <reimar.doeffin...@gmx.de>
> Betreff: Re: [FFmpeg-devel] pipeline multithreading
> 
> 
> 
> Von meinem iPhone gesendet
> 
>>> Am 24.11.2014 um 17:16 schrieb Reimar Döffinger <reimar.doeffin...@gmx.de>:
>>> 
>>> On Mon, Nov 24, 2014 at 12:35:58PM +0100, Daniel Oberhoff wrote:
>>> inout -> filter1 -> filter2 -> output
>>> 
>>> some threads processing frame n in the output (i.e. encoding), other 
>>> threads procesing frame n+1 in filter2, others processing frame n+2 in 
>>> filter1, and yet others processing frame n+3 decoding. This way 
>>> non-parallel filters can be sped up, and diminishing returns for too much 
>>> striping can be avoided. With modern cpus scaling easily up to 24 hardware 
>>> threads I see this as neccessary to fully utilize the hardware.
>> 
>> Keep in mind the two things:
>> 1) It only works for cases where many filters are used, which is not
>> necessarily a common case
> 
> For us it is, we do lens correction, rescaling, transform, pad, and overlay 
> with multiple streams, easily 10 filters in place. But I cannot judge for 
> others.
> 
>> 2) While it would possibly be simpler to implement, you do not want each
>> filter to use its own thread. This leads to massive bouncing of data between
>> caches and especially for filters that use in-place processing a large
>> amount of cache coherency traffic.
>> Ideally, when used with frame multithreading you would even re-use the
>> thread that did the decoding.
> 
> What you want is a thread pool with threads "following the data", i.e. rather 
> a thread per frame in-flight, then per filter. Mixing this with slice 
> threading gets more complex, but not too much, it's a balance game.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to