mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2024-12-24 00:02:52 +00:00
Fix parser not to clobber has_b_frames when extradata is set.
Due to it in contrast to the decoder not setting up low_delay, the code in parse_nal_units would always end up setting has_b_frames to 1 (except when stream is explicitly marked as low delay). Since the parser itself would create extradata, simply reopening the parser would cause this. estimate_timings_from_pts would cause the parser to be reopened on the same stream. This fixes trac issue #360. Signed-off-by: Reimar Döffinger <Reimar.Doeffinger@gmx.de>
This commit is contained in:
parent
13e9a0fbfb
commit
31ac0ac29b
@ -251,6 +251,12 @@ static int h264_parse(AVCodecParserContext *s,
|
|||||||
h->got_first = 1;
|
h->got_first = 1;
|
||||||
if (avctx->extradata_size) {
|
if (avctx->extradata_size) {
|
||||||
h->s.avctx = avctx;
|
h->s.avctx = avctx;
|
||||||
|
// must be done like in decoder, otherwise opening the parser,
|
||||||
|
// letting it create extradata and then closing and opening again
|
||||||
|
// will cause has_b_frames to be always set.
|
||||||
|
// Note that estimate_timings_from_pts does exactly this.
|
||||||
|
if (!avctx->has_b_frames)
|
||||||
|
h->s.low_delay = 1;
|
||||||
ff_h264_decode_extradata(h);
|
ff_h264_decode_extradata(h);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user