[FFmpeg-devel] [PATCH 1/3] avformat/avio: move short seek threshold to the context

Michael Niedermayer michaelni at gmx.at
Tue Jun 2 18:40:53 CEST 2015


This allows us to adjust it internally.

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
---
 libavformat/avio.h    |    6 ++++++
 libavformat/aviobuf.c |    3 ++-
 2 files changed, 8 insertions(+), 1 deletion(-)

diff --git a/libavformat/avio.h b/libavformat/avio.h
index 51913e3..480b051 100644
--- a/libavformat/avio.h
+++ b/libavformat/avio.h
@@ -196,6 +196,12 @@ typedef struct AVIOContext {
      * This field is internal to libavformat and access from outside is not allowed.
      */
     int orig_buffer_size;
+
+    /**
+     * Threshold to favor readahead over seek.
+     * This is current internal only, do not use from outside.
+     */
+    int short_seek_threshold;
 } AVIOContext;
 
 /* unbuffered I/O */
diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c
index aad97ae..2e69705 100644
--- a/libavformat/aviobuf.c
+++ b/libavformat/aviobuf.c
@@ -97,6 +97,7 @@ int ffio_init_context(AVIOContext *s,
     s->seekable        = seek ? AVIO_SEEKABLE_NORMAL : 0;
     s->max_packet_size = 0;
     s->update_checksum = NULL;
+    s->short_seek_threshold = SHORT_SEEK_THRESHOLD;
 
     if (!read_packet && !write_flag) {
         s->pos     = buffer_size;
@@ -232,7 +233,7 @@ int64_t avio_seek(AVIOContext *s, int64_t offset, int whence)
         /* can do the seek inside the buffer */
         s->buf_ptr = s->buffer + offset1;
     } else if ((!s->seekable ||
-               offset1 <= s->buf_end + SHORT_SEEK_THRESHOLD - s->buffer) &&
+               offset1 <= s->buf_end + s->short_seek_threshold - s->buffer) &&
                !s->write_flag && offset1 >= 0 &&
                (!s->direct || !s->seek) &&
               (whence != SEEK_END || force)) {
-- 
1.7.9.5



More information about the ffmpeg-devel mailing list