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