avfilter/vf_codecview: Fix undefined left shifts of negative numbers
Affected the filter-codecview-mvs FATE-test. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com> (cherry picked from commit 3c151e79991181c8b7b9f9b888ac46eba91c5012)
This commit is contained in:
		
							parent
							
								
									195cce45cf
								
							
						
					
					
						commit
						cc3b05e424
					
				@ -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;
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user