summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMiguel Freitas <miguelfreitas@users.sourceforge.net>2003-01-19 17:19:36 +0000
committerMiguel Freitas <miguelfreitas@users.sourceforge.net>2003-01-19 17:19:36 +0000
commit2351d7fc961c52854286795f3599f4b81e1599d2 (patch)
tree91d56ed5a30e2465d17d501f0c85605d9fb5181b
parentc8b5b51d673a5095c8a01058c378719fd16f505c (diff)
downloadxine-lib-2351d7fc961c52854286795f3599f4b81e1599d2.tar.gz
xine-lib-2351d7fc961c52854286795f3599f4b81e1599d2.tar.bz2
trying to fix color errors and endianness problems in yuy2
CVS patchset: 3968 CVS date: 2003/01/19 17:19:36
-rw-r--r--src/video_out/alphablend.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/video_out/alphablend.c b/src/video_out/alphablend.c
index 9275db9f8..2f966f7f0 100644
--- a/src/video_out/alphablend.c
+++ b/src/video_out/alphablend.c
@@ -1014,21 +1014,25 @@ void blend_yuy2 (uint8_t * dst_img, vo_overlay_t * img_overl,
if (o && mask) {
l = rlelen>>1;
- if( !(x & 1) ) {
- yuy2 = my_clut[clr].y + (my_clut[clr].cb << 8) +
- (my_clut[clr].y << 16) + (my_clut[clr].cr << 24);
+ if( x & 1 ) {
+ *(((uint8_t *)&yuy2) + 0) = my_clut[clr].y;
+ *(((uint8_t *)&yuy2) + 1) = my_clut[clr].cb;
+ *(((uint8_t *)&yuy2) + 2) = my_clut[clr].y;
+ *(((uint8_t *)&yuy2) + 3) = my_clut[clr].cr;
} else {
- yuy2 = my_clut[clr].y + (my_clut[clr].cr << 8) +
- (my_clut[clr].y << 16) + (my_clut[clr].cb << 24);
+ *(((uint8_t *)&yuy2) + 0) = my_clut[clr].y;
+ *(((uint8_t *)&yuy2) + 1) = my_clut[clr].cr;
+ *(((uint8_t *)&yuy2) + 2) = my_clut[clr].y;
+ *(((uint8_t *)&yuy2) + 3) = my_clut[clr].cb;
}
if (o >= 15) {
while(l--) {
- *((uint16_t *)dst)++ = yuy2 >> 16;
- *((uint16_t *)dst)++ = yuy2 & 0xffff;
+ *((uint16_t *)dst)++ = *(((uint16_t *)&yuy2) + 0);
+ *((uint16_t *)dst)++ = *(((uint16_t *)&yuy2) + 1);
}
if(rlelen & 1)
- *((uint16_t *)dst)++ = yuy2 & 0xffff;
+ *((uint16_t *)dst)++ = *(((uint16_t *)&yuy2) + 0);
} else {
if( l ) {
mem_blend32(dst, (uint8_t *)&yuy2, o, l);
@@ -1036,9 +1040,9 @@ void blend_yuy2 (uint8_t * dst_img, vo_overlay_t * img_overl,
}
if(rlelen & 1) {
- *dst = BLEND_BYTE(*dst, *((uint8_t *)&yuy2), o);
+ *dst = BLEND_BYTE(*dst, *(((uint8_t *)&yuy2) + 0), o);
dst++;
- *dst = BLEND_BYTE(*dst, *((uint8_t *)&yuy2+1), o);
+ *dst = BLEND_BYTE(*dst, *(((uint8_t *)&yuy2) + 1), o);
dst++;
}
}