[FFmpeg-devel] Question about parallelizing h264 decoding

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


since it seems that the performance of a single core is not enough for
full HDTV decoding, one obvious alternative is multithreading on SMP
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