[FFmpeg-devel] [PATCH v2] avformat/utils: prevent ts out of [min_ts, max_ts] interval due to rouding
Zhao Zhili
quinkblack at foxmail.com
Sun Jan 10 10:57:27 EET 2021
Rounding min_ts towards +infinity and max_ts towards -infinity can
make ts out of the [min_ts, max_ts] interval, and then leads to seek
failure. Fix it by using the simple rounding as ts for both min_ts
and max_ts.
---
libavformat/utils.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libavformat/utils.c b/libavformat/utils.c
index 503e583ad0..88221c5ac4 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -2500,10 +2500,10 @@ int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts,
ts = av_rescale_q(ts, AV_TIME_BASE_Q, time_base);
min_ts = av_rescale_rnd(min_ts, time_base.den,
time_base.num * (int64_t)AV_TIME_BASE,
- AV_ROUND_UP | AV_ROUND_PASS_MINMAX);
+ AV_ROUND_PASS_MINMAX);
max_ts = av_rescale_rnd(max_ts, time_base.den,
time_base.num * (int64_t)AV_TIME_BASE,
- AV_ROUND_DOWN | AV_ROUND_PASS_MINMAX);
+ AV_ROUND_PASS_MINMAX);
stream_index = 0;
}
--
2.28.0
More information about the ffmpeg-devel
mailing list