From patchwork Wed Oct 13 21:10:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 31105 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2084:0:0:0:0 with SMTP id a4csp6437798ioa; Wed, 13 Oct 2021 14:11:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzbrg/TESb/kcrfHRbW0aA4GZyudJS8G4OQCzbY4Fozu5qChlJ+nkta7bTVugErAd9jnqkm X-Received: by 2002:a05:6402:5216:: with SMTP id s22mr2621350edd.167.1634159475890; Wed, 13 Oct 2021 14:11:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1634159475; cv=none; d=google.com; s=arc-20160816; b=vZrjXeFtJDM/JBDq9FxU0geKAg/MStjruPGMHqmFlBL/knRpqX8c4x6WEv8elSOtJz k29zsZjJBwQF+RkGYAGQd1zfDHZ0kJH2H3EtApB/h/YPWlzaokpXp6ywQVZXf0oANqHy uBt0+j3E8mcq2JnqusmsyfEu2jFywKUg0fU8kdotfUnDa94+2UbHToZyuAKfv/rAH8RX 6B3Z8YhjU5FqdM2QuTXm+ZGY+3FUta0M6cZmcfUD4MOGzIf8e2lU4baACihPhq+WTNWl X6Jmng04/8xvYusgTYfKlFAQB7RcxS9iPiaieiMgQQ9eHxJTanxtY4P98n0UyKdICFUw RjhA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=Vx+UkYW8h9qH8MGEM691jCKzItSHXQzKqZY6u6jV2dQ=; b=Ozr/bxkarUV3pkB4wxt3KlZD52KNO131zQEuwirZRNW8c7PqQljunIbci3Mu2mOdXf PUKZSKOWb2pk5jJERj+Vshb4JII/ywMwbtrf9BxPKhgffNqReBDkBbuGKCBZ7rXPwYSr QdMqydHpU8J4oEuZCnmThzY328a7WWxVvJw/Nhc+h4o25eigAp/mfcWPCh4Pjpq1K/F6 0Y9JJCj7xG62GlJz3OedmK1ysg9Vqb7ioYFe2JwbwscILqa4UGWJ0pHipvMwyD8kLuUi 3CbPBC/TKrVKuK/K7yDSKwoZIqh/xKg9fh/H84smMuI5U6+cP7xbH1zOF5kpcMGUr0W4 xQUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=oEkvgv+A; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f10si971546ejl.258.2021.10.13.14.11.15; Wed, 13 Oct 2021 14:11:15 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=oEkvgv+A; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8530F6804A0; Thu, 14 Oct 2021 00:10:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lf1-f53.google.com (mail-lf1-f53.google.com [209.85.167.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2C02168A94E for ; Thu, 14 Oct 2021 00:10:45 +0300 (EEST) Received: by mail-lf1-f53.google.com with SMTP id u21so14367576lff.8 for ; Wed, 13 Oct 2021 14:10:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=6kQLXK7Zz02vQIuuvJsPrEVkxOyEDxEfCVc88qb+CzM=; b=oEkvgv+ABuIMiNlhfbtWgBXCVCY2l8XxVQQ+cfWWuYE7CMTHtUL53PQJYWDMJPoTJz bqwJR+fUn33vISX4UfbExO/jWgzcd9iJQtcuvyDnSYDH4ZyeA6+WKS7sRHoSqiRKUoLT aOevkOBxGYPQVwVk+g2hbiTjcPOjkSGommSIMYh+wn9mubJ4+seELHF+CyoC0oIyiFDC 763L6S5HY14JYuApIMNikqS9eN7u91SLAQUWS7q0XDyoM8EmOk2+vg2pC7Ni6SYI+Zek XFhqagwXtjo2gzMfZuF6+B8G6LakMTkPG5mPh4AQIIldv3In/XNBVLFDybGwRAzTpYr4 6+Cg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=6kQLXK7Zz02vQIuuvJsPrEVkxOyEDxEfCVc88qb+CzM=; b=dulwArNbJhXv7nqKRwdAi2WxA5RFz1V9HHTlozcvQ05qeIp8+ebaBnH7cu6S+lIkmm +bV5St/U/1NhkBOgJZIF/KZ89bkL9869NBr1QjHdjeXdsVt6XZSGQi7FJ47gwlxWV84t 7cv9uqnMg5qmSqkOxgolwHo48IMyh7mn/J7yZ5MdfzuRpnfr94wmqKJFdegzrUdkMjen GocHo+HviKegjgdsORYXy7b8Vu3w9QnVFJN09o6m8QycIgWoJSPITtgizkqA3V9yQtZJ IFokl61fQpxlOUKR00UoFSopWj7i7vmzt/grun9eD0CwEdJy13IdRjzO43RRawxmidDQ hcfA== X-Gm-Message-State: AOAM5303gzab5hDNPAzMz3UTAtkcKkfztgpQFFdKxKV5LsEaGNILI6LV x7zPdfxg+GMQtH1zj9GlXfAMNg6BkzM= X-Received: by 2002:a2e:8e34:: with SMTP id r20mr1782421ljk.333.1634159444518; Wed, 13 Oct 2021 14:10:44 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id s4sm49176lfd.103.2021.10.13.14.10.44 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 13 Oct 2021 14:10:44 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Thu, 14 Oct 2021 00:10:37 +0300 Message-Id: <20211013211038.13391-3-jeebjp@gmail.com> X-Mailer: git-send-email 2.31.1 In-Reply-To: <20211013211038.13391-1-jeebjp@gmail.com> References: <20211013211038.13391-1-jeebjp@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 2/3] avformat/avio{, buf}: introduce public AVIOContext::bytes_{read, written} X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 03osUPR8QXl+ Such fields 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 or written out, such as in case data is being read from input but no AVPacket has been received yet. --- doc/APIchanges | 3 +++ libavformat/avio.h | 10 ++++++++++ libavformat/aviobuf.c | 4 +++- libavformat/version.h | 2 +- 4 files changed, 17 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 7b267a79ac..806eaf4c83 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.7.100 - avio.h + Introduce public bytes_{read,written} statistic fields 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..0f9a0f909f 100644 --- a/libavformat/avio.h +++ b/libavformat/avio.h @@ -297,6 +297,16 @@ 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; + + /** + * Read-only statistic of bytes written for this AVIOContext. + */ + int64_t bytes_written; } AVIOContext; /** diff --git a/libavformat/aviobuf.c b/libavformat/aviobuf.c index 7afbff0266..436a264f83 100644 --- a/libavformat/aviobuf.c +++ b/libavformat/aviobuf.c @@ -165,7 +165,7 @@ static void writeout(AVIOContext *s, const uint8_t *data, int len) s->error = ret; } else { if (s->pos + len > ctx->bytes_written) { - ctx->bytes_written = s->pos + len; + s->bytes_written = ctx->bytes_written = s->pos + len; s->written = ctx->bytes_written; } } @@ -575,6 +575,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; } } @@ -648,6 +649,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 d5dd22059b..474640bb78 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 6 +#define LIBAVFORMAT_VERSION_MINOR 7 #define LIBAVFORMAT_VERSION_MICRO 100 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \