Mercurial > libavcodec.hg
comparison snow.c @ 2610:f794026f4551 libavcodec
fix overflow in mc_block() patch by (Yartrebo )yartrebo earthlink net
author | michael |
---|---|
date | Sun, 17 Apr 2005 09:27:53 +0000 |
parents | 0f74a379a890 |
children | 511e3afc43e1 |
comparison
equal
deleted
inserted
replaced
2609:0f74a379a890 | 2610:f794026f4551 |
---|---|
2357 // int aL= (-7*a0 + 105*a1 + 35*a2 - 5*a3)>>3; | 2357 // int aL= (-7*a0 + 105*a1 + 35*a2 - 5*a3)>>3; |
2358 // int aR= (-7*a3 + 105*a2 + 35*a1 - 5*a0)>>3; | 2358 // int aR= (-7*a3 + 105*a2 + 35*a1 - 5*a0)>>3; |
2359 | 2359 |
2360 // if(b_w==16) am= 8*(a1+a2); | 2360 // if(b_w==16) am= 8*(a1+a2); |
2361 | 2361 |
2362 if(dx<8) tmp[x]= (32*a2*( 8-dx) + am* dx + 128)>>8; | 2362 if(dx<8) am = (32*a2*( 8-dx) + am* dx + 128)>>8; |
2363 else tmp[x]= ( am*(16-dx) + 32*a3*(dx-8) + 128)>>8; | 2363 else am = ( am*(16-dx) + 32*a3*(dx-8) + 128)>>8; |
2364 | |
2365 /* FIXME Try increasing tmp buffer to 16 bits and not clipping here. Should give marginally better results. - Robert*/ | |
2366 if(am&(~255)) am= ~(am>>31); | |
2367 | |
2368 tmp[x] = am; | |
2364 | 2369 |
2365 /* if (dx< 4) tmp[x + y*stride]= (16*a1*( 4-dx) + aL* dx + 32)>>6; | 2370 /* if (dx< 4) tmp[x + y*stride]= (16*a1*( 4-dx) + aL* dx + 32)>>6; |
2366 else if(dx< 8) tmp[x + y*stride]= ( aL*( 8-dx) + am*(dx- 4) + 32)>>6; | 2371 else if(dx< 8) tmp[x + y*stride]= ( aL*( 8-dx) + am*(dx- 4) + 32)>>6; |
2367 else if(dx<12) tmp[x + y*stride]= ( am*(12-dx) + aR*(dx- 8) + 32)>>6; | 2372 else if(dx<12) tmp[x + y*stride]= ( am*(12-dx) + aR*(dx- 8) + 32)>>6; |
2368 else tmp[x + y*stride]= ( aR*(16-dx) + 16*a2*(dx-12) + 32)>>6;*/ | 2373 else tmp[x + y*stride]= ( aR*(16-dx) + 16*a2*(dx-12) + 32)>>6;*/ |
2385 /* int aL= (-7*a0 + 105*a1 + 35*a2 - 5*a3)>>3; | 2390 /* int aL= (-7*a0 + 105*a1 + 35*a2 - 5*a3)>>3; |
2386 int aR= (-7*a3 + 105*a2 + 35*a1 - 5*a0)>>3;*/ | 2391 int aR= (-7*a3 + 105*a2 + 35*a1 - 5*a0)>>3;*/ |
2387 | 2392 |
2388 // if(b_w==16) am= 8*(a1+a2); | 2393 // if(b_w==16) am= 8*(a1+a2); |
2389 | 2394 |
2390 if(dy<8) dst[x]= (32*a2*( 8-dy) + am* dy + 128)>>8; | 2395 if(dy<8) am = (32*a2*( 8-dy) + am* dy + 128)>>8; |
2391 else dst[x]= ( am*(16-dy) + 32*a3*(dy-8) + 128)>>8; | 2396 else am = ( am*(16-dy) + 32*a3*(dy-8) + 128)>>8; |
2392 | 2397 |
2398 if(am&(~255)) am= ~(am>>31); | |
2399 | |
2400 dst[x] = am; | |
2393 /* if (dy< 4) tmp[x + y*stride]= (16*a1*( 4-dy) + aL* dy + 32)>>6; | 2401 /* if (dy< 4) tmp[x + y*stride]= (16*a1*( 4-dy) + aL* dy + 32)>>6; |
2394 else if(dy< 8) tmp[x + y*stride]= ( aL*( 8-dy) + am*(dy- 4) + 32)>>6; | 2402 else if(dy< 8) tmp[x + y*stride]= ( aL*( 8-dy) + am*(dy- 4) + 32)>>6; |
2395 else if(dy<12) tmp[x + y*stride]= ( am*(12-dy) + aR*(dy- 8) + 32)>>6; | 2403 else if(dy<12) tmp[x + y*stride]= ( am*(12-dy) + aR*(dy- 8) + 32)>>6; |
2396 else tmp[x + y*stride]= ( aR*(16-dy) + 16*a2*(dy-12) + 32)>>6;*/ | 2404 else tmp[x + y*stride]= ( aR*(16-dy) + 16*a2*(dy-12) + 32)>>6;*/ |
2397 } | 2405 } |