From patchwork Fri Sep 3 13:36:37 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 29979 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp1302766iov; Fri, 3 Sep 2021 06:37:27 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyGo/d6RvQgUQHh8FK7ofzIJ/BmeX/bGwMYGqiVVJ0mn8Cr2z6R+OHpK+69yPwD3W21eoFP X-Received: by 2002:a17:906:b18e:: with SMTP id w14mr4335021ejy.63.1630676247533; Fri, 03 Sep 2021 06:37:27 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630676247; cv=none; d=google.com; s=arc-20160816; b=rNlu8fGWr91efNpOj2CXUBOBJB9SzTM/T1M0oGyUOF9CJWYmIUnKbTrMRNFBRmm4Ri Am94OoFaDJRYfvs05nVhL5vnWImsFlFjOF7E1ooJxR6FlQT3rE56WCrQRJ35lYoPWgLb /UTDasJ7XaoKalQfwM6qqbExffftAUx/EDcpTaSei8QdR/UOJpd3b+iZQDeDP/+NyXLB 1yOd8zUn6j0z1nizP2AR2IaYgQigDG2MuOrF4mg4kGcstleQhzt1aJqXex+73OmHsU5J R+vQQGIRZo12BQzvVpXlkchdI6tbTfBIosR2bbGeEKsW20xfiCB87vNsoTOZ88xyxn3Z xgxw== 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=1dG63ns8XtPp5Urzxr4AgSrJL4pSnKvarNkA0Ao/i1Y=; b=qzsQPLG7OW/Q7SsQ1K745TZNtG0XnqhwjXOmOoqvF7SWJD0ktL2pqpC54A0o5wJp4L qXF6RtNRdNH8WTB2bB+7scQfgDP31XzGBnEUnka2dUzPWVh4ellQbQFLior8E5hRcEum MPD5Kr4Z46uddARKpAlQQnzux1mT0C1g+AwXWMYEnkvfkCRwkyyIXdcDxKC4vgpMO8kN EJHAl3SFfqEcZv8zmJPMSZqw8BXJ4jn9wX4j/rXKt7ccpFBh81gBBxWcWcfVWKjXYZBv yOE9f7CKkDfNV8SNzEgEgn1qGKFmCZE/3O8Gb4IICorAtu8blcpzjgerQY60wEWRLJg9 VTPg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="kaF/LkOq"; 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 i10si5631769ejd.745.2021.09.03.06.37.12; Fri, 03 Sep 2021 06:37:27 -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="kaF/LkOq"; 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 B27C6680C28; Fri, 3 Sep 2021 16:37:08 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk1-f172.google.com (mail-qk1-f172.google.com [209.85.222.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9A775689AE3 for ; Fri, 3 Sep 2021 16:37:01 +0300 (EEST) Received: by mail-qk1-f172.google.com with SMTP id a66so5772180qkc.1 for ; Fri, 03 Sep 2021 06:37:01 -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=p5/C8J/6VlOiyZ3rqh+54w5QJ0s+ABUmiVQ/TTr0PhI=; b=kaF/LkOqngCg21upSnXcRqIwwbVLrvtKPpOnCFxuaTkN/kFaTZrRNKaJMOx6ORAo7j w7QdUIQqsWRPqifDm9DRcruWfh3UVjiFO4Bd3jVee33MW5Za0gTCW7KLSdqLTGd4LqES ClU8ss2PanX/HamlR1CtfF4U8388IMTlVySRhsaxlLY4wMOQu848bFqJzmwNy9fT1kFD UMVt0in4/JoKVahgxGhgDYj2910SNbByv3TXWuNn11FXhlKlvY39PU09yvtwbjA0Aahk y605W2R8ZsBBVal4DVOleSua6mn4OLEZ28nPaDBoTloHBAnaM87QqER8AuONLF2B/q3x XE1A== 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=p5/C8J/6VlOiyZ3rqh+54w5QJ0s+ABUmiVQ/TTr0PhI=; b=rV76sMTd3c5ZjRvWypfIcfodNpPevdGBkBdbH6k7GhbcpW/HB5HiVuzUmFeyVWrBfI r8HrtDpiJZD/cFVfZtxEFamGuNae1c08d7GgyCtU3eF+OQphQ9DOcM+T51eMvMyVUjw1 vQvZ6tl+SvtZLItL+sVkdeqwzlhu1rHS0vBICIWZn9Fq0Xu3nbNn1+hx6uUl4Zs8bvF5 T8+Hf7ROu+RQB5WJIIrdLCBc1KpsMHuZIb9kujLtewllqoiEEfCbkIwG900uhYDUazRS 4q6DbYXp/+WAYZshAsqWiT0mitx47fMxqzxiZ92Xds4Cp/Y3ANM7KrTA9+/7I6xc348i n4Bg== X-Gm-Message-State: AOAM530dT4b/7B3HgqGpCegBLM99lDOYm6XVO0vzh/gAqTbuWokpsHUr fEKjdnizjTDVG94eRdlsZXoNNtUCebPBnA== X-Received: by 2002:a05:620a:4050:: with SMTP id i16mr3353033qko.90.1630676219160; Fri, 03 Sep 2021 06:36:59 -0700 (PDT) Received: from localhost.localdomain ([181.23.66.70]) by smtp.gmail.com with ESMTPSA id y29sm3319888qtm.4.2021.09.03.06.36.58 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 03 Sep 2021 06:36:58 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Sep 2021 10:36:37 -0300 Message-Id: <20210903133638.812-1-jamrial@gmail.com> X-Mailer: git-send-email 2.33.0 In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avfilter/avfiltergraph: add an "auto" constant to the threads option 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: 2hCzFZyVOTZ+ Signed-off-by: James Almer --- libavfilter/avfiltergraph.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libavfilter/avfiltergraph.c b/libavfilter/avfiltergraph.c index 383d9c5478..727c8b7f5c 100644 --- a/libavfilter/avfiltergraph.c +++ b/libavfilter/avfiltergraph.c @@ -50,8 +50,8 @@ static const AVOption filtergraph_options[] = { { "thread_type", "Allowed thread types", OFFSET(thread_type), AV_OPT_TYPE_FLAGS, { .i64 = AVFILTER_THREAD_SLICE }, 0, INT_MAX, F|V|A, "thread_type" }, { "slice", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AVFILTER_THREAD_SLICE }, .flags = F|V|A, .unit = "thread_type" }, - { "threads", "Maximum number of threads", OFFSET(nb_threads), - AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, F|V|A }, + { "threads", "Maximum number of threads", OFFSET(nb_threads), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, F|V|A, "threads" }, + {"auto", "autodetect a suitable number of threads to use", 0, AV_OPT_TYPE_CONST, {.i64 = 0 }, INT_MIN, INT_MAX, F|V|A, "threads"}, {"scale_sws_opts" , "default scale filter options" , OFFSET(scale_sws_opts) , AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, F|V }, {"aresample_swr_opts" , "default aresample filter options" , OFFSET(aresample_swr_opts) , 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" },