1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2024-12-23 12:43:46 +02:00

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
This commit is contained in:
Michael Niedermayer 2001-11-04 19:36:24 +00:00
parent 7d7f78b5a4
commit fcfbc150aa
3 changed files with 124 additions and 3 deletions

View File

@ -170,3 +170,60 @@ void rgb15to16(const uint8_t *src,uint8_t *dst,uint32_t src_size)
} }
#endif #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] ];
}

View File

@ -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 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); 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 #endif

View File

@ -170,3 +170,60 @@ void rgb15to16(const uint8_t *src,uint8_t *dst,uint32_t src_size)
} }
#endif #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] ];
}