[FFmpeg-cvslog] avcdoec/huffyuvenc: optimize sub_left_prediction()

Michael Niedermayer git at videolan.org
Mon Jan 20 23:03:40 CET 2014


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Jan 20 22:12:56 2014 +0100| [f9c7b14c040fe1c5f9253d7abd474f8b2282903c] | committer: Michael Niedermayer

avcdoec/huffyuvenc: optimize sub_left_prediction()

Signed-off-by: Michael Niedermayer <michaelni at gmx.at>

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

 libavcodec/huffyuvenc.c |   23 +++++++++++++++--------
 1 file changed, 15 insertions(+), 8 deletions(-)

diff --git a/libavcodec/huffyuvenc.c b/libavcodec/huffyuvenc.c
index 206f182..aba8f9c 100644
--- a/libavcodec/huffyuvenc.c
+++ b/libavcodec/huffyuvenc.c
@@ -69,15 +69,22 @@ static inline int sub_left_prediction(HYuvContext *s, uint8_t *dst,
     } else {
         const uint16_t *src16 = (const uint16_t *)src;
         uint16_t       *dst16 = (      uint16_t *)dst;
-
-        for (i = 0; i < w; i++) {
-            const int temp = src16[i];
-            dst16[i] = temp - left;
-            left   = temp;
+        if (w < 32) {
+            for (i = 0; i < w; i++) {
+                const int temp = src16[i];
+                dst16[i] = temp - left;
+                left   = temp;
+            }
+            return left;
+        } else {
+            for (i = 0; i < 16; i++) {
+                const int temp = src16[i];
+                dst16[i] = temp - left;
+                left   = temp;
+            }
+            s->llviddsp.diff_int16(dst16 + 16, src16 + 16, src16 + 15, s->n - 1, w - 16);
+            return src16[w-1];
         }
-        return left;
-
-        //FIXME optimize
     }
 }
 



More information about the ffmpeg-cvslog mailing list