diff options
author | James Almer <jamrial@gmail.com> | 2025-07-08 15:00:29 -0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2025-07-10 11:13:36 -0300 |
commit | 1787fade209b1ecbd4b911c9d77a52bcdec13fa6 (patch) | |
tree | 5bb3e4e1fcb90d7caae407e8b2b93187301803e6 | |
parent | 82aeee3c19f42d4a03b221fdd0ef9dfeb060a37e (diff) | |
download | ffmpeg-1787fade209b1ecbd4b911c9d77a52bcdec13fa6.tar.gz |
fftools/ffmpeg_demux: don't flag timestamps as unreliable if they are generated
Regardless of the source being an AVFMT_NOTIMESTAMPS format, if the timestamps
are generated like when using the use_wallclock_as_timestamps demuxer option,
then they are reliable.
Fixes ticket #11268
Signed-off-by: James Almer <jamrial@gmail.com>
-rw-r--r-- | fftools/ffmpeg_demux.c | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 6e01efc420..78d8ff6b7d 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -945,9 +945,18 @@ int ist_use(InputStream *ist, int decoding_needed, if (decoding_needed && ds->sch_idx_dec < 0) { int is_audio = ist->st->codecpar->codec_type == AVMEDIA_TYPE_AUDIO; + int is_unreliable = !!(d->f.ctx->iformat->flags & AVFMT_NOTIMESTAMPS); + int64_t use_wallclock_as_timestamps; + + ret = av_opt_get_int(d->f.ctx, "use_wallclock_as_timestamps", 0, &use_wallclock_as_timestamps); + if (ret < 0) + return ret; + + if (use_wallclock_as_timestamps) + is_unreliable = 0; ds->dec_opts.flags |= (!!ist->fix_sub_duration * DECODER_FLAG_FIX_SUB_DURATION) | - (!!(d->f.ctx->iformat->flags & AVFMT_NOTIMESTAMPS) * DECODER_FLAG_TS_UNRELIABLE) | + (!!is_unreliable * DECODER_FLAG_TS_UNRELIABLE) | (!!(d->loop && is_audio) * DECODER_FLAG_SEND_END_TS) #if FFMPEG_OPT_TOP | ((ist->top_field_first >= 0) * DECODER_FLAG_TOP_FIELD_FIRST) |