[FFmpeg-devel] [PATCH 1/2] tests/checkasm/sw_rgb: Added {yuyv, uyvy}toyuv{420, 422} test cases
Martin Storsjö
martin at martin.st
Mon Feb 17 11:37:13 EET 2025
On Mon, 17 Feb 2025, Martin Storsjö wrote:
> On Tue, 11 Feb 2025, Krzysztof Pyrkosz via ffmpeg-devel wrote:
>
>> Splitting the previous patch into two.
>> I noticed that on my x86 box, one of the newly added tests fail:
>>
>> MMXEXT:
>> uyvytoyuv420_mmxext (sw_rgb.c:126)
>> yuyvtoyuv420_mmxext (sw_rgb.c:126)
>> - sw_rgb.uyvytoyuv [FAILED]
>>
>> SSE2, AVX and AVX2 are passing, though.
>
> I checked this, and the reason that this is failing, is that the chroma
> values are off by one, for a lot of the output pixels here.
>
> Kinda surprising for something that should only reshuffle pixels and not
> touch their values...
Ah, right, this does average the chroma values when converting to 420. I
see that the NEON (which matches the C) doesn't do rounding, while I guess
the mmxext version does. Either we should tolerate an off-by-one (possibly
only if SWS_ACCURATE_RND or SWS_BITEXACT aren't set), change the mmxext
asm to round in the same way as the C code, or just drop the mmxext code.
(We don't seem to have this particular function implemented in any higher
x86 instruction set though.)
// Martin
More information about the ffmpeg-devel
mailing list