[FFmpeg-cvslog] avfilter/vf_codecview: Fix undefined left shifts of negative numbers

Andreas Rheinhardt git at videolan.org
Sat Apr 3 01:18:49 EEST 2021


ffmpeg | branch: release/4.4 | Andreas Rheinhardt <andreas.rheinhardt at gmail.com> | Fri Mar 26 16:24:59 2021 +0100| [cc3b05e424b1e84fb747ac3c7034405eceb81eb4] | committer: Andreas Rheinhardt

avfilter/vf_codecview: Fix undefined left shifts of negative numbers

Affected the filter-codecview-mvs FATE-test.

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
(cherry picked from commit 3c151e79991181c8b7b9f9b888ac46eba91c5012)

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=cc3b05e424b1e84fb747ac3c7034405eceb81eb4
---

 libavfilter/vf_codecview.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavfilter/vf_codecview.c b/libavfilter/vf_codecview.c
index 197dc96136..28ac2df72f 100644
--- a/libavfilter/vf_codecview.c
+++ b/libavfilter/vf_codecview.c
@@ -141,7 +141,7 @@ static void draw_line(uint8_t *buf, int sx, int sy, int ex, int ey,
         }
         buf += sx + sy * stride;
         ex  -= sx;
-        f    = ((ey - sy) << 16) / ex;
+        f    = ((ey - sy) * (1 << 16)) / ex;
         for (x = 0; x <= ex; x++) {
             y  = (x * f) >> 16;
             fr = (x * f) & 0xFFFF;
@@ -156,7 +156,7 @@ static void draw_line(uint8_t *buf, int sx, int sy, int ex, int ey,
         buf += sx + sy * stride;
         ey  -= sy;
         if (ey)
-            f = ((ex - sx) << 16) / ey;
+            f = ((ex - sx) * (1 << 16)) / ey;
         else
             f = 0;
         for(y= 0; y <= ey; y++){
@@ -199,8 +199,8 @@ static void draw_arrow(uint8_t *buf, int sx, int sy, int ex,
         int length = sqrt((rx * rx + ry * ry) << 8);
 
         // FIXME subpixel accuracy
-        rx = ROUNDED_DIV(rx * 3 << 4, length);
-        ry = ROUNDED_DIV(ry * 3 << 4, length);
+        rx = ROUNDED_DIV(rx * (3 << 4), length);
+        ry = ROUNDED_DIV(ry * (3 << 4), length);
 
         if (tail) {
             rx = -rx;



More information about the ffmpeg-cvslog mailing list