From patchwork Thu Jan 4 18:19:04 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 7123 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.78.2 with SMTP id r2csp559066jaa; Thu, 4 Jan 2018 10:19:48 -0800 (PST) X-Google-Smtp-Source: ACJfBotsZzsZT7e2eiVUhWqlfU9p/04jtBpzI4hN1ZRMV5sWUnSuf/kjdW3QdHdyXNq7GZ4u/1lA X-Received: by 10.223.162.138 with SMTP id s10mr389559wra.239.1515089988313; Thu, 04 Jan 2018 10:19:48 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1515089988; cv=none; d=google.com; s=arc-20160816; b=IIhfR7VFCYZ3Fh15RisVckjZlDdNsaMRsbka0FCBwda6ttQBJ7ixeCBfE6DZYaKowt ua5oYzUtpCnrIR9NgHxVVKqb4KATwa+rSjc/e6yro3BvYJLOQLKmwGcsvaFiUT2cobto 7lbPC6Eg5SAM9ydBkxjUQBlQaIePV9t3D5iP1fNEOmKPyP+rpafIiSFjvI0c7csqK3rv gPO482dEcA7U8nYu6eZc6WeDlHdEe7q7pa05SSu3JERUGzno5jgjM28Vmuse6u+3CQ0w PztUiuoBZH6BllKW7Cuw4nDJ3F9GmTPorkNICFMCSx+vaKaMb2PGJHRWaSsmFQgGv8UY MuZA== 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:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=O6A4zgJHjkgUQVzKFXVS8MuknxPfhtJO1f9KEzo0Bao=; b=UK9yZWe1o9FNamFlzBl9iQXLwVQt5lkCHhIkkgcvEn0Mk6y9JZ9pF3LIidaKu5U3mc Xhrgkxi5RkbBjEr4XqaqSQIHBB/Z+z8kfq8VBNvJM8mfu3Qonz6y1Dz2jGDI3A+qINfZ 6NVzS2BAK3IytBW09c+8WBN0TANhWBQbPHTrVVig0uhGlJ3g4bMqbmrE/zLu5GG5UhXZ xv2AYTWy6ncAKfUfrDsrl8hbI/dSFvY8UhT0vYa67i2vfvVaciEqR5TZmtnPW/e4tDP5 HQM+yWS6Yn6h3iXQ8HA8pPsQDRQuhWuqehUpx05Eq53Cjr34sAAIFl2NKA9+WaKTv3HR I1yg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=Fc9kFXxe; 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=NONE 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 u46si1148975wrc.529.2018.01.04.10.19.47; Thu, 04 Jan 2018 10:19:48 -0800 (PST) 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=20161025 header.b=Fc9kFXxe; 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=NONE 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 9466A689971; Thu, 4 Jan 2018 20:19:08 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f193.google.com (mail-qk0-f193.google.com [209.85.220.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E389E689909 for ; Thu, 4 Jan 2018 20:19:02 +0200 (EET) Received: by mail-qk0-f193.google.com with SMTP id w13so3005217qkb.5 for ; Thu, 04 Jan 2018 10:19:19 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=Nzex8BNBwepoYXOYILnEZSh81g/WgVtdvccA+3txcp8=; b=Fc9kFXxexZJvAuKM+WXXpAVojJhva6CtdMyFdi84HANBku/HlFex7TWJodspQs88lk 2afQFHLaTHDMXiFnMf7T/TISRWNHPB8p2X6QAUbYNurMwrPlyvSOXNhLvgEAbO/V7uNf TNP4yVZRsJ483MfaljqER3F0MIDBAwR9UP4tflXPOS2uxYNtHo+lY+C4wwtXmcYncJ+B aIl/WSUI22hMdxvvpJBVdXJtkta/jexjEk3lUQR7AlbrVrNv3N032R81jMIOLAg/EB7U 4DVjzLp95BUKRWkBD+QyY+UKxbJmfRig0Tif8H9Tfm5ZADeMJp3CajaV6OCoScuK/Dmu GrOg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=Nzex8BNBwepoYXOYILnEZSh81g/WgVtdvccA+3txcp8=; b=j3Qi8xqA7tGLqbPtjUqvHtjHWHyrlksxMXL7AV8ckh7tszsadM4y4/5NJME+exeGvY 19fPlYRw1GsJAvbEOrj6WMHdN5HdVV/DyuXAMzdZKu54HKU1EcTC7ducNTw+EOmwD8d+ qDKOWQnpJ4kQSVjclLJ6myaB/ud8ykREbFklhxE4pRd86jaar8qfzgIrmprQsRgXnyUl IjYi9GR1PiuZhzaMz1OWeQm6GX5FhFntyVAjuodVZ0L58JKtqq7okK1cDrTDS03EATMM R04EjjVx0X6u/dahtbFsOOk3FqYmjFvgm6VGUmqeKY3V8x3yTKx4ejmlHP1ZnY/KElIF xaJw== X-Gm-Message-State: AKwxytcJQbHVkEQT3lISA6PL37l/+NZC24LG7purbvDvfJfvxvATstub DRz9B54h0eMBuoOqkUeR3SxiSw== X-Received: by 10.55.109.196 with SMTP id i187mr608265qkc.57.1515089958777; Thu, 04 Jan 2018 10:19:18 -0800 (PST) Received: from localhost.localdomain ([181.229.225.176]) by smtp.gmail.com with ESMTPSA id n81sm2488321qki.87.2018.01.04.10.19.17 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 04 Jan 2018 10:19:18 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Thu, 4 Jan 2018 15:19:04 -0300 Message-Id: <20180104181904.5816-4-jamrial@gmail.com> X-Mailer: git-send-email 2.15.0 In-Reply-To: <20180104181904.5816-1-jamrial@gmail.com> References: <20180104181904.5816-1-jamrial@gmail.com> Subject: [FFmpeg-devel] [PATCH 4/4] avfilter: use a mutex instead of atomics in avfilter_register() 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: James Almer --- With this, the last users of libavutil's atomic wrappers are dealt with. libavfilter/avfilter.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/libavfilter/avfilter.c b/libavfilter/avfilter.c index b98b32bacb..945fc65e5f 100644 --- a/libavfilter/avfilter.c +++ b/libavfilter/avfilter.c @@ -19,7 +19,6 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ -#include "libavutil/atomic.h" #include "libavutil/avassert.h" #include "libavutil/avstring.h" #include "libavutil/buffer.h" @@ -33,6 +32,7 @@ #include "libavutil/pixdesc.h" #include "libavutil/rational.h" #include "libavutil/samplefmt.h" +#include "libavutil/thread.h" #define FF_INTERNAL_FIELDS 1 #include "framequeue.h" @@ -574,7 +574,6 @@ int avfilter_process_command(AVFilterContext *filter, const char *cmd, const cha } static AVFilter *first_filter; -static AVFilter **last_filter = &first_filter; const AVFilter *avfilter_get_by_name(const char *name) { @@ -590,18 +589,24 @@ const AVFilter *avfilter_get_by_name(const char *name) return NULL; } +static AVMutex filter_register_mutex = AV_MUTEX_INITIALIZER; + int avfilter_register(AVFilter *filter) { - AVFilter **f = last_filter; + AVFilter **f; /* the filter must select generic or internal exclusively */ av_assert0((filter->flags & AVFILTER_FLAG_SUPPORT_TIMELINE) != AVFILTER_FLAG_SUPPORT_TIMELINE); - filter->next = NULL; + ff_mutex_lock(&filter_register_mutex); + f = &first_filter; - while(*f || avpriv_atomic_ptr_cas((void * volatile *)f, NULL, filter)) + while (*f) f = &(*f)->next; - last_filter = &filter->next; + *f = filter; + filter->next = NULL; + + ff_mutex_unlock(&filter_register_mutex); return 0; }