Does not work on processors without SSE4
Closed this issue · 5 comments
The decoder crashes on processors without SSE4.
To see the cause of the error on a modern CPU, you need to force return SCALAR
in the _get_x86_extensions
function. When decoding the video, the PU::setAllAffineMv
method will be called, which calls _mm_mullo_epi32
from SSE4.1. This shouldn't happen.
Yes, we always build with -msse4.1
enabled. This was a conscious design decision, because it is so old, basically all CPUs powerful enough to play VVC, should support it. Which CPU are you using, that does not support SSE4.1 ?
Oh, I just realized: if you really want to disable all SIMD code for such an old CPU, you can build with cmake -DVVDEC_ENABLE_X86_SIMD=0
.
Which CPU are you using, that does not support SSE4.1 ?
MPC-BE users have encountered the issue on the following processors:
Intel Pentium E6300
Intel Core 2 Duo E4300
Athlon 64 X2 (I don't know the exact model)
Yes, we always build with
-msse4.1
enabled. This was a conscious design decision, because it is so old, basically all CPUs powerful enough to play VVC, should support it.
I looked at your code and expected the decoder to work correctly when _get_x86_extensions
returns SCALAR
(not SSE41 or higher).
Ok, interesting that people try to decode VVC on CPUs that are 17 years old...
We'll look into that and make sure to warp the places, where we explicitly call SSE41 instructions, to fall back to scalar code.
Fine. Whether it works out or not, I will ask you to write somewhere the minimum requirements for x86 processors. It may be SSE2, SSSE3 or even SSE4.1, but I think it was documented.