From 505c43bb652093625c71b312ce1a5f1b9f9679e2 Mon Sep 17 00:00:00 2001 From: Zhao Zhili Date: Sun, 30 Apr 2023 23:38:54 +0800 Subject: [PATCH] avfilter/dnn: refactor ff_get_dnn_module to remove allocation Signed-off-by: Zhao Zhili --- libavfilter/dnn/dnn_interface.c | 28 +++++----------------------- libavfilter/dnn_filter_common.c | 1 - libavfilter/dnn_filter_common.h | 2 +- libavfilter/dnn_interface.h | 2 +- 4 files changed, 7 insertions(+), 26 deletions(-) diff --git a/libavfilter/dnn/dnn_interface.c b/libavfilter/dnn/dnn_interface.c index 4f78f35474..a60dcb091b 100644 --- a/libavfilter/dnn/dnn_interface.c +++ b/libavfilter/dnn/dnn_interface.c @@ -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; } diff --git a/libavfilter/dnn_filter_common.c b/libavfilter/dnn_filter_common.c index 5083e3de19..7b34fd0c0a 100644 --- a/libavfilter/dnn_filter_common.c +++ b/libavfilter/dnn_filter_common.c @@ -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); } } diff --git a/libavfilter/dnn_filter_common.h b/libavfilter/dnn_filter_common.h index bcdf37c815..30871ee381 100644 --- a/libavfilter/dnn_filter_common.h +++ b/libavfilter/dnn_filter_common.h @@ -36,7 +36,7 @@ typedef struct DnnContext { char **model_outputnames; uint32_t nb_outputs; - DNNModule *dnn_module; + const DNNModule *dnn_module; DNNModel *model; } DnnContext; diff --git a/libavfilter/dnn_interface.h b/libavfilter/dnn_interface.h index 6b64a2b55a..b2bfdd38e7 100644 --- a/libavfilter/dnn_interface.h +++ b/libavfilter/dnn_interface.h @@ -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