[FFmpeg-devel] Question about parallelizing h264 decoding

Thorsten Jordan tjordan
Thu May 10 17:01:00 CEST 2007


Hello,

since it seems that the performance of a single core is not enough for
full HDTV decoding, one obvious alternative is multithreading on SMP
systems.
I know that the current h264 decoder can't decode multithreaded, but i
want to discuss some ideas how this could be done.

Two choices come to my mind:

1) decode slices in parallel - problematic, because intra-frame
references and many data dependencies, also because of difficult
parallelization of cabac decoding etc.

2) decode frames or even GOPs in parallel - this one i want to discuss a
bit further.

The I-frames of h264 are still independent of each other, and the
P-frames only reference previous I- or P-frames, right?

Could one then decode frames in parallel, if core #1 decodes I-frame of
Gop #1, and core #2 decodes I-frame of Gop #2. After that core #2 could
decode the first P-frame of Gop #2 (hence the B-frames of Gop #2 need
pictures from Gop #1), while core #1 continues on Gop #1, and so on.

My question is, could this work in theory or i am missing something? If
it would work, do you see special problems here?

This solution means one has to pre-parse and buffer 1-2 Gops, which is
an enormous amount of data and gives high delay for display, but if we
could live with that, decoding can be faster.

Thanks for your comments.

-- 
Regards, Thorsten




More information about the ffmpeg-devel mailing list