Browse Source

avfilter/f_select: fix loss of precission in SAD calculation

Fixes part of Ticket3466
Found-by: Andrey_Karpov / PVS-Studio
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
tags/n2.3
Michael Niedermayer 11 years ago
parent
commit
5a8ef3c66b
2 changed files with 5 additions and 5 deletions
  1. +1
    -1
      libavfilter/f_select.c
  2. +4
    -4
      tests/ref/fate/filter-metadata-scenedetect

+ 1
- 1
libavfilter/f_select.c View File

@@ -279,7 +279,7 @@ static double get_scene_score(AVFilterContext *ctx, AVFrame *frame)
p2 += 8 * linesize; p2 += 8 * linesize;
} }
emms_c(); emms_c();
mafd = nb_sad ? sad / nb_sad : 0;
mafd = nb_sad ? (double)sad / nb_sad : 0;
diff = fabs(mafd - select->prev_mafd); diff = fabs(mafd - select->prev_mafd);
ret = av_clipf(FFMIN(mafd, diff) / 100., 0, 1); ret = av_clipf(FFMIN(mafd, diff) / 100., 0, 1);
select->prev_mafd = mafd; select->prev_mafd = mafd;


+ 4
- 4
tests/ref/fate/filter-metadata-scenedetect View File

@@ -1,10 +1,10 @@
pkt_pts=1620|tag:lavfi.scene_score=1.000000 pkt_pts=1620|tag:lavfi.scene_score=1.000000
pkt_pts=4140|tag:lavfi.scene_score=0.880000
pkt_pts=4140|tag:lavfi.scene_score=0.876043
pkt_pts=5800|tag:lavfi.scene_score=1.000000 pkt_pts=5800|tag:lavfi.scene_score=1.000000
pkt_pts=6720|tag:lavfi.scene_score=0.460000
pkt_pts=6720|tag:lavfi.scene_score=0.463259
pkt_pts=8160|tag:lavfi.scene_score=1.000000 pkt_pts=8160|tag:lavfi.scene_score=1.000000
pkt_pts=9760|tag:lavfi.scene_score=1.000000 pkt_pts=9760|tag:lavfi.scene_score=1.000000
pkt_pts=14080|tag:lavfi.scene_score=0.840000
pkt_pts=14080|tag:lavfi.scene_score=0.841420
pkt_pts=15700|tag:lavfi.scene_score=1.000000 pkt_pts=15700|tag:lavfi.scene_score=1.000000
pkt_pts=18500|tag:lavfi.scene_score=0.470000
pkt_pts=18500|tag:lavfi.scene_score=0.471738
pkt_pts=21760|tag:lavfi.scene_score=1.000000 pkt_pts=21760|tag:lavfi.scene_score=1.000000

Loading…
Cancel
Save