368 srcPtr ++; |
368 srcPtr ++; |
369 count--; |
369 count--; |
370 } |
370 } |
371 break; |
371 break; |
372 } |
372 } |
373 |
373 case OWF_IMAGE_UYVY: |
|
374 { |
|
375 OWFuint8* srcPtr = (OWFuint8*) srcLinePtr; |
|
376 OWFint y,u,v,r,g,b,x; |
|
377 for (x = 0; x < count; x++) |
|
378 { |
|
379 u = srcPtr[0] - 128; |
|
380 v = srcPtr[2] - 128; |
|
381 y = srcPtr[3] - 16; |
|
382 |
|
383 r = ((298 * y + 409 * u) / 256); |
|
384 g = ((298 * y - 100 * v - 208 * u) / 256); |
|
385 b = ((298 * y + 516 * v) / 256); |
|
386 |
|
387 CLIP(r); |
|
388 CLIP(g); |
|
389 CLIP(b); |
|
390 |
|
391 dstPtr->color.alpha = 255; |
|
392 dstPtr->color.red = r; |
|
393 dstPtr->color.green = g; |
|
394 dstPtr->color.blue = b; |
|
395 dstPtr++; |
|
396 |
|
397 y = srcPtr[1] - 16; |
|
398 r = ((298 * y + 409 * u) / 256); |
|
399 g = ((298 * y - 100 * v - 208 * u) / 256); |
|
400 b = ((298 * y + 516 * v) / 256); |
|
401 |
|
402 CLIP(r); |
|
403 CLIP(g); |
|
404 CLIP(b); |
|
405 |
|
406 dstPtr->color.alpha = 255; |
|
407 dstPtr->color.red = r; |
|
408 dstPtr->color.green = g; |
|
409 dstPtr->color.blue = b; |
|
410 dstPtr++; |
|
411 srcPtr += 4; |
|
412 } |
|
413 break; |
|
414 } |
|
415 |
374 default: |
416 default: |
375 { |
417 { |
376 return OWF_FALSE; /* source format not supported */ |
418 return OWF_FALSE; /* source format not supported */ |
377 } |
419 } |
378 } |
420 } |
545 memcpy(dstPtr, srcPtr, src->stride); |
587 memcpy(dstPtr, srcPtr, src->stride); |
546 srcPtr = (OWFpixel*)((OWFuint8*)srcPtr + src->stride); |
588 srcPtr = (OWFpixel*)((OWFuint8*)srcPtr + src->stride); |
547 #endif |
589 #endif |
548 break; |
590 break; |
549 } |
591 } |
550 |
592 case OWF_IMAGE_UYVY: |
|
593 { |
|
594 OWFuint8* srcPtr = (OWFuint8*) srcLinePtr; |
|
595 OWFint y,u,v,r,g,b,x; |
|
596 for (x = 0; x < count; x++) |
|
597 { |
|
598 u = srcPtr[0] - 128; |
|
599 v = srcPtr[2] - 128; |
|
600 y = srcPtr[3] - 16; |
|
601 |
|
602 r = ((298 * y + 409 * u) / 256); |
|
603 g = ((298 * y - 100 * v - 208 * u) / 256); |
|
604 b = ((298 * y + 516 * v) / 256); |
|
605 |
|
606 CLIP(r); |
|
607 CLIP(g); |
|
608 CLIP(b); |
|
609 |
|
610 dstPtr->color.alpha = 255; |
|
611 dstPtr->color.red = r; |
|
612 dstPtr->color.green = g; |
|
613 dstPtr->color.blue = b; |
|
614 dstPtr++; |
|
615 |
|
616 y = srcPtr[1] - 16; |
|
617 r = ((298 * y + 409 * u) / 256); |
|
618 g = ((298 * y - 100 * v - 208 * u) / 256); |
|
619 b = ((298 * y + 516 * v) / 256); |
|
620 |
|
621 CLIP(r); |
|
622 CLIP(g); |
|
623 CLIP(b); |
|
624 |
|
625 dstPtr->color.alpha = 255; |
|
626 dstPtr->color.red = r; |
|
627 dstPtr->color.green = g; |
|
628 dstPtr->color.blue = b; |
|
629 dstPtr++; |
|
630 srcPtr += 4; |
|
631 } |
|
632 break; |
|
633 } |
|
634 |
551 default: |
635 default: |
552 { |
636 { |
553 return OWF_FALSE; /* destination format not supported */ |
637 return OWF_FALSE; /* destination format not supported */ |
554 } |
638 } |
555 } |
639 } |