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 E5F254A28C for ; Sun, 28 Apr 2024 06:47:59 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7C2D468D3EA; Sun, 28 Apr 2024 09:47:23 +0300 (EEST) Received: from out162-62-58-216.mail.qq.com (out162-62-58-216.mail.qq.com [162.62.58.216]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A899D68D304 for ; Sun, 28 Apr 2024 09:47:10 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1714286822; bh=8ePUb8R2DKpOxnVBvEOLW+SaeQDSrkIueKLbXtQD+lk=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=JkffapFPLyTHJNE1nnff+Ld2YCy56w/AJ1jLAB4xPM4w75UJVTs6pDJgRJoQf0fRF uqMyPjAnEQir4792MuS0sOz18A8eryX91O11r3H32MN+i7fSHzLpT0or6ggf2+L3vh afT0mZhV7yO42NkecAnyc2R0bwZJBxt/Y+U3iKiU= 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: xmsmtpt1714286821tjjmmvml5 Message-ID: X-QQ-XMAILINFO: NQR8mRxMnur91gIxrQVtefQ/yVqhGA3KTie5ZvOU9r2KPlrTorIRPwpC3DN162 zlBt16us1fBtJEYE03YyzD9kMkDRsGlPkSPbeu0vZEFsiaoiClYDGoGYMPJ4HwJBQ5zb5oh0C1eF bVPRfHmdVWGqAJcwEjJ10cJ2O/Quiam3HEfWS62UmuS3i4Pm1jrl61fmrpGdB89NEOWKQVzL74IT 01LoKbRNI7Xk63XNA9xm5522hftbABkZpm5Iva8A5jqLK3RUowVyav+eu7TOSlRiZ+ULaNMmDuT4 5juQ6Or7cTNr441TOUFX072wH4B37b3ZDChAqzgCvaJSM8UtfQYlVJZrT58UNKe4GTT7JQT9Pl5J BLObscuRCm1wkCuCZC4w6Vlnwx0ojsQM9Prl+nK7Ld8XiQHsGbw+zi19dGGQQ8tC99cjBpm145wV VEvRMZD+EyfhMFZ5EoiRacuVNzE6Rxfk8Y77uyvxXvQt+RJ8k1TD1YNMQ1yuElMD8LspomH1lKzX StNgUWLojnJgwyjEG9fR+4G7iGcHZ/GkJ8pE5Q2rmVFrqkuXDdgETHhqVVjKm1kk12HweNcABzZL HYKgHVkW4hVO8EtAKnD/xtC3zLbcXNM3lP2YwRqV7EK6duV6bN/qPUzg++FLkhXQDDa2pkNzYi74 Vl+fKGB8I89oDT/vvz/mCWYoebUybavBjemJVCZgGppaS+cZcHzxwge2OvNWWVNp48Icn8suFdfr BRLmZeYye+DPHp/SjaarEmJIzxSpoyps6ISGZ9+f3HT1x3CTf3wkBV3RW3iBLnY9T/CdwFgDB0h7 orakXQFU1VloDWFhBZQCN2RsNUw2pyM6a/QKPy6p4DPOhd+nnI5NymNN8RedV3tLiWGB1pxIBIlJ ofR3A9z1NPkV7OyAVBJgz0zmGq29TriPP1OH0p0PZCclDpf+1iHMVwnmzMUJNFjm68GmNUtPt6Wh xCSgr5ZdSZpleivl5fMSXKQ3tkMhxmjRYWsf439m8gnPRe40OR1GvS6HbO2Bax X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Apr 2024 14:46:55 +0800 X-OQ-MSGID: <20240428064655.106853-9-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 9/9] 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 ebd308cd84..cce3c45856 100644 --- a/libavfilter/dnn/dnn_interface.c +++ b/libavfilter/dnn/dnn_interface.c @@ -80,25 +80,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_child_next(DnnContext *obj, void *prev) { diff --git a/libavfilter/dnn_interface.h b/libavfilter/dnn_interface.h index 4e14a42d00..4b25ac2b84 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".