OSDN Git Service

bgr32to16, bgr32to15 (needed for palette stuff)
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 4 Nov 2001 19:36:24 +0000 (19:36 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 4 Nov 2001 19:36:24 +0000 (19:36 +0000)
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

postproc/rgb2rgb.c
postproc/rgb2rgb.h
postproc/rgb2rgb_template.c

index 5fe94f0..f83d565 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  *
  *  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
index 259bfa6..db6aff5 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  *
  *  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
index 5fe94f0..f83d565 100644 (file)
@@ -1,4 +1,4 @@
-/* 
+/*
  *
  *  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