[FFmpeg-devel] [PATCH] avfilter/dnn_detect: fail on filter if mandatory anchor option is missing

Guo, Yejun yejun.guo at intel.com
Mon Mar 3 13:29:58 EET 2025


> -----Original Message-----
> From: ffmpeg-devel <ffmpeg-devel-bounces at ffmpeg.org> On Behalf Of Chen,
> Wenbin
> Sent: Thursday, February 27, 2025 10:41 AM
> To: FFmpeg development discussions and patches <ffmpeg-
> devel at ffmpeg.org>
> Subject: Re: [FFmpeg-devel] [PATCH] avfilter/dnn_detect: fail on filter if
> mandatory anchor option is missing
> 
> > It prevents the filter of running in case such option is missing,
> > failing early, during init() instead of simply logging an error during
> > runtime.
> >
> > It depends on this other change:
> >
> > https://patchwork.ffmpeg.org/project/ffmpeg/patch/6c4d8098-bb57-
> 4f7c-
> > b86b-9221492b7ced at gmail.com/

Will push with this link removed.

> >
> > Signed-off-by: Leandro Santiago <leandrosansilva at gmail.com>
> > ---
> >  libavfilter/vf_dnn_detect.c | 13 ++++++++-----
> >  1 file changed, 8 insertions(+), 5 deletions(-)
> >
> > diff --git a/libavfilter/vf_dnn_detect.c b/libavfilter/vf_dnn_detect.c
> > index cd70c64e98..bc9a1777ff 100644
> > --- a/libavfilter/vf_dnn_detect.c
> > +++ b/libavfilter/vf_dnn_detect.c
> > @@ -173,11 +173,6 @@ static int
> dnn_detect_parse_yolo_output(AVFrame
> > *frame, DNNData *output, int out
> >          return AVERROR(EINVAL);
> >      }
> >
> > -    if (!anchors) {
> > -        av_log(filter_ctx, AV_LOG_ERROR, "anchors is not set\n");
> > -        return AVERROR(EINVAL);
> > -    }
> > -
> >      if (output[output_index].dims[1] * output[output_index].dims[2] *
> >              output[output_index].dims[3] % (box_size * cell_w * cell_h)) {
> >          av_log(filter_ctx, AV_LOG_ERROR, "wrong cell_w, cell_h or
> > nb_classes\n"); @@ -656,6 +651,14 @@ static av_cold int
> > dnn_detect_init(AVFilterContext
> > *context)
> >      DnnDetectContext *ctx = context->priv;
> >      DnnContext *dnn_ctx = &ctx->dnnctx;
> >      int ret;
> > +    int using_yolo = (ctx->model_type == DDMT_YOLOV3 ||
> > +                      ctx->model_type == DDMT_YOLOV4 ||
> > +                      ctx->model_type == DDMT_YOLOV1V2);
> > +
> > +    if (using_yolo && !ctx->anchors) {
> > +        av_log(ctx, AV_LOG_ERROR, "anchors is not set while being
> > + required for
> > YOLO models\n");
> > +        return AVERROR(EINVAL);
> > +    }
> >
> >      ret = ff_dnn_init(&ctx->dnnctx, DFT_ANALYTICS_DETECT, context);
> >      if (ret < 0)
> > --
> > 2.48.1
> >
> LGTM. Thanks
> 
> Wenbin
> 
> >
> > _______________________________________________
> > ffmpeg-devel mailing list
> > ffmpeg-devel at ffmpeg.org
> > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> >
> > To unsubscribe, visit link above, or email
> > ffmpeg-devel-request at ffmpeg.org with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email ffmpeg-devel-request at ffmpeg.org
> with subject "unsubscribe".


More information about the ffmpeg-devel mailing list