summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-10-04 00:14:48 +0200
committerMichael Niedermayer <michaelni@gmx.at>2011-10-04 00:26:18 +0200
commiteaa21b6870ba8bba4b0370e91f1941307c1c9681 (patch)
tree303b0bf45360a903036e9cdf16e2bf8f1325c7b8
parenta9255d37815ba5df553aa6278a9d8bc7603ff458 (diff)
H264: hotfix for speedloss on frame threading and h264 files with slices.
This fix is not ideal as it still limits the multithreading on field pictures to the 2nd field only. Ill try to fix it properly to allow both fields to decode concurrently but this needs more work. This bug exists since and was caused by: commit ea6331f8bbaf3343faec6ffe77a6218a016a3af5 Author: Ronald S. Bultje <rsbultje@gmail.com> Date: Mon Jun 20 10:24:33 2011 -0400 h264-mt: fix deadlock in packets with multiple slices (e.g. MP4).
-rw-r--r--libavcodec/h264.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index 4a1050dc8a..07e61efb05 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -3710,9 +3710,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;
}