This fixes playback of e.g. RGB48 (bpp=6) content on x86 CPUs. Fixes
bug 214.
---
libavcodec/x86/pngdsp.asm | 13 ++++++++++++-
1 files changed, 12 insertions(+), 1 deletions(-)
diff --git a/libavcodec/x86/pngdsp.asm b/libavcodec/x86/pngdsp.asm
index bff76e0..6e1c8e0 100644
--- a/libavcodec/x86/pngdsp.asm
+++ b/libavcodec/x86/pngdsp.asm
@@ -100,6 +100,12 @@ cglobal add_png_paeth_prediction, 5, 7, %1, dst, src, top,
w, bpp, end, cntr
sub srcq, dstq
sub dstq, bppq
pxor m7, m7
+
+ PUSH dstq
+ lea cntrq, [bppq-1]
+ shr cntrq, 2 + mmsize/16
+.bpp_loop:
+ lea dstq, [dstq+cntrq*(mmsize/2)]
movh m0, [dstq]
movh m1, [topq+dstq]
punpcklbw m0, m7
@@ -152,7 +158,12 @@ cglobal add_png_paeth_prediction, 5, 7, %1, dst, src, top,
w, bpp, end, cntr
add dstq, bppq
cmp dstq, endq
jle .loop
- REP_RET
+
+ mov dstq, [rsp]
+ dec cntrq
+ jge .bpp_loop
+ POP dstq
+ RET
%endmacro
INIT_MMX mmx2
--
1.7.2.1
_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel