[FFmpeg-cvslog] sws: print a warning on unaligned input on SSE2+

Michael Niedermayer git at videolan.org
Mon Oct 31 01:57:12 CET 2011


ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Mon Oct 31 01:36:02 2011 +0100| [f44ad92c3fc87daa0e2e9f5499662050be8b2bf3] | committer: Michael Niedermayer

sws: print a warning on unaligned input on SSE2+

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

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

 libswscale/swscale.c |   12 ++++++++++++
 1 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/libswscale/swscale.c b/libswscale/swscale.c
index d5dfa07..bde7307 100644
--- a/libswscale/swscale.c
+++ b/libswscale/swscale.c
@@ -2539,6 +2539,18 @@ static int swScale(SwsContext *c, const uint8_t* src[],
         }
     }
 
+    if ((int)dst[0]%16 || (int)dst[1]%16 || (int)dst[2]%16 || (int)src[0]%16 || (int)src[1]%16 || (int)src[2]%16
+        || dstStride[0]%16 || dstStride[1]%16 || dstStride[2]%16 || dstStride[3]%16
+        || srcStride[0]%16 || srcStride[1]%16 || srcStride[2]%16 || srcStride[3]%16
+    ) {
+        static int warnedAlready=0;
+        int cpu_flags = av_get_cpu_flags();
+        if (HAVE_MMX2 && (cpu_flags & AV_CPU_FLAG_SSE2) && !warnedAlready){
+            av_log(c, AV_LOG_WARNING, "Warning: data is not aligned! This can lead to a speedloss\n");
+            warnedAlready=1;
+        }
+    }
+
     /* Note the user might start scaling the picture in the middle so this
        will not get executed. This is not really intended but works
        currently, so people might do it. */



More information about the ffmpeg-cvslog mailing list