changeset 23225:794aba782ebd

Fix Gui colors for 32 bit png images after switch to libavcodec decoding
author reimar
date Mon, 07 May 2007 12:33:13 +0000
parents f2631612f28b
children 4b313fe708be
files gui/bitmap.c
diffstat 1 files changed, 3 insertions(+), 8 deletions(-) [+]
line wrap: on
line diff
--- a/gui/bitmap.c	Mon May 07 08:13:22 2007 +0000
+++ b/gui/bitmap.c	Mon May 07 12:33:13 2007 +0000
@@ -10,6 +10,7 @@
 #else
 #include "libavcodec/avcodec.h"
 #endif
+#include "libavutil/intreadwrite.h"
 #include "libvo/fastmemcpy.h"
 
 static int pngRead( unsigned char * fname,txSample * bf )
@@ -80,11 +81,9 @@
      mp_dbg( MSGT_GPLAYER,MSGL_DBG2,"[bitmap] not enough memory for image\n" );
      return 1;
     }
-   for ( c=0,i=0; c < bf->ImageSize; )
+   for ( c=0,i=0; c < bf->ImageSize; c += 4, i += 3)
     {
-     bf->Image[c++]=tmpImage[i++];	//red
-     bf->Image[c++]=tmpImage[i++];	//green
-     bf->Image[c++]=tmpImage[i++]; c++;	//blue
+     *(uint32_t *)&bf->Image[c] = AV_RB24(&tmpImage[i]);
     }
    free( tmpImage );
   }
@@ -151,10 +150,6 @@
    return -1;
   }
  if ( conv24to32( bf ) ) return -8;
-#ifdef WORDS_BIGENDIAN
- swab(bf->Image, bf->Image, bf->ImageSize);
-#endif
- bgr2rgb( bf );
  Normalize( bf );
  return 0;
 }