This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit af885b9b2f8f3608260c2162c52c548ff0ec726a Author: Kacper Michajłow <[email protected]> AuthorDate: Sun Oct 25 07:33:17 2026 +0100 Commit: Kacper Michajłow <[email protected]> CommitDate: Wed Oct 28 19:22:28 2026 +0000 swscale: compute the X'Y'Z' matrices from the BT.709 primaries The matrices were rounded by hand from constants that do not quite match the BT.709 chromaticities, the largest coefficient is off by 5 in Q12. Signed-off-by: Kacper Michajłow <[email protected]> --- libswscale/utils.c | 27 +++++++++++++++++---------- tests/ref/fate/filter-pixdesc-xyz12be | 2 +- tests/ref/fate/filter-pixdesc-xyz12le | 2 +- 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 ++-- tests/ref/pixfmt/gbrp-xyz12le | 2 +- tests/ref/pixfmt/gbrp10-xyz12le | 2 +- tests/ref/pixfmt/gbrp12-xyz12le | 2 +- tests/ref/pixfmt/nv24-xyz12le | 2 +- tests/ref/pixfmt/p410-xyz12le | 2 +- tests/ref/pixfmt/p412-xyz12le | 2 +- tests/ref/pixfmt/rgb24-xyz12le | 2 +- tests/ref/pixfmt/rgb48-xyz12le | 2 +- tests/ref/pixfmt/xyz12le | 2 +- tests/ref/pixfmt/yuv444p-xyz12le | 2 +- tests/ref/pixfmt/yuv444p10-xyz12le | 2 +- tests/ref/pixfmt/yuv444p12-xyz12le | 2 +- 25 files changed, 51 insertions(+), 44 deletions(-) diff --git a/libswscale/utils.c b/libswscale/utils.c index 043c1e9e76..4399d267cf 100644 --- a/libswscale/utils.c +++ b/libswscale/utils.c @@ -46,6 +46,7 @@ #include "libavutil/x86/cpu.h" #include "libavutil/loongarch/cpu.h" +#include "csputils.h" #include "rgb2rgb.h" #include "swscale.h" #include "swscale_internal.h" @@ -749,22 +750,28 @@ static av_cold void init_xyz_tables(void) } } +static void fill_xyz_matrix(int16_t mat[3][3], const SwsMatrix3x3 *m) +{ + for (int i = 0; i < 3; i++) { + for (int j = 0; j < 3; j++) { + const double v = m->m[i][j] * 4096.0; + av_assert1(fabs(v) <= INT16_MAX); + mat[i][j] = lrint(v); + } + } +} + av_cold int ff_sws_fill_st428_tables(SwsInternal *c) { - static const int16_t xyz2rgb_matrix[3][3] = { - {13270, -6295, -2041}, - {-3969, 7682, 170}, - { 228, -835, 4329} }; - static const int16_t rgb2xyz_matrix[3][3] = { - {1689, 1464, 739}, - { 871, 2929, 296}, - { 79, 488, 3891} }; + const AVColorPrimariesDesc *bt709 = av_csp_primaries_desc_from_id(AVCOL_PRI_BT709); + const SwsMatrix3x3 xyz2rgb = ff_sws_xyz2rgb(bt709); + const SwsMatrix3x3 rgb2xyz = ff_sws_rgb2xyz(bt709); if (c->xyz2rgb.gamma.in) return 0; - memcpy(c->xyz2rgb.mat, xyz2rgb_matrix, sizeof(c->xyz2rgb.mat)); - memcpy(c->rgb2xyz.mat, rgb2xyz_matrix, sizeof(c->rgb2xyz.mat)); + fill_xyz_matrix(c->xyz2rgb.mat, &xyz2rgb); + fill_xyz_matrix(c->rgb2xyz.mat, &rgb2xyz); #if CONFIG_SMALL c->xyz2rgb.gamma.in = av_malloc(sizeof(uint16_t) * 2 * (4096 + 65536)); diff --git a/tests/ref/fate/filter-pixdesc-xyz12be b/tests/ref/fate/filter-pixdesc-xyz12be index 3cef4083c7..afee7450cc 100644 --- a/tests/ref/fate/filter-pixdesc-xyz12be +++ b/tests/ref/fate/filter-pixdesc-xyz12be @@ -1 +1 @@ -pixdesc-xyz12be 198f43f452bc55f4ca1e0e0171de5c4c +pixdesc-xyz12be 03b78ced8e69fd61e55040a3926e10a0 diff --git a/tests/ref/fate/filter-pixdesc-xyz12le b/tests/ref/fate/filter-pixdesc-xyz12le index 6193c3193a..02a372b15d 100644 --- a/tests/ref/fate/filter-pixdesc-xyz12le +++ b/tests/ref/fate/filter-pixdesc-xyz12le @@ -1 +1 @@ -pixdesc-xyz12le 5ca7d9ab5e01cc1bdc906520926721eb +pixdesc-xyz12le 2e028ed810f75ee2cda02b1f90519284 diff --git a/tests/ref/fate/filter-pixfmts-copy b/tests/ref/fate/filter-pixfmts-copy index 1b6e658fe8..1c8218b66c 100644 --- a/tests/ref/fate/filter-pixfmts-copy +++ b/tests/ref/fate/filter-pixfmts-copy @@ -117,8 +117,8 @@ xv36be 9f556ee59a672fd8725f0bb36ce3e4b0 xv36le e08dcbde02f1c28a3554f372ad1278e2 xv48be ce34993b4b4411bba1d852b9b86aa39e xv48le df913a7e61b162aa98303e5393e60c63 -xyz12be d4562ab725e3ab7e5573dd03218bb03c -xyz12le ce17d867c3fea4c42324e40353b72de4 +xyz12be c4f3cb794f1c15770c2a8690f49e4395 +xyz12le 938885a1a9150b103adab1d3aefad5f6 y210le 04e9487b6cce38e7531437e946cdd586 y212le 825768be8fe92708ae80be84855066ed y216le 0e99aeddfee304e72d525d72998d9e9b diff --git a/tests/ref/fate/filter-pixfmts-crop b/tests/ref/fate/filter-pixfmts-crop index aac5fe298b..1eec02d7c8 100644 --- a/tests/ref/fate/filter-pixfmts-crop +++ b/tests/ref/fate/filter-pixfmts-crop @@ -114,8 +114,8 @@ xv36be 23b6f253fcb375e4145cfcb562268c5f xv36le 778286003497f92b84d0bd8258d6b85d xv48be c90889b2cf54cc78bd58e8c47d4eb791 xv48le 2c15c1254449ec5f9135ae61bdf4e1d5 -xyz12be 05d6fc3fbe70403160ff4e1b8a4aa969 -xyz12le 3c7328a2f8497f0b4635b84df381a2b8 +xyz12be 117d5a92f98bba9dcea367d8d731c80a +xyz12le baa4f90965b2964b7b1ecd2a8dbcce60 ya16be e2b490dc18f6ca3814fe9d68193ba263 ya16le 33b0e26f3c2e89c651345970474f6703 ya8 51a8dd297e35d40b06d3ebe8f4717895 diff --git a/tests/ref/fate/filter-pixfmts-field b/tests/ref/fate/filter-pixfmts-field index 603bc22615..e7022d5bfd 100644 --- a/tests/ref/fate/filter-pixfmts-field +++ b/tests/ref/fate/filter-pixfmts-field @@ -117,8 +117,8 @@ xv36be bcc7bda2d0a5d43db4464af6a4cb5d65 xv36le ba99f258370f2a56993e8760e6b30194 xv48be 2abcd986a34789ba4310be3969020d0d xv48le f6f2e33f260f48334197538f3331f7bc -xyz12be a17930e991ca4ff86de5c2dc3b1e9b51 -xyz12le b134b258a9593bc2019f0493f079f3a1 +xyz12be 5f472c753927b9b672d9f54a4d50be2f +xyz12le 1c57f2d6fbc86123674620fe16762b70 y210le 4c2fba1dc40322584977d15dd07c9146 y212le ac2a47c45187dd54d0f55293cbffd954 y216le e65b5bfae1b40edbbed2012e9cd45e31 diff --git a/tests/ref/fate/filter-pixfmts-fieldorder b/tests/ref/fate/filter-pixfmts-fieldorder index 2e9ab58d58..bbf9e39543 100644 --- a/tests/ref/fate/filter-pixfmts-fieldorder +++ b/tests/ref/fate/filter-pixfmts-fieldorder @@ -106,8 +106,8 @@ xv36be 962386c88268f4382004c3a7a82c5eb8 xv36le bcceffc985aaa8414c4b8072aa0889bd xv48be 4d6e4004b03767f12df8bb4e76c98ddf xv48le 9e94d82461a2131063157ac0dbe9467b -xyz12be 65fe8da4ad44c83855360144eba41853 -xyz12le f13851b3ba4e511ab1436786ec0727bd +xyz12be 4d1f54d3d5140b23a7ed8d6746e9c08e +xyz12le a12154aa9b0f61c6a76382a5515b9234 y210le 22b1a02a39c4b325726bf8793bf1e8f2 y212le 2f08fb195b948056c844acb1eee8d649 y216le 360cb98ac80b13d3a8ec61c9f1ff3bac diff --git a/tests/ref/fate/filter-pixfmts-hflip b/tests/ref/fate/filter-pixfmts-hflip index 5889c6caa4..c379b42d6f 100644 --- a/tests/ref/fate/filter-pixfmts-hflip +++ b/tests/ref/fate/filter-pixfmts-hflip @@ -114,8 +114,8 @@ xv36be 98f578df965eed369f46cb135e2d1345 xv36le e478b4b54698beb3ce1b9a2dd691d544 xv48be e030a2c7b1b600cfacb691b6e90c2e3d xv48le fbd7f8c65cd6fc9f9108dc9a1f977dc3 -xyz12be c678c7f19c610063f352a0253121441f -xyz12le 2320702cb1c8ccaad27d7004d4f3a195 +xyz12be 4b778cc2db5060f76db855f7800de41d +xyz12le f39689517dbee5988a9cc94f1b0db438 ya16be e7665e62e476df4eb143420e57cc9ec2 ya16le 3a23b71db418b74e1cc304d7cd3e1989 ya8 4ad5920716de3d2fbbc49f95adb60345 diff --git a/tests/ref/fate/filter-pixfmts-il b/tests/ref/fate/filter-pixfmts-il index 03ff9c9224..ce887db6f0 100644 --- a/tests/ref/fate/filter-pixfmts-il +++ b/tests/ref/fate/filter-pixfmts-il @@ -116,8 +116,8 @@ xv36be 3bbb949278ea55cc947ee03bd9c27c2d xv36le 102c0e817d375ddd6b2cfbb4262dec95 xv48be 4d7376651fb7b3e84d00abad6c785aad xv48le a1a8ff16d9a864568e5e557734bf3d6d -xyz12be 3d9ae42c65eb645bb8e99dc708716f2d -xyz12le b27ec91dcff02d2b94b17c136be55001 +xyz12be aec98321799e590cc58aed1202da70a3 +xyz12le 7e54e36d02b73747c47574aa25e83d8a y210le d4cf9b53cd7ff22f087743d483e88480 y212le d5a2b4677ddb4a3bc3e5cd5cbb20f426 y216le 9e44c6d76b09bcbe71738423b4b3d67a diff --git a/tests/ref/fate/filter-pixfmts-null b/tests/ref/fate/filter-pixfmts-null index 1b6e658fe8..1c8218b66c 100644 --- a/tests/ref/fate/filter-pixfmts-null +++ b/tests/ref/fate/filter-pixfmts-null @@ -117,8 +117,8 @@ xv36be 9f556ee59a672fd8725f0bb36ce3e4b0 xv36le e08dcbde02f1c28a3554f372ad1278e2 xv48be ce34993b4b4411bba1d852b9b86aa39e xv48le df913a7e61b162aa98303e5393e60c63 -xyz12be d4562ab725e3ab7e5573dd03218bb03c -xyz12le ce17d867c3fea4c42324e40353b72de4 +xyz12be c4f3cb794f1c15770c2a8690f49e4395 +xyz12le 938885a1a9150b103adab1d3aefad5f6 y210le 04e9487b6cce38e7531437e946cdd586 y212le 825768be8fe92708ae80be84855066ed y216le 0e99aeddfee304e72d525d72998d9e9b diff --git a/tests/ref/fate/filter-pixfmts-scale b/tests/ref/fate/filter-pixfmts-scale index a6520f25ed..ecc9a8c312 100644 --- a/tests/ref/fate/filter-pixfmts-scale +++ b/tests/ref/fate/filter-pixfmts-scale @@ -117,8 +117,8 @@ xv36be 4d084adca0228d7750d1e2e877e0d79b xv36le de9c74e94dc19c828e1572aa283d8aca xv48be 9e58d1a045df100b0dec116e13be5b4e xv48le fd873d53609b2fbdfe99470f515a234c -xyz12be 94ed06895d7030b97c36ccb9aae3722a -xyz12le fcb73d6b6192ab64ca9ff668fe6562f6 +xyz12be 681537982da2c5cfaa99912100d5a81d +xyz12le 17c835d55db8d8177b018f9d4461960d y210le 7c2aef142d88ab343ec01acd45f38466 y212le 39a3c0c843041ad4501b3107dd91ef17 y216le 17be2999e97d36b8ed903f07ef428c09 diff --git a/tests/ref/fate/filter-pixfmts-transpose b/tests/ref/fate/filter-pixfmts-transpose index ebb70d15ed..628c7652d5 100644 --- a/tests/ref/fate/filter-pixfmts-transpose +++ b/tests/ref/fate/filter-pixfmts-transpose @@ -104,8 +104,8 @@ xv36be 2261a0e3db5ee607d37f68d19704ae15 xv36le 9202133de91bf64c76ca27d5cd0c816a xv48be 14373b7fe123225689e76fe2ce43fb93 xv48le 319df9724a067c7b5efa215f9f54d127 -xyz12be 38ce311e8734b535484c2e2ba70626d0 -xyz12le 24a0e779fce6eaed687cb2c416a61eb9 +xyz12be fc838024ab1eebf3a400e8a4a1f980d9 +xyz12le 33ab866ecb98fe6d028123ea9906e9a6 ya16be 9bb39f9567d807be0fb8631dcfa8d5f8 ya16le b13453818b83c8dc2610975095393ac1 ya8 d4b7a62f80681fa44c977ff3a64f4ce4 diff --git a/tests/ref/fate/filter-pixfmts-vflip b/tests/ref/fate/filter-pixfmts-vflip index e86e9d84e5..e79832a6a9 100644 --- a/tests/ref/fate/filter-pixfmts-vflip +++ b/tests/ref/fate/filter-pixfmts-vflip @@ -117,8 +117,8 @@ xv36be c0272372d3e1a59adb3931ee433a5d5b xv36le ffe6ab75ebc09134c3451f8f6ef0d501 xv48be bdfc3217ae456b370dbdcf4d52606a3f xv48le 53dbebab73a66539c04644ef56dc6bbb -xyz12be b9b83d36d58f4ad129894207888b3b3c -xyz12le b9764e43bacbbfc410e4b6558486115f +xyz12be f0e4f326736c8158aeb89071e15f6688 +xyz12le c7817e4c8da785850fa3269aec12c971 y210le f8847bedd3ae6e1c0cf84a823f275e31 y212le c801725ae31e3b8f5be269359d49f191 y216le 985db498aedf3fb1c547ad07442b7258 diff --git a/tests/ref/pixfmt/gbrp-xyz12le b/tests/ref/pixfmt/gbrp-xyz12le index 21982ceb0a..7bffd86f93 100644 --- a/tests/ref/pixfmt/gbrp-xyz12le +++ b/tests/ref/pixfmt/gbrp-xyz12le @@ -1,2 +1,2 @@ -543fe8482e02d14790b2dc48ec0812e8 *tests/data/pixfmt/gbrp-xyz12le.yuv +8f95608cd59572ae0a5380da8b8518c6 *tests/data/pixfmt/gbrp-xyz12le.yuv 7603200 tests/data/pixfmt/gbrp-xyz12le.yuv diff --git a/tests/ref/pixfmt/gbrp10-xyz12le b/tests/ref/pixfmt/gbrp10-xyz12le index 6e4c267c61..58acebec6e 100644 --- a/tests/ref/pixfmt/gbrp10-xyz12le +++ b/tests/ref/pixfmt/gbrp10-xyz12le @@ -1,2 +1,2 @@ -68d9a907c0b823c6af7b8cc253b2d148 *tests/data/pixfmt/gbrp10-xyz12le.yuv +87e0d57bae18f4c69cf0594253a5e97c *tests/data/pixfmt/gbrp10-xyz12le.yuv 15206400 tests/data/pixfmt/gbrp10-xyz12le.yuv diff --git a/tests/ref/pixfmt/gbrp12-xyz12le b/tests/ref/pixfmt/gbrp12-xyz12le index 6c0a78899a..7002d33771 100644 --- a/tests/ref/pixfmt/gbrp12-xyz12le +++ b/tests/ref/pixfmt/gbrp12-xyz12le @@ -1,2 +1,2 @@ -6aeb56c9f41206c8f4a2439b9b755e81 *tests/data/pixfmt/gbrp12-xyz12le.yuv +882edf8efc53ffa9eb63e87a5acb8194 *tests/data/pixfmt/gbrp12-xyz12le.yuv 15206400 tests/data/pixfmt/gbrp12-xyz12le.yuv diff --git a/tests/ref/pixfmt/nv24-xyz12le b/tests/ref/pixfmt/nv24-xyz12le index 417ad5b088..8aada49347 100644 --- a/tests/ref/pixfmt/nv24-xyz12le +++ b/tests/ref/pixfmt/nv24-xyz12le @@ -1,2 +1,2 @@ -7a67774f90271fef880b9aa257bb0e31 *tests/data/pixfmt/nv24-xyz12le.yuv +890bbcd28ea3a06c315acb8c474215a0 *tests/data/pixfmt/nv24-xyz12le.yuv 7603200 tests/data/pixfmt/nv24-xyz12le.yuv diff --git a/tests/ref/pixfmt/p410-xyz12le b/tests/ref/pixfmt/p410-xyz12le index 6b78a5b89e..2fc2e6864a 100644 --- a/tests/ref/pixfmt/p410-xyz12le +++ b/tests/ref/pixfmt/p410-xyz12le @@ -1,2 +1,2 @@ -2ccc2779172b82392a0c3dae2bcd44fb *tests/data/pixfmt/p410-xyz12le.yuv +ce3777038372083419a25923d9b6029f *tests/data/pixfmt/p410-xyz12le.yuv 15206400 tests/data/pixfmt/p410-xyz12le.yuv diff --git a/tests/ref/pixfmt/p412-xyz12le b/tests/ref/pixfmt/p412-xyz12le index 0fc28eb10e..0815cbae13 100644 --- a/tests/ref/pixfmt/p412-xyz12le +++ b/tests/ref/pixfmt/p412-xyz12le @@ -1,2 +1,2 @@ -0c9eff4fa311213ca9602685da946c49 *tests/data/pixfmt/p412-xyz12le.yuv +7f1ac958f69ba454d23d667ecb4bc035 *tests/data/pixfmt/p412-xyz12le.yuv 15206400 tests/data/pixfmt/p412-xyz12le.yuv diff --git a/tests/ref/pixfmt/rgb24-xyz12le b/tests/ref/pixfmt/rgb24-xyz12le index 19c3184a3c..6bd3308e5a 100644 --- a/tests/ref/pixfmt/rgb24-xyz12le +++ b/tests/ref/pixfmt/rgb24-xyz12le @@ -1,2 +1,2 @@ -be4b641ec6f5b3c534d6b69e3144c8ca *tests/data/pixfmt/rgb24-xyz12le.yuv +6c138c678af6e0002167d0b088cbc57a *tests/data/pixfmt/rgb24-xyz12le.yuv 7603200 tests/data/pixfmt/rgb24-xyz12le.yuv diff --git a/tests/ref/pixfmt/rgb48-xyz12le b/tests/ref/pixfmt/rgb48-xyz12le index c7de7622ed..ee4b6cc2f0 100644 --- a/tests/ref/pixfmt/rgb48-xyz12le +++ b/tests/ref/pixfmt/rgb48-xyz12le @@ -1,2 +1,2 @@ -380feb3972a3fd9f4a839585adda3f9b *tests/data/pixfmt/rgb48-xyz12le.yuv +449f3253f683ea30518dcd345524a080 *tests/data/pixfmt/rgb48-xyz12le.yuv 15206400 tests/data/pixfmt/rgb48-xyz12le.yuv diff --git a/tests/ref/pixfmt/xyz12le b/tests/ref/pixfmt/xyz12le index 312bc9ed57..fd11596b95 100644 --- a/tests/ref/pixfmt/xyz12le +++ b/tests/ref/pixfmt/xyz12le @@ -1,2 +1,2 @@ -f14b14a12c864408a0115f55eaef9934 *tests/data/pixfmt/xyz12le.yuv +8c8f1b04b0fe5aab4fc4f0612b4c3c09 *tests/data/pixfmt/xyz12le.yuv 304128 tests/data/pixfmt/xyz12le.yuv diff --git a/tests/ref/pixfmt/yuv444p-xyz12le b/tests/ref/pixfmt/yuv444p-xyz12le index 7288dc10eb..e3410a669d 100644 --- a/tests/ref/pixfmt/yuv444p-xyz12le +++ b/tests/ref/pixfmt/yuv444p-xyz12le @@ -1,2 +1,2 @@ -54a3bdec56e545c9ae2782e78b010f76 *tests/data/pixfmt/yuv444p-xyz12le.yuv +35306788a7a59819bff4dade8c89ddff *tests/data/pixfmt/yuv444p-xyz12le.yuv 7603200 tests/data/pixfmt/yuv444p-xyz12le.yuv diff --git a/tests/ref/pixfmt/yuv444p10-xyz12le b/tests/ref/pixfmt/yuv444p10-xyz12le index e3693c3560..38c82d754f 100644 --- a/tests/ref/pixfmt/yuv444p10-xyz12le +++ b/tests/ref/pixfmt/yuv444p10-xyz12le @@ -1,2 +1,2 @@ -749b383b2fb0920de0a35010fca42acb *tests/data/pixfmt/yuv444p10-xyz12le.yuv +b03201a536e152bff73cdbb9266ed948 *tests/data/pixfmt/yuv444p10-xyz12le.yuv 15206400 tests/data/pixfmt/yuv444p10-xyz12le.yuv diff --git a/tests/ref/pixfmt/yuv444p12-xyz12le b/tests/ref/pixfmt/yuv444p12-xyz12le index 6fae982e34..ebc9105afd 100644 --- a/tests/ref/pixfmt/yuv444p12-xyz12le +++ b/tests/ref/pixfmt/yuv444p12-xyz12le @@ -1,2 +1,2 @@ -3e19343dbcf62d1aa817c30643408439 *tests/data/pixfmt/yuv444p12-xyz12le.yuv +d9072d39396287f67eb38a1fec1abc6e *tests/data/pixfmt/yuv444p12-xyz12le.yuv 15206400 tests/data/pixfmt/yuv444p12-xyz12le.yuv -- To stop receiving notification emails like this one, please contact [email protected]. _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
