PR #25724 opened by Kilian (lusoris)
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/25724
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/25724.patch

Adds FATE coverage for `find_rect`, which had none. Seven tests cover a found 
object, inverted `xmin`/`xmax` and `ymin`/`ymax` search windows, and an object 
larger than the frame, each with `discard=0` and `discard=1`. The object image 
is generated at test time, so no sample is added.

The inverted-window tests read uninitialised memory under MemorySanitizer 
without the window fix from 25612 and pass with it, so they also guard that fix.



>From 970a5f96d92d37accb2bab380f495b081d106dfb Mon Sep 17 00:00:00 2001
From: lusoris <[email protected]>
Date: Tue, 3 Nov 2026 16:22:50 +0100
Subject: [PATCH] fate/filter-video: add find_rect tests

Cover a found object, inverted xmin/xmax and ymin/ymax windows and an
object larger than the frame, each with discard=0 and discard=1. The
object image is generated at test time.

Signed-off-by: lusoris <[email protected]>
---
 tests/fate/filter-video.mak                   | 31 +++++++++++++++++++
 tests/ref/fate/filter-find_rect-found         |  2 ++
 .../fate/filter-find_rect-largeobj-discard    |  0
 .../fate/filter-find_rect-largeobj-nodiscard  |  2 ++
 tests/ref/fate/filter-find_rect-xmin-discard  |  0
 .../ref/fate/filter-find_rect-xmin-nodiscard  |  2 ++
 tests/ref/fate/filter-find_rect-ymin-discard  |  0
 .../ref/fate/filter-find_rect-ymin-nodiscard  |  2 ++
 8 files changed, 39 insertions(+)
 create mode 100644 tests/ref/fate/filter-find_rect-found
 create mode 100644 tests/ref/fate/filter-find_rect-largeobj-discard
 create mode 100644 tests/ref/fate/filter-find_rect-largeobj-nodiscard
 create mode 100644 tests/ref/fate/filter-find_rect-xmin-discard
 create mode 100644 tests/ref/fate/filter-find_rect-xmin-nodiscard
 create mode 100644 tests/ref/fate/filter-find_rect-ymin-discard
 create mode 100644 tests/ref/fate/filter-find_rect-ymin-nodiscard

diff --git a/tests/fate/filter-video.mak b/tests/fate/filter-video.mak
index 95254ff3fcf..0b4da3dd44b 100644
--- a/tests/fate/filter-video.mak
+++ b/tests/fate/filter-video.mak
@@ -930,6 +930,37 @@ EBUR128_HEIGHT_DEPS = FFPROBE LAVFI_INDEV AEVALSRC_FILTER 
ARESAMPLE_FILTER EBUR1
 FATE_FILTER_FFPROBE-$(call ALLYES, $(EBUR128_HEIGHT_DEPS)) += 
fate-filter-metadata-ebur128-height
 fate-filter-metadata-ebur128-height: CMD = run $(FILTER_METADATA_COMMAND) 
"aevalsrc=0.12589*sin(2*PI*997*t):channel_layout=TBL:sample_rate=48000:duration=0.4,ebur128=metadata=1"
 
