diff --git a/libvo/vo_vesa.c b/libvo/vo_vesa.c index b28e0d5e34..aa22c23899 100644 --- a/libvo/vo_vesa.c +++ b/libvo/vo_vesa.c @@ -704,6 +704,10 @@ init(uint32_t width, uint32_t height, uint32_t d_width, uint32_t d_height, uint3 else if(image_bpp == 32 && video_mode_info.BitsPerPixel == 15) rgb2rgb_fnc = rgb32to15; else + if(image_bpp == 24 && video_mode_info.BitsPerPixel == 16) rgb2rgb_fnc = rgb24to16; + else + if(image_bpp == 24 && video_mode_info.BitsPerPixel == 15) rgb2rgb_fnc = rgb24to15; + else if(image_bpp == 15 && video_mode_info.BitsPerPixel == 16) rgb2rgb_fnc = rgb15to16; else { diff --git a/postproc/rgb2rgb.c b/postproc/rgb2rgb.c index b873462e18..19fa7faca0 100644 --- a/postproc/rgb2rgb.c +++ b/postproc/rgb2rgb.c @@ -18,7 +18,7 @@ static const uint64_t mask15rg __attribute__((aligned(8))) = 0x7FE07FE07FE07FE0U static const uint64_t mask15s __attribute__((aligned(8))) = 0xFFE0FFE0FFE0FFE0ULL; #endif -void rgb24to32(const uint8_t *src,uint8_t *dst,uint32_t src_size) +void rgb24to32(const uint8_t *src,uint8_t *dst,unsigned src_size) { uint8_t *dest = dst; const uint8_t *s = src; @@ -64,7 +64,7 @@ void rgb24to32(const uint8_t *src,uint8_t *dst,uint32_t src_size) } } -void rgb32to24(const uint8_t *src,uint8_t *dst,uint32_t src_size) +void rgb32to24(const uint8_t *src,uint8_t *dst,unsigned src_size) { uint8_t *dest = dst; const uint8_t *s = src; @@ -123,7 +123,7 @@ void rgb32to24(const uint8_t *src,uint8_t *dst,uint32_t src_size) MMX2, 3DNOW optimization by Nick Kurshev 32bit c version, and and&add trick by Michael Niedermayer */ -void rgb15to16(const uint8_t *src,uint8_t *dst,uint32_t src_size) +void rgb15to16(const uint8_t *src,uint8_t *dst,unsigned src_size) { #ifdef HAVE_MMX register const char* s=src+src_size; @@ -168,8 +168,8 @@ void rgb15to16(const uint8_t *src,uint8_t *dst,uint32_t src_size) *( d1++ )=( x&0x001F )|( ( x&0x7FE0 )<<1 ); } #else - const uint32_t *s1=( uint32_t * )src; - uint32_t *d1=( uint32_t * )dst; + const unsigned *s1=( unsigned * )src; + unsigned *d1=( unsigned * )dst; int i; int size= src_size>>2; for(i=0; i>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8); + } +} + +void rgb24to15(const uint8_t *src, uint8_t *dst, unsigned src_size) +{ + unsigned i,num_pixels=src_size/3; + for(i=0; i>3) | ((g&0xF8)<<3) | ((r&0xF8)<<7); + } +} /** * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette */ -void palette8torgb16(const uint8_t *src, uint8_t *dst, uint32_t num_pixels, const uint8_t *palette) +void palette8torgb16(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) { - uint32_t i; + unsigned i; for(i=0; i>2; for(i=0; i>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8); + } +} + +void rgb24to15(const uint8_t *src, uint8_t *dst, unsigned src_size) +{ + unsigned i,num_pixels=src_size/3; + for(i=0; i>3) | ((g&0xF8)<<3) | ((r&0xF8)<<7); + } +} /** * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette */ -void palette8torgb16(const uint8_t *src, uint8_t *dst, uint32_t num_pixels, const uint8_t *palette) +void palette8torgb16(const uint8_t *src, uint8_t *dst, unsigned num_pixels, const uint8_t *palette) { - uint32_t i; + unsigned i; for(i=0; i