Mercurial > mplayer.hg
changeset 2694:2924350d92ed
bgr32to16, bgr32to15 (needed for palette stuff)
paletteto 32,16,15bgr
all in c, will be optimized as soon as they are tested (assuming opt. is possible)
author | michael |
---|---|
date | Sun, 04 Nov 2001 19:36:24 +0000 |
parents | 1a8e5e017b1d |
children | af8b2c0e4dad |
files | postproc/rgb2rgb.c postproc/rgb2rgb.h postproc/rgb2rgb_template.c |
diffstat | 3 files changed, 124 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/postproc/rgb2rgb.c Sun Nov 04 18:06:31 2001 +0000 +++ b/postproc/rgb2rgb.c Sun Nov 04 19:36:24 2001 +0000 @@ -1,4 +1,4 @@ -/* +/* * * rgb2rgb.c, Software RGB to RGB convertor * Written by Nick Kurshev. @@ -170,3 +170,60 @@ } #endif } + +/** + * Pallete is assumed to contain bgr32 + */ +void palette8torgb32(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette) +{ + int i; + for(i=0; i<src_size; i++) + ((uint32_t *)dst)[i] = ((uint32_t *)palette)[ src[i] ]; +} + +void rgb32to16(uint8_t *src, uint8_t *dst, int src_size) +{ + int i; + for(i=0; i<src_size; i+=4) + { + const int b= src[i+0]; + const int g= src[i+1]; + const int r= src[i+2]; + + ((uint16_t *)dst)[i]= (b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8); + } +} + +void rgb32to15(uint8_t *src, uint8_t *dst, int src_size) +{ + int i; + for(i=0; i<src_size; i+=4) + { + const int b= src[i+0]; + const int g= src[i+1]; + const int r= src[i+2]; + + ((uint16_t *)dst)[i]= (b>>3) | ((g&0xF8)<<3) | ((r&0xF8)<<7); + } +} + + +/** + * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette + */ +void palette8torgb16(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette) +{ + int i; + for(i=0; i<src_size; i++) + ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; +} + +/** + * Pallete is assumed to contain bgr15, see rgb32to15 to convert the palette + */ +void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette) +{ + int i; + for(i=0; i<src_size; i++) + ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; +} \ No newline at end of file
--- a/postproc/rgb2rgb.h Sun Nov 04 18:06:31 2001 +0000 +++ b/postproc/rgb2rgb.h Sun Nov 04 19:36:24 2001 +0000 @@ -1,4 +1,4 @@ -/* +/* * * rgb2rgb.h, Software RGB to RGB convertor * @@ -11,4 +11,11 @@ extern void rgb32to24(const uint8_t *src,uint8_t *dst,uint32_t src_size); extern void rgb15to16(const uint8_t *src,uint8_t *dst,uint32_t src_size); +void rgb32to16(uint8_t *src, uint8_t *dst, int src_size); +void rgb32to15(uint8_t *src, uint8_t *dst, int src_size); +void palette8torgb32(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette); +void palette8torgb16(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette); +void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette); + + #endif
--- a/postproc/rgb2rgb_template.c Sun Nov 04 18:06:31 2001 +0000 +++ b/postproc/rgb2rgb_template.c Sun Nov 04 19:36:24 2001 +0000 @@ -1,4 +1,4 @@ -/* +/* * * rgb2rgb.c, Software RGB to RGB convertor * Written by Nick Kurshev. @@ -170,3 +170,60 @@ } #endif } + +/** + * Pallete is assumed to contain bgr32 + */ +void palette8torgb32(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette) +{ + int i; + for(i=0; i<src_size; i++) + ((uint32_t *)dst)[i] = ((uint32_t *)palette)[ src[i] ]; +} + +void rgb32to16(uint8_t *src, uint8_t *dst, int src_size) +{ + int i; + for(i=0; i<src_size; i+=4) + { + const int b= src[i+0]; + const int g= src[i+1]; + const int r= src[i+2]; + + ((uint16_t *)dst)[i]= (b>>3) | ((g&0xFC)<<3) | ((r&0xF8)<<8); + } +} + +void rgb32to15(uint8_t *src, uint8_t *dst, int src_size) +{ + int i; + for(i=0; i<src_size; i+=4) + { + const int b= src[i+0]; + const int g= src[i+1]; + const int r= src[i+2]; + + ((uint16_t *)dst)[i]= (b>>3) | ((g&0xF8)<<3) | ((r&0xF8)<<7); + } +} + + +/** + * Palette is assumed to contain bgr16, see rgb32to16 to convert the palette + */ +void palette8torgb16(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette) +{ + int i; + for(i=0; i<src_size; i++) + ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; +} + +/** + * Pallete is assumed to contain bgr15, see rgb32to15 to convert the palette + */ +void palette8torgb15(uint8_t *src, uint8_t *dst, int src_size, uint8_t *palette) +{ + int i; + for(i=0; i<src_size; i++) + ((uint16_t *)dst)[i] = ((uint16_t *)palette)[ src[i] ]; +} \ No newline at end of file