From patchwork Tue Sep 20 17:50:20 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: rcombs X-Patchwork-Id: 38113 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp2106405pzh; Tue, 20 Sep 2022 10:51:39 -0700 (PDT) X-Google-Smtp-Source: AMsMyM5kec9Q/oHKGZDuCE2tVqj4I0nmYJKLXX7tVmo0QuprXBv5g1gqKNyWSvp3OxKbrw9+S86r X-Received: by 2002:a17:907:6d8c:b0:781:e30f:3218 with SMTP id sb12-20020a1709076d8c00b00781e30f3218mr1857396ejc.430.1663696299056; Tue, 20 Sep 2022 10:51:39 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663696299; cv=none; d=google.com; s=arc-20160816; b=BKmkLG1kUS0EIpds0Vkd/84Ev+sfOyC4oJLX7CkU1tW5d660+gTq0SC3/G7kk8dbkF PWV9etA7sMAQoCoJ+e2DY8KpCQIePsoBcenXzkvWITbY1nVmFDfXY+7nLGdV2rolDRdV NqrZpqQ7Oja6AtTkbRBnG9YgOJ06b8j6schlvZThc2EQa7DQ5iH9M4nr0ZxjRTsS3KhL j3Yf3HcHA4QHVXRIAk8nI4Xw68Vk+Yj0HOeXzMcDOPgZeSkVw5o1WvcTcnyXOAN9hiYq 490qzF+YExtja6PUFoj9VYzEWNtYdwKWmv1gX9mv+mq6NvnBQyGNjbM9OQ6i0VPjMNHr 6EdQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=EI1oxauv0Z8c+7EoUkcEZt+FGLj8TivZTOLjwgXTM38=; b=t5coOuTqmdVvX72NxR22xl5ApZ1l0eh/knbQtOTJ9JnvCiSB8A1XG9l60S2oMpQyCo pCSbZdYAOznFlm10hupp9r4HL2ex3ilAxZPpo1fFLeWZiHw4lqhxE5cZQJg4C/RHXe0j B5MFpzrJyKywrq4RiS3WGFbXJ1u2WdvOGZ0kFxAmh3rMP7Bg/Qo4HLyqoSqtCc5q1os4 pOqmgQNuexlr2fi7pC1gQvtmhGUsSTXPCobPkESAoPZs9vjrISBfvzMHsgCRDqhxMqUF AeIF2/u6CfR4yaXWlEptjzRuD5ZMkiW1KCdhwQtEqtyNaHH3XGTplRSHKkiOIcBLir5M nvWw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@rcombs.me header.s=google header.b=rr6aInX3; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=rcombs.me Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id us5-20020a170906bfc500b0077082e784easi221116ejb.957.2022.09.20.10.51.38; Tue, 20 Sep 2022 10:51:39 -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=@rcombs.me header.s=google header.b=rr6aInX3; 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=QUARANTINE sp=QUARANTINE dis=NONE) header.from=rcombs.me Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 92D7668BB5E; Tue, 20 Sep 2022 20:50:50 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qv1-f41.google.com (mail-qv1-f41.google.com [209.85.219.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3E04368BA91 for ; Tue, 20 Sep 2022 20:50:42 +0300 (EEST) Received: by mail-qv1-f41.google.com with SMTP id v15so2551329qvi.11 for ; Tue, 20 Sep 2022 10:50:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rcombs.me; s=google; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:from:to:cc:subject:date; bh=FufZBOVAi/VB17UDWwlu2qz7Gpj9pHAfVHz40WDI2k8=; b=rr6aInX3tH0SdaVD99UkGcvJMEfInfdpshcsgMntb6auiSTsJZWLB7uuowPrOq+tl8 uUyRYwYER1intpkRpjeGlK9bKWtczVlRqf1Nb8OdzqbdQZm48XBdMt0BG4yuluqHzlyu ZRgjZvrRdlsSGSfjRXm4ZvzQp7st5sQfqEI/PjDXRbiiR4NG4P4Uz1juFF3dyspksZKv Sp/xHMMgkzYl0qOevtf88cqcsUZrohhy6wQfT4OcRe7HP21wKORQkWGfO/D6zj15+Gqt Eqxzc9hPEvFX0NGDh2/Vi0UInUNt0HvVnq2KoHLaKiyQ3hQsS43RrBVLWZKlzKJog8/s UpNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:to:from:x-gm-message-state:from:to:cc :subject:date; bh=FufZBOVAi/VB17UDWwlu2qz7Gpj9pHAfVHz40WDI2k8=; b=XE2hZ0Y7gm7YFwnYXPU8FgYal4xfmh3YW9RcSknitqJvXRuczRebo3gUdyl0aypIYh ZjafebIQRKTQZcNvd+/rOdHnxNrx7zuVfuypFLr1F9aZypH9y82LLcYdFACz+mDmAhvb g+bb/RSjA8mRk1TErdAZnQiYzaPuQyW2n+aSms9m1Ownw9gxhX94Zf/v/9ttzlSUTsdF /+5SssZeDEJFuA+QkTATjKLmIo6AbAvEch6MtTprV1rREmcCSqEj+njUWF0kp0CgLoP+ A/vG0t793EfBKagoTJYe+X7UZxI4vw2T1AIfijZ5vOeVQjtdFHkTtz+MX7ap4JuzWQjg a6jg== X-Gm-Message-State: ACrzQf2y/MQ/aPzqOLSTIlO4gtEJT0qW5OXQ/wNmQlN643jXJuoINQ5V lEnjnR2C4ncCDq66U3aW5Bnmk3IAxMIJ X-Received: by 2002:a05:6214:2342:b0:473:e142:f758 with SMTP id hu2-20020a056214234200b00473e142f758mr20479104qvb.83.1663696240643; Tue, 20 Sep 2022 10:50:40 -0700 (PDT) Received: from rcombs-mbp.localdomain ([2601:243:2000:5ac:50a3:2f65:4798:4cad]) by smtp.gmail.com with ESMTPSA id o1-20020a05622a008100b003431446588fsm189017qtw.5.2022.09.20.10.50.39 for (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Tue, 20 Sep 2022 10:50:39 -0700 (PDT) From: rcombs To: ffmpeg-devel@ffmpeg.org Date: Tue, 20 Sep 2022 12:50:20 -0500 Message-Id: <20220920175021.60790-7-rcombs@rcombs.me> X-Mailer: git-send-email 2.37.2 In-Reply-To: <20220920175021.60790-1-rcombs@rcombs.me> References: <20220920175021.60790-1-rcombs@rcombs.me> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 6/7] lavfi/vf_unsharp: use ff_filter_get_nb_jobs 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: brR04lsURAMB Improves performance by roughly 15% on M1 Max --- libavfilter/unsharp.h | 2 +- libavfilter/vf_unsharp.c | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/libavfilter/unsharp.h b/libavfilter/unsharp.h index 0da6f05036..7af32b0467 100644 --- a/libavfilter/unsharp.h +++ b/libavfilter/unsharp.h @@ -54,7 +54,7 @@ typedef struct UnsharpContext { int nb_planes; int bitdepth; int bps; - int nb_threads; + int nb_jobs; int (* apply_unsharp)(AVFilterContext *ctx, AVFrame *in, AVFrame *out); int (* unsharp_slice)(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs); } UnsharpContext; diff --git a/libavfilter/vf_unsharp.c b/libavfilter/vf_unsharp.c index e88e732c9e..9632058daf 100644 --- a/libavfilter/vf_unsharp.c +++ b/libavfilter/vf_unsharp.c @@ -166,7 +166,7 @@ static int apply_unsharp_c(AVFilterContext *ctx, AVFrame *in, AVFrame *out) td.dst_stride = out->linesize[i]; td.src_stride = in->linesize[i]; ff_filter_execute(ctx, s->unsharp_slice, &td, NULL, - FFMIN(plane_h[i], s->nb_threads)); + FFMIN(plane_h[i], s->nb_jobs)); } return 0; } @@ -229,12 +229,12 @@ static int init_filter_param(AVFilterContext *ctx, UnsharpFilterParam *fp, const av_log(ctx, AV_LOG_VERBOSE, "effect:%s type:%s msize_x:%d msize_y:%d amount:%0.2f\n", effect, effect_type, fp->msize_x, fp->msize_y, fp->amount / 65535.0); - fp->sr = av_malloc_array((MAX_MATRIX_SIZE - 1) * s->nb_threads, sizeof(uint32_t)); - fp->sc = av_calloc(fp->steps_y * s->nb_threads, 2 * sizeof(*fp->sc)); + fp->sr = av_malloc_array((MAX_MATRIX_SIZE - 1) * s->nb_jobs, sizeof(uint32_t)); + fp->sc = av_calloc(fp->steps_y * s->nb_jobs, 2 * sizeof(*fp->sc)); if (!fp->sr || !fp->sc) return AVERROR(ENOMEM); - for (z = 0; z < 2 * fp->steps_y * s->nb_threads; z++) + for (z = 0; z < 2 * fp->steps_y * s->nb_jobs; z++) if (!(fp->sc[z] = av_malloc_array(width + 2 * fp->steps_x, sizeof(*(fp->sc[z]))))) return AVERROR(ENOMEM); @@ -255,9 +255,9 @@ static int config_input(AVFilterLink *inlink) s->bps = s->bitdepth > 8 ? 2 : 1; s->unsharp_slice = s->bitdepth > 8 ? unsharp_slice_16 : unsharp_slice_8; - // ensure (height / nb_threads) > 4 * steps_y, + // ensure (height / nb_jobs) > 4 * steps_y, // so that we don't have too much overlap between two threads - s->nb_threads = FFMIN(ff_filter_get_nb_threads(inlink->dst), + s->nb_jobs = FFMIN(ff_filter_get_nb_jobs(inlink->dst), inlink->h / (4 * s->luma.steps_y)); ret = init_filter_param(inlink->dst, &s->luma, "luma", inlink->w); @@ -270,12 +270,12 @@ static int config_input(AVFilterLink *inlink) return 0; } -static void free_filter_param(UnsharpFilterParam *fp, int nb_threads) +static void free_filter_param(UnsharpFilterParam *fp, int nb_jobs) { int z; if (fp->sc) { - for (z = 0; z < 2 * fp->steps_y * nb_threads; z++) + for (z = 0; z < 2 * fp->steps_y * nb_jobs; z++) av_freep(&fp->sc[z]); av_freep(&fp->sc); } @@ -286,8 +286,8 @@ static av_cold void uninit(AVFilterContext *ctx) { UnsharpContext *s = ctx->priv; - free_filter_param(&s->luma, s->nb_threads); - free_filter_param(&s->chroma, s->nb_threads); + free_filter_param(&s->luma, s->nb_jobs); + free_filter_param(&s->chroma, s->nb_jobs); } static int filter_frame(AVFilterLink *link, AVFrame *in)