Commit c7503bb1 authored by Laurent Aimar's avatar Laurent Aimar Committed by Christophe Mutricy

Request RGBA when you want that (and not RV32).

This fixes the skin loading. The color seems wrong but I think the skin
code is right (vlc RGBA is stored in memory R, B, G, A).
(cherry picked from commit 9818e276)
Signed-off-by: default avatarChristophe Mutricy <xtophe@videolan.org>
parent d4453631
...@@ -39,7 +39,7 @@ FileBitmap::FileBitmap( intf_thread_t *pIntf, image_handler_t *pImageHandler, ...@@ -39,7 +39,7 @@ FileBitmap::FileBitmap( intf_thread_t *pIntf, image_handler_t *pImageHandler,
video_format_t fmt_in = {0}, fmt_out = {0}; video_format_t fmt_in = {0}, fmt_out = {0};
picture_t *pPic; picture_t *pPic;
fmt_out.i_chroma = VLC_FOURCC('R','V','3','2'); fmt_out.i_chroma = VLC_FOURCC('R','G','B','A');
pPic = image_ReadUrl( pImageHandler, fileName.c_str(), &fmt_in, &fmt_out ); pPic = image_ReadUrl( pImageHandler, fileName.c_str(), &fmt_in, &fmt_out );
if( !pPic ) return; if( !pPic ) return;
...@@ -55,13 +55,14 @@ FileBitmap::FileBitmap( intf_thread_t *pIntf, image_handler_t *pImageHandler, ...@@ -55,13 +55,14 @@ FileBitmap::FileBitmap( intf_thread_t *pIntf, image_handler_t *pImageHandler,
{ {
for( int x = 0; x < m_width; x++ ) for( int x = 0; x < m_width; x++ )
{ {
uint32_t b = *(pSrc++); uint32_t r = *pSrc++;
uint32_t g = *(pSrc++); uint32_t g = *pSrc++;
uint32_t r = *(pSrc++); uint32_t b = *pSrc++;
uint8_t a = *(pSrc++); uint8_t a = *pSrc++;
*(pData++) = (b * a) >> 8;
*(pData++) = (g * a) >> 8; *(pData++) = b * a / 255;
*(pData++) = (r * a) >> 8; *(pData++) = g * a / 255;
*(pData++) = r * a / 255;
// Transparent pixel ? // Transparent pixel ?
if( aColor == (r<<16 | g<<8 | b) ) if( aColor == (r<<16 | g<<8 | b) )
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment