On 10/8/19, Paul B Mahol <one...@gmail.com> wrote: > On 10/8/19, lance.lmw...@gmail.com <lance.lmw...@gmail.com> wrote: >> From: Limin Wang <lance.lmw...@gmail.com> >> >> How to tested it, please try with the following command: >> ./ffmpeg -f lavfi -i >> "smptebars=duration=5:size=1280x720:rate=30,freezedetect=d=1:discard=0" >> -f >> null - >> frame= 150 fps=0.0 q=-0.0 Lsize=N/A time=00:00:05.00 bitrate=N/A speed= >> 234x >> >> ./ffmpeg -f lavfi -i >> "smptebars=duration=5:size=1280x720:rate=30,freezedetect=d=1:discard=1" >> -f >> null - >> frame= 30 fps=0.0 q=-0.0 Lsize=N/A time=00:00:01.00 bitrate=N/A >> speed=59.7x >> >> Signed-off-by: Limin Wang <lance.lmw...@gmail.com> >> --- >> doc/filters.texi | 10 ++++++++++ >> libavfilter/vf_freezedetect.c | 8 +++++++- >> 2 files changed, 17 insertions(+), 1 deletion(-) >> >> diff --git a/doc/filters.texi b/doc/filters.texi >> index 333f502083..8aa7471f7e 100644 >> --- a/doc/filters.texi >> +++ b/doc/filters.texi >> @@ -10678,6 +10678,9 @@ timestamp of the first frame of the freeze. The >> @code{lavfi.freezedetect.freeze_duration} and >> @code{lavfi.freezedetect.freeze_end} metadata keys are set on the first >> frame >> after the freeze. >> +In addition, you can choose to discard the freezen frames instead of >> report >> +by metadata. Please note the first few freezen frames (the detection >> interval) >> +won't be dropped for the filter doesn't buffer any frames. > > This is no go. You can not claim one and do something else completely > differently. > > If you want to drop frozen frames it should drop all frozen frames. > If you want to trim frozen frames it should trim all frozen frames.
Also you can already drop frames with metadata filter and its select mode. something like freezedetect,metadata=mode=select:key=lavfi.freezedetect.freeze_amount:value=some_frozen_amount:function=greater You just need to export frozen value from freezedetect filter for each output frame metadata. > > >> >> The filter accepts the following options: >> >> @@ -10689,6 +10692,13 @@ specified value) or as a difference ratio between >> 0 >> and 1. Default is -60dB, or >> >> @item duration, d >> Set freeze duration until notification (default is 2 seconds). >> + >> +@item discard >> +Set force to discard freezen frame. >> + 0: do nothing >> + 1: discard freezen frame >> + >> +Default is 0 >> @end table >> >> @anchor{frei0r} >> diff --git a/libavfilter/vf_freezedetect.c >> b/libavfilter/vf_freezedetect.c >> index cc086afee6..cc115eb521 100644 >> --- a/libavfilter/vf_freezedetect.c >> +++ b/libavfilter/vf_freezedetect.c >> @@ -45,6 +45,8 @@ typedef struct FreezeDetectContext { >> >> double noise; >> int64_t duration; ///< minimum duration of frozen frame >> until notification >> + >> + int discard; ///< 0: no discard, 1: discard freezen >> frame >> } FreezeDetectContext; >> >> #define OFFSET(x) offsetof(FreezeDetectContext, x) >> @@ -56,6 +58,7 @@ static const AVOption freezedetect_options[] = { >> { "noise", "set noise tolerance", >> OFFSET(noise), AV_OPT_TYPE_DOUBLE, {.dbl=0.001}, 0, 1.0, V|F >> }, >> { "d", "set minimum duration in seconds", >> OFFSET(duration), AV_OPT_TYPE_DURATION, {.i64=2000000}, 0, INT64_MAX, >> V|F >> }, >> { "duration", "set minimum duration in seconds", >> OFFSET(duration), AV_OPT_TYPE_DURATION, {.i64=2000000}, 0, INT64_MAX, >> V|F >> }, >> + { "discard", "set frame discard flag", >> OFFSET(discard), AV_OPT_TYPE_BOOL, {.i64=0}, 0, 1, >> V|F >> }, >> >> {NULL} >> }; >> @@ -196,7 +199,10 @@ static int activate(AVFilterContext *ctx) >> return AVERROR(ENOMEM); >> } >> } >> - return ff_filter_frame(outlink, frame); >> + if (s->discard && s->frozen) { >> + av_frame_free(&frame); >> + } else >> + return ff_filter_frame(outlink, frame); >> } >> >> FF_FILTER_FORWARD_STATUS(inlink, outlink); >> -- >> 2.21.0 >> >> _______________________________________________ >> ffmpeg-devel mailing list >> ffmpeg-devel@ffmpeg.org >> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel >> >> To unsubscribe, visit link above, or email >> ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".