summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2011-11-01 21:55:37 +0100
committerMichael Niedermayer <michaelni@gmx.at>2011-11-01 22:01:11 +0100
commite985d719266939fbcdc682492079d4a9995516be (patch)
tree77d0580c1a0019eb7f37737943408ee878985d8b
parent754539a4095a40b111c40c169ba079c3e0018e74 (diff)
dirac: fix horizontal_compose_dd97i_ssse3
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
-rw-r--r--libavcodec/x86/dwt.c8
-rw-r--r--libavcodec/x86/dwt_yasm.asm4
2 files changed, 7 insertions, 5 deletions
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