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 B65504A432 for ; Tue, 30 Apr 2024 07:14:06 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 48CA468D5F7; Tue, 30 Apr 2024 10:12:46 +0300 (EEST) Received: from out203-205-221-233.mail.qq.com (out203-205-221-233.mail.qq.com [203.205.221.233]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F2D0668D541 for ; Tue, 30 Apr 2024 10:12:26 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1714461137; bh=0vJA8Dl1sAkmG0nGbNaA8Hl/HMqrUq7btaRHA+p6wCE=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=LX5lf8bxJ1MdpFwsudjIGiwleGL1rRbGshMJTuKxxN/5oMMUe7GsPAZPdznlgi8E1 qrHfdQ5nyho5bCSVCN8NsURFpq4YSkY0OdjpTBdvFwtKmawU6Nccj9KYuCQfnCyOKS EGYFZsF3nrKjR3womuP00e0BFUHh90kHbYKJUH3w= Received: from localhost.localdomain ([113.108.77.51]) by newxmesmtplogicsvrsza10-0.qq.com (NewEsmtp) with SMTP id 3091B0E9; Tue, 30 Apr 2024 15:12:09 +0800 X-QQ-mid: xmsmtpt1714461137tqo3mn7m8 Message-ID: X-QQ-XMAILINFO: MyIXMys/8kCt65l09izoTVPkM4rG8U0fE+lJWn8xPTuodhAfagt7cxTXP7jg8J kpIlfV77C03TQbsBjE7MRJZtVfZCsiG/zzEK/HbiLMxgYhD6JUvU9h7cDAcD3tXL0V0frspffoKe Uv6Hjv84tx5ZnGFKSsKIro0oHlKmk7lZWsAFs0R3mRtfA0JpYSAYUbLaD+zOvAT+W2uY2r9CQRKH 7wySaX73qkfKtJz2kuzyono7VaeoJtQxOGa0DwI7LrxQY/JhXdnbgBCL2d4dAvOIQmHlNqXwbSff tzBMAE2BdI0+4/cbFQn2H5rp9CPS2HpPBYk/RjMx8qmLyifFuSTwBXLWc5b/Zu93Tt07obI5LMIS B5AFj+n5pl3oUzN+10UdluRPsThBN5VrPpalNw4c4IUk5Icv5UeBGvfXdbRz5Qcin+OW9FAGfZSv yIt3hAv3aVsnm0spi8g+rS0WpeM5xW2Y0HFnvzWifApzexSy9YNdBRI1txp1WZAFdJNIMwJTXCfh u9IP4LFegz+ir/F62d1PNY62bLcL1mRUHo3PKvzFVCaVXH3mu3Qf79tSdLnIi4vZgaureG1iFDQk xha2xsT37GliNHl4uZjkZe8JWWsryEoz8JEHRutdNJwSDKwYHx4dHQV/NhCD/Qakq5Hk0wmV621S /Z0kfhEd766qmD35C1UGyWKyIqzmoMOOCtTEWypICe0S2eJb0PmgLg6Y57ShklohCt89S/UGRdDp UM4rWGiLkuuvypRMCyvkvqwn6AZt3/Hj9IOl5+e1SfgjICTpvxsxMSUW/aF0YLx9c9WgzSfPWrGK MvyRTe/BJduqHGQA9Xiby/Ly4vGC06LPDU6xvgAJvvcz/4KGPUPOc7wc421jvBVZvEoRmrsgXlsY 1PJ4yYjk/dXKwjjVh+RYz9FuNPG3deUm2K4W2YMbWWgT4CUaA5sVeNRywKAWnIeyETpOZQq7XPME dAmTvYSD6aWVpA4eHj2fViizBZA7Cr8dZUWCskoamIFi7yuiJHQWg2wCvREOuj2sW1mKBlIMKP0r /zEopqCd7C8obM1YS0 X-QQ-XMRINFO: OWPUhxQsoeAVDbp3OJHYyFg= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Tue, 30 Apr 2024 15:12:07 +0800 X-OQ-MSGID: <20240430071208.126817-10-quinkblack@foxmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20240430071208.126817-1-quinkblack@foxmail.com> References: <20240430071208.126817-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 09/10] avfilter/dnn: Use dnn_backend_info_list to search for dnn module 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 | 1 + libavfilter/dnn/dnn_backend_tf.c | 1 + libavfilter/dnn/dnn_backend_torch.cpp | 1 + libavfilter/dnn/dnn_interface.c | 26 ++++++++------------------ libavfilter/dnn_interface.h | 1 + 5 files changed, 12 insertions(+), 18 deletions(-) diff --git a/libavfilter/dnn/dnn_backend_openvino.c b/libavfilter/dnn/dnn_backend_openvino.c index d8a6820dc2..9c699cdc8c 100644 --- a/libavfilter/dnn/dnn_backend_openvino.c +++ b/libavfilter/dnn/dnn_backend_openvino.c @@ -1613,6 +1613,7 @@ static int dnn_flush_ov(const DNNModel *model) const DNNModule ff_dnn_backend_openvino = { .clazz = DNN_DEFINE_CLASS(dnn_openvino), + .type = DNN_OV, .load_model = dnn_load_model_ov, .execute_model = dnn_execute_model_ov, .get_result = dnn_get_result_ov, diff --git a/libavfilter/dnn/dnn_backend_tf.c b/libavfilter/dnn/dnn_backend_tf.c index 06ea6cbb8c..6afefe8115 100644 --- a/libavfilter/dnn/dnn_backend_tf.c +++ b/libavfilter/dnn/dnn_backend_tf.c @@ -886,6 +886,7 @@ static int dnn_flush_tf(const DNNModel *model) const DNNModule ff_dnn_backend_tf = { .clazz = DNN_DEFINE_CLASS(dnn_tensorflow), + .type = DNN_TF, .load_model = dnn_load_model_tf, .execute_model = dnn_execute_model_tf, .get_result = dnn_get_result_tf, diff --git a/libavfilter/dnn/dnn_backend_torch.cpp b/libavfilter/dnn/dnn_backend_torch.cpp index 24e9f2c8e2..2557264713 100644 --- a/libavfilter/dnn/dnn_backend_torch.cpp +++ b/libavfilter/dnn/dnn_backend_torch.cpp @@ -561,6 +561,7 @@ static int dnn_flush_th(const DNNModel *model) extern const DNNModule ff_dnn_backend_torch = { .clazz = DNN_DEFINE_CLASS(dnn_th), + .type = DNN_TH, .load_model = dnn_load_model_th, .execute_model = dnn_execute_model_th, .get_result = dnn_get_result_th, diff --git a/libavfilter/dnn/dnn_interface.c b/libavfilter/dnn/dnn_interface.c index 2d3bd229a4..b56c22e4c7 100644 --- a/libavfilter/dnn/dnn_interface.c +++ b/libavfilter/dnn/dnn_interface.c @@ -81,25 +81,15 @@ static const DnnBackendInfo dnn_backend_info_list[] = { const DNNModule *ff_get_dnn_module(DNNBackendType backend_type, void *log_ctx) { - switch(backend_type){ - #if (CONFIG_LIBTENSORFLOW == 1) - case DNN_TF: - return &ff_dnn_backend_tf; - #endif - #if (CONFIG_LIBOPENVINO == 1) - case DNN_OV: - return &ff_dnn_backend_openvino; - #endif - #if (CONFIG_LIBTORCH == 1) - case DNN_TH: - return &ff_dnn_backend_torch; - #endif - default: - av_log(log_ctx, AV_LOG_ERROR, - "Module backend_type %d is not supported or enabled.\n", - backend_type); - return NULL; + for (int i = 1; i < FF_ARRAY_ELEMS(dnn_backend_info_list); i++) { + if (dnn_backend_info_list[i].module->type == backend_type) + return dnn_backend_info_list[i].module; } + + av_log(log_ctx, AV_LOG_ERROR, + "Module backend_type %d is not supported or enabled.\n", + backend_type); + return NULL; } void ff_dnn_init_child_class(DnnContext *ctx) diff --git a/libavfilter/dnn_interface.h b/libavfilter/dnn_interface.h index 1154d50629..e2582c808e 100644 --- a/libavfilter/dnn_interface.h +++ b/libavfilter/dnn_interface.h @@ -170,6 +170,7 @@ typedef struct DnnContext { // Stores pointers to functions for loading, executing, freeing DNN models for one of the backends. struct DNNModule { const AVClass clazz; + DNNBackendType type; // Loads model and parameters from given file. Returns NULL if it is not possible. DNNModel *(*load_model)(DnnContext *ctx, DNNFunctionType func_type, AVFilterContext *filter_ctx); // Executes model with specified input and output. Returns the error code otherwise. -- 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".