summaryrefslogtreecommitdiffstats
path: root/libavfilter/vf_deshake.c
diff options
context:
space:
mode:
authorRay Simard <rhs.ffmpeg@sylvan-glade.com>2012-01-20 18:19:46 -0800
committerMichael Niedermayer <michaelni@gmx.at>2012-01-21 05:22:49 +0100
commit9ec39937f9c7f28a2279a19f71f290d8161eb52f (patch)
treea86e50ea151af2e2884057edc1f258330720fce8 /libavfilter/vf_deshake.c
parentbdd739e91cf30a016cba1461170a01b231e54785 (diff)
downloadffmpeg-streaming-9ec39937f9c7f28a2279a19f71f290d8161eb52f.zip
ffmpeg-streaming-9ec39937f9c7f28a2279a19f71f290d8161eb52f.tar.gz
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>
Diffstat (limited to 'libavfilter/vf_deshake.c')
-rw-r--r--libavfilter/vf_deshake.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/libavfilter/vf_deshake.c b/libavfilter/vf_deshake.c
index b752fbf..bb20551 100644
--- a/libavfilter/vf_deshake.c
+++ b/libavfilter/vf_deshake.c
@@ -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--) {
OpenPOWER on IntegriCloud