From patchwork Fri Feb 9 14:53:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 46136 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:a586:b0:19e:8a94:b663 with SMTP id gd6csp982294pzc; Fri, 9 Feb 2024 06:54:25 -0800 (PST) X-Google-Smtp-Source: AGHT+IEhWohmENiDwa3+lRQBQtKKJ7qTllRzkE6XvRz8RuTPsI8ra5bSdhNp0M89eQdAUzkDfNIG X-Received: by 2002:aa7:ca55:0:b0:560:799:f802 with SMTP id j21-20020aa7ca55000000b005600799f802mr1409585edt.21.1707490465185; Fri, 09 Feb 2024 06:54:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1707490465; cv=none; d=google.com; s=arc-20160816; b=AnTwOb+dg2VKwzknXOpEw1YkoyiMoGZums0TwDZrQzu3i+ggCpTxeDr5KT0i0ENbtx 1kXXuVro5BhZAjaeHqvPAngJL9OxPWCFEhsz89zHTpL6eZLT+lvL+ytH6rekYnxFz6F+ yPzU0VX6aR37EHxG0jSFP3in6NmYTP67drI1SnDeZVIiZFJDO4me6LjxCqvr/uQztcy7 mnZXI/tie/9SrcTG1HsA2WUYKJa4xWoH2P3/6ujISZLLy9VmMGdQiuBmt5FL1JzmWBmJ rsZLP19udi29U58trKMVyCGcizjH/Y6rVBwk/jyXDnXbp6TxMWu17WwzBMvhbKvSThXc 4X5g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=RQYugCiyShYUGe1wlYDSzcbsUlbqibfcHI5mJK/F44M=; fh=RmlyRzGNcEV+yON6td8rQjpvFshrqLEMdq+NB3+dMac=; b=ncZzz/NYOzoM0hI8LpNbq1nQD92h1ZRzO1HmH6PQmiVrNRhsseg+FT/b1P3svu17sY 9QDQZtYMSKkUQ86Og4NurV4JDXeN+UgNWI9Wraatpx3OHZCyDVPUC0ZvdMmfb4OHpPx0 +DyZWYkmjHMhIJSdBpzmFBLYGRJkQCBoUFwUPEVa4ttTcgUyrly7q7SR0+irW3ksqcLB eie5OTbxcMq+tr/ixQG5cDRp1Tu6Mptrg7Ub+Q1AM/6O+vChOKhLeijj9wJNRgtkPu81 o77qE0kJVuy5VWiuAZj4xV4Y+Vkgjy3uUEhr0zQL0zJZGxig75EnCySWetZdXQ2Yjnia mOBA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@haasn.xyz header.s=mail header.b=QgATJ+Wc; 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 X-Forwarded-Encrypted: i=1; AJvYcCUKkNNx0lsoSBlRAOyRHD7l+sVhU7yW5T9n1NvEm1OHM3WeQCyWNU+gzv8iSGjSmvLOQTP+3hher1IrvxB0Ezm8VSn2SvNh8ICO3om4EnaP5JJpQggw4sACgY15YziSD69MoyMig+3cGizPb2H//hTnC/27IkWhGVKMD3Ak2GLjpmgc0AfkRxD6mx5YOCStjNKdb68QA3Kc/I5ed/18AlbLZsDJauM8G+vQVIc4nSXUwTg+ffpSltsfRBK32KaOCawdNzNy8fF/dFhUg9awWk1q0aqmB9/KDeaG8XwcFsKvmifLd2fr74PHDcX8748rq5SueMUusmdKbbtLUpBeWscPzQB+Oj33I/mKUxvrqTsTlKB0ss02SUCf+7eYH5gKY/M6DWSCtXayYBjDwiq97+l/AKLWk4QIYaXwRT92lCeq39MDDF722zmcenqULJpQFLIP5NiOuGJelxE31lDqCP4cfNt1dKPx/PGlCX/8m+QNmIwITBhHPg23bz1N5Sx1QK7+jahx+RT0HTqGg3AF9dYBC4w/J6Cy3cfxlrLRko3Lk3uXMl05T27zH6fPb1CQ0kfOY2N46m/henu5ymIX4nWxnzOTP+xgEY8nONTUOMbAuFIOJwBXHX/mCqMRQg+55+jC5h0ftYvj+KEiikHLYDb1xAwL8ncSMhB+CEH0NnE7JB9fS+f+UfWsUTQbFYH6IEoMOBS5/4U2GeKUaQe/p7d2SwNwUqWS8Kx3eUgoPQrm+3VDLepp7gOaMZPD0D19CmdvIOsQAkEuNGNufGfX4r15x+ATbB/Z+z1AdJJ5XnvgUe+XIS3J1yeKCV6/XTYsQ4k/DMpMvqbGhcmEjo37RfvsyvYf2D0jp6VffRcXxjbCsScF1VstRDIZtmaxkbHREQdrJMnANF6n36MT6Tj0KSPAQ0EmL7tDCx9iuNlFE/Iwr7RludtpCdv+6Xm3Hbrhsqw0FH W3hT9GMluAY4QOhQLvNrz2pnbDQ0e9XMh//ddAC5nxhyPsoA//fAMbPM5O83eJxxOo203WnTWG81bkVY6Srl9SuXF5n1UR/b64Jf6Wz44G408rsIacrYx8uY9OHhEZT04r7fAQV/zdQ3fRn2D0NC1ePyQ4hr/T+7g0+Hz/FJ/s2HqNqlHqWItbT1VNrSARM6H0kwsVhY6qVRsjm2SJC4fITvrZGidI7Y8jOJfIJiNjkjnnTBGmvagSKTUgNKlAzmdVNwtqHX4J/avvqIEbIKWXBbsh1O7Du9oeZzAAGG2q+jZaNRSbG3AELI5IjHYeQkwep84KZvKSar43n123mDmaRF1xLRgtB1KfTFDe/u8uI0dxKfhYEjOKDwloPKBcpaDh0O6svDJb5rKHMFxmKecZQAn7keHpKdGx38CRnFzmVdzZKrjbAA+mYDXgsUBVvhtRTfRGnAcvHNXdBKJQhmBAx1xIvh+8RRXCj6ErWO4ULlh7yYLBF5ZG9NE2857yZsmJk1sjCrtEgarmXop1Dr+/DOJTujU0s9sFaPVncoUfsL7HZzIXcFtKNIBoRq4AcWJW0XzirGYFUSLUm9FgffEuN35mJfIu14xxF60TwIjTVL5Q87qhUdz3F0l3b88a4sMoVFkk Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r11-20020aa7cfcb000000b005612fd31a0dsi866509edy.427.2024.02.09.06.54.24; Fri, 09 Feb 2024 06:54:25 -0800 (PST) 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=@haasn.xyz header.s=mail header.b=QgATJ+Wc; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5D3CC68D0F6; Fri, 9 Feb 2024 16:54:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 43C7768CD10 for ; Fri, 9 Feb 2024 16:53:55 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1707490435; bh=e7Mk2nKzHPnARdd2O3TaTbd8Di/Oh7URCTl9W4C9Iv8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=QgATJ+WcLMdihGlNtDEqaguYb49b+ncS8BWAPdcmlkWPTYcRhDPgqIxp3NAwq+r6L CuFUU7c5Hf1+4LaQBYs3rzWwz3hv4Yrhha+2SxGkMuxk4YFG2UcqIfvbzcT7tmcv5/ lPWg+w/JGx3UfnPO2Ap8kFMnofSX8MF5nwzw0Htg= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 05F0C41826; Fri, 9 Feb 2024 15:53:55 +0100 (CET) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Fri, 9 Feb 2024 15:53:47 +0100 Message-ID: <20240209145349.104511-3-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20240209145349.104511-1-ffmpeg@haasn.xyz> References: <20240209145349.104511-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/5] avfilter/hwupload: move hwctx init to init() 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: Niklas Haas Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 5hfWx8LphBIK From: Niklas Haas --- libavfilter/vf_hwupload.c | 49 ++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 21 deletions(-) diff --git a/libavfilter/vf_hwupload.c b/libavfilter/vf_hwupload.c index ef61bb4137..bc1e32af1a 100644 --- a/libavfilter/vf_hwupload.c +++ b/libavfilter/vf_hwupload.c @@ -39,35 +39,41 @@ typedef struct HWUploadContext { char *device_type; } HWUploadContext; -static int hwupload_query_formats(AVFilterContext *avctx) +static av_cold int hwupload_init(AVFilterContext *avctx) { HWUploadContext *ctx = avctx->priv; - AVHWFramesConstraints *constraints = NULL; - const enum AVPixelFormat *input_pix_fmts, *output_pix_fmts; - AVFilterFormats *input_formats = NULL; - int err, i; + int err; - if (ctx->hwdevice_ref) { - /* We already have a specified device. */ - } else if (avctx->hw_device_ctx) { - if (ctx->device_type) { - err = av_hwdevice_ctx_create_derived( - &ctx->hwdevice_ref, - av_hwdevice_find_type_by_name(ctx->device_type), - avctx->hw_device_ctx, 0); - if (err < 0) - return err; - } else { - ctx->hwdevice_ref = av_buffer_ref(avctx->hw_device_ctx); - if (!ctx->hwdevice_ref) - return AVERROR(ENOMEM); - } - } else { + if (!avctx->hw_device_ctx) { av_log(ctx, AV_LOG_ERROR, "A hardware device reference is required " "to upload frames to.\n"); return AVERROR(EINVAL); } + if (ctx->device_type) { + err = av_hwdevice_ctx_create_derived( + &ctx->hwdevice_ref, + av_hwdevice_find_type_by_name(ctx->device_type), + avctx->hw_device_ctx, 0); + if (err < 0) + return err; + } else { + ctx->hwdevice_ref = av_buffer_ref(avctx->hw_device_ctx); + if (!ctx->hwdevice_ref) + return AVERROR(ENOMEM); + } + + return 0; +} + +static int hwupload_query_formats(AVFilterContext *avctx) +{ + HWUploadContext *ctx = avctx->priv; + AVHWFramesConstraints *constraints = NULL; + const enum AVPixelFormat *input_pix_fmts, *output_pix_fmts; + AVFilterFormats *input_formats = NULL; + int err, i; + constraints = av_hwdevice_get_hwframe_constraints(ctx->hwdevice_ref, NULL); if (!constraints) { err = AVERROR(EINVAL); @@ -251,6 +257,7 @@ static const AVFilterPad hwupload_outputs[] = { const AVFilter ff_vf_hwupload = { .name = "hwupload", .description = NULL_IF_CONFIG_SMALL("Upload a normal frame to a hardware frame"), + .init = hwupload_init, .uninit = hwupload_uninit, .priv_size = sizeof(HWUploadContext), .priv_class = &hwupload_class,