summaryrefslogtreecommitdiff
path: root/libavfilter
diff options
context:
space:
mode:
authorGuo, Yejun <yejun.guo@intel.com>2021-03-13 13:35:29 +0800
committerGuo, Yejun <yejun.guo@intel.com>2021-03-18 09:30:09 +0800
commit3ce2ee7f54ccbb20c88c1e8e0cc5796e06580ad0 (patch)
tree7d1f06df30a9016ff32aa0a6a5749af84876fc54 /libavfilter
parent82bd02a2c73bb5e6b7cf5e5eba486e279f1a7358 (diff)
downloadffmpeg-3ce2ee7f54ccbb20c88c1e8e0cc5796e06580ad0.tar.gz
lavfi/dnn_backend_openvino.c: fix mem leak for AVFrame upon error
Diffstat (limited to 'libavfilter')
-rw-r--r--libavfilter/dnn/dnn_backend_openvino.c30
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;