From patchwork Sat Apr 21 19:51:37 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?b?Q2zDqW1lbnQgQsWTc2No?= X-Patchwork-Id: 8548 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:a02:155:0:0:0:0:0 with SMTP id c82-v6csp2029694jad; Sat, 21 Apr 2018 12:51:48 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+2PjAnCMmEWXajFA6ktOOAytrFOm8ZNb4YZaaoV6Axnx73BwdC7fn3LceQo03vvm4k9WvN X-Received: by 2002:adf:e802:: with SMTP id o2-v6mr2269746wrm.123.1524340308594; Sat, 21 Apr 2018 12:51:48 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524340308; cv=none; d=google.com; s=arc-20160816; b=fwAKdy8+ktk9qb8+pIF2Jy/JWqcgiElm7M7WJa2WAqhV4v7877QgSP9FKTozEH2zmM 61/KG90jx18CTBZ1zjZdfD6fCQnc7NoSkmrL/LbV9Bbm78reFariCMscC58l3ay/Bipc KSh8NTosBrqzriDlWdkV81ipSxJDzhq4+hSYzyacCjT4Ords0CQiXy1nhPm8tcrgIndF Hr5DE6ElhbhPqIGH+wPJp6ntipWTPUuI6ALySxvBdL0PSSRkZ3wMbRYCF+wzNFUGMtiE 2bwKjSP2pxT2l2G8JAMMnkAYDvYBoRRct0bz83JqLVEGFQpEwar5k6lUzFJvKBay1LhP 3Y5A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from :domainkey-signature:dkim-signature:delivered-to :arc-authentication-results; bh=3IfFpk276TOrulabLRXvOROXbe7RlN2Nz+BohRf6cdQ=; b=bnmXMPHlh6TXrTw4Q04wt+10YRJIT+a+viiNjQpHFXZRPqatJ9L0mfcAGDRDewL2eK HtDE38AOLl1ZtYdfTDL6TeUjLAmKvnAr420M9DALopQhaAiQmS2t0ghFOzTWIPVgYGGP J4gpvSoickn8LaqDgSYx1/QELJijpHRZrAk/lP+p57Pp7H1hdPNfqBcon0RFpalifQ90 ub622D/RE7i+13fL5OExD7lRQ3YSNdMTSWm1SZCzxyPEPE+y0BBomzDbPreIHK7oGpNv aik2zpL10ZTSjGXmKjGdu73giHg5DVlTZQu4T0swDFkcBcvtfaXVE8BIml6iioqDS04S C++w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@pkh.me header.s=selector1 header.b=R3u8ysVF; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id i17si3112529wmh.148.2018.04.21.12.51.48; Sat, 21 Apr 2018 12:51:48 -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=@pkh.me header.s=selector1 header.b=R3u8ysVF; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 92B1768A10A; Sat, 21 Apr 2018 22:51:18 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from golem.pkh.me (LStLambert-657-1-117-164.w92-154.abo.wanadoo.fr [92.154.28.164]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5CF4C689EE1 for ; Sat, 21 Apr 2018 22:51:11 +0300 (EEST) Received: from golem.pkh.me (localhost.localdomain [127.0.0.1]) by golem.pkh.me (OpenSMTPD) with ESMTP id 59a173a0 for ; Sat, 21 Apr 2018 19:51:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=pkh.me; h=from:to:cc :subject:date:message-id; s=selector1; bh=496XcNTeLBxichWTFYHZiK GzbIE=; b=R3u8ysVFQj7Zasrh4Fyju7P8slLytcv9hgikE2OdPoR00U4zQJUgVF /9qcxdJXIeTlgRA6bqxn+PqrZkK34ZcXqm7+AXLoMo55+NIPB+KnKd3ddyDsyrnK S0GXK3tXEaQg6KQkru19cefAIAZHT42Z11STwUXVbqaB6G3/6NxCBB7mMGPMqhsb IRmhdm0erK7f/joNksi24JBPXJSlshNNzumyHqQK1pp4r5aPESSN6oGjKbU0syJp 1ORzrpmpB4KmcK/uQhD18iH/NIHEYv+yMHPZ9Oqs3iU3RLgfL+I0dGCcXSUg9dom c2DAh75LAqunz/2yAzoY+9CZpqDjV8mg== DomainKey-Signature: a=rsa-sha1; c=nofws; d=pkh.me; h=from:to:cc:subject :date:message-id; q=dns; s=selector1; b=fDA31Z6+IHVYel023sbQ4A/+ Jgbh1kIQzO6AilfK+14zkbyM0z0J4Wlp5rIeQb5+eLrkSUAeso8iduVm/T6VFoXo 8e+ySazzSa0/jLnJEmuLMK4GjTlqRBZkW/ej2yy6aTjv4yi2ixNmo/aVsPRSu2ky uDmOYNOqYHdCTHgsmpr1ICZhdcPFaf9vgP03mvpd1P0rGH0AF5hbtMWszfNsfjz7 mMLuwEYrxpX+n33z6Sk2M+s99InuecVLk4vj9Z+WRNTBYCwp2wtL8B61Xt1/Fwm3 sYPBfXk+BQ5fnyTmGSpXtg0JpFvWY7X4gyaP5Nu3IJSUYWq/Um7w6aZP2jLKcw== Received: from localhost (golem.pkh.me [local]) by golem.pkh.me (OpenSMTPD) with ESMTPA id 76e90c04; Sat, 21 Apr 2018 19:51:39 +0000 (UTC) From: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= To: ffmpeg-devel@ffmpeg.org Date: Sat, 21 Apr 2018 21:51:37 +0200 Message-Id: <20180421195137.13583-1-u@pkh.me> X-Mailer: git-send-email 2.16.3 Subject: [FFmpeg-devel] [PATCH] lavu/threadmessage: add av_thread_message_queue_nelem() X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 Cc: =?UTF-8?q?Cl=C3=A9ment=20B=C5=93sch?= MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" --- Been away from FFmpeg for way too long. Hope this patch get me back on track. Feel free to nitpick on the name. --- doc/APIchanges | 3 +++ libavutil/threadmessage.c | 9 +++++++++ libavutil/threadmessage.h | 5 +++++ libavutil/version.h | 2 +- tests/api/api-threadmessage-test.c | 4 +++- 5 files changed, 21 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 4f6ac2a031..393491c8e9 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -15,6 +15,9 @@ libavutil: 2017-10-21 API changes, most recent first: +2018-04-xx - xxxxxxxxxx - lavu 56.16.100 - threadmessage.h + Add av_thread_message_queue_nelem(). + -------- 8< --------- FFmpeg 4.0 was cut here -------- 8< --------- 2018-04-03 - d6fc031caf - lavu 56.13.100 - pixdesc.h diff --git a/libavutil/threadmessage.c b/libavutil/threadmessage.c index 872e9392b1..fed398926a 100644 --- a/libavutil/threadmessage.c +++ b/libavutil/threadmessage.c @@ -102,6 +102,15 @@ void av_thread_message_queue_free(AVThreadMessageQueue **mq) #endif } +int av_thread_message_queue_nelem(AVThreadMessageQueue *mq) +{ + int ret; + pthread_mutex_lock(&mq->lock); + ret = av_fifo_size(mq->fifo); + pthread_mutex_unlock(&mq->lock); + return ret / mq->elsize; +} + #if HAVE_THREADS static int av_thread_message_queue_send_locked(AVThreadMessageQueue *mq, diff --git a/libavutil/threadmessage.h b/libavutil/threadmessage.h index 8480a0a3db..e41d95ccf7 100644 --- a/libavutil/threadmessage.h +++ b/libavutil/threadmessage.h @@ -95,6 +95,11 @@ void av_thread_message_queue_set_err_recv(AVThreadMessageQueue *mq, void av_thread_message_queue_set_free_func(AVThreadMessageQueue *mq, void (*free_func)(void *msg)); +/** + * Return the current number of messages in the queue. + */ +int av_thread_message_queue_nelem(AVThreadMessageQueue *mq); + /** * Flush the message queue * diff --git a/libavutil/version.h b/libavutil/version.h index 387421775f..23567000a3 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 56 -#define LIBAVUTIL_VERSION_MINOR 15 +#define LIBAVUTIL_VERSION_MINOR 16 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ diff --git a/tests/api/api-threadmessage-test.c b/tests/api/api-threadmessage-test.c index 05a8062b8c..494808f176 100644 --- a/tests/api/api-threadmessage-test.c +++ b/tests/api/api-threadmessage-test.c @@ -130,7 +130,9 @@ static void *receiver_thread(void *arg) for (i = 0; i < rd->workload; i++) { if (rand() % rd->workload < rd->workload / 10) { - av_log(NULL, AV_LOG_INFO, "receiver #%d: flushing the queue\n", rd->id); + av_log(NULL, AV_LOG_INFO, "receiver #%d: flushing the queue, " + "discarding %d message(s)\n", rd->id, + av_thread_message_queue_nelem(rd->queue)); av_thread_message_flush(rd->queue); } else { struct message msg;