Such a field can be seen as generally useful in cases where the API user is not implementing custom AVIO callbacks, but still would like to know if data is being read even if AVPackets are not being returned. --- Originally I thought about making an accessor for the private field, to not grow the public struct's size (and have a duplicate field, as well as making sure the value was read-only). But an objection was raised that such accessors should be refrained from as they unnecessarily filled the function symbol space or so. Together with the objection, a proposal of making it a field on the public struct that was only written to was proposed.
This patch follows that proposal. doc/APIchanges | 3 +++ libavformat/avio.h | 5 +++++ libavformat/aviobuf.c | 2 ++ libavformat/version.h | 2 +- 4 files changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 7b267a79ac..6a8cf8ea15 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -14,6 +14,9 @@ libavutil: 2021-04-27 API changes, most recent first: +2021-09-26 - xxxxxxxxxx - lavf 59.6.100 - avio.h + Introduce a public bytes_read statistic field to AVIOContext. + 2021-09-21 - xxxxxxxxxx - lavu 57.7.100 - pixfmt.h Add AV_PIX_FMT_X2BGR10. diff --git a/libavformat/avio.h b/libavformat/avio.h index a7b56ab667..2cfb548231 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -297,6 +297,11 @@ typedef struct AVIOContext { * used keeping track of already written data for a later flush. */ unsigned char *buf_ptr_max; + + /** + * Read-only statistic of bytes read for this AVIOContext. + */ + int64_t bytes_read; } AVIOContext; /** diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index d79e41ca77..33825ade73 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -572,6 +572,7 @@ static void fill_buffer(AVIOContext *s) s->buf_ptr = dst; s->buf_end = dst + len; ffiocontext(s)->bytes_read += len; + s->bytes_read = ffiocontext(s)->bytes_read; } } @@ -645,6 +646,7 @@ int avio_read(AVIOContext *s, unsigned char *buf, int size) } else { s->pos += len; ffiocontext(s)->bytes_read += len; + s->bytes_read = ffiocontext(s)->bytes_read; size -= len; buf += len; // reset the buffer diff --git a/libavformat/version.h b/libavformat/version.h index 13df244d97..d5dd22059b 100644 --- a/libavformat/version.h +++ b/libavformat/version.h @@ -32,7 +32,7 @@ // Major bumping may affect Ticket5467, 5421, 5451(compatibility with Chromium) // Also please add any ticket numbers that you believe might be affected here #define LIBAVFORMAT_VERSION_MAJOR 59 -#define LIBAVFORMAT_VERSION_MINOR 5 +#define LIBAVFORMAT_VERSION_MINOR 6 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ -- 2.31.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".