From patchwork Sat Feb 10 10:56:29 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 46151 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:a586:b0:19e:8a94:b663 with SMTP id gd6csp1474430pzc; Sat, 10 Feb 2024 02:56:43 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCVx/3QyJDF6aIiHUHBDzheiEWzmuRJMQNb98T4FM0Je0ThWOv2m6mcN41R/xWZaJwAYNeZZwBc9kxA57D/4oWLRZfjd+Sv+SBU8PQ== X-Google-Smtp-Source: AGHT+IGRjKcbuIbmFXwr0fl8909ENCoVVEm2HzC/zYw2aFq8sQ/q8hoFGOF0TxStY8lh/ZwYXIUV X-Received: by 2002:a05:6402:28c9:b0:560:5c7b:ba5 with SMTP id ef9-20020a05640228c900b005605c7b0ba5mr3373005edb.19.1707562603666; Sat, 10 Feb 2024 02:56:43 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1707562603; cv=none; d=google.com; s=arc-20160816; b=PpnJk1D/ZQi2epmS2LDPt0xOVFJ6P9RJ3Zh8sKvbWj55SP4i+E9JyCRCHbkqAXFj1W z3p3zcH0QWSNQhf49Mxupi9V4hSMBrpe+JFRgiyVBqDQVqLxHDhDQrJROMyMyxNrX8Ov I3bliIoqLCXFA9lHgd0TOugYdlbsjtb2nH+YP/0s5Eyatle8Y0tpTY53j+8vguMSKJld a7nFvTzs3wgnZkoTeT+AzgnwQYfSDwi3QDs4JLjjJ9paOi9mlvimp9VksL9DrSVsRL6B C0OVx5gPkgySLaFHoihBt8O54Y1KPASeRXbWQjM3jHLzwtr85StgLYpSjHc4hIwbselH 6wEQ== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=QMMT7RwIdVHzY20GxgO8pSwiXCYsq3qsDOI53WGu7sw=; fh=DtkDmd7Cl9TSl6CvdpYf4zU9H9aQPdM81pKgK3UhWGE=; b=mA8S3NVZ/AOYR2ptPmoimlAAd4br+V5ibUN/7dZZxrZxMu3Kw9na5+4TMkgLOiqKjl NRzafnZIwdx4CI2+ouvQhsCqfkQtsOZoHX4Hsvjce28ISGWZHgYEBFtKCPA2tXO7B9yB sP2OujdhFxXTO0P5Rh61B7J/2xxFJC2Zty2/P+hyQ19wVpP3O8q6pHyYuI5Ok+XICmRF dAMYwpBhPH9khAtkW5R9RdwKSuChetMPN3lR2s0KM+HvolX5o6s6ZJ+lV/5NXaYX+sCI TLlGPQdz7zBTlLwBXm2YaClTROuqgK8uLvdyNjBsrhoLHXfLK2iyu5TP/L0D+HnE5jSz n9HQ==; 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="aCMpow/2"; 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; AJvYcCUBxr8TOjLP/lSuMqBccyxgio3D9aR+9LnaQgx0OvGFv3She/aNdGa24KOSw1Vkpe4z05VsvaLsBtllafudyAfK+3EmOyXxcufWGAAH2BQ2ZCpvTKQY6Y80BOPILowHbJfpPLI59O7VDAR2ydMJ1mw4kFQ8M1FjHsJFcuqLfEmSBUKDpLdRTiZspUHOwJ0zuYdmfxGhln9X+FF0HdTYT4/rWcqan3CGKPKLkEFj/9MOqqs3f67dHuznYQlgpQDQ1OlUMXhXdoRY+YwSOjvvmlI+/IyLBqfenpIrZAA1Woa1y4EquWJxPSHrWZmjJ1Cz2YSZ9B2WON5ZSzy8JJnF85iDQW4BcJNX4DyJE/Ov2C1OkkIivCvuhq0CNqkwYawyf1tl2i04Aey5qmBlCmniqah3N733V1K8VcaaH+7f6Rxrl2PlytX4HHKTjUPKovo1rvLBus/p9zh0UaJhru6+29ur2SOEhtsSwyhRX+N/+pgQvEvd7vCQuc3Ss2r7IPWjD+1XASkXwSLtTWTVUfq/HIy8Do9HJqheBA9gZhEU8kGQwC+YLLKzVKb/TEOJTsiGIbBn4A5YNDMHcgxivELmTElg369TSRY4BhUS6A3x228E+oqwU+ohGfueJGW8Gi8Thg43vzVO8uOmtmo3Cl0Hx8arwFGX+ORdWxtPa6x7RFEZhV13BCsai2agnY8nKKQpZmrQ9Wqk2WpQMJMSv211rk9QHnHiiJzzKZAO+n8sqkc6cP6U9Y4gkDqnLHyWHF6qza1LxYduVoIm2nuqdRqURZXe8eNEfsgRMjUAODrWdcVCEzundlyR5KZWKwSE7MP3lBaYFfOwGT0vcbxw8xhK0hfg+ccVVD/6hxyHv6XbAJytso2E5p4WeGkgP8eX8WJtDsK/krGWb6p47sFx9QyQxz7Y3jauqNv0Xin0t2mBr8uAFlaUZBIqjJuJrM4NNZc5PL3QWD ew0eZp1hylSS4a8cuFvchIds9LVg5n5AKjs+KddtnL6HmjEUk2iDgh6YCZT9tqCu0mppeoFAkUoyy3oj9+VjiPU2iAQmckDtCiGZCe9xcRxxNBykrhIg1xZVtTWXh9AcR+axZIMeJ2X95eHgm2N01JEg3njTCELPOJtT1C87Dk1sFucIhkVqPZ6hM6pnBFqZVWMmr2dWW8w58GNUhlwavQF7D+n1kGsKyIbdcsU7Ntxe60CcPPaRA3YLrOBbxxoM8i/EjIUrZSxKW7pxahCtvLCM9iHniEp27u7W6zyVqllksGxqyWyBSnUewNVKkFUuQUvgOv01+JWq4YQ3mkcenZ51B9olDLrRgkq9ww+drj3YUWSeQS+iTpRppHvyTc/nnO+BYRGkW7RLWLUxlU6OVCtI8PAZU4WjT5rr2fSLvzj+GMvXpAFIWk6tBRlESpTIXgFNE8Tfc5DpJrxaUOJ4FrnbxEUgVUsN5wg9ixZT633xEQ3wDZfIbam7/ZRHIGvIgdOi7DLoEkCjmKLaeDjU54Vas4aKV9VSg0DPLN9/FPKpFQM06LMtOrfIBX8GJ6N7mHFwZnZhx1uvT/dAeNYTHG71G7rmx2aGSCMM7Q/4f4QONdThdxM673fcNIGgdR Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ba12-20020a0564021acc00b005617d72cad5si148546edb.492.2024.02.10.02.56.42; Sat, 10 Feb 2024 02:56:43 -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="aCMpow/2"; 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 44B6868D0CE; Sat, 10 Feb 2024 12:56:39 +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 455F168CB01 for ; Sat, 10 Feb 2024 12:56:32 +0200 (EET) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1707562592; bh=vRB2mK9RI0n2tP5oWudsyZz5BgbteZdrgMCnVMIRxHY=; h=From:To:Cc:Subject:Date:From; b=aCMpow/29Ubr/Lt6SfDu1aZHPVdSXBouPBq+Zz7a8vnbb0bg1Qj3icRM0JtWJwy8x 4oH5LwcLmee3VBHj/Gf6P6fGYQqCy2X08JKXCn4/inXXilRsFsziBYeQ62kqw0OI2g dT5dBMO5fFD/MYtsrXVayTm7tUa/z4lPv26zEZFk= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 01C6340B0C; Sat, 10 Feb 2024 11:56:31 +0100 (CET) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 10 Feb 2024 11:56:29 +0100 Message-ID: <20240210105629.11095-1-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avfilter/vf_setparams: use YUV colorspace negotiation API 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: RCLJTSXPUfXy From: Niklas Haas When this filter overrides frame properties, the outgoing frames have a different YUV colorspace than the incoming ones. This requires signalling the new colorspace on the outlink, and in particular, making sure it's *not* set to a common ref with the input - otherwise the point of this filter would be destroyed. Untouched fields will continue being passed through, so we don't need to do anything there. --- libavfilter/vf_setparams.c | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/libavfilter/vf_setparams.c b/libavfilter/vf_setparams.c index ae4c937518..a33c35a942 100644 --- a/libavfilter/vf_setparams.c +++ b/libavfilter/vf_setparams.c @@ -23,6 +23,7 @@ #include "libavutil/pixfmt.h" #include "libavutil/opt.h" #include "avfilter.h" +#include "formats.h" #include "internal.h" #include "video.h" @@ -120,6 +121,29 @@ static const AVOption setparams_options[] = { AVFILTER_DEFINE_CLASS(setparams); +static int query_formats(AVFilterContext *ctx) +{ + SetParamsContext *s = ctx->priv; + AVFilterLink *outlink = ctx->outputs[0]; + int ret; + + if (s->colorspace >= 0) { + ret = ff_formats_ref(ff_make_formats_list_singleton(s->colorspace), + &outlink->incfg.color_spaces); + if (ret < 0) + return ret; + } + + if (s->color_range >= 0) { + ret = ff_formats_ref(ff_make_formats_list_singleton(s->color_range), + &outlink->incfg.color_ranges); + if (ret < 0) + return ret; + } + + return 0; +} + static int filter_frame(AVFilterLink *inlink, AVFrame *frame) { AVFilterContext *ctx = inlink->dst; @@ -177,6 +201,7 @@ const AVFilter ff_vf_setparams = { .flags = AVFILTER_FLAG_METADATA_ONLY, FILTER_INPUTS(inputs), FILTER_OUTPUTS(ff_video_default_filterpad), + FILTER_QUERY_FUNC(query_formats), }; #if CONFIG_SETRANGE_FILTER @@ -217,6 +242,7 @@ const AVFilter ff_vf_setrange = { .flags = AVFILTER_FLAG_METADATA_ONLY, FILTER_INPUTS(inputs), FILTER_OUTPUTS(ff_video_default_filterpad), + FILTER_QUERY_FUNC(query_formats), }; #endif /* CONFIG_SETRANGE_FILTER */