From e985d719266939fbcdc682492079d4a9995516be Mon Sep 17 00:00:00 2001 From: Michael Niedermayer Date: Tue, 1 Nov 2011 21:55:37 +0100 Subject: dirac: fix horizontal_compose_dd97i_ssse3 Signed-off-by: Michael Niedermayer --- libavcodec/x86/dwt.c | 8 ++++++-- libavcodec/x86/dwt_yasm.asm | 4 +--- 2 files changed, 7 insertions(+), 5 deletions(-) (limited to 'libavcodec/x86') diff --git a/libavcodec/x86/dwt.c b/libavcodec/x86/dwt.c index 1d04c7dcc9..daa7331926 100644 --- a/libavcodec/x86/dwt.c +++ b/libavcodec/x86/dwt.c @@ -119,8 +119,12 @@ COMPOSE_VERTICAL(_sse2, 8) void ff_horizontal_compose_dd97i_ssse3(IDWTELEM *b, IDWTELEM *tmp, int w); -void ff_horizontal_compose_dd97i_end_c(IDWTELEM *b, IDWTELEM *tmp, int w2, int x) +static void horizontal_compose_dd97i_ssse3(IDWTELEM *b, IDWTELEM *tmp, int w) { + int w2= w>>1; + int x= w2 - (w2&7); + ff_horizontal_compose_dd97i_ssse3(b, tmp, w); + for (; x < w2; x++) { b[2*x ] = (tmp[x] + 1)>>1; b[2*x+1] = (COMPOSE_DD97iH0(tmp[x-1], tmp[x], b[x+w2], tmp[x+1], tmp[x+2]) + 1)>>1; @@ -191,7 +195,7 @@ void ff_spatial_idwt_init_mmx(DWTContext *d, enum dwt_type type) switch (type) { case DWT_DIRAC_DD9_7: -//MMXDISABLED d->horizontal_compose = ff_horizontal_compose_dd97i_ssse3; + d->horizontal_compose = horizontal_compose_dd97i_ssse3; break; } #endif // HAVE_YASM diff --git a/libavcodec/x86/dwt_yasm.asm b/libavcodec/x86/dwt_yasm.asm index 7d7471c6e2..b8dccb86f7 100644 --- a/libavcodec/x86/dwt_yasm.asm +++ b/libavcodec/x86/dwt_yasm.asm @@ -21,8 +21,6 @@ %include "x86inc.asm" -cextern horizontal_compose_dd97i_end_c - SECTION_RODATA pw_1: times 8 dw 1 pw_2: times 8 dw 2 @@ -293,7 +291,7 @@ cglobal horizontal_compose_dd97i_ssse3, 3,6,8, b, tmp, w, x, w2, b_w2 cmp xd, w2d jl .highpass_loop .end: - END_HORIZONTAL horizontal_compose_dd97i_end_c + REP_RET %ifndef ARCH_X86_64 -- cgit v1.2.1