[FFmpeg-devel] [PATCH] avformat/avio: fixed AVSEEK_FORCE and documentation

Valerii Zapodovnikov val.zapod.vz at gmail.com
Mon May 24 07:46:51 EEST 2021


Always true expression: we would have returned on line 265.
Because of short curcuiting force will never be checked.
---
 libavformat/avio.h    | 1 -
 libavformat/aviobuf.c | 3 +--
 2 files changed, 1 insertion(+), 3 deletions(-)

diff --git a/libavformat/avio.h b/libavformat/avio.h
index d022820a6e..8bc00e3f3f 100644
--- a/libavformat/avio.h
+++ b/libavformat/avio.h
@@ -534,7 +534,6 @@ void avio_write_marker(AVIOContext *s, int64_t time, enum AVIODataMarkerType typ
  * Passing this flag as the "whence" parameter to a seek function causes it to
  * seek by any means (like reopening and linear reading) or other normally unreasonable
  * means that can be extremely slow.
- * This may be ignored by the seek code.
  */
 #define AVSEEK_FORCE 0x20000
 
diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
index ddfa4ecbf1..d748cda397 100644
--- a/libavformat/aviobuf.c
+++ b/libavformat/aviobuf.c
@@ -286,8 +286,7 @@ int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
     } else if ((!(s->seekable & AVIO_SEEKABLE_NORMAL) ||
                offset1 <= buffer_size + short_seek) &&
                !s->write_flag && offset1 >= 0 &&
-               (!s->direct || !s->seek) &&
-              (whence != SEEK_END || force)) {
+               (!s->direct || !s->seek) || force) {
         while(s->pos < offset && !s->eof_reached)
             fill_buffer(s);
         if (s->eof_reached)
-- 
2.30.2



More information about the ffmpeg-devel mailing list