H264: Only wait before triggering ff_thread_setup_complete() until the next slice...
authorMichael Niedermayer <michaelni@gmx.at>
Mon, 3 Oct 2011 22:14:48 +0000 (00:14 +0200)
committerAnton Khirnov <anton@khirnov.net>
Fri, 7 Oct 2011 12:23:26 +0000 (14:23 +0200)
This allows concurrent decoding of the last field/frame, rather than
only the last slice, of data packets with multiple NAL units packed
together.

This will fix the slowdown reported in e.g. bug 52.

Signed-off-by: Anton Khirnov <anton@khirnov.net>
libavcodec/h264.c

index 3b550cf..83c26ef 100644 (file)
@@ -3633,9 +3633,13 @@ static int decode_nal_units(H264Context *h, const uint8_t *buf, int buf_size){
             switch (hx->nal_unit_type) {
                 case NAL_SPS:
                 case NAL_PPS:
+                    nals_needed = nal_index;
+                    break;
                 case NAL_IDR_SLICE:
                 case NAL_SLICE:
-                    nals_needed = nal_index;
+                    init_get_bits(&hx->s.gb, ptr, bit_length);
+                    if (!get_ue_golomb(&hx->s.gb))
+                        nals_needed = nal_index;
             }
             continue;
         }