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/[email protected]/ Signed-off-by: Leandro Santiago <[email protected]> --- 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 _______________________________________________ ffmpeg-devel mailing list [email protected] https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email [email protected] with subject "unsubscribe".
