Mercurial > mplayer.hg
changeset 22026:cac6e3b0d2e5
fix endianess, see bug #727
author | lu_zero |
---|---|
date | Sun, 28 Jan 2007 16:36:41 +0000 |
parents | 8f9d757af58e |
children | 0b262e00bc99 |
files | libvo/vo_tga.c |
diffstat | 1 files changed, 16 insertions(+), 12 deletions(-) [+] |
line wrap: on
line diff
--- a/libvo/vo_tga.c Sun Jan 28 14:48:14 2007 +0000 +++ b/libvo/vo_tga.c Sun Jan 28 16:36:41 2007 +0000 @@ -37,14 +37,6 @@ #include "video_out.h" #include "video_out_internal.h" -#ifdef WORDS_BIGENDIAN -#define TGA_ALPHA32 0x000000ff -#define TGA_SHIFT32 8 -#else -#define TGA_ALPHA32 0xff000000 -#define TGA_SHIFT32 0 -#endif - static vo_info_t info = { "Targa output", @@ -121,14 +113,26 @@ if (bpp == 32) { /* Setup the alpha channel for every pixel */ while (dy-- > 0) { - uint32_t *d; - uint32_t *s; + uint8_t *d; + uint8_t *s; int x; - s = (uint32_t *)buf; + s = buf; d = line_buff; for(x = 0; x < dx; x++) { - *d++ = ((*s++) << TGA_SHIFT32) | TGA_ALPHA32; + #ifdef WORDS_BIGENDIAN + d[0] = s[3]; + d[1] = s[2]; + d[2] = s[1]; + d[3] = 0xff; + #else + d[0] = 0xff; + d[1] = s[1]; + d[2] = s[2]; + d[3] = s[3]; + #endif + d+=4; + s+=4; } if (fwrite(line_buff, wb, 1, fo) != 1) { er = 4;