[FFmpeg-devel] [PATCH 02/10] avfilter/dnn: refactor ff_get_dnn_module to remove allocation
Zhao Zhili
quinkblack at foxmail.com
Sun Apr 30 18:38:54 EEST 2023
From: Zhao Zhili <zhilizhao at tencent.com>
Signed-off-by: Zhao Zhili <zhilizhao at tencent.com>
---
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
--
2.40.1
More information about the ffmpeg-devel
mailing list