From patchwork Mon Jun 17 05:19:26 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 49968 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9196:0:b0:460:55fa:d5ed with SMTP id s22csp1701619vqg; Sun, 16 Jun 2024 22:19:57 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXWRB+Zsd+9I5pJelK+gaEfYJcvQH22rRs4qOmrYCLG9ajGN9vpO0T9NSX9S0BqQgHzjtiGeMJGRXlIwucgycf5KTN1fYGe9X5RXA== X-Google-Smtp-Source: AGHT+IHwY1Zsc9R7SK4KA/tJvBnqrNLxHq+LK1WqlbopoNIA3sS6hIsiFBft/YW4jhfELpsv2VaA X-Received: by 2002:a17:907:d312:b0:a6f:7d7e:ab0c with SMTP id a640c23a62f3a-a6f7d7eabd9mr228422766b.64.1718601596984; Sun, 16 Jun 2024 22:19:56 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1718601596; cv=none; d=google.com; s=arc-20160816; b=NIQ2XxIl8VitXZOLN8yhThlEVTCP77OAX8pF2odgaO+AZAFhl+YIyCk6yJvc2JwR1E wFix5/Z766pf2hf0I50F1ONxVwMB9OvzF6CUTY9YPmLjg70ktEipHWNPNYKyoyh0OQzS iyH3FABYCwuMDNVjyQ3fy8wqwkV2QKcDJUD/TNL60hNcgOAGMurq4xxVVHM/aQwJnpbf NSwu++EgTC3kfsXkxVgNMoQF6oyfqbEV6eh4yBE1RiXoQJg+4TWHwyXByE28Fbaf/UpF ASp2BLfBe0a2bGkmRsHn03lG5ESq2HMxYHT/WCqqcGN2mQjLp+wVbAz03UsV1At53bff ELeA== 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:mime-version:date:to:from:message-id :dkim-signature:delivered-to; bh=JC98hqEN5Pj0r9Pto40F3jZ6q9RCaGA8qa/PxMVH6UY=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=L9vS9vqCyQhHFLqYWi+LSag9t3yPxWg7OKjbWkQ11BP0/qpatlyAQXUUsW/hIFzVao H0zWAtK3pGqmBLp87AYIOLV4SaCViPT7J0i/tSzKR6OD5QbJJgycpFSDK5Rf55pFpl6B gFWfNmrRMH+s/S8kcxmguljYPFEPAZhA5ID5B4pjkuDixmIt26UDV9Dh0/OFDRXvh0Io jYiH1TQtx8IbzDuDMCgYZOlvIt+2dEkZuyA0bkokzo142uh/3h7vDmEv4/h5BLNfEpgo mGjqgCh6K0/H+QedaGY61n7UdwVVD8wc4x+W9+zuSxx8/+dvN/jQpTz+dVKceV4dYNOV ymNw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=Ki1Ok2mk; 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=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a6f56d2148dsi416704566b.59.2024.06.16.22.19.56; Sun, 16 Jun 2024 22:19:56 -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=@foxmail.com header.s=s201512 header.b=Ki1Ok2mk; 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=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3205868D6B6; Mon, 17 Jun 2024 08:19:51 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-60.mail.qq.com (out203-205-251-60.mail.qq.com [203.205.251.60]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2879C68D586 for ; Mon, 17 Jun 2024 08:19:42 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1718601572; bh=GpEjmRMiCdJzX6XknulKmGDpg8rFk1cTTvXrt8bXujc=; h=From:To:Cc:Subject:Date; b=Ki1Ok2mk7dMFMxOe6EdEMjdTI8onyObj0sd/wU7dIXDauq8jshZ2j9Uzj9esvs6rL em3VrJfEoTk4DFK5PBxoHwDFa7fodDbfdmGITFKBgCw/1reJ9BCsiYmhRcNvNMKneJ U3ov26DNfiNnZ/zfrojOF6WeeZDhFZaxCKG2Z98Q= Received: from localhost.localdomain ([113.108.77.64]) by newxmesmtplogicsvrsza29-0.qq.com (NewEsmtp) with SMTP id 4DEABC98; Mon, 17 Jun 2024 13:19:30 +0800 X-QQ-mid: xmsmtpt1718601570tvw02wvxh Message-ID: X-QQ-XMAILINFO: MmCmH9jyqHC2QUDJLzJBUl46icGRIA/RJ3KmYYeS1z3JjmOc1Zv5wjhbweT/jD DZmP/kvt9n5htDuA/GAfaGT3tnY4UmAZPlNAWk8Q1Ay8GBANo0q+LLQz+XaIGsYlKgV2l8g9HQon Vm1C/DuFiZ1C/dBkcvvgh8ptHzIZiIuz0c8p6U4wQe+ejIlDs4ky7Tfcy/eupVNWB+imvYnDpp8O ++fzD8vB2HA6ADuntlqVQ8q1Xj/XOhtbQFuIMvAMRmQaflLOrCGH24pSnVIKVcih/EAUVWEeCTlG U1ri12HLjshv53QHJMIGqyUETHwwLEGuG2mRWt+dza1bv8sqblTlqQh6koCy3bX5pLTY9jj38WDf yjlcmVChUEdybI636EFGMA/JBN8IdyP7tfR3RpWNTYstjwhVFvTi7Q+OgbytBHNXIPYvsOToveei 56ZaTMOVx6n6eD5lVakNGKbksc5crPppesyMLAc/QQIvjHp2vde7yFDP4oNjPB26OP6htnZNY+hl WHOwOgy3zHJA3vi8STyUsOnWztYpi0Bgfql3/6GwdmVhbO/cDXuoSVHwZt6FIvXtkF+hTsQWDg96 jaAzLRcIAtm+y1LrHG5SdJUZXlCzNYwpkC16C2TnjDxR63MX1rkWPYsRuZG/r9tkP+fHtCNyqX70 yGs53sGkJY7dsuy+7+f/sW+KW97ffdWuWWUEjbHSdnHG/AKDb4QxNh+h4Cv1D1HbW63J72UcmY2i RBBZzXgjKjUZMTAPV3p0btNBkE7e3eE5F4k9lnXTAkvsvHkbHSkhQ0PhkLCBgXGb8IxD4jvbctVL fi873kLxqo3PdeihfcA1XEsmrKjbYWaRF5YxSrit4DR7JjoSNtzzihkYTLcQr1asaqcY1oI3o5H/ oLufDrnWickK+TPmieNnvTmj1UJnPEBj9qX8eLGzgaEG5E85m4jrrvVVgclkXNz4beiFKyYysdXu TWZLhPFaZN3SlSt2mGALCruaof5NIROHuRQOjOorA= X-QQ-XMRINFO: MSVp+SPm3vtS1Vd6Y4Mggwc= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Mon, 17 Jun 2024 13:19:26 +0800 X-OQ-MSGID: <20240617051927.249039-1-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avutil/executor: Allowing thread_count be zero 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: yvjsnaJtRnmu From: Zhao Zhili When thread_count be zero, it will be run on current thread like !HAVE_THREADS. --- libavutil/executor.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/libavutil/executor.c b/libavutil/executor.c index 26691fe157..fb20104b58 100644 --- a/libavutil/executor.c +++ b/libavutil/executor.c @@ -82,9 +82,11 @@ static int run_one_task(AVExecutor *e, void *lc) /* nothing */; if (*prev) { AVTask *t = remove_task(prev, *prev); - ff_mutex_unlock(&e->lock); + if (e->thread_count > 0) + ff_mutex_unlock(&e->lock); cb->run(t, lc, cb->user_data); - ff_mutex_lock(&e->lock); + if (e->thread_count > 0) + ff_mutex_lock(&e->lock); return 1; } return 0; @@ -146,14 +148,17 @@ AVExecutor* av_executor_alloc(const AVTaskCallbacks *cb, int thread_count) return NULL; e->cb = *cb; - e->local_contexts = av_calloc(thread_count, e->cb.local_context_size); + e->local_contexts = av_calloc(FFMAX(thread_count, 1), e->cb.local_context_size); if (!e->local_contexts) goto free_executor; - e->threads = av_calloc(thread_count, sizeof(*e->threads)); + e->threads = av_calloc(FFMAX(thread_count, 1), sizeof(*e->threads)); if (!e->threads) goto free_executor; + if (!thread_count) + return e; + has_lock = !ff_mutex_init(&e->lock, NULL); has_cond = !ff_cond_init(&e->cond, NULL); @@ -175,9 +180,12 @@ free_executor: void av_executor_free(AVExecutor **executor) { + int thread_count; + if (!executor || !*executor) return; - executor_free(*executor, 1, 1); + thread_count = (*executor)->thread_count; + executor_free(*executor, thread_count, thread_count); *executor = NULL; } @@ -195,9 +203,9 @@ void av_executor_execute(AVExecutor *e, AVTask *t) ff_cond_signal(&e->cond); ff_mutex_unlock(&e->lock); -#if !HAVE_THREADS - // We are running in a single-threaded environment, so we must handle all tasks ourselves - while (run_one_task(e, e->local_contexts)) - /* nothing */; -#endif + if (!e->thread_count || !HAVE_THREADS) { + // We are running in a single-threaded environment, so we must handle all tasks ourselves + while (run_one_task(e, e->local_contexts)) + /* nothing */; + } } From patchwork Mon Jun 17 05:19:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Zhao Zhili X-Patchwork-Id: 49969 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:9196:0:b0:460:55fa:d5ed with SMTP id s22csp1701665vqg; Sun, 16 Jun 2024 22:20:08 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU93v6KUKxIye39G+bFKdsYtd5yv7Mxb7TEOWkiAU4pnYJp5MsnHlrxNkFZnQpllPqlrCsDFPsisquR88B7M1rniegzUfar3i6zQw== X-Google-Smtp-Source: AGHT+IGAP+J9iR7CHyMv3oPmRiJ6ES8/Q75OH/kOuY/XbPJWnyYCSOdQpn5BlE0SQKqZItIy6iOv X-Received: by 2002:a17:906:398d:b0:a6f:feb:7f1c with SMTP id a640c23a62f3a-a6f60cf404dmr541538066b.1.1718601608026; Sun, 16 Jun 2024 22:20:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1718601608; cv=none; d=google.com; s=arc-20160816; b=tOhqSjvbWGePa/DIn6eTnMJ7YlI4AhcnejTskFJsEsj1PeB/BGHMEgdbJ7325slN0d xEkrysbx3xE90mrRWT9/MOhpdurt7ivGeWP9rDTjdZqsSBJeGz5Q9wn+XJ64JMgt8R5r mHU7IzrDdZEOJX9qJfNn6LMDYFqcGqo97dvhYdJHbi7HnFjU60o76YOns8ijTsM0bbbn sVd9bsqqLVnYNmTBheIMAqdJXUYeYt2DOXWtd1FgHD8vTLZsgrNohKWyUbJJ8WrqUW5X jVgim0ZgrYpJGEdqmj+BjesTFpzQUums+WLyKDJn3vgdLPOn6nP3P84SONIbHeOI895u PgMw== 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:mime-version:references:in-reply-to:date :to:from:message-id:dkim-signature:delivered-to; bh=XM2TyxuOP5IpwBAQFStvdwR9Wc5dbIhhIqwJVwpsMVo=; fh=HnHYuZ9XgUo86ZRXTLWWmQxhslYEI9B9taZ5X1DLFfc=; b=T73CNP/2QnOdIJA159qJKh26goH/9O8415r/97LBujgfmqVeiLD9K4wl1h5WQTDIh6 t95VfjVki8/emXC/Fe0R92B6xOazSMQ99ioNKzKwoSDxNk6OPIgq51djtI+tVyYXvHLY yDq/VOA7L2STeYogesWquKt6GgxZgTXO0piNqKqyV8xxya52Ke+AThAd+iekTReI3c9I NDwhr+xCx6+iSa4x+95nAYwwo8vE+bskm4vn6o9u0xXSzNjs/gPi7y9ox5BzETj2kpnv 4VLpt3Hrc+LLUTq/sVayJlJZfOaAljiU+VQfwJJJDv2fwJgDlpIrOZGrlBuo7UpsoT5X G//A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@foxmail.com header.s=s201512 header.b=zUYJtLkM; 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=foxmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a6f56dd6e07si428177066b.326.2024.06.16.22.20.07; Sun, 16 Jun 2024 22:20:08 -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=@foxmail.com header.s=s201512 header.b=zUYJtLkM; 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=foxmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E95BC68D6DF; Mon, 17 Jun 2024 08:19:53 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from out203-205-251-72.mail.qq.com (out203-205-251-72.mail.qq.com [203.205.251.72]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2B3A168D592 for ; Mon, 17 Jun 2024 08:19:42 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1718601573; bh=6kv7EpX/MqEImpf40itsHPcqgwoZKNCMOnXxV+re7yU=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=zUYJtLkMpcnXgyzE0uSU9vIr0yp+txqDqa3xO/8xhyrpiaJo2RwB6FJSIc0KH6Wtp t2Wh5DYnOsdZMq6hEPPneBXHGgflYUrrf1s3pVw646y5bYGwgTz972bM5n1QZkEXex I1/cuwza+lYIxAGFBaEUza0H22Y98d/MlwCEw0pc= Received: from localhost.localdomain ([113.108.77.64]) by newxmesmtplogicsvrsza29-0.qq.com (NewEsmtp) with SMTP id 4DEABC98; Mon, 17 Jun 2024 13:19:30 +0800 X-QQ-mid: xmsmtpt1718601571tbdonevgx Message-ID: X-QQ-XMAILINFO: MRw/zKT/0BpPLchfCZ29l82VqxalpQGRJYIQYy/Vmitnb6ZHHWfbuuUdR/tuOC B3G7ufEdriUlduNt2Dy76/dyOi7o4K/9ynRevq89QP2Y5KSExHLxXDKddTstbP2oYMChMdlQnf2X fKiOJMadhgIDvK0a0jFvIevb/WL+LnooplF1Zvl1b+Nvg2Vseey1DkasyS/Zqj510RzJPG+sCbXx QP/wWthH4Lv6ln9n3NEJJPMGYspfyLr3jNDG8IhXBBE6+Uj1fbxY7aKZzpZJRX1xnzERvWppwgyG vIc8em/r6cfEBNFqazdx5s/G9BNxdPKBXiMRcyjZe1U9vaJvGUM4t/AMzaPWaRCmIVA5pNHG9K87 24SDlSEz6ScGQ9Cv5+FIR0i8gnHWSujBwCjdstXwy2c+pC8WF85yrJnJYV+98/v2AwdKpW1VEACd 05doWwFh/+I2RkjogbfThn2p9ehCmK2A7eKGv5Ga25ckhmKVP2/TV4FUVo7gxUKrGRHI61ZDeOp5 8mEdEIK6Iz2z6KppNQt7xemoZ2D4IfrHT+gXe6c4LTEDeqeOdCcT47+aOYHbaHZn3B29el4BsvR0 ez9RCHaCtRsZMSWe/oqHScTc+NCfC/T8aGGMwvSxFED8SUK1p9LDVdKGo6hmwE8kGss6XS9nBSo0 bdeODRi9XJrmUd8U3J2mHDoU3Kwd033azwlZLAkOQvfH4VndPG/Teo0sY++ZMcOu1fSf/+UEjmpc 0nQYAtuL8JkWu7IL0IoZETEGw3go1ZGSPFhkCOMbjYQ324rkFIfYpgeNmqhIgQUWaLuC/zkg35SK 1OomMpP+c876v6FkK/Tu+zutd11mgQqHD1Dni880y/x5PeRlC+xG7uQi1lPhDBIyzixYG1UxvQBK 9ModyFc40BEXNWBnuWcCDBXN0HssXpFupS8RmoOhmNhYkBZ6kcmIrI1iUiHPBo6I+/A225/sA/dw YczI42AQRD6149Bb8ekUwsavL5jSIJdYH+3M78aio= X-QQ-XMRINFO: Mp0Kj//9VHAxr69bL5MkOOs= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Mon, 17 Jun 2024 13:19:27 +0800 X-OQ-MSGID: <20240617051927.249039-2-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240617051927.249039-1-quinkblack@foxmail.com> References: <20240617051927.249039-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/vvc: Don't create new thread when thread_count is 1 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: Zhao Zhili Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4azxkYJq9l0q From: Zhao Zhili --- libavcodec/vvc/dec.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c index f5603306f3..4ce2b1c6bd 100644 --- a/libavcodec/vvc/dec.c +++ b/libavcodec/vvc/dec.c @@ -1024,7 +1024,7 @@ static av_cold int vvc_decode_init(AVCodecContext *avctx) static AVOnce init_static_once = AV_ONCE_INIT; const int cpu_count = av_cpu_count(); const int delayed = FFMIN(cpu_count, VVC_MAX_DELAYED_FRAMES); - const int thread_count = avctx->thread_count ? avctx->thread_count : delayed; + int thread_count = avctx->thread_count ? avctx->thread_count : delayed; int ret; s->avctx = avctx; @@ -1051,6 +1051,8 @@ static av_cold int vvc_decode_init(AVCodecContext *avctx) return ret; } + if (thread_count == 1) + thread_count = 0; s->executor = ff_vvc_executor_alloc(s, thread_count); if (!s->executor) return AVERROR(ENOMEM);