mirror of
https://git.ffmpeg.org/ffmpeg.git
synced 2026-10-28 10:04:37 +08:00
avfilter/vf_cropdetect: scan the edge map inside the motion bounding box
The fate-filter-metadata-cropdetect1/2 references change as the scans now stop at the edge free lines next to the box. Fixes: s7zfKOCXo4MJ Fixes: wrong crop area with mode=mvedges Wrong crop area with mode=mvedges Replicated through UnModified FFmpeg with a plain output diff Found during triage of the security report VoiiaDYyhdfz Found again by the review of https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/24623
This commit is contained in:
1 parent
eb47d7bb6c
commit
a28c9cdc02
3 files changed
+18
-16
No files matched your search
@@ -337,9 +337,9 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
|
||||
scan_w = s->x2 - s->x1;
|
||||
scan_h = s->y2 - s->y1;
|
||||
|
||||
#define FIND_EDGE(DST, FROM, NOEND, INC, STEP0, STEP1, LEN) \
|
||||
#define FIND_EDGE(DST, FROM, NOEND, INC, BASE, STEP0, STEP1, LEN) \
|
||||
for (last_y = y = FROM; NOEND; y = y INC) { \
|
||||
if (checkline_edge(ctx, tmpbuf + STEP0 * y, STEP1, LEN)) { \
|
||||
if (checkline_edge(ctx, BASE + STEP0 * y, STEP1, LEN)) { \
|
||||
if (last_y INC == y) { \
|
||||
DST = y; \
|
||||
break; \
|
||||
@@ -351,10 +351,12 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *frame)
|
||||
DST = y -(INC); \
|
||||
}
|
||||
|
||||
FIND_EDGE(s->y1, s->y1, y >= 0, -1, inw, 1, scan_w);
|
||||
FIND_EDGE(s->y2, s->y2, y < inh, +1, inw, 1, scan_w);
|
||||
FIND_EDGE(s->x1, s->x1, y >= 0, -1, 1, inw, scan_h);
|
||||
FIND_EDGE(s->x2, s->x2, y < inw, +1, 1, inw, scan_h);
|
||||
const uint8_t *rows = tmpbuf + s->x1;
|
||||
const uint8_t *cols = tmpbuf + s->y1 * inw;
|
||||
FIND_EDGE(s->y1, s->y1, y >= 0, -1, rows, inw, 1, scan_w);
|
||||
FIND_EDGE(s->y2, s->y2, y < inh, +1, rows, inw, 1, scan_w);
|
||||
FIND_EDGE(s->x1, s->x1, y >= 0, -1, cols, 1, inw, scan_h);
|
||||
FIND_EDGE(s->x2, s->x2, y < inw, +1, cols, 1, inw, scan_h);
|
||||
|
||||
// queue bboxes
|
||||
bboff = (s->frame_nb - 1) % s->window_size;
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
pts=0
|
||||
pts=1001
|
||||
pts=2002|tag:lavfi.cropdetect.y=314|tag:lavfi.cropdetect.x1=20|tag:lavfi.cropdetect.x2=851|tag:lavfi.cropdetect.y1=311|tag:lavfi.cropdetect.y2=601|tag:lavfi.cropdetect.w=832|tag:lavfi.cropdetect.h=288|tag:lavfi.cropdetect.x=20|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=3003|tag:lavfi.cropdetect.y=316|tag:lavfi.cropdetect.x1=20|tag:lavfi.cropdetect.x2=885|tag:lavfi.cropdetect.y1=311|tag:lavfi.cropdetect.y2=621|tag:lavfi.cropdetect.w=864|tag:lavfi.cropdetect.h=304|tag:lavfi.cropdetect.x=22|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=2002|tag:lavfi.cropdetect.y=314|tag:lavfi.cropdetect.x1=0|tag:lavfi.cropdetect.x2=661|tag:lavfi.cropdetect.y1=311|tag:lavfi.cropdetect.y2=601|tag:lavfi.cropdetect.w=656|tag:lavfi.cropdetect.h=288|tag:lavfi.cropdetect.x=4|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=3003|tag:lavfi.cropdetect.y=316|tag:lavfi.cropdetect.x1=0|tag:lavfi.cropdetect.x2=885|tag:lavfi.cropdetect.y1=311|tag:lavfi.cropdetect.y2=621|tag:lavfi.cropdetect.w=880|tag:lavfi.cropdetect.h=304|tag:lavfi.cropdetect.x=4|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=4004|tag:lavfi.cropdetect.y=122|tag:lavfi.cropdetect.x1=0|tag:lavfi.cropdetect.x2=885|tag:lavfi.cropdetect.y1=115|tag:lavfi.cropdetect.y2=621|tag:lavfi.cropdetect.w=880|tag:lavfi.cropdetect.h=496|tag:lavfi.cropdetect.x=4|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=5005|tag:lavfi.cropdetect.y=316|tag:lavfi.cropdetect.x1=20|tag:lavfi.cropdetect.x2=885|tag:lavfi.cropdetect.y1=311|tag:lavfi.cropdetect.y2=621|tag:lavfi.cropdetect.w=864|tag:lavfi.cropdetect.h=304|tag:lavfi.cropdetect.x=22|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=5005|tag:lavfi.cropdetect.y=316|tag:lavfi.cropdetect.x1=0|tag:lavfi.cropdetect.x2=885|tag:lavfi.cropdetect.y1=311|tag:lavfi.cropdetect.y2=621|tag:lavfi.cropdetect.w=880|tag:lavfi.cropdetect.h=304|tag:lavfi.cropdetect.x=4|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=6006|tag:lavfi.cropdetect.y=122|tag:lavfi.cropdetect.x1=0|tag:lavfi.cropdetect.x2=885|tag:lavfi.cropdetect.y1=115|tag:lavfi.cropdetect.y2=621|tag:lavfi.cropdetect.w=880|tag:lavfi.cropdetect.h=496|tag:lavfi.cropdetect.x=4|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=7007|tag:lavfi.cropdetect.y=122|tag:lavfi.cropdetect.x1=0|tag:lavfi.cropdetect.x2=885|tag:lavfi.cropdetect.y1=115|tag:lavfi.cropdetect.y2=621|tag:lavfi.cropdetect.w=880|tag:lavfi.cropdetect.h=496|tag:lavfi.cropdetect.x=4|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=8008|tag:lavfi.cropdetect.y=122|tag:lavfi.cropdetect.x1=0|tag:lavfi.cropdetect.x2=885|tag:lavfi.cropdetect.y1=115|tag:lavfi.cropdetect.y2=621|tag:lavfi.cropdetect.w=880|tag:lavfi.cropdetect.h=496|tag:lavfi.cropdetect.x=4|tag:lavfi.cropdetect.limit=0.094118
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
pts=0
|
||||
pts=512
|
||||
pts=1024|tag:lavfi.cropdetect.y=22|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=1221|tag:lavfi.cropdetect.y1=15|tag:lavfi.cropdetect.y2=1116|tag:lavfi.cropdetect.w=1200|tag:lavfi.cropdetect.h=1088|tag:lavfi.cropdetect.x=22|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=1024|tag:lavfi.cropdetect.y=22|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=1215|tag:lavfi.cropdetect.y1=15|tag:lavfi.cropdetect.y2=1116|tag:lavfi.cropdetect.w=1184|tag:lavfi.cropdetect.h=1088|tag:lavfi.cropdetect.x=28|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=1536|tag:lavfi.cropdetect.y=22|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=1257|tag:lavfi.cropdetect.y1=15|tag:lavfi.cropdetect.y2=1116|tag:lavfi.cropdetect.w=1232|tag:lavfi.cropdetect.h=1088|tag:lavfi.cropdetect.x=24|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=2048|tag:lavfi.cropdetect.y=22|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=1221|tag:lavfi.cropdetect.y1=15|tag:lavfi.cropdetect.y2=1116|tag:lavfi.cropdetect.w=1200|tag:lavfi.cropdetect.h=1088|tag:lavfi.cropdetect.x=22|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=2560|tag:lavfi.cropdetect.y=22|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=1221|tag:lavfi.cropdetect.y1=15|tag:lavfi.cropdetect.y2=1116|tag:lavfi.cropdetect.w=1200|tag:lavfi.cropdetect.h=1088|tag:lavfi.cropdetect.x=22|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=3072|tag:lavfi.cropdetect.y=22|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=817|tag:lavfi.cropdetect.y1=15|tag:lavfi.cropdetect.y2=937|tag:lavfi.cropdetect.w=784|tag:lavfi.cropdetect.h=912|tag:lavfi.cropdetect.x=28|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=3584|tag:lavfi.cropdetect.y=40|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=817|tag:lavfi.cropdetect.y1=38|tag:lavfi.cropdetect.y2=937|tag:lavfi.cropdetect.w=784|tag:lavfi.cropdetect.h=896|tag:lavfi.cropdetect.x=28|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=4096|tag:lavfi.cropdetect.y=22|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=817|tag:lavfi.cropdetect.y1=15|tag:lavfi.cropdetect.y2=937|tag:lavfi.cropdetect.w=784|tag:lavfi.cropdetect.h=912|tag:lavfi.cropdetect.x=28|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=4608|tag:lavfi.cropdetect.y=22|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=1221|tag:lavfi.cropdetect.y1=15|tag:lavfi.cropdetect.y2=1116|tag:lavfi.cropdetect.w=1200|tag:lavfi.cropdetect.h=1088|tag:lavfi.cropdetect.x=22|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=2048|tag:lavfi.cropdetect.y=22|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=1215|tag:lavfi.cropdetect.y1=15|tag:lavfi.cropdetect.y2=1116|tag:lavfi.cropdetect.w=1184|tag:lavfi.cropdetect.h=1088|tag:lavfi.cropdetect.x=28|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=2560|tag:lavfi.cropdetect.y=42|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=1215|tag:lavfi.cropdetect.y1=37|tag:lavfi.cropdetect.y2=1116|tag:lavfi.cropdetect.w=1184|tag:lavfi.cropdetect.h=1072|tag:lavfi.cropdetect.x=28|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=3072|tag:lavfi.cropdetect.y=40|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=817|tag:lavfi.cropdetect.y1=37|tag:lavfi.cropdetect.y2=937|tag:lavfi.cropdetect.w=784|tag:lavfi.cropdetect.h=896|tag:lavfi.cropdetect.x=28|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=3584|tag:lavfi.cropdetect.y=42|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=817|tag:lavfi.cropdetect.y1=40|tag:lavfi.cropdetect.y2=937|tag:lavfi.cropdetect.w=784|tag:lavfi.cropdetect.h=896|tag:lavfi.cropdetect.x=28|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=4096|tag:lavfi.cropdetect.y=40|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=817|tag:lavfi.cropdetect.y1=37|tag:lavfi.cropdetect.y2=937|tag:lavfi.cropdetect.w=784|tag:lavfi.cropdetect.h=896|tag:lavfi.cropdetect.x=28|tag:lavfi.cropdetect.limit=0.094118
|
||||
pts=4608|tag:lavfi.cropdetect.y=42|tag:lavfi.cropdetect.x1=21|tag:lavfi.cropdetect.x2=1215|tag:lavfi.cropdetect.y1=37|tag:lavfi.cropdetect.y2=1116|tag:lavfi.cropdetect.w=1184|tag:lavfi.cropdetect.h=1072|tag:lavfi.cropdetect.x=28|tag:lavfi.cropdetect.limit=0.094118
|
||||
Reference in new issue
Block a user