[FFmpeg-devel] Once again: Multithreaded H.264 decoding with ffmpeg?

Siegmar Buss lists
Fri May 30 00:16:21 CEST 2008


Hello everybody,

I am a newbie to ffmpeg development and I know that I am not the first 
person thinking about a multithreaded H.264 decoder. I learned that the 
ffmpeg h264 decoder already supports parallel decoding based on slices, 
but that many encoders do not use multiples slices per frame, limiting 
the benefit of this feature.

Is anyone out there currently working on parallelizing the macroblock 
level? My incomplete comprehension suggests that there are several ways 
to do this. Or is this idea a stupid one?

Could it be realisitic to achieve lets say a speedup between 30% and 50% 
on a modern dual core CPU or are there limitations that make this a 
dream? What about using NVIDIA's CUDA or AMD's stream computing to make 
use of modern GPUs (given that the "native" acceleration APIs are not 
available under Linux)?

I have been looking into the h264 code and each piece of H.264 
documentation I could get my hands on. And I have the impression that 
some of the decoding steps (namely residual decoding, deblocking) could 
be parallelized quite well. But I don't have any idea how much time the 
individual decoding steps take. Does someone happen to have some 
numbers? Or a hint how to measure this myself?

Would it e.g. make any sense to parallelize the deblocking filter?

I would appreciate any comments very much.

Best regards,
   Siegmar




More information about the ffmpeg-devel mailing list