[FFmpeg-devel] [PATCH 2/5] avfilter/select: use av_pixelutils_bdiff()
Clément Bœsch
u at pkh.me
Thu Aug 14 23:05:12 CEST 2014
---
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
More information about the ffmpeg-devel
mailing list