mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-08 13:22:53 +02:00
deshake: variable used uninitialized
Sometimes the scan finds nothing that qualifies for addition to the array and pos is zero after the loops. The code forces pos to 1 and the array is then processed as if it had one valid element in it, producing some amusing but not very useful results. I don't see the rationale for this. If pos is zero coming out of the loops, the only appropriate thing to do is set t->angle to zero. The attached patch does that. It's worked properly in several tests so far. Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
bdd739e91c
commit
9ec39937f9
@ -292,14 +292,15 @@ static void find_motion(DeshakeContext *deshake, uint8_t *src1, uint8_t *src2,
|
||||
}
|
||||
}
|
||||
|
||||
pos = FFMAX(1, pos);
|
||||
|
||||
center_x /= pos;
|
||||
center_y /= pos;
|
||||
|
||||
t->angle = clean_mean(angles, pos);
|
||||
if (t->angle < 0.001)
|
||||
t->angle = 0;
|
||||
if (pos) {
|
||||
center_x /= pos;
|
||||
center_y /= pos;
|
||||
t->angle = clean_mean(angles, pos);
|
||||
if (t->angle < 0.001)
|
||||
t->angle = 0;
|
||||
} else {
|
||||
t->angle = 0;
|
||||
}
|
||||
|
||||
// Find the most common motion vector in the frame and use it as the gmv
|
||||
for (y = deshake->ry * 2; y >= 0; y--) {
|
||||
|
Loading…
Reference in New Issue
Block a user