avfilter/dnn: refactor ff_get_dnn_module to remove allocation

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
pull/389/head
Zhao Zhili 2 years ago
parent 3f52b7eedc
commit 505c43bb65
  1. 28
      libavfilter/dnn/dnn_interface.c
  2. 1
      libavfilter/dnn_filter_common.c
  3. 2
      libavfilter/dnn_filter_common.h
  4. 2
      libavfilter/dnn_interface.h

@ -29,37 +29,19 @@
extern const DNNModule ff_dnn_backend_openvino;
extern const DNNModule ff_dnn_backend_tf;
DNNModule *ff_get_dnn_module(DNNBackendType backend_type)
const DNNModule *ff_get_dnn_module(DNNBackendType backend_type)
{
DNNModule *dnn_module;
dnn_module = av_mallocz(sizeof(DNNModule));
if(!dnn_module){
return NULL;
}
switch(backend_type){
case DNN_TF:
#if (CONFIG_LIBTENSORFLOW == 1)
*dnn_module = ff_dnn_backend_tf;
#else
av_freep(&dnn_module);
return NULL;
case DNN_TF:
return &ff_dnn_backend_tf;
#endif
break;
case DNN_OV:
#if (CONFIG_LIBOPENVINO == 1)
*dnn_module = ff_dnn_backend_openvino;
#else
av_freep(&dnn_module);
return NULL;
case DNN_OV:
return &ff_dnn_backend_openvino;
#endif
break;
default:
av_log(NULL, AV_LOG_ERROR, "Module backend_type is not supported or enabled.\n");
av_freep(&dnn_module);
return NULL;
}
return dnn_module;
}

@ -158,6 +158,5 @@ void ff_dnn_uninit(DnnContext *ctx)
{
if (ctx->dnn_module) {
(ctx->dnn_module->free_model)(&ctx->model);
av_freep(&ctx->dnn_module);
}
}

@ -36,7 +36,7 @@ typedef struct DnnContext {
char **model_outputnames;
uint32_t nb_outputs;
DNNModule *dnn_module;
const DNNModule *dnn_module;
DNNModel *model;
} DnnContext;

@ -123,6 +123,6 @@ typedef struct DNNModule{
} DNNModule;
// Initializes DNNModule depending on chosen backend.
DNNModule *ff_get_dnn_module(DNNBackendType backend_type);
const DNNModule *ff_get_dnn_module(DNNBackendType backend_type);
#endif

Loading…
Cancel
Save