diff options
author | Michael Niedermayer <michaelni@gmx.at> | 2012-06-02 23:01:13 +0200 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2012-06-15 11:24:16 +0200 |
commit | 11153a9371a84d881809f43e60830d3ed8ae60b9 (patch) | |
tree | cc70e26589e995012e32099a6be62ba5a38758e8 /libavformat | |
parent | f77a695d2e7c309823e69c6bf4078e5beaf61f13 (diff) | |
download | ffmpeg-11153a9371a84d881809f43e60830d3ed8ae60b9.tar.gz |
avio: Collect and print statistics of bytes read & seeks
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat')
-rw-r--r-- | libavformat/avio.h | 12 | ||||
-rw-r--r-- | libavformat/aviobuf.c | 4 |
2 files changed, 16 insertions, 0 deletions
diff --git a/libavformat/avio.h b/libavformat/avio.h index 260bdd95d0..9e9a763eff 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -128,6 +128,18 @@ typedef struct { * call the underlying seek function directly. */ int direct; + + /** + * Bytes read statistic + * This field is internal to libavformat and access from outside is not allowed. + */ + int64_t bytes_read; + + /** + * seek statistic + * This field is internal to libavformat and access from outside is not allowed. + */ + int seek_count; } AVIOContext; /* unbuffered I/O */ diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index 45a8bad37e..d8451c56d4 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -237,6 +237,7 @@ int64_t avio_seek(AVIOContext *s, int64_t offset, int whence) return AVERROR(EPIPE); if ((res = s->seek(s->opaque, offset, SEEK_SET)) < 0) return res; + s->seek_count ++; if (!s->write_flag) s->buf_end = s->buffer; s->buf_ptr = s->buffer; @@ -423,6 +424,7 @@ static void fill_buffer(AVIOContext *s) s->pos += len; s->buf_ptr = dst; s->buf_end = dst + len; + s->bytes_read += len; } } @@ -792,6 +794,8 @@ int avio_close(AVIOContext *s) h = s->opaque; av_free(s->buffer); + if (!s->write_flag) + av_log(s, AV_LOG_DEBUG, "Statistics: %"PRId64" bytes read, %d seeks\n", s->bytes_read, s->seek_count); av_free(s); return ffurl_close(h); } |