1
0
Fork 0

avfilter/dnn: refactor ff_get_dnn_module to remove allocation

Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
This commit is contained in:
Zhao Zhili 2023-04-30 23:38:54 +08:00
parent 3f52b7eedc
commit 505c43bb65
4 changed files with 7 additions and 26 deletions

View File

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

View File

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

View File

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

View File

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