提交 fcfbc150 编写于 作者: M Michael Niedermayer

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)

Originally committed as revision 2695 to svn://svn.mplayerhq.hu/mplayer/trunk/postproc
上级 7d7f78b5
/*
/*
*
* rgb2rgb.c, Software RGB to RGB convertor
* Written by Nick Kurshev.
......@@ -170,3 +170,60 @@ void rgb15to16(const uint8_t *src,uint8_t *dst,uint32_t src_size)
}
#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
/*
/*
*
* rgb2rgb.h, Software RGB to RGB convertor
*
......@@ -11,4 +11,11 @@ extern void rgb24to32(const uint8_t *src,uint8_t *dst,uint32_t src_size);
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
/*
/*
*
* rgb2rgb.c, Software RGB to RGB convertor
* Written by Nick Kurshev.
......@@ -170,3 +170,60 @@ void rgb15to16(const uint8_t *src,uint8_t *dst,uint32_t src_size)
}
#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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册