From patchwork Sun Aug 21 23:12:47 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ffmpeg@mstoeckl.com X-Patchwork-Id: 37379 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp999978pzh; Sun, 21 Aug 2022 16:13:17 -0700 (PDT) X-Google-Smtp-Source: AA6agR6SqNsTwgN2gNLi4DFM4DBBgbSYgJRQuFyT24YVb1FKuyp2UycAqjnjQGiCE2Qckg3zYPcK X-Received: by 2002:a05:6402:5252:b0:43e:14ec:46f with SMTP id t18-20020a056402525200b0043e14ec046fmr13884379edd.398.1661123597001; Sun, 21 Aug 2022 16:13:17 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661123596; cv=none; d=google.com; s=arc-20160816; b=ckAKGpbaiInVxvayj1VtRyiWu6Rq204CKLY91UKBypW/l7Vqh4Ex56+M0jZfTdPqrf AqDKMDUdK8fv4T6HjAy3Nh6EqiGb2qIeSDXRPYUcQmzDBqcksUXnd27EkK48bPDHB+R8 KDP1pOJrg41eE8vUnQBhg9XHjTeqtjfjrudni1BFqXuU9Z0hgFKPosvhmMO+N/lfMkyt ksXuPaK5YUYHcpu//SLQ9EBvjnA2CLZ6LJ1aKU9QMF6g/EQt3wgLzgCKeggD2ajdEB5m 1GrexYO4UfihKeTPL7L3EBTsZx07qzEyzIaKk6xnGAsUwTMo658B1wgGFRSdp05Dc+DR 43jg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to:from :delivered-to; bh=8LVUji546WOmH1J2RyqT7Qqgmu9xa03NBIzOe6qpDQU=; b=foKAyaKOQb4cH9lPqGaaNABj60qUmaLwL0X1l0JxYr+/gFJv5zUqI/OMcfxjCZSdq0 Se4DLAxoyGZH1uJWu1nnf6z42I2yWEgqbWY42U9VawoX0rRgJqWutZ8nSP3F+b2dAAwC y0tPdT91/o2ywthokYEOftxeYhDAuG1OVW9oqUd4iIXLuxmaJgrS6TDslNWT4Lrr/JLF gH3/YRqQr3nzHZYi8XgLi1YsFI1oDepHc+j/cgwskAm45rQ4fNZ/XSzFwHRmMNUdWUGL +zZQmqQiR7KKvNZOmw8uFR3BPwezYx9AmsI+tLX7ioyQeQ9p/FUJ5VUtR3AUdtuc3KYf +Qog== ARC-Authentication-Results: i=1; mx.google.com; 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 s23-20020a170906a19700b00736ce5254f9si7333567ejy.335.2022.08.21.16.13.05; Sun, 21 Aug 2022 16:13:16 -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; 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 A90DA68B98D; Mon, 22 Aug 2022 02:13:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mout-p-201.mailbox.org (mout-p-201.mailbox.org [80.241.56.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6295968B2C8 for ; Mon, 22 Aug 2022 02:12:55 +0300 (EEST) Received: from smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-201.mailbox.org (Postfix) with ESMTPS id 4M9rr60LTjz9sQr; Mon, 22 Aug 2022 01:12:54 +0200 (CEST) From: ffmpeg@mstoeckl.com To: ffmpeg-devel@ffmpeg.org Date: Sun, 21 Aug 2022 19:12:47 -0400 Message-Id: <20220821231248.34688-1-ffmpeg@mstoeckl.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] lavu/pix_fmt: add rgbx64 and bgrx64 pixel formats 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: Manuel Stoeckl Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: YcEyYrdrhLW+ From: Manuel Stoeckl These new formats are equivalent to rgba64 and bgra64, except that the contents of the alpha channel are ignored. These formats are equivalent to the Linux DRM formats XBGR16161616 and XRGB16161616; these are used by Wayland compositors to either provide high bit depth image data for a DRM plane, or receive such data from applications. Programs that make video recordings of the screen or individual windows on Wayland will encounter such formats; adding support for them in libavutil will simplify such programs' implementations. Signed-off-by: Manuel Stoeckl --- doc/APIchanges | 3 ++ libavutil/pixdesc.c | 48 ++++++++++++++++++++++++++++++++ libavutil/pixfmt.h | 7 +++++ libavutil/version.h | 4 +-- tests/ref/fate/imgutils | 4 +++ tests/ref/fate/sws-pixdesc-query | 22 +++++++++++++++ 6 files changed, 86 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index 2df65a521d..17aff90af7 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -14,6 +14,9 @@ libavutil: 2021-04-27 API changes, most recent first: +2022-08-xx - xxxxxxxxxx - lavu 57.34.100 - pixfmt.h + Add AV_PIX_FMT_RGBX64 and AV_PIX_FMT_BGRX64 pixel formats. + 2022-08-19 - 352799dca8 - lavc 59.42.102 - codec_id.h Deprecate AV_CODEC_ID_AYUV and ayuv decoder/encoder. The rawvideo codec and vuya pixel format combination will be used instead from now on. diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index f7558ff8b9..c0f0234cad 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -1156,6 +1156,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, }, + [AV_PIX_FMT_RGBX64BE] = { + .name = "rgbx64be", + .nb_components = 3, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 8, 0, 0, 16 }, /* R */ + { 0, 8, 2, 0, 16 }, /* G */ + { 0, 8, 4, 0, 16 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB, + }, + [AV_PIX_FMT_RGBX64LE] = { + .name = "rgbx64le", + .nb_components = 3, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 8, 0, 0, 16 }, /* R */ + { 0, 8, 2, 0, 16 }, /* G */ + { 0, 8, 4, 0, 16 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_RGB, + }, [AV_PIX_FMT_RGB565BE] = { .name = "rgb565be", .nb_components = 3, @@ -1278,6 +1302,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_ALPHA, }, + [AV_PIX_FMT_BGRX64BE] = { + .name = "bgrx64be", + .nb_components = 3, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 8, 4, 0, 16 }, /* R */ + { 0, 8, 2, 0, 16 }, /* G */ + { 0, 8, 0, 0, 16 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_RGB, + }, + [AV_PIX_FMT_BGRX64LE] = { + .name = "bgrx64le", + .nb_components = 3, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 8, 4, 0, 16 }, /* R */ + { 0, 8, 2, 0, 16 }, /* G */ + { 0, 8, 0, 0, 16 }, /* B */ + }, + .flags = AV_PIX_FMT_FLAG_RGB, + }, [AV_PIX_FMT_BGR565BE] = { .name = "bgr565be", .nb_components = 3, diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index 86c9bdefeb..2b8c2ffdd4 100644 --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@ -372,6 +372,11 @@ enum AVPixelFormat { AV_PIX_FMT_RGBAF16BE, ///< IEEE-754 half precision packed RGBA 16:16:16:16, 64bpp, RGBARGBA..., big-endian AV_PIX_FMT_RGBAF16LE, ///< IEEE-754 half precision packed RGBA 16:16:16:16, 64bpp, RGBARGBA..., little-endian + AV_PIX_FMT_RGBX64BE, ///< packed RGB 16:16:16, 64bpp, 16R, 16G, 16B, 16X, the 2-byte value for each R/G/B component is stored as big-endian + AV_PIX_FMT_RGBX64LE, ///< packed RGB 16:16:16, 64bpp, 16R, 16G, 16B, 16X, the 2-byte value for each R/G/B component is stored as little-endian + AV_PIX_FMT_BGRX64BE, ///< packed RGB 16:16:16, 64bpp, 16B, 16G, 16R, 16X, the 2-byte value for each R/G/B component is stored as big-endian + AV_PIX_FMT_BGRX64LE, ///< packed RGB 16:16:16, 64bpp, 16B, 16G, 16R, 16X, the 2-byte value for each R/G/B component is stored as little-endian + AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions }; @@ -399,11 +404,13 @@ enum AVPixelFormat { #define AV_PIX_FMT_RGB555 AV_PIX_FMT_NE(RGB555BE, RGB555LE) #define AV_PIX_FMT_RGB444 AV_PIX_FMT_NE(RGB444BE, RGB444LE) #define AV_PIX_FMT_RGBA64 AV_PIX_FMT_NE(RGBA64BE, RGBA64LE) +#define AV_PIX_FMT_RGBX64 AV_PIX_FMT_NE(RGBX64BE, RGBX64LE) #define AV_PIX_FMT_BGR48 AV_PIX_FMT_NE(BGR48BE, BGR48LE) #define AV_PIX_FMT_BGR565 AV_PIX_FMT_NE(BGR565BE, BGR565LE) #define AV_PIX_FMT_BGR555 AV_PIX_FMT_NE(BGR555BE, BGR555LE) #define AV_PIX_FMT_BGR444 AV_PIX_FMT_NE(BGR444BE, BGR444LE) #define AV_PIX_FMT_BGRA64 AV_PIX_FMT_NE(BGRA64BE, BGRA64LE) +#define AV_PIX_FMT_BGRX64 AV_PIX_FMT_NE(BGRX64BE, BGRX64LE) #define AV_PIX_FMT_YUV420P9 AV_PIX_FMT_NE(YUV420P9BE , YUV420P9LE) #define AV_PIX_FMT_YUV422P9 AV_PIX_FMT_NE(YUV422P9BE , YUV422P9LE) diff --git a/libavutil/version.h b/libavutil/version.h index 05661922b3..5d0df781cc 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,8 +79,8 @@ */ #define LIBAVUTIL_VERSION_MAJOR 57 -#define LIBAVUTIL_VERSION_MINOR 33 -#define LIBAVUTIL_VERSION_MICRO 101 +#define LIBAVUTIL_VERSION_MINOR 34 +#define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ LIBAVUTIL_VERSION_MINOR, \ diff --git a/tests/ref/fate/imgutils b/tests/ref/fate/imgutils index 01c9877de5..7661f2cdaa 100644 --- a/tests/ref/fate/imgutils +++ b/tests/ref/fate/imgutils @@ -249,3 +249,7 @@ p416le planes: 2, linesizes: 128 256 0 0, plane_sizes: 6144 12288 vuya planes: 1, linesizes: 256 0 0 0, plane_sizes: 12288 0 0 0, plane_offsets: 0 0 0, total_size: 12288 rgbaf16be planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576 rgbaf16le planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576 +rgbx64be planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576 +rgbx64le planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576 +bgrx64be planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576 +bgrx64le planes: 1, linesizes: 512 0 0 0, plane_sizes: 24576 0 0 0, plane_offsets: 0 0 0, total_size: 24576 diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query index f79d99e513..02cc1bf916 100644 --- a/tests/ref/fate/sws-pixdesc-query +++ b/tests/ref/fate/sws-pixdesc-query @@ -5,6 +5,8 @@ is16BPS: bgr48le bgra64be bgra64le + bgrx64be + bgrx64le gbrap16be gbrap16le gbrp16be @@ -23,6 +25,8 @@ is16BPS: rgba64le rgbaf16be rgbaf16le + rgbx64be + rgbx64le ya16be ya16le yuv420p16be @@ -131,6 +135,7 @@ isBE: bgr555be bgr565be bgra64be + bgrx64be gbrap10be gbrap12be gbrap16be @@ -160,6 +165,7 @@ isBE: rgb565be rgba64be rgbaf16be + rgbx64be x2bgr10be x2rgb10be xyz12be @@ -443,6 +449,8 @@ isRGB: bgr8 bgra64be bgra64le + bgrx64be + bgrx64le gbrap gbrap10be gbrap10le @@ -484,6 +492,8 @@ isRGB: rgba64le rgbaf16be rgbaf16le + rgbx64be + rgbx64le x2bgr10be x2bgr10le x2rgb10be @@ -593,6 +603,8 @@ AnyRGB: bgr8 bgra64be bgra64le + bgrx64be + bgrx64le gbrap gbrap10be gbrap10le @@ -636,6 +648,8 @@ AnyRGB: rgba64le rgbaf16be rgbaf16le + rgbx64be + rgbx64le x2bgr10be x2bgr10le x2rgb10be @@ -728,6 +742,8 @@ Packed: bgr8 bgra64be bgra64le + bgrx64be + bgrx64le monob monow pal8 @@ -750,6 +766,8 @@ Packed: rgba64le rgbaf16be rgbaf16le + rgbx64be + rgbx64le uyvy422 uyyvyy411 vuya @@ -912,6 +930,8 @@ PackedRGB: bgr8 bgra64be bgra64le + bgrx64be + bgrx64le rgb0 rgb24 rgb32 @@ -931,6 +951,8 @@ PackedRGB: rgba64le rgbaf16be rgbaf16le + rgbx64be + rgbx64le x2bgr10be x2bgr10le x2rgb10be From patchwork Sun Aug 21 23:12:48 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ffmpeg@mstoeckl.com X-Patchwork-Id: 37378 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp999976pzh; Sun, 21 Aug 2022 16:13:16 -0700 (PDT) X-Google-Smtp-Source: AA6agR6DacmascmlsraYQ7YOb3jlndE0Dvlx9TRCrRUPE/dxIcKaGGsmWaNJg70qq7MHQZh8U/YF X-Received: by 2002:a17:907:3e85:b0:73d:60cc:5d06 with SMTP id hs5-20020a1709073e8500b0073d60cc5d06mr6139431ejc.722.1661123596600; Sun, 21 Aug 2022 16:13:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1661123596; cv=none; d=google.com; s=arc-20160816; b=hzH660uDXwCO8smfWxiEXso/lE60R9Z7PxIydrhchgW5NkTwl0GphLAwsFrQQPXMZD VlI2kP2digBwofV5T9iqil9qf4nQ6Gv1MqRydoLklXNHQWQS0ZEwUEKlGGZV4zRlJSt4 uKZo7d7AtubJhZ7YLUZPVncMIqRH5sjjgUvFsdAMO1QYVrQt1+g5/ZnFEIiAfB0Nk07O JVHA8oR927PHfqAhe32ZXlsT6pg4jIPBL0ndgPXKiR1XKGX1m62I/9hO6/4TVCs5j+VJ 2Tqvtbje5nww+Y26taUtjVaEAI7qFcn6kVTEhOGLeO3vuKUHF1O9dDSghfGELFn1qXV1 mpUw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:delivered-to; bh=nIlomn4a+SLKjNhUOm3UXw9ZHpQgjZpmdEalcv8wsJs=; b=vNkO4ysBAy3PgrsP9ThuRf3tlRuPsXW6H5BEMFKxB6G/QUaqvtjoOqv6EG6J4W+EPP XuvFDlDqVunYF0lsIekxmsAqdgNvY+DXEU49IVM7CoP9q97k8+FSDQ1ihXG9FhY0Fp8q 4dZir57qTIyiUMEarK4y30Q99yqWhB4+meRuui2eruwcOR4NMGWhGXgPvU8+bZVK9xam d639YOjedbiPvhNePD8o2bMIznAHLnDriiCkM3oapj2vx997VQTtZ6pqU60zVk8Vw8AH C4NAla1Gq+740JvKCbzoxhnMCp3GKQq+PoiZZOFhDCuQPWLMthlMTrjFgpM8yyTcGh7X HuEQ== ARC-Authentication-Results: i=1; mx.google.com; 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 hg2-20020a1709072cc200b007309e370ecbsi8745198ejc.146.2022.08.21.16.13.15; Sun, 21 Aug 2022 16:13:16 -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; 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 0206B68B9AA; Mon, 22 Aug 2022 02:13:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mout-p-101.mailbox.org (mout-p-101.mailbox.org [80.241.56.151]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id CDC6E68B325 for ; Mon, 22 Aug 2022 02:12:57 +0300 (EEST) Received: from smtp1.mailbox.org (smtp1.mailbox.org [10.196.197.1]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange ECDHE (P-384) server-signature RSA-PSS (4096 bits) server-digest SHA256) (No client certificate requested) by mout-p-101.mailbox.org (Postfix) with ESMTPS id 4M9rr75Fsvz9sQw; Mon, 22 Aug 2022 01:12:55 +0200 (CEST) From: ffmpeg@mstoeckl.com To: ffmpeg-devel@ffmpeg.org Date: Sun, 21 Aug 2022 19:12:48 -0400 Message-Id: <20220821231248.34688-2-ffmpeg@mstoeckl.com> In-Reply-To: <20220821231248.34688-1-ffmpeg@mstoeckl.com> References: <20220821231248.34688-1-ffmpeg@mstoeckl.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] swscale: add conversions for rgb/bgrx64 formats 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: Manuel Stoeckl Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 2m4k4qeVKXUb From: Manuel Stoeckl These reuse existing code from conversions to/from formats like RGBA64 in the case where the alpha channel was unneeded. Signed-off-by: Manuel Stoeckl --- libswscale/input.c | 12 +++++++ libswscale/output.c | 41 +++++++++++++++++++++++- libswscale/utils.c | 4 +++ tests/ref/fate/filter-pixdesc-bgrx64be | 1 + tests/ref/fate/filter-pixdesc-bgrx64le | 1 + tests/ref/fate/filter-pixdesc-rgbx64be | 1 + tests/ref/fate/filter-pixdesc-rgbx64le | 1 + tests/ref/fate/filter-pixfmts-copy | 4 +++ tests/ref/fate/filter-pixfmts-crop | 4 +++ tests/ref/fate/filter-pixfmts-field | 4 +++ tests/ref/fate/filter-pixfmts-fieldorder | 4 +++ tests/ref/fate/filter-pixfmts-hflip | 4 +++ tests/ref/fate/filter-pixfmts-il | 4 +++ tests/ref/fate/filter-pixfmts-null | 4 +++ tests/ref/fate/filter-pixfmts-scale | 4 +++ tests/ref/fate/filter-pixfmts-transpose | 4 +++ tests/ref/fate/filter-pixfmts-vflip | 4 +++ 17 files changed, 100 insertions(+), 1 deletion(-) create mode 100644 tests/ref/fate/filter-pixdesc-bgrx64be create mode 100644 tests/ref/fate/filter-pixdesc-bgrx64le create mode 100644 tests/ref/fate/filter-pixdesc-rgbx64be create mode 100644 tests/ref/fate/filter-pixdesc-rgbx64le diff --git a/libswscale/input.c b/libswscale/input.c index 1077d01e91..bb39a83a8d 100644 --- a/libswscale/input.c +++ b/libswscale/input.c @@ -1407,15 +1407,19 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) if (c->chrSrcHSubSample) { switch (srcFormat) { case AV_PIX_FMT_RGBA64BE: + case AV_PIX_FMT_RGBX64BE: c->chrToYV12 = rgb64BEToUV_half_c; break; case AV_PIX_FMT_RGBA64LE: + case AV_PIX_FMT_RGBX64LE: c->chrToYV12 = rgb64LEToUV_half_c; break; case AV_PIX_FMT_BGRA64BE: + case AV_PIX_FMT_BGRX64BE: c->chrToYV12 = bgr64BEToUV_half_c; break; case AV_PIX_FMT_BGRA64LE: + case AV_PIX_FMT_BGRX64LE: c->chrToYV12 = bgr64LEToUV_half_c; break; case AV_PIX_FMT_RGB48BE: @@ -1504,15 +1508,19 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) } else { switch (srcFormat) { case AV_PIX_FMT_RGBA64BE: + case AV_PIX_FMT_RGBX64BE: c->chrToYV12 = rgb64BEToUV_c; break; case AV_PIX_FMT_RGBA64LE: + case AV_PIX_FMT_RGBX64LE: c->chrToYV12 = rgb64LEToUV_c; break; case AV_PIX_FMT_BGRA64BE: + case AV_PIX_FMT_BGRX64BE: c->chrToYV12 = bgr64BEToUV_c; break; case AV_PIX_FMT_BGRA64LE: + case AV_PIX_FMT_BGRX64LE: c->chrToYV12 = bgr64LEToUV_c; break; case AV_PIX_FMT_RGB48BE: @@ -1845,15 +1853,19 @@ av_cold void ff_sws_init_input_funcs(SwsContext *c) c->lumToYV12 = bgr48LEToY_c; break; case AV_PIX_FMT_RGBA64BE: + case AV_PIX_FMT_RGBX64BE: c->lumToYV12 = rgb64BEToY_c; break; case AV_PIX_FMT_RGBA64LE: + case AV_PIX_FMT_RGBX64LE: c->lumToYV12 = rgb64LEToY_c; break; case AV_PIX_FMT_BGRA64BE: + case AV_PIX_FMT_BGRX64BE: c->lumToYV12 = bgr64BEToY_c; break; case AV_PIX_FMT_BGRA64LE: + case AV_PIX_FMT_BGRX64LE: c->lumToYV12 = bgr64LEToY_c; break; case AV_PIX_FMT_P010LE: diff --git a/libswscale/output.c b/libswscale/output.c index 74f992ae80..c5e97ff3e8 100644 --- a/libswscale/output.c +++ b/libswscale/output.c @@ -2827,7 +2827,26 @@ av_cold void ff_sws_init_output_funcs(SwsContext *c, *yuv2packed1 = yuv2bgrx64be_full_1_c; } break; - + case AV_PIX_FMT_RGBX64LE: + *yuv2packedX = yuv2rgbx64le_full_X_c; + *yuv2packed2 = yuv2rgbx64le_full_2_c; + *yuv2packed1 = yuv2rgbx64le_full_1_c; + break; + case AV_PIX_FMT_RGBX64BE: + *yuv2packedX = yuv2rgbx64be_full_X_c; + *yuv2packed2 = yuv2rgbx64be_full_2_c; + *yuv2packed1 = yuv2rgbx64be_full_1_c; + break; + case AV_PIX_FMT_BGRX64LE: + *yuv2packedX = yuv2bgrx64le_full_X_c; + *yuv2packed2 = yuv2bgrx64le_full_2_c; + *yuv2packed1 = yuv2bgrx64le_full_1_c; + break; + case AV_PIX_FMT_BGRX64BE: + *yuv2packedX = yuv2bgrx64be_full_X_c; + *yuv2packed2 = yuv2bgrx64be_full_2_c; + *yuv2packed1 = yuv2bgrx64be_full_1_c; + break; case AV_PIX_FMT_RGB24: *yuv2packedX = yuv2rgb24_full_X_c; *yuv2packed2 = yuv2rgb24_full_2_c; @@ -2968,6 +2987,26 @@ av_cold void ff_sws_init_output_funcs(SwsContext *c, *yuv2packedX = yuv2bgrx64be_X_c; } break; + case AV_PIX_FMT_RGBX64LE: + *yuv2packed1 = yuv2rgbx64le_1_c; + *yuv2packed2 = yuv2rgbx64le_2_c; + *yuv2packedX = yuv2rgbx64le_X_c; + break; + case AV_PIX_FMT_RGBX64BE: + *yuv2packed1 = yuv2rgbx64be_1_c; + *yuv2packed2 = yuv2rgbx64be_2_c; + *yuv2packedX = yuv2rgbx64be_X_c; + break; + case AV_PIX_FMT_BGRX64LE: + *yuv2packed1 = yuv2bgrx64le_1_c; + *yuv2packed2 = yuv2bgrx64le_2_c; + *yuv2packedX = yuv2bgrx64le_X_c; + break; + case AV_PIX_FMT_BGRX64BE: + *yuv2packed1 = yuv2bgrx64be_1_c; + *yuv2packed2 = yuv2bgrx64be_2_c; + *yuv2packedX = yuv2bgrx64be_X_c; + break; case AV_PIX_FMT_RGB48LE: *yuv2packed1 = yuv2rgb48le_1_c; *yuv2packed2 = yuv2rgb48le_2_c; diff --git a/libswscale/utils.c b/libswscale/utils.c index 9ef157c006..4fd19efd5a 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -261,6 +261,10 @@ static const FormatEntry format_entries[] = { [AV_PIX_FMT_VUYA] = { 1, 1 }, [AV_PIX_FMT_RGBAF16BE] = { 1, 0 }, [AV_PIX_FMT_RGBAF16LE] = { 1, 0 }, + [AV_PIX_FMT_BGRX64LE] = { 1, 1 }, + [AV_PIX_FMT_BGRX64BE] = { 1, 1 }, + [AV_PIX_FMT_RGBX64LE] = { 1, 1 }, + [AV_PIX_FMT_RGBX64BE] = { 1, 1 }, }; int ff_shuffle_filter_coefficients(SwsContext *c, int *filterPos, diff --git a/tests/ref/fate/filter-pixdesc-bgrx64be b/tests/ref/fate/filter-pixdesc-bgrx64be new file mode 100644 index 0000000000..8900d87751 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-bgrx64be @@ -0,0 +1 @@ +pixdesc-bgrx64be 1f26682c0288762a7d175aa7bf02d4a6 diff --git a/tests/ref/fate/filter-pixdesc-bgrx64le b/tests/ref/fate/filter-pixdesc-bgrx64le new file mode 100644 index 0000000000..3d72394cdd --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-bgrx64le @@ -0,0 +1 @@ +pixdesc-bgrx64le fd9ff6f178c540bc911409bdb0512550 diff --git a/tests/ref/fate/filter-pixdesc-rgbx64be b/tests/ref/fate/filter-pixdesc-rgbx64be new file mode 100644 index 0000000000..12c6e783b8 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-rgbx64be @@ -0,0 +1 @@ +pixdesc-rgbx64be 38d7a97006c798131cfe6cb157a8cf06 diff --git a/tests/ref/fate/filter-pixdesc-rgbx64le b/tests/ref/fate/filter-pixdesc-rgbx64le new file mode 100644 index 0000000000..d4cd506451 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-rgbx64le @@ -0,0 +1 @@ +pixdesc-rgbx64le 5327e71d6ac0fa4c6286c5f9cf9afe72 diff --git a/tests/ref/fate/filter-pixfmts-copy b/tests/ref/fate/filter-pixfmts-copy index 93dd611f97..d7a9e5ade2 100644 --- a/tests/ref/fate/filter-pixfmts-copy +++ b/tests/ref/fate/filter-pixfmts-copy @@ -18,6 +18,8 @@ bgr8 898a66734bda0572dfab1edd8239f6a2 bgra 3934fb81a602dfa7d29420b1a66f0fd8 bgra64be c8d3217bf58d34f080ac88c0b0012c77 bgra64le b71d75a928aac14cb768403e6f6a9910 +bgrx64be 9890766ef9795596a1654edf436c1bfd +bgrx64le 3c131f454cd66883c6b0d15118a1a41b gbrap 98d30987407c51e5620921e11d40a4ff gbrap10be edcffb185e44b6dae5c2ead5505b7125 gbrap10le 2a7392e14b21b1f9457526a071236a6d @@ -88,6 +90,8 @@ rgb8 7ac6008c84d622c2fc50581706e17576 rgba b6e1b441c365e03b5ffdf9b7b68d9a0c rgba64be ae2ae04b5efedca3505f47c4dd6ea6ea rgba64le b91e1d77f799eb92241a2d2d28437b15 +rgbx64be 88a615aae08cdab9f2a929b4ac1c5f6b +rgbx64le eb21dc7b955de05662174ef4679d2970 uyvy422 3bcf3c80047592f2211fae3260b1b65d vuya 3d5e934651cae1ce334001cb1829ad22 x2bgr10le 550c0d190cf695afa4eaacb644db6b75 diff --git a/tests/ref/fate/filter-pixfmts-crop b/tests/ref/fate/filter-pixfmts-crop index 739b99713a..457d8f7307 100644 --- a/tests/ref/fate/filter-pixfmts-crop +++ b/tests/ref/fate/filter-pixfmts-crop @@ -18,6 +18,8 @@ bgr8 142275ecc024d3f7b66c168ac2279ae2 bgra e66a5f68ba463cbc89fce23a61bb5203 bgra64be 1ad8dd02714cafec793fb89577ddde47 bgra64le dd29ec9aba43aa3e8f9f5b9a93ca8831 +bgrx64be fee9d02e0b18e9c0db4273dfff6f8fa1 +bgrx64le 568e196c8a3291cee4cb1c987ff5695d gbrap 188cd467fe7ae7d85ae9ca8bdfa07739 gbrap10be 1880c4856d9cc6492b8b859f2711aaf1 gbrap10le c2b6e35f8b7ca363a7ec021ccdf31d1f @@ -86,6 +88,8 @@ rgb8 9b364a8f112ad9459fec47a51cc03b30 rgba 9488ac85abceaf99a9309eac5a87697e rgba64be 89910046972ab3c68e2a348302cc8ca9 rgba64le fea8ebfc869b52adf353778f29eac7a7 +rgbx64be 3309afdbfe1a95b47d3941ace3c685d4 +rgbx64le 9bea051c3c101d17e480dbc29f190507 vuya 76578a705ff3a37559653c1289bd03dd x2bgr10le 84de725b85662c362862820dc4a309aa x2rgb10le f4265aca7a67dbfa9354370098ca6f33 diff --git a/tests/ref/fate/filter-pixfmts-field b/tests/ref/fate/filter-pixfmts-field index e08161bc0d..9f9a9c845d 100644 --- a/tests/ref/fate/filter-pixfmts-field +++ b/tests/ref/fate/filter-pixfmts-field @@ -18,6 +18,8 @@ bgr8 47b2118262ad932cacf731cb66905ffd bgra 66d6e0846990fff0f09a07c43c3add71 bgra64be ec0bdef8663dc9d73818a48419cb4764 bgra64le 9e2def541e51bc6e77fbffbff7fa146a +bgrx64be abf647a91707da4ec82ba9a033537129 +bgrx64le c12f77699978e9c7881c8af54129c7cd gbrap 08a28b79dbd19246d1a94e3466af3624 gbrap10be 29d46cbf021b233f5f1886e5d5fe21b4 gbrap10le 4017c5d8c124438eb9aefa107db58d3b @@ -88,6 +90,8 @@ rgb8 62c3b9e2a171de3d894a8eeb271c85e8 rgba ee616262ca6d67b7ecfba4b36c602ce3 rgba64be 23c8c0edaabe3eaec89ce69633fb0048 rgba64le dfdba4de4a7cac9abf08852666c341d3 +rgbx64be 91b57872e629e58fcbaa839fdb92603a +rgbx64le 6aaffaa540d3a4621c9caf03e88230a7 uyvy422 1c49e44ab3f060e85fc4a3a9464f045e vuya f72bcf29d75cd143d0c565f7cc49119a x2bgr10le dbe21538d7cb1744914f6bd46ec09b55 diff --git a/tests/ref/fate/filter-pixfmts-fieldorder b/tests/ref/fate/filter-pixfmts-fieldorder index de5c4fe59b..9415e57abd 100644 --- a/tests/ref/fate/filter-pixfmts-fieldorder +++ b/tests/ref/fate/filter-pixfmts-fieldorder @@ -18,6 +18,8 @@ bgr8 cfc405aaf0162b4edfe9b3e047c5624d bgra 5967b559257dbb6784f93b9d2bef4edd bgra64be 64a4ec15bc35ede2018f650b50c2429b bgra64le 5029192d0f32383c9f25f8e7da7cb5a0 +bgrx64be 34bcfced68f85e09d610c36e5d9708be +bgrx64le a4639143ab29aaa1066d468abee2bb35 gbrap 00afb65d44bea99c31b318fdbeb3be10 gbrap10be 8b27254a69cd0e25fa55262a743f95e6 gbrap10le 52278021718ec370903dccc923dc8bf6 @@ -79,6 +81,8 @@ rgb8 6deae05ccac5c50bd0d9c9fe8e124557 rgba 1fdf872a087a32cd35b80cc7be399578 rgba64be 5598f44514d122b9a57c5c92c20bbc61 rgba64le b34e6e30621ae579519a2d91a96a0acf +rgbx64be 0ccf1f9f896500fb8b348a3748289651 +rgbx64le c94c7cb01ad619d28938d80b72dd9f1f uyvy422 75de70e31c435dde878002d3f22b238a vuya a3891d4168ff208948fd0b3ba0910495 x2bgr10le 86474d84f26c5c51d6f75bf7e1de8da8 diff --git a/tests/ref/fate/filter-pixfmts-hflip b/tests/ref/fate/filter-pixfmts-hflip index b0f6754bbf..5319826a8a 100644 --- a/tests/ref/fate/filter-pixfmts-hflip +++ b/tests/ref/fate/filter-pixfmts-hflip @@ -18,6 +18,8 @@ bgr8 67fb3fd116f0c0eb36d8ed03bdfbb0a6 bgra 275f05a382bcbc9bc77c06b79e1d8a71 bgra64be 1cabeafe9c21a4f7ccd976220f22ee5a bgra64le 1b15c01c94cf9af89273da1d1f994cff +bgrx64be 3431886ec04af7fa98622467bf03256d +bgrx64le 1d0372e87240f1065b08bef1923ee9a2 gbrap bf6a2b2f206fbbb332a718fb570d7cb7 gbrap10be f188dc23756469cbdd172fe97ad58121 gbrap10le 262f0501633ea4670020fae8ac6835e2 @@ -86,6 +88,8 @@ rgb8 68a3a575badadd9e4f90226209f11699 rgba 51961c723ea6707e0a410cd3f21f15d3 rgba64be c910444019f4cfbf4d995227af55da8d rgba64le 0c810d8b3a6bca10321788e1cb145340 +rgbx64be 3fc71cec8fd043c20e1cafb65e73bab7 +rgbx64le 3b93c29f530d78f27a4efc2f1d3bd943 vuya 7e530261e7ac4eae4fd616fd7572d0b8 x2bgr10le 827cc659f29378e00c5a7d2c0ada8f9a x2rgb10le d4a8189b65395a88d0a38a7053f3359f diff --git a/tests/ref/fate/filter-pixfmts-il b/tests/ref/fate/filter-pixfmts-il index 04efcb8a56..f720a8b915 100644 --- a/tests/ref/fate/filter-pixfmts-il +++ b/tests/ref/fate/filter-pixfmts-il @@ -18,6 +18,8 @@ bgr8 ef01593604512621b3d175f8b6c2ec9e bgra e6ae08f06f157297296b319a249dddf5 bgra64be de7c036f20fc54d89690239cc6239678 bgra64le d1aa975fa03ce226008396b30a653420 +bgrx64be fd0fe7fa812140cfef2306dffa6495c6 +bgrx64le 6ba8c8f64e74c2926493938841b55860 gbrap 575ff1fe5d7585ed82da1db35f106e4c gbrap10be bafa57a2e4331d8a39f6f0087c85d4b1 gbrap10le 553a1f439d8184dc400432d3f786fbce @@ -87,6 +89,8 @@ rgb8 93f9fa5ecf522abe13ed34f21831fdfe rgba 625d8f4bd39c4bdbf61eb5e4713aecc9 rgba64be db70d33aa6c06f3e0a1c77bd11284261 rgba64le a8a2daae04374a27219bc1c890204007 +rgbx64be 60f922c4d13e22a969328814b049c128 +rgbx64le 9bffe342c46d88b9b8de7ac1a8fe382e uyvy422 d6ee3ca43356d08c392382b24b22cda5 vuya b9deab5ba249dd608b709c09255a4932 x2bgr10le 135acaff8318cf9861bb0f7849a9e5e9 diff --git a/tests/ref/fate/filter-pixfmts-null b/tests/ref/fate/filter-pixfmts-null index 93dd611f97..d7a9e5ade2 100644 --- a/tests/ref/fate/filter-pixfmts-null +++ b/tests/ref/fate/filter-pixfmts-null @@ -18,6 +18,8 @@ bgr8 898a66734bda0572dfab1edd8239f6a2 bgra 3934fb81a602dfa7d29420b1a66f0fd8 bgra64be c8d3217bf58d34f080ac88c0b0012c77 bgra64le b71d75a928aac14cb768403e6f6a9910 +bgrx64be 9890766ef9795596a1654edf436c1bfd +bgrx64le 3c131f454cd66883c6b0d15118a1a41b gbrap 98d30987407c51e5620921e11d40a4ff gbrap10be edcffb185e44b6dae5c2ead5505b7125 gbrap10le 2a7392e14b21b1f9457526a071236a6d @@ -88,6 +90,8 @@ rgb8 7ac6008c84d622c2fc50581706e17576 rgba b6e1b441c365e03b5ffdf9b7b68d9a0c rgba64be ae2ae04b5efedca3505f47c4dd6ea6ea rgba64le b91e1d77f799eb92241a2d2d28437b15 +rgbx64be 88a615aae08cdab9f2a929b4ac1c5f6b +rgbx64le eb21dc7b955de05662174ef4679d2970 uyvy422 3bcf3c80047592f2211fae3260b1b65d vuya 3d5e934651cae1ce334001cb1829ad22 x2bgr10le 550c0d190cf695afa4eaacb644db6b75 diff --git a/tests/ref/fate/filter-pixfmts-scale b/tests/ref/fate/filter-pixfmts-scale index f4822f5bae..1a110ab626 100644 --- a/tests/ref/fate/filter-pixfmts-scale +++ b/tests/ref/fate/filter-pixfmts-scale @@ -18,6 +18,8 @@ bgr8 2c57e76ccf04d51de6acafcf35d6fa70 bgra d8316272bc3a360ef9dff3ecc84520a3 bgra64be 4e6a1b9f9c18b881c27d76611d45f737 bgra64le efeee0abcc658ebcff049d5e74d74943 +bgrx64be ff2b100a2dcbfb8bda38b67c70782079 +bgrx64le b42c0d43afec6345acf88a7f057837e0 gbrap 4a100f750ac846b34bfeef0d6893c3de gbrap10be 50735fbc471a5ac5a6645c85881f3670 gbrap10le 6e1cba57029fdf0f9d46b5e5cd55112b @@ -88,6 +90,8 @@ rgb8 bcdc033b4ef0979d060dbc8893d4db58 rgba 85bb5d03cea1c6e8002ced3373904336 rgba64be ee73e57923af984b31cc7795d13929da rgba64le 783d2779adfafe3548bdb671ec0de69e +rgbx64be 8ef5ed9963f2fdd35bedc1084d0c8fbc +rgbx64le d4cbd1a96be118bf5ccd85def8ea21bb uyvy422 aeb4ba4f9f003ae21f6d18089198244f vuya ffa817e283bf6a0b6fba21b07523ccaa x2bgr10le d57b9a99033cc7b65ddd111578f2d385 diff --git a/tests/ref/fate/filter-pixfmts-transpose b/tests/ref/fate/filter-pixfmts-transpose index b3f2d5c5a0..768c9da2b9 100644 --- a/tests/ref/fate/filter-pixfmts-transpose +++ b/tests/ref/fate/filter-pixfmts-transpose @@ -18,6 +18,8 @@ bgr8 b6ee15f70989d2f52f184e32b3af2c18 bgra f2fe61e08446900ad209f2c586997e15 bgra64be 8d01994c8c32e628fcf9749851f1ffe8 bgra64le faaef6d280f92e7e8abdd9fa4a61f7b5 +bgrx64be 9e1abb244711d1f56b30b5066a52c685 +bgrx64le 6b45c23ca153cb9577cc24cd9660263e gbrap 0899b3af50d35a63bfecb419a5b29968 gbrap10be 3e3be2d8f9aa5f449a1df404e27d0054 gbrap10le db4e4861010cbbf726492fad282d5813 @@ -80,6 +82,8 @@ rgb8 c90feb30c3c9391ef5f470209d7b7a15 rgba 4d76a9542143752a4ac30f82f88f68f1 rgba64be a60041217f4c0cd796d19d3940a12a41 rgba64le ad47197774858858ae7b0c177dffa459 +rgbx64be 7608654121f7265a0ae1ccb66f84fcd4 +rgbx64le a338ddc615bb4f370b7b358fdbe4974f vuya 9ece18a345beb17cd19e09e443eca4bf x2bgr10le 4aa774b6d8f6d446a64f1f288e5c97eb x2rgb10le 09cb1d98fe17ad8a6d9d3bec97ddc845 diff --git a/tests/ref/fate/filter-pixfmts-vflip b/tests/ref/fate/filter-pixfmts-vflip index 9081ce4f18..32c6539e37 100644 --- a/tests/ref/fate/filter-pixfmts-vflip +++ b/tests/ref/fate/filter-pixfmts-vflip @@ -18,6 +18,8 @@ bgr8 f2e4aabfe9e6039beb1f2b8c43c83e3c bgra 0af63cc2ffd61af252df93cc767de358 bgra64be 31af33833f6d8f2e4a62683288770aa4 bgra64le 45feb93863055282447d1ff89c5158bf +bgrx64be 273e2ff2a2b830d24bde86113d350db1 +bgrx64le f8902ba6abe2220c6d387ed3cdc4827c gbrap 421c56a25f88d58b9361f5c7bb368e21 gbrap10be e8134b72acc090b093b4d9b4d4703c7e gbrap10le 43bde7bd6a676c6ac33dbcc4c72762f3 @@ -88,6 +90,8 @@ rgb8 7df049b6094f8a5e084d74462f6d6cde rgba c1a5908572737f2ae1e5d8218af65f4b rgba64be 17e6273323b5779b5f3f775f150c1011 rgba64le 48f45b10503b7dd140329c3dd0d54c98 +rgbx64be 917675dc62539faf9575cf412aba142e +rgbx64le 7b958c2a1e79fa44121b16e84037c33f uyvy422 3a237e8376264e0cfa78f8a3fdadec8a vuya fb849f76e56181e005c31fce75d7038c x2bgr10le 795b66a5fc83cd2cf300aae51c230f80