[FFmpeg-devel] [PATCH] libavformat/utils: Interpolate missing timestamps in H264 and HEVC when no b-frames observed.
Michael Niedermayer
michael at niedermayer.cc
Mon May 13 13:04:55 EEST 2019
On Sat, May 11, 2019 at 11:20:51PM -0400, Andriy Gelman wrote:
> From: Andriy Gelman <andriy.gelman at gmail.com>
>
> Fixes Ticket #7895.
>
> Currently, timestamp interpolation is disabled by default in H264 and
> HEVC. This creates playback issues when the demuxer does not output a
> valid timestamp. This patch allows interpolation when no b-frames have
> been observed during decoding, which fixes playback issues for some
> missing timestamp cases.
> ---
> libavformat/utils.c | 11 +++++++++--
> 1 file changed, 9 insertions(+), 2 deletions(-)
>
> diff --git a/libavformat/utils.c b/libavformat/utils.c
> index a63d71b0f4..0668ae3ad1 100644
> --- a/libavformat/utils.c
> +++ b/libavformat/utils.c
> @@ -1233,7 +1233,9 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
> int64_t offset;
> AVRational duration;
> int onein_oneout = st->codecpar->codec_id != AV_CODEC_ID_H264 &&
> - st->codecpar->codec_id != AV_CODEC_ID_HEVC;
> + st->codecpar->codec_id != AV_CODEC_ID_HEVC ||
> + (!st->internal->avctx->max_b_frames &&
> + st->cur_dts != RELATIVE_TS_BASE);
This needs a comment explaining what it does. Assuming it is what i think it is
then its not completely obvious and could confuse someone working on the code
in the future.
>
> if (s->flags & AVFMT_FLAG_NOFILLIN)
> return;
> @@ -1272,6 +1274,10 @@ static void compute_pkt_fields(AVFormatContext *s, AVStream *st,
> delay = st->internal->avctx->has_b_frames;
> presentation_delayed = 0;
>
> + /*update max_b_frames if delay is larger */
> + if (delay > st->internal->avctx->max_b_frames)
> + st->internal->avctx->max_b_frames = delay;
do we have a testcase for this ?
[...]
--
Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB
If you fake or manipulate statistics in a paper in physics you will never
get a job again.
If you fake or manipulate statistics in a paper in medicin you will get
a job for life at the pharma industry.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20190513/ca4ef155/attachment.sig>
More information about the ffmpeg-devel
mailing list