Mercurial > mplayer.hg
comparison libswscale/x86/yuv2rgb_template.c @ 30264:1032ff2e83f1
Const correctness for src pointer. Remove all constness related warnings in
libswscale.
author | zuxy |
---|---|
date | Fri, 15 Jan 2010 08:51:51 +0000 |
parents | 04639dec4eb8 |
children |
comparison
equal
deleted
inserted
replaced
30263:98cc153d1726 | 30264:1032ff2e83f1 |
---|---|
132 if(h_size*depth > FFABS(dstStride[0])) h_size-=8; \ | 132 if(h_size*depth > FFABS(dstStride[0])) h_size-=8; \ |
133 \ | 133 \ |
134 __asm__ volatile ("pxor %mm4, %mm4;" /* zero mm4 */ ); \ | 134 __asm__ volatile ("pxor %mm4, %mm4;" /* zero mm4 */ ); \ |
135 for (y= 0; y<srcSliceH; y++ ) { \ | 135 for (y= 0; y<srcSliceH; y++ ) { \ |
136 uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0]; \ | 136 uint8_t *image = dst[0] + (y+srcSliceY)*dstStride[0]; \ |
137 uint8_t *py = src[0] + y*srcStride[0]; \ | 137 const uint8_t *py = src[0] + y*srcStride[0]; \ |
138 uint8_t *pu = src[1] + (y>>1)*srcStride[1]; \ | 138 const uint8_t *pu = src[1] + (y>>1)*srcStride[1]; \ |
139 uint8_t *pv = src[2] + (y>>1)*srcStride[2]; \ | 139 const uint8_t *pv = src[2] + (y>>1)*srcStride[2]; \ |
140 x86_reg index= -h_size/2; \ | 140 x86_reg index= -h_size/2; \ |
141 | 141 |
142 #define YUV2RGB_INIT \ | 142 #define YUV2RGB_INIT \ |
143 /* This MMX assembly code deals with a SINGLE scan line at a time, \ | 143 /* This MMX assembly code deals with a SINGLE scan line at a time, \ |
144 * it converts 8 pixels in each iteration. */ \ | 144 * it converts 8 pixels in each iteration. */ \ |
177 ); \ | 177 ); \ |
178 } \ | 178 } \ |
179 __asm__ volatile (SFENCE"\n\t"EMMS); \ | 179 __asm__ volatile (SFENCE"\n\t"EMMS); \ |
180 return srcSliceH; \ | 180 return srcSliceH; \ |
181 | 181 |
182 static inline int RENAME(yuv420_rgb16)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 182 static inline int RENAME(yuv420_rgb16)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, |
183 int srcSliceH, uint8_t* dst[], int dstStride[]) | 183 int srcSliceH, uint8_t* dst[], int dstStride[]) |
184 { | 184 { |
185 int y, h_size; | 185 int y, h_size; |
186 | 186 |
187 YUV422_UNSHIFT | 187 YUV422_UNSHIFT |
234 | 234 |
235 YUV2RGB_ENDLOOP(2) | 235 YUV2RGB_ENDLOOP(2) |
236 YUV2RGB_OPERANDS | 236 YUV2RGB_OPERANDS |
237 } | 237 } |
238 | 238 |
239 static inline int RENAME(yuv420_rgb15)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 239 static inline int RENAME(yuv420_rgb15)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, |
240 int srcSliceH, uint8_t* dst[], int dstStride[]) | 240 int srcSliceH, uint8_t* dst[], int dstStride[]) |
241 { | 241 { |
242 int y, h_size; | 242 int y, h_size; |
243 | 243 |
244 YUV422_UNSHIFT | 244 YUV422_UNSHIFT |
394 "movd 4 (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */\ | 394 "movd 4 (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */\ |
395 "movd 4 (%2, %0), %%mm0;" /* Load 4 Cb 00 00 00 00 u3 u2 u1 u0 */\ | 395 "movd 4 (%2, %0), %%mm0;" /* Load 4 Cb 00 00 00 00 u3 u2 u1 u0 */\ |
396 "pxor %%mm4, %%mm4 \n\t" | 396 "pxor %%mm4, %%mm4 \n\t" |
397 #endif | 397 #endif |
398 | 398 |
399 static inline int RENAME(yuv420_rgb24)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 399 static inline int RENAME(yuv420_rgb24)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, |
400 int srcSliceH, uint8_t* dst[], int dstStride[]) | 400 int srcSliceH, uint8_t* dst[], int dstStride[]) |
401 { | 401 { |
402 int y, h_size; | 402 int y, h_size; |
403 | 403 |
404 YUV422_UNSHIFT | 404 YUV422_UNSHIFT |
411 | 411 |
412 YUV2RGB_ENDLOOP(3) | 412 YUV2RGB_ENDLOOP(3) |
413 YUV2RGB_OPERANDS | 413 YUV2RGB_OPERANDS |
414 } | 414 } |
415 | 415 |
416 static inline int RENAME(yuv420_bgr24)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 416 static inline int RENAME(yuv420_bgr24)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, |
417 int srcSliceH, uint8_t* dst[], int dstStride[]) | 417 int srcSliceH, uint8_t* dst[], int dstStride[]) |
418 { | 418 { |
419 int y, h_size; | 419 int y, h_size; |
420 | 420 |
421 YUV422_UNSHIFT | 421 YUV422_UNSHIFT |
489 "movd 4 (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */ \ | 489 "movd 4 (%3, %0), %%mm1;" /* Load 4 Cr 00 00 00 00 v3 v2 v1 v0 */ \ |
490 \ | 490 \ |
491 "pxor %%mm4, %%mm4;" /* zero mm4 */ \ | 491 "pxor %%mm4, %%mm4;" /* zero mm4 */ \ |
492 "movq 8 (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */ \ | 492 "movq 8 (%5, %0, 2), %%mm6;" /* Load 8 Y Y7 Y6 Y5 Y4 Y3 Y2 Y1 Y0 */ \ |
493 | 493 |
494 static inline int RENAME(yuv420_rgb32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 494 static inline int RENAME(yuv420_rgb32)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, |
495 int srcSliceH, uint8_t* dst[], int dstStride[]) | 495 int srcSliceH, uint8_t* dst[], int dstStride[]) |
496 { | 496 { |
497 int y, h_size; | 497 int y, h_size; |
498 | 498 |
499 YUV422_UNSHIFT | 499 YUV422_UNSHIFT |
506 | 506 |
507 YUV2RGB_ENDLOOP(4) | 507 YUV2RGB_ENDLOOP(4) |
508 YUV2RGB_OPERANDS | 508 YUV2RGB_OPERANDS |
509 } | 509 } |
510 | 510 |
511 static inline int RENAME(yuva420_rgb32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 511 static inline int RENAME(yuva420_rgb32)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, |
512 int srcSliceH, uint8_t* dst[], int dstStride[]) | 512 int srcSliceH, uint8_t* dst[], int dstStride[]) |
513 { | 513 { |
514 #if HAVE_7REGS | 514 #if HAVE_7REGS |
515 int y, h_size; | 515 int y, h_size; |
516 | 516 |
517 YUV2RGB_LOOP(4) | 517 YUV2RGB_LOOP(4) |
518 | 518 |
519 uint8_t *pa = src[3] + y*srcStride[3]; | 519 const uint8_t *pa = src[3] + y*srcStride[3]; |
520 YUV2RGB_INIT | 520 YUV2RGB_INIT |
521 YUV2RGB | 521 YUV2RGB |
522 "movq (%6, %0, 2), %%mm3;" /* Load 8 A A7 A6 A5 A4 A3 A2 A1 A0 */ | 522 "movq (%6, %0, 2), %%mm3;" /* Load 8 A A7 A6 A5 A4 A3 A2 A1 A0 */ |
523 RGB_PLANAR2PACKED32(REG_RED,REG_GREEN,REG_BLUE,REG_ALPHA) | 523 RGB_PLANAR2PACKED32(REG_RED,REG_GREEN,REG_BLUE,REG_ALPHA) |
524 | 524 |
525 YUV2RGB_ENDLOOP(4) | 525 YUV2RGB_ENDLOOP(4) |
526 YUV2RGB_OPERANDS_ALPHA | 526 YUV2RGB_OPERANDS_ALPHA |
527 #endif | 527 #endif |
528 } | 528 } |
529 | 529 |
530 static inline int RENAME(yuv420_bgr32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 530 static inline int RENAME(yuv420_bgr32)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, |
531 int srcSliceH, uint8_t* dst[], int dstStride[]) | 531 int srcSliceH, uint8_t* dst[], int dstStride[]) |
532 { | 532 { |
533 int y, h_size; | 533 int y, h_size; |
534 | 534 |
535 YUV422_UNSHIFT | 535 YUV422_UNSHIFT |
542 | 542 |
543 YUV2RGB_ENDLOOP(4) | 543 YUV2RGB_ENDLOOP(4) |
544 YUV2RGB_OPERANDS | 544 YUV2RGB_OPERANDS |
545 } | 545 } |
546 | 546 |
547 static inline int RENAME(yuva420_bgr32)(SwsContext *c, uint8_t* src[], int srcStride[], int srcSliceY, | 547 static inline int RENAME(yuva420_bgr32)(SwsContext *c, const uint8_t* src[], int srcStride[], int srcSliceY, |
548 int srcSliceH, uint8_t* dst[], int dstStride[]) | 548 int srcSliceH, uint8_t* dst[], int dstStride[]) |
549 { | 549 { |
550 #if HAVE_7REGS | 550 #if HAVE_7REGS |
551 int y, h_size; | 551 int y, h_size; |
552 | 552 |
553 YUV2RGB_LOOP(4) | 553 YUV2RGB_LOOP(4) |
554 | 554 |
555 uint8_t *pa = src[3] + y*srcStride[3]; | 555 const uint8_t *pa = src[3] + y*srcStride[3]; |
556 YUV2RGB_INIT | 556 YUV2RGB_INIT |
557 YUV2RGB | 557 YUV2RGB |
558 "movq (%6, %0, 2), %%mm3;" /* Load 8 A A7 A6 A5 A4 A3 A2 A1 A0 */ | 558 "movq (%6, %0, 2), %%mm3;" /* Load 8 A A7 A6 A5 A4 A3 A2 A1 A0 */ |
559 RGB_PLANAR2PACKED32(REG_BLUE,REG_GREEN,REG_RED,REG_ALPHA) | 559 RGB_PLANAR2PACKED32(REG_BLUE,REG_GREEN,REG_RED,REG_ALPHA) |
560 | 560 |