From patchwork Mon Mar 6 19:47:37 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Muhammad Faiz X-Patchwork-Id: 2771 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.50.79 with SMTP id y76csp239020vsy; Mon, 6 Mar 2017 11:55:31 -0800 (PST) X-Received: by 10.28.21.15 with SMTP id 15mr15032698wmv.11.1488830130940; Mon, 06 Mar 2017 11:55:30 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id u62si3220063wrc.224.2017.03.06.11.55.30; Mon, 06 Mar 2017 11:55:30 -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; 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 6A14A680A98; Mon, 6 Mar 2017 21:55:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg0-f67.google.com (mail-pg0-f67.google.com [74.125.83.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A40AE6806C6 for ; Mon, 6 Mar 2017 21:55:08 +0200 (EET) Received: by mail-pg0-f67.google.com with SMTP id 77so7894018pgc.0 for ; Mon, 06 Mar 2017 11:55:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=1Vym92IzJsBvNCbojL+Y/LhjX7a8Zs4My1ukNH0RB/Q=; b=Fej8J6cOzG77neTg939fextJwrQE+nHEQqNRLBRMtOqXWjolnMmZKjdOINuDyENxEL fikXU6dupBwmpWPniNIePjuUHffKjxaa1t66yhLu38JMigzRwkIBN7Hig/Ab+4QMnIXz Vitys3Fo1cTwLbv5GajwJHLYrSMnujw3lQhm+1cimifxx51rmO9TgtKOk+d30HIds3Tr 6y6DMerWW6M+G5y2YVSwNci4cX86nzUN6Wqc6pVhFEmaWSv4Hm9QTBGnaTTeNGF8cZot EqXF3MfQ0Hp0gX50SoJi5nEEu0II6ZV6IXljnEIF01O2NrnVwOH2sJHrW2xKM+dVDSvA qo3g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=1Vym92IzJsBvNCbojL+Y/LhjX7a8Zs4My1ukNH0RB/Q=; b=FN3dIhn6ky/aCJd724Luch2s9fUZCxY2PQ2RQG3/UgjBJIShPz1T/fCWa/PZej3pnj qV1uYSDW6tjfX4pvqGC63GyiHnGpt9FZEw7fpVVajaR3RgJoO8tVAFtTM+Qv2cwAJGMV m9bXRejmuHy8RikM5QY12BdcSjSUks6N7KExuCq45mGVTBceDwsNM9hZaMqsknmAV7g8 6Fx88twGiXqErwPYVOEJqVlwsOc/Iu19dH2cxhMYoRoPEujiCLEA70ocFXSZSUhsXUl4 Z1OozK4Vl2x7vrAJMcwzhTnrgGdtzZDi7aZuK+t/n+ypPphptBBX0e7yeV9R4edmZYAq TtwQ== X-Gm-Message-State: AMke39n9Z/nJGDUU8PLt64eZiUgGNpBV2Zbn5tb3lb33WOgOjGN+NUY77A2Ro6vOVKx3RA== X-Received: by 10.99.117.85 with SMTP id f21mr22538987pgn.62.1488829686677; Mon, 06 Mar 2017 11:48:06 -0800 (PST) Received: from localhost.localdomain ([114.120.237.152]) by smtp.gmail.com with ESMTPSA id p4sm41362446pgd.50.2017.03.06.11.48.05 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Mon, 06 Mar 2017 11:48:06 -0800 (PST) From: Muhammad Faiz To: ffmpeg-devel@ffmpeg.org Date: Tue, 7 Mar 2017 02:47:37 +0700 Message-Id: <20170306194739.1870-2-mfcc64@gmail.com> X-Mailer: git-send-email 2.9.3 In-Reply-To: <20170306194739.1870-1-mfcc64@gmail.com> References: <20170306194739.1870-1-mfcc64@gmail.com> Subject: [FFmpeg-devel] [PATCH 2/4] avformat/allformats: make av_register_all thread safe 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: Muhammad Faiz MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Muhammad Faiz --- libavformat/allformats.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/libavformat/allformats.c b/libavformat/allformats.c index 35869e3..e91a59b 100644 --- a/libavformat/allformats.c +++ b/libavformat/allformats.c @@ -19,6 +19,8 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include + #include "avformat.h" #include "rtp.h" #include "rdt.h" @@ -43,10 +45,14 @@ void av_register_all(void) { - static int initialized; + static atomic_int initialized; + static atomic_int ready; - if (initialized) + if (atomic_exchange_explicit(&initialized, 1, memory_order_relaxed)) { + while (!atomic_load_explicit(&ready, memory_order_relaxed)) + ; return; + } avcodec_register_all(); @@ -384,5 +390,5 @@ void av_register_all(void) REGISTER_MUXDEMUX(LIBNUT, libnut); REGISTER_DEMUXER (LIBOPENMPT, libopenmpt); - initialized = 1; + atomic_store_explicit(&ready, 1, memory_order_relaxed); }