summaryrefslogtreecommitdiff
path: root/libswscale/arm
diff options
context:
space:
mode:
authorJosh de Kock <josh@itanimul.li>2020-05-07 12:01:16 +0100
committerMartin Storsjö <martin@martin.st>2020-05-15 23:33:46 +0300
commit70b14cc8d6869f67dd8ebce473a00ea5fa0ea70c (patch)
treef2e2c758f4126a32adc60890e94d13382354c6c6 /libswscale/arm
parent1187cbf0ffd7a74f9055def89ff88d5e36a9dbcd (diff)
downloadffmpeg-70b14cc8d6869f67dd8ebce473a00ea5fa0ea70c.tar.gz
swscale: arm: fix NEON hscale init
The NEON hscale function only supports X8 filter sizes and should only be selected when these are being used. At the moment filterAlign is set to 8 but in the future when extra NEON assembly for specific sizes is added they will need to have checks here too. The immediate usecase for this change is making the hscale checkasm test easier and without NEON specific edge-cases (x86 already has these guards). This applies the same fix from 718c8f9aa59751bb490e2688acf2b5cb68fd5ad1 on the 32 bit arm version of the function, fixing fate-checkasm-sw_scale there. Signed-off-by: Martin Storsjö <martin@martin.st>
Diffstat (limited to 'libswscale/arm')
-rw-r--r--libswscale/arm/swscale.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/libswscale/arm/swscale.c b/libswscale/arm/swscale.c
index 1ec360fe24..7b8fbcbc79 100644
--- a/libswscale/arm/swscale.c
+++ b/libswscale/arm/swscale.c
@@ -34,7 +34,10 @@ av_cold void ff_sws_init_swscale_arm(SwsContext *c)
int cpu_flags = av_get_cpu_flags();
if (have_neon(cpu_flags)) {
- if (c->srcBpc == 8 && c->dstBpc <= 14) {
+ if (c->srcBpc == 8 && c->dstBpc <= 14 &&
+ (c->hLumFilterSize % 8) == 0 &&
+ (c->hChrFilterSize % 8) == 0)
+ {
c->hyScale = c->hcScale = ff_hscale_8_to_15_neon;
}
if (c->dstBpc == 8) {