From patchwork Sat Aug 28 22:15:22 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: =?utf-8?q?Jan_Ekstr=C3=B6m?= X-Patchwork-Id: 29844 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6602:2a4a:0:0:0:0 with SMTP id k10csp2667090iov; Sat, 28 Aug 2021 15:15:40 -0700 (PDT) X-Google-Smtp-Source: ABdhPJyaGwX8Spj1u2cr5dUmOGko5G2vzSfrfleEep9EzMUg95HMzsUjbF+zznAuI7uJeX2ZQerO X-Received: by 2002:a50:eb95:: with SMTP id y21mr4745565edr.139.1630188940429; Sat, 28 Aug 2021 15:15:40 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1630188940; cv=none; d=google.com; s=arc-20160816; b=R+Uo5mAgKUNmPWmmtj8tHnYsISImTKPQjWAQyfL3/ndEoGeNBEMOZF0hCOgRVm/zvg NZZUzZo3AqrHIKG2vlgjltrj9Oryks3smVk54KtlWLNv4nsK65IlRdswk70aJmbe0GuI /xEdJckHB3tcExUe3xdn6YlrVmevLjkoNEwuuBqtPnEibdXYqlOkqJeDo5CrZREVnIth FxzMIprgMuWGa5CXiJR3r03BmUiFEcBllG78leKkWN+nr/DGKHoI/0VSsCGdfZuYXBmm Jb2mK4MCJyY+B9RajQU/LDfAy4NIAcR8XfBrTJITEa3ndWjI/VFY5LZh5REke/uYGmwz iDGA== 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:message-id:date:to:from :dkim-signature:delivered-to; bh=hLspm/3meEZtqZiuSXBB4MhROGQJVw52NzwIbEXjNZ0=; b=uogtK7Scvxn+wY9ZneZI8YgWNuXplWg7nHRvE0JrmaZHp+ilRL1ZRjbfwkyCZMyJ9R RdrBAp9XELNbP8ppvYd2t/OpEO7e1aYtQBMBg1tzwjZp5b/qND1Pufpxd2tDQm8BjESK nKYNSGdQ++KWj2DF8sxphqb7hQI3WYLAEUydvLyQQGQI7Terqj8bvWFcQ/BFpND1I8nv rvQUAsU50pliI16a6KGjvfCmBbnYt+uf8E6MhhhLXo7stz3Hjgf+ixaQNALZtpy5AMDs 4bWM9NtDKts5sIazbu90DFHUhi8nJfPIGccmzShqtgzTIQpa/HyydGc+KgPd9fIBrcxy HpLg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=u3jj1yHY; 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 j7si12677290ejm.280.2021.08.28.15.15.39; Sat, 28 Aug 2021 15:15:40 -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=20161025 header.b=u3jj1yHY; 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 ABDEA68A4C5; Sun, 29 Aug 2021 01:15:35 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-lj1-f173.google.com (mail-lj1-f173.google.com [209.85.208.173]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 68E0F68973D for ; Sun, 29 Aug 2021 01:15:29 +0300 (EEST) Received: by mail-lj1-f173.google.com with SMTP id q21so18352599ljj.6 for ; Sat, 28 Aug 2021 15:15:29 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=+sZrXUBC7HfDail7/W6WZeELw3qt6pnnItuvTyFhAug=; b=u3jj1yHY+BdraK/VaADlU8g7bRVWNFoY1A1NAXAC3plA9/xNMgbEjqQT1nzSGcDAw4 hr5icqVsA2GDfavvr9Ejk66Jn2x8oY+IphCf9ivc/5tKAuK8rMN5evObIZemyvtQXcUc 7fmdjKPiupwfh+HfkBonH/jlMbHcKg/d5K6viSv72BS+LvExXUJRitUtI4OrqEkBz+Dr 0osbqy/eWxBKvMOBrgEpivylwgkfs2gdoRAWZHfm3nExvR1DgMsMEW7buB/sEqF3OzzR l7Eoouqhg2QIPQhcmOGRSx6l1FZltOEfSs98afR1etFA0FteYLfgrX6ALT0XCSfHpS1C oHng== 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:mime-version :content-transfer-encoding; bh=+sZrXUBC7HfDail7/W6WZeELw3qt6pnnItuvTyFhAug=; b=baBI4XfEtbQVjhacNZ4T8uh67MY79eZVfr6MuyMn3ijoUnMQ8DUI8pJ/R+VeUAFKzB G0FlaMGT0Kahk8yWGSd+d/oGT4ZAvqgSNPfjFqJADiOXK2s2xWEwWHIKbB1fiLgaGjq9 K7deWuFr/xTIv4pr+NmeVl+dG7PcC9/Jq3/hQzTxiNKMrZfsJY7B4gjUkMumAqqnf3h7 JYit7qjK8pLcSghv3cdhalT93uUNd2o4ijskZlZPLLHELoa9Es1tb2GRLWRxVhySIL86 7/qQhgmN4MdStDhAtNukmBWnWVqtyQwLT9ZkBp0tAZZcgij4+zvHdV0Fs3lpKlD7k4AI 91Kg== X-Gm-Message-State: AOAM532yIh0AZ274Xdmp9w1YTq06yG3qjo/2vD58XjX8TIsrjepdmrN+ PgIFniSlEhEK2rhMog75eOIKZp+OlWs= X-Received: by 2002:a2e:a885:: with SMTP id m5mr13757117ljq.27.1630188928301; Sat, 28 Aug 2021 15:15:28 -0700 (PDT) Received: from localhost.localdomain (91-159-194-103.elisa-laajakaista.fi. [91.159.194.103]) by smtp.gmail.com with ESMTPSA id h15sm1210549ljc.96.2021.08.28.15.15.27 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 28 Aug 2021 15:15:27 -0700 (PDT) From: =?utf-8?q?Jan_Ekstr=C3=B6m?= To: ffmpeg-devel@ffmpeg.org Date: Sun, 29 Aug 2021 01:15:22 +0300 Message-Id: <20210828221522.61050-1-jeebjp@gmail.com> X-Mailer: git-send-email 2.31.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avfilter/vf_scale: set the RGB matrix coefficients in case of RGB 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: Wo7/izCpVRCh This fixes the passing through of non-RGB matrix from input to output when conversion from YCbCr to RGB happens. --- libavfilter/vf_scale.c | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c index 7ca833bbb1..17668206aa 100644 --- a/libavfilter/vf_scale.c +++ b/libavfilter/vf_scale.c @@ -738,13 +738,16 @@ scale: out->width = outlink->w; out->height = outlink->h; - // Sanity check: If we've got the RGB/XYZ (identity) matrix configured, and - // the output is no longer RGB, unset the matrix. - // In theory this should be in swscale itself as the AVFrame - // based API gets in, so that not every swscale API user has - // to go through duplicating such sanity checks. - if (out->colorspace == AVCOL_SPC_RGB && - !(av_pix_fmt_desc_get(out->format)->flags & AV_PIX_FMT_FLAG_RGB)) + // Sanity checks: + // 1. If the output is RGB, set the matrix coefficients to RGB. + // 2. If the output is not RGB and we've got the RGB/XYZ (identity) + // matrix configured, unset the matrix. + // In theory these should be in swscale itself as the AVFrame + // based API gets in, so that not every swscale API user has + // to go through duplicating such sanity checks. + if (av_pix_fmt_desc_get(out->format)->flags & AV_PIX_FMT_FLAG_RGB) + out->colorspace = AVCOL_SPC_RGB; + else if (out->colorspace == AVCOL_SPC_RGB) out->colorspace = AVCOL_SPC_UNSPECIFIED; if (scale->output_is_pal)