H264: Only wait before triggering ff_thread_setup_complete() until the next slice that contains a start-of-field/frame macroblock

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>
This commit is contained in:
Michael Niedermayer 2011-10-04 00:14:48 +02:00 committed by Anton Khirnov
parent a72cad0a6c
commit 14c21c1ff5

View 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;
}