+tests/data/fate/find_rect_obj.pgm: TAG = GEN
+tests/data/fate/find_rect_obj.pgm: ffmpeg$(PROGSSUF)$(EXESUF) | tests/data/fate
+       $(M)$(TARGET_EXEC) $(TARGET_PATH)/$< -nostdin -f lavfi \
+       -i "color=black:s=4x4:d=1,pad=8:8:0:0:white,format=gray" \
+       -frames:v 1 -update 1 -y $(TARGET_PATH)/$@ 2>/dev/null
+
+FIND_RECT_DEPS = FFMPEG FFPROBE LAVFI_INDEV COLOR_FILTER PAD_FILTER 
FORMAT_FILTER \
+                 FIND_RECT_FILTER IMAGE2PIPE_DEMUXER PGM_DECODER PGM_ENCODER \
+                 IMAGE2_MUXER FILE_PROTOCOL PIPE_PROTOCOL 
WRAPPED_AVFRAME_DECODER
+
+FATE_FIND_RECT += fate-filter-find_rect-found \
+                  fate-filter-find_rect-xmin-nodiscard \
+                  fate-filter-find_rect-xmin-discard \
+                  fate-filter-find_rect-ymin-nodiscard \
+                  fate-filter-find_rect-ymin-discard \
+                  fate-filter-find_rect-largeobj-nodiscard \
+                  fate-filter-find_rect-largeobj-discard
+
+$(FATE_FIND_RECT): tests/data/fate/find_rect_obj.pgm
+
+fate-filter-find_rect-found: CMD = run $(FILTER_METADATA_COMMAND) 
"color=black:s=4x4:d=2:r=1,pad=8:8:0:0:white,pad=64:64:16:16:black,format=yuv420p,find_rect=object='$(TARGET_PATH)/tests/data/fate/find_rect_obj.pgm'"
+fate-filter-find_rect-xmin-nodiscard: CMD = run $(FILTER_METADATA_COMMAND) 
"color=black:s=4x4:d=2:r=1,pad=8:8:0:0:white,pad=64:64:16:16:black,format=yuv420p,find_rect=object='$(TARGET_PATH)/tests/data/fate/find_rect_obj.pgm':xmin=30:xmax=10:discard=0"
+fate-filter-find_rect-xmin-discard: CMD = run $(FILTER_METADATA_COMMAND) 
"color=black:s=4x4:d=2:r=1,pad=8:8:0:0:white,pad=64:64:16:16:black,format=yuv420p,find_rect=object='$(TARGET_PATH)/tests/data/fate/find_rect_obj.pgm':xmin=30:xmax=10:discard=1"
+fate-filter-find_rect-ymin-nodiscard: CMD = run $(FILTER_METADATA_COMMAND) 
"color=black:s=4x4:d=2:r=1,pad=8:8:0:0:white,pad=64:64:16:16:black,format=yuv420p,find_rect=object='$(TARGET_PATH)/tests/data/fate/find_rect_obj.pgm':ymin=30:ymax=10:discard=0"
+fate-filter-find_rect-ymin-discard: CMD = run $(FILTER_METADATA_COMMAND) 
"color=black:s=4x4:d=2:r=1,pad=8:8:0:0:white,pad=64:64:16:16:black,format=yuv420p,find_rect=object='$(TARGET_PATH)/tests/data/fate/find_rect_obj.pgm':ymin=30:ymax=10:discard=1"
+fate-filter-find_rect-largeobj-nodiscard: CMD = run $(FILTER_METADATA_COMMAND) 
"color=black:s=4x4:d=2:r=1,format=yuv420p,find_rect=object='$(TARGET_PATH)/tests/data/fate/find_rect_obj.pgm':discard=0"
+fate-filter-find_rect-largeobj-discard: CMD = run $(FILTER_METADATA_COMMAND) 
"color=black:s=4x4:d=2:r=1,format=yuv420p,find_rect=object='$(TARGET_PATH)/tests/data/fate/find_rect_obj.pgm':discard=1"
+
+FATE_FILTER_FFPROBE-$(call ALLYES, $(FIND_RECT_DEPS)) += $(FATE_FIND_RECT)
+fate-find-rect: $(FATE_FIND_RECT)
+
 READVITC_METADATA_DEPS = LAVFI_INDEV MOVIE_FILTER \
                          AVI_DEMUXER FFVHUFF_DECODER READVITC_FILTER
 FATE_METADATA_FILTER-$(call ALLYES, $(READVITC_METADATA_DEPS)) += 
fate-filter-metadata-readvitc-def
diff --git a/tests/ref/fate/filter-find_rect-found 
b/tests/ref/fate/filter-find_rect-found
new file mode 100644
index 00000000000..6af78b61b1a
--- /dev/null
+++ b/tests/ref/fate/filter-find_rect-found
@@ -0,0 +1,2 @@
+pts=0|tag:lavfi.rect.y=16|tag:lavfi.rect.w=8|tag:lavfi.rect.h=8|tag:lavfi.rect.x=16|tag:lavfi.rect.score=0.000000
+pts=1|tag:lavfi.rect.y=16|tag:lavfi.rect.w=8|tag:lavfi.rect.h=8|tag:lavfi.rect.x=16|tag:lavfi.rect.score=0.000000
diff --git a/tests/ref/fate/filter-find_rect-largeobj-discard 
b/tests/ref/fate/filter-find_rect-largeobj-discard
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/tests/ref/fate/filter-find_rect-largeobj-nodiscard 
b/tests/ref/fate/filter-find_rect-largeobj-nodiscard
new file mode 100644
index 00000000000..e0b110c4b82
--- /dev/null
+++ b/tests/ref/fate/filter-find_rect-largeobj-nodiscard
@@ -0,0 +1,2 @@
+pts=0
+pts=1
diff --git a/tests/ref/fate/filter-find_rect-xmin-discard 
b/tests/ref/fate/filter-find_rect-xmin-discard
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/tests/ref/fate/filter-find_rect-xmin-nodiscard 
b/tests/ref/fate/filter-find_rect-xmin-nodiscard
new file mode 100644
index 00000000000..e0b110c4b82
--- /dev/null
+++ b/tests/ref/fate/filter-find_rect-xmin-nodiscard
@@ -0,0 +1,2 @@
+pts=0
+pts=1
diff --git a/tests/ref/fate/filter-find_rect-ymin-discard 
b/tests/ref/fate/filter-find_rect-ymin-discard
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/tests/ref/fate/filter-find_rect-ymin-nodiscard 
b/tests/ref/fate/filter-find_rect-ymin-nodiscard
new file mode 100644
index 00000000000..e0b110c4b82
--- /dev/null
+++ b/tests/ref/fate/filter-find_rect-ymin-nodiscard
@@ -0,0 +1,2 @@
+pts=0
+pts=1
-- 
2.54.0

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to