[FFmpeg-devel] [PATCH] swscale: fix arm NEON hscale init

Josh de Kock josh at itanimul.li
Fri May 15 22:13:42 EEST 2020


On 15/05/2020 19:35, Martin Storsjö wrote:
> From: Josh de Kock <josh at itanimul.li>
> 
> 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 at martin.st>
> ---
>   libswscale/arm/swscale.c | 5 ++++-
>   1 file changed, 4 insertions(+), 1 deletion(-)
> 
> 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) {
> 

LGTM

-- 
Josh


More information about the ffmpeg-devel mailing list