summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gui/bitmap.c11
1 files changed, 3 insertions, 8 deletions
diff --git a/gui/bitmap.c b/gui/bitmap.c
index c0e693da9e..63427783f4 100644
--- a/gui/bitmap.c
+++ b/gui/bitmap.c
@@ -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 @@ static int conv24to32( txSample * bf )
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 @@ int bpRead( char * fname, txSample * bf )
return -1;
}
if ( conv24to32( bf ) ) return -8;
-#ifdef WORDS_BIGENDIAN
- swab(bf->Image, bf->Image, bf->ImageSize);
-#endif
- bgr2rgb( bf );
Normalize( bf );
return 0;
}