diff --git a/libavcodec/h264.c b/libavcodec/h264.c index 3b9f072596..1c71e3fb8a 100644 --- a/libavcodec/h264.c +++ b/libavcodec/h264.c @@ -1377,6 +1377,7 @@ static int get_last_needed_nal(H264Context *h, const uint8_t *buf, int buf_size) int first_slice = 0; while(1) { + GetBitContext gb; int nalsize = 0; int dst_length, bit_length, consumed; const uint8_t *ptr; @@ -1418,8 +1419,8 @@ static int get_last_needed_nal(H264Context *h, const uint8_t *buf, int buf_size) case NAL_DPA: case NAL_IDR_SLICE: case NAL_SLICE: - init_get_bits(&h->gb, ptr, bit_length); - if (!get_ue_golomb(&h->gb) || + init_get_bits(&gb, ptr, bit_length); + if (!get_ue_golomb(&gb) || !first_slice || first_slice != h->nal_unit_type) nals_needed = nal_index;