Message ID | 20190822102844.63-1-xwmeng96@gmail.com |
---|---|
State | New |
Headers | show |
> 在 2019年8月22日,下午6:28,Xuewei Meng <xwmeng96@gmail.com> 写道: > > Add the support of dehaze filter in existing derain filter source > code. As the processing procedure in FFmpeg is the same for current > derain and dehaze, we reuse the derain filter source code. The > model training and generation scripts are in repo > https://github.com/XueweiMeng/derain_filter.git > > Signed-off-by: Xuewei Meng <xwmeng96@gmail.com> > --- > doc/filters.texi | 12 ++++++++++++ > libavfilter/vf_derain.c | 5 +++++ > 2 files changed, 17 insertions(+) > > diff --git a/doc/filters.texi b/doc/filters.texi > index 323c02970e..5d63b337f8 100644 > --- a/doc/filters.texi > +++ b/doc/filters.texi > @@ -8449,6 +8449,18 @@ files (.pb) by using tools/python/convert.py > The filter accepts the following options: > > @table @option > +@item filter_type > +Specify which filter to use. This option accepts the following values: > + > +@table @samp > +@item derain > +Derain filter. To conduct derain filter, you need to use a derain model. > + > +@item dehaze > +Dehaze filter. To conduct dehaze filter, you need to use a dehaze model. > +@end table > +Default value is @samp{derain}. > + > @item dnn_backend > Specify which DNN backend to use for model loading and execution. This option accepts > the following values: > diff --git a/libavfilter/vf_derain.c b/libavfilter/vf_derain.c > index c380b40122..110eab54ff 100644 > --- a/libavfilter/vf_derain.c > +++ b/libavfilter/vf_derain.c > @@ -34,6 +34,7 @@ > typedef struct DRContext { > const AVClass *class; > > + int filter_type; > char *model_filename; > DNNBackendType backend_type; > DNNModule *dnn_module; > @@ -46,6 +47,10 @@ typedef struct DRContext { > #define OFFSET(x) offsetof(DRContext, x) > #define FLAGS AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM > static const AVOption derain_options[] = { > + { "filter_type", "filter type(derain/dehaze)", OFFSET(filter_type), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS, "type" }, > + { "derain", "derain filter flag", 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, FLAGS, "type" }, > + { "dehaze", "dehaze filter flag", 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, FLAGS, "type" }, > + > { "dnn_backend", "DNN backend", OFFSET(backend_type), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS, "backend" }, > { "native", "native backend flag", 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, FLAGS, "backend" }, > #if (CONFIG_LIBTENSORFLOW == 1) > -- > 2.17.1 > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe”. removed the empty line locally and pushed Thanks Steven
diff --git a/doc/filters.texi b/doc/filters.texi index 323c02970e..5d63b337f8 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -8449,6 +8449,18 @@ files (.pb) by using tools/python/convert.py The filter accepts the following options: @table @option +@item filter_type +Specify which filter to use. This option accepts the following values: + +@table @samp +@item derain +Derain filter. To conduct derain filter, you need to use a derain model. + +@item dehaze +Dehaze filter. To conduct dehaze filter, you need to use a dehaze model. +@end table +Default value is @samp{derain}. + @item dnn_backend Specify which DNN backend to use for model loading and execution. This option accepts the following values: diff --git a/libavfilter/vf_derain.c b/libavfilter/vf_derain.c index c380b40122..110eab54ff 100644 --- a/libavfilter/vf_derain.c +++ b/libavfilter/vf_derain.c @@ -34,6 +34,7 @@ typedef struct DRContext { const AVClass *class; + int filter_type; char *model_filename; DNNBackendType backend_type; DNNModule *dnn_module; @@ -46,6 +47,10 @@ typedef struct DRContext { #define OFFSET(x) offsetof(DRContext, x) #define FLAGS AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM static const AVOption derain_options[] = { + { "filter_type", "filter type(derain/dehaze)", OFFSET(filter_type), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS, "type" }, + { "derain", "derain filter flag", 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, FLAGS, "type" }, + { "dehaze", "dehaze filter flag", 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, FLAGS, "type" }, + { "dnn_backend", "DNN backend", OFFSET(backend_type), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS, "backend" }, { "native", "native backend flag", 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, 0, 0, FLAGS, "backend" }, #if (CONFIG_LIBTENSORFLOW == 1)
Add the support of dehaze filter in existing derain filter source code. As the processing procedure in FFmpeg is the same for current derain and dehaze, we reuse the derain filter source code. The model training and generation scripts are in repo https://github.com/XueweiMeng/derain_filter.git Signed-off-by: Xuewei Meng <xwmeng96@gmail.com> --- doc/filters.texi | 12 ++++++++++++ libavfilter/vf_derain.c | 5 +++++ 2 files changed, 17 insertions(+)