From patchwork Wed Apr 28 09:51:23 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Peter Lundblad X-Patchwork-Id: 27456 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a11:4023:0:0:0:0 with SMTP id ky35csp228862pxb; Wed, 28 Apr 2021 02:51:41 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxYvR2QTft2iPol1J9LI2BCieg2Ay/APsHNTwuLoyj4NjymYbUSmCchQNwQFNHKAhVt09Yy X-Received: by 2002:a05:6402:105a:: with SMTP id e26mr9995973edu.164.1619603501209; Wed, 28 Apr 2021 02:51:41 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1619603501; cv=none; d=google.com; s=arc-20160816; b=cQdnE14FKAWljZSzstvpEEPCdVUMND7YqrZP34tROEkueK1UvqJttQcg+NIS7Z7H7R UHJCwmofybA+ogrmXU7HaHga8L7O6jS9HRr9KK55e3vq+UwrUmmd5C+Owbtp6eM0sOPF 4413pNEYrqc520WmdnUV7rezbKER98n2OjddHfTIFhIFLNdcVytz1y74YpH0+yjPCZjl S52GCM2GW2SLie+9leJYCtVwD3YSVFTT3i6WkISSbLPtOugR8Z6uE8pTqDbnAnP4sBip kCky5F7NxCnshPGWx1rBJ2hWq2qyYJ7lJefltVkvuS7PpIL5FIWCtZXjn9c+6B4yjs8U /s+Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:to:from:mime-version:message-id:date :dkim-signature:delivered-to; bh=6n0oXuPr7UzLgQWwekmw/Sli0CU8O7F9E2Gma5pj46s=; b=xickNV7vEH2VQjpBdVh+hjm67xNEgU6vmVqXY1NbrUxnn91IVkr2JmPFbo7EwIigOT 7EghbNT4om8GC8b3HRBAKfDQHbeP2R9EM+XTmPCkbHBp0JdbYh9o1IOD6VhTTKRONUEB 6TK0MEqy4R6ZlVaSMrCc5q6b85uD6I7tXy8zkqZVJCLgfKvKEZO00Ev2zdEVTEPLEldD vWzIbU+w6BidgWPLJ1KYIxGgvJmwytUjZZALfTiEBK/eYbpfN9uC1NGt1EDDJXdcFjWe mHSAuF7bZtWfoTdM5wUix57FmG9Jg3uLMuCecpo6baaXKhkQMN9hQFTQB5uWi48YWi8u 7kug== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20161025 header.b=MTKykArb; 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 ly12si2651911ejb.321.2021.04.28.02.51.40; Wed, 28 Apr 2021 02:51:41 -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=@google.com header.s=20161025 header.b=MTKykArb; 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 37BFF68A1F0; Wed, 28 Apr 2021 12:51:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f201.google.com (mail-lj1-f201.google.com [209.85.208.201]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AAC416807E2 for ; Wed, 28 Apr 2021 12:51:30 +0300 (EEST) Received: by mail-lj1-f201.google.com with SMTP id q17-20020a05651c0551b02900bdd1e782edso16401237ljp.3 for ; Wed, 28 Apr 2021 02:51:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20161025; h=date:message-id:mime-version:subject:from:to:cc; bh=g2MJR6ulLkl9SGoNcB4cVx2XM7Zd9+u0OsTT6C087mw=; b=MTKykArbcTHr4aVTpUdIIZm+k7+oTOAQ0B2isWJDJdz6/1YueyMpFA4n2Zf6EW3PWT 1eppIWAQnJRWNYNMuFGFtxpXec14BEQ+hQUyZI2BGngiGv2XkGZj7n3AYs9nPkeAsQnB VRPl2njhEcY7JJFuglzXaDMpiEL26ozGhA56UsGgfjJQS2/n+nX0pFAC7lZ4B8W4rahB 3sLhNAHhYETfB8eVkrSM+1yWsIHSRINbPTSGUogMxfuDv80nlPIim3+tJVdqn+r91XCZ Gf7T3QswyaQ2rkC2fbT0B86vlkJP3odlgtVHlgRw4HUQGxFbJud0LgPqkn7NJt1NrSuY Ckmw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:date:message-id:mime-version:subject:from:to:cc; bh=g2MJR6ulLkl9SGoNcB4cVx2XM7Zd9+u0OsTT6C087mw=; b=VIVjno44U/JDzwcj/NCoSzgJAN+a/trzFVe1MQKaWzLRyn3nFoWMrTQoWC2cvvesH2 m8UcxnNl3KDGJ7vXFNBtbJ/aKiEabXdblgReCL39xZEbU1S6fO0/Az+K0p/bMzRiUa4A qEUK+LtQxBQZU1UuDpFSJlqaR57gPz38OCL8+gswUJz05lYlS9fCkG4v2omMUW+WvQd/ SlobcMADNW5pbHn/zPVT8o+yn0zg5krHzIHRjLTBVr3G/XBXZQhGkxzn/8inQuSkJlnn iUKa1LPkuOi3NhMmaUpi4D0TLeKHtRqRcSU30i2GWL9eT0GJ4HFJKBVjpM6XoKfIfSHv GbeA== X-Gm-Message-State: AOAM533FlSsyM4n2QbdfnTdPWgnYiITIj9DqYqZzZbz7tUpfcno6+LEk T1htZGn4WXA2FTg+oGqvwZGHXq+EnNKeQ4F823iIAuzIqi7JT83kHugzoXvkMugLTxiFi0Awpbh H1ZGpaE3U4Xr6KwVZDRfTwaiwN7PuFGjLiLz7KMYJlChHdcouKytw7u5SywjI/SFia24q/Rg= X-Received: from plundblad-l.sto.corp.google.com ([2620:0:1043:12:241c:9776:c92f:2419]) (user=plundblad job=sendgmr) by 2002:a2e:2246:: with SMTP id i67mr19229108lji.396.1619603489462; Wed, 28 Apr 2021 02:51:29 -0700 (PDT) Date: Wed, 28 Apr 2021 11:51:23 +0200 Message-Id: <20210428095123.2998580-1-plundblad@google.com> Mime-Version: 1.0 X-Mailer: git-send-email 2.31.1.527.g47e6f16901-goog From: Peter Lundblad To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH] libswscale: Make sws_init_context thread safe. 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 Cc: Peter Lundblad Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: Gr6UjHph8z1I Call ff_sws_rgb2rgb_init via ff_thread_once instead of checking one of the variables it updates. --- libswscale/utils.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libswscale/utils.c b/libswscale/utils.c index 6bac7b658d..d673209d95 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -49,6 +49,7 @@ #include "libavutil/mathematics.h" #include "libavutil/opt.h" #include "libavutil/pixdesc.h" +#include "libavutil/thread.h" #include "libavutil/aarch64/cpu.h" #include "libavutil/ppc/cpu.h" #include "libavutil/x86/asm.h" @@ -1189,12 +1190,13 @@ av_cold int sws_init_context(SwsContext *c, SwsFilter *srcFilter, int ret = 0; enum AVPixelFormat tmpFmt; static const float float_mult = 1.0f / 255.0f; + static AVOnce rgb2rgb_once = AV_ONCE_INIT; cpu_flags = av_get_cpu_flags(); flags = c->flags; emms_c(); - if (!rgb15to16) - ff_sws_rgb2rgb_init(); + if (ff_thread_once(&rgb2rgb_once, ff_sws_rgb2rgb_init) != 0) + return AVERROR_UNKNOWN; unscaled = (srcW == dstW && srcH == dstH);