Commit e1113a83 authored by Marton Balint's avatar Marton Balint

avfilter/vf_framerate: fix scene change detection score

- normalize score to [0..100] instead of [0..85]
- change the default score to 8.2 to roughly keep existing behaviour
- take into account bit depth
- do not truncate to integer
Signed-off-by: 's avatarMarton Balint <cus@passwd.hu>
parent be15304e
......@@ -9121,7 +9121,7 @@ Specify the level at which a scene change is detected as a value between
0 and 100 to indicate a new scene; a low value reflects a low
probability for the current frame to introduce a new scene, while a higher
value means the current frame is more likely to be one.
The default is @code{7}.
The default is @code{8.2}.
@item flags
Specify flags influencing the filter process.
......
......@@ -88,7 +88,7 @@ static const AVOption framerate_options[] = {
{"interp_start", "point to start linear interpolation", OFFSET(interp_start), AV_OPT_TYPE_INT, {.i64=15}, 0, 255, V|F },
{"interp_end", "point to end linear interpolation", OFFSET(interp_end), AV_OPT_TYPE_INT, {.i64=240}, 0, 255, V|F },
{"scene", "scene change level", OFFSET(scene_score), AV_OPT_TYPE_DOUBLE, {.dbl=7.0}, 0, INT_MAX, V|F },
{"scene", "scene change level", OFFSET(scene_score), AV_OPT_TYPE_DOUBLE, {.dbl=8.2}, 0, INT_MAX, V|F },
{"flags", "set flags", OFFSET(flags), AV_OPT_TYPE_FLAGS, {.i64=1}, 0, INT_MAX, V|F, "flags" },
{"scene_change_detect", "enable scene change detection", 0, AV_OPT_TYPE_CONST, {.i64=FRAMERATE_FLAG_SCD}, INT_MIN, INT_MAX, V|F, "flags" },
......@@ -183,7 +183,7 @@ static double get_scene_score(AVFilterContext *ctx, AVFrame *crnt, AVFrame *next
else
sad = scene_sad16(s, (const uint16_t*)crnt->data[0], crnt->linesize[0] >> 1, (const uint16_t*)next->data[0], next->linesize[0] >> 1, crnt->height);
mafd = sad / (crnt->height * crnt->width * 3);
mafd = (double)sad * 100.0 / (crnt->height * crnt->width) / (1 << s->bitdepth);
diff = fabs(mafd - s->prev_mafd);
ret = av_clipf(FFMIN(mafd, diff), 0, 100.0);
s->prev_mafd = mafd;
......
......@@ -4,7 +4,7 @@
#dimensions 0: 320x240
#sar 0: 1/1
0, 0, 0, 1, 307200, 0xb49cf016
0, 1, 1, 1, 307200, 0xfe025c7f
0, 1, 1, 1, 307200, 0xc3be6971
0, 2, 2, 1, 307200, 0x4d458da1
0, 3, 3, 1, 307200, 0x35d4d8ea
0, 4, 4, 1, 307200, 0x88f88697
......
......@@ -4,7 +4,7 @@
#dimensions 0: 320x240
#sar 0: 1/1
0, 0, 0, 1, 307200, 0xb49cf016
0, 1, 1, 1, 307200, 0xc74259b4
0, 1, 1, 1, 307200, 0x59cb92c7
0, 2, 2, 1, 307200, 0xe4ca172c
0, 3, 3, 1, 307200, 0x5378b13c
0, 4, 4, 1, 307200, 0x2a7d4840
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment