---
 libavfilter/f_select.c | 20 +++++---------------
 1 file changed, 5 insertions(+), 15 deletions(-)

diff --git a/libavfilter/f_select.c b/libavfilter/f_select.c
index 546a940..e1837db 100644
--- a/libavfilter/f_select.c
+++ b/libavfilter/f_select.c
@@ -251,22 +251,12 @@ static double get_scene_score(AVFilterContext *ctx, 
AVFrame *frame)
     if (prev_picref &&
         frame->height == prev_picref->height &&
         frame->width  == prev_picref->width) {
-        int x, y, nb_sad = 0;
-        int64_t sad = 0;
         double mafd, diff;
-        uint8_t *p1 =      frame->data[0];
-        uint8_t *p2 = prev_picref->data[0];
-        const int p1_linesize =       frame->linesize[0];
-        const int p2_linesize = prev_picref->linesize[0];
-
-        for (y = 0; y < frame->height - 7; y += 8) {
-            for (x = 0; x < frame->width*3 - 7; x += 8) {
-                sad += select->sad(p1 + x, p1_linesize, p2 + x, p2_linesize);
-                nb_sad += 8 * 8;
-            }
-            p1 += 8 * p1_linesize;
-            p2 += 8 * p2_linesize;
-        }
+        const int nb_sad = (frame->height & ~7) * ((frame->width*3) & ~7);
+        const int64_t sad = av_pixelutils_bdiff(
+                                frame->data[0], frame->linesize[0],
+                                prev_picref->data[0], prev_picref->linesize[0],
+                                select->sad, frame->width*3, frame->height, 8);
         emms_c();
         mafd = nb_sad ? (double)sad / nb_sad : 0;
         diff = fabs(mafd - select->prev_mafd);
-- 
2.0.4

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel

Reply via email to