mirror of https://git.ffmpeg.org/ffmpeg.git
h264: enable low delay only if no delayed frames were seen
Dropping frames is undesirable but that is the only way by which the decoder could return to low delay mode. Instead emit a warning and continue with delayed frames. Fixes a crash in fuzzed sample nasa-8s2.ts_s20033 caused by a larger than expected has_b_frames value. Low delay keeps getting re-enabled from a presumely broken SPS. CC: libav-stable@libav.org
This commit is contained in:
parent
7ee4071362
commit
706acb558a
|
@ -3867,8 +3867,14 @@ again:
|
|||
|
||||
if (s->flags & CODEC_FLAG_LOW_DELAY ||
|
||||
(h->sps.bitstream_restriction_flag &&
|
||||
!h->sps.num_reorder_frames))
|
||||
s->low_delay = 1;
|
||||
!h->sps.num_reorder_frames)) {
|
||||
if (s->avctx->has_b_frames > 1 || h->delayed_pic[0])
|
||||
av_log(avctx, AV_LOG_WARNING, "Delayed frames seen "
|
||||
"reenabling low delay requires a codec "
|
||||
"flush.\n");
|
||||
else
|
||||
s->low_delay = 1;
|
||||
}
|
||||
|
||||
if (avctx->has_b_frames < 2)
|
||||
avctx->has_b_frames = !s->low_delay;
|
||||
|
|
Loading…
Reference in New Issue