diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2015-06-02 18:40:53 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2015-06-11 13:42:06 +0200 |
commit | 4e640f05605f19a377c2ae9cc27effb53f83cf4f (patch) | |
tree | ea95cb81545e017a33d3277c969ff8a061555d01 | |
parent | 70af8a5efb238b0c7a4a220facd8083455e9857d (diff) | |
download | ffmpeg-4e640f05605f19a377c2ae9cc27effb53f83cf4f.tar.gz |
avformat/avio: move short seek threshold to the context
This allows us to adjust it internally.
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r-- | libavformat/avio.h | 6 | ||||
-rw-r--r-- | libavformat/aviobuf.c | 3 |
2 files changed, 8 insertions, 1 deletions
diff --git a/libavformat/avio.h b/libavformat/avio.h index 5c5aa6d0f0..28997f8157 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 45400cd01d..dfefe62ecd 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)) { |