comparison libswscale/yuv2rgb_template.c @ 22229:44c3544fd926

negative stride and h_size-=8 fix
author michael
date Sat, 17 Feb 2007 13:28:44 +0000
parents 8aac0a59f9c7
children 9528d1ebe68f
comparison
equal deleted inserted replaced
22228:55aeb86425cb 22229:44c3544fd926
131 srcStride[1] *= 2; 131 srcStride[1] *= 2;
132 srcStride[2] *= 2; 132 srcStride[2] *= 2;
133 } 133 }
134 134
135 h_size= (c->dstW+7)&~7; 135 h_size= (c->dstW+7)&~7;
136 if(h_size*2 > dstStride[0]) h_size-=8; 136 if(h_size*2 > FFABS(dstStride[0])) h_size-=8;
137 137
138 __asm__ __volatile__ ("pxor %mm4, %mm4;" /* zero mm4 */ ); 138 __asm__ __volatile__ ("pxor %mm4, %mm4;" /* zero mm4 */ );
139 //printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&b5Dither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0], 139 //printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&b5Dither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0],
140 //srcStride[0],srcStride[1],srcStride[2],dstStride[0]); 140 //srcStride[0],srcStride[1],srcStride[2],dstStride[0]);
141 for (y= 0; y<srcSliceH; y++ ) { 141 for (y= 0; y<srcSliceH; y++ ) {
226 srcStride[1] *= 2; 226 srcStride[1] *= 2;
227 srcStride[2] *= 2; 227 srcStride[2] *= 2;
228 } 228 }
229 229
230 h_size= (c->dstW+7)&~7; 230 h_size= (c->dstW+7)&~7;
231 if(h_size*2 > dstStride[0]) h_size-=8; 231 if(h_size*2 > FFABS(dstStride[0])) h_size-=8;
232 232
233 __asm__ __volatile__ ("pxor %mm4, %mm4;" /* zero mm4 */ ); 233 __asm__ __volatile__ ("pxor %mm4, %mm4;" /* zero mm4 */ );
234 //printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&b5Dither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0], 234 //printf("%X %X %X %X %X %X %X %X %X %X\n", (int)&c->redDither, (int)&b5Dither, (int)src[0], (int)src[1], (int)src[2], (int)dst[0],
235 //srcStride[0],srcStride[1],srcStride[2],dstStride[0]); 235 //srcStride[0],srcStride[1],srcStride[2],dstStride[0]);
236 for (y= 0; y<srcSliceH; y++ ) { 236 for (y= 0; y<srcSliceH; y++ ) {
315 srcStride[1] *= 2; 315 srcStride[1] *= 2;
316 srcStride[2] *= 2; 316 srcStride[2] *= 2;
317 } 317 }
318 318
319 h_size= (c->dstW+7)&~7; 319 h_size= (c->dstW+7)&~7;
320 if(h_size*3 > dstStride[0]) h_size-=8; 320 if(h_size*3 > FFABS(dstStride[0])) h_size-=8;
321 321
322 __asm__ __volatile__ ("pxor %mm4, %mm4;" /* zero mm4 */ ); 322 __asm__ __volatile__ ("pxor %mm4, %mm4;" /* zero mm4 */ );
323 323
324 for (y= 0; y<srcSliceH; y++ ) { 324 for (y= 0; y<srcSliceH; y++ ) {
325 uint8_t *_image = dst[0] + (y+srcSliceY)*dstStride[0]; 325 uint8_t *_image = dst[0] + (y+srcSliceY)*dstStride[0];
461 srcStride[1] *= 2; 461 srcStride[1] *= 2;
462 srcStride[2] *= 2; 462 srcStride[2] *= 2;
463 } 463 }
464 464
465 h_size= (c->dstW+7)&~7; 465 h_size= (c->dstW+7)&~7;
466 if(h_size*4 > dstStride[0]) h_size-=8; 466 if(h_size*4 > FFABS(dstStride[0])) h_size-=8;
467 467
468 __asm__ __volatile__ ("pxor %mm4, %mm4;" /* zero mm4 */ ); 468 __asm__ __volatile__ ("pxor %mm4, %mm4;" /* zero mm4 */ );
469 469
470 for (y= 0; y<srcSliceH; y++ ) { 470 for (y= 0; y<srcSliceH; y++ ) {
471 uint8_t *_image = dst[0] + (y+srcSliceY)*dstStride[0]; 471 uint8_t *_image = dst[0] + (y+srcSliceY)*dstStride[0];