- priority: 5 --> 7
- assigned_to: nobody --> ravi-korsa
Frame-level video decoding of H.264 for multi-core support
Frame-level decoding, (also known as frame-balancing decoding), can be used to achieve parallelism (multi-core usage) for video codec applications by exploiting frame level parallelism in the H.264 (MPEG-4 AVC) codec.
The I-frames of H264 are still independent of each other, and the P-frames only reference previous I- or P-frames. Thus one could 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.
So that thread 1 decode frame 1 and updates a last_decoded_row variable and thread 2 decodes frames 2 and checks if the needed reference is available or if last_decoded_row is still too small in the later case the thread waits a third thread could now work on frame 3 and so on.