From patchwork Sat Oct 5 19:23:52 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52063 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1130604vqg; Sat, 5 Oct 2024 12:24:34 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUNEWdvlml/o67v4TMCv3c2tZCv68O7bU/yZvnKiXZGuxdRMtISQetvA8X+W27AaDzG8VzDMRDCvp9KqU1Ska7L@gmail.com X-Google-Smtp-Source: AGHT+IEG6XPIwPP7ZWtel30ccC3v0uNxX63e/ELzDjKo8jJoUWwl2CFK0egjwLzkt4imW9Bl61PH X-Received: by 2002:a17:907:3f04:b0:a8d:439d:5c44 with SMTP id a640c23a62f3a-a991bce3fe5mr779525166b.1.1728156274451; Sat, 05 Oct 2024 12:24:34 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728156274; cv=none; d=google.com; s=arc-20240605; b=aO0wug6HCYR10BWmJOtOsjHh2WB77fJVfJzGrT4JbhfC4zPeAoneC28F2uZIsHlKYh CLOAURDhyzeSRRkf+ix4w2wf8NCXKOqg0saMuDdmaUNqm9rWJfBY9vi5QbOTxI56wkM+ DXVpP8XAeX2/Zr9pZc+m1shq1aZofUToOetv2CV3+QhYwO5/SnsowjLsaOKNipgYAKRL +keTQUj5hwm7zdM4+MW1/rFgZ6sZNnu2yDQOC0Cd7DzZrlGD7bHHBqx0+HQ5qZy3jw+z hWB73+4Ct5pvNiTwhyGP31E5T8F7BUQooHJpcyDNxjDlcudg5VXsqh6h+lHVe4a3kuyL dULg== 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=3mo1RO2xQvilghMCUzVepHCgwpyblyi5L7Oh7ZBmw1w=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=RnFpLENWbfjpAPaYG+z5+ZpcqPS7GzMVna/wkCo5BssZ6ENbwSrIhMBqTTtW8N+uUQ rPBL4BtVQKeYUFJB8egILPopmfk9Y1KD96mHrTfVxUnZB5ZNOwJWbt30/rVFBOX236Ii pNGcd0vacuhKd1wc7uAoeU/Qr4OXxVMd8huuIfm4hoiWMUc7FEKKbvmZrFJsI6o592Tq s1JOMg7C+zJ7Rg6eMWefPvUeyVZ+G0DgLN0Va57YSHrjPFdOMghZRiDZDG8yD1RPiQ1Z asDHvbTJHRwynM6zXkWCLxi4Uq2B1EiLY5NQJhpNpwkZ3McmNUqXQqUZp7jqrtr0Uy8g 54Hw==; 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=HEGWXdrO; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a993846993csi137751066b.820.2024.10.05.12.24.34; Sat, 05 Oct 2024 12:24:34 -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=@haasn.xyz header.s=mail header.b=HEGWXdrO; 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 2C10F68C30E; Sat, 5 Oct 2024 22:24:20 +0300 (EEST) 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 E676268D30B for ; Sat, 5 Oct 2024 22:24:12 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156252; bh=CFpjOa+K28n/g7yuKLxoKQouH/lMKaoVm9pdp7h4r9Y=; h=From:To:Cc:Subject:Date:From; b=HEGWXdrOxDUjI7I7PvMKgSIOrqV6m4lBrrIASHKo0vm1d55F+gWvbCgTmNYme2dyM uYcSpP+DOvkcpTo7uv/muybiQDsBBmeG/UiFbw2P7/F7l/pJzbYI24ihrrXt9bITOi PtyojX2KGRMs/VGNvUzZHhZgBUibNKk3pbGMU4z8= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 45A4141430; Sat, 5 Oct 2024 21:24:12 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:23:52 +0200 Message-ID: <20241005192403.2450339-1-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/12] avfilter/src_movie: configure correct YUV attributes 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: hPFqCVhPa4K6 From: Niklas Haas Missed by the YUV negotiation series. --- libavfilter/src_movie.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libavfilter/src_movie.c b/libavfilter/src_movie.c index 65091b65f0..d2aa572d12 100644 --- a/libavfilter/src_movie.c +++ b/libavfilter/src_movie.c @@ -430,6 +430,12 @@ static int movie_query_formats(const AVFilterContext *ctx, list[0] = c->format; if ((ret = ff_formats_ref(ff_make_format_list(list), &cfg->formats)) < 0) return ret; + list[0] = c->color_space; + if ((ret = ff_formats_ref(ff_make_format_list(list), &cfg->color_spaces)) < 0) + return ret; + list[0] = c->color_range; + if ((ret = ff_formats_ref(ff_make_format_list(list), &cfg->color_ranges)) < 0) + return ret; break; case AVMEDIA_TYPE_AUDIO: list[0] = c->format; From patchwork Sat Oct 5 19:23:53 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52073 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1136181vqg; Sat, 5 Oct 2024 12:44:07 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCU+AU7boujHAB2RcQ12jXhmiTBWZZaR04H67aGrPSCDvcxGyaTMGaXO+A/Xmjvql2GAmMZu/Q9bwYTmchH4jJv/@gmail.com X-Google-Smtp-Source: AGHT+IFyYLo4xs8GXLrsFWz3SdV7wJXzTHQTShG61F/WEbqAfvg0Wvc+RikqJlnaYAe1b8J3s+x6 X-Received: by 2002:a17:907:7e82:b0:a8d:4c83:d85d with SMTP id a640c23a62f3a-a990a04e25bmr1161474566b.12.1728157447078; Sat, 05 Oct 2024 12:44:07 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728157447; cv=none; d=google.com; s=arc-20240605; b=Ad8DJTwAdxZSDiNyuwPNu9c/0mY8c+omTLqgVsvuomYn4cnKTDYSGGKz/XvHVYR7Ha Uub+Cw/SYWp64ORJQlJt94KMURxBxytXwTD1vxz8A/dhakKGTBmwn6Yg7WiFBPC1AFBw 5av5PlXJxDgKHVCRy1lrBloQ9ArO7Zknx0UCVNJx1ir3phIDp8hDyfr3fE3f7FN9PKWu P00RkGk3E7MXY+3hci6JC8sgSjrjpwIhQaHbx20YGWzXv239QsbZzjsaDSrwq+JIb/M8 VXt0F5Q776sC14wUx2RqV0V6LqqXzydl5ENgLitLZzk1Gx5VKMMk4Ww9d4/SBPLJii4f NWzw== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=xDKiXAYDbqGU5pEpieIx7zDEujOzmO48AurVuVflG9w=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=XNgZmb+qHFrcYmj4Ds5s/ZO/SVZF2Nm46URnTgFUNQLQExjZV5M9cB0iBBQRtHZAJR M0P9AaSJef5dK0/gZMhY29r0akJkEKLMzcWX94VqndyTHT1C8KCWoXZvMPx25RiDgS9C 0wGWtWyL9h4/SONsBSbGe7LlLVcwkaTxPCHBT7UoZJ0Tk8j8ODGE922JcXvldbvZvWND c2fP1FXNQ+TONgkaf2G07cD8cc57nw+RBwY746keizmkjbCji2yywN9BojJ2mYDMyWEK rxI4BKoF/zvMAOpXdy4cNXKIoLZNbHNB0YVdg+9OmUO83n6bL2cKXTYgw5l+Kbte7ham Zf0A==; 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=AeGbBU9B; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a99441da10esi60002166b.412.2024.10.05.12.44.06; Sat, 05 Oct 2024 12:44:07 -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=@haasn.xyz header.s=mail header.b=AeGbBU9B; 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 3768A68D9D9; Sat, 5 Oct 2024 22:24:19 +0300 (EEST) 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 E424C68D0FE for ; Sat, 5 Oct 2024 22:24:12 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156252; bh=ZBAJg3eK6RpwedGd6ccCNieYBRIfgGU0HJzpoGgKcNw=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=AeGbBU9Biz+On0yAeFtn08/ZLCj4F8REPIH/xe5NtvAReencP4hBEZOQraOJCsWWT f30bMY2RwUbUKnPIojeiK8KxEMGujM/SzhSHDrbrm/3Bmjwq0ImxwVEhgVoalyQ2DA 13iXWmRCDhMd3oKFAVQdDFILe6DiGUMJmNS7iDms= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 8ABB2417D8; Sat, 5 Oct 2024 21:24:12 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:23:53 +0200 Message-ID: <20241005192403.2450339-2-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 02/12] tests/swscale: fix minor typos 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: 8PzVyv8XrtIa From: Niklas Haas Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/tests/swscale.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libswscale/tests/swscale.c b/libswscale/tests/swscale.c index cf8d04de89..8e57c0a7cf 100644 --- a/libswscale/tests/swscale.c +++ b/libswscale/tests/swscale.c @@ -445,14 +445,14 @@ int main(int argc, char **argv) " -ref \n" " Uses file as reference to compae tests againsts. Tests that have become worse will contain the string worse or WORSE\n" " -p \n" - " The percentage of tests or comparissions to perform. Doing all tests will take long and generate over a hundread MB text output\n" + " The percentage of tests or comparisons to perform. Doing all tests will take long and generate over a hundred MB text output\n" " It is often convenient to perform a random subset\n" " -dst \n" " Only test the specified destination pixel format\n" " -src \n" " Only test the specified source pixel format\n" " -cpuflags \n" - " Uses the specified cpuflags in teh tests\n" + " Uses the specified cpuflags in the tests\n" ); goto error; } From patchwork Sat Oct 5 19:23:54 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52064 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1130662vqg; Sat, 5 Oct 2024 12:24:44 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUrETtOAP/MGDy8I0c2TJQZ/9+6Vz0DFxBcMGrg0NxbpNdhJU7GMP4IEG9uNC4zIS3XY7nlv2Ll1DTGKMwiUegy@gmail.com X-Google-Smtp-Source: AGHT+IFxzCPELTkNRMzKYNj4NV/XvQx97gdZMGBcdcQs54adr96m/a1oEcXPH+uFK0fj7OX5WtJj X-Received: by 2002:a05:6402:3705:b0:5c4:2fca:b11 with SMTP id 4fb4d7f45d1cf-5c8d2ec8045mr7482251a12.35.1728156284602; Sat, 05 Oct 2024 12:24:44 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728156284; cv=none; d=google.com; s=arc-20240605; b=MAWSzrIOoiZ9ksA88GshPbykK2fLgNcetE7jWdX34nF+1X4E9YLAUnq3YABP9Vc3YR oOhI03bLR/WvkPRt4/g4rGyT8PKuNL8WDuc/o8jX5QVqHM75/qkJljkrkY4MQx2jRt5e 1Qnth7+wD16yPkjjQZ9xG/5wCg86SRAewLmBoE2quQLSKmpciYlTOLb53m3lZTcryIcm hwqo2mB6hrjxIEgkngn6PbosH+oD0nWi99z6TcVIsDt2vnIzgcKLnRvnsU2pxZYw0TdU 623w/dt7L8LnPgNtkj/TGe+iwcGspirjOJLq5SrDs8P6FqDxqt4znLaj6Jp4U4bJ4zjn 4LXQ== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=INwWMr4/HVTsgzX8idCffpFs0ukOXjj889wXCVIslfw=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=bZrZW7GNjk6pG6Sf6XZwiqRNb0cth6rGi0JRj3lN42WYrewpJRgZIkv+atiqo01upk Q5BIDswANebClkDWZqD4sM64ujZE+4qO8oiFiBbL0osvrhXU2uQOVrvkjIxCtyxg6oPs cTfnpvPN3ISd12++qHK1sh/7CrL3f75yblStCmxGt8OSxy9vJDKGcTzqmpC1isCKZ/tO VCIvAgpRXPa51/gQ8uzrBOY1l1i7BK9e9us8/MNaFT28KO9R9V9IZ5Ubi6AiIs8+R9ZS pqRbyAzHrAofG8frwEUiD/DdJmJ8lRuL3kRLBqJ7bQkAg+7/rEgzA8NWdN+FT8r6rmOr nH8Q==; 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=I1d03OLN; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5c8e05e70e8si1720463a12.292.2024.10.05.12.24.44; Sat, 05 Oct 2024 12:24:44 -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=@haasn.xyz header.s=mail header.b=I1d03OLN; 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 6D12268DA15; Sat, 5 Oct 2024 22:24:21 +0300 (EEST) 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 22D9368D30B for ; Sat, 5 Oct 2024 22:24:13 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156252; bh=kffmqchfMIBGa7cL9tixD4FMaHl+oBgvnfk+7tvlIrU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=I1d03OLN3wRObzI0Zvnoo+MUFpOhQ0aoxTg9k2ym+jPvFkb4VydVvVg5ffAZlGmVE Ma4+PGHL1NlXgYDGH/kE1iCvn7pH/BU96Rs2kiWP3mW+CuOUpJgeV1O3GsvS49dldB V7j1kmxwJSQgpU+0GMGmB+axCzFjhh/Qs5FUT9tI= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id CBB1E42AE1; Sat, 5 Oct 2024 21:24:12 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:23:54 +0200 Message-ID: <20241005192403.2450339-3-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/12] swscale/internal: rename NB_SWS_DITHER for consistency 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: UtKsbUq/6Ni6 From: Niklas Haas Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/options.c | 2 +- libswscale/swscale_internal.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/libswscale/options.c b/libswscale/options.c index 53c4f0651b..6337a9f28d 100644 --- a/libswscale/options.c +++ b/libswscale/options.c @@ -67,7 +67,7 @@ static const AVOption swscale_options[] = { { "dst_v_chr_pos", "destination vertical chroma position in luma grid/256" , OFFSET(dst_v_chr_pos), AV_OPT_TYPE_INT, { .i64 = -513 }, -513, 1024, VE }, { "dst_h_chr_pos", "destination horizontal chroma position in luma grid/256", OFFSET(dst_h_chr_pos), AV_OPT_TYPE_INT, { .i64 = -513 }, -513, 1024, VE }, - { "sws_dither", "set dithering algorithm", OFFSET(dither), AV_OPT_TYPE_INT, { .i64 = SWS_DITHER_AUTO }, 0, NB_SWS_DITHER, VE, .unit = "sws_dither" }, + { "sws_dither", "set dithering algorithm", OFFSET(dither), AV_OPT_TYPE_INT, { .i64 = SWS_DITHER_AUTO }, 0, SWS_DITHER_NB, VE, .unit = "sws_dither" }, { "auto", "leave choice to sws", 0, AV_OPT_TYPE_CONST, { .i64 = SWS_DITHER_AUTO }, INT_MIN, INT_MAX, VE, .unit = "sws_dither" }, { "bayer", "bayer dither", 0, AV_OPT_TYPE_CONST, { .i64 = SWS_DITHER_BAYER }, INT_MIN, INT_MAX, VE, .unit = "sws_dither" }, { "ed", "error diffusion", 0, AV_OPT_TYPE_CONST, { .i64 = SWS_DITHER_ED }, INT_MIN, INT_MAX, VE, .unit = "sws_dither" }, diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 50127d288f..57e7515582 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -73,7 +73,7 @@ typedef enum SwsDither { SWS_DITHER_ED, SWS_DITHER_A_DITHER, SWS_DITHER_X_DITHER, - NB_SWS_DITHER, + SWS_DITHER_NB, } SwsDither; typedef enum SwsAlphaBlend { From patchwork Sat Oct 5 19:23:55 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52070 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1133592vqg; Sat, 5 Oct 2024 12:34:15 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVNGn/XHZXRCBUhEunvgAaff9ujh1mg9PHvclIVMoXK/mCMHUlpQSwCXVE+5nbrc7302VB7l2w5qteQFRI0ROo4@gmail.com X-Google-Smtp-Source: AGHT+IEF0bTpIOmvPiHO3H+cJTGLi5//9JfS0nUuJGijqXccLHLNQZ7WyTwL/ORoIfRozDDb7hNJ X-Received: by 2002:a2e:a543:0:b0:2fa:d67a:ada7 with SMTP id 38308e7fff4ca-2faf3c4169emr34264581fa.23.1728156855288; Sat, 05 Oct 2024 12:34:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728156855; cv=none; d=google.com; s=arc-20240605; b=JY5380mtXRmBFCkA0585TT7cNEuTviBHZv8O5EuadNUUNWnbVXgVhphOg/469JesYq DBHTYIEbHwVh+7vuXbMUJB3A5s5B2IKt5qdlZQESXWblFPwXP6MHAw/Ce192coHCc/DE oLjGZP8ZOZkmiUgMEmmD9IOsSmFH4UC50lBL2OhPn1ujBDg3NHXw5/CCOKzcP6wloSCM Qij46ODO7d7VlgdMBxUDyGI4kHGsCHsFoeXRtCCN+jgECLY3HPWYqOzhBM4WEyjXt0IF sn8zFJKV9IV+rMn8FUygXQs3EMBcZ+TmySQaAGfVrlbZOR7bvnhY572j+G3C9muDZ0U0 6drA== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=5RX9ufiFKVz8wXQX9mHfpAxWoxb/nsPfD6IIQsPjBuc=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=XhOVYHM5/+6VSH0ER1ZLldrPOXzIJiEq/sB8UhTUP4Z3f/e9j4g+JaSZ+hNcKeRE7y P0fPfLmRAqiV1pzTbP5GLoRjPmqWTlHofX5Xx6TKBmt+b1ZZIKEHmXbwnuOPo6TAclBS PcPyC5OBnmbtEhyAGADjVgjaefOmeLpZQ84a/di3xAV83OSKnV3Y9wuGTz3zkEybyJiZ LiUiUvBamzP483LJXcbEsg9sMQrL4Imsvs1qs11fcmTuNs55vRx5/yiJ+fbsCbCippbu vEODMN1bqR0OP4aCLP+sWoeLmlXzCWaMHMsPcFIKqzlbqNpy1uK1Sp9FYMJvl0aQ0HZA mDWQ==; 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=Xcn3NIC9; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2faf9ab0203si6639301fa.18.2024.10.05.12.34.14; Sat, 05 Oct 2024 12:34:15 -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=@haasn.xyz header.s=mail header.b=Xcn3NIC9; 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 8EC5868D9DF; Sat, 5 Oct 2024 22:24:22 +0300 (EEST) 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 504D768D30B for ; Sat, 5 Oct 2024 22:24:13 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156253; bh=wXhy9cOl1svqNHOPKISInfi2pYRZGs2TtoOXWtKvn7I=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Xcn3NIC9igqPwmIs1XMRp0czlIi+umx/FdxqKDEtfZ+7gG6D/aatuaUWZLEa9/XN0 3Gd84ov2oRgNR1sK77yX1t6UtlFdi+AFhV/KdhMKq2KfnwdGp+JBlxUAoZ8WSXiTpn UKkGT8VlPISxI19P+jGygy6EBw6+lb+YK/r1KA14= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 1763642EFA; Sat, 5 Oct 2024 21:24:13 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:23:55 +0200 Message-ID: <20241005192403.2450339-4-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/12] swscale/internal: swap SWS_DITHER_NONE and SWS_DITHER_AUTO 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: rUvYXdO6ypr/ From: Niklas Haas This is done for consistency with the other public enums which will be added in the upcoming swscale API refactor. I went through the code and checked carefully that the value of `dither` is never implicitly compared against zero, so this change should not break anything. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/swscale_internal.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 57e7515582..963879cf9a 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -67,8 +67,8 @@ struct SwsContext; typedef enum SwsDither { - SWS_DITHER_NONE = 0, - SWS_DITHER_AUTO, + SWS_DITHER_AUTO = 0, + SWS_DITHER_NONE, SWS_DITHER_BAYER, SWS_DITHER_ED, SWS_DITHER_A_DITHER, From patchwork Sat Oct 5 19:23:56 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52065 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1130769vqg; Sat, 5 Oct 2024 12:25:04 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVOSo9wpQUCgHsugdHqZwpAg0Rz2jVlxGuIYaZ66DCh138SGjIjtq9zgd9+UfihWGY5XTgLHTDNbaAkAME5wN07@gmail.com X-Google-Smtp-Source: AGHT+IGz6zI5JebizIa0UuEq2ooixN3RQL9N3j4hYLHeUSgnVRlbVWhmGd9+CdHVnQZLwqJn8D87 X-Received: by 2002:a5d:64c2:0:b0:374:cef0:fd3b with SMTP id ffacd0b85a97d-37d0e7b0e54mr1688184f8f.7.1728156303689; Sat, 05 Oct 2024 12:25:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728156303; cv=none; d=google.com; s=arc-20240605; b=fgAMdP8RKG9fxuBb8gFDlsAxNE0FCNcL0OB6aKgeQ0fh/zAeWFIZFIrippWMDKm+xf ntJELpPO8nUnfcj7O/40X/tUTGMvbEi1Vq3iSTtBxtUKCTr49TAcOOmWGCP9e5Q24RZs EVTBcHn3ox53dSjFDPprlifA1l6MDtA5l+/yOt//zgVxHyIpNP1fZOkKoCY5UliAI7IM Mra6MPauCHY5aCqzDhi1ZY69Iy05S1bMTwWb8smJfwATjcN23qKPnZQ2LEnm3cOQJTio g5G4+wWo2yoLApGxczF1GYTEtH3t9mk8GkyAkmXaRKJSKwF0dwHuTkPpu/ihcQmclC96 u4Qw== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=X1cLtFVybjKoeBpAhDhk8da/yU5DRo7HrXMUJX55iCY=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=DmqEReRabUXw+ThTZz6BjHKi+O7BJM+htjA367/Ju5FPsTEvEHTi6eOGGya/iEnD0R jf6M0O7dItMWixW44nh/T/kh3qYcuTmiMKogccZmxudWVnvL6zxvmDHkNLhB9ZjdUJFX 3+hqSk9fbRt7/3/eM90aenm4sdbeuwrPQTwd8cJTa1HGZXOd7dPctxNu7+vYziYBFF3U Ax88DAmhW00Cppa74v7+FwQKGyqma6UKJkko+j4dBVHjXVOGineRVIvSBOIuML6Atdj1 4w0Ggx9o8KOTcrGdYHR/AQYpn1EJnG5/gIlYjnnSlqNJXWKUN6B3+GBwBUZc91s+r+Yz OINQ==; 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=kJhDcVD6; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a994999c7b3si22405366b.732.2024.10.05.12.25.03; Sat, 05 Oct 2024 12:25:03 -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=@haasn.xyz header.s=mail header.b=kJhDcVD6; 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 AB7A868DAAA; Sat, 5 Oct 2024 22:24:23 +0300 (EEST) 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 9F3B468D4AB for ; Sat, 5 Oct 2024 22:24:13 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156253; bh=stuG8ZI4O6O4a63XLK4alqDogAEjFSQMwGmiyIG2CmU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=kJhDcVD6RqJSNEaUGRYUfCqtMzUxEAVzY4cBIfLrgsS+OBAPRBNG7Cp6Oz9q88btN GT9iB7kT4jS+XgQMdbIWONcEvwYD0WRef8lyTKiuCblqgr2Kfto3rl91WwMgG4IAqA 2jzCHp1J0GafVIA3E9jGwinkA6iiwFuiARm6A338= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 5B2D5436AC; Sat, 5 Oct 2024 21:24:13 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:23:56 +0200 Message-ID: <20241005192403.2450339-5-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/12] swscale/internal: fix and expose xyz12Torgb48 and rgb48Toxyz12 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: LjOi9l1nLUnN From: Niklas Haas In the process of refactoring the signature to be more generically useful, this fixes an 11-year-old bug where the functions (incorrectly) did nothing when the stride was negative, since the stride was being used as the loop bounds for x. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/swscale.c | 98 +++++++++++++++-------------- libswscale/swscale_internal.h | 6 ++ tests/ref/fate/filter-pixfmts-vflip | 4 +- 3 files changed, 60 insertions(+), 48 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 8b6a3a84b4..b9ec976be0 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -636,29 +636,31 @@ static int check_image_pointers(const uint8_t * const data[4], enum AVPixelForma return 1; } -static void xyz12Torgb48(struct SwsContext *c, uint16_t *dst, - const uint16_t *src, int stride, int h) +void ff_xyz12Torgb48(const SwsContext *c, uint8_t *dst, int dst_stride, + const uint8_t *src, int src_stride, int w, int h) { - int xp,yp; const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(c->srcFormat); - for (yp=0; ypflags & AV_PIX_FMT_FLAG_BE) { - x = AV_RB16(src + xp + 0); - y = AV_RB16(src + xp + 1); - z = AV_RB16(src + xp + 2); + x = AV_RB16(src16 + xp + 0); + y = AV_RB16(src16 + xp + 1); + z = AV_RB16(src16 + xp + 2); } else { - x = AV_RL16(src + xp + 0); - y = AV_RL16(src + xp + 1); - z = AV_RL16(src + xp + 2); + x = AV_RL16(src16 + xp + 0); + y = AV_RL16(src16 + xp + 1); + z = AV_RL16(src16 + xp + 2); } - x = c->xyzgamma[x>>4]; - y = c->xyzgamma[y>>4]; - z = c->xyzgamma[z>>4]; + x = c->xyzgamma[x >> 4]; + y = c->xyzgamma[y >> 4]; + z = c->xyzgamma[z >> 4]; // convert from XYZlinear to sRGBlinear r = c->xyz2rgb_matrix[0][0] * x + @@ -678,38 +680,41 @@ static void xyz12Torgb48(struct SwsContext *c, uint16_t *dst, // convert from sRGBlinear to RGB and scale from 12bit to 16bit if (desc->flags & AV_PIX_FMT_FLAG_BE) { - AV_WB16(dst + xp + 0, c->rgbgamma[r] << 4); - AV_WB16(dst + xp + 1, c->rgbgamma[g] << 4); - AV_WB16(dst + xp + 2, c->rgbgamma[b] << 4); + AV_WB16(dst16 + xp + 0, c->rgbgamma[r] << 4); + AV_WB16(dst16 + xp + 1, c->rgbgamma[g] << 4); + AV_WB16(dst16 + xp + 2, c->rgbgamma[b] << 4); } else { - AV_WL16(dst + xp + 0, c->rgbgamma[r] << 4); - AV_WL16(dst + xp + 1, c->rgbgamma[g] << 4); - AV_WL16(dst + xp + 2, c->rgbgamma[b] << 4); + AV_WL16(dst16 + xp + 0, c->rgbgamma[r] << 4); + AV_WL16(dst16 + xp + 1, c->rgbgamma[g] << 4); + AV_WL16(dst16 + xp + 2, c->rgbgamma[b] << 4); } } - src += stride; - dst += stride; + + src += src_stride; + dst += dst_stride; } } -static void rgb48Toxyz12(struct SwsContext *c, uint16_t *dst, - const uint16_t *src, int stride, int h) +void ff_rgb48Toxyz12(const SwsContext *c, uint8_t *dst, int dst_stride, + const uint8_t *src, int src_stride, int w, int h) { - int xp,yp; const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(c->dstFormat); - for (yp=0; ypflags & AV_PIX_FMT_FLAG_BE) { - r = AV_RB16(src + xp + 0); - g = AV_RB16(src + xp + 1); - b = AV_RB16(src + xp + 2); + r = AV_RB16(src16 + xp + 0); + g = AV_RB16(src16 + xp + 1); + b = AV_RB16(src16 + xp + 2); } else { - r = AV_RL16(src + xp + 0); - g = AV_RL16(src + xp + 1); - b = AV_RL16(src + xp + 2); + r = AV_RL16(src16 + xp + 0); + g = AV_RL16(src16 + xp + 1); + b = AV_RL16(src16 + xp + 2); } r = c->rgbgammainv[r>>4]; @@ -734,17 +739,18 @@ static void rgb48Toxyz12(struct SwsContext *c, uint16_t *dst, // convert from XYZlinear to X'Y'Z' and scale from 12bit to 16bit if (desc->flags & AV_PIX_FMT_FLAG_BE) { - AV_WB16(dst + xp + 0, c->xyzgammainv[x] << 4); - AV_WB16(dst + xp + 1, c->xyzgammainv[y] << 4); - AV_WB16(dst + xp + 2, c->xyzgammainv[z] << 4); + AV_WB16(dst16 + xp + 0, c->xyzgammainv[x] << 4); + AV_WB16(dst16 + xp + 1, c->xyzgammainv[y] << 4); + AV_WB16(dst16 + xp + 2, c->xyzgammainv[z] << 4); } else { - AV_WL16(dst + xp + 0, c->xyzgammainv[x] << 4); - AV_WL16(dst + xp + 1, c->xyzgammainv[y] << 4); - AV_WL16(dst + xp + 2, c->xyzgammainv[z] << 4); + AV_WL16(dst16 + xp + 0, c->xyzgammainv[x] << 4); + AV_WL16(dst16 + xp + 1, c->xyzgammainv[y] << 4); + AV_WL16(dst16 + xp + 2, c->xyzgammainv[z] << 4); } } - src += stride; - dst += stride; + + src += src_stride; + dst += dst_stride; } } @@ -994,7 +1000,7 @@ static int scale_internal(SwsContext *c, base = srcStride[0] < 0 ? c->xyz_scratch - srcStride[0] * (srcSliceH-1) : c->xyz_scratch; - xyz12Torgb48(c, (uint16_t*)base, (const uint16_t*)src2[0], srcStride[0]/2, srcSliceH); + ff_xyz12Torgb48(c, base, srcStride[0], src2[0], srcStride[0], c->srcW, srcSliceH); src2[0] = base; } @@ -1052,21 +1058,21 @@ static int scale_internal(SwsContext *c, } if (c->dstXYZ && !(c->srcXYZ && c->srcW==c->dstW && c->srcH==c->dstH)) { - uint16_t *dst16; + uint8_t *dst; if (scale_dst) { - dst16 = (uint16_t *)dst2[0]; + dst = dst2[0]; } else { int dstY = c->dstY ? c->dstY : srcSliceY + srcSliceH; av_assert0(dstY >= ret); av_assert0(ret >= 0); av_assert0(c->dstH >= dstY); - dst16 = (uint16_t*)(dst2[0] + (dstY - ret) * dstStride2[0]); + dst = dst2[0] + (dstY - ret) * dstStride2[0]; } /* replace on the same data */ - rgb48Toxyz12(c, dst16, dst16, dstStride2[0]/2, ret); + ff_rgb48Toxyz12(c, dst, dstStride2[0], dst, dstStride2[0], c->dstW, ret); } /* reset slice direction at end of frame */ diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 963879cf9a..17440c99c4 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -1013,6 +1013,12 @@ void ff_copyPlane(const uint8_t *src, int srcStride, int srcSliceY, int srcSliceH, int width, uint8_t *dst, int dstStride); +void ff_xyz12Torgb48(const SwsContext *c, uint8_t *dst, int dst_stride, + const uint8_t *src, int src_stride, int w, int h); + +void ff_rgb48Toxyz12(const SwsContext *c, uint8_t *dst, int dst_stride, + const uint8_t *src, int src_stride, int w, int h); + static inline void fillPlane16(uint8_t *plane, int stride, int width, int height, int y, int alpha, int bits, const int big_endian) { diff --git a/tests/ref/fate/filter-pixfmts-vflip b/tests/ref/fate/filter-pixfmts-vflip index 5ba28917a7..4cc716799f 100644 --- a/tests/ref/fate/filter-pixfmts-vflip +++ b/tests/ref/fate/filter-pixfmts-vflip @@ -103,8 +103,8 @@ x2bgr10le 795b66a5fc83cd2cf300aae51c230f80 x2rgb10le 262c502230cf3724f8e2cf4737f18a42 xv30le 7e29ee107a1fabf3c7251f337d4b9fe5 xv36le bf1cbef0745f90881e15f5c5db3c5949 -xyz12be 810644e008deb231850d779aaa27cc7e -xyz12le 829701db461b43533cf9241e0743bc61 +xyz12be 23fa9fb36d49dce61e284d41b83e0e6b +xyz12le ef73e6d1f932a9a355df1eedd628394f y210le 9544c81f8e1fc95e9fa4009dbecfea25 y212le c801725ae31e3b8f5be269359d49f191 ya16be 55b1dbbe4d56ed0d22461685ce85520d From patchwork Sat Oct 5 19:23:57 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52068 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1133580vqg; Sat, 5 Oct 2024 12:34:12 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVFz0UWrm4RBbEoMD39pild2chKoC0H5ihshbpA0Y7jF0Fr2dMc62p2DMANHQ31Y3d3fZPA6PeHhQDaPNotXIF9@gmail.com X-Google-Smtp-Source: AGHT+IGxMBeIIs4V0hjeLqY/F74s6z8fivlWJ1WHLFndV1omCsdSS/JA1/W2kbrqdto1bFKXGpiK X-Received: by 2002:a17:907:e21b:b0:a8d:5288:f48d with SMTP id a640c23a62f3a-a991bd460f9mr662260166b.32.1728156852060; Sat, 05 Oct 2024 12:34:12 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728156852; cv=none; d=google.com; s=arc-20240605; b=grFvPitUikwDA2dY/5+hnBSMo0+wLdMysVSkI0pmFtQ2I/Ga/OtA6UUmVJ8xY1aceC JX4G8PWX/wtOFCfqSrlQPklEMB8uZBLdNoIiB57nSDZUNmSTy84fj/T9JhK6bMRyJfmg mSFA7fXMe8HuYJj4g+9RtKGS0h1IzUPjJwjEypKva32CNh3eXWcTMlT5Fw4Ai+SeNrDK iFesHVBHUdYxaMzRpgK+9yEpmdfOKMN/WeaD0/xk1VaSJO/98GA41VlhaDL/E3es1SwP nkV+xdTnkFt4l0YFjCHP0P2UHsVnS85KrtLb3xoqWmCtWIfPOpiorRoS1IdzVl5GOtoV QFCg== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=YRlc2pKqDzZ4ZXxkME96T7eLemqWGSnosBBSDhd/TEU=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=bRpxM1xdx76gIfJvE8+1JhTOMwhb5TCayMsNmhugCNLP6wF9lWxfETfpBYL+hOsbad v/WBpU9iN2wJ3U8IVSmlvt+jqCWelrMqv0SGkYfRNiblbJJ4QCobkON9Ktr37aNyVBxy 3cJeZudS1UC6Xzx19xDF4rEvnEdYIzjnC0lQM3nGuJPpN+4vjJSAhH3ukbvVqzwIHp7a t+fsPshqMC9/tRHpD7ZMeWH2jsr3kogbGRyS26L1cQOOEKF5ncvsGne4OnOxGU0gqJ44 vSKzLIm4i93Tn7Q18WSARjRHwpgjd/9ZPWRSeesGmW27OXkeTowWYC5p5jb9+NeFgWUc faqQ==; 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=KRsHSLba; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a99416da407si85071866b.519.2024.10.05.12.34.11; Sat, 05 Oct 2024 12:34:12 -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=@haasn.xyz header.s=mail header.b=KRsHSLba; 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 DF1F168DAF2; Sat, 5 Oct 2024 22:24:27 +0300 (EEST) 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 2558168DA58 for ; Sat, 5 Oct 2024 22:24:18 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156253; bh=nAnIjkFpozvphKu4Of5zRBjZC7Oy4ing5/7H1IKUmlE=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=KRsHSLbaIKcgEqWBn+EJa4Boqip6+MX0nrxu640MM0iKLhLwSE+L7RS4EFpzk/E1i 0ZBs/J8tW0gBlmt+PhG1t4F7sD45Cw4AbB/kJ+ikTen8VlqU/GBdVQM3cHzHY7WKuv X4kUCbywKKPrjcUNRzTQ6zxjEhzhYghpgGh7/N8A= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id A1603436B4; Sat, 5 Oct 2024 21:24:13 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:23:57 +0200 Message-ID: <20241005192403.2450339-6-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/12] swscale/internal: expose low level swscale() internally 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: RmuzxpdzbY6k From: Niklas Haas And give it const parameters while we're at it, because this function does not mutate its parameters. Used as an intermediate entry point for the new swscale context. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/slice.c | 3 ++- libswscale/swscale.c | 11 +++++------ libswscale/swscale_internal.h | 8 +++++++- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/libswscale/slice.c b/libswscale/slice.c index 1cc3f6c405..119bfbdb8d 100644 --- a/libswscale/slice.c +++ b/libswscale/slice.c @@ -145,7 +145,8 @@ int ff_rotate_slice(SwsSlice *s, int lum, int chr) return 0; } -int ff_init_slice_from_src(SwsSlice * s, uint8_t *src[4], int stride[4], int srcW, int lumY, int lumH, int chrY, int chrH, int relative) +int ff_init_slice_from_src(SwsSlice * s, uint8_t *const src[4], const int stride[4], + int srcW, int lumY, int lumH, int chrY, int chrH, int relative) { int i = 0; diff --git a/libswscale/swscale.c b/libswscale/swscale.c index b9ec976be0..4ba35a61e1 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -233,10 +233,9 @@ static void lumRangeFromJpeg16_c(int16_t *_dst, int width) if (DEBUG_SWSCALE_BUFFERS) \ av_log(c, AV_LOG_DEBUG, __VA_ARGS__) -static int swscale(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[], - int dstSliceY, int dstSliceH) +int ff_swscale(SwsContext *c, const uint8_t *src[], int srcStride[], + int srcSliceY, int srcSliceH, uint8_t *dst[], + const int dstStride[], int dstSliceY, int dstSliceH) { const int scale_dst = dstSliceY > 0 || dstSliceH < c->dstH; @@ -1053,8 +1052,8 @@ static int scale_internal(SwsContext *c, if (scale_dst) dst2[0] += dstSliceY * dstStride2[0]; } else { - ret = swscale(c, src2, srcStride2, srcSliceY_internal, srcSliceH, - dst2, dstStride2, dstSliceY, dstSliceH); + ret = ff_swscale(c, src2, srcStride2, srcSliceY_internal, srcSliceH, + dst2, dstStride2, dstSliceY, dstSliceH); } if (c->dstXYZ && !(c->srcXYZ && c->srcW==c->dstW && c->srcH==c->dstH)) { diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 17440c99c4..33f9404b34 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -1100,7 +1100,8 @@ typedef struct SwsFilterDescriptor // warp input lines in the form (src + width*i + j) to slice format (line[i][j]) // relative=true means first line src[x][0] otherwise first line is src[x][lum/crh Y] -int ff_init_slice_from_src(SwsSlice * s, uint8_t *src[4], int stride[4], int srcW, int lumY, int lumH, int chrY, int chrH, int relative); +int ff_init_slice_from_src(SwsSlice * s, uint8_t *const src[4], const int stride[4], + int srcW, int lumY, int lumH, int chrY, int chrH, int relative); // Initialize scaler filter descriptor chain int ff_init_filters(SwsContext *c); @@ -1144,6 +1145,11 @@ void ff_init_vscale_pfn(SwsContext *c, yuv2planar1_fn yuv2plane1, yuv2planarX_fn void ff_sws_slice_worker(void *priv, int jobnr, int threadnr, int nb_jobs, int nb_threads); +int ff_swscale(SwsContext *c, const uint8_t *src[], int srcStride[], + int srcSliceY, int srcSliceH, uint8_t *dst[], + const int dstStride[], int dstSliceY, int dstSliceH); + + //number of extra lines to process #define MAX_LINES_AHEAD 4 From patchwork Sat Oct 5 19:23:58 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52071 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1133604vqg; Sat, 5 Oct 2024 12:34:17 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWT44hw3hYf+9nzRtrYpu9KpwA0WTDdi2jd8i4z1bzy7RLnEwiXimmP61vK0PGEDq0miJNM7CBy4BnutJJQbrmV@gmail.com X-Google-Smtp-Source: AGHT+IFnSIpG6PPI/MhXTI2ezb7NRC33NnjIoGXKuvvbqIPQ1xkNfO86jBqWDKLom9H+b4tVJmRS X-Received: by 2002:adf:f203:0:b0:37c:cd1d:b870 with SMTP id ffacd0b85a97d-37d0e765eb0mr6284223f8f.29.1728156857324; Sat, 05 Oct 2024 12:34:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728156857; cv=none; d=google.com; s=arc-20240605; b=NGpjo32Irft5O4Mb2BXVRJqoqaz2WcLvl3DaZ2A1Euzgp4rkU6pk8tNTKyE50sNFwn JlLTdHm0uEGB1zfG6hZVlXhD3qT/Rc+azmaXf5m5gYy3vbLxiaSz+Fu5jQ0hgD7Odzry vuTbicESo+9F/poSfMwYyeOts6xsm59G85THNkuE7TLxS+B9g6roma6dGZ+2OURZxlMp TsaXw2Vgj1971eVLf7R8tDnSuuRMLJiGaBMVD3oHlJ04xL18jXY02g0CZndfeGRcyrDg 9v6hFEi2CKHnPLL9y/Vsk0XTSVxq99a3ilvjGiLY3hnDC5SIdW7HnjcAadyJfuhAi1+/ /lAQ== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=n/cwMdnFbRlsGtXZyYfS6GA4a1RhW7vA6oBfeXIFmeg=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=Z8IDjB0U9fyPSdkd6ppA+oBg06yzniUj9IkJR5fUc6nlYebF6HFmhmKH0uke/6rl5C 9AWsm+dJx/toQLh9hZy8PT9zStZT2qyx654FuIgbTdy/URJpsOldZLNbruNVJuf08cxO AUjSq/PF7FI+ZduoCaLtcaNFlG80bB9YqAtsCxvptSeq5kbBOj7TZ0RU0J9k6GBBxnSH yBSzx+ATbE9yXeQi771VUxosjawRKTKGc1569BpbSLmPZqtGzsY2+b9vrFUFYWUWoAEG JVv4Iuc+XA/2PI0fviwaM2jXAMdk7XyPo+1Y9YidBORi1XNAWN3yZO06ZNVSnzhpd/WZ XJpQ==; 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=IHcoELgZ; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a9939dbc6desi125309866b.554.2024.10.05.12.34.17; Sat, 05 Oct 2024 12:34:17 -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=@haasn.xyz header.s=mail header.b=IHcoELgZ; 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 CCB6668DA9F; Sat, 5 Oct 2024 22:24:25 +0300 (EEST) 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 1DC8B68DA4C for ; Sat, 5 Oct 2024 22:24:18 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156253; bh=OJGeI1R/z//NUCq1Kh9rFpqNMkc4+LGZDeNTtaV7XCc=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=IHcoELgZAoKLZEefRweG/n87668lN/t2ex4SzPduSU9oVm+FV5wIK1cldQgTxReLY lV4oRR9ffZYItykhDG9yyUldGhNEGc4m4e+DK0WnikA1tKc/njH+e8p7AnjNmKRwsY PfLE8fheCDijfhpbnptBgaudHAhkQw5o93iCcCnE= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id DF36543CEA; Sat, 5 Oct 2024 21:24:13 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:23:58 +0200 Message-ID: <20241005192403.2450339-7-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/12] swscale/internal: expose ff_update_palette() internally 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: LP3v0O454gXp From: Niklas Haas Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/swscale.c | 4 ++-- libswscale/swscale_internal.h | 2 ++ 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index 4ba35a61e1..e9323efb87 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -753,7 +753,7 @@ void ff_rgb48Toxyz12(const SwsContext *c, uint8_t *dst, int dst_stride, } } -static void update_palette(SwsContext *c, const uint32_t *pal) +void ff_update_palette(SwsContext *c, const uint32_t *pal) { for (int i = 0; i < 256; i++) { int r, g, b, y, u, v, a = 0xff; @@ -951,7 +951,7 @@ static int scale_internal(SwsContext *c, memset(c->dither_error[i], 0, sizeof(c->dither_error[0][0]) * (c->dstW+2)); if (usePal(c->srcFormat)) - update_palette(c, (const uint32_t *)srcSlice[1]); + ff_update_palette(c, (const uint32_t *)srcSlice[1]); memcpy(src2, srcSlice, sizeof(src2)); memcpy(dst2, dstSlice, sizeof(dst2)); diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 33f9404b34..d2dd3b63bd 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -694,6 +694,8 @@ void ff_yuv2rgb_init_tables_ppc(SwsContext *c, const int inv_table[4], void ff_updateMMXDitherTables(SwsContext *c, int dstY); +void ff_update_palette(SwsContext *c, const uint32_t *pal); + av_cold void ff_sws_init_range_convert(SwsContext *c); av_cold void ff_sws_init_range_convert_aarch64(SwsContext *c); av_cold void ff_sws_init_range_convert_loongarch(SwsContext *c); From patchwork Sat Oct 5 19:23:59 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52066 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1130806vqg; Sat, 5 Oct 2024 12:25:14 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUIxLt0lceJd3EJyvhSCGnbM9kVIpyYTBEaVee5dWeVsKs9bfOwcV4S7SUFxwRoPa5mJspnyjSY4zli/GHfn7KQ@gmail.com X-Google-Smtp-Source: AGHT+IGEhS1b0ttXq3ZIgWTY0yeb1s3WjhX5S3yMH1WOovZKkdBIwerYC8wzj4jdjsKyqb2PKuFL X-Received: by 2002:a05:651c:b22:b0:2fa:d4c1:3b6b with SMTP id 38308e7fff4ca-2faf3d74e2cmr30308961fa.33.1728156313752; Sat, 05 Oct 2024 12:25:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728156313; cv=none; d=google.com; s=arc-20240605; b=JAmDTQVN7BUH6Iz/6SvmeMjzbNYsuT0HdwIptVCsZ9KgtQmWFRx4Ivfz/ZnG98B6bO KnMuQWmkFET6RCmA7d9iKgD8DqRZhxtJ73CbmKWCDVt+VGCxLUQ/zwHb13bKzFA0oKVR smn4g5fkBB4GZKNUFxRXS2z4fVmM3FQHWocsIfOSp4h7vVK+IUzoygyPuNRA91fYCbLj SxM72OrTRlB/U4bchRhWKMn+ika8Gu4mwAivhH83KzdLkPs2htgG86lhy8injqw6MqON Md20b+3xp/o2XSQpGmw/+ZpTBBT9tAwz0XffduY929Iv/oexdVkDPvbpdAGHa6Fyd05u wLLA== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=DyN93jhK65dMr9hSc6k4+Bgf0j2CGao0ASTmC0/Htqs=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=YD/07bQXuBXmoQQVoeIiz39TvXx7Ji+1S+X2K5JL0tzU36cT/dslJ520r03zzMCiz8 taZUKLGTd5XRxmDtOZryvBL8X91jTuzfcDb/GtfnD/zSw67AN2AgZ4Oh+60GtJODilFP LDpEp3apG4QwTQL0En/4DbhvdGKoXQHxqrApushMyi2kQ3zCqQOc+Wp8MhTD14eIm1yP 0EXdv9wFD+5XMmQSITwtC6qkuvojEZSZc9bbFJLSjU8t+PsNRRhL9az5M9+TIBUsY6xP 173P7ddr+VJw6ktXbDeQhNQ1F2D/GmxdGrjUvgfBmYkbcbzWd4Vz3snx2W3TV/4Rv07g 1uhQ==; 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=pHxOXb2b; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 38308e7fff4ca-2faf9b228cesi6517941fa.218.2024.10.05.12.25.13; Sat, 05 Oct 2024 12:25: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=@haasn.xyz header.s=mail header.b=pHxOXb2b; 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 D869468DAE3; Sat, 5 Oct 2024 22:24:24 +0300 (EEST) 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 2306068DA4D for ; Sat, 5 Oct 2024 22:24:18 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156254; bh=ZaVrPKr5xhurjb8INNmKstLupDvd8mh26mVa17f4+KM=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=pHxOXb2bb9WiHOBlaoWbfSDMZo29yn6GmtlI/5P89XfThemhQzIF7lM/TuhUDTCSL Wg5YYHzDqjC/tTk9mcdXRlBK+06lAarBTqWFg5RnDijJr3A4XymwaqQ2uOjOdz7m7K t2bbNAxfLxTA5BtLlk4aoG66Jrf/6VOyRbCzTFC8= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 268BB43E92; Sat, 5 Oct 2024 21:24:14 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:23:59 +0200 Message-ID: <20241005192403.2450339-8-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/12] swscale/internal: turn cascaded_tmp into an array 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: IyMSTpljdgPz From: Niklas Haas Slightly more convenient to access from the new wrapping code. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/swscale.c | 20 ++++++++++---------- libswscale/swscale_internal.h | 6 ++---- libswscale/utils.c | 16 ++++++++-------- 3 files changed, 20 insertions(+), 22 deletions(-) diff --git a/libswscale/swscale.c b/libswscale/swscale.c index e9323efb87..fa7f220f0b 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -842,26 +842,26 @@ static int scale_gamma(SwsContext *c, { int ret = scale_internal(c->cascaded_context[0], srcSlice, srcStride, srcSliceY, srcSliceH, - c->cascaded_tmp, c->cascaded_tmpStride, 0, c->srcH); + c->cascaded_tmp[0], c->cascaded_tmpStride[0], 0, c->srcH); if (ret < 0) return ret; if (c->cascaded_context[2]) - ret = scale_internal(c->cascaded_context[1], (const uint8_t * const *)c->cascaded_tmp, - c->cascaded_tmpStride, srcSliceY, srcSliceH, - c->cascaded1_tmp, c->cascaded1_tmpStride, 0, c->dstH); + ret = scale_internal(c->cascaded_context[1], (const uint8_t * const *)c->cascaded_tmp[0], + c->cascaded_tmpStride[0], srcSliceY, srcSliceH, + c->cascaded_tmp[1], c->cascaded_tmpStride[1], 0, c->dstH); else - ret = scale_internal(c->cascaded_context[1], (const uint8_t * const *)c->cascaded_tmp, - c->cascaded_tmpStride, srcSliceY, srcSliceH, + ret = scale_internal(c->cascaded_context[1], (const uint8_t * const *)c->cascaded_tmp[0], + c->cascaded_tmpStride[0], srcSliceY, srcSliceH, dstSlice, dstStride, dstSliceY, dstSliceH); if (ret < 0) return ret; if (c->cascaded_context[2]) { - ret = scale_internal(c->cascaded_context[2], (const uint8_t * const *)c->cascaded1_tmp, - c->cascaded1_tmpStride, c->cascaded_context[1]->dstY - ret, + ret = scale_internal(c->cascaded_context[2], (const uint8_t * const *)c->cascaded_tmp[1], + c->cascaded_tmpStride[1], c->cascaded_context[1]->dstY - ret, c->cascaded_context[1]->dstY, dstSlice, dstStride, dstSliceY, dstSliceH); } @@ -876,12 +876,12 @@ static int scale_cascaded(SwsContext *c, { int ret = scale_internal(c->cascaded_context[0], srcSlice, srcStride, srcSliceY, srcSliceH, - c->cascaded_tmp, c->cascaded_tmpStride, + c->cascaded_tmp[0], c->cascaded_tmpStride[0], 0, c->cascaded_context[0]->dstH); if (ret < 0) return ret; ret = scale_internal(c->cascaded_context[1], - (const uint8_t * const * )c->cascaded_tmp, c->cascaded_tmpStride, + (const uint8_t * const * )c->cascaded_tmp[0], c->cascaded_tmpStride[0], 0, c->cascaded_context[0]->dstH, dstSlice, dstStride, dstSliceY, dstSliceH); return ret; diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index d2dd3b63bd..07b58bfd0e 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -351,10 +351,8 @@ typedef struct SwsContext { * downscaling factor that needs to be supported in one scaler. */ struct SwsContext *cascaded_context[3]; - int cascaded_tmpStride[4]; - uint8_t *cascaded_tmp[4]; - int cascaded1_tmpStride[4]; - uint8_t *cascaded1_tmp[4]; + int cascaded_tmpStride[2][4]; + uint8_t *cascaded_tmp[2][4]; int cascaded_mainindex; double gamma_value; diff --git a/libswscale/utils.c b/libswscale/utils.c index c3154d82c1..642e34c46c 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -1133,7 +1133,7 @@ int sws_setColorspaceDetails(struct SwsContext *c, const int inv_table[4], tmp_height = srcH; } - ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[0], c->cascaded_tmpStride[0], tmp_width, tmp_height, tmp_format, 64); if (ret < 0) return ret; @@ -1613,7 +1613,7 @@ static av_cold int sws_init_single_context(SwsContext *c, SwsFilter *srcFilter, SwsContext *c2; c->cascaded_context[0] = NULL; - ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[0], c->cascaded_tmpStride[0], srcW, srcH, tmpFmt, 64); if (ret < 0) return ret; @@ -1651,7 +1651,7 @@ static av_cold int sws_init_single_context(SwsContext *c, SwsFilter *srcFilter, c->cascaded_context[2] = NULL; if (dstFormat != tmpFmt) { - ret = av_image_alloc(c->cascaded1_tmp, c->cascaded1_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[1], c->cascaded_tmpStride[1], dstW, dstH, tmpFmt, 64); if (ret < 0) return ret; @@ -1671,7 +1671,7 @@ static av_cold int sws_init_single_context(SwsContext *c, SwsFilter *srcFilter, dstFormat != AV_PIX_FMT_RGB48)) { enum AVPixelFormat tmpFormat = isBayer16BPS(srcFormat) ? AV_PIX_FMT_RGB48 : AV_PIX_FMT_RGB24; - ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[0], c->cascaded_tmpStride[0], srcW, srcH, tmpFormat, 64); if (ret < 0) return ret; @@ -1714,7 +1714,7 @@ static av_cold int sws_init_single_context(SwsContext *c, SwsFilter *srcFilter, c->srcRange != c->dstRange ) { c->cascaded_mainindex = 1; - ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[0], c->cascaded_tmpStride[0], srcW, srcH, tmpFormat, 64); if (ret < 0) return ret; @@ -1996,7 +1996,7 @@ fail: // FIXME replace things by appropriate error codes if (srcW*(int64_t)srcH <= 4LL*dstW*dstH) return AVERROR(EINVAL); - ret = av_image_alloc(c->cascaded_tmp, c->cascaded_tmpStride, + ret = av_image_alloc(c->cascaded_tmp[0], c->cascaded_tmpStride[0], tmpW, tmpH, tmpFormat, 64); if (ret < 0) return ret; @@ -2490,8 +2490,8 @@ void sws_freeContext(SwsContext *c) sws_freeContext(c->cascaded_context[1]); sws_freeContext(c->cascaded_context[2]); memset(c->cascaded_context, 0, sizeof(c->cascaded_context)); - av_freep(&c->cascaded_tmp[0]); - av_freep(&c->cascaded1_tmp[0]); + av_freep(&c->cascaded_tmp[0][0]); + av_freep(&c->cascaded_tmp[1][0]); av_freep(&c->gamma); av_freep(&c->inv_gamma); From patchwork Sat Oct 5 19:24:00 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52072 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1137490vqg; Sat, 5 Oct 2024 12:49:09 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVxoCQrXvJJ7hTwYP5k0ULqfT7MGaL7PI2hhC5D1j3eoFF42VNQVVJpFEW4CI7tubgBqQjbCuE/ouj1acct76W/@gmail.com X-Google-Smtp-Source: AGHT+IG75/hBf8YcdLyoBBS/jLgOPcJ/pKOpPA7I6kEnC2zdyBRQnySeJKMpe0xeAQYUYGndXugW X-Received: by 2002:a17:906:40c5:b0:a99:4a35:2400 with SMTP id a640c23a62f3a-a994a3527a4mr15109966b.7.1728157748788; Sat, 05 Oct 2024 12:49:08 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728157748; cv=none; d=google.com; s=arc-20240605; b=bq1JDD2Tl8rS2D5EfNtD+yAA/0piD9zg+39kiEtp54WSW8WIiTvRe4dsnApd0Lnmcd wVAYj+WgH6W629Uu1DmScSQgSPG9pJdbeMW82eMfvhnr9/ewMgzsPatlPQituDkLU7gf fFZbxeK8LM31bPo9YbJXV2mQlV0r3I+YqQRJK9d8FO4V/MyuudfP7g0LI912apgq+cuI IeVh0Shljm6nith9vi6bwelY0Q3zyPxf/xGpuoklmLqwOhIMR4cyVPvPSkiLuG85Utmc dCmNHB4uC4KSY8HJt7Br0y7CTseO7Yj86av14xR+je+n1g9uLnt3NssMiuCt1mP5uHFd h05w== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=nHnygl2GQYXJ3p9fyU6u7hpnJTL1UDbbd6Jz+xOuqOs=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=WWzZBtBDfDhJMtrVtkEY6qUs4nXtYxYWme2L0jM3U7pCmjMd+vL2sJWPMb293lkofN dqH32to9jVq42iHZ9sXasUIyLdZFyK/2kKU5Dnl4tuPwaVCu9YnFliSSXvRB3yMA2RKC Rj19M981ju6WOAgDYLB3rwvn6/L2IxSj9fwB60mg1Ylu8NEyg8ANTllmHtXxyKH46Zn1 DP6E+V40+43x2YZ4RQOjUnecQqVQyXrOz8LJJ+fYWRxG90s74/sjn136JVnEKw8gSVaj hnC/Q7/fLed4N31WiT2IPFIpSajDC2/wPyBkpYfST5iLHARCU+woZzvT7ciUK9fmVyIy cgDw==; 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=qwczDWlL; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a994b209289si13684966b.1044.2024.10.05.12.49.08; Sat, 05 Oct 2024 12:49:08 -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=@haasn.xyz header.s=mail header.b=qwczDWlL; 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 C08E068DAF7; Sat, 5 Oct 2024 22:24:26 +0300 (EEST) 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 25D7A68DA5B for ; Sat, 5 Oct 2024 22:24:18 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156254; bh=vl6LUs1MNabEzLCZTd6J/Gi9mPovOr+1OvA20nVyU9U=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=qwczDWlLt1up8goOTkLxeS0XsKTedCeeAUG7hImQ6n1DP+5/CKOMyoMDRioNP5fwR 8dDFjWPnABJfFN293BjvaBNPlniFgSNNb62C5pQnrhpL0K8UVFePRsi9f/7u5yHDQZ dWm5uO1ZXzF43//mIYOHoNBIe2H26GzgeHxRa/qU= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 63DC543EE1; Sat, 5 Oct 2024 21:24:14 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:24:00 +0200 Message-ID: <20241005192403.2450339-9-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/12] swscale/internal: constify SwsFunc 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: 3hc3opSn+MDS From: Niklas Haas I want to move away from having random leaf processing functions mutate plane pointers, and while we're at it, we might as well make the strides and tables const as well. Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/aarch64/swscale_unscaled.c | 34 ++-- libswscale/alphablend.c | 6 +- libswscale/arm/swscale_unscaled.c | 26 +-- libswscale/bayer_template.c | 4 +- libswscale/loongarch/yuv2rgb_lasx.c | 12 +- libswscale/loongarch/yuv2rgb_lsx.c | 12 +- libswscale/ppc/yuv2rgb_altivec.c | 12 +- libswscale/rgb2rgb.c | 2 +- libswscale/rgb2rgb.h | 4 +- libswscale/rgb2rgb_template.c | 2 +- libswscale/swscale_internal.h | 12 +- libswscale/swscale_unscaled.c | 242 +++++++++++++------------- libswscale/x86/yuv2rgb.c | 54 +++--- libswscale/yuv2rgb.c | 6 +- 14 files changed, 220 insertions(+), 208 deletions(-) diff --git a/libswscale/aarch64/swscale_unscaled.c b/libswscale/aarch64/swscale_unscaled.c index 9dfccc0fdb..294411a726 100644 --- a/libswscale/aarch64/swscale_unscaled.c +++ b/libswscale/aarch64/swscale_unscaled.c @@ -37,9 +37,10 @@ int ff_##ifmt##_to_##ofmt##_neon(int w, int h, int y_offset, \ int y_coeff); \ \ -static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) { \ +static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, \ + int srcSliceH, uint8_t *const dst[], \ + const int dstStride[]) { \ const int16_t yuv2rgb_table[] = { YUV_TO_RGB_TABLE }; \ \ return ff_##ifmt##_to_##ofmt##_neon(c->srcW, srcSliceH, \ @@ -64,9 +65,10 @@ int ff_##ifmt##_to_##ofmt##_neon(int w, int h, uint8_t *dst1, int linesize1, \ uint8_t *dst2, int linesize2); \ \ -static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) { \ +static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, \ + int srcSliceH, uint8_t *const dst[], \ + const int dstStride[]) { \ const int16_t yuv2rgb_table[] = { YUV_TO_RGB_TABLE }; \ \ return ff_##ifmt##_to_##ofmt##_neon(c->srcW, srcSliceH, \ @@ -100,9 +102,10 @@ int ff_##ifmt##_to_##ofmt##_neon(int w, int h, int y_offset, \ int y_coeff); \ \ -static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) { \ +static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, \ + int srcSliceH, uint8_t *const dst[], \ + const int dstStride[]) { \ const int16_t yuv2rgb_table[] = { YUV_TO_RGB_TABLE }; \ \ return ff_##ifmt##_to_##ofmt##_neon(c->srcW, srcSliceH, \ @@ -124,9 +127,10 @@ int ff_##ifmt##_to_##ofmt##_neon(int w, int h, uint8_t *dst1, int linesize1, \ uint8_t *dst2, int linesize2); \ \ -static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) { \ +static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, \ + int srcSliceH, uint8_t *const dst[], \ + const int dstStride[]) { \ const int16_t yuv2rgb_table[] = { YUV_TO_RGB_TABLE }; \ \ return ff_##ifmt##_to_##ofmt##_neon(c->srcW, srcSliceH, \ @@ -144,9 +148,9 @@ void ff_nv24_to_yuv420p_chroma_neon(uint8_t *dst1, int dstStride1, const uint8_t *src, int srcStride, int w, int h); -static int nv24_to_yuv420p_neon_wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int nv24_to_yuv420p_neon_wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + const uint8_t *dst[], const int dstStride[]) { uint8_t *dst1 = dst[1] + dstStride[1] * srcSliceY / 2; uint8_t *dst2 = dst[2] + dstStride[2] * srcSliceY / 2; diff --git a/libswscale/alphablend.c b/libswscale/alphablend.c index b5967c889b..8993a5bcd0 100644 --- a/libswscale/alphablend.c +++ b/libswscale/alphablend.c @@ -20,9 +20,9 @@ #include "swscale_internal.h" -int ff_sws_alphablendaway(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +int ff_sws_alphablendaway(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(c->srcFormat); int nb_components = desc->nb_components; diff --git a/libswscale/arm/swscale_unscaled.c b/libswscale/arm/swscale_unscaled.c index 910610b86e..10216aaa4c 100644 --- a/libswscale/arm/swscale_unscaled.c +++ b/libswscale/arm/swscale_unscaled.c @@ -34,9 +34,9 @@ extern void rgbx_to_nv12_neon_16(const uint8_t *src, uint8_t *y, uint8_t *chroma int y_stride, int c_stride, int src_stride, int32_t coeff_tbl[9]); -static int rgbx_to_nv12_neon_32_wrapper(SwsContext *context, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) { +static int rgbx_to_nv12_neon_32_wrapper(SwsContext *context, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { rgbx_to_nv12_neon_32(src[0] + srcSliceY * srcStride[0], dst[0] + srcSliceY * dstStride[0], @@ -48,9 +48,9 @@ static int rgbx_to_nv12_neon_32_wrapper(SwsContext *context, const uint8_t *src[ return 0; } -static int rgbx_to_nv12_neon_16_wrapper(SwsContext *context, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) { +static int rgbx_to_nv12_neon_16_wrapper(SwsContext *context, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], int dstStride[]) { rgbx_to_nv12_neon_16(src[0] + srcSliceY * srcStride[0], dst[0] + srcSliceY * dstStride[0], @@ -78,9 +78,10 @@ int ff_##ifmt##_to_##ofmt##_neon(int w, int h, int y_offset, \ int y_coeff); \ \ -static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) { \ +static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, \ + int srcSliceH, uint8_t *const dst[], \ + const int dstStride[]) { \ const int16_t yuv2rgb_table[] = { YUV_TO_RGB_TABLE }; \ \ ff_##ifmt##_to_##ofmt##_neon(c->srcW, srcSliceH, \ @@ -113,9 +114,10 @@ int ff_##ifmt##_to_##ofmt##_neon(int w, int h, int y_offset, \ int y_coeff); \ \ -static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) { \ +static int ifmt##_to_##ofmt##_neon_wrapper(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, \ + int srcSliceH, uint8_t *const dst[], \ + const int dstStride[]) { \ const int16_t yuv2rgb_table[] = { YUV_TO_RGB_TABLE }; \ \ ff_##ifmt##_to_##ofmt##_neon(c->srcW, srcSliceH, \ diff --git a/libswscale/bayer_template.c b/libswscale/bayer_template.c index 46b5a4984d..14bbe93935 100644 --- a/libswscale/bayer_template.c +++ b/libswscale/bayer_template.c @@ -253,7 +253,7 @@ static void BAYER_RENAME(rgb48_interpolate)(const uint8_t *src, int src_stride, } } -static void BAYER_RENAME(yv12_copy)(const uint8_t *src, int src_stride, uint8_t *dstY, uint8_t *dstU, uint8_t *dstV, int luma_stride, int width, int32_t *rgb2yuv) +static void BAYER_RENAME(yv12_copy)(const uint8_t *src, int src_stride, uint8_t *dstY, uint8_t *dstU, uint8_t *dstV, int luma_stride, int width, const int32_t *rgb2yuv) { uint8_t dst[12]; const int dst_stride = 6; @@ -268,7 +268,7 @@ static void BAYER_RENAME(yv12_copy)(const uint8_t *src, int src_stride, uint8_t } } -static void BAYER_RENAME(yv12_interpolate)(const uint8_t *src, int src_stride, uint8_t *dstY, uint8_t *dstU, uint8_t *dstV, int luma_stride, int width, int32_t *rgb2yuv) +static void BAYER_RENAME(yv12_interpolate)(const uint8_t *src, int src_stride, uint8_t *dstY, uint8_t *dstU, uint8_t *dstV, int luma_stride, int width, const int32_t *rgb2yuv) { uint8_t dst[12]; const int dst_stride = 6; diff --git a/libswscale/loongarch/yuv2rgb_lasx.c b/libswscale/loongarch/yuv2rgb_lasx.c index 0ce553005a..8bf6a7955a 100644 --- a/libswscale/loongarch/yuv2rgb_lasx.c +++ b/libswscale/loongarch/yuv2rgb_lasx.c @@ -160,9 +160,9 @@ } #define YUV2RGBFUNC(func_name, dst_type, alpha) \ - int func_name(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) \ + int func_name(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, int srcSliceH, \ + uint8_t *const dst[], const int dstStride[]) \ { \ int x, y, h_size, vshift, res; \ __m256i m_y1, m_y2, m_u, m_v; \ @@ -188,9 +188,9 @@ for(x = 0; x < h_size; x++) { \ #define YUV2RGBFUNC32(func_name, dst_type, alpha) \ - int func_name(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) \ + int func_name(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, int srcSliceH, \ + uint8_t *const dst[], const int dstStride[]) \ { \ int x, y, h_size, vshift, res; \ __m256i m_y1, m_y2, m_u, m_v; \ diff --git a/libswscale/loongarch/yuv2rgb_lsx.c b/libswscale/loongarch/yuv2rgb_lsx.c index 11cd2f79d9..31f22a764f 100644 --- a/libswscale/loongarch/yuv2rgb_lsx.c +++ b/libswscale/loongarch/yuv2rgb_lsx.c @@ -113,9 +113,9 @@ } #define YUV2RGBFUNC(func_name, dst_type, alpha) \ - int func_name(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) \ + int func_name(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, int srcSliceH, \ + uint8_t *const dst[], const int dstStride[]) \ { \ int x, y, h_size, vshift, res; \ __m128i m_y1, m_y2, m_u, m_v; \ @@ -142,9 +142,9 @@ for(x = 0; x < h_size; x++) { \ #define YUV2RGBFUNC32(func_name, dst_type, alpha) \ - int func_name(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) \ + int func_name(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, int srcSliceH, \ + uint8_t *const dst[], const int dstStride[]) \ { \ int x, y, h_size, vshift, res; \ __m128i m_y1, m_y2, m_u, m_v; \ diff --git a/libswscale/ppc/yuv2rgb_altivec.c b/libswscale/ppc/yuv2rgb_altivec.c index 5e1033a973..3ba6461dfb 100644 --- a/libswscale/ppc/yuv2rgb_altivec.c +++ b/libswscale/ppc/yuv2rgb_altivec.c @@ -295,9 +295,9 @@ static inline vector unsigned char vec_xl(signed long long offset, const ubyte * #endif /* !HAVE_VSX */ #define DEFCSP420_CVT(name, out_pixels) \ -static int altivec_ ## name(SwsContext *c, const unsigned char **in, \ - int *instrides, int srcSliceY, int srcSliceH, \ - unsigned char **oplanes, int *outstrides) \ +static int altivec_ ## name(SwsContext *c, const unsigned char *const *in, \ + const int *instrides, int srcSliceY, int srcSliceH, \ + unsigned char *const *oplanes, const int *outstrides) \ { \ int w = c->srcW; \ int h = srcSliceH; \ @@ -471,9 +471,9 @@ static const vector unsigned char /* * this is so I can play live CCIR raw video */ -static int altivec_uyvy_rgb32(SwsContext *c, const unsigned char **in, - int *instrides, int srcSliceY, int srcSliceH, - unsigned char **oplanes, int *outstrides) +static int altivec_uyvy_rgb32(SwsContext *c, const unsigned char *const *in, + const int *instrides, int srcSliceY, int srcSliceH, + unsigned char *const *oplanes, const int *outstrides) { int w = c->srcW; int h = srcSliceH; diff --git a/libswscale/rgb2rgb.c b/libswscale/rgb2rgb.c index e98fdac8ea..2750a29cea 100644 --- a/libswscale/rgb2rgb.c +++ b/libswscale/rgb2rgb.c @@ -82,7 +82,7 @@ void (*ff_rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride, - int32_t *rgb2yuv); + const int32_t *rgb2yuv); void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, int srcStride, int dstStride); void (*interleaveBytes)(const uint8_t *src1, const uint8_t *src2, uint8_t *dst, diff --git a/libswscale/rgb2rgb.h b/libswscale/rgb2rgb.h index e3b0883901..e4af7c7b6e 100644 --- a/libswscale/rgb2rgb.h +++ b/libswscale/rgb2rgb.h @@ -78,7 +78,7 @@ void rgb12to15(const uint8_t *src, uint8_t *dst, int src_size); void ff_rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, - int chromStride, int srcStride, int32_t *rgb2yuv); + int chromStride, int srcStride, const int32_t *rgb2yuv); /** * Height should be a multiple of 2 and width should be a multiple of 16. @@ -125,7 +125,7 @@ extern void (*yuv422ptouyvy)(const uint8_t *ysrc, const uint8_t *usrc, const uin extern void (*ff_rgb24toyv12)(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, int chromStride, int srcStride, - int32_t *rgb2yuv); + const int32_t *rgb2yuv); extern void (*planar2x)(const uint8_t *src, uint8_t *dst, int width, int height, int srcStride, int dstStride); diff --git a/libswscale/rgb2rgb_template.c b/libswscale/rgb2rgb_template.c index 32d90d44fe..197450169a 100644 --- a/libswscale/rgb2rgb_template.c +++ b/libswscale/rgb2rgb_template.c @@ -645,7 +645,7 @@ static inline void uyvytoyv12_c(const uint8_t *src, uint8_t *ydst, */ void ff_rgb24toyv12_c(const uint8_t *src, uint8_t *ydst, uint8_t *udst, uint8_t *vdst, int width, int height, int lumStride, - int chromStride, int srcStride, int32_t *rgb2yuv) + int chromStride, int srcStride, const int32_t *rgb2yuv) { int32_t ry = rgb2yuv[RY_IDX], gy = rgb2yuv[GY_IDX], by = rgb2yuv[BY_IDX]; int32_t ru = rgb2yuv[RU_IDX], gu = rgb2yuv[GU_IDX], bu = rgb2yuv[BU_IDX]; diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 07b58bfd0e..7b7dfafac1 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -96,9 +96,9 @@ typedef struct RangeList { int ff_range_add(RangeList *r, unsigned int start, unsigned int len); -typedef int (*SwsFunc)(struct SwsContext *context, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]); +typedef int (*SwsFunc)(struct SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]); /** * Write one line of horizontally scaled data to planar output @@ -1005,9 +1005,9 @@ void ff_hcscale_fast_mmxext(SwsContext *c, int16_t *dst1, int16_t *dst2, int dstWidth, const uint8_t *src1, const uint8_t *src2, int srcW, int xInc); -int ff_sws_alphablendaway(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]); +int ff_sws_alphablendaway(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]); void ff_copyPlane(const uint8_t *src, int srcStride, int srcSliceY, int srcSliceH, int width, diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c index dc1d5f3593..edb51a8250 100644 --- a/libswscale/swscale_unscaled.c +++ b/libswscale/swscale_unscaled.c @@ -139,10 +139,10 @@ void ff_copyPlane(const uint8_t *src, int srcStride, } } -static int planarToNv12Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, - int srcSliceH, uint8_t *dstParam[], - int dstStride[]) +static int planarToNv12Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, + int srcSliceH, uint8_t *const dstParam[], + const int dstStride[]) { uint8_t *dst = dstParam[1] + dstStride[1] * srcSliceY / 2; @@ -159,10 +159,10 @@ static int planarToNv12Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int nv12ToPlanarWrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, - int srcSliceH, uint8_t *dstParam[], - int dstStride[]) +static int nv12ToPlanarWrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, + int srcSliceH, uint8_t *const dstParam[], + const int dstStride[]) { uint8_t *dst1 = dstParam[1] + dstStride[1] * srcSliceY / 2; uint8_t *dst2 = dstParam[2] + dstStride[2] * srcSliceY / 2; @@ -180,10 +180,10 @@ static int nv12ToPlanarWrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int planarToNv24Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, - int srcSliceH, uint8_t *dstParam[], - int dstStride[]) +static int planarToNv24Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, + int srcSliceH, uint8_t *const dstParam[], + const int dstStride[]) { uint8_t *dst = dstParam[1] + dstStride[1] * srcSliceY; @@ -200,10 +200,10 @@ static int planarToNv24Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int nv24ToPlanarWrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, - int srcSliceH, uint8_t *dstParam[], - int dstStride[]) +static int nv24ToPlanarWrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, + int srcSliceH, uint8_t *const dstParam[], + const int dstStride[]) { uint8_t *dst1 = dstParam[1] + dstStride[1] * srcSliceY; uint8_t *dst2 = dstParam[2] + dstStride[2] * srcSliceY; @@ -243,9 +243,9 @@ static void nv24_to_yuv420p_chroma(uint8_t *dst1, int dstStride1, } } -static int nv24ToYuv420Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dstParam[], int dstStride[]) +static int nv24ToYuv420Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dstParam[], const int dstStride[]) { uint8_t *dst1 = dstParam[1] + dstStride[1] * srcSliceY / 2; uint8_t *dst2 = dstParam[2] + dstStride[2] * srcSliceY / 2; @@ -263,10 +263,10 @@ static int nv24ToYuv420Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int planarToP01xWrapper(SwsContext *c, const uint8_t *src8[], - int srcStride[], int srcSliceY, - int srcSliceH, uint8_t *dstParam8[], - int dstStride[]) +static int planarToP01xWrapper(SwsContext *c, const uint8_t *const src8[], + const int srcStride[], int srcSliceY, + int srcSliceH, uint8_t *const dstParam8[], + const int dstStride[]) { const AVPixFmtDescriptor *src_format = av_pix_fmt_desc_get(c->srcFormat); const AVPixFmtDescriptor *dst_format = av_pix_fmt_desc_get(c->dstFormat); @@ -323,11 +323,12 @@ static int planarToP01xWrapper(SwsContext *c, const uint8_t *src8[], #define output_pixel(p, v) (*p) = (v) #endif -static int planar8ToP01xleWrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, - int srcSliceH, uint8_t *dstParam8[], - int dstStride[]) +static int planar8ToP01xleWrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, + int srcSliceH, uint8_t *const dstParam8[], + const int dstStride[]) { + const uint8_t *src0 = src[0], *src1 = src[1], *src2 = src[2]; uint16_t *dstY = (uint16_t*)(dstParam8[0] + dstStride[0] * srcSliceY); uint16_t *dstUV = (uint16_t*)(dstParam8[1] + dstStride[1] * srcSliceY / 2); int x, y, t; @@ -336,26 +337,26 @@ static int planar8ToP01xleWrapper(SwsContext *c, const uint8_t *src[], for (y = 0; y < srcSliceH; y++) { uint16_t *tdstY = dstY; - const uint8_t *tsrc0 = src[0]; + const uint8_t *tsrc0 = src0; for (x = c->srcW; x > 0; x--) { t = *tsrc0++; output_pixel(tdstY++, t | (t << 8)); } - src[0] += srcStride[0]; + src0 += srcStride[0]; dstY += dstStride[0] / 2; if (!(y & 1)) { uint16_t *tdstUV = dstUV; - const uint8_t *tsrc1 = src[1]; - const uint8_t *tsrc2 = src[2]; + const uint8_t *tsrc1 = src1; + const uint8_t *tsrc2 = src2; for (x = c->srcW / 2; x > 0; x--) { t = *tsrc1++; output_pixel(tdstUV++, t | (t << 8)); t = *tsrc2++; output_pixel(tdstUV++, t | (t << 8)); } - src[1] += srcStride[1]; - src[2] += srcStride[2]; + src1 += srcStride[1]; + src2 += srcStride[2]; dstUV += dstStride[1] / 2; } } @@ -365,9 +366,9 @@ static int planar8ToP01xleWrapper(SwsContext *c, const uint8_t *src[], #undef output_pixel -static int planarToYuy2Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dstParam[], int dstStride[]) +static int planarToYuy2Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dstParam[], const int dstStride[]) { uint8_t *dst = dstParam[0] + dstStride[0] * srcSliceY; @@ -377,9 +378,9 @@ static int planarToYuy2Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int planarToUyvyWrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dstParam[], int dstStride[]) +static int planarToUyvyWrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dstParam[], const int dstStride[]) { uint8_t *dst = dstParam[0] + dstStride[0] * srcSliceY; @@ -389,9 +390,9 @@ static int planarToUyvyWrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int yuv422pToYuy2Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dstParam[], int dstStride[]) +static int yuv422pToYuy2Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dstParam[], const int dstStride[]) { uint8_t *dst = dstParam[0] + dstStride[0] * srcSliceY; @@ -401,9 +402,9 @@ static int yuv422pToYuy2Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int yuv422pToUyvyWrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dstParam[], int dstStride[]) +static int yuv422pToUyvyWrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dstParam[], const int dstStride[]) { uint8_t *dst = dstParam[0] + dstStride[0] * srcSliceY; @@ -413,9 +414,9 @@ static int yuv422pToUyvyWrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int yuyvToYuv420Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dstParam[], int dstStride[]) +static int yuyvToYuv420Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dstParam[], const int dstStride[]) { uint8_t *ydst = dstParam[0] + dstStride[0] * srcSliceY; uint8_t *udst = dstParam[1] + dstStride[1] * srcSliceY / 2; @@ -430,9 +431,9 @@ static int yuyvToYuv420Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int yuyvToYuv422Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dstParam[], int dstStride[]) +static int yuyvToYuv422Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dstParam[], const int dstStride[]) { uint8_t *ydst = dstParam[0] + dstStride[0] * srcSliceY; uint8_t *udst = dstParam[1] + dstStride[1] * srcSliceY; @@ -444,9 +445,9 @@ static int yuyvToYuv422Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int uyvyToYuv420Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dstParam[], int dstStride[]) +static int uyvyToYuv420Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dstParam[], const int dstStride[]) { uint8_t *ydst = dstParam[0] + dstStride[0] * srcSliceY; uint8_t *udst = dstParam[1] + dstStride[1] * srcSliceY / 2; @@ -461,9 +462,9 @@ static int uyvyToYuv420Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int uyvyToYuv422Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dstParam[], int dstStride[]) +static int uyvyToYuv422Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dstParam[], const int dstStride[]) { uint8_t *ydst = dstParam[0] + dstStride[0] * srcSliceY; uint8_t *udst = dstParam[1] + dstStride[1] * srcSliceY; @@ -506,9 +507,9 @@ static void gray8aToPacked24(const uint8_t *src, uint8_t *dst, int num_pixels, } } -static int bswap_16bpc(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int bswap_16bpc(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { int i, j, p; @@ -533,9 +534,9 @@ static int bswap_16bpc(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int bswap_32bpc(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int bswap_32bpc(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { int i, j, p; @@ -561,9 +562,9 @@ static int bswap_32bpc(SwsContext *c, const uint8_t *src[], } -static int palToRgbWrapper(SwsContext *c, const uint8_t *src[], int srcStride[], - int srcSliceY, int srcSliceH, uint8_t *dst[], - int dstStride[]) +static int palToRgbWrapper(SwsContext *c, const uint8_t *const src[], const int srcStride[], + int srcSliceY, int srcSliceH, uint8_t *const dst[], + const int dstStride[]) { const enum AVPixelFormat srcFormat = c->srcFormat; const enum AVPixelFormat dstFormat = c->dstFormat; @@ -608,7 +609,7 @@ static int palToRgbWrapper(SwsContext *c, const uint8_t *src[], int srcStride[], } static void packed16togbra16(const uint8_t *src, int srcStride, - uint16_t *dst[], int dstStride[], int srcSliceH, + uint16_t *dst[], const int dstStride[], int srcSliceH, int src_alpha, int swap, int shift, int width) { int x, h, i; @@ -741,9 +742,9 @@ static void packed16togbra16(const uint8_t *src, int srcStride, } } -static int Rgb16ToPlanarRgb16Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int Rgb16ToPlanarRgb16Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { uint16_t *dst2013[] = { (uint16_t *)dst[2], (uint16_t *)dst[0], (uint16_t *)dst[1], (uint16_t *)dst[3] }; uint16_t *dst1023[] = { (uint16_t *)dst[1], (uint16_t *)dst[0], (uint16_t *)dst[2], (uint16_t *)dst[3] }; @@ -801,7 +802,7 @@ static int Rgb16ToPlanarRgb16Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static void gbr16ptopacked16(const uint16_t *src[], int srcStride[], +static void gbr16ptopacked16(const uint16_t *src[], const int srcStride[], uint8_t *dst, int dstStride, int srcSliceH, int alpha, int swap, int bpp, int width) { @@ -920,9 +921,9 @@ static void gbr16ptopacked16(const uint16_t *src[], int srcStride[], } } -static int planarRgb16ToRgb16Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int planarRgb16ToRgb16Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { const uint16_t *src102[] = { (uint16_t *)src[1], (uint16_t *)src[0], (uint16_t *)src[2], (uint16_t *)src[3] }; const uint16_t *src201[] = { (uint16_t *)src[2], (uint16_t *)src[0], (uint16_t *)src[1], (uint16_t *)src[3] }; @@ -980,7 +981,7 @@ static int planarRgb16ToRgb16Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static void gbr24ptopacked24(const uint8_t *src[], int srcStride[], +static void gbr24ptopacked24(const uint8_t *src[], const int srcStride[], uint8_t *dst, int dstStride, int srcSliceH, int width) { @@ -998,7 +999,7 @@ static void gbr24ptopacked24(const uint8_t *src[], int srcStride[], } } -static void gbr24ptopacked32(const uint8_t *src[], int srcStride[], +static void gbr24ptopacked32(const uint8_t *src[], const int srcStride[], uint8_t *dst, int dstStride, int srcSliceH, int alpha_first, int width) { @@ -1027,7 +1028,7 @@ static void gbr24ptopacked32(const uint8_t *src[], int srcStride[], } } -static void gbraptopacked32(const uint8_t *src[], int srcStride[], +static void gbraptopacked32(const uint8_t *src[], const int srcStride[], uint8_t *dst, int dstStride, int srcSliceH, int alpha_first, int width) { @@ -1056,9 +1057,9 @@ static void gbraptopacked32(const uint8_t *src[], int srcStride[], } } -static int planarRgbaToRgbWrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int planarRgbaToRgbWrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { int alpha_first = 0; const uint8_t *src102[] = { src[1], src[0], src[2], src[3] }; @@ -1112,9 +1113,9 @@ static int planarRgbaToRgbWrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { int alpha_first = 0; const uint8_t *src102[] = { src[1], src[0], src[2] }; @@ -1169,9 +1170,9 @@ static int planarRgbToRgbWrapper(SwsContext *c, const uint8_t *src[], } static int planarRgbToplanarRgbWrapper(SwsContext *c, - const uint8_t *src[], int srcStride[], + const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) + uint8_t *const dst[], const int dstStride[]) { ff_copyPlane(src[0], srcStride[0], srcSliceY, srcSliceH, c->srcW, dst[0], dstStride[0]); @@ -1186,7 +1187,7 @@ static int planarRgbToplanarRgbWrapper(SwsContext *c, } static void packedtogbr24p(const uint8_t *src, int srcStride, - uint8_t *dst[], int dstStride[], int srcSliceH, + uint8_t *const dst[], const int dstStride[], int srcSliceH, int alpha_first, int inc_size, int width) { uint8_t *dest[3]; @@ -1214,9 +1215,9 @@ static void packedtogbr24p(const uint8_t *src, int srcStride, } } -static int rgbToPlanarRgbWrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int rgbToPlanarRgbWrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { int alpha_first = 0; int stride102[] = { dstStride[1], dstStride[0], dstStride[2] }; @@ -1319,8 +1320,9 @@ static int rgbToPlanarRgbWrapper(SwsContext *c, const uint8_t *src[], #define BAYER_RENAME(x) bayer_rggb16be_to_##x #include "bayer_template.c" -static int bayer_to_rgb24_wrapper(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]) +static int bayer_to_rgb24_wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { uint8_t *dstPtr= dst[0] + srcSliceY * dstStride[0]; const uint8_t *srcPtr= src[0]; @@ -1368,8 +1370,9 @@ static int bayer_to_rgb24_wrapper(SwsContext *c, const uint8_t* src[], int srcSt return srcSliceH; } -static int bayer_to_rgb48_wrapper(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]) +static int bayer_to_rgb48_wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { uint8_t *dstPtr= dst[0] + srcSliceY * dstStride[0]; const uint8_t *srcPtr= src[0]; @@ -1417,16 +1420,17 @@ static int bayer_to_rgb48_wrapper(SwsContext *c, const uint8_t* src[], int srcSt return srcSliceH; } -static int bayer_to_yv12_wrapper(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]) +static int bayer_to_yv12_wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { const uint8_t *srcPtr= src[0]; uint8_t *dstY= dst[0] + srcSliceY * dstStride[0]; uint8_t *dstU= dst[1] + srcSliceY * dstStride[1] / 2; uint8_t *dstV= dst[2] + srcSliceY * dstStride[2] / 2; int i; - void (*copy) (const uint8_t *src, int src_stride, uint8_t *dstY, uint8_t *dstU, uint8_t *dstV, int luma_stride, int width, int32_t *rgb2yuv); - void (*interpolate)(const uint8_t *src, int src_stride, uint8_t *dstY, uint8_t *dstU, uint8_t *dstV, int luma_stride, int width, int32_t *rgb2yuv); + void (*copy) (const uint8_t *src, int src_stride, uint8_t *dstY, uint8_t *dstU, uint8_t *dstV, int luma_stride, int width, const int32_t *rgb2yuv); + void (*interpolate)(const uint8_t *src, int src_stride, uint8_t *dstY, uint8_t *dstU, uint8_t *dstV, int luma_stride, int width, const int32_t *rgb2yuv); switch(c->srcFormat) { #define CASE(pixfmt, prefix) \ @@ -1618,9 +1622,9 @@ static rgbConvFn findRgbConvFn(SwsContext *c) } /* {RGB,BGR}{15,16,24,32,32_1} -> {RGB,BGR}{15,16,24,32} */ -static int rgbToRgbWrapper(SwsContext *c, const uint8_t *src[], int srcStride[], - int srcSliceY, int srcSliceH, uint8_t *dst[], - int dstStride[]) +static int rgbToRgbWrapper(SwsContext *c, const uint8_t *const src[], const int srcStride[], + int srcSliceY, int srcSliceH, uint8_t *const dst[], + const int dstStride[]) { const enum AVPixelFormat srcFormat = c->srcFormat; @@ -1679,9 +1683,9 @@ static int rgbToRgbWrapper(SwsContext *c, const uint8_t *src[], int srcStride[], return srcSliceH; } -static int bgr24ToYv12Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int bgr24ToYv12Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { ff_rgb24toyv12( src[0], @@ -1696,9 +1700,9 @@ static int bgr24ToYv12Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int yvu9ToYv12Wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int yvu9ToYv12Wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { ff_copyPlane(src[0], srcStride[0], srcSliceY, srcSliceH, c->srcW, dst[0], dstStride[0]); @@ -1712,9 +1716,9 @@ static int yvu9ToYv12Wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int uint_y_to_float_y_wrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, - int srcSliceH, uint8_t *dst[], int dstStride[]) +static int uint_y_to_float_y_wrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, + int srcSliceH, uint8_t *const dst[], const int dstStride[]) { int y, x; ptrdiff_t dstStrideFloat = dstStride[0] >> 2; @@ -1732,9 +1736,11 @@ static int uint_y_to_float_y_wrapper(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static int float_y_to_uint_y_wrapper(SwsContext *c, const uint8_t* src[], - int srcStride[], int srcSliceY, - int srcSliceH, uint8_t* dst[], int dstStride[]) +static int float_y_to_uint_y_wrapper(SwsContext *c, + const uint8_t *const src[], + const int srcStride[], int srcSliceY, + int srcSliceH, uint8_t *const dst[], + const int dstStride[]) { int y, x; ptrdiff_t srcStrideFloat = srcStride[0] >> 2; @@ -1753,9 +1759,9 @@ static int float_y_to_uint_y_wrapper(SwsContext *c, const uint8_t* src[], } /* unscaled copy like stuff (assumes nearly identical formats) */ -static int packedCopyWrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int packedCopyWrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { if (dstStride[0] == srcStride[0] && srcStride[0] > 0) memcpy(dst[0] + dstStride[0] * srcSliceY, src[0], srcSliceH * dstStride[0]); @@ -1840,9 +1846,9 @@ static int packedCopyWrapper(SwsContext *c, const uint8_t *src[], }\ } -static int planarCopyWrapper(SwsContext *c, const uint8_t *src[], - int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) +static int planarCopyWrapper(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, + uint8_t *const dst[], const int dstStride[]) { const AVPixFmtDescriptor *desc_src = av_pix_fmt_desc_get(c->srcFormat); const AVPixFmtDescriptor *desc_dst = av_pix_fmt_desc_get(c->dstFormat); diff --git a/libswscale/x86/yuv2rgb.c b/libswscale/x86/yuv2rgb.c index 2a4505fa90..3ee13304fd 100644 --- a/libswscale/x86/yuv2rgb.c +++ b/libswscale/x86/yuv2rgb.c @@ -86,10 +86,10 @@ extern void ff_yuv_420_gbrp24_ssse3(x86_reg index, uint8_t *image, uint8_t *dst_ const uint8_t *py_2index); #endif -static inline int yuv420_rgb15_ssse3(SwsContext *c, const uint8_t *src[], - int srcStride[], +static inline int yuv420_rgb15_ssse3(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) + uint8_t *const dst[], const int dstStride[]) { int y, h_size, vshift; @@ -104,10 +104,10 @@ static inline int yuv420_rgb15_ssse3(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static inline int yuv420_rgb16_ssse3(SwsContext *c, const uint8_t *src[], - int srcStride[], +static inline int yuv420_rgb16_ssse3(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) + uint8_t *const dst[], const int dstStride[]) { int y, h_size, vshift; @@ -122,10 +122,10 @@ static inline int yuv420_rgb16_ssse3(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static inline int yuv420_rgb32_ssse3(SwsContext *c, const uint8_t *src[], - int srcStride[], +static inline int yuv420_rgb32_ssse3(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) + uint8_t *const dst[], const int dstStride[]) { int y, h_size, vshift; @@ -136,10 +136,10 @@ static inline int yuv420_rgb32_ssse3(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static inline int yuv420_bgr32_ssse3(SwsContext *c, const uint8_t *src[], - int srcStride[], +static inline int yuv420_bgr32_ssse3(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) + uint8_t *const dst[], const int dstStride[]) { int y, h_size, vshift; @@ -150,10 +150,10 @@ static inline int yuv420_bgr32_ssse3(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static inline int yuva420_rgb32_ssse3(SwsContext *c, const uint8_t *src[], - int srcStride[], +static inline int yuva420_rgb32_ssse3(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) + uint8_t *const dst[], const int dstStride[]) { int y, h_size, vshift; YUV2RGB_LOOP(4) @@ -164,10 +164,10 @@ static inline int yuva420_rgb32_ssse3(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static inline int yuva420_bgr32_ssse3(SwsContext *c, const uint8_t *src[], - int srcStride[], +static inline int yuva420_bgr32_ssse3(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) + uint8_t *const dst[], const int dstStride[]) { int y, h_size, vshift; @@ -179,10 +179,10 @@ static inline int yuva420_bgr32_ssse3(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static inline int yuv420_rgb24_ssse3(SwsContext *c, const uint8_t *src[], - int srcStride[], +static inline int yuv420_rgb24_ssse3(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) + uint8_t *const dst[], const int dstStride[]) { int y, h_size, vshift; @@ -193,10 +193,10 @@ static inline int yuv420_rgb24_ssse3(SwsContext *c, const uint8_t *src[], return srcSliceH; } -static inline int yuv420_bgr24_ssse3(SwsContext *c, const uint8_t *src[], - int srcStride[], +static inline int yuv420_bgr24_ssse3(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) + uint8_t *const dst[], const int dstStride[]) { int y, h_size, vshift; @@ -208,10 +208,10 @@ static inline int yuv420_bgr24_ssse3(SwsContext *c, const uint8_t *src[], } #if ARCH_X86_64 -static inline int yuv420_gbrp_ssse3(SwsContext *c, const uint8_t *src[], - int srcStride[], +static inline int yuv420_gbrp_ssse3(SwsContext *c, const uint8_t *const src[], + const int srcStride[], int srcSliceY, int srcSliceH, - uint8_t *dst[], int dstStride[]) + uint8_t *const dst[], const int dstStride[]) { int y, h_size, vshift; diff --git a/libswscale/yuv2rgb.c b/libswscale/yuv2rgb.c index 52fe2093e7..941971d1ab 100644 --- a/libswscale/yuv2rgb.c +++ b/libswscale/yuv2rgb.c @@ -135,9 +135,9 @@ const int *sws_getCoefficients(int colorspace) dst2_##l[2 * i + 1] = r[Y]; #define YUV2RGBFUNC(func_name, dst_type, alpha, yuv422, nb_dst_planes) \ - static int func_name(SwsContext *c, const uint8_t *src[], \ - int srcStride[], int srcSliceY, int srcSliceH, \ - uint8_t *dst[], int dstStride[]) \ + static int func_name(SwsContext *c, const uint8_t *const src[], \ + const int srcStride[], int srcSliceY, int srcSliceH, \ + uint8_t *const dst[], const int dstStride[]) \ { \ int y; \ \ From patchwork Sat Oct 5 19:24:01 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52069 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1133586vqg; Sat, 5 Oct 2024 12:34:14 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUwQcJxj99tuAzQ2BGPln74ooz85iyMhIvxXLxePMU9EAL5FSTPs8gsS905otqten3Jnc9I1stHbl1jrICdQ8QA@gmail.com X-Google-Smtp-Source: AGHT+IF/Wv1bS61RMwDsxbjorEA9AnxxjQF6Y51y4MYIx0qymd8zkZVhlWG7kUCh+DCwCcA0QGFs X-Received: by 2002:a05:6402:2747:b0:5c8:8d5e:14e1 with SMTP id 4fb4d7f45d1cf-5c8d2e47123mr7756851a12.15.1728156853782; Sat, 05 Oct 2024 12:34:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728156853; cv=none; d=google.com; s=arc-20240605; b=LaiIQ3eZ6Iewzez7eX53JITLjHalE7P/H8WtFmsDY4zFs2QXacMqlqXQ0OSUvM8O4u g1dgEJE1K+FJIMEWNJLDG73xGpFwlOQUMJTD72oJ81td+GsjtWumO5MRAFLUp+hQxlnx 3psERurBGyck1YPbSuUmCaOkFkOkJyH//A9x8MvU1eEYyI/lJysSGsB2iBMN395vcD+7 WJLNu7FiraZBr6o1wQgdGLKQsSyQQ1ymQnSDpMJRIGE6YCFfgreQWDZrjTTzRXtIs8z5 khR73QqMY2JRXwpjv5mWgI0LchsAGvRs3Ft+vhJi2SPzJeVe7J9r0lfYrQdfTaJjYmC5 cUAg== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=BzXiu3JqXphZmWol+U9nE1QzFo/rUnt8b2JvU3NZ8XA=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=kOsvB+AaJFgtisnmazzQW/wV0A2II0IMag6kgx8lq2Frj4AmJeVapR+Ro9rCiiCbip QLaPTQA9kh8lVpWPumRootEabh4SgfAtPWH7kRrl13mLJV5o7NcZvWoDE6sJsVSGSirh ymqqv1x/59/AuObdqrDmWMC2e6+j9A+APELvnXVNKEiUtJ+0i5aUCs3kb2ml21ZA45Vy DiwoA68TRem3O9iUx7JANlzEeY8omqSRZioJG+5On/PTr2f5fA57amr8NY59jhLQxrbB MQptR6JF1BZ6yMUqhil7zxmH3aJQwz80/IdKP2bFopTwJ//xXMv0DyBKqQhrxyRVzqhL DweQ==; 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=t4hUTJxJ; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id a640c23a62f3a-a994422c0e0si58809266b.509.2024.10.05.12.34.13; Sat, 05 Oct 2024 12:34: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=@haasn.xyz header.s=mail header.b=t4hUTJxJ; 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 023E768DB09; Sat, 5 Oct 2024 22:24:29 +0300 (EEST) 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 557C168DA4C for ; Sat, 5 Oct 2024 22:24:18 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156254; bh=DYq41WGnHSPE+DktUepVL0f3oZuTojGLVGUmOMikKP8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=t4hUTJxJVgL0M+/uZoz7/OnNcqBLrLCrjDMdK0Cu2JFYwcmeQLgOOlYY1zdDykb06 5FbKLKPvsLokRF/it9+iymC9DIvU76pWkfsNXIyTs//JIQpwy/5RaLJLXWkM/Zhghx w6bWNEnyzMN1JlD4oM9boe7eGOCzVBFi9UbyFCFY= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id AB9FB440BF; Sat, 5 Oct 2024 21:24:14 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:24:01 +0200 Message-ID: <20241005192403.2450339-10-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/12] swscale/internal: forward typedef SwsContext 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: VhPkpZ1IyL1E From: Niklas Haas Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/swscale_internal.h | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index 7b7dfafac1..0e9d37b5b0 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -64,7 +64,7 @@ #define RETCODE_USE_CASCADE -12345 -struct SwsContext; +typedef struct SwsContext SwsContext; typedef enum SwsDither { SWS_DITHER_AUTO = 0, @@ -96,7 +96,7 @@ typedef struct RangeList { int ff_range_add(RangeList *r, unsigned int start, unsigned int len); -typedef int (*SwsFunc)(struct SwsContext *c, const uint8_t *const src[], +typedef int (*SwsFunc)(SwsContext *c, const uint8_t *const src[], const int srcStride[], int srcSliceY, int srcSliceH, uint8_t *const dst[], const int dstStride[]); @@ -296,7 +296,7 @@ struct SwsSlice; struct SwsFilterDescriptor; /* This struct should be aligned on at least a 32-byte boundary. */ -typedef struct SwsContext { +struct SwsContext { /** * info on struct for av_log */ @@ -680,7 +680,7 @@ typedef struct SwsContext { atomic_int data_unaligned_warned; Half2FloatTables *h2f_tables; -} SwsContext; +}; //FIXME check init (where 0) SwsFunc ff_yuv2rgb_get_func_ptr(SwsContext *c); From patchwork Sat Oct 5 19:24:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 52067 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:938f:0:b0:48e:c0f8:d0de with SMTP id z15csp1133576vqg; Sat, 5 Oct 2024 12:34:11 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVJyycyQMI3wYQ8NX70HzFkzTWW1Wus8r4Jtgz/MJ8R1t8chOyUVDKvB2iQSoaEYUrJM3NQDlzqB3vCBRji/uwi@gmail.com X-Google-Smtp-Source: AGHT+IGjxFVmvBmJMsGIu+bJcJyUJhpvEe5OxKp24tf2zVQXDH+SEeq5oTpUX3B19pGSHmXDx40C X-Received: by 2002:a05:6402:51ca:b0:5c7:229a:b49d with SMTP id 4fb4d7f45d1cf-5c8d2e9e66cmr4644443a12.30.1728156851057; Sat, 05 Oct 2024 12:34:11 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1728156851; cv=none; d=google.com; s=arc-20240605; b=D9XO5w30qPCePasWIaSVj2Z/1DeVB3QO52qdXy7wuLUkClajsMcHpDYNsCO2oTMzbQ u1aeFm5Uc0mSJUatxpN4l8GEhmP5d1wzrJkDPe/Yt708SZd8Xx8JnXVMJJPYOHAevE5R Ppg6E44o+5bSy358d32hQ1fkn4xX/Ot2hd5jECcKtH0rVLzat1PGUeDyJcyqvpl1AU3r 7P9KuWL7xhwgYscoPalngFsrwwPxyDPtckP+kM5DVooVs14iVp4yzawkIq3T3g2jgs4c MB+sT/bLaknrXpVT8+JnVG7La546sbpoQVoG0PAZqK930ZO9VWpyPErD4XmYVqgpFWU0 M32Q== 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:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=7AcqU5uUr5/je9OukTFPUWPb63w13pD6v6Bb7Rl2w2s=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=UWE7utJc0003FQdg0y2U5tthTmQUaS+vCP90pFWQv64SqygRjAXDLBxiO6TkxiUzZ6 gEOX1oKHA749lRzLM0txLozaTZJsp6c4BF3PKqCDz7PUI80Wx1G6O+wk0ahNUAaiBzg7 4YvjYnqLqeUUJKeYE45lDF9YlQvRO6KPwQUCnE5kqN22FUakYpdBJ7DD0DCySTv/ToJn 98T1/3YkkB2B0biX4jFoo9QAOUlNg14cq3xvc8ozSX6piPhOvYIuU6QOFXdi3skmrUjH hzIvD4Fxl7mmhxFQhxJnQwPzmQSmuwfMQ342vs/p+e7lQLERvZxwwyWO+VCtn4bdbSwR ufbA==; 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=NPcLV7x2; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5c8e05fc5f2si1685959a12.514.2024.10.05.12.34.10; Sat, 05 Oct 2024 12:34:11 -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=@haasn.xyz header.s=mail header.b=NPcLV7x2; 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 6927768DB34; Sat, 5 Oct 2024 22:24:31 +0300 (EEST) 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 8092668DA38 for ; Sat, 5 Oct 2024 22:24:18 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1728156255; bh=En4IANJaHrzL4p+VWnOyr6u6fZT9FYxfIXdfFbQDckU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NPcLV7x2WGBmwto6CxcV7j6VRg5EMFoBZMWL2PAZ4Q4AYr154bnVsmwl236zROCS/ F+D7UIgU4QPlZqYvyoVLhdZsEdergFqiPar/0y3AmzjdqdnkN3TeZRp0XC8sTDZAOq oKCEwlv1nKUyvURe9TQvucALTmZL7zdnRfDSdmFI= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 3807E44644; Sat, 5 Oct 2024 21:24:15 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Sat, 5 Oct 2024 21:24:03 +0200 Message-ID: <20241005192403.2450339-12-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.1 In-Reply-To: <20241005192403.2450339-1-ffmpeg@haasn.xyz> References: <20241005192403.2450339-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/12] swscale/input: parametrize ff_sws_init_input_funcs() pointers 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: zXas88MSu2Kc From: Niklas Haas Following the precedent set by ff_sws_init_output_funcs(). Sponsored-by: Sovereign Tech Fund Signed-off-by: Niklas Haas --- libswscale/input.c | 388 +++++++++++++++++----------------- libswscale/swscale.c | 3 +- libswscale/swscale_internal.h | 8 +- 3 files changed, 206 insertions(+), 193 deletions(-) diff --git a/libswscale/input.c b/libswscale/input.c index d171394bb2..2a7a6c91dd 100644 --- a/libswscale/input.c +++ b/libswscale/input.c @@ -1285,86 +1285,92 @@ static void rgbaf16##endian_name##ToA_c(uint8_t *_dst, const uint8_t *_src, cons rgbaf16_funcs_endian(le, 0) rgbaf16_funcs_endian(be, 1) -av_cold void ff_sws_init_input_funcs(SwsContext *c) +av_cold void ff_sws_init_input_funcs(SwsContext *c, + planar1_YV12_fn *lumToYV12, + planar1_YV12_fn *alpToYV12, + planar2_YV12_fn *chrToYV12, + planarX_YV12_fn *readLumPlanar, + planarX_YV12_fn *readAlpPlanar, + planarX2_YV12_fn *readChrPlanar) { enum AVPixelFormat srcFormat = c->srcFormat; - c->chrToYV12 = NULL; + *chrToYV12 = NULL; switch (srcFormat) { case AV_PIX_FMT_YUYV422: - c->chrToYV12 = yuy2ToUV_c; + *chrToYV12 = yuy2ToUV_c; break; case AV_PIX_FMT_YVYU422: - c->chrToYV12 = yvy2ToUV_c; + *chrToYV12 = yvy2ToUV_c; break; case AV_PIX_FMT_UYVY422: - c->chrToYV12 = uyvyToUV_c; + *chrToYV12 = uyvyToUV_c; break; case AV_PIX_FMT_NV12: case AV_PIX_FMT_NV16: case AV_PIX_FMT_NV24: - c->chrToYV12 = nv12ToUV_c; + *chrToYV12 = nv12ToUV_c; break; case AV_PIX_FMT_NV21: case AV_PIX_FMT_NV42: - c->chrToYV12 = nv21ToUV_c; + *chrToYV12 = nv21ToUV_c; break; case AV_PIX_FMT_RGB8: case AV_PIX_FMT_BGR8: case AV_PIX_FMT_PAL8: case AV_PIX_FMT_BGR4_BYTE: case AV_PIX_FMT_RGB4_BYTE: - c->chrToYV12 = palToUV_c; + *chrToYV12 = palToUV_c; break; case AV_PIX_FMT_GBRP9LE: - c->readChrPlanar = planar_rgb9le_to_uv; + *readChrPlanar = planar_rgb9le_to_uv; break; case AV_PIX_FMT_GBRAP10LE: case AV_PIX_FMT_GBRP10LE: - c->readChrPlanar = planar_rgb10le_to_uv; + *readChrPlanar = planar_rgb10le_to_uv; break; case AV_PIX_FMT_GBRAP12LE: case AV_PIX_FMT_GBRP12LE: - c->readChrPlanar = planar_rgb12le_to_uv; + *readChrPlanar = planar_rgb12le_to_uv; break; case AV_PIX_FMT_GBRAP14LE: case AV_PIX_FMT_GBRP14LE: - c->readChrPlanar = planar_rgb14le_to_uv; + *readChrPlanar = planar_rgb14le_to_uv; break; case AV_PIX_FMT_GBRAP16LE: case AV_PIX_FMT_GBRP16LE: - c->readChrPlanar = planar_rgb16le_to_uv; + *readChrPlanar = planar_rgb16le_to_uv; break; case AV_PIX_FMT_GBRAPF32LE: case AV_PIX_FMT_GBRPF32LE: - c->readChrPlanar = planar_rgbf32le_to_uv; + *readChrPlanar = planar_rgbf32le_to_uv; break; case AV_PIX_FMT_GBRP9BE: - c->readChrPlanar = planar_rgb9be_to_uv; + *readChrPlanar = planar_rgb9be_to_uv; break; case AV_PIX_FMT_GBRAP10BE: case AV_PIX_FMT_GBRP10BE: - c->readChrPlanar = planar_rgb10be_to_uv; + *readChrPlanar = planar_rgb10be_to_uv; break; case AV_PIX_FMT_GBRAP12BE: case AV_PIX_FMT_GBRP12BE: - c->readChrPlanar = planar_rgb12be_to_uv; + *readChrPlanar = planar_rgb12be_to_uv; break; case AV_PIX_FMT_GBRAP14BE: case AV_PIX_FMT_GBRP14BE: - c->readChrPlanar = planar_rgb14be_to_uv; + *readChrPlanar = planar_rgb14be_to_uv; break; case AV_PIX_FMT_GBRAP16BE: case AV_PIX_FMT_GBRP16BE: - c->readChrPlanar = planar_rgb16be_to_uv; + *readChrPlanar = planar_rgb16be_to_uv; break; case AV_PIX_FMT_GBRAPF32BE: case AV_PIX_FMT_GBRPF32BE: - c->readChrPlanar = planar_rgbf32be_to_uv; + *readChrPlanar = planar_rgbf32be_to_uv; break; case AV_PIX_FMT_GBRAP: case AV_PIX_FMT_GBRP: - c->readChrPlanar = planar_rgb_to_uv; + *readChrPlanar = planar_rgb_to_uv; break; #if HAVE_BIGENDIAN case AV_PIX_FMT_YUV420P9LE: @@ -1396,7 +1402,7 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) case AV_PIX_FMT_YUVA420P16LE: case AV_PIX_FMT_YUVA422P16LE: case AV_PIX_FMT_YUVA444P16LE: - c->chrToYV12 = bswap16UV_c; + *chrToYV12 = bswap16UV_c; break; #else case AV_PIX_FMT_YUV420P9BE: @@ -1428,314 +1434,314 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) case AV_PIX_FMT_YUVA420P16BE: case AV_PIX_FMT_YUVA422P16BE: case AV_PIX_FMT_YUVA444P16BE: - c->chrToYV12 = bswap16UV_c; + *chrToYV12 = bswap16UV_c; break; #endif case AV_PIX_FMT_VUYA: case AV_PIX_FMT_VUYX: - c->chrToYV12 = read_vuyx_UV_c; + *chrToYV12 = read_vuyx_UV_c; break; case AV_PIX_FMT_XV30LE: - c->chrToYV12 = read_xv30le_UV_c; + *chrToYV12 = read_xv30le_UV_c; break; case AV_PIX_FMT_AYUV64LE: - c->chrToYV12 = read_ayuv64le_UV_c; + *chrToYV12 = read_ayuv64le_UV_c; break; case AV_PIX_FMT_XV36LE: - c->chrToYV12 = read_xv36le_UV_c; + *chrToYV12 = read_xv36le_UV_c; break; case AV_PIX_FMT_P010LE: case AV_PIX_FMT_P210LE: case AV_PIX_FMT_P410LE: - c->chrToYV12 = p010LEToUV_c; + *chrToYV12 = p010LEToUV_c; break; case AV_PIX_FMT_P010BE: case AV_PIX_FMT_P210BE: case AV_PIX_FMT_P410BE: - c->chrToYV12 = p010BEToUV_c; + *chrToYV12 = p010BEToUV_c; break; case AV_PIX_FMT_P012LE: case AV_PIX_FMT_P212LE: case AV_PIX_FMT_P412LE: - c->chrToYV12 = p012LEToUV_c; + *chrToYV12 = p012LEToUV_c; break; case AV_PIX_FMT_P012BE: case AV_PIX_FMT_P212BE: case AV_PIX_FMT_P412BE: - c->chrToYV12 = p012BEToUV_c; + *chrToYV12 = p012BEToUV_c; break; case AV_PIX_FMT_P016LE: case AV_PIX_FMT_P216LE: case AV_PIX_FMT_P416LE: - c->chrToYV12 = p016LEToUV_c; + *chrToYV12 = p016LEToUV_c; break; case AV_PIX_FMT_P016BE: case AV_PIX_FMT_P216BE: case AV_PIX_FMT_P416BE: - c->chrToYV12 = p016BEToUV_c; + *chrToYV12 = p016BEToUV_c; break; case AV_PIX_FMT_Y210LE: - c->chrToYV12 = y210le_UV_c; + *chrToYV12 = y210le_UV_c; break; case AV_PIX_FMT_Y212LE: - c->chrToYV12 = y212le_UV_c; + *chrToYV12 = y212le_UV_c; break; } if (c->chrSrcHSubSample) { switch (srcFormat) { case AV_PIX_FMT_RGBA64BE: - c->chrToYV12 = rgb64BEToUV_half_c; + *chrToYV12 = rgb64BEToUV_half_c; break; case AV_PIX_FMT_RGBA64LE: - c->chrToYV12 = rgb64LEToUV_half_c; + *chrToYV12 = rgb64LEToUV_half_c; break; case AV_PIX_FMT_BGRA64BE: - c->chrToYV12 = bgr64BEToUV_half_c; + *chrToYV12 = bgr64BEToUV_half_c; break; case AV_PIX_FMT_BGRA64LE: - c->chrToYV12 = bgr64LEToUV_half_c; + *chrToYV12 = bgr64LEToUV_half_c; break; case AV_PIX_FMT_RGB48BE: - c->chrToYV12 = rgb48BEToUV_half_c; + *chrToYV12 = rgb48BEToUV_half_c; break; case AV_PIX_FMT_RGB48LE: - c->chrToYV12 = rgb48LEToUV_half_c; + *chrToYV12 = rgb48LEToUV_half_c; break; case AV_PIX_FMT_BGR48BE: - c->chrToYV12 = bgr48BEToUV_half_c; + *chrToYV12 = bgr48BEToUV_half_c; break; case AV_PIX_FMT_BGR48LE: - c->chrToYV12 = bgr48LEToUV_half_c; + *chrToYV12 = bgr48LEToUV_half_c; break; case AV_PIX_FMT_RGB32: - c->chrToYV12 = bgr32ToUV_half_c; + *chrToYV12 = bgr32ToUV_half_c; break; case AV_PIX_FMT_RGB32_1: - c->chrToYV12 = bgr321ToUV_half_c; + *chrToYV12 = bgr321ToUV_half_c; break; case AV_PIX_FMT_BGR24: - c->chrToYV12 = bgr24ToUV_half_c; + *chrToYV12 = bgr24ToUV_half_c; break; case AV_PIX_FMT_BGR565LE: - c->chrToYV12 = bgr16leToUV_half_c; + *chrToYV12 = bgr16leToUV_half_c; break; case AV_PIX_FMT_BGR565BE: - c->chrToYV12 = bgr16beToUV_half_c; + *chrToYV12 = bgr16beToUV_half_c; break; case AV_PIX_FMT_BGR555LE: - c->chrToYV12 = bgr15leToUV_half_c; + *chrToYV12 = bgr15leToUV_half_c; break; case AV_PIX_FMT_BGR555BE: - c->chrToYV12 = bgr15beToUV_half_c; + *chrToYV12 = bgr15beToUV_half_c; break; case AV_PIX_FMT_GBRAP: case AV_PIX_FMT_GBRP: - c->chrToYV12 = gbr24pToUV_half_c; + *chrToYV12 = gbr24pToUV_half_c; break; case AV_PIX_FMT_BGR444LE: - c->chrToYV12 = bgr12leToUV_half_c; + *chrToYV12 = bgr12leToUV_half_c; break; case AV_PIX_FMT_BGR444BE: - c->chrToYV12 = bgr12beToUV_half_c; + *chrToYV12 = bgr12beToUV_half_c; break; case AV_PIX_FMT_BGR32: - c->chrToYV12 = rgb32ToUV_half_c; + *chrToYV12 = rgb32ToUV_half_c; break; case AV_PIX_FMT_BGR32_1: - c->chrToYV12 = rgb321ToUV_half_c; + *chrToYV12 = rgb321ToUV_half_c; break; case AV_PIX_FMT_RGB24: - c->chrToYV12 = rgb24ToUV_half_c; + *chrToYV12 = rgb24ToUV_half_c; break; case AV_PIX_FMT_RGB565LE: - c->chrToYV12 = rgb16leToUV_half_c; + *chrToYV12 = rgb16leToUV_half_c; break; case AV_PIX_FMT_RGB565BE: - c->chrToYV12 = rgb16beToUV_half_c; + *chrToYV12 = rgb16beToUV_half_c; break; case AV_PIX_FMT_RGB555LE: - c->chrToYV12 = rgb15leToUV_half_c; + *chrToYV12 = rgb15leToUV_half_c; break; case AV_PIX_FMT_RGB555BE: - c->chrToYV12 = rgb15beToUV_half_c; + *chrToYV12 = rgb15beToUV_half_c; break; case AV_PIX_FMT_RGB444LE: - c->chrToYV12 = rgb12leToUV_half_c; + *chrToYV12 = rgb12leToUV_half_c; break; case AV_PIX_FMT_RGB444BE: - c->chrToYV12 = rgb12beToUV_half_c; + *chrToYV12 = rgb12beToUV_half_c; break; case AV_PIX_FMT_X2RGB10LE: - c->chrToYV12 = rgb30leToUV_half_c; + *chrToYV12 = rgb30leToUV_half_c; break; case AV_PIX_FMT_X2BGR10LE: - c->chrToYV12 = bgr30leToUV_half_c; + *chrToYV12 = bgr30leToUV_half_c; break; case AV_PIX_FMT_RGBAF16BE: - c->chrToYV12 = rgbaf16beToUV_half_c; + *chrToYV12 = rgbaf16beToUV_half_c; break; case AV_PIX_FMT_RGBAF16LE: - c->chrToYV12 = rgbaf16leToUV_half_c; + *chrToYV12 = rgbaf16leToUV_half_c; break; } } else { switch (srcFormat) { case AV_PIX_FMT_RGBA64BE: - c->chrToYV12 = rgb64BEToUV_c; + *chrToYV12 = rgb64BEToUV_c; break; case AV_PIX_FMT_RGBA64LE: - c->chrToYV12 = rgb64LEToUV_c; + *chrToYV12 = rgb64LEToUV_c; break; case AV_PIX_FMT_BGRA64BE: - c->chrToYV12 = bgr64BEToUV_c; + *chrToYV12 = bgr64BEToUV_c; break; case AV_PIX_FMT_BGRA64LE: - c->chrToYV12 = bgr64LEToUV_c; + *chrToYV12 = bgr64LEToUV_c; break; case AV_PIX_FMT_RGB48BE: - c->chrToYV12 = rgb48BEToUV_c; + *chrToYV12 = rgb48BEToUV_c; break; case AV_PIX_FMT_RGB48LE: - c->chrToYV12 = rgb48LEToUV_c; + *chrToYV12 = rgb48LEToUV_c; break; case AV_PIX_FMT_BGR48BE: - c->chrToYV12 = bgr48BEToUV_c; + *chrToYV12 = bgr48BEToUV_c; break; case AV_PIX_FMT_BGR48LE: - c->chrToYV12 = bgr48LEToUV_c; + *chrToYV12 = bgr48LEToUV_c; break; case AV_PIX_FMT_RGB32: - c->chrToYV12 = bgr32ToUV_c; + *chrToYV12 = bgr32ToUV_c; break; case AV_PIX_FMT_RGB32_1: - c->chrToYV12 = bgr321ToUV_c; + *chrToYV12 = bgr321ToUV_c; break; case AV_PIX_FMT_BGR24: - c->chrToYV12 = bgr24ToUV_c; + *chrToYV12 = bgr24ToUV_c; break; case AV_PIX_FMT_BGR565LE: - c->chrToYV12 = bgr16leToUV_c; + *chrToYV12 = bgr16leToUV_c; break; case AV_PIX_FMT_BGR565BE: - c->chrToYV12 = bgr16beToUV_c; + *chrToYV12 = bgr16beToUV_c; break; case AV_PIX_FMT_BGR555LE: - c->chrToYV12 = bgr15leToUV_c; + *chrToYV12 = bgr15leToUV_c; break; case AV_PIX_FMT_BGR555BE: - c->chrToYV12 = bgr15beToUV_c; + *chrToYV12 = bgr15beToUV_c; break; case AV_PIX_FMT_BGR444LE: - c->chrToYV12 = bgr12leToUV_c; + *chrToYV12 = bgr12leToUV_c; break; case AV_PIX_FMT_BGR444BE: - c->chrToYV12 = bgr12beToUV_c; + *chrToYV12 = bgr12beToUV_c; break; case AV_PIX_FMT_BGR32: - c->chrToYV12 = rgb32ToUV_c; + *chrToYV12 = rgb32ToUV_c; break; case AV_PIX_FMT_BGR32_1: - c->chrToYV12 = rgb321ToUV_c; + *chrToYV12 = rgb321ToUV_c; break; case AV_PIX_FMT_RGB24: - c->chrToYV12 = rgb24ToUV_c; + *chrToYV12 = rgb24ToUV_c; break; case AV_PIX_FMT_RGB565LE: - c->chrToYV12 = rgb16leToUV_c; + *chrToYV12 = rgb16leToUV_c; break; case AV_PIX_FMT_RGB565BE: - c->chrToYV12 = rgb16beToUV_c; + *chrToYV12 = rgb16beToUV_c; break; case AV_PIX_FMT_RGB555LE: - c->chrToYV12 = rgb15leToUV_c; + *chrToYV12 = rgb15leToUV_c; break; case AV_PIX_FMT_RGB555BE: - c->chrToYV12 = rgb15beToUV_c; + *chrToYV12 = rgb15beToUV_c; break; case AV_PIX_FMT_RGB444LE: - c->chrToYV12 = rgb12leToUV_c; + *chrToYV12 = rgb12leToUV_c; break; case AV_PIX_FMT_RGB444BE: - c->chrToYV12 = rgb12beToUV_c; + *chrToYV12 = rgb12beToUV_c; break; case AV_PIX_FMT_X2RGB10LE: - c->chrToYV12 = rgb30leToUV_c; + *chrToYV12 = rgb30leToUV_c; break; case AV_PIX_FMT_X2BGR10LE: - c->chrToYV12 = bgr30leToUV_c; + *chrToYV12 = bgr30leToUV_c; break; case AV_PIX_FMT_RGBAF16BE: - c->chrToYV12 = rgbaf16beToUV_c; + *chrToYV12 = rgbaf16beToUV_c; break; case AV_PIX_FMT_RGBAF16LE: - c->chrToYV12 = rgbaf16leToUV_c; + *chrToYV12 = rgbaf16leToUV_c; break; } } - c->lumToYV12 = NULL; - c->alpToYV12 = NULL; + *lumToYV12 = NULL; + *alpToYV12 = NULL; switch (srcFormat) { case AV_PIX_FMT_GBRP9LE: - c->readLumPlanar = planar_rgb9le_to_y; + *readLumPlanar = planar_rgb9le_to_y; break; case AV_PIX_FMT_GBRAP10LE: - c->readAlpPlanar = planar_rgb10le_to_a; + *readAlpPlanar = planar_rgb10le_to_a; case AV_PIX_FMT_GBRP10LE: - c->readLumPlanar = planar_rgb10le_to_y; + *readLumPlanar = planar_rgb10le_to_y; break; case AV_PIX_FMT_GBRAP12LE: - c->readAlpPlanar = planar_rgb12le_to_a; + *readAlpPlanar = planar_rgb12le_to_a; case AV_PIX_FMT_GBRP12LE: - c->readLumPlanar = planar_rgb12le_to_y; + *readLumPlanar = planar_rgb12le_to_y; break; case AV_PIX_FMT_GBRAP14LE: - c->readAlpPlanar = planar_rgb14le_to_a; + *readAlpPlanar = planar_rgb14le_to_a; case AV_PIX_FMT_GBRP14LE: - c->readLumPlanar = planar_rgb14le_to_y; + *readLumPlanar = planar_rgb14le_to_y; break; case AV_PIX_FMT_GBRAP16LE: - c->readAlpPlanar = planar_rgb16le_to_a; + *readAlpPlanar = planar_rgb16le_to_a; case AV_PIX_FMT_GBRP16LE: - c->readLumPlanar = planar_rgb16le_to_y; + *readLumPlanar = planar_rgb16le_to_y; break; case AV_PIX_FMT_GBRAPF32LE: - c->readAlpPlanar = planar_rgbf32le_to_a; + *readAlpPlanar = planar_rgbf32le_to_a; case AV_PIX_FMT_GBRPF32LE: - c->readLumPlanar = planar_rgbf32le_to_y; + *readLumPlanar = planar_rgbf32le_to_y; break; case AV_PIX_FMT_GBRP9BE: - c->readLumPlanar = planar_rgb9be_to_y; + *readLumPlanar = planar_rgb9be_to_y; break; case AV_PIX_FMT_GBRAP10BE: - c->readAlpPlanar = planar_rgb10be_to_a; + *readAlpPlanar = planar_rgb10be_to_a; case AV_PIX_FMT_GBRP10BE: - c->readLumPlanar = planar_rgb10be_to_y; + *readLumPlanar = planar_rgb10be_to_y; break; case AV_PIX_FMT_GBRAP12BE: - c->readAlpPlanar = planar_rgb12be_to_a; + *readAlpPlanar = planar_rgb12be_to_a; case AV_PIX_FMT_GBRP12BE: - c->readLumPlanar = planar_rgb12be_to_y; + *readLumPlanar = planar_rgb12be_to_y; break; case AV_PIX_FMT_GBRAP14BE: - c->readAlpPlanar = planar_rgb14be_to_a; + *readAlpPlanar = planar_rgb14be_to_a; case AV_PIX_FMT_GBRP14BE: - c->readLumPlanar = planar_rgb14be_to_y; + *readLumPlanar = planar_rgb14be_to_y; break; case AV_PIX_FMT_GBRAP16BE: - c->readAlpPlanar = planar_rgb16be_to_a; + *readAlpPlanar = planar_rgb16be_to_a; case AV_PIX_FMT_GBRP16BE: - c->readLumPlanar = planar_rgb16be_to_y; + *readLumPlanar = planar_rgb16be_to_y; break; case AV_PIX_FMT_GBRAPF32BE: - c->readAlpPlanar = planar_rgbf32be_to_a; + *readAlpPlanar = planar_rgbf32be_to_a; case AV_PIX_FMT_GBRPF32BE: - c->readLumPlanar = planar_rgbf32be_to_y; + *readLumPlanar = planar_rgbf32be_to_y; break; case AV_PIX_FMT_GBRAP: - c->readAlpPlanar = planar_rgb_to_a; + *readAlpPlanar = planar_rgb_to_a; case AV_PIX_FMT_GBRP: - c->readLumPlanar = planar_rgb_to_y; + *readLumPlanar = planar_rgb_to_y; break; #if HAVE_BIGENDIAN case AV_PIX_FMT_YUV420P9LE: @@ -1765,7 +1771,7 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) case AV_PIX_FMT_P016LE: case AV_PIX_FMT_P216LE: case AV_PIX_FMT_P416LE: - c->lumToYV12 = bswap16Y_c; + *lumToYV12 = bswap16Y_c; break; case AV_PIX_FMT_YUVA420P9LE: case AV_PIX_FMT_YUVA422P9LE: @@ -1778,8 +1784,8 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) case AV_PIX_FMT_YUVA420P16LE: case AV_PIX_FMT_YUVA422P16LE: case AV_PIX_FMT_YUVA444P16LE: - c->lumToYV12 = bswap16Y_c; - c->alpToYV12 = bswap16Y_c; + *lumToYV12 = bswap16Y_c; + *alpToYV12 = bswap16Y_c; break; #else case AV_PIX_FMT_YUV420P9BE: @@ -1809,7 +1815,7 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) case AV_PIX_FMT_P016BE: case AV_PIX_FMT_P216BE: case AV_PIX_FMT_P416BE: - c->lumToYV12 = bswap16Y_c; + *lumToYV12 = bswap16Y_c; break; case AV_PIX_FMT_YUVA420P9BE: case AV_PIX_FMT_YUVA422P9BE: @@ -1822,214 +1828,214 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) case AV_PIX_FMT_YUVA420P16BE: case AV_PIX_FMT_YUVA422P16BE: case AV_PIX_FMT_YUVA444P16BE: - c->lumToYV12 = bswap16Y_c; - c->alpToYV12 = bswap16Y_c; + *lumToYV12 = bswap16Y_c; + *alpToYV12 = bswap16Y_c; break; #endif case AV_PIX_FMT_YA16LE: - c->lumToYV12 = read_ya16le_gray_c; + *lumToYV12 = read_ya16le_gray_c; break; case AV_PIX_FMT_YA16BE: - c->lumToYV12 = read_ya16be_gray_c; + *lumToYV12 = read_ya16be_gray_c; break; case AV_PIX_FMT_VUYA: case AV_PIX_FMT_VUYX: - c->lumToYV12 = read_vuyx_Y_c; + *lumToYV12 = read_vuyx_Y_c; break; case AV_PIX_FMT_XV30LE: - c->lumToYV12 = read_xv30le_Y_c; + *lumToYV12 = read_xv30le_Y_c; break; case AV_PIX_FMT_AYUV64LE: - c->lumToYV12 = read_ayuv64le_Y_c; + *lumToYV12 = read_ayuv64le_Y_c; break; case AV_PIX_FMT_XV36LE: - c->lumToYV12 = read_xv36le_Y_c; + *lumToYV12 = read_xv36le_Y_c; break; case AV_PIX_FMT_YUYV422: case AV_PIX_FMT_YVYU422: case AV_PIX_FMT_YA8: - c->lumToYV12 = yuy2ToY_c; + *lumToYV12 = yuy2ToY_c; break; case AV_PIX_FMT_UYVY422: - c->lumToYV12 = uyvyToY_c; + *lumToYV12 = uyvyToY_c; break; case AV_PIX_FMT_BGR24: - c->lumToYV12 = bgr24ToY_c; + *lumToYV12 = bgr24ToY_c; break; case AV_PIX_FMT_BGR565LE: - c->lumToYV12 = bgr16leToY_c; + *lumToYV12 = bgr16leToY_c; break; case AV_PIX_FMT_BGR565BE: - c->lumToYV12 = bgr16beToY_c; + *lumToYV12 = bgr16beToY_c; break; case AV_PIX_FMT_BGR555LE: - c->lumToYV12 = bgr15leToY_c; + *lumToYV12 = bgr15leToY_c; break; case AV_PIX_FMT_BGR555BE: - c->lumToYV12 = bgr15beToY_c; + *lumToYV12 = bgr15beToY_c; break; case AV_PIX_FMT_BGR444LE: - c->lumToYV12 = bgr12leToY_c; + *lumToYV12 = bgr12leToY_c; break; case AV_PIX_FMT_BGR444BE: - c->lumToYV12 = bgr12beToY_c; + *lumToYV12 = bgr12beToY_c; break; case AV_PIX_FMT_RGB24: - c->lumToYV12 = rgb24ToY_c; + *lumToYV12 = rgb24ToY_c; break; case AV_PIX_FMT_RGB565LE: - c->lumToYV12 = rgb16leToY_c; + *lumToYV12 = rgb16leToY_c; break; case AV_PIX_FMT_RGB565BE: - c->lumToYV12 = rgb16beToY_c; + *lumToYV12 = rgb16beToY_c; break; case AV_PIX_FMT_RGB555LE: - c->lumToYV12 = rgb15leToY_c; + *lumToYV12 = rgb15leToY_c; break; case AV_PIX_FMT_RGB555BE: - c->lumToYV12 = rgb15beToY_c; + *lumToYV12 = rgb15beToY_c; break; case AV_PIX_FMT_RGB444LE: - c->lumToYV12 = rgb12leToY_c; + *lumToYV12 = rgb12leToY_c; break; case AV_PIX_FMT_RGB444BE: - c->lumToYV12 = rgb12beToY_c; + *lumToYV12 = rgb12beToY_c; break; case AV_PIX_FMT_RGB8: case AV_PIX_FMT_BGR8: case AV_PIX_FMT_PAL8: case AV_PIX_FMT_BGR4_BYTE: case AV_PIX_FMT_RGB4_BYTE: - c->lumToYV12 = palToY_c; + *lumToYV12 = palToY_c; break; case AV_PIX_FMT_MONOBLACK: - c->lumToYV12 = monoblack2Y_c; + *lumToYV12 = monoblack2Y_c; break; case AV_PIX_FMT_MONOWHITE: - c->lumToYV12 = monowhite2Y_c; + *lumToYV12 = monowhite2Y_c; break; case AV_PIX_FMT_RGB32: - c->lumToYV12 = bgr32ToY_c; + *lumToYV12 = bgr32ToY_c; break; case AV_PIX_FMT_RGB32_1: - c->lumToYV12 = bgr321ToY_c; + *lumToYV12 = bgr321ToY_c; break; case AV_PIX_FMT_BGR32: - c->lumToYV12 = rgb32ToY_c; + *lumToYV12 = rgb32ToY_c; break; case AV_PIX_FMT_BGR32_1: - c->lumToYV12 = rgb321ToY_c; + *lumToYV12 = rgb321ToY_c; break; case AV_PIX_FMT_RGB48BE: - c->lumToYV12 = rgb48BEToY_c; + *lumToYV12 = rgb48BEToY_c; break; case AV_PIX_FMT_RGB48LE: - c->lumToYV12 = rgb48LEToY_c; + *lumToYV12 = rgb48LEToY_c; break; case AV_PIX_FMT_BGR48BE: - c->lumToYV12 = bgr48BEToY_c; + *lumToYV12 = bgr48BEToY_c; break; case AV_PIX_FMT_BGR48LE: - c->lumToYV12 = bgr48LEToY_c; + *lumToYV12 = bgr48LEToY_c; break; case AV_PIX_FMT_RGBA64BE: - c->lumToYV12 = rgb64BEToY_c; + *lumToYV12 = rgb64BEToY_c; break; case AV_PIX_FMT_RGBA64LE: - c->lumToYV12 = rgb64LEToY_c; + *lumToYV12 = rgb64LEToY_c; break; case AV_PIX_FMT_BGRA64BE: - c->lumToYV12 = bgr64BEToY_c; + *lumToYV12 = bgr64BEToY_c; break; case AV_PIX_FMT_BGRA64LE: - c->lumToYV12 = bgr64LEToY_c; + *lumToYV12 = bgr64LEToY_c; break; case AV_PIX_FMT_P010LE: case AV_PIX_FMT_P210LE: case AV_PIX_FMT_P410LE: - c->lumToYV12 = p010LEToY_c; + *lumToYV12 = p010LEToY_c; break; case AV_PIX_FMT_P010BE: case AV_PIX_FMT_P210BE: case AV_PIX_FMT_P410BE: - c->lumToYV12 = p010BEToY_c; + *lumToYV12 = p010BEToY_c; break; case AV_PIX_FMT_P012LE: case AV_PIX_FMT_P212LE: case AV_PIX_FMT_P412LE: - c->lumToYV12 = p012LEToY_c; + *lumToYV12 = p012LEToY_c; break; case AV_PIX_FMT_P012BE: case AV_PIX_FMT_P212BE: case AV_PIX_FMT_P412BE: - c->lumToYV12 = p012BEToY_c; + *lumToYV12 = p012BEToY_c; break; case AV_PIX_FMT_GRAYF32LE: - c->lumToYV12 = grayf32leToY16_c; + *lumToYV12 = grayf32leToY16_c; break; case AV_PIX_FMT_GRAYF32BE: - c->lumToYV12 = grayf32beToY16_c; + *lumToYV12 = grayf32beToY16_c; break; case AV_PIX_FMT_Y210LE: - c->lumToYV12 = y210le_Y_c; + *lumToYV12 = y210le_Y_c; break; case AV_PIX_FMT_Y212LE: - c->lumToYV12 = y212le_Y_c; + *lumToYV12 = y212le_Y_c; break; case AV_PIX_FMT_X2RGB10LE: - c->lumToYV12 = rgb30leToY_c; + *lumToYV12 = rgb30leToY_c; break; case AV_PIX_FMT_X2BGR10LE: - c->lumToYV12 = bgr30leToY_c; + *lumToYV12 = bgr30leToY_c; break; case AV_PIX_FMT_RGBAF16BE: - c->lumToYV12 = rgbaf16beToY_c; + *lumToYV12 = rgbaf16beToY_c; break; case AV_PIX_FMT_RGBAF16LE: - c->lumToYV12 = rgbaf16leToY_c; + *lumToYV12 = rgbaf16leToY_c; break; } if (c->needAlpha) { if (is16BPS(srcFormat) || isNBPS(srcFormat)) { - if (HAVE_BIGENDIAN == !isBE(srcFormat) && !c->readAlpPlanar) - c->alpToYV12 = bswap16Y_c; + if (HAVE_BIGENDIAN == !isBE(srcFormat) && !*readAlpPlanar) + *alpToYV12 = bswap16Y_c; } switch (srcFormat) { case AV_PIX_FMT_BGRA64LE: - case AV_PIX_FMT_RGBA64LE: c->alpToYV12 = rgba64leToA_c; break; + case AV_PIX_FMT_RGBA64LE: *alpToYV12 = rgba64leToA_c; break; case AV_PIX_FMT_BGRA64BE: - case AV_PIX_FMT_RGBA64BE: c->alpToYV12 = rgba64beToA_c; break; + case AV_PIX_FMT_RGBA64BE: *alpToYV12 = rgba64beToA_c; break; case AV_PIX_FMT_BGRA: case AV_PIX_FMT_RGBA: - c->alpToYV12 = rgbaToA_c; + *alpToYV12 = rgbaToA_c; break; case AV_PIX_FMT_ABGR: case AV_PIX_FMT_ARGB: - c->alpToYV12 = abgrToA_c; + *alpToYV12 = abgrToA_c; break; case AV_PIX_FMT_RGBAF16BE: - c->alpToYV12 = rgbaf16beToA_c; + *alpToYV12 = rgbaf16beToA_c; break; case AV_PIX_FMT_RGBAF16LE: - c->alpToYV12 = rgbaf16leToA_c; + *alpToYV12 = rgbaf16leToA_c; break; case AV_PIX_FMT_YA8: - c->alpToYV12 = uyvyToY_c; + *alpToYV12 = uyvyToY_c; break; case AV_PIX_FMT_YA16LE: - c->alpToYV12 = read_ya16le_alpha_c; + *alpToYV12 = read_ya16le_alpha_c; break; case AV_PIX_FMT_YA16BE: - c->alpToYV12 = read_ya16be_alpha_c; + *alpToYV12 = read_ya16be_alpha_c; break; case AV_PIX_FMT_VUYA: - c->alpToYV12 = read_vuya_A_c; + *alpToYV12 = read_vuya_A_c; break; case AV_PIX_FMT_AYUV64LE: - c->alpToYV12 = read_ayuv64le_A_c; + *alpToYV12 = read_ayuv64le_A_c; break; case AV_PIX_FMT_PAL8 : - c->alpToYV12 = palToA_c; + *alpToYV12 = palToA_c; break; } } diff --git a/libswscale/swscale.c b/libswscale/swscale.c index fa7f220f0b..f4dcbc192e 100644 --- a/libswscale/swscale.c +++ b/libswscale/swscale.c @@ -563,7 +563,8 @@ static av_cold void sws_init_swscale(SwsContext *c) &c->yuv2nv12cX, &c->yuv2packed1, &c->yuv2packed2, &c->yuv2packedX, &c->yuv2anyX); - ff_sws_init_input_funcs(c); + ff_sws_init_input_funcs(c, &c->lumToYV12, &c->alpToYV12, &c->chrToYV12, + &c->readLumPlanar, &c->readAlpPlanar, &c->readChrPlanar); if (c->srcBpc == 8) { if (c->dstBpc <= 14) { diff --git a/libswscale/swscale_internal.h b/libswscale/swscale_internal.h index e87b073d57..6ba78bca39 100644 --- a/libswscale/swscale_internal.h +++ b/libswscale/swscale_internal.h @@ -988,7 +988,13 @@ void ff_get_unscaled_swscale_aarch64(SwsContext *c); void ff_sws_init_scale(SwsContext *c); -void ff_sws_init_input_funcs(SwsContext *c); +void ff_sws_init_input_funcs(SwsContext *c, + planar1_YV12_fn *lumToYV12, + planar1_YV12_fn *alpToYV12, + planar2_YV12_fn *chrToYV12, + planarX_YV12_fn *readLumPlanar, + planarX_YV12_fn *readAlpPlanar, + planarX2_YV12_fn *readChrPlanar); void ff_sws_init_output_funcs(SwsContext *c, yuv2planar1_fn *yuv2plane1, yuv2planarX_fn *yuv2planeX,