diff options
author | Ronald S. Bultje <rsbultje@gmail.com> | 2012-01-27 23:28:28 +0800 |
---|---|---|
committer | Ronald S. Bultje <rsbultje@gmail.com> | 2012-01-29 21:22:50 -0800 |
commit | af79a0c48a41fd99b674b39ac509ae442974715d (patch) | |
tree | 6d754f90b4862416da5377867ed9c03e7e3cdedf /libavcodec/x86/pngdsp.asm | |
parent | f91c4b7824a558b472bb0acd610c772cd9904003 (diff) | |
download | ffmpeg-af79a0c48a41fd99b674b39ac509ae442974715d.tar.gz |
png: add support for bpp>4 to paeth x86 SIMD code.
This fixes playback of e.g. RGB48 (bpp=6) content on x86 CPUs. Fixes
bug 214.
Diffstat (limited to 'libavcodec/x86/pngdsp.asm')
-rw-r--r-- | libavcodec/x86/pngdsp.asm | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/libavcodec/x86/pngdsp.asm b/libavcodec/x86/pngdsp.asm index bff76e0c0d..8c4cb19da0 100644 --- a/libavcodec/x86/pngdsp.asm +++ b/libavcodec/x86/pngdsp.asm @@ -2,6 +2,7 @@ ;* x86 optimizations for PNG decoding ;* ;* Copyright (c) 2008 Loren Merritt <lorenm@u.washington.edu> +;* Copyright (c) 2012 Ronald S. Bultje <rsbultje@gmail.com> ;* ;* This file is part of Libav. ;* @@ -100,6 +101,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 +159,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 |