From patchwork Mon Sep 30 23:02:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Koushik Dutta X-Patchwork-Id: 51947 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:a303:0:b0:48e:c0f8:d0de with SMTP id v3csp37648vqm; Mon, 30 Sep 2024 16:03:14 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW8Noz3zkrm48hy8tmcBDVTUsDSeveqIpOJyVLIbxy6JedJNZZKg6s7zptekXypGeEfVS6laT2A5Z7e9To87DlK@gmail.com X-Google-Smtp-Source: AGHT+IENb7ut1oX1wH6D5SquSAUfEf90paRxMbm0rLKWyWUr5Czdt+PKd82WcnmPNbIJbX2WUhnC X-Received: by 2002:a17:907:320e:b0:a7a:a138:dbc1 with SMTP id a640c23a62f3a-a93c491d0d4mr1662125166b.20.1727737393699; Mon, 30 Sep 2024 16:03:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1727737393; cv=none; d=google.com; s=arc-20240605; b=kCDZanBimKmD7QCmiquhogff+zrTyNOFl7ECb5T8fwHaUDjrbY8P3KoSSs1Gmz7m6f BdkVHFNAlQhpLNO2YspWpL8iDxhK9oKmM8I2JodfS8feuHR7l4RnnfDH5hhuoGwCb6TV TCsSteNavE4U8o/26qQ5lXjPjKTHCCrOmJIdkTu7gv/YULTUYJOb7e9qTUn9kgPILz29 rdX5adcAZrGs2qOmDGmaF04jfjLEFp29+HZPiN7sRm/a14BBbhW0SedJBfN645PvvWbQ BpPLlElEEVUFVKL/UAvxhMfyVzObWfhwU039o6oHAQLDYGt9x5ItlSyLsiD4UFl5ANGN Z3QQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; 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:message-id:date:to:from :dkim-signature:delivered-to; bh=8HY8q0q4og6dNl5O3f2dVfv2f4gPUp4n/u0QKxsNjoc=; fh=vf1rgm8KpEMxcRKiIfYPC5TR7MMWdHSIxg51vjgwMpE=; b=FeFu5fK1Ew/C1Q8BFOzZ4bgwg2UHqEYOIDI8lnXLT36zYF3Je4Qr0LYLCbC/JluWaP g7PulWbU4JTWzrpT8ikFRdsR/v3mkyPiRxGnBYQB0Ff5tt+ahsUvY71UEHglwkmXTJ/0 XpWa4oKqrpHGb6DYWBLk2HAkpbDAsLsAyo4aNhCZy5cyeok96kV6pKExR8wGp04YNTRI iTW8GCKCm9lukMA3l3edEBDXKu1AZSRpDznBLRBbe/vpAd41GFQ0rUWu+ZtKTaC5S++C uddRQyvQyJVUllU0rco2CtDDcu19Ervnl46rznbnad8t8T43F6sFSeSvOZdHU7/tpC3g 5Bpw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=elOKNYuE; 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; dara=fail header.i=@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 a640c23a62f3a-a93c29ee0bdsi625858966b.605.2024.09.30.16.03.12; Mon, 30 Sep 2024 16:03:13 -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=20230601 header.b=elOKNYuE; 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; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3329368D6E3; Tue, 1 Oct 2024 02:03:10 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pl1-f172.google.com (mail-pl1-f172.google.com [209.85.214.172]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8682468D6E3 for ; Tue, 1 Oct 2024 02:03:03 +0300 (EEST) Received: by mail-pl1-f172.google.com with SMTP id d9443c01a7336-20b90ab6c19so13649415ad.0 for ; Mon, 30 Sep 2024 16:03:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1727737381; x=1728342181; darn=ffmpeg.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=UHjgDdDAcH9VxuJEQz5QtSemL6r/k8dL33bfgMCj44o=; b=elOKNYuED7htYq/8D63ZnLoM99gK3ipSm7FVrD0F5COZBW39LC5YpALnGkgDlvRApX hmC/WKxldn9v8sPXTHVlLxPZYnI82p+B/wsv8YhffIbwj+bG17uhLweFGmwRY4Zl/4UG DSg3sLspyU4mNudVo1y9w70u098sUEEC16Fcf6XhT6U5jFU/rnXCbzFxb5w4wr1OrG6m fiNhewyiKpP1ivjkU2DLq+CffPvzeONDlmxxBSc0VefYrC9h2EiyWo1emabDnQ79FQA8 6GlpEkYAvDA0MmB7aF4zJhucgbMVS5JZBaOgLfj4bf1qfyc7P9z1ajRY8KfOp3izEKCM b2GA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727737381; x=1728342181; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=UHjgDdDAcH9VxuJEQz5QtSemL6r/k8dL33bfgMCj44o=; b=raJh1r0nmTLCNkMKGstbzTCNShfD6w5raNv9rDf0LgSUiktMturr7sEFyJHgvGfd84 kcSoGyT9YhPaezFwKCfp+V+bnuui3N0Mlq7dkgyuExhGYLnFLVtmDLaIqxJBJZsixFLq WuOvYhVJPifsz3W/IpnY3TBHUuSw67WHyz/Wfj+WzIs9LSzKVB7R40OsV7h3w915XfKH N2BEU+Yk68yrByP1aWMqcVTIePU+EJUNDYGYphVNu+QD1pI/RBU9RzUCuyAUez1SBGaE FmITW/OO/8udJQ+YtT4iDrWK0Moa/OJrNpbcgG1q4gDvAgjTYcXxEn2NtSEKmh2s0SHQ 8Cdw== X-Gm-Message-State: AOJu0YyB5okZCyz+IaPiW18PnDIr5tq/mZIcQLKlHxoOcfiQhf/J72OX 1KWiGGUrmZADCSUkgXJqKvGOFJthWQ7a+7s6EmTrSipMBgOdgc40wawXXw== X-Received: by 2002:a17:902:eb8a:b0:206:adc8:2dcb with SMTP id d9443c01a7336-20b36ec98c9mr164441605ad.25.1727737381312; Mon, 30 Sep 2024 16:03:01 -0700 (PDT) Received: from Koushik-MacStudio.tail05204.ts.net ([2001:559:76c:0:fcbe:ac04:10b3:5a65]) by smtp.gmail.com with ESMTPSA id d9443c01a7336-20b37e629acsm59022805ad.270.2024.09.30.16.03.00 (version=TLS1_3 cipher=TLS_CHACHA20_POLY1305_SHA256 bits=256/256); Mon, 30 Sep 2024 16:03:00 -0700 (PDT) From: Koushik Dutta To: ffmpeg-devel@ffmpeg.org Date: Mon, 30 Sep 2024 16:02:59 -0700 Message-Id: <20240930230259.44616-1-koushd@gmail.com> X-Mailer: git-send-email 2.39.5 (Apple Git-154) MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] program_opencl: implement filter process_command 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: Koushik Dutta Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: z3OZcoKQ6xFq Implements process_command to allow program source to be sent as an arg. Signed-off-by: Koushik Dutta --- libavfilter/vf_program_opencl.c | 49 +++++++++++++++++++++++++++------ 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/libavfilter/vf_program_opencl.c b/libavfilter/vf_program_opencl.c index 3b49829161..f032400fbe 100644 --- a/libavfilter/vf_program_opencl.c +++ b/libavfilter/vf_program_opencl.c @@ -49,16 +49,9 @@ typedef struct ProgramOpenCLContext { AVRational source_rate; } ProgramOpenCLContext; -static int program_opencl_load(AVFilterContext *avctx) -{ - ProgramOpenCLContext *ctx = avctx->priv; +static int program_opencl_loaded(AVFilterContext *avctx) { cl_int cle; - int err; - - err = ff_opencl_filter_load_program_from_file(avctx, ctx->source_file); - if (err < 0) - return err; - + ProgramOpenCLContext *ctx = avctx->priv; ctx->command_queue = clCreateCommandQueue(ctx->ocf.hwctx->context, ctx->ocf.hwctx->device_id, 0, &cle); @@ -83,6 +76,27 @@ static int program_opencl_load(AVFilterContext *avctx) return 0; } +static int program_opencl_load(AVFilterContext *avctx) +{ + ProgramOpenCLContext *ctx = avctx->priv; + int err; + + err = ff_opencl_filter_load_program_from_file(avctx, ctx->source_file); + if (err < 0) + return err; + return program_opencl_loaded(avctx); +} + +static int program_opencl_load_source(AVFilterContext *avctx, const char *src_const) +{ + int err; + + err = ff_opencl_filter_load_program(avctx, &src_const, 1); + if (err < 0) + return err; + return program_opencl_loaded(avctx); +} + static int program_opencl_run(AVFilterContext *avctx) { AVFilterLink *outlink = avctx->outputs[0]; @@ -330,6 +344,22 @@ static av_cold void program_opencl_uninit(AVFilterContext *avctx) #if CONFIG_PROGRAM_OPENCL_FILTER + +static int process_command(AVFilterContext *ctx, const char *cmd, const char *args, + char *res, int res_len, int flags) { + int ret; + + if (!strcmp(cmd, "source")) { + ret = program_opencl_load_source(ctx, args); + } else + ret = AVERROR(ENOSYS); + + if (ret < 0) + av_log(ctx, AV_LOG_ERROR, "Failed to process command. Continuing with existing parameters.\n"); + + return ret; +} + static const AVOption program_opencl_options[] = { { "source", "OpenCL program source file", OFFSET(source_file), AV_OPT_TYPE_STRING, { .str = NULL }, .flags = FLAGS }, @@ -372,6 +402,7 @@ const AVFilter ff_vf_program_opencl = { FILTER_OUTPUTS(program_opencl_outputs), FILTER_SINGLE_PIXFMT(AV_PIX_FMT_OPENCL), .flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE, + .process_command = process_command, }; #endif