From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id D5DA74C9F0 for ; Mon, 27 Oct 2025 20:16:24 +0000 (UTC) Authentication-Results: ffbox; dkim=fail (body hash mismatch (got b'x3Kop9J5Q09pNigCIul+O84CDRrJboSc/S+N8mj3qJE=', expected b'd0Hoe7SsCje9ZZzd4G4K6RTI2cxAOQM8zBCJAp0BOn8=')) header.d=ffmpeg.org header.i=@ffmpeg.org header.a=rsa-sha256 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1761596157; h=mime-version : to : date : message-id : reply-to : subject : list-id : list-archive : list-archive : list-help : list-owner : list-post : list-subscribe : list-unsubscribe : from : cc : content-type : content-transfer-encoding : from; bh=x3Kop9J5Q09pNigCIul+O84CDRrJboSc/S+N8mj3qJE=; b=gBLQh0AtNjrg0O3eRbb6seD8rkTF4oJTUFMSzP39fsAaof8L/t79P7BODJhjz2jFsqqky 6oijI2VUWQWj4X44wQl1F9TTmI6MGFSL6I6gulJVAuNIRVxQky5ouqpeeGw3Tljk4431zc8 qsFK/F3WvMjCgmW2P1mnZFDGb4jyJ4jC+d64kyX33pJO50UlO36AsB9BAU8bUpCjyau8F9o Q2bHSAYUnWZUynj2dtK6+wbuevRzDjrEBHvaqqp33WHjwTB7EMTOmC06AwgGfNc4ZIemY/l dCgzX/qhyvJ9lNYkPCJtAIiDrutBk+o3NCAlSGoajkBxF+n7Zwp48VgUzYDA== Received: from [172.19.0.2] (unknown [172.19.0.2]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 7D1C768F789; Mon, 27 Oct 2025 22:15:57 +0200 (EET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=ffmpeg.org; s=arc; t=1761596140; b=VnubV2DsC2+d7odc7n2FQhYPhQeJPeGeyJ3jvmjjs684UFYR1adPVb7QDZDJe9kyRJDIG 0E/g6YDK9ZwUbNJTeCuivBZTYT6nVcxTVaol+zgrIsUUUajdAMFhct7o9+SuprRtWMtHjmS c0iS1KQHalDON0YLkX/ZOuTPEW5ngSdCqhdKKhKTLWS2zzz6P9JQp1z2IkjWH2i/Wuoi1DP Fw4yF7TsJyXjyploHepeSK20A2pNImEWe4Ci3jwtHKVns2S1bNkXplMeBghsNlwRv6an04m cuKsFUUoRlrbqtu8c+DTFdiqkXLqIRjC8NgEILaikwbloyNGHdTyR0goG5YQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=ffmpeg.org; s=arc; t=1761596140; h=from : sender : reply-to : subject : date : message-id : to : cc : mime-version : content-type : content-transfer-encoding : content-id : content-description : resent-date : resent-from : resent-sender : resent-to : resent-cc : resent-message-id : in-reply-to : references : list-id : list-help : list-unsubscribe : list-subscribe : list-post : list-owner : list-archive; bh=QYzXdQ2bZH/G2irgutSE2kfPkCZzhwdlLnXPxg1wLzc=; b=GMtEbYGwPO5CWtaBeV2H4CMtiQXa3oh9j6S0NZAS9Xs0XypEZvAA3dtZgNousx3hNfyVP vLjsDi+UX1rUT4MLU4t05TweJW6/8tlMuQGVOq499Upcq9BTcEgriMfIHMxbGK85es3QU4G OGpYZl0MIXjeLAMycxUWw0YS7mjhrSyIcS25WSoB7pGTf3GwNqG5EjTOQqtnbKzRg2d3zCN +dCp2jOf5n/Cp6PJPLRq0mhBTtDqtz7r6zyQYvK+VMShbi1xEICwsoeQ+q/9LiNdX9Wt1yM rkzK/MFr1ikKTfeIm6sX0LajeMp9fNqQ6WPCS4jWaREztgPw2TCKHYx/9jyw== ARC-Authentication-Results: i=1; ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none; dmarc=pass header.from=ffmpeg.org policy.dmarc=quarantine Authentication-Results: ffmpeg.org; dkim=pass header.d=ffmpeg.org header.i=@ffmpeg.org; arc=none (Message is not ARC signed); dmarc=pass (Used From Domain Record) header.from=ffmpeg.org policy.dmarc=quarantine DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ffmpeg.org; i=@ffmpeg.org; q=dns/txt; s=mail; t=1761596135; h=content-type : mime-version : content-transfer-encoding : from : to : reply-to : subject : date : from; bh=d0Hoe7SsCje9ZZzd4G4K6RTI2cxAOQM8zBCJAp0BOn8=; b=LXEVW09N8yM2ZayLMCOL12RR4TggI+NEA30uR4nr5xDnX1j1QHPhTmLpy3RmhaTHyK2qp F/T0sCNs3IxZcX5wNgEVPpXCjCN82uhd3b4vHk++igYfHNmIp26Tl7RzlPuZwp9lzg9Lh3f Fp9tEHto2ntjc31sU99mxsQrnfp4LvbUNwMnz/9KHZsll1FA6407ZfANC12o3Xs/2LQO61u oo6efVA4vZ45ujvlQwwE5p6cPNiRZh05MQE8+D/qaN5PIzxxhuQC5Fy9HpwnopZBK/c/VDC q0e6n8ZAll1u5GJoUuPXgOoO+MFsY2r8AFJKPImI2qnC30k/EAan++MPXtpA== Received: from 02c22a36bd31 (code.ffmpeg.org [188.245.149.3]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 72C1C68F727 for ; Mon, 27 Oct 2025 22:15:35 +0200 (EET) MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Date: Mon, 27 Oct 2025 20:15:35 -0000 Message-ID: <176159613575.81.14966440612650826521@7d278768979e> Message-ID-Hash: J2XLDMMT7HNBPXVUSLEYWHQKPCGB57QL X-Message-ID-Hash: J2XLDMMT7HNBPXVUSLEYWHQKPCGB57QL X-MailFrom: code@ffmpeg.org X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; loop; banned-address; header-match-ffmpeg-devel.ffmpeg.org-0; header-match-ffmpeg-devel.ffmpeg.org-1; header-match-ffmpeg-devel.ffmpeg.org-2; header-match-ffmpeg-devel.ffmpeg.org-3; emergency; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.10 Precedence: list Reply-To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] pixfmt: add 10+12bit LSB-padded gray/420/444 pixel formats for Vulkan (PR #20771) List-Id: FFmpeg development discussions and patches Archived-At: Archived-At: List-Archive: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: From: Lynne via ffmpeg-devel Cc: Lynne Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Archived-At: List-Archive: List-Post: PR #20771 opened by Lynne URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20771 Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20771.patch The issue is that Vulkan defines all padding to be in the LSBs for all padded pixel formats. We previously tried to fudge it, by treating padded pixel formats as 16-bit and ignoring top bits. This worked, until libplacebo got proper support, which broke the fudge. Instead of hacking it further, give up and define LSB-padded pixel formats, something we should have done from the start. Perhaps we could add some special cases in the command line interface to treat yuv420p as an MSB format in case yuv420p is not supported but yuv420pmsb is. >>From 6cd5aab456949ec15449b959865f5cb779da7360 Mon Sep 17 00:00:00 2001 From: Lynne Date: Sun, 26 Oct 2025 21:51:40 +0100 Subject: [PATCH 1/9] lavu/pixfmt: add grayscale 10 and 12-bit MSB padded variants --- libavutil/pixdesc.c | 42 +++++++++++++++++++++++ libavutil/pixfmt.h | 7 ++++ tests/ref/fate/filter-pixdesc-gray10msbbe | 1 + tests/ref/fate/filter-pixdesc-gray10msble | 1 + tests/ref/fate/filter-pixdesc-gray12msbbe | 1 + tests/ref/fate/filter-pixdesc-gray12msble | 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-pad | 2 ++ tests/ref/fate/filter-pixfmts-scale | 4 +++ tests/ref/fate/filter-pixfmts-transpose | 4 +++ tests/ref/fate/filter-pixfmts-vflip | 4 +++ tests/ref/fate/imgutils | 8 +++++ tests/ref/fate/sws-pixdesc-query | 14 ++++++++ 19 files changed, 117 insertions(+) create mode 100644 tests/ref/fate/filter-pixdesc-gray10msbbe create mode 100644 tests/ref/fate/filter-pixdesc-gray10msble create mode 100644 tests/ref/fate/filter-pixdesc-gray12msbbe create mode 100644 tests/ref/fate/filter-pixdesc-gray12msble diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index 3c31ee2132..9ea8fccb94 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -734,6 +734,27 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .alias = "y10le", }, + [AV_PIX_FMT_GRAY10MSBBE] = { + .name = "gray10msbbe", + .nb_components = 1, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 2, 0, 6, 10 }, /* Y */ + }, + .flags = AV_PIX_FMT_FLAG_BE, + .alias = "y10msbbe", + }, + [AV_PIX_FMT_GRAY10MSBLE] = { + .name = "gray10msble", + .nb_components = 1, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 2, 0, 6, 10 }, /* Y */ + }, + .alias = "y10msble", + }, [AV_PIX_FMT_GRAY12BE] = { .name = "gray12be", .nb_components = 1, @@ -755,6 +776,27 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .alias = "y12le", }, + [AV_PIX_FMT_GRAY12MSBBE] = { + .name = "gray12msbbe", + .nb_components = 1, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 2, 0, 4, 12 }, /* Y */ + }, + .flags = AV_PIX_FMT_FLAG_BE, + .alias = "y12msbbe", + }, + [AV_PIX_FMT_GRAY12MSBLE] = { + .name = "gray12msble", + .nb_components = 1, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 2, 0, 4, 12 }, /* Y */ + }, + .alias = "y12msble", + }, [AV_PIX_FMT_GRAY14BE] = { .name = "gray14be", .nb_components = 1, diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index 6aa1c94cec..82396563a8 100644 --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@ -499,6 +499,11 @@ enum AVPixelFormat { AV_PIX_FMT_OHCODEC, /// hardware decoding through openharmony + AV_PIX_FMT_GRAY10MSBBE, ///< Y , 10bpp, big-endian + AV_PIX_FMT_GRAY10MSBLE, ///< Y , 10bpp, little-endian + AV_PIX_FMT_GRAY12MSBBE, ///< Y , 12bpp, big-endian + AV_PIX_FMT_GRAY12MSBLE, ///< Y , 12bpp, 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 }; @@ -551,6 +556,8 @@ enum AVPixelFormat { #define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE) #define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE) +#define AV_PIX_FMT_GRAY10MSB AV_PIX_FMT_NE(GRAY10MSBBE, GRAY10MSBLE) +#define AV_PIX_FMT_GRAY12MSB AV_PIX_FMT_NE(GRAY12MSBBE, GRAY12MSBLE) #define AV_PIX_FMT_YUV444P10MSB AV_PIX_FMT_NE(YUV444P10MSBBE, YUV444P10MSBLE) #define AV_PIX_FMT_YUV444P12MSB AV_PIX_FMT_NE(YUV444P12MSBBE, YUV444P12MSBLE) diff --git a/tests/ref/fate/filter-pixdesc-gray10msbbe b/tests/ref/fate/filter-pixdesc-gray10msbbe new file mode 100644 index 0000000000..c5a3c0a5ca --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-gray10msbbe @@ -0,0 +1 @@ +pixdesc-gray10msbbe 30925ffca4894232df5b2b7d96dcfe54 diff --git a/tests/ref/fate/filter-pixdesc-gray10msble b/tests/ref/fate/filter-pixdesc-gray10msble new file mode 100644 index 0000000000..be3e7b04d8 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-gray10msble @@ -0,0 +1 @@ +pixdesc-gray10msble 93c7eb73cc0021262ab6fb984789a358 diff --git a/tests/ref/fate/filter-pixdesc-gray12msbbe b/tests/ref/fate/filter-pixdesc-gray12msbbe new file mode 100644 index 0000000000..828ba56e25 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-gray12msbbe @@ -0,0 +1 @@ +pixdesc-gray12msbbe 7b74d4e211ec8ff87c94c4a7576dc652 diff --git a/tests/ref/fate/filter-pixdesc-gray12msble b/tests/ref/fate/filter-pixdesc-gray12msble new file mode 100644 index 0000000000..8fa84b4e3f --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-gray12msble @@ -0,0 +1 @@ +pixdesc-gray12msble abc39dc30e8c9f2161e238e85f0db801 diff --git a/tests/ref/fate/filter-pixfmts-copy b/tests/ref/fate/filter-pixfmts-copy index d42e2f6b33..1e08ee60b1 100644 --- a/tests/ref/fate/filter-pixfmts-copy +++ b/tests/ref/fate/filter-pixfmts-copy @@ -51,8 +51,12 @@ gbrpf32le f3aff67024db002d8d985c775ec8c235 gray 188590b1231afd231ea910815aef2b25 gray10be 0804e8620fcd78599e3df33cb83652aa gray10le 705e51fb783ae8167498d09748e44bd2 +gray10msbbe a4eddf6055d0507c6bc411a788e28c1d +gray10msble 19c68a45da74b833993a3120fda93ca0 gray12be 2163197b5975c0c2900ac7c3f56f45f1 gray12le 5bf2ca7795dd0524b253aee20f660e73 +gray12msbbe b6a952019c10cc6bd655850c4d226d77 +gray12msble b46e317ee809b44a25707cea426f2e8e gray14be dccc8bde352b6c8ae65ca2832a383381 gray14le 56c9e613b09f00a5940c0bf2e938c02e gray16be 47a6889ea2dcff9164888a94cccff4de diff --git a/tests/ref/fate/filter-pixfmts-crop b/tests/ref/fate/filter-pixfmts-crop index a86113c631..ca2e4a45cf 100644 --- a/tests/ref/fate/filter-pixfmts-crop +++ b/tests/ref/fate/filter-pixfmts-crop @@ -51,8 +51,12 @@ gbrpf32le b930a6185e3ffb23785d57ab1f519bc3 gray 0d70b54b4b888ec4dbd89713620ac1ee gray10be a97f60928c553b9d0e8e44b69ec2970d gray10le bff59b6df8751b5e958d0cd8deb3c31a +gray10msbbe ceedda0baebcc04f3614aa73bddaef89 +gray10msble a06031ad148e90b144438ec2bb287f5e gray12be 5080520ac513da1be65b353a3c208a99 gray12le 016877eaccd8490fd281b08b582bd832 +gray12msbbe 08e6bcc90b08022fae116286a9dde008 +gray12msble 1c5c7e0cc20c622ed7c241cbc4612527 gray14be c0a8c2f0937438d8a54625d90cc44a12 gray14le 222c5d59a7482e060f0fa117e658c239 gray16be a134e7154d1ee810e50ea5887f784cf0 diff --git a/tests/ref/fate/filter-pixfmts-field b/tests/ref/fate/filter-pixfmts-field index c05dba55f6..00ba61e49a 100644 --- a/tests/ref/fate/filter-pixfmts-field +++ b/tests/ref/fate/filter-pixfmts-field @@ -51,8 +51,12 @@ gbrpf32le 64722b723252d359858136cb00079636 gray 57fd8e6e00f6be8752726005974cce1b gray10be 083a7931fea847a4d8b23d38f989a836 gray10le 1b08650e7c44f8517dd3f37044930729 +gray10msbbe 7d02d13a358e7fc2a8960a9eb43dccb7 +gray10msble 93fb6bd19152b7ea2cb1e3d023807382 gray12be c02b7fef120c03bf0fddadb5b63a1373 gray12le ac129433ead39c0c9f881979345a434d +gray12msbbe 583163bfeab26b8a85525113e1e07884 +gray12msble 239e90619f531766ee8c3f9bd1ff892b gray14be a5c8b034a5867ba91691fbd68cea2864 gray14le 39c6b08bd0d934005ace54a2e5821e8e gray16be 3f446db33f6dea74ac1d9d6962511c4e diff --git a/tests/ref/fate/filter-pixfmts-fieldorder b/tests/ref/fate/filter-pixfmts-fieldorder index 4c8cffca08..2cdfa25236 100644 --- a/tests/ref/fate/filter-pixfmts-fieldorder +++ b/tests/ref/fate/filter-pixfmts-fieldorder @@ -51,8 +51,12 @@ gbrpf32le 070140993c538b996890b983c0a010be gray d96e0f1c73d3f0b9506d691b5cd36c73 gray10be 3ccbda141912b7cace81b2145005032e gray10le e27718bf9caa54b7b3313c15cec88f20 +gray10msbbe d6c231b3e0440fc15aaca387db37568a +gray10msble fcc78b29afede484ee5bd3db6557be6c gray12be c892966f917891dbe2badf8281486710 gray12le 48b193c9afe677304c027aca3b431411 +gray12msbbe 61c0ccc1954071e8feaab067aa77b7ea +gray12msble 30d1377c54652c274e8fb79361da23ef gray14be ea1ea4bece62708ba47a7ebbfdd4437e gray14le beb4536b196e50a6fb5deb07580a803c gray16be 28b2b79919be3a0b65c0825eb3e98d92 diff --git a/tests/ref/fate/filter-pixfmts-hflip b/tests/ref/fate/filter-pixfmts-hflip index b47087d1f6..c65d926b76 100644 --- a/tests/ref/fate/filter-pixfmts-hflip +++ b/tests/ref/fate/filter-pixfmts-hflip @@ -51,8 +51,12 @@ gbrpf32le cbb650b78c412b10a1070840fefd6d59 gray 8bd4ece1dbf89b20ee785e0515356e07 gray10be 1daf5c1face37d8724a65e905941dcb8 gray10le 07c5139f97db9d49729f2ea6e77dcedf +gray10msbbe 7211b8202caf246d835e894b4304ec24 +gray10msble 1acb45f2119e6be4226f9a1803da37b1 gray12be 2ba74a3890309bb111045e2aedcd2e07 gray12le 81af0124c72271fd316564d86fcd3f2b +gray12msbbe 48df956f353587c9f0dd779e16ff1f97 +gray12msble 5ba2750ac3d4f3ad2b87695f4a21c3ae gray14be 87981e992522a611b28ab5a0ba0ddcb1 gray14le 95313b7de3f1f2a1471447e57932ada1 gray16be 4b87b19d657cb45de7f2fe3143d79235 diff --git a/tests/ref/fate/filter-pixfmts-il b/tests/ref/fate/filter-pixfmts-il index 490995bbf0..268593a54d 100644 --- a/tests/ref/fate/filter-pixfmts-il +++ b/tests/ref/fate/filter-pixfmts-il @@ -51,8 +51,12 @@ gbrpf32le 6514fcf1804c375f4d560d4f08dbacb7 gray 52ae18648161ac43144f5c9cd2127786 gray10be b2c861887056fe39d2fe90379d80e535 gray10le f7022c60ad8cb9a9d5f556ad7c7fadaf +gray10msbbe 3055f2b1079ebfa36bdd89644c19c40f +gray10msble 5b26d8f9ef1e2ad62520e33c6eeda05b gray12be c733c108acee8389ae9dfc6262c2bd8b gray12le 870d5c2b37d13c25689e1e268749f7a9 +gray12msbbe 63d3eef70eb6cfa6af65449b1da8d44d +gray12msble c57839969fb73d6e30e7e486f1f2f2be gray14be 230bc18fa759c249573c3dbda2d27173 gray14le 9dc39323146761e60f5517405e5e40b3 gray16be c31bde624d1a2e46eda99a1b982de7aa diff --git a/tests/ref/fate/filter-pixfmts-null b/tests/ref/fate/filter-pixfmts-null index d42e2f6b33..1e08ee60b1 100644 --- a/tests/ref/fate/filter-pixfmts-null +++ b/tests/ref/fate/filter-pixfmts-null @@ -51,8 +51,12 @@ gbrpf32le f3aff67024db002d8d985c775ec8c235 gray 188590b1231afd231ea910815aef2b25 gray10be 0804e8620fcd78599e3df33cb83652aa gray10le 705e51fb783ae8167498d09748e44bd2 +gray10msbbe a4eddf6055d0507c6bc411a788e28c1d +gray10msble 19c68a45da74b833993a3120fda93ca0 gray12be 2163197b5975c0c2900ac7c3f56f45f1 gray12le 5bf2ca7795dd0524b253aee20f660e73 +gray12msbbe b6a952019c10cc6bd655850c4d226d77 +gray12msble b46e317ee809b44a25707cea426f2e8e gray14be dccc8bde352b6c8ae65ca2832a383381 gray14le 56c9e613b09f00a5940c0bf2e938c02e gray16be 47a6889ea2dcff9164888a94cccff4de diff --git a/tests/ref/fate/filter-pixfmts-pad b/tests/ref/fate/filter-pixfmts-pad index 3c9fe6746e..a57069f61f 100644 --- a/tests/ref/fate/filter-pixfmts-pad +++ b/tests/ref/fate/filter-pixfmts-pad @@ -22,7 +22,9 @@ gbrp16le a6156d1a37e05ee621b2a343fb158bd6 gbrp9le 9e827f438e081d334a6cae7e282698b0 gray 2b9652a8b136316fada371d03ee252bc gray10le 47fb6bf7784e8bd70b49f417b2fa28b0 +gray10msble 925e45f177945f1e899ef3a3d90675bd gray12le 3bf76ed4fa5ba0955ab1157e20b26ef4 +gray12msble 7f949f0284ebc73ff33319cd692276dc gray14le c3750188ede607e733065b7f3b17f548 gray16le 4347c5ca559a06948c1e7e7c2f06657d gray9le 99f825e62d5786901dba9abc88878ffb diff --git a/tests/ref/fate/filter-pixfmts-scale b/tests/ref/fate/filter-pixfmts-scale index 66d22e0484..87752c6c4f 100644 --- a/tests/ref/fate/filter-pixfmts-scale +++ b/tests/ref/fate/filter-pixfmts-scale @@ -51,8 +51,12 @@ gbrpf32le f6fcfa78926bc1acdf40675e015491fd gray 221201cc7cfc4964eacd8b3e426fd276 gray10be d16a05571246e94b5117004c5276cb7a gray10le 0ef4a201ffc7197b316ad47dd81dff45 +gray10msbbe 29277ef1cad2b4db2cb386dee7c49ba9 +gray10msble 0b43ba1306bf01a4446df1035f634b21 gray12be 369e362ecb31db507309589ca4f51d8c gray12le c463d00d75bf491f641aee07c8fefd0e +gray12msbbe a1a078cb0fd5d48378544e74a426915d +gray12msble 093ac5db3e7e4d809cadece81d77f916 gray14be 4756e24785dc8c04017a847abb95e6a9 gray14le 9df39c65e85228c479766427db23609f gray16be 386ac06726336ff35876cb84152dcea1 diff --git a/tests/ref/fate/filter-pixfmts-transpose b/tests/ref/fate/filter-pixfmts-transpose index 80b05dbb05..8f36938517 100644 --- a/tests/ref/fate/filter-pixfmts-transpose +++ b/tests/ref/fate/filter-pixfmts-transpose @@ -51,8 +51,12 @@ gbrpf32le 3daead396f5bbd6dc3e9d729f6dd7e4a gray c5f8bc6636fd15dbc57deb4bba1e7379 gray10be 502e8c53160bb81e319f7f03f3d7fba7 gray10le 0fe4b6d29e7602bb9e49a1cd6c32cf86 +gray10msbbe b193a8420edd276201554d37ba101149 +gray10msble 3a557b1e464bf8bd6dfa45e005af4f3c gray12be c7d7eac33931374348a0337d324c3128 gray12le eebfb191ab4ba2a967e8bed120402b09 +gray12msbbe 9fa97b40c7f892bb0424db85f14a36b8 +gray12msble e56b3d5fda4ca8cddd492ec3d0a40af1 gray14be 009e0b4b4e9451b965fccfe5e7cd6538 gray14le 8a6ca251b3508829bdd8471f05fb3e77 gray16be b1810df6c6d9503c4c3199f11329498d diff --git a/tests/ref/fate/filter-pixfmts-vflip b/tests/ref/fate/filter-pixfmts-vflip index 6b8c888b9a..2984864e91 100644 --- a/tests/ref/fate/filter-pixfmts-vflip +++ b/tests/ref/fate/filter-pixfmts-vflip @@ -51,8 +51,12 @@ gbrpf32le a60eadee900a27d4e1fb5d7ac0b0e901 gray 41811422d5819ed69389357294384c10 gray10be 8a49315bcba5cdaffe7ef55cdb5f5148 gray10le dd71c7da4d205a081f54e46e76b6a1ed +gray10msbbe 1071c0fc427e36d7c268ed3804854433 +gray10msble 2d21481e526c8a849d9158f4946ab927 gray12be ca43b3f79c517a41c19164c417baa28d gray12le 86166fd2485f65867eb8be3b5447e921 +gray12msbbe e95a661293e4d549e1f2c77d38a0a09a +gray12msble 40ebc0d5e1572bfe3f77ac4c66858394 gray14be 57bde02df9aa6156f973c9e0ab60663a gray14le 2b76ab2c6de4a9a1b4e5d49e8b537a6d gray16be 8e0f23aa0e5736f4ae8e08273201c854 diff --git a/tests/ref/fate/imgutils b/tests/ref/fate/imgutils index ccd1522ef2..738ce0289c 100644 --- a/tests/ref/fate/imgutils +++ b/tests/ref/fate/imgutils @@ -306,6 +306,10 @@ gbrp10msbbe planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 gbrp10msble planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432 gbrp12msbbe planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432 gbrp12msble planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432 +gray10msbbe planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144 +gray10msble planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144 +gray12msbbe planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144 +gray12msble planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144 image_fill_black tests yuv420p total_size: 4608, black_unknown_crc: 0xd00f6cc6, black_tv_crc: 0xd00f6cc6, black_pc_crc: 0x234969af @@ -559,3 +563,7 @@ gbrp10msbbe total_size: 18432, black_unknown_crc: 0x00000000, black_tv_cr gbrp10msble total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000 gbrp12msbbe total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000 gbrp12msble total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000 +gray10msbbe total_size: 6144, black_unknown_crc: 0x02d4a26f, black_tv_crc: 0x02d4a26f, black_pc_crc: 0x00000000 +gray10msble total_size: 6144, black_unknown_crc: 0xb93165c3, black_tv_crc: 0xb93165c3, black_pc_crc: 0x00000000 +gray12msbbe total_size: 6144, black_unknown_crc: 0x02d4a26f, black_tv_crc: 0x02d4a26f, black_pc_crc: 0x00000000 +gray12msble total_size: 6144, black_unknown_crc: 0xb93165c3, black_tv_crc: 0xb93165c3, black_pc_crc: 0x00000000 diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query index a062088d54..af421b4eee 100644 --- a/tests/ref/fate/sws-pixdesc-query +++ b/tests/ref/fate/sws-pixdesc-query @@ -73,8 +73,12 @@ isNBPS: gbrp9le gray10be gray10le + gray10msbbe + gray10msble gray12be gray12le + gray12msbbe + gray12msble gray14be gray14le gray9be @@ -186,7 +190,9 @@ isBE: gbrpf16be gbrpf32be gray10be + gray10msbbe gray12be + gray12msbbe gray14be gray16be gray32be @@ -625,8 +631,12 @@ Gray: gray gray10be gray10le + gray10msbbe + gray10msble gray12be gray12le + gray12msbbe + gray12msble gray14be gray14le gray16be @@ -1225,6 +1235,10 @@ DataInHighBits: gbrp10msble gbrp12msbbe gbrp12msble + gray10msbbe + gray10msble + gray12msbbe + gray12msble p010be p010le p012be -- 2.49.1 >>From 20b477f0417ec0a1020e3f57aa6068d5b67be9c6 Mon Sep 17 00:00:00 2001 From: Lynne Date: Sun, 26 Oct 2025 20:16:19 +0000 Subject: [PATCH 2/9] lavu/pixfmt: add 420 and 422, 10 and 12-bit MSB padded variants Vulkan has defined all its 3-plane formats as MSB padded. --- libavutil/pixdesc.c | 96 ++++++++++++++++++++ libavutil/pixfmt.h | 12 +++ tests/ref/fate/filter-pixdesc-yuv420p10msbbe | 1 + tests/ref/fate/filter-pixdesc-yuv420p10msble | 1 + tests/ref/fate/filter-pixdesc-yuv420p12msbbe | 1 + tests/ref/fate/filter-pixdesc-yuv420p12msble | 1 + tests/ref/fate/filter-pixdesc-yuv422p10msbbe | 1 + tests/ref/fate/filter-pixdesc-yuv422p10msble | 1 + tests/ref/fate/filter-pixdesc-yuv422p12msbbe | 1 + tests/ref/fate/filter-pixdesc-yuv422p12msble | 1 + tests/ref/fate/filter-pixfmts-copy | 8 ++ tests/ref/fate/filter-pixfmts-crop | 8 ++ tests/ref/fate/filter-pixfmts-field | 8 ++ tests/ref/fate/filter-pixfmts-fieldorder | 4 + tests/ref/fate/filter-pixfmts-hflip | 8 ++ tests/ref/fate/filter-pixfmts-il | 8 ++ tests/ref/fate/filter-pixfmts-null | 8 ++ tests/ref/fate/filter-pixfmts-pad | 4 + tests/ref/fate/filter-pixfmts-scale | 8 ++ tests/ref/fate/filter-pixfmts-transpose | 4 + tests/ref/fate/filter-pixfmts-vflip | 8 ++ tests/ref/fate/imgutils | 16 ++++ tests/ref/fate/sws-pixdesc-query | 22 +++++ 23 files changed, 230 insertions(+) create mode 100644 tests/ref/fate/filter-pixdesc-yuv420p10msbbe create mode 100644 tests/ref/fate/filter-pixdesc-yuv420p10msble create mode 100644 tests/ref/fate/filter-pixdesc-yuv420p12msbbe create mode 100644 tests/ref/fate/filter-pixdesc-yuv420p12msble create mode 100644 tests/ref/fate/filter-pixdesc-yuv422p10msbbe create mode 100644 tests/ref/fate/filter-pixdesc-yuv422p10msble create mode 100644 tests/ref/fate/filter-pixdesc-yuv422p12msbbe create mode 100644 tests/ref/fate/filter-pixdesc-yuv422p12msble diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index 9ea8fccb94..fbd8666863 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -1503,6 +1503,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, }, + [AV_PIX_FMT_YUV420P10MSBLE] = { + .name = "yuv420p10msble", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 1, + .comp = { + { 0, 2, 0, 6, 10 }, /* Y */ + { 1, 2, 0, 6, 10 }, /* U */ + { 2, 2, 0, 6, 10 }, /* V */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR, + }, + [AV_PIX_FMT_YUV420P10MSBBE] = { + .name = "yuv420p10msbbe", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 1, + .comp = { + { 0, 2, 0, 6, 10 }, /* Y */ + { 1, 2, 0, 6, 10 }, /* U */ + { 2, 2, 0, 6, 10 }, /* V */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, + }, [AV_PIX_FMT_YUV420P12LE] = { .name = "yuv420p12le", .nb_components = 3, @@ -1527,6 +1551,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, }, + [AV_PIX_FMT_YUV420P12MSBLE] = { + .name = "yuv420p12msble", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 1, + .comp = { + { 0, 2, 0, 4, 12 }, /* Y */ + { 1, 2, 0, 4, 12 }, /* U */ + { 2, 2, 0, 4, 12 }, /* V */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR, + }, + [AV_PIX_FMT_YUV420P12MSBBE] = { + .name = "yuv420p12msbbe", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 1, + .comp = { + { 0, 2, 0, 4, 12 }, /* Y */ + { 1, 2, 0, 4, 12 }, /* U */ + { 2, 2, 0, 4, 12 }, /* V */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, + }, [AV_PIX_FMT_YUV420P14LE] = { .name = "yuv420p14le", .nb_components = 3, @@ -1623,6 +1671,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, }, + [AV_PIX_FMT_YUV422P10MSBLE] = { + .name = "yuv422p10msble", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 0, + .comp = { + { 0, 2, 0, 6, 10 }, /* Y */ + { 1, 2, 0, 6, 10 }, /* U */ + { 2, 2, 0, 6, 10 }, /* V */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR, + }, + [AV_PIX_FMT_YUV422P10MSBBE] = { + .name = "yuv422p10msbbe", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 0, + .comp = { + { 0, 2, 0, 6, 10 }, /* Y */ + { 1, 2, 0, 6, 10 }, /* U */ + { 2, 2, 0, 6, 10 }, /* V */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, + }, [AV_PIX_FMT_YUV422P12LE] = { .name = "yuv422p12le", .nb_components = 3, @@ -1647,6 +1719,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, }, + [AV_PIX_FMT_YUV422P12MSBLE] = { + .name = "yuv422p12msble", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 0, + .comp = { + { 0, 2, 0, 4, 12 }, /* Y */ + { 1, 2, 0, 4, 12 }, /* U */ + { 2, 2, 0, 4, 12 }, /* V */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR, + }, + [AV_PIX_FMT_YUV422P12MSBBE] = { + .name = "yuv422p12msbbe", + .nb_components = 3, + .log2_chroma_w = 1, + .log2_chroma_h = 0, + .comp = { + { 0, 2, 0, 4, 12 }, /* Y */ + { 1, 2, 0, 4, 12 }, /* U */ + { 2, 2, 0, 4, 12 }, /* V */ + }, + .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR, + }, [AV_PIX_FMT_YUV422P14LE] = { .name = "yuv422p14le", .nb_components = 3, diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index 82396563a8..d22c939ba9 100644 --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@ -503,6 +503,14 @@ enum AVPixelFormat { AV_PIX_FMT_GRAY10MSBLE, ///< Y , 10bpp, little-endian AV_PIX_FMT_GRAY12MSBBE, ///< Y , 12bpp, big-endian AV_PIX_FMT_GRAY12MSBLE, ///< Y , 12bpp, little-endian + AV_PIX_FMT_YUV420P10MSBBE, ///< planar YUV 4:2:0, 30bpp, (1 Cr & Cb sample per 2x2 Y samples), lowest bits zero, big-endian + AV_PIX_FMT_YUV420P10MSBLE, ///< planar YUV 4:2:0, 30bpp, (1 Cr & Cb sample per 2x2 Y samples), lowest bits zero, little-endian + AV_PIX_FMT_YUV420P12MSBBE, ///< planar YUV 4:2:0, 30bpp, (1 Cr & Cb sample per 2x2 Y samples), lowest bits zero, big-endian + AV_PIX_FMT_YUV420P12MSBLE, ///< planar YUV 4:2:0, 30bpp, (1 Cr & Cb sample per 2x2 Y samples), lowest bits zero, little-endian + AV_PIX_FMT_YUV422P10MSBBE, ///< planar YUV 4:2:2, 30bpp, (1 Cr & Cb sample per 2x1 Y samples), lowest bits zero, big-endian + AV_PIX_FMT_YUV422P10MSBLE, ///< planar YUV 4:2:2, 30bpp, (1 Cr & Cb sample per 2x1 Y samples), lowest bits zero, little-endian + AV_PIX_FMT_YUV422P12MSBBE, ///< planar YUV 4:2:2, 30bpp, (1 Cr & Cb sample per 2x1 Y samples), lowest bits zero, big-endian + AV_PIX_FMT_YUV422P12MSBLE, ///< planar YUV 4:2:2, 30bpp, (1 Cr & Cb sample per 2x1 Y samples), lowest bits zero, 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 }; @@ -558,6 +566,10 @@ enum AVPixelFormat { #define AV_PIX_FMT_GRAY10MSB AV_PIX_FMT_NE(GRAY10MSBBE, GRAY10MSBLE) #define AV_PIX_FMT_GRAY12MSB AV_PIX_FMT_NE(GRAY12MSBBE, GRAY12MSBLE) +#define AV_PIX_FMT_YUV420P10MSB AV_PIX_FMT_NE(YUV420P10MSBBE, YUV420P10MSBLE) +#define AV_PIX_FMT_YUV420P12MSB AV_PIX_FMT_NE(YUV420P12MSBBE, YUV420P12MSBLE) +#define AV_PIX_FMT_YUV422P10MSB AV_PIX_FMT_NE(YUV422P10MSBBE, YUV422P10MSBLE) +#define AV_PIX_FMT_YUV422P12MSB AV_PIX_FMT_NE(YUV422P12MSBBE, YUV422P12MSBLE) #define AV_PIX_FMT_YUV444P10MSB AV_PIX_FMT_NE(YUV444P10MSBBE, YUV444P10MSBLE) #define AV_PIX_FMT_YUV444P12MSB AV_PIX_FMT_NE(YUV444P12MSBBE, YUV444P12MSBLE) diff --git a/tests/ref/fate/filter-pixdesc-yuv420p10msbbe b/tests/ref/fate/filter-pixdesc-yuv420p10msbbe new file mode 100644 index 0000000000..d265f604e2 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-yuv420p10msbbe @@ -0,0 +1 @@ +pixdesc-yuv420p10msbbe714c32421334acd21547fdd818c38fc4 diff --git a/tests/ref/fate/filter-pixdesc-yuv420p10msble b/tests/ref/fate/filter-pixdesc-yuv420p10msble new file mode 100644 index 0000000000..dbca9bf909 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-yuv420p10msble @@ -0,0 +1 @@ +pixdesc-yuv420p10msble018bce154495538cf61ce565c8bcce78 diff --git a/tests/ref/fate/filter-pixdesc-yuv420p12msbbe b/tests/ref/fate/filter-pixdesc-yuv420p12msbbe new file mode 100644 index 0000000000..96f2878d22 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-yuv420p12msbbe @@ -0,0 +1 @@ +pixdesc-yuv420p12msbbe714c32421334acd21547fdd818c38fc4 diff --git a/tests/ref/fate/filter-pixdesc-yuv420p12msble b/tests/ref/fate/filter-pixdesc-yuv420p12msble new file mode 100644 index 0000000000..24d0c943ff --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-yuv420p12msble @@ -0,0 +1 @@ +pixdesc-yuv420p12msble018bce154495538cf61ce565c8bcce78 diff --git a/tests/ref/fate/filter-pixdesc-yuv422p10msbbe b/tests/ref/fate/filter-pixdesc-yuv422p10msbbe new file mode 100644 index 0000000000..3cef106ee0 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-yuv422p10msbbe @@ -0,0 +1 @@ +pixdesc-yuv422p10msbbe2c04d978af86e47cc29cc16d6b97d9aa diff --git a/tests/ref/fate/filter-pixdesc-yuv422p10msble b/tests/ref/fate/filter-pixdesc-yuv422p10msble new file mode 100644 index 0000000000..9ddb4fc2aa --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-yuv422p10msble @@ -0,0 +1 @@ +pixdesc-yuv422p10msble1ebb8eb68a5757b098d6d262e28ff56c diff --git a/tests/ref/fate/filter-pixdesc-yuv422p12msbbe b/tests/ref/fate/filter-pixdesc-yuv422p12msbbe new file mode 100644 index 0000000000..85c667e583 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-yuv422p12msbbe @@ -0,0 +1 @@ +pixdesc-yuv422p12msbbecfa0d2a7711c0b6b4a74ea7a26c155dc diff --git a/tests/ref/fate/filter-pixdesc-yuv422p12msble b/tests/ref/fate/filter-pixdesc-yuv422p12msble new file mode 100644 index 0000000000..509e871a11 --- /dev/null +++ b/tests/ref/fate/filter-pixdesc-yuv422p12msble @@ -0,0 +1 @@ +pixdesc-yuv422p12msble38043e9e40a19b61bcfff334fbc64422 diff --git a/tests/ref/fate/filter-pixfmts-copy b/tests/ref/fate/filter-pixfmts-copy index 1e08ee60b1..63a26d1385 100644 --- a/tests/ref/fate/filter-pixfmts-copy +++ b/tests/ref/fate/filter-pixfmts-copy @@ -134,8 +134,12 @@ yuv411p 7e1300e89f5bc07939e2c4a6acbdf267 yuv420p a014c7eb7a8385d1dd092b7a583f1bff yuv420p10be f9b154364efaa1af376fa6d8eeae6955 yuv420p10le 15c83294ef560d57f25d16ae6e0fc70c +yuv420p10msbbe 13a35f032d8b27fbe86be8581f0ec0b3 +yuv420p10msble 01400270da5519f681b48ab8212205c7 yuv420p12be 34da9c4e289124122ba36a9d4fb133fa yuv420p12le c19a477a07fcf88e37ab37b416d064c0 +yuv420p12msbbe 13a35f032d8b27fbe86be8581f0ec0b3 +yuv420p12msble 01400270da5519f681b48ab8212205c7 yuv420p14be 64779858686946fc0e780baf7c1391b6 yuv420p14le c1d012a4f9d54fbc8b04fea96d85e903 yuv420p16be 268b07358d8dc733ee81d0b87990d5af @@ -145,8 +149,12 @@ yuv420p9le 83a6d32c91c15a3bc334bb9abf920654 yuv422p 74f8006b4482db104f1986f49807a0af yuv422p10be 7291903c3c0cf4e5456dd9673a619f1d yuv422p10le 14cbaa728e888534359b9dddc5430f08 +yuv422p10msbbe 84584da376799390599031f77fbd0aee +yuv422p10msble 06d4727c5c4d178736445bddcd9b03a0 yuv422p12be e9bc7f2da217fade40feb6960dcd894e yuv422p12le 8d8184e4d0f1eb50e1834ac0c4af8c33 +yuv422p12msbbe bdf57a55ed1957997671d42535a1156f +yuv422p12msble fa213f34ebb3042349b3b8b88070f132 yuv422p14be 2617c569ae9659d8fe6a01f96e2c9657 yuv422p14le 7d01363cf090306cf93337c474cd8827 yuv422p16be 86147d8bfb795ab1873c899611e2a361 diff --git a/tests/ref/fate/filter-pixfmts-crop b/tests/ref/fate/filter-pixfmts-crop index ca2e4a45cf..21c7c8d46b 100644 --- a/tests/ref/fate/filter-pixfmts-crop +++ b/tests/ref/fate/filter-pixfmts-crop @@ -128,8 +128,12 @@ yuv411p 693e4afe96998e6dd91734037d75d887 yuv420p 510d36163e4d3710988c23c2240ca6dc yuv420p10be ce9af476d924b463b0f68579f30a6463 yuv420p10le 65214f2af95e816bbe303fa0649ecc84 +yuv420p10msbbe 1a4692f3d0d38516452fc984f91b7ad7 +yuv420p10msble 45f2034adb4616958f17a83aec581276 yuv420p12be f86f763eb2ae76d12226009e5f9595d7 yuv420p12le 3741f6a4ccd368d0e9d00ecdebdde0c9 +yuv420p12msbbe 1a4692f3d0d38516452fc984f91b7ad7 +yuv420p12msble 45f2034adb4616958f17a83aec581276 yuv420p14be 5544e5fc40e718e608c0bd8c7b1d0812 yuv420p14le 2c763a71c7c4650b91b405634556e21c yuv420p16be c22f72b460beef22b0bf80806c43b25f @@ -139,8 +143,12 @@ yuv420p9le fe0215f5683437bd5a10b6255344109e yuv422p 42ea5e9a22df5913b2ec75512162e533 yuv422p10be 3956017f5023ff5d56b4f814422dd711 yuv422p10le a5fa7cb6a21bcbb60ae3ba4a9f4e60e0 +yuv422p10msbbe d4267abe90750908e7b0cf35a7967770 +yuv422p10msble 478f06c71824c538f0018913753ed21f yuv422p12be 3a7cdaa7671394aae514d60c529e099d yuv422p12le 3369b2b6eed18a450ab0a5581335e375 +yuv422p12msbbe 25cdfe8bfdae924f96a350f1bc58633a +yuv422p12msble 2d8905cbcb9eaf0d1084a59515fd22c7 yuv422p14be 845c42b333e331a556008ef0a16afc85 yuv422p14le abcdaccf8d01a9133daca94383d27db7 yuv422p16be 565299a5d6265c77d00fd1a1d0173834 diff --git a/tests/ref/fate/filter-pixfmts-field b/tests/ref/fate/filter-pixfmts-field index 00ba61e49a..5b80ffb0de 100644 --- a/tests/ref/fate/filter-pixfmts-field +++ b/tests/ref/fate/filter-pixfmts-field @@ -134,8 +134,12 @@ yuv411p 9106e283d5dbcfba01c611886d58871a yuv420p 9ea8ed3c22c31c0354b7face540bb280 yuv420p10be c6e76d651b991c0814a3047b2b3a517c yuv420p10le 3bf226b758c0b53b893729d97e7bc602 +yuv420p10msbbe 1f810646bef6018891f613cd8e33d839 +yuv420p10msble a124c0b77e8b219da307439bcfb090a0 yuv420p12be 8d63ddea0b9a886e859fec778d72a1ef yuv420p12le f5b6dd8cd8b62fce64deac95aae916ef +yuv420p12msbbe 1f810646bef6018891f613cd8e33d839 +yuv420p12msble a124c0b77e8b219da307439bcfb090a0 yuv420p14be dda2c5c09b72b41a19943b3832ddd2d5 yuv420p14le e79f827393fb9344190bacacffe9978e yuv420p16be 62d08d547f857b254c1d31b5c40b20a6 @@ -145,8 +149,12 @@ yuv420p9le e9d061aad8e0d07226d41421797e6cbf yuv422p 9bd12ab1efe6c3fe6d9f639b97b79c7e yuv422p10be 6dd930ff81b89b71f6cadf757e0e8b3e yuv422p10le 5e314f06833b5016cc5cd76c611f7a48 +yuv422p10msbbe 59c40eae138ddd69ac7c9b1479e35a53 +yuv422p10msble bcb5e9da16ce5a910cead2e8bc3aee3e yuv422p12be 71c75f56a518f07be9946cbdb38b1d45 yuv422p12le 1351d615ca6a97f206d04b9c4bb2d130 +yuv422p12msbbe 4d2de6dedd0edf0c52704acad43758a9 +yuv422p12msble e7e7f4c7a00fc175e9e8a0ade99efa8a yuv422p14be d3d1d29966b9737dc8bbc31c6d215c9e yuv422p14le 3ba9d5d2a32dc3e0ec025100621e20f9 yuv422p16be ed49651e67f96c34649762f4678091de diff --git a/tests/ref/fate/filter-pixfmts-fieldorder b/tests/ref/fate/filter-pixfmts-fieldorder index 2cdfa25236..aebcb2d26e 100644 --- a/tests/ref/fate/filter-pixfmts-fieldorder +++ b/tests/ref/fate/filter-pixfmts-fieldorder @@ -122,8 +122,12 @@ yuv411p e4a040e0e786c4dae07d9d3f90a54905 yuv422p 16ce67249c6ce7ef57a433646ad6dfc1 yuv422p10be 62ae323dcc41aabf8ff6ecc53b119ce8 yuv422p10le 60b20ad8c01ad7ea774ce1d74d8932ba +yuv422p10msbbe 7b79dbcb696575ab55717e2a5d2eb223 +yuv422p10msble b182fe96adaa08f5b1fa55a0efea76fe yuv422p12be 7bcb3e28323dbf566512b5b8a1d33380 yuv422p12le 5877624df10122dd51c173f814bd5414 +yuv422p12msbbe 478e1a8ef5703e1a1eca438a9387446e +yuv422p12msble 3000948ea9fe3975f21108b3effef999 yuv422p14be 8bd7bfb0b35d68000ba57af66958ef2d yuv422p14le 471c7528e3da240d0a40f33548cbfbab yuv422p16be 8c193a8b6064e2379b2fb211cd2e6e37 diff --git a/tests/ref/fate/filter-pixfmts-hflip b/tests/ref/fate/filter-pixfmts-hflip index c65d926b76..fe6299d558 100644 --- a/tests/ref/fate/filter-pixfmts-hflip +++ b/tests/ref/fate/filter-pixfmts-hflip @@ -128,8 +128,12 @@ yuv411p c416371077dce13d31bf1dc706111ae7 yuv420p eb8d9f02db98e10400781428c43e9438 yuv420p10be 5cd5c8181248b2dbdc7a8669caca3ed7 yuv420p10le 95a92ee031fdb8812661c019d925fad0 +yuv420p10msbbe 1328786116716a03e66f7a219e79157e +yuv420p10msble 8a65eaccf8e9be58d29a5c6cdbb85eb6 yuv420p12be 8fe5d344a1576aba7892e855d2790df9 yuv420p12le c0897e2b53c1417fcf0cfbdbf9f54163 +yuv420p12msbbe 1328786116716a03e66f7a219e79157e +yuv420p12msble 8a65eaccf8e9be58d29a5c6cdbb85eb6 yuv420p14be c5758d8062c61248110485243a75b712 yuv420p14le e283871dec73c853421d3aa098f071a7 yuv420p16be da4f5b6e537edf9cdea48a60defe520e @@ -139,8 +143,12 @@ yuv420p9le 49eac58088b3e1cac170911382e2bb9d yuv422p 5aade4d118cd7243800a08d300033748 yuv422p10be a12d0957b703bd54cd569664b821ca3e yuv422p10le 8b6ac98276b10b7e540a5f689e5453fa +yuv422p10msbbe 00637422bfaee1098b25568f3445cfd8 +yuv422p10msble 4fb8abce8d4220dc760e9e771ef99b4b yuv422p12be b5d2142e6ccd9f69dee2c0643b14a741 yuv422p12le da75ea80662636c698986cdeab334669 +yuv422p12msbbe 46fde81861485aff4c0a4b408452f6ee +yuv422p12msble c388a19ec53170c5d4a4fd6aeb52126c yuv422p14be 027a593f148a96ff9e37a35e55608818 yuv422p14le 4c1de1ce4f199ab8e94a28bf79ecedb6 yuv422p16be 3d4b525c8056b740a4afa5b86cd79cd3 diff --git a/tests/ref/fate/filter-pixfmts-il b/tests/ref/fate/filter-pixfmts-il index 268593a54d..092bc73211 100644 --- a/tests/ref/fate/filter-pixfmts-il +++ b/tests/ref/fate/filter-pixfmts-il @@ -133,8 +133,12 @@ yuv411p 8bf73777a5ff43c126be274245aceff1 yuv420p f1f4e7e94a76d5320049464bdeac24ed yuv420p10be f7839393b65972595bdcb2485c6bf2a1 yuv420p10le cb00b1fc299baff8bc31086d8571fed6 +yuv420p10msbbe b2224a3253b2b1ceacd61579ba56bc5c +yuv420p10msble 47a88651e0b53d19c76f7276985aea8b yuv420p12be e5bba4d9f2299e98e69c9347234545c8 yuv420p12le 7110d2862c1da19e0298029383d31dab +yuv420p12msbbe b2224a3253b2b1ceacd61579ba56bc5c +yuv420p12msble 47a88651e0b53d19c76f7276985aea8b yuv420p14be 240357c01079020ccc3d9287b5821a1b yuv420p14le f7d0f5f5e72455b238897ed87cf67b3c yuv420p16be 8195046b708c613b3ca521c95db529ab @@ -144,8 +148,12 @@ yuv420p9le f8a4a93f98743cdd8d0ebadba2f8028a yuv422p da122be331a53ec389ab6b2064488beb yuv422p10be 956f3c496807e62a288501e183fafad0 yuv422p10le 43f99eb0d8abd1754572f77e430d4c41 +yuv422p10msbbe 025aa280d71a15d70d7f648a2a9ac534 +yuv422p10msble eb095cbae2c81047b81b6304f1ed5d02 yuv422p12be 9e8e40a95c4c762274e22026d16a4157 yuv422p12le 28a5b358a919297c005bc491c91b2b15 +yuv422p12msbbe 32545dac0863e386726dd252f42f009e +yuv422p12msble e18a87e59ef68b2b12045b333076efa3 yuv422p14be ccff1e00f5d3adb899f1c266b22c9628 yuv422p14le f8a3bcbf8c55b1f570c078ff2f436b1f yuv422p16be 7f2363ccb6e69241c70411b6d063a2fe diff --git a/tests/ref/fate/filter-pixfmts-null b/tests/ref/fate/filter-pixfmts-null index 1e08ee60b1..63a26d1385 100644 --- a/tests/ref/fate/filter-pixfmts-null +++ b/tests/ref/fate/filter-pixfmts-null @@ -134,8 +134,12 @@ yuv411p 7e1300e89f5bc07939e2c4a6acbdf267 yuv420p a014c7eb7a8385d1dd092b7a583f1bff yuv420p10be f9b154364efaa1af376fa6d8eeae6955 yuv420p10le 15c83294ef560d57f25d16ae6e0fc70c +yuv420p10msbbe 13a35f032d8b27fbe86be8581f0ec0b3 +yuv420p10msble 01400270da5519f681b48ab8212205c7 yuv420p12be 34da9c4e289124122ba36a9d4fb133fa yuv420p12le c19a477a07fcf88e37ab37b416d064c0 +yuv420p12msbbe 13a35f032d8b27fbe86be8581f0ec0b3 +yuv420p12msble 01400270da5519f681b48ab8212205c7 yuv420p14be 64779858686946fc0e780baf7c1391b6 yuv420p14le c1d012a4f9d54fbc8b04fea96d85e903 yuv420p16be 268b07358d8dc733ee81d0b87990d5af @@ -145,8 +149,12 @@ yuv420p9le 83a6d32c91c15a3bc334bb9abf920654 yuv422p 74f8006b4482db104f1986f49807a0af yuv422p10be 7291903c3c0cf4e5456dd9673a619f1d yuv422p10le 14cbaa728e888534359b9dddc5430f08 +yuv422p10msbbe 84584da376799390599031f77fbd0aee +yuv422p10msble 06d4727c5c4d178736445bddcd9b03a0 yuv422p12be e9bc7f2da217fade40feb6960dcd894e yuv422p12le 8d8184e4d0f1eb50e1834ac0c4af8c33 +yuv422p12msbbe bdf57a55ed1957997671d42535a1156f +yuv422p12msble fa213f34ebb3042349b3b8b88070f132 yuv422p14be 2617c569ae9659d8fe6a01f96e2c9657 yuv422p14le 7d01363cf090306cf93337c474cd8827 yuv422p16be 86147d8bfb795ab1873c899611e2a361 diff --git a/tests/ref/fate/filter-pixfmts-pad b/tests/ref/fate/filter-pixfmts-pad index a57069f61f..acd893add5 100644 --- a/tests/ref/fate/filter-pixfmts-pad +++ b/tests/ref/fate/filter-pixfmts-pad @@ -57,13 +57,17 @@ yuv410p cb871dcc1e84a7ef1d21f9237b88cf6e yuv411p aec2c1740de9a62db0d41f4dda9121b0 yuv420p 4398e408fc35436ce4b20468946f58b6 yuv420p10le a7d29bbe4e103fc0fb62b465f9540efa +yuv420p10msble c2811b855eccc728160bd4881708186f yuv420p12le dafaf94e8d16cd846623dcaba0bc81b3 +yuv420p12msble c2811b855eccc728160bd4881708186f yuv420p14le ec80062819bc67f8866ba5105d8378ad yuv420p16le 83e437e3d6b7418c4163c24d41e199fa yuv420p9le 98a3bede99321386b9abab7926a9f553 yuv422p e43d68568d9f782908ba56bf1e09d5d5 yuv422p10le e3ec30aacff6c8abf6fe035a195ccd26 +yuv422p10msble c5e38f841a7c5e4483f8eec19065574f yuv422p12le 921b8d532cf5d0eca4ab0fe9c6d4fef5 +yuv422p12msble 4bcd7f0ab997b8300a01d06b31eba0db yuv422p14le dc41548f336883e9fd9664f329bd2a0c yuv422p16le 04c87d2fd42cba290a4d4099760e3ee4 yuv422p9le 994a41c11610075c7b0c466f738f49e7 diff --git a/tests/ref/fate/filter-pixfmts-scale b/tests/ref/fate/filter-pixfmts-scale index 87752c6c4f..dbd0f9ac28 100644 --- a/tests/ref/fate/filter-pixfmts-scale +++ b/tests/ref/fate/filter-pixfmts-scale @@ -134,8 +134,12 @@ yuv411p 5af32557c93beb482e26e7af693104c6 yuv420p 5d3ac239c3712143560b1dfbd48a7ddd yuv420p10be 95256d0cefca26429b2f41aabc9bee04 yuv420p10le 1aae90a2cff18e516f004dae77ac78f7 +yuv420p10msbbe 1bba3bf10a2ececfdcbbf50173667cdd +yuv420p10msble 8c01be0bf01d17ef0390163c9c2f37d9 yuv420p12be 25a6da0f8045bc7bdeda544e1cf2387b yuv420p12le c6e40a0851e1237281cd6500bef7a1fa +yuv420p12msbbe 70ece70c1e117c4666b63e8d44321f13 +yuv420p12msble d216ed2391bc99dcefe2ade54abfac9c yuv420p14be b202fde5a53d529ddaa35c9467ff0b61 yuv420p14le 36cac5d88b0d566cf835e84da6513e5a yuv420p16be 6f307c5b1a5941023f9029cb3a616f5c @@ -145,8 +149,12 @@ yuv420p9le 0e6ade4219bdcbce32eceafc80d995d7 yuv422p 9823e4d6bd1482b0cab3c44dab67f0a7 yuv422p10be 42b9b936392b4a6a678028ace2cdcd20 yuv422p10le 4bdc5e9ab3a16409600887335dbb1a66 +yuv422p10msbbe b3c067b20202c4e892630cd72743d909 +yuv422p10msble d84eb3f8f33e9dc6b753d3b12033771b yuv422p12be af6ec8146dd7860b510017c22e8d0c80 yuv422p12le d69676f61d2693cfd163b3ce3f79fb56 +yuv422p12msbbe 54b08dcf6c243aee5f50ecd795c80a29 +yuv422p12msble 39ed974d5f1ceb28b56e298b81a08463 yuv422p14be 2a005a86b80b947c953d11ae170551c7 yuv422p14le dcbde0634eb70bed62dde097c80a1643 yuv422p16be a772b46454e415ce454c0999ebb71486 diff --git a/tests/ref/fate/filter-pixfmts-transpose b/tests/ref/fate/filter-pixfmts-transpose index 8f36938517..d5554e6c1b 100644 --- a/tests/ref/fate/filter-pixfmts-transpose +++ b/tests/ref/fate/filter-pixfmts-transpose @@ -117,8 +117,12 @@ yuv410p 4c0143429edd30aa01493447c90132ea yuv420p 2fa5b2201c75034206cc20e2c6134aed yuv420p10be 0931660f930d9be8aea9d0c76b406055 yuv420p10le 9ce12b168c49db871836c979b526c1f1 +yuv420p10msbbe c3ba380ff4a14b651c05d4c863c897c2 +yuv420p10msble 62b90f6ee22bbcb17ee6bb879a292600 yuv420p12be 73d6be4230b6f4e4e269977afab56323 yuv420p12le 6938815c8acd690138506cbb5f005fb8 +yuv420p12msbbe c3ba380ff4a14b651c05d4c863c897c2 +yuv420p12msble 62b90f6ee22bbcb17ee6bb879a292600 yuv420p14be bf76a805b9c2f9808c73492d3b8da268 yuv420p14le 5df47483b89ffe6ef4bbf14058d7d3b3 yuv420p16be 3a64132681656be6db635f4e6a282dc9 diff --git a/tests/ref/fate/filter-pixfmts-vflip b/tests/ref/fate/filter-pixfmts-vflip index 2984864e91..5a9453eb37 100644 --- a/tests/ref/fate/filter-pixfmts-vflip +++ b/tests/ref/fate/filter-pixfmts-vflip @@ -134,8 +134,12 @@ yuv411p 3fce29db403a25f81be39e01aaf6ff3a yuv420p d64fae96fac22aefa8fbcf45a09f37c1 yuv420p10be 63f545453139f38883cfa1210f7b6ac5 yuv420p10le 925de8b0bf9519c4b841afab4dd6bb25 +yuv420p10msbbe 04cce3d17a60b419cfb4e914f9b80809 +yuv420p10msble 7ccfb29763104c20a2e391b91a8cc07b yuv420p12be 619425168c3b8bb9da68e7810bf5eacf yuv420p12le 403d7d96939fa538b04f7b7b26ac6868 +yuv420p12msbbe 04cce3d17a60b419cfb4e914f9b80809 +yuv420p12msble 7ccfb29763104c20a2e391b91a8cc07b yuv420p14be 22d2d9fb5883410807ede4066e735426 yuv420p14le 5cace6a24a1ff5d2a41a3c909c4bc41f yuv420p16be 0a6499a1b22230ad030448d3ac95b5c1 @@ -145,8 +149,12 @@ yuv420p9le c3ec4bffc19c49edafd769a7dfccd9c1 yuv422p 54f608c9d8bc56979aeaa7863820f5d3 yuv422p10be fbd6329d2decbe318be4d89dc8ade3a3 yuv422p10le 7d7bdf4f68d8a7698e92722625c59c53 +yuv422p10msbbe c76f9021a6efd9d354de1ce265d9924d +yuv422p10msble 6af065da37a04ad1db95d4061f129d41 yuv422p12be d6ca250820312bab977ce88d2ef65c13 yuv422p12le 3185b59dddc7ee67251d9829a977130b +yuv422p12msbbe 2a31770a165d72be6fc2f6a16337c297 +yuv422p12msble 661b82b6a48938b64c39abb1328b5b13 yuv422p14be 3bc3a72c7cf995981bd8eb45f23705b3 yuv422p14le 5987087bbc03d8cbff4c41bce03451d9 yuv422p16be 97d95a9cfe8f67fb20a4c983c7fdc215 diff --git a/tests/ref/fate/imgutils b/tests/ref/fate/imgutils index 738ce0289c..c4ad705b3d 100644 --- a/tests/ref/fate/imgutils +++ b/tests/ref/fate/imgutils @@ -310,6 +310,14 @@ gray10msbbe planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 gray10msble planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144 gray12msbbe planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144 gray12msble planes: 1, linesizes: 128 0 0 0, plane_sizes: 6144 0 0 0, plane_offsets: 0 0 0, total_size: 6144 +yuv420p10msbbe planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216 +yuv420p10msble planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216 +yuv420p12msbbe planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216 +yuv420p12msble planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 1536 1536 0, plane_offsets: 6144 1536 0, total_size: 9216 +yuv422p10msbbe planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288 +yuv422p10msble planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288 +yuv422p12msbbe planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288 +yuv422p12msble planes: 3, linesizes: 128 64 64 0, plane_sizes: 6144 3072 3072 0, plane_offsets: 6144 3072 0, total_size: 12288 image_fill_black tests yuv420p total_size: 4608, black_unknown_crc: 0xd00f6cc6, black_tv_crc: 0xd00f6cc6, black_pc_crc: 0x234969af @@ -567,3 +575,11 @@ gray10msbbe total_size: 6144, black_unknown_crc: 0x02d4a26f, black_tv_cr gray10msble total_size: 6144, black_unknown_crc: 0xb93165c3, black_tv_crc: 0xb93165c3, black_pc_crc: 0x00000000 gray12msbbe total_size: 6144, black_unknown_crc: 0x02d4a26f, black_tv_crc: 0x02d4a26f, black_pc_crc: 0x00000000 gray12msble total_size: 6144, black_unknown_crc: 0xb93165c3, black_tv_crc: 0xb93165c3, black_pc_crc: 0x00000000 +yuv420p10msbbe total_size: 9216, black_unknown_crc: 0x4d4d9903, black_tv_crc: 0x4d4d9903, black_pc_crc: 0x69c6fe01 +yuv420p10msble total_size: 9216, black_unknown_crc: 0xfff85b60, black_tv_crc: 0xfff85b60, black_pc_crc: 0xc03cff93 +yuv420p12msbbe total_size: 9216, black_unknown_crc: 0x4d4d9903, black_tv_crc: 0x4d4d9903, black_pc_crc: 0x69c6fe01 +yuv420p12msble total_size: 9216, black_unknown_crc: 0xfff85b60, black_tv_crc: 0xfff85b60, black_pc_crc: 0xc03cff93 +yuv422p10msbbe total_size: 12288, black_unknown_crc: 0x0bbe5df7, black_tv_crc: 0x0bbe5df7, black_pc_crc: 0x16a51378 +yuv422p10msble total_size: 12288, black_unknown_crc: 0x6582d6cf, black_tv_crc: 0x6582d6cf, black_pc_crc: 0xc9dc3ddf +yuv422p12msbbe total_size: 12288, black_unknown_crc: 0x0bbe5df7, black_tv_crc: 0x0bbe5df7, black_pc_crc: 0x16a51378 +yuv422p12msble total_size: 12288, black_unknown_crc: 0x6582d6cf, black_tv_crc: 0x6582d6cf, black_pc_crc: 0xc9dc3ddf diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query index af421b4eee..baca687697 100644 --- a/tests/ref/fate/sws-pixdesc-query +++ b/tests/ref/fate/sws-pixdesc-query @@ -115,6 +115,8 @@ isNBPS: y212le yuv420p10be yuv420p10le + yuv420p10msbbe + yuv420p10msble yuv420p12be yuv420p12le yuv420p14be @@ -123,6 +125,8 @@ isNBPS: yuv420p9le yuv422p10be yuv422p10le + yuv422p10msbbe + yuv422p10msble yuv422p12be yuv422p12le yuv422p14be @@ -234,11 +238,13 @@ isBE: yaf16be yaf32be yuv420p10be + yuv420p10msbbe yuv420p12be yuv420p14be yuv420p16be yuv420p9be yuv422p10be + yuv422p10msbbe yuv422p12be yuv422p14be yuv422p16be @@ -327,6 +333,8 @@ isYUV: yuv420p yuv420p10be yuv420p10le + yuv420p10msbbe + yuv420p10msble yuv420p12be yuv420p12le yuv420p14be @@ -338,6 +346,8 @@ isYUV: yuv422p yuv422p10be yuv422p10le + yuv422p10msbbe + yuv422p10msble yuv422p12be yuv422p12le yuv422p14be @@ -430,6 +440,8 @@ isPlanarYUV: yuv420p yuv420p10be yuv420p10le + yuv420p10msbbe + yuv420p10msble yuv420p12be yuv420p12le yuv420p14be @@ -441,6 +453,8 @@ isPlanarYUV: yuv422p yuv422p10be yuv422p10le + yuv422p10msbbe + yuv422p10msble yuv422p12be yuv422p12le yuv422p14be @@ -1050,6 +1064,8 @@ Planar: yuv420p yuv420p10be yuv420p10le + yuv420p10msbbe + yuv420p10msble yuv420p12be yuv420p12le yuv420p14be @@ -1061,6 +1077,8 @@ Planar: yuv422p yuv422p10be yuv422p10le + yuv422p10msbbe + yuv422p10msble yuv422p12be yuv422p12le yuv422p14be @@ -1259,6 +1277,10 @@ DataInHighBits: y210le y212be y212le + yuv420p10msbbe + yuv420p10msble + yuv422p10msbbe + yuv422p10msble yuv444p10msbbe yuv444p10msble yuv444p12msbbe -- 2.49.1 >>From 13940c10ca45f9bae9b35ef8d585db7433f45286 Mon Sep 17 00:00:00 2001 From: Lynne Date: Sun, 26 Oct 2025 23:36:33 +0100 Subject: [PATCH 3/9] swscale: add support for 10/12-bit grayscale MSB pixfmts --- libswscale/format.c | 8 ++++++++ libswscale/input.c | 4 ++++ libswscale/swscale_unscaled.c | 2 ++ 3 files changed, 14 insertions(+) diff --git a/libswscale/format.c b/libswscale/format.c index 9741688e98..d2befcf55f 100644 --- a/libswscale/format.c +++ b/libswscale/format.c @@ -91,6 +91,10 @@ static const LegacyFormatEntry legacy_format_entries[] = { [AV_PIX_FMT_GRAY14LE] = { 1, 1 }, [AV_PIX_FMT_GRAY16BE] = { 1, 1 }, [AV_PIX_FMT_GRAY16LE] = { 1, 1 }, + [AV_PIX_FMT_GRAY10MSBBE] = { 1, 1 }, + [AV_PIX_FMT_GRAY10MSBLE] = { 1, 1 }, + [AV_PIX_FMT_GRAY12MSBBE] = { 1, 1 }, + [AV_PIX_FMT_GRAY12MSBLE] = { 1, 1 }, [AV_PIX_FMT_YUV440P] = { 1, 1 }, [AV_PIX_FMT_YUVJ440P] = { 1, 1 }, [AV_PIX_FMT_YUV440P10LE] = { 1, 1 }, @@ -979,6 +983,10 @@ static int fmt_read_write(enum AVPixelFormat fmt, SwsReadWriteOp *rw_op, case AV_PIX_FMT_GRAY14LE: case AV_PIX_FMT_GRAY16BE: case AV_PIX_FMT_GRAY16LE: + case AV_PIX_FMT_GRAY10MSBBE: + case AV_PIX_FMT_GRAY10MSBLE: + case AV_PIX_FMT_GRAY12MSBBE: + case AV_PIX_FMT_GRAY12MSBLE: //case AV_PIX_FMT_GRAYF16BE: TODO //case AV_PIX_FMT_GRAYF16LE: //case AV_PIX_FMT_YAF16BE: diff --git a/libswscale/input.c b/libswscale/input.c index eb4eb3101e..fd19d1a257 100644 --- a/libswscale/input.c +++ b/libswscale/input.c @@ -2469,15 +2469,19 @@ av_cold void ff_sws_init_input_funcs(SwsInternal *c, *alpToYV12 = bswap16Y_c; break; #endif + case AV_PIX_FMT_GRAY10MSBLE: case AV_PIX_FMT_YUV444P10MSBLE: *lumToYV12 = shf16_10LEToY_c; break; + case AV_PIX_FMT_GRAY12MSBLE: case AV_PIX_FMT_YUV444P12MSBLE: *lumToYV12 = shf16_12LEToY_c; break; + case AV_PIX_FMT_GRAY10MSBBE: case AV_PIX_FMT_YUV444P10MSBBE: *lumToYV12 = shf16_10BEToY_c; break; + case AV_PIX_FMT_GRAY12MSBBE: case AV_PIX_FMT_YUV444P12MSBBE: *lumToYV12 = shf16_12BEToY_c; break; diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c index 2c791e89fe..3f9a83dd60 100644 --- a/libswscale/swscale_unscaled.c +++ b/libswscale/swscale_unscaled.c @@ -2560,6 +2560,8 @@ void ff_get_unscaled_swscale(SwsInternal *c) IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GRAY12) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GRAY14) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GRAY16) || + IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GRAY10MSB) || + IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GRAY12MSB) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YA16) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_AYUV64) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_GBRP9) || -- 2.49.1 >>From cae2a475553355cf7d13f77c5a158872485573b1 Mon Sep 17 00:00:00 2001 From: Lynne Date: Sun, 26 Oct 2025 23:24:08 +0100 Subject: [PATCH 4/9] swscale: add support for 10/12-bit 422 and 444 MSB pixfmts --- libswscale/format.c | 16 ++++++++++++++++ libswscale/input.c | 16 ++++++++++++++++ libswscale/swscale_unscaled.c | 4 ++++ tests/ref/fate/sws-pixdesc-query | 22 ++++++++++++++++++++++ 4 files changed, 58 insertions(+) diff --git a/libswscale/format.c b/libswscale/format.c index d2befcf55f..d57f6fee62 100644 --- a/libswscale/format.c +++ b/libswscale/format.c @@ -159,6 +159,10 @@ static const LegacyFormatEntry legacy_format_entries[] = { [AV_PIX_FMT_YUV420P12LE] = { 1, 1 }, [AV_PIX_FMT_YUV420P14BE] = { 1, 1 }, [AV_PIX_FMT_YUV420P14LE] = { 1, 1 }, + [AV_PIX_FMT_YUV420P10MSBBE] = { 1, 1 }, + [AV_PIX_FMT_YUV420P10MSBLE] = { 1, 1 }, + [AV_PIX_FMT_YUV420P12MSBBE] = { 1, 1 }, + [AV_PIX_FMT_YUV420P12MSBLE] = { 1, 1 }, [AV_PIX_FMT_YUV422P9BE] = { 1, 1 }, [AV_PIX_FMT_YUV422P9LE] = { 1, 1 }, [AV_PIX_FMT_YUV422P10BE] = { 1, 1 }, @@ -167,6 +171,10 @@ static const LegacyFormatEntry legacy_format_entries[] = { [AV_PIX_FMT_YUV422P12LE] = { 1, 1 }, [AV_PIX_FMT_YUV422P14BE] = { 1, 1 }, [AV_PIX_FMT_YUV422P14LE] = { 1, 1 }, + [AV_PIX_FMT_YUV422P10MSBBE] = { 1, 1 }, + [AV_PIX_FMT_YUV422P10MSBLE] = { 1, 1 }, + [AV_PIX_FMT_YUV422P12MSBBE] = { 1, 1 }, + [AV_PIX_FMT_YUV422P12MSBLE] = { 1, 1 }, [AV_PIX_FMT_YUV444P9BE] = { 1, 1 }, [AV_PIX_FMT_YUV444P9LE] = { 1, 1 }, [AV_PIX_FMT_YUV444P10BE] = { 1, 1 }, @@ -741,6 +749,10 @@ static int fmt_shift(enum AVPixelFormat fmt) case AV_PIX_FMT_P210LE: case AV_PIX_FMT_Y210BE: case AV_PIX_FMT_Y210LE: + case AV_PIX_FMT_YUV420P10MSBBE: + case AV_PIX_FMT_YUV420P10MSBLE: + case AV_PIX_FMT_YUV422P10MSBBE: + case AV_PIX_FMT_YUV422P10MSBLE: case AV_PIX_FMT_YUV444P10MSBBE: case AV_PIX_FMT_YUV444P10MSBLE: case AV_PIX_FMT_GBRP10MSBBE: @@ -756,6 +768,10 @@ static int fmt_shift(enum AVPixelFormat fmt) case AV_PIX_FMT_XV36LE: case AV_PIX_FMT_XYZ12BE: case AV_PIX_FMT_XYZ12LE: + case AV_PIX_FMT_YUV420P12MSBBE: + case AV_PIX_FMT_YUV420P12MSBLE: + case AV_PIX_FMT_YUV422P12MSBBE: + case AV_PIX_FMT_YUV422P12MSBLE: case AV_PIX_FMT_YUV444P12MSBBE: case AV_PIX_FMT_YUV444P12MSBLE: case AV_PIX_FMT_GBRP12MSBBE: diff --git a/libswscale/input.c b/libswscale/input.c index fd19d1a257..8efc42b57b 100644 --- a/libswscale/input.c +++ b/libswscale/input.c @@ -1992,15 +1992,23 @@ av_cold void ff_sws_init_input_funcs(SwsInternal *c, *chrToYV12 = bswap16UV_c; break; #endif + case AV_PIX_FMT_YUV420P10MSBLE: + case AV_PIX_FMT_YUV422P10MSBLE: case AV_PIX_FMT_YUV444P10MSBLE: *chrToYV12 = shf16_10LEToUV_c; break; + case AV_PIX_FMT_YUV420P12MSBLE: + case AV_PIX_FMT_YUV422P12MSBLE: case AV_PIX_FMT_YUV444P12MSBLE: *chrToYV12 = shf16_12LEToUV_c; break; + case AV_PIX_FMT_YUV420P10MSBBE: + case AV_PIX_FMT_YUV422P10MSBBE: case AV_PIX_FMT_YUV444P10MSBBE: *chrToYV12 = shf16_10BEToUV_c; break; + case AV_PIX_FMT_YUV420P12MSBBE: + case AV_PIX_FMT_YUV422P12MSBBE: case AV_PIX_FMT_YUV444P12MSBBE: *chrToYV12 = shf16_12BEToUV_c; break; @@ -2470,18 +2478,26 @@ av_cold void ff_sws_init_input_funcs(SwsInternal *c, break; #endif case AV_PIX_FMT_GRAY10MSBLE: + case AV_PIX_FMT_YUV420P10MSBLE: + case AV_PIX_FMT_YUV422P10MSBLE: case AV_PIX_FMT_YUV444P10MSBLE: *lumToYV12 = shf16_10LEToY_c; break; case AV_PIX_FMT_GRAY12MSBLE: + case AV_PIX_FMT_YUV420P12MSBLE: + case AV_PIX_FMT_YUV422P12MSBLE: case AV_PIX_FMT_YUV444P12MSBLE: *lumToYV12 = shf16_12LEToY_c; break; case AV_PIX_FMT_GRAY10MSBBE: + case AV_PIX_FMT_YUV420P10MSBBE: + case AV_PIX_FMT_YUV422P10MSBBE: case AV_PIX_FMT_YUV444P10MSBBE: *lumToYV12 = shf16_10BEToY_c; break; case AV_PIX_FMT_GRAY12MSBBE: + case AV_PIX_FMT_YUV420P12MSBBE: + case AV_PIX_FMT_YUV422P12MSBBE: case AV_PIX_FMT_YUV444P12MSBBE: *lumToYV12 = shf16_12BEToY_c; break; diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c index 3f9a83dd60..d169a3b498 100644 --- a/libswscale/swscale_unscaled.c +++ b/libswscale/swscale_unscaled.c @@ -2588,11 +2588,15 @@ void ff_get_unscaled_swscale(SwsInternal *c) IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV420P12) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV420P14) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV420P16) || + IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV420P10MSB) || + IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV420P12MSB) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV422P9) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV422P10) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV422P12) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV422P14) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV422P16) || + IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV422P10MSB) || + IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV422P12MSB) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV440P10) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV440P12) || IS_DIFFERENT_ENDIANESS(srcFormat, dstFormat, AV_PIX_FMT_YUV444P9) || diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query index baca687697..bee2c65b9d 100644 --- a/tests/ref/fate/sws-pixdesc-query +++ b/tests/ref/fate/sws-pixdesc-query @@ -119,6 +119,8 @@ isNBPS: yuv420p10msble yuv420p12be yuv420p12le + yuv420p12msbbe + yuv420p12msble yuv420p14be yuv420p14le yuv420p9be @@ -129,6 +131,8 @@ isNBPS: yuv422p10msble yuv422p12be yuv422p12le + yuv422p12msbbe + yuv422p12msble yuv422p14be yuv422p14le yuv422p9be @@ -240,12 +244,14 @@ isBE: yuv420p10be yuv420p10msbbe yuv420p12be + yuv420p12msbbe yuv420p14be yuv420p16be yuv420p9be yuv422p10be yuv422p10msbbe yuv422p12be + yuv422p12msbbe yuv422p14be yuv422p16be yuv422p9be @@ -337,6 +343,8 @@ isYUV: yuv420p10msble yuv420p12be yuv420p12le + yuv420p12msbbe + yuv420p12msble yuv420p14be yuv420p14le yuv420p16be @@ -350,6 +358,8 @@ isYUV: yuv422p10msble yuv422p12be yuv422p12le + yuv422p12msbbe + yuv422p12msble yuv422p14be yuv422p14le yuv422p16be @@ -444,6 +454,8 @@ isPlanarYUV: yuv420p10msble yuv420p12be yuv420p12le + yuv420p12msbbe + yuv420p12msble yuv420p14be yuv420p14le yuv420p16be @@ -457,6 +469,8 @@ isPlanarYUV: yuv422p10msble yuv422p12be yuv422p12le + yuv422p12msbbe + yuv422p12msble yuv422p14be yuv422p14le yuv422p16be @@ -1068,6 +1082,8 @@ Planar: yuv420p10msble yuv420p12be yuv420p12le + yuv420p12msbbe + yuv420p12msble yuv420p14be yuv420p14le yuv420p16be @@ -1081,6 +1097,8 @@ Planar: yuv422p10msble yuv422p12be yuv422p12le + yuv422p12msbbe + yuv422p12msble yuv422p14be yuv422p14le yuv422p16be @@ -1279,8 +1297,12 @@ DataInHighBits: y212le yuv420p10msbbe yuv420p10msble + yuv420p12msbbe + yuv420p12msble yuv422p10msbbe yuv422p10msble + yuv422p12msbbe + yuv422p12msble yuv444p10msbbe yuv444p10msble yuv444p12msbbe -- 2.49.1 >>From 9a2b1421ae4c870bf9c811ff4170789c63e944d1 Mon Sep 17 00:00:00 2001 From: Lynne Date: Sun, 26 Oct 2025 22:36:33 +0100 Subject: [PATCH 5/9] lavu: bump minor and add APIchanges entry for the new pixfmts --- doc/APIchanges | 5 +++++ libavutil/version.h | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/doc/APIchanges b/doc/APIchanges index 3ec8e25f03..8d24f22473 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,11 @@ The last version increases of all libraries were on 2025-03-28 API changes, most recent first: +2025-10-xx - xxxxxxxxxx - lavu 60.15.100 - pixfmt.h + Add AV_PIX_FMT_GRAY10MSB, AV_PIX_FMT_GRAY12MSB, + AV_PIX_FMT_YUV420P10MSB, AV_PIX_FMT_YUV420P12MSB, + AV_PIX_FMT_YUV422P10MSB, AV_PIX_FMT_YUV422P12MSB. + 2025-10-xx - xxxxxxxxxx - lavu 60.14.100 - csp.h Add av_csp_approximate_eotf_gamma(). diff --git a/libavutil/version.h b/libavutil/version.h index 176b99aef3..f2c554a560 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 60 -#define LIBAVUTIL_VERSION_MINOR 14 +#define LIBAVUTIL_VERSION_MINOR 15 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ -- 2.49.1 >>From 0c45cf6ba511fbdb286ea6e08d139b8f7343bc7a Mon Sep 17 00:00:00 2001 From: Lynne Date: Sun, 26 Oct 2025 21:51:51 +0100 Subject: [PATCH 6/9] hwcontext_vulkan: fix grayscale 10 and 12-bit formats using the new MSB formats --- libavcodec/vulkan_decode.c | 3 +++ libavcodec/vulkan_video.c | 2 ++ libavutil/hwcontext_vulkan.c | 4 ++-- libavutil/vulkan.c | 4 ++-- 4 files changed, 9 insertions(+), 4 deletions(-) diff --git a/libavcodec/vulkan_decode.c b/libavcodec/vulkan_decode.c index cbf2ab8194..0e03df1ccb 100644 --- a/libavcodec/vulkan_decode.c +++ b/libavcodec/vulkan_decode.c @@ -1113,6 +1113,9 @@ int ff_vk_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx) hwfc->create_pnext = &prof->profile_list; } else { switch (frames_ctx->sw_format) { + /* Vulkan's formats are all LSB-padded */ + case AV_PIX_FMT_GRAY10: frames_ctx->sw_format = AV_PIX_FMT_GRAY10MSB; break; + case AV_PIX_FMT_GRAY12: frames_ctx->sw_format = AV_PIX_FMT_GRAY12MSB; break; case AV_PIX_FMT_GBRAP16: /* This should be more efficient for downloading and using */ frames_ctx->sw_format = AV_PIX_FMT_RGBA64; diff --git a/libavcodec/vulkan_video.c b/libavcodec/vulkan_video.c index 819940460f..471cfd5ad5 100644 --- a/libavcodec/vulkan_video.c +++ b/libavcodec/vulkan_video.c @@ -29,6 +29,8 @@ static const struct FFVkFormatMapEntry { } vk_format_map[] = { /* Gray formats */ { VK_FORMAT_R8_UNORM, AV_PIX_FMT_GRAY8, VK_IMAGE_ASPECT_COLOR_BIT }, + { VK_FORMAT_R10X6_UNORM_PACK16, AV_PIX_FMT_GRAY10MSB, VK_IMAGE_ASPECT_COLOR_BIT }, + { VK_FORMAT_R12X4_UNORM_PACK16, AV_PIX_FMT_GRAY12MSB, VK_IMAGE_ASPECT_COLOR_BIT }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GRAY16, VK_IMAGE_ASPECT_COLOR_BIT }, { VK_FORMAT_R32_SFLOAT, AV_PIX_FMT_GRAYF32, VK_IMAGE_ASPECT_COLOR_BIT }, diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index ae4b07c698..8af99fda54 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -359,8 +359,8 @@ static const struct FFVkFormatEntry { } vk_formats_list[] = { /* Gray formats */ { VK_FORMAT_R8_UNORM, AV_PIX_FMT_GRAY8, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GRAY10, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GRAY12, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_R10X6_UNORM_PACK16, AV_PIX_FMT_GRAY10MSB, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_R12X4_UNORM_PACK16, AV_PIX_FMT_GRAY12MSB, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GRAY14, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GRAY16, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R32_UINT, AV_PIX_FMT_GRAY32, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R32_UINT } }, diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index ef755ad6f7..8a14f8a6c3 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -1672,8 +1672,8 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt, }; return rep_tab[rep_fmt]; }; - case AV_PIX_FMT_GRAY10: - case AV_PIX_FMT_GRAY12: + case AV_PIX_FMT_GRAY10MSB: + case AV_PIX_FMT_GRAY12MSB: case AV_PIX_FMT_GRAY14: case AV_PIX_FMT_GRAY16: case AV_PIX_FMT_GBRAP10: -- 2.49.1 >>From be971104cbe30b3d2ee494e06021d5f350f4b42a Mon Sep 17 00:00:00 2001 From: Lynne Date: Sun, 26 Oct 2025 20:12:15 +0000 Subject: [PATCH 7/9] hwcontext_vulkan: fix 3-plane 444 10 and 12-bit formats using the new MSB formats We previously tried to fudge this somehow, but the pixel formats are simply broken and we cannot use them without declaring them as MSB. --- libavcodec/vulkan_decode.c | 6 ++++++ libavcodec/vulkan_video.c | 12 ++++++------ libavutil/hwcontext_vulkan.c | 12 ++++++------ libavutil/vulkan.c | 12 ++++++------ 4 files changed, 24 insertions(+), 18 deletions(-) diff --git a/libavcodec/vulkan_decode.c b/libavcodec/vulkan_decode.c index 0e03df1ccb..760913b0e5 100644 --- a/libavcodec/vulkan_decode.c +++ b/libavcodec/vulkan_decode.c @@ -1116,6 +1116,12 @@ int ff_vk_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx) /* Vulkan's formats are all LSB-padded */ case AV_PIX_FMT_GRAY10: frames_ctx->sw_format = AV_PIX_FMT_GRAY10MSB; break; case AV_PIX_FMT_GRAY12: frames_ctx->sw_format = AV_PIX_FMT_GRAY12MSB; break; + case AV_PIX_FMT_YUV420P10: frames_ctx->sw_format = AV_PIX_FMT_YUV420P10MSB; break; + case AV_PIX_FMT_YUV420P12: frames_ctx->sw_format = AV_PIX_FMT_YUV420P12MSB; break; + case AV_PIX_FMT_YUV422P10: frames_ctx->sw_format = AV_PIX_FMT_YUV422P10MSB; break; + case AV_PIX_FMT_YUV422P12: frames_ctx->sw_format = AV_PIX_FMT_YUV422P12MSB; break; + case AV_PIX_FMT_YUV444P10: frames_ctx->sw_format = AV_PIX_FMT_YUV444P10MSB; break; + case AV_PIX_FMT_YUV444P12: frames_ctx->sw_format = AV_PIX_FMT_YUV444P12MSB; break; case AV_PIX_FMT_GBRAP16: /* This should be more efficient for downloading and using */ frames_ctx->sw_format = AV_PIX_FMT_RGBA64; diff --git a/libavcodec/vulkan_video.c b/libavcodec/vulkan_video.c index 471cfd5ad5..8c86882a55 100644 --- a/libavcodec/vulkan_video.c +++ b/libavcodec/vulkan_video.c @@ -73,16 +73,16 @@ static const struct FFVkFormatMapEntry { /* Three-plane 420, 422, 444 at 8, 10, 12 and 16 bits */ { VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, AV_PIX_FMT_YUV420P, ASPECT_3PLANE }, - { VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, AV_PIX_FMT_YUV420P10, ASPECT_3PLANE }, - { VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, AV_PIX_FMT_YUV420P12, ASPECT_3PLANE }, + { VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, AV_PIX_FMT_YUV420P10MSB, ASPECT_3PLANE }, + { VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, AV_PIX_FMT_YUV420P12MSB, ASPECT_3PLANE }, { VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, AV_PIX_FMT_YUV420P16, ASPECT_3PLANE }, { VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, AV_PIX_FMT_YUV422P, ASPECT_3PLANE }, - { VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, AV_PIX_FMT_YUV422P10, ASPECT_3PLANE }, - { VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, AV_PIX_FMT_YUV422P12, ASPECT_3PLANE }, + { VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, AV_PIX_FMT_YUV422P10MSB, ASPECT_3PLANE }, + { VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, AV_PIX_FMT_YUV422P12MSB, ASPECT_3PLANE }, { VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, AV_PIX_FMT_YUV422P16, ASPECT_3PLANE }, { VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, AV_PIX_FMT_YUV444P, ASPECT_3PLANE }, - { VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, AV_PIX_FMT_YUV444P10, ASPECT_3PLANE }, - { VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, AV_PIX_FMT_YUV444P12, ASPECT_3PLANE }, + { VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, AV_PIX_FMT_YUV444P10MSB, ASPECT_3PLANE }, + { VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, AV_PIX_FMT_YUV444P12MSB, ASPECT_3PLANE }, { VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, AV_PIX_FMT_YUV444P16, ASPECT_3PLANE }, /* Single plane 422 at 8, 10, 12 and 16 bits */ diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index 8af99fda54..519dea379b 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -424,16 +424,16 @@ static const struct FFVkFormatEntry { /* Three-plane 420, 422, 444 at 8, 10, 12 and 16 bits */ { VK_FORMAT_G8_B8_R8_3PLANE_420_UNORM, AV_PIX_FMT_YUV420P, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } }, - { VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, AV_PIX_FMT_YUV420P10, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, - { VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, AV_PIX_FMT_YUV420P12, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_420_UNORM_3PACK16, AV_PIX_FMT_YUV420P10MSB, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, AV_PIX_FMT_YUV420P12MSB, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_G16_B16_R16_3PLANE_420_UNORM, AV_PIX_FMT_YUV420P16, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_G8_B8_R8_3PLANE_422_UNORM, AV_PIX_FMT_YUV422P, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } }, - { VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, AV_PIX_FMT_YUV422P10, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, - { VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, AV_PIX_FMT_YUV422P12, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_422_UNORM_3PACK16, AV_PIX_FMT_YUV422P10MSB, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_422_UNORM_3PACK16, AV_PIX_FMT_YUV422P12MSB, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_G16_B16_R16_3PLANE_422_UNORM, AV_PIX_FMT_YUV422P16, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_G8_B8_R8_3PLANE_444_UNORM, AV_PIX_FMT_YUV444P, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } }, - { VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, AV_PIX_FMT_YUV444P10, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, - { VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, AV_PIX_FMT_YUV444P12, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_G10X6_B10X6_R10X6_3PLANE_444_UNORM_3PACK16, AV_PIX_FMT_YUV444P10MSB, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_G12X4_B12X4_R12X4_3PLANE_444_UNORM_3PACK16, AV_PIX_FMT_YUV444P12MSB, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_G16_B16_R16_3PLANE_444_UNORM, AV_PIX_FMT_YUV444P16, ASPECT_3PLANE, 3, 1, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, /* Single plane 422 at 8, 10, 12 and 16 bits */ diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index 8a14f8a6c3..7975ed27d2 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -1684,14 +1684,14 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt, case AV_PIX_FMT_GBRP12: case AV_PIX_FMT_GBRP14: case AV_PIX_FMT_GBRP16: - case AV_PIX_FMT_YUV420P10: - case AV_PIX_FMT_YUV420P12: + case AV_PIX_FMT_YUV420P10MSB: + case AV_PIX_FMT_YUV420P12MSB: case AV_PIX_FMT_YUV420P16: - case AV_PIX_FMT_YUV422P10: - case AV_PIX_FMT_YUV422P12: + case AV_PIX_FMT_YUV422P10MSB: + case AV_PIX_FMT_YUV422P12MSB: case AV_PIX_FMT_YUV422P16: - case AV_PIX_FMT_YUV444P10: - case AV_PIX_FMT_YUV444P12: + case AV_PIX_FMT_YUV444P10MSB: + case AV_PIX_FMT_YUV444P12MSB: case AV_PIX_FMT_YUV444P16: case AV_PIX_FMT_YUVA420P10: case AV_PIX_FMT_YUVA420P16: -- 2.49.1 >>From ce7fde4d5df243ce6fbde1b098da42f8fab2af53 Mon Sep 17 00:00:00 2001 From: Lynne Date: Mon, 27 Oct 2025 20:24:00 +0100 Subject: [PATCH 8/9] hwcontext_vulkan: fix planar 10 and 12-bit RGB formats using the new MSB formats --- libavcodec/ffv1enc_vulkan.c | 8 ++++---- libavcodec/vulkan_decode.c | 1 + libavcodec/vulkan_ffv1.c | 2 +- libavutil/hwcontext_vulkan.c | 4 ++-- libavutil/vulkan.c | 10 +++++----- 5 files changed, 13 insertions(+), 12 deletions(-) diff --git a/libavcodec/ffv1enc_vulkan.c b/libavcodec/ffv1enc_vulkan.c index a54180a98b..3d16eeac83 100644 --- a/libavcodec/ffv1enc_vulkan.c +++ b/libavcodec/ffv1enc_vulkan.c @@ -242,8 +242,8 @@ static int run_rct_search(AVCodecContext *avctx, FFVkExecContext *exec, .micro_version = f->micro_version, }; - if (avctx->sw_pix_fmt == AV_PIX_FMT_GBRP10 || - avctx->sw_pix_fmt == AV_PIX_FMT_GBRP12 || + if (avctx->sw_pix_fmt == AV_PIX_FMT_GBRP10MSB || + avctx->sw_pix_fmt == AV_PIX_FMT_GBRP12MSB || avctx->sw_pix_fmt == AV_PIX_FMT_GBRP14) memcpy(pd.fmt_lut, (int [4]) { 2, 1, 0, 3 }, 4*sizeof(int)); else @@ -503,8 +503,8 @@ static int vulkan_encode_ffv1_submit_frame(AVCodecContext *avctx, }; /* For some reason the C FFv1 encoder/decoder treats these differently */ - if (avctx->sw_pix_fmt == AV_PIX_FMT_GBRP10 || - avctx->sw_pix_fmt == AV_PIX_FMT_GBRP12 || + if (avctx->sw_pix_fmt == AV_PIX_FMT_GBRP10MSB || + avctx->sw_pix_fmt == AV_PIX_FMT_GBRP12MSB || avctx->sw_pix_fmt == AV_PIX_FMT_GBRP14) memcpy(pd.fmt_lut, (int [4]) { 2, 1, 0, 3 }, 4*sizeof(int)); else diff --git a/libavcodec/vulkan_decode.c b/libavcodec/vulkan_decode.c index 760913b0e5..11b4b32d5d 100644 --- a/libavcodec/vulkan_decode.c +++ b/libavcodec/vulkan_decode.c @@ -1116,6 +1116,7 @@ int ff_vk_frame_params(AVCodecContext *avctx, AVBufferRef *hw_frames_ctx) /* Vulkan's formats are all LSB-padded */ case AV_PIX_FMT_GRAY10: frames_ctx->sw_format = AV_PIX_FMT_GRAY10MSB; break; case AV_PIX_FMT_GRAY12: frames_ctx->sw_format = AV_PIX_FMT_GRAY12MSB; break; + case AV_PIX_FMT_GBRP12: frames_ctx->sw_format = AV_PIX_FMT_GBRP12MSB; break; case AV_PIX_FMT_YUV420P10: frames_ctx->sw_format = AV_PIX_FMT_YUV420P10MSB; break; case AV_PIX_FMT_YUV420P12: frames_ctx->sw_format = AV_PIX_FMT_YUV420P12MSB; break; case AV_PIX_FMT_YUV422P10: frames_ctx->sw_format = AV_PIX_FMT_YUV422P10MSB; break; diff --git a/libavcodec/vulkan_ffv1.c b/libavcodec/vulkan_ffv1.c index b02bc71683..3eb0484629 100644 --- a/libavcodec/vulkan_ffv1.c +++ b/libavcodec/vulkan_ffv1.c @@ -447,7 +447,7 @@ static int vk_ffv1_end_frame(AVCodecContext *avctx) /* For some reason the C FFv1 encoder/decoder treats these differently */ - if (sw_format == AV_PIX_FMT_GBRP10 || sw_format == AV_PIX_FMT_GBRP12 || + if (sw_format == AV_PIX_FMT_GBRP10MSB || sw_format == AV_PIX_FMT_GBRP12MSB || sw_format == AV_PIX_FMT_GBRP14) memcpy(pd.fmt_lut, (int [4]) { 2, 1, 0, 3 }, 4*sizeof(int)); else if (sw_format == AV_PIX_FMT_X2BGR10) diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index 519dea379b..65e545521a 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -386,8 +386,8 @@ static const struct FFVkFormatEntry { /* Planar RGB */ { VK_FORMAT_R8_UNORM, AV_PIX_FMT_GBRP, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRP10, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRP12, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_R10X6_UNORM_PACK16, AV_PIX_FMT_GBRP10MSB, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + { VK_FORMAT_R12X4_UNORM_PACK16, AV_PIX_FMT_GBRP12MSB, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRP14, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRP16, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R32_SFLOAT, AV_PIX_FMT_GBRPF32, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SFLOAT } }, diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index 7975ed27d2..3e3a15b5e5 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -1534,7 +1534,7 @@ int ff_vk_mt_is_np_rgb(enum AVPixelFormat pix_fmt) pix_fmt == AV_PIX_FMT_RGBA64 || pix_fmt == AV_PIX_FMT_RGB565 || pix_fmt == AV_PIX_FMT_BGR565 || pix_fmt == AV_PIX_FMT_BGR0 || pix_fmt == AV_PIX_FMT_0BGR || pix_fmt == AV_PIX_FMT_RGB0 || - pix_fmt == AV_PIX_FMT_GBRP10 || pix_fmt == AV_PIX_FMT_GBRP12 || + pix_fmt == AV_PIX_FMT_GBRP10MSB || pix_fmt == AV_PIX_FMT_GBRP12MSB || pix_fmt == AV_PIX_FMT_GBRP14 || pix_fmt == AV_PIX_FMT_GBRP16 || pix_fmt == AV_PIX_FMT_GBRAP || pix_fmt == AV_PIX_FMT_GBRAP10 || pix_fmt == AV_PIX_FMT_GBRAP12 || pix_fmt == AV_PIX_FMT_GBRAP14 || @@ -1557,8 +1557,8 @@ void ff_vk_set_perm(enum AVPixelFormat pix_fmt, int lut[4], int inv) case AV_PIX_FMT_GBRAP12: case AV_PIX_FMT_GBRAP14: case AV_PIX_FMT_GBRAP16: - case AV_PIX_FMT_GBRP10: - case AV_PIX_FMT_GBRP12: + case AV_PIX_FMT_GBRP10MSB: + case AV_PIX_FMT_GBRP12MSB: case AV_PIX_FMT_GBRP14: case AV_PIX_FMT_GBRP16: case AV_PIX_FMT_GBRPF32: @@ -1680,8 +1680,8 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt, case AV_PIX_FMT_GBRAP12: case AV_PIX_FMT_GBRAP14: case AV_PIX_FMT_GBRAP16: - case AV_PIX_FMT_GBRP10: - case AV_PIX_FMT_GBRP12: + case AV_PIX_FMT_GBRP10MSB: + case AV_PIX_FMT_GBRP12MSB: case AV_PIX_FMT_GBRP14: case AV_PIX_FMT_GBRP16: case AV_PIX_FMT_YUV420P10MSB: -- 2.49.1 >>From 9de6a426b7bc934ee93f248ff810fabd0566b5a8 Mon Sep 17 00:00:00 2001 From: Lynne Date: Sun, 26 Oct 2025 22:01:37 +0100 Subject: [PATCH 9/9] hwcontext_vulkan: remove unsupported/broken pixel formats We have no use for 14-bit pixel formats for now, so remove support for gray14, which was broken due to the LSB padding issue. Similarly YUVA at 10/12 bit was broken for the same reason. --- libavcodec/ffv1enc_vulkan.c | 6 ++---- libavcodec/vulkan_ffv1.c | 3 +-- libavutil/hwcontext_vulkan.c | 7 ------- libavutil/vulkan.c | 10 +--------- 4 files changed, 4 insertions(+), 22 deletions(-) diff --git a/libavcodec/ffv1enc_vulkan.c b/libavcodec/ffv1enc_vulkan.c index 3d16eeac83..0baeabd588 100644 --- a/libavcodec/ffv1enc_vulkan.c +++ b/libavcodec/ffv1enc_vulkan.c @@ -243,8 +243,7 @@ static int run_rct_search(AVCodecContext *avctx, FFVkExecContext *exec, }; if (avctx->sw_pix_fmt == AV_PIX_FMT_GBRP10MSB || - avctx->sw_pix_fmt == AV_PIX_FMT_GBRP12MSB || - avctx->sw_pix_fmt == AV_PIX_FMT_GBRP14) + avctx->sw_pix_fmt == AV_PIX_FMT_GBRP12MSB) memcpy(pd.fmt_lut, (int [4]) { 2, 1, 0, 3 }, 4*sizeof(int)); else ff_vk_set_perm(avctx->sw_pix_fmt, pd.fmt_lut, 1); @@ -504,8 +503,7 @@ static int vulkan_encode_ffv1_submit_frame(AVCodecContext *avctx, /* For some reason the C FFv1 encoder/decoder treats these differently */ if (avctx->sw_pix_fmt == AV_PIX_FMT_GBRP10MSB || - avctx->sw_pix_fmt == AV_PIX_FMT_GBRP12MSB || - avctx->sw_pix_fmt == AV_PIX_FMT_GBRP14) + avctx->sw_pix_fmt == AV_PIX_FMT_GBRP12MSB) memcpy(pd.fmt_lut, (int [4]) { 2, 1, 0, 3 }, 4*sizeof(int)); else ff_vk_set_perm(avctx->sw_pix_fmt, pd.fmt_lut, 1); diff --git a/libavcodec/vulkan_ffv1.c b/libavcodec/vulkan_ffv1.c index 3eb0484629..4428d65373 100644 --- a/libavcodec/vulkan_ffv1.c +++ b/libavcodec/vulkan_ffv1.c @@ -447,8 +447,7 @@ static int vk_ffv1_end_frame(AVCodecContext *avctx) /* For some reason the C FFv1 encoder/decoder treats these differently */ - if (sw_format == AV_PIX_FMT_GBRP10MSB || sw_format == AV_PIX_FMT_GBRP12MSB || - sw_format == AV_PIX_FMT_GBRP14) + if (sw_format == AV_PIX_FMT_GBRP10MSB || sw_format == AV_PIX_FMT_GBRP12MSB) memcpy(pd.fmt_lut, (int [4]) { 2, 1, 0, 3 }, 4*sizeof(int)); else if (sw_format == AV_PIX_FMT_X2BGR10) memcpy(pd.fmt_lut, (int [4]) { 0, 2, 1, 3 }, 4*sizeof(int)); diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index 65e545521a..a8f0177519 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -361,7 +361,6 @@ static const struct FFVkFormatEntry { { VK_FORMAT_R8_UNORM, AV_PIX_FMT_GRAY8, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R8_UNORM } }, { VK_FORMAT_R10X6_UNORM_PACK16, AV_PIX_FMT_GRAY10MSB, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R12X4_UNORM_PACK16, AV_PIX_FMT_GRAY12MSB, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GRAY14, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GRAY16, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R32_UINT, AV_PIX_FMT_GRAY32, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R32_UINT } }, { VK_FORMAT_R32_SFLOAT, AV_PIX_FMT_GRAYF32, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R32_SFLOAT } }, @@ -388,7 +387,6 @@ static const struct FFVkFormatEntry { { VK_FORMAT_R8_UNORM, AV_PIX_FMT_GBRP, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } }, { VK_FORMAT_R10X6_UNORM_PACK16, AV_PIX_FMT_GBRP10MSB, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R12X4_UNORM_PACK16, AV_PIX_FMT_GBRP12MSB, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRP14, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRP16, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R32_SFLOAT, AV_PIX_FMT_GBRPF32, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SFLOAT } }, @@ -445,19 +443,14 @@ static const struct FFVkFormatEntry { /* Planar YUVA 420 at 8, 10 and 16 bits */ { VK_FORMAT_R8_UNORM, AV_PIX_FMT_YUVA420P, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA420P10, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA420P16, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, /* Planar YUVA 422 at 8, 10, 12 and 16 bits */ { VK_FORMAT_R8_UNORM, AV_PIX_FMT_YUVA422P, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA422P10, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA422P12, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA422P16, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, /* Planar YUVA 444 at 8, 10, 12 and 16 bits */ { VK_FORMAT_R8_UNORM, AV_PIX_FMT_YUVA444P, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA444P10, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, - { VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA444P12, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA444P16, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, /* Single plane 444 at 8, 10, 12 and 16 bits */ diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index 3e3a15b5e5..c7d06238c5 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -1535,7 +1535,7 @@ int ff_vk_mt_is_np_rgb(enum AVPixelFormat pix_fmt) pix_fmt == AV_PIX_FMT_BGR565 || pix_fmt == AV_PIX_FMT_BGR0 || pix_fmt == AV_PIX_FMT_0BGR || pix_fmt == AV_PIX_FMT_RGB0 || pix_fmt == AV_PIX_FMT_GBRP10MSB || pix_fmt == AV_PIX_FMT_GBRP12MSB || - pix_fmt == AV_PIX_FMT_GBRP14 || pix_fmt == AV_PIX_FMT_GBRP16 || + pix_fmt == AV_PIX_FMT_GBRP16 || pix_fmt == AV_PIX_FMT_GBRAP || pix_fmt == AV_PIX_FMT_GBRAP10 || pix_fmt == AV_PIX_FMT_GBRAP12 || pix_fmt == AV_PIX_FMT_GBRAP14 || pix_fmt == AV_PIX_FMT_GBRAP16 || pix_fmt == AV_PIX_FMT_GBRAP32 || @@ -1559,7 +1559,6 @@ void ff_vk_set_perm(enum AVPixelFormat pix_fmt, int lut[4], int inv) case AV_PIX_FMT_GBRAP16: case AV_PIX_FMT_GBRP10MSB: case AV_PIX_FMT_GBRP12MSB: - case AV_PIX_FMT_GBRP14: case AV_PIX_FMT_GBRP16: case AV_PIX_FMT_GBRPF32: case AV_PIX_FMT_GBRAP32: @@ -1674,7 +1673,6 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt, }; case AV_PIX_FMT_GRAY10MSB: case AV_PIX_FMT_GRAY12MSB: - case AV_PIX_FMT_GRAY14: case AV_PIX_FMT_GRAY16: case AV_PIX_FMT_GBRAP10: case AV_PIX_FMT_GBRAP12: @@ -1682,7 +1680,6 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt, case AV_PIX_FMT_GBRAP16: case AV_PIX_FMT_GBRP10MSB: case AV_PIX_FMT_GBRP12MSB: - case AV_PIX_FMT_GBRP14: case AV_PIX_FMT_GBRP16: case AV_PIX_FMT_YUV420P10MSB: case AV_PIX_FMT_YUV420P12MSB: @@ -1693,13 +1690,8 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt, case AV_PIX_FMT_YUV444P10MSB: case AV_PIX_FMT_YUV444P12MSB: case AV_PIX_FMT_YUV444P16: - case AV_PIX_FMT_YUVA420P10: case AV_PIX_FMT_YUVA420P16: - case AV_PIX_FMT_YUVA422P10: - case AV_PIX_FMT_YUVA422P12: case AV_PIX_FMT_YUVA422P16: - case AV_PIX_FMT_YUVA444P10: - case AV_PIX_FMT_YUVA444P12: case AV_PIX_FMT_YUVA444P16: case AV_PIX_FMT_BAYER_RGGB16: { const char *rep_tab[] = { -- 2.49.1 _______________________________________________ ffmpeg-devel mailing list -- ffmpeg-devel@ffmpeg.org To unsubscribe send an email to ffmpeg-devel-leave@ffmpeg.org