From patchwork Fri Nov 27 01:02:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24087 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 88D0244BC55 for ; Fri, 27 Nov 2020 03:12:22 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 78C9768BBDD; Fri, 27 Nov 2020 03:07:33 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wr1-f68.google.com (mail-wr1-f68.google.com [209.85.221.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7709C68BA7C for ; Fri, 27 Nov 2020 03:07:20 +0200 (EET) Received: by mail-wr1-f68.google.com with SMTP id k14so3970259wrn.1 for ; Thu, 26 Nov 2020 17:07:20 -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 :mime-version:content-transfer-encoding; bh=mr33XMa4+W1Mp01xz7ps0SfSUA0LpbcjGtLc3M8Bic8=; b=P8NvKwD7hMR2Klq6+t6Q9cn/+KFY3rc2drn9rljYvbA/qcJ0KPMDuf81A7RkzL1keC 9BqBusyz/sEk67MYa5uSb/jZZ2z6nOCrEoOtK/SZGI1FITK49dblowgan2hJtNZJog2U 3QM244KQUg/J/+JPpOVqKpm7zO05mHK7/Fk33IljwpuRnUSUPrXAXpXrw2rko/4XAqZ4 oYQCQcT+pv7WUs8zX0EtgRFkjmy1CNJl3eQYREs2Yo3d+k0ME97s8eHG+YzS4/N1mnTe 13jSM7Pejb+5xYCqvx8D62GrGIyn8RmCu/LmdF3VQvIHCvxzx1rkxi/0ypsfedMlsQ4m 2+oA== 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:mime-version:content-transfer-encoding; bh=mr33XMa4+W1Mp01xz7ps0SfSUA0LpbcjGtLc3M8Bic8=; b=udSxhwbHpUjG+8TLkqC/IxjzK33VwMamhXgNAfvhCmV7a1N7bmdcOBnhDrRqZvBMpr NvAzYLd2G4WcQXrqXCB4cdk1hD51oFQcK0a/dGD6wP6VbjzGqk6nqQRhKn7943kxbRIc DR9whYDxKGOVwtKW0HrNmMXkW4vRYal06UEWTcRWJiiT2z6aX58WFhIlspj9a+2libQh FfzmjEpUULH+IVQI0C5Z7O1TlhsclO8NJKwAhX0oyY7LWNQG2ERypP+qz5ihE7yJSymJ ETRJiAwGSg+Cj4Z7wKls1WYfZObrtGHAFv9//9PMiF0qySo4QfVVxAB6Q7g91vT/mDmj g9yw== X-Gm-Message-State: AOAM533hTI9tGHt026cm3J0j7rXNtZO9Z8nfLyflPqR6r8R7NyMSxHt6 Ts/qGsgyaj1x1lgklOU6uLH/O7uthdXjuA== X-Google-Smtp-Source: ABdhPJxIB8EFPCYJireCJspXEwWBsd5LUq7Gan5TFYPOzlBmHHqgYhpLpxmFTkAeOYLez9pWDF9wxw== X-Received: by 2002:adf:b193:: with SMTP id q19mr6972189wra.426.1606439239814; Thu, 26 Nov 2020 17:07:19 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id l8sm10504450wro.46.2020.11.26.17.07.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 26 Nov 2020 17:07:19 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 27 Nov 2020 02:02:43 +0100 Message-Id: <20201127010249.2724610-39-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201127010249.2724610-1-andreas.rheinhardt@gmail.com> References: <20201127010249.2724610-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 39/45] avcodec/smvjpegdec: Make decoder init-threadsafe 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The only thing that stands in the way of adding the FF_CODEC_CAP_INIT_THREADSAFE flag to the SMV JPEG decoder is its usage of ff_codec_open2_recursive(): This function requires its caller to hold the lock for the mutex that guards initialization of AVCodecContexts whose codecs have a non-threadsafe init function and only callers whose codec does not have the FF_CODEC_CAP_INIT_THREADSAFE flag set hold said lock (the others don't need to care about said lock). But one can set the flag if one switches to avcodec_open2() at the same time. Signed-off-by: Andreas Rheinhardt --- libavcodec/smvjpegdec.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavcodec/smvjpegdec.c b/libavcodec/smvjpegdec.c index 807d990d00..670e3313c9 100644 --- a/libavcodec/smvjpegdec.c +++ b/libavcodec/smvjpegdec.c @@ -124,7 +124,7 @@ static av_cold int smvjpeg_decode_init(AVCodecContext *avctx) s->avctx->refcounted_frames = 1; s->avctx->flags = avctx->flags; s->avctx->idct_algo = avctx->idct_algo; - if ((ret = ff_codec_open2_recursive(s->avctx, codec, &thread_opt)) < 0) + if ((ret = avcodec_open2(s->avctx, codec, &thread_opt)) < 0) av_log(avctx, AV_LOG_ERROR, "MJPEG codec failed to open\n"); av_dict_free(&thread_opt); @@ -211,5 +211,5 @@ AVCodec ff_smvjpeg_decoder = { .close = smvjpeg_decode_end, .decode = smvjpeg_decode_frame, .priv_class = &smvjpegdec_class, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, };