From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id 2FA3048DE9 for ; Sun, 28 Apr 2024 06:47:42 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DD3E468D3BC; Sun, 28 Apr 2024 09:47:20 +0300 (EEST) Received: from out203-205-221-221.mail.qq.com (out203-205-221-221.mail.qq.com [203.205.221.221]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5B58F68D2A2 for ; Sun, 28 Apr 2024 09:47:09 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1714286819; bh=HAukkNZJvEOwRRpmfNHUU5zmhF6whRNbp+SKycaRzbs=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=wzvDkSvhf9wkFc4+1E4qGOgbFh3qSZZkOtNFj6Eg0kmzWvWB61uBt9LCim9b+GbVw w1DrzawLJ/RvRgIz0XEq/vc1k6PsajtNxJlrq4Yb/qsWougUlIdx4cTiv+Gz2m+Spc oqopYfF5BOpvXNxgxwuCXpD7VD+6Asu+rlRNI5J0= Received: from localhost.localdomain ([119.147.10.207]) by newxmesmtplogicsvrszc5-2.qq.com (NewEsmtp) with SMTP id BB93D84A; Sun, 28 Apr 2024 14:46:57 +0800 X-QQ-mid: xmsmtpt1714286818toei9zd1r Message-ID: X-QQ-XMAILINFO: OZZSS56D9fAjUvQnEwa4OdHB6QuL6gSxhTM1eFIa6x2oD+5Fa/jOaMktpvT26y L1GAzaiL2NUpgyU/nMDD2b9DKBFcP6IvaebEPJcYv6B6tXzaIY9iYP3h32ubLq3fYLGDHVHgIoln vrBPXY9u8dFRGvHEac45g4SmHagQgI5oOKaKYDtcpY3KHrNlhWmd3Vr2fHRX5mn6kPKa3ArQpvRJ cF6jtXCcwclYNe+vbADychKukLEQS/S9TwlN1g9iXgMU2yvOTSwLlG8/gOTw+Xv3gjtlONBqn2L9 JL3ouwRMnxwEBB7Nytm1/n06ajB6vznktgFat7OAK0TscekUvFzZeFtv8vBmG1NkNy7QlCj0J2sE Fgrf7wutuBcEyfjw0XXtkWmwZX+wLx+YF+ehp3zZOCDcIolokgcHTseexEo/WcLQuhQ0xqUCyO9C luIteWIWDCSdDj60tKPG5rrFyhmfdTmbQPtDer03YEUdr3+gEZ6CBuz+G9LaCKqaWp7qmBqQYv1Q p7VRrY5rOzeXbFAKxTsmwwKK8fqt5Ol8e0EQgtodP1HTFJtaTFebgpWgjPVt/IY89iFW9eFWh9At HwxwMXk9TUT3yikP6sP1rDphK5ri0VeCtX3FkzVLRpEVA4l3TSofMIRKFvzd4eCvScGxdygoAOrU kNGnuMTzzU0NoaVlXU8ckTphuW86ZO4o06m1CVNwxlQDBklY7k6zhgysfaukc6SmDtGo0mKU3Ld6 ODGx3LpSk6JHyYRc1CO0adF6TEgnmWHUia0FUkUK4vzDHeTnUCU9jJpjc126nF3otMp3b4x1B04d b8tvm6hfbCX/IZXr/+XoCeVk9e2DsVUq3cB73qME+b5aLvFhceCUqKSzL78FUGB4KQ2wzCN3PagW sfFKaK4kGWawQAO0yaTK9LJYuqGZkq7Cd+x1N/dUyoTVofk9fvhtPPWhroLnkcPp2Cm3H7EsCQa9 jmQkNXgGqoBBvtR4Zki50HWrzzhTr4MnlQwsxUR7zoJqOigqomGlAZ3BN41Dtu X-QQ-XMRINFO: MPJ6Tf5t3I/ycC2BItcBVIA= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Apr 2024 14:46:49 +0800 X-OQ-MSGID: <20240428064655.106853-3-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240428064655.106853-1-quinkblack@foxmail.com> References: <20240428064655.106853-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH WIP v2 3/9] avfilter/dnn_backend_openvino: simplify memory allocation X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Zhao Zhili Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Zhao Zhili --- libavfilter/dnn/dnn_backend_openvino.c | 47 +++++++++++--------------- 1 file changed, 20 insertions(+), 27 deletions(-) diff --git a/libavfilter/dnn/dnn_backend_openvino.c b/libavfilter/dnn/dnn_backend_openvino.c index 769ba0a54b..1acc54b791 100644 --- a/libavfilter/dnn/dnn_backend_openvino.c +++ b/libavfilter/dnn/dnn_backend_openvino.c @@ -41,8 +41,8 @@ #include "dnn_backend_common.h" typedef struct OVModel{ + DNNModel model; DnnContext *ctx; - DNNModel *model; #if HAVE_OPENVINO2 ov_core_t *core; ov_model_t *ov_model; @@ -300,11 +300,11 @@ static int fill_model_input_ov(OVModel *ov_model, OVRequestItem *request) return ov2_map_error(status, NULL); } #endif - switch (ov_model->model->func_type) { + switch (ov_model->model.func_type) { case DFT_PROCESS_FRAME: if (task->do_ioproc) { - if (ov_model->model->frame_pre_proc != NULL) { - ov_model->model->frame_pre_proc(task->in_frame, &input, ov_model->model->filter_ctx); + if (ov_model->model.frame_pre_proc != NULL) { + ov_model->model.frame_pre_proc(task->in_frame, &input, ov_model->model.filter_ctx); } else { ff_proc_from_frame_to_dnn(task->in_frame, &input, ctx); } @@ -442,11 +442,11 @@ static void infer_completion_callback(void *args) for (int i = 0; i < request->lltask_count; ++i) { task = request->lltasks[i]->task; - switch (ov_model->model->func_type) { + switch (ov_model->model.func_type) { case DFT_PROCESS_FRAME: if (task->do_ioproc) { - if (ov_model->model->frame_post_proc != NULL) { - ov_model->model->frame_post_proc(task->out_frame, outputs, ov_model->model->filter_ctx); + if (ov_model->model.frame_post_proc != NULL) { + ov_model->model.frame_post_proc(task->out_frame, outputs, ov_model->model.filter_ctx); } else { ff_proc_from_dnn_to_frame(task->out_frame, outputs, ctx); } @@ -458,23 +458,23 @@ static void infer_completion_callback(void *args) } break; case DFT_ANALYTICS_DETECT: - if (!ov_model->model->detect_post_proc) { + if (!ov_model->model.detect_post_proc) { av_log(ctx, AV_LOG_ERROR, "detect filter needs to provide post proc\n"); goto end; } - ov_model->model->detect_post_proc(task->in_frame, outputs, + ov_model->model.detect_post_proc(task->in_frame, outputs, ov_model->nb_outputs, - ov_model->model->filter_ctx); + ov_model->model.filter_ctx); break; case DFT_ANALYTICS_CLASSIFY: - if (!ov_model->model->classify_post_proc) { + if (!ov_model->model.classify_post_proc) { av_log(ctx, AV_LOG_ERROR, "classify filter needs to provide post proc\n"); goto end; } for (int output_i = 0; output_i < ov_model->nb_outputs; output_i++) - ov_model->model->classify_post_proc(task->in_frame, outputs, + ov_model->model.classify_post_proc(task->in_frame, outputs, request->lltasks[i]->bbox_index, - ov_model->model->filter_ctx); + ov_model->model.filter_ctx); break; default: av_assert0(!"should not reach here"); @@ -571,7 +571,7 @@ static void dnn_free_model_ov(DNNModel **model) av_free(ov_model->all_input_names); #endif av_freep(&ov_model); - av_freep(model); + *model = NULL; } @@ -598,7 +598,7 @@ static int init_model_ov(OVModel *ov_model, const char *input_name, const char * #endif // We scale pixel by default when do frame processing. if (fabsf(ctx->ov_option.scale) < 1e-6f) - ctx->ov_option.scale = ov_model->model->func_type == DFT_PROCESS_FRAME ? 255 : 1; + ctx->ov_option.scale = ov_model->model.func_type == DFT_PROCESS_FRAME ? 255 : 1; // batch size if (ctx->ov_option.batch_size <= 0) { ctx->ov_option.batch_size = 1; @@ -702,7 +702,7 @@ static int init_model_ov(OVModel *ov_model, const char *input_name, const char * ret = ov2_map_error(status, NULL); goto err; } - if (ov_model->model->func_type != DFT_PROCESS_FRAME) + if (ov_model->model.func_type != DFT_PROCESS_FRAME) status |= ov_preprocess_output_set_element_type(output_tensor_info, F32); else if (fabsf(ctx->ov_option.scale - 1) > 1e-6f || fabsf(ctx->ov_option.mean) > 1e-6f) status |= ov_preprocess_output_set_element_type(output_tensor_info, F32); @@ -1280,7 +1280,7 @@ static int get_output_ov(void *model, const char *input_name, int input_width, i .out_frame = NULL, }; - if (ov_model->model->func_type != DFT_PROCESS_FRAME) { + if (ov_model->model.func_type != DFT_PROCESS_FRAME) { av_log(ctx, AV_LOG_ERROR, "Get output dim only when processing frame.\n"); return AVERROR(EINVAL); } @@ -1342,7 +1342,7 @@ static int get_output_ov(void *model, const char *input_name, int input_width, i goto err; } - ret = extract_lltask_from_task(ov_model->model->func_type, &task, ov_model->lltask_queue, NULL); + ret = extract_lltask_from_task(ov_model->model.func_type, &task, ov_model->lltask_queue, NULL); if (ret != 0) { av_log(ctx, AV_LOG_ERROR, "unable to extract inference from task.\n"); goto err; @@ -1378,19 +1378,12 @@ static DNNModel *dnn_load_model_ov(DnnContext *ctx, DNNFunctionType func_type, A IEStatusCode status; #endif - model = av_mallocz(sizeof(DNNModel)); - if (!model){ - return NULL; - } - ov_model = av_mallocz(sizeof(OVModel)); - if (!ov_model) { - av_freep(&model); + if (!ov_model) return NULL; - } ov_model->ctx = ctx; + model = &ov_model->model; model->model = ov_model; - ov_model->model = model; #if HAVE_OPENVINO2 status = ov_core_create(&core); -- 2.25.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".