From patchwork Fri Sep 3 13:36:38 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 29980 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1302879iov; Fri, 3 Sep 2021 06:37:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxEiywqLvL9s3AfiekfuO6Cm1xmZHHhXWqHNfnAs20/JrUmBE0Gp7iepNeLx/0uTyOQdIYL X-Received: by 2002:a50:fd86:: with SMTP id o6mr4075964edt.312.1630676253017; Fri, 03 Sep 2021 06:37:33 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630676253; cv=none; d=google.com; s=arc-20160816; b=ePmPLK7qPKeyaeZCEC7Tzda2Xmr6XlkTpH4+b7+7n2sD/sYnkMLzOB4dxnZbnM4xAL itZe6PRWt1kNLMMXo3h8viiahQIIeGdPiDBOF8GhDx8sB7K5eC0e7E//+a3aNSbBGguI fR7Ve2QQPO7g1ZU1vGHaoQe/m2IJiKyEsj02LanN6ugb0xTT5tEGc6OA9zvsouLX/iaY oA8Q7CsFWzUJXFGUDIkNaTreu6/PbdMuZ35HL9ZJ1o45n5RGPOgey5DkWn+f90EPW5ZY YVITpCXHxqDlTQcbcGXGA8McTZcp9/SEJCSnjcH4ZVWTqLd0DaEYV1o+NKgi1s4bJ0+G wTwA== 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=YRjCAP4GBq5mBceB09n0+IjiY+mYMZ163V6/n4akkRU=; b=o3vCzeLMrWtoLQkCIZxEAJ0TNUwDklDow6UL84QM2lksLi22lIhgs8hgb2ckyqwsK8 AY4UPI2YWkotNQjTE3P2rof8jpBsPh7OOn3SGt2MnAMcUAgLP7NVINOfyG6TrXcojQCJ yZEIhM23LbXWsYngy6GvP+YXtSHej2nQ3k8I8A01MO7qnV67gWmyeuGXx25utBpb2Zdb NKI9RXZdsVExyyXMfYU3Lf7aW2VRVpxquuGNzM8Q05Kj0u4GXYutnXVEFZRTGKIljEOg yID4PAo1Eykbp43KgCv9Q9n/8DvDC1tOt3Bh/2lz1Ip+mTjt2CGQwLl5R2nYRYvERcGE cCaQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="J/ThnkSc"; 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=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q16si5490172ejy.322.2021.09.03.06.37.23; Fri, 03 Sep 2021 06:37:33 -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=@gmail.com header.s=20210112 header.b="J/ThnkSc"; 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=QUARANTINE 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 D77EF68A5E1; Fri, 3 Sep 2021 16:37:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f173.google.com (mail-qk1-f173.google.com [209.85.222.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 21FEE68A56C for ; Fri, 3 Sep 2021 16:37:03 +0300 (EEST) Received: by mail-qk1-f173.google.com with SMTP id ay33so5747922qkb.10 for ; Fri, 03 Sep 2021 06:37:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=uMSrWaHv5ayeOfKAMZIzlCwU1wEgIgaumN4goJlsDys=; b=J/ThnkSccPe0VmMommTq4JNlcYHw1orVU6cihZwCjMreyLlKyMKcIc5S/CIZbdkwdv U/HPSWmgGV9LtUTqwqhD8YPnCMEgfE0naFJZNfdlOA0hfo1Gt8DJkUpn/wT095t7ycV9 e9mNC1CgIMi7P2bmj5nPJ0YCB72sFYzoBI2LbvJVtfzDnNaKewlEAfwkc79l6BQkQ7EK ACYIpua+ErWT0IjcbXfVc6IiSsIoBmCY05ugKF2MnmbQgIS9pbNSreKPz6XWmK7SlYyn 2nUMm2JuQORdBgyRdgfw7DihBjmsk6D7yvMYB9A4NjX5cPiBZmJOpdy1Al86uHjuun/F +j6w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=uMSrWaHv5ayeOfKAMZIzlCwU1wEgIgaumN4goJlsDys=; b=sQ4Sm9Jeio1Cdxs2bfy0oPwxB+QUQwsWF8nbBovzPFjarROVjVTbE/TKdJhBm7vZvG 3oe00h/i7O25FElvfSgmWOc0fVefXf3gLrUAYNxeU05mbNWqKOu/MP+HRE6sWv8I0e9O j4k1KS8/pZpO95AwaLu+w03cDblZ+B13dB1WtjXVgenfFTWizAtnW0NNQtwfYU5v4FTi CIjybBWFbskCMV0GXuk2mrAla5/apvC6K0knP/9ApD1Ypy59ryv0Yi7tlHQblt0+Ok+O ki2X5AhzhxY9i2ZxdA6+JLBUZTmH6h7uUNv4VQj54GPEXnJdVKMDCL3Eqj85Q/shhWpa wRhQ== X-Gm-Message-State: AOAM530m6xT7OBu0RipAgR/8aBDbklOR4IkqtA0iRTNnFIeALpMn6VuB 2h0HYxeta6gsCSaMoa5Qo8pSh9dC3eE9nA== X-Received: by 2002:a05:620a:220b:: with SMTP id m11mr3532394qkh.320.1630676220341; Fri, 03 Sep 2021 06:37:00 -0700 (PDT) Received: from localhost.localdomain ([181.23.66.70]) by smtp.gmail.com with ESMTPSA id y29sm3319888qtm.4.2021.09.03.06.36.59 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Sep 2021 06:36:59 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Sep 2021 10:36:38 -0300 Message-Id: <20210903133638.812-2-jamrial@gmail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] ffmpeg: allow to pass "auto" to filter_threads 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: 2paVOq6IF6Ty This way it accepts the same values as the libavcodec specific option "threads" Fixes FATE with THREADS=auto which was broken in bdc1bdf3f5. Signed-off-by: James Almer --- fftools/ffmpeg.c | 1 + fftools/ffmpeg.h | 2 +- fftools/ffmpeg_filter.c | 7 +++++-- fftools/ffmpeg_opt.c | 11 +++++++++-- 4 files changed, 16 insertions(+), 5 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index b0ce7c7c32..eb5a32572a 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -653,6 +653,7 @@ static void ffmpeg_cleanup(int ret) av_err2str(AVERROR(errno))); } av_freep(&vstats_filename); + av_freep(&filter_nbthreads); av_freep(&input_streams); av_freep(&input_files); diff --git a/fftools/ffmpeg.h b/fftools/ffmpeg.h index d2dd7ca092..d583a1e8d0 100644 --- a/fftools/ffmpeg.h +++ b/fftools/ffmpeg.h @@ -633,7 +633,7 @@ extern AVIOContext *progress_avio; extern float max_error_rate; extern char *videotoolbox_pixfmt; -extern int filter_nbthreads; +extern char *filter_nbthreads; extern int filter_complex_nbthreads; extern int vstats_version; extern int auto_conversion_filters; diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index 21d54cc8ae..dc6664260d 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -968,8 +968,11 @@ int configure_filtergraph(FilterGraph *fg) char args[512]; AVDictionaryEntry *e = NULL; - fg->graph->nb_threads = filter_nbthreads; - if (!fg->graph->nb_threads) { + if (filter_nbthreads) { + ret = av_opt_set(fg->graph, "threads", filter_nbthreads, 0); + if (ret < 0) + goto fail; + } else { e = av_dict_get(ost->encoder_opts, "threads", NULL, 0); if (e) av_opt_set(fg->graph, "threads", e->value, 0); diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 428934a3d8..a01939c733 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -169,7 +169,7 @@ int qp_hist = 0; int stdin_interaction = 1; int frame_bits_per_raw_sample = 0; float max_error_rate = 2.0/3; -int filter_nbthreads = 0; +char *filter_nbthreads; int filter_complex_nbthreads = 0; int vstats_version = 2; int auto_conversion_filters = 1; @@ -264,6 +264,13 @@ static AVDictionary *strip_specifiers(AVDictionary *dict) return ret; } +static int opt_filter_threads(void *optctx, const char *opt, const char *arg) +{ + av_free(filter_nbthreads); + filter_nbthreads = av_strdup(arg); + return 0; +} + static int opt_abort_on(void *optctx, const char *opt, const char *arg) { static const AVOption opts[] = { @@ -3620,7 +3627,7 @@ const OptionDef options[] = { "set profile", "profile" }, { "filter", HAS_ARG | OPT_STRING | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(filters) }, "set stream filtergraph", "filter_graph" }, - { "filter_threads", HAS_ARG | OPT_INT, { &filter_nbthreads }, + { "filter_threads", HAS_ARG, { .func_arg = opt_filter_threads }, "number of non-complex filter threads" }, { "filter_script", HAS_ARG | OPT_STRING | OPT_SPEC | OPT_OUTPUT, { .off = OFFSET(filter_scripts) }, "read stream filtergraph description from a file", "filename" },