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 7A5DE49A7D for ; Sat, 27 Apr 2024 16:43:52 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 146C268D425; Sat, 27 Apr 2024 19:42:32 +0300 (EEST) Received: from out203-205-221-235.mail.qq.com (out203-205-221-235.mail.qq.com [203.205.221.235]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 426D968D33D for ; Sat, 27 Apr 2024 19:42:16 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=foxmail.com; s=s201512; t=1714236128; bh=WytxIeKHgoeS51VRjPoS7RvFX77IU+L+e55zh+/4Fwo=; h=From:To:Cc:Subject:Date:In-Reply-To:References; b=JjvuLMnW/6lGP7b/G1lt3cWlYc2sRFTysFQdoVp2mAXeYJcRR7K0eEvidRKsp8CMG WAzXUAxVfDAYih33yIMIJtPrSMHnis4IPe36nuCPBzhK0o4+4ql6WSKFyqeZ73q4dK fBGQT4hGF53n3laP8f0gTjaY0ESvHr4oml/3QjWE= Received: from localhost.localdomain ([113.118.107.199]) by newxmesmtplogicsvrszc19-0.qq.com (NewEsmtp) with SMTP id A8200E2A; Sun, 28 Apr 2024 00:42:02 +0800 X-QQ-mid: xmsmtpt1714236127t0o114ehs Message-ID: X-QQ-XMAILINFO: NYqi3QrBgYD/ruq+g1+7tr/h5wrWSzU0cotHf+t6NYXZkOsYEm8vuBBPCxQnD6 teltBbjP76PhhNRDKerflLUQyo2DMJESP8HXyg0wZ7Y9YVG5hXRiGOX1+lENYGWbtSeScUHnBjky WP/GFLcZuBH8U2qao0eAP1GG8ZDNUB/tgfCvzheHNMBDXXX7CKI+BIMbKYQk+7wh6RhIhbsoQkSj /FFL7GRweYLZ7iuVp4YET9PS4CpswhSb7xl8BDzAd8/EeJ4oYlWVxceBWms3fzPjx0Xe9UoaxdEa 26zfY5JT5ICiOLWiHUpwY6ohIf0NqSbTz0AsjDEXt+gDkA88ciFZxXm+LZkPQydeXxI99vAbSRqD 4JCPKddEk3St/Ppf9UPwNg9r8oxKc5jLgTjKHeo4qTNd6qBGkMnEpjW0vC7u/+mQkOrR73ZN3f0q 3cZ2jnKU1+j/1j4c0P26parJK4pYPL3OHRlSrrlxVwsEP4xJ/7ERvHkOBoxt43+kaCFft0V0OmFn mjGDm8AEeDh0HZiBjPo/WOFhRJUX31Sin7BOxNfCFSCH9HmJ67hxOi8uoB3kDFW/rxL+yDuqAXpl 9zo4ZPtxqcTyxB+P5G8OZXlfL8OC73AZnyW+QYCNd0Ic5w6Diy8fhrh2QN33CIxl1254WPWMDins QAayvU+0Jq8/mufR61eAW1b3lsjm2aP59fi165DIwT2J+TKglfgWjYXF27+pDsreEuO1vbdD/NVr prR/Izm8hxUbVccHxBZA7GpH4owTLn9df03gisDvHUWn0ZxpkGxVkQLawmIU3yPX9Rzp+D2M0HD7 CXbSpklcDnQ9JLoBqQQri6B41D/5TeNOHARZAs3F2LJ+NSjUSMADAkvW9+EuDanjia+kxJ+h8fN/ 9C3vEBJjZ9ZRRx3xxl86orRzJaXTuN10QkzmczMneEyuosAKiKMHgRoanBz3SsP5ec0z4TNpq+wX S5yG8zsD2YJ08cD+QcXwhMsQb/rSeTm3Oz9Vht7Sg= X-QQ-XMRINFO: OD9hHCdaPRBwq3WW+NvGbIU= From: Zhao Zhili To: ffmpeg-devel@ffmpeg.org Date: Sun, 28 Apr 2024 00:41:59 +0800 X-OQ-MSGID: <20240427164159.82771-10-quinkblack@foxmail.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20240427164159.82771-1-quinkblack@foxmail.com> References: <20240427164159.82771-1-quinkblack@foxmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH WIP 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 245fe5f759..76fe364a47 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 2b35c9c9fb..3fe88d4029 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.34.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".