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 ESMTPS id 3724E4E2EC for ; Mon, 10 Mar 2025 19:51:54 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1BD9A68DF9B; Mon, 10 Mar 2025 21:51:52 +0200 (EET) Received: from mail-wm1-f50.google.com (mail-wm1-f50.google.com [209.85.128.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 67EAF68C59E for ; Mon, 10 Mar 2025 21:51:45 +0200 (EET) Received: by mail-wm1-f50.google.com with SMTP id 5b1f17b1804b1-43bcc85ba13so38480735e9.0 for ; Mon, 10 Mar 2025 12:51:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1741636304; x=1742241104; darn=ffmpeg.org; h=thread-index:content-language:content-transfer-encoding :mime-version:message-id:date:subject:to:from:from:to:cc:subject :date:message-id:reply-to; bh=bCp1KdGFA8CTivikl3Qf1kCufxN5PtKYTrfwcVWEG6Q=; b=ZEAl2V8NEEkrehq/Ro8d8RgJq7VPgcHDjiMRh0eABLAs7q0nI3ylul8qsYSYvoPNYE d9wXni0nElbKLucLAXAK/2O3Sja5pouYf/XcrrvAqbexl+s0CsLqzNFMx4EKWV4NT8B0 M2fKU91VQMX7NLErG245oEUAtbxpvF12DuZzwcEcuhxE+O4USIuzvH4ZuzRr0D/A90/h sdIjzQsscTMU8PYdVMTemiSfHL4rB2PsbtOL0mVCsjrMg0d6et9ahEra/I18subAGmdt ZygJmwRzEgrw4bCgOxkPUFckeGdh8dMQ7Cg5nxWvn+HYz8UhhAWT8W3wGPM32PRa7ITt XCNQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1741636304; x=1742241104; h=thread-index:content-language:content-transfer-encoding :mime-version:message-id:date:subject:to:from:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=bCp1KdGFA8CTivikl3Qf1kCufxN5PtKYTrfwcVWEG6Q=; b=aCXWhnjn1QPsUUgHVh9DxVSjSlzZv73HLwfV0nBdN6VuArqQX7ltChnymnYZ+4DMJe i5s2Oq2DBAh8e7JGKGlXZugMZUjOTQNIBKMJI3R0EzfxxdgPWzbdEQQkx385y+3r3PNC 0DviGFgI0wVO2q0ImPDg0eSbJ10RstDLJgrNcZHXtf8u95a1ekEc+aOppKzC/uOLO2aa +JmVBDkt2FOK97V/HDYXz5+3tTP/ey6Gpy0liK/lbDGuJnMv0zdcfX/O9194WbzlubQ5 Bi5UfZFD/mxTv0jQ8t4vdqpvI5uQIVvmzdMS9QtXZWpxQHvqSTLDKMcp2qyhdbidEFpt ylnA== X-Gm-Message-State: AOJu0Yy4ANTZRuwMB9lXx23vdGplixtjbF0htdwbU31IvQTYcO13r49c W6rF/F6Fqr0qq7TTP0+QZhUSG0z6To3pFEs63kqFg1jQUhcAFNDWo2YdgA== X-Gm-Gg: ASbGncvY0VtykFgKaqnbnd9u1zrQpjuUJxIdIvaFqQtEJLyj3a2CdcH35Gn3om18IeC 7lE+hMRcyRY21QUvXR2IZxnPAf19Dtarh1QMDIumr7Q3Jr+B7aACZ/4bTGYSaz1ihtyc4tpD29U d7S5L8zTzaZbMUdTRgXCmjGdBWJZA7XsIT5xhzrXy0As3Fz/LrfxDT6RcYX0ihBuuo3eOdj7V8q Fj1FsMiTXSEGpeBEhPRxJ24kgrgV6LtSLX59NIp81wZz9PCcHh6ZafbriPJpVaV167syacrkZgN lYZ1qlLfZI796+l6UbojyxPsXbXdaYhhX8z2CjP0wsJfZcFlM+P9K31En8PTijWyPhsRPIuU9/s r3+NYNjjwPXb2UMYO X-Google-Smtp-Source: AGHT+IGcCyrGM01Go2Jr9jYEezcy7FlKXs1h25pqErNwrjNOltbLfpzvHMB/FP5IE6aukql9/bHr3Q== X-Received: by 2002:a05:600c:4446:b0:439:4700:9eb3 with SMTP id 5b1f17b1804b1-43c5a5e4fbamr96901885e9.3.1741636304203; Mon, 10 Mar 2025 12:51:44 -0700 (PDT) Received: from MK2 (80-108-16-220.cable.dynamic.surfer.at. [80.108.16.220]) by smtp.gmail.com with ESMTPSA id 5b1f17b1804b1-43d01d52582sm6626965e9.4.2025.03.10.12.51.43 for (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Mon, 10 Mar 2025 12:51:43 -0700 (PDT) From: To: Date: Mon, 10 Mar 2025 20:51:43 +0100 Message-ID: <003701db91f5$d9a29ed0$8ce7dc70$@gmail.com> MIME-Version: 1.0 X-Mailer: Microsoft Outlook 16.0 Content-Language: en-at Thread-Index: AduR9dZB0OHb5dgMSRSIyxroR6EAkw== Subject: [FFmpeg-devel] [PATCH v2 FFmpeg 3/20] libavfilter/dnn: move contain_valid_detection_bbox to dnn_backend_common 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 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: Signed-off-by: MaximilianKaindl --- libavfilter/dnn/dnn_backend_common.c | 38 +++++++++++++++++++++++++ libavfilter/dnn/dnn_backend_common.h | 8 ++++++ libavfilter/dnn/dnn_backend_openvino.c | 39 +------------------------- 3 files changed, 47 insertions(+), 38 deletions(-) diff --git a/libavfilter/dnn/dnn_backend_common.c b/libavfilter/dnn/dnn_backend_common.c index e45eefd14d..3944db35b5 100644 --- a/libavfilter/dnn/dnn_backend_common.c +++ b/libavfilter/dnn/dnn_backend_common.c @@ -23,6 +23,7 @@ #include "libavutil/mem.h" #include "dnn_backend_common.h" +#include "libavutil/detection_bbox.h" #define DNN_ASYNC_SUCCESS (void *)0 #define DNN_ASYNC_FAIL (void *)-1 @@ -178,3 +179,40 @@ int ff_dnn_fill_gettingoutput_task(TaskItem *task, DNNExecBaseParams *exec_param return ff_dnn_fill_task(task, exec_params, backend_model, 0, 0); } + +int ff_dnn_contain_valid_detection_bbox(AVFrame *frame) +{ + AVFrameSideData *sd; + const AVDetectionBBoxHeader *header; + const AVDetectionBBox *bbox; + + sd = av_frame_get_side_data(frame, AV_FRAME_DATA_DETECTION_BBOXES); + if (!sd) { // this frame has nothing detected + return 0; + } + + if (!sd->size) { + return 0; + } + + header = (const AVDetectionBBoxHeader *)sd->data; + if (!header->nb_bboxes) { + return 0; + } + + for (uint32_t i = 0; i < header->nb_bboxes; i++) { + bbox = av_get_detection_bbox(header, i); + if (bbox->x < 0 || bbox->w < 0 || bbox->x + bbox->w >= frame->width) { + return 0; + } + if (bbox->y < 0 || bbox->h < 0 || bbox->y + bbox->h >= frame->height) { + return 0; + } + + if (bbox->classify_count == AV_NUM_DETECTION_BBOX_CLASSIFY) { + return 0; + } + } + + return 1; +} \ No newline at end of file diff --git a/libavfilter/dnn/dnn_backend_common.h b/libavfilter/dnn/dnn_backend_common.h index 9f5d37b3e0..b5b15bc2f6 100644 --- a/libavfilter/dnn/dnn_backend_common.h +++ b/libavfilter/dnn/dnn_backend_common.h @@ -157,4 +157,12 @@ DNNAsyncStatusType ff_dnn_get_result_common(Queue *task_queue, AVFrame **in, AVF */ int ff_dnn_fill_gettingoutput_task(TaskItem *task, DNNExecBaseParams *exec_params, void *backend_model, int input_height, int input_width, void *ctx); +/** + * Check if the given frame contains a valid detection bounding box. + * + * @param frame The frame to check for valid detection bounding box + * + * @return Non-zero if frame contains valid detection bounding box, 0 otherwise + */ +int ff_dnn_contain_valid_detection_bbox(AVFrame *frame); #endif diff --git a/libavfilter/dnn/dnn_backend_openvino.c b/libavfilter/dnn/dnn_backend_openvino.c index 2f6706dcd4..03183af822 100644 --- a/libavfilter/dnn/dnn_backend_openvino.c +++ b/libavfilter/dnn/dnn_backend_openvino.c @@ -1151,43 +1151,6 @@ static int get_input_ov(DNNModel *model, DNNData *input, const char *input_name) #endif } -static int contain_valid_detection_bbox(AVFrame *frame) -{ - AVFrameSideData *sd; - const AVDetectionBBoxHeader *header; - const AVDetectionBBox *bbox; - - sd = av_frame_get_side_data(frame, AV_FRAME_DATA_DETECTION_BBOXES); - if (!sd) { // this frame has nothing detected - return 0; - } - - if (!sd->size) { - return 0; - } - - header = (const AVDetectionBBoxHeader *)sd->data; - if (!header->nb_bboxes) { - return 0; - } - - for (uint32_t i = 0; i < header->nb_bboxes; i++) { - bbox = av_get_detection_bbox(header, i); - if (bbox->x < 0 || bbox->w < 0 || bbox->x + bbox->w >= frame->width) { - return 0; - } - if (bbox->y < 0 || bbox->h < 0 || bbox->y + bbox->h >= frame->height) { - return 0; - } - - if (bbox->classify_count == AV_NUM_DETECTION_BBOX_CLASSIFY) { - return 0; - } - } - - return 1; -} - static int extract_lltask_from_task(DNNFunctionType func_type, TaskItem *task, Queue *lltask_queue, DNNExecBaseParams *exec_params) { switch (func_type) { @@ -1217,7 +1180,7 @@ static int extract_lltask_from_task(DNNFunctionType func_type, TaskItem *task, Q task->inference_todo = 0; task->inference_done = 0; - if (!contain_valid_detection_bbox(frame)) { + if (!ff_dnn_contain_valid_detection_bbox(frame)) { return 0; } -- 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".