[FFmpeg-cvslog] png: add support for bpp>4 to paeth x86 SIMD code.

Ronald S. Bultje git at videolan.org
Tue Jan 31 03:36:05 CET 2012


ffmpeg | branch: master | Ronald S. Bultje <rsbultje at gmail.com> | Fri Jan 27 23:28:28 2012 +0800| [af79a0c48a41fd99b674b39ac509ae442974715d] | committer: Ronald S. Bultje

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.

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=af79a0c48a41fd99b674b39ac509ae442974715d
---

 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 bff76e0..8c4cb19 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 at u.washington.edu>
+;* Copyright (c) 2012 Ronald S. Bultje <rsbultje at 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



More information about the ffmpeg-cvslog mailing list