--- 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