Mercurial > mplayer.hg
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]; |