From patchwork Sat Nov 6 14:54:40 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lance Wang X-Patchwork-Id: 31308 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a5e:dc01:0:0:0:0:0 with SMTP id b1csp1505031iok; Sat, 6 Nov 2021 07:54:58 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyr4iLwRpS2/Z7vkBBADyr07cgjPpLMY5HOPs1RziNSQ5qPRFCbubXD8wQ/ZHxz0ECWSFjS X-Received: by 2002:a05:6402:10c5:: with SMTP id p5mr88345758edu.150.1636210497942; Sat, 06 Nov 2021 07:54:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1636210497; cv=none; d=google.com; s=arc-20160816; b=tPk5SqdciIFPFYH4AIvy2hncOlyIJc0PowsTF6KYoyBiBFpc8MjQbFdSXwYeYdtJIx Gkd25BurI+wGHvWm8NLfRElN7Kwb5x7m9eFHrVAxEER28NaL0bSk7FmVaKrJyRMPb6QR uto2Eoj4HNa2f9sCRZTfCynW2ko56oB/PN0tc8B8+efI9Jyti1PMqNElYeXXvTt88KeR 0HhX56tKLoMgCmOmcoCpON6v8HteTwydmxhHmowAbNMaHyXRPFqZ6a+ESY3kAQpKP4tk +MTZsF3maFUTTsO9Zox/sffU49YjJVKrbw6JNwVDOwAuO7tRg4gacAitCMMeIYH+QA1T sv/w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=b4H1egRzLRooh6u4J3C91lwWl/CV6Hw4PH4aXn0/2bg=; b=oDiZ6a8RyECRjhNFatMLnEpLfyNy1f0b50Syu6kFLt/Uq0qtY4acVQp6/Sit8pisEA 8YoN04iyuXU/vsigYBhVvctZV6KXF6YFVf8vREXzX6DpAj3CI9pMzEJPIZbt8RLyVMEe noi/DRUNWG/UCelce7ecSC44XhOp2VKo4dRjSGD0eLkxYddoRpc+ednyr0IvzMPO+GkB BIqy73mIQAswvLxvwLsThrlhnZ1lTgqQUqFHwvku61i/P+bcZD821CPGnnCxmWQPYP0a YZziXX6CQixnnLMh1QJQjOzzbjzSkY3xYZ2adyAdtLZK//hMUsnQD6/3Y98NwcU1zlhU 1D6Q== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=IO752Wy8; 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 x9si25876205edd.240.2021.11.06.07.54.56; Sat, 06 Nov 2021 07:54:57 -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=IO752Wy8; 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 CF6E5680500; Sat, 6 Nov 2021 16:54:52 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pf1-f171.google.com (mail-pf1-f171.google.com [209.85.210.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 71F43680500 for ; Sat, 6 Nov 2021 16:54:46 +0200 (EET) Received: by mail-pf1-f171.google.com with SMTP id g19so5665805pfb.8 for ; Sat, 06 Nov 2021 07:54:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5ZCaBTIM6LurnpF20azZ3bsehubsg8zmuuW5+T0U45E=; b=IO752Wy82LR+15QnE68sx8UA1qcWNQ7t8GPmKLC3JbRoS6NhJrrkNLiHJ+4HEVuNxK q19pIPvy4MBDcNU+A9lqYmHkyeCaAvL1l780bS3Rz3B7qNd9LXenOUJI9K5mbIbsrrf0 +lqTS0kpsMJuHEbM3De3aCYXbuO5iZLMwKdEB5GiBnnqWq+rcQ1FkDunmipRAUxmHM5U qeol86tXNAsX7WzKSbVeF9KMvtiEJS4xJNdsXFKG93aJ8AVuBVIWuckg7/IlkFnZmsst zcQfo2Bv1k4rP23nF4Q/1jV4TY+x97Qi7KRPNjDtydLkfYRjnhv55fCB2FuUs76RNV++ 0p4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=5ZCaBTIM6LurnpF20azZ3bsehubsg8zmuuW5+T0U45E=; b=ArBfCgJ+2EqPd+PmQKVh1N0yYdjT5cWYpRE/32QNEx3QvQskExk1gKZPBqga8Ndjdi 1wlEXPDN+ugM3Q6fXnKRQ8HN+uHVf8PqadrFpSwig8STwtoSkQXj9RBFGdISZpaHCfxi FGVwZn0KUYKLVor9/Mu7G0nmFcD1TUg3upOX+yhUrcNNm+eLMUQu1tkxqBIaeBGZe19I MGeb0Ukysn7Dt5JvB6reqINPKxLgSHYSh4h3E2btQolGwAjqdsciRdDj+kRuPP99TSD5 8E2wfb5yq+XJS3EfJVxZg5UlYlVvLM8qGJjPQk0BQvE3RwBm2Cal/j82rZbWZYy3QGJw 3pWg== X-Gm-Message-State: AOAM531wZwgvbX3oydr8ZdRrJ/qNUuyB3t/0C84O2VtjbG5Nw8U4fv4i KufOen+yXDLGjNX+F7W/u7mCbkM0lYc= X-Received: by 2002:a05:6a00:248c:b0:49f:abac:a266 with SMTP id c12-20020a056a00248c00b0049fabaca266mr4632804pfv.42.1636210484350; Sat, 06 Nov 2021 07:54:44 -0700 (PDT) Received: from vpn2.localdomain ([161.117.202.209]) by smtp.gmail.com with ESMTPSA id v14sm10399308pff.199.2021.11.06.07.54.43 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sat, 06 Nov 2021 07:54:44 -0700 (PDT) From: lance.lmwang@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Sat, 6 Nov 2021 22:54:40 +0800 Message-Id: <1636210480-3765-1-git-send-email-lance.lmwang@gmail.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1636115536-13580-2-git-send-email-lance.lmwang@gmail.com> References: <1636115536-13580-2-git-send-email-lance.lmwang@gmail.com> Subject: [FFmpeg-devel] [PATCH v4] avfilter/src_movie: make the number of decode thread configurable 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: Limin Wang MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 17DFKvwjLyoG From: Limin Wang Signed-off-by: Limin Wang --- doc/filters.texi | 3 +++ libavfilter/src_movie.c | 10 +++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/doc/filters.texi b/doc/filters.texi index b537e42..c9ef854 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -28344,6 +28344,9 @@ changed, so it will generate non monotonically increasing timestamps. Specifies the time difference between frames above which the point is considered a timestamp discontinuity which is removed by adjusting the later timestamps. + +@item dec_threads +Specifies the number of threads for decoding @end table It allows overlaying a second video on top of the main input of diff --git a/libavfilter/src_movie.c b/libavfilter/src_movie.c index 573f363..5a4e77b 100644 --- a/libavfilter/src_movie.c +++ b/libavfilter/src_movie.c @@ -67,6 +67,7 @@ typedef struct MovieContext { int loop_count; int64_t discontinuity_threshold; int64_t ts_offset; + int dec_threads; AVFormatContext *format_ctx; @@ -90,6 +91,7 @@ static const AVOption movie_options[]= { { "s", "set streams", OFFSET(stream_specs), AV_OPT_TYPE_STRING, {.str = 0}, 0, 0, FLAGS }, { "loop", "set loop count", OFFSET(loop_count), AV_OPT_TYPE_INT, {.i64 = 1}, 0, INT_MAX, FLAGS }, { "discontinuity", "set discontinuity threshold", OFFSET(discontinuity_threshold), AV_OPT_TYPE_DURATION, {.i64 = 0}, 0, INT64_MAX, FLAGS }, + { "dec_threads", "set the number of threads for decoding", OFFSET(dec_threads), AV_OPT_TYPE_INT, {.i64 = 0}, 0, INT_MAX, FLAGS }, { NULL }, }; @@ -150,7 +152,7 @@ static AVStream *find_stream(void *log, AVFormatContext *avf, const char *spec) return found; } -static int open_stream(AVFilterContext *ctx, MovieStream *st) +static int open_stream(AVFilterContext *ctx, MovieStream *st, int dec_threads) { const AVCodec *codec; int ret; @@ -169,7 +171,9 @@ static int open_stream(AVFilterContext *ctx, MovieStream *st) if (ret < 0) return ret; - st->codec_ctx->thread_count = ff_filter_get_nb_threads(ctx); + if (!dec_threads) + dec_threads = ff_filter_get_nb_threads(ctx); + st->codec_ctx->thread_count = dec_threads; if ((ret = avcodec_open2(st->codec_ctx, codec, NULL)) < 0) { av_log(ctx, AV_LOG_ERROR, "Failed to open codec\n"); @@ -314,7 +318,7 @@ static av_cold int movie_common_init(AVFilterContext *ctx) if (ret < 0) return ret; } - ret = open_stream(ctx, &movie->st[i]); + ret = open_stream(ctx, &movie->st[i], movie->dec_threads); if (ret < 0) return ret; }