diff options
author | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2003-01-19 17:19:36 +0000 |
---|---|---|
committer | Miguel Freitas <miguelfreitas@users.sourceforge.net> | 2003-01-19 17:19:36 +0000 |
commit | 2351d7fc961c52854286795f3599f4b81e1599d2 (patch) | |
tree | 91d56ed5a30e2465d17d501f0c85605d9fb5181b | |
parent | c8b5b51d673a5095c8a01058c378719fd16f505c (diff) | |
download | xine-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.c | 24 |
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++; } } |