aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/x86/hevc_mc.asm
diff options
context:
space:
mode:
authorChristophe Gisquet <christophe.gisquet@gmail.com>2015-02-05 12:37:52 +0100
committerMichael Niedermayer <michaelni@gmx.at>2015-02-14 17:22:50 +0100
commitb533949813cc8eaa2eb68142b0fa384c231ab6c9 (patch)
treea925afdea2f7e0fe23bcfd178783008990c3e987 /libavcodec/x86/hevc_mc.asm
parenta196e0c66dd4396d9c8b14cb39e9d3d9eb262b02 (diff)
downloadffmpeg-b533949813cc8eaa2eb68142b0fa384c231ab6c9.tar.gz
x86: hevc: remove a parameter to WP internals
The second stride is always the internal buffer one, MAX_PB_SIZE (times 2 to get the value in bytes). Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec/x86/hevc_mc.asm')
-rw-r--r--libavcodec/x86/hevc_mc.asm35
1 files changed, 20 insertions, 15 deletions
diff --git a/libavcodec/x86/hevc_mc.asm b/libavcodec/x86/hevc_mc.asm
index 9a4c9ca209..9a7367af58 100644
--- a/libavcodec/x86/hevc_mc.asm
+++ b/libavcodec/x86/hevc_mc.asm
@@ -1407,11 +1407,11 @@ cglobal hevc_put_hevc_bi_qpel_hv%1_%2, 8, 10, 16, dst, dststride, src, srcstride
%macro WEIGHTING_FUNCS 2
%if WIN64 || ARCH_X86_32
-cglobal hevc_put_hevc_uni_w%1_%2, 4, 5, 7, dst, dststride, src, srcstride, height, denom, wx, ox
+cglobal hevc_put_hevc_uni_w%1_%2, 4, 5, 7, dst, dststride, src, height, denom, wx, ox
mov r4d, denomm
%define SHIFT r4d
%else
-cglobal hevc_put_hevc_uni_w%1_%2, 6, 6, 7, dst, dststride, src, srcstride, height, denom, wx, ox
+cglobal hevc_put_hevc_uni_w%1_%2, 6, 6, 7, dst, dststride, src, height, denom, wx, ox
%define SHIFT denomd
%endif
lea SHIFT, [SHIFT+14-%2] ; shift = 14 - bitd + denom
@@ -1472,15 +1472,15 @@ cglobal hevc_put_hevc_uni_w%1_%2, 6, 6, 7, dst, dststride, src, srcstride, heigh
jnz .loop ; height loop
RET
-cglobal hevc_put_hevc_bi_w%1_%2, 5, 7, 10, dst, dststride, src, srcstride, src2, height, denom, wx0, wx1, ox0, ox1
- mov r6d, denomm
+cglobal hevc_put_hevc_bi_w%1_%2, 4, 6, 10, dst, dststride, src, src2, height, denom, wx0, wx1, ox0, ox1
+ movifnidn r5d, denomm
%if %1 <= 4
pxor m1, m1
%endif
movd m2, wx0m ; WX0
- lea r6d, [r6d+14-%2] ; shift = 14 - bitd + denom
+ lea r5d, [r5d+14-%2] ; shift = 14 - bitd + denom
movd m3, wx1m ; WX1
- movd m0, r6d ; shift
+ movd m0, r5d ; shift
%if %1 <= 4
punpcklwd m2, m1
punpcklwd m3, m1
@@ -1488,19 +1488,24 @@ cglobal hevc_put_hevc_bi_w%1_%2, 5, 7, 10, dst, dststride, src, srcstride, src2,
punpcklwd m2, m2
punpcklwd m3, m3
%endif
- inc r6d
- movd m5, r6d ; shift+1
+ inc r5d
+ movd m5, r5d ; shift+1
pshufd m2, m2, 0
- mov r6d, ox0m
+ mov r5d, ox0m
pshufd m3, m3, 0
- add r6d, ox1m
+ add r5d, ox1m
%if %2 != 8
- shl r6d, %2-8 ; ox << (bitd - 8)
+ shl r5d, %2-8 ; ox << (bitd - 8)
%endif
- inc r6d
- movd m4, r6d ; offset
+ inc r5d
+ movd m4, r5d ; offset
pshufd m4, m4, 0
- mov r6d, heightm
+%if UNIX64
+%define h heightd
+%else
+ mov r5d, heightm
+%define h r5d
+%endif
pslld m4, m0
.loop
@@ -1540,7 +1545,7 @@ cglobal hevc_put_hevc_bi_w%1_%2, 5, 7, 10, dst, dststride, src, srcstride, src2,
add dstq, dststrideq ; dst += dststride
add srcq, 2*MAX_PB_SIZE ; src += srcstride
add src2q, 2*MAX_PB_SIZE ; src2 += srcstride
- dec r6d ; cmp height
+ dec h ; cmp height
jnz .loop ; height loop
RET
%endmacro