diff options
author | Guo, Yejun <yejun.guo@intel.com> | 2021-03-13 13:35:29 +0800 |
---|---|---|
committer | Guo, Yejun <yejun.guo@intel.com> | 2021-03-18 09:30:09 +0800 |
commit | 3ce2ee7f54ccbb20c88c1e8e0cc5796e06580ad0 (patch) | |
tree | 7d1f06df30a9016ff32aa0a6a5749af84876fc54 | |
parent | 82bd02a2c73bb5e6b7cf5e5eba486e279f1a7358 (diff) | |
download | ffmpeg-3ce2ee7f54ccbb20c88c1e8e0cc5796e06580ad0.tar.gz |
lavfi/dnn_backend_openvino.c: fix mem leak for AVFrame upon error
-rw-r--r-- | libavfilter/dnn/dnn_backend_openvino.c | 30 |
1 files changed, 16 insertions, 14 deletions
diff --git a/libavfilter/dnn/dnn_backend_openvino.c b/libavfilter/dnn/dnn_backend_openvino.c index 5be053b7f8..d86fb124d5 100644 --- a/libavfilter/dnn/dnn_backend_openvino.c +++ b/libavfilter/dnn/dnn_backend_openvino.c @@ -485,25 +485,12 @@ static DNNReturnType get_output_ov(void *model, const char *input_name, int inpu OVContext *ctx = &ov_model->ctx; TaskItem task; RequestItem request; - AVFrame *in_frame = av_frame_alloc(); + AVFrame *in_frame = NULL; AVFrame *out_frame = NULL; TaskItem *ptask = &task; IEStatusCode status; input_shapes_t input_shapes; - if (!in_frame) { - av_log(ctx, AV_LOG_ERROR, "Failed to allocate memory for input frame\n"); - return DNN_ERROR; - } - out_frame = av_frame_alloc(); - if (!out_frame) { - av_log(ctx, AV_LOG_ERROR, "Failed to allocate memory for output frame\n"); - av_frame_free(&in_frame); - return DNN_ERROR; - } - in_frame->width = input_width; - in_frame->height = input_height; - if (ctx->options.input_resizable) { status = ie_network_get_input_shapes(ov_model->network, &input_shapes); input_shapes.shapes->shape.dims[2] = input_height; @@ -523,6 +510,21 @@ static DNNReturnType get_output_ov(void *model, const char *input_name, int inpu } } + in_frame = av_frame_alloc(); + if (!in_frame) { + av_log(ctx, AV_LOG_ERROR, "Failed to allocate memory for input frame\n"); + return DNN_ERROR; + } + in_frame->width = input_width; + in_frame->height = input_height; + + out_frame = av_frame_alloc(); + if (!out_frame) { + av_log(ctx, AV_LOG_ERROR, "Failed to allocate memory for output frame\n"); + av_frame_free(&in_frame); + return DNN_ERROR; + } + task.done = 0; task.do_ioproc = 0; task.async = 0; |