mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
avfilter/vf_floodfill: better fix for crash
This commit is contained in:
parent
1cdc805228
commit
8732eb124e
@ -35,6 +35,7 @@ typedef struct FloodfillContext {
|
||||
|
||||
int x, y;
|
||||
int s[4];
|
||||
int S[4];
|
||||
int d[4];
|
||||
|
||||
int nb_planes;
|
||||
@ -293,26 +294,30 @@ static int filter_frame(AVFilterLink *link, AVFrame *frame)
|
||||
const int h = frame->height;
|
||||
int i, ret;
|
||||
|
||||
for (i = 0; i < s->nb_planes; i++) {
|
||||
if (s->s[i] != s->d[i])
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == s->nb_planes)
|
||||
goto end;
|
||||
|
||||
if (ret = av_frame_make_writable(frame))
|
||||
return ret;
|
||||
|
||||
if (is_inside(s->x, s->y, w, h)) {
|
||||
s->pick_pixel(frame, s->x, s->y, &s0, &s1, &s2, &s3);
|
||||
|
||||
s->S[0] = s0;
|
||||
s->S[1] = s1;
|
||||
s->S[2] = s2;
|
||||
s->S[3] = s3;
|
||||
for (i = 0; i < s->nb_planes; i++) {
|
||||
if (s->S[i] != s->d[i])
|
||||
break;
|
||||
}
|
||||
|
||||
if (i == s->nb_planes)
|
||||
goto end;
|
||||
|
||||
if (s->is_same(frame, s->x, s->y, s0, s1, s2, s3)) {
|
||||
s->points[s->front].x = s->x;
|
||||
s->points[s->front].y = s->y;
|
||||
s->front++;
|
||||
}
|
||||
|
||||
if (ret = av_frame_make_writable(frame))
|
||||
return ret;
|
||||
|
||||
while (s->front > s->back) {
|
||||
int x, y;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user