[FFmpeg-devel] [PATCH] x86/hevc_sao: make sao_band_filter work on x86_32

Christophe Gisquet christophe.gisquet at gmail.com
Sun Feb 8 12:21:36 CET 2015


Hi,

2015-02-07 23:06 GMT+01:00 James Almer <jamrial at gmail.com>:
> Signed-off-by: James Almer <jamrial at gmail.com>
> ---
>  libavcodec/x86/hevc_sao.asm   | 40 ++++++++++++++++++++++++++++++++++++----
>  libavcodec/x86/hevcdsp_init.c | 24 ++++++++++++------------
>  2 files changed, 48 insertions(+), 16 deletions(-)

Passes fate here for Win32/64, but that's probably not the platforms
you interested in hearing feedback from.
Looks OK to commit.

A few questions though:

> +    %assign MMSIZE mmsize

Why do that? Not a big deal: it's only for my education, if there's
something I'm missing.

> +    pcmpeqw           m4, %2, [rsp+MMSIZE*0]
> +    pcmpeqw           m5, %2, [rsp+MMSIZE*1]
> +    pcmpeqw           m6, %2, [rsp+MMSIZE*2]
> +    pcmpeqw           %2, [rsp+MMSIZE*3]
> +    pand              m4, [rsp+MMSIZE*4]
> +    pand              m5, [rsp+MMSIZE*5]
> +    pand              m6, [rsp+MMSIZE*6]
[...]
> -cglobal hevc_sao_band_filter_%1_8, 6, 6, 15, dst, src, dststride, srcstride, offset, left
> +cglobal hevc_sao_band_filter_%1_8, 6, 6, 15, 8*mmsize*ARCH_X86_32, dst, src, dststride, srcstride, offset, left
>      HEVC_SAO_BAND_FILTER_INIT 8

Why do you need room for 8 regs, and not 7?

Setting this to 7 and doing the required changes to remove MMSIZE pass
here on Win32.

> -                SAO_BAND_INIT(10, sse2);
>                  SAO_EDGE_INIT(10, sse2);
>              }
> +            SAO_BAND_INIT(10, sse2);

On a side note, you haven't ported >8 bits edge filter to x86_32. I
guess because it wouldn't play real time anyway?

-- 
Christophe


More information about the ffmpeg-devel mailing list