summaryrefslogtreecommitdiffstats
path: root/postproc
diff options
context:
space:
mode:
authormichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-04 19:36:24 +0000
committermichael <michael@b3059339-0415-0410-9bf9-f77b7e298cf2>2001-11-04 19:36:24 +0000
commit199e88d20ca58477842421c4961a8db3efe8b026 (patch)
tree06e4dd78c3932379c64a1f8cf4ea29b363df7bf2 /postproc
parent78ab9a9f1dc36d4bffbb88e3fadac1700f3865fa (diff)
downloadmpv-199e88d20ca58477842421c4961a8db3efe8b026.tar.bz2
mpv-199e88d20ca58477842421c4961a8db3efe8b026.tar.xz
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) git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@2695 b3059339-0415-0410-9bf9-f77b7e298cf2
Diffstat (limited to 'postproc')
-rw-r--r--postproc/rgb2rgb.c59
-rw-r--r--postproc/rgb2rgb.h9
-rw-r--r--postproc/rgb2rgb_template.c59
3 files changed, 124 insertions, 3 deletions
diff --git a/postproc/rgb2rgb.c b/postproc/rgb2rgb.c
index 5fe94f04ed..f83d565dbb 100644
--- a/postproc/rgb2rgb.c
+++ b/postproc/rgb2rgb.c
@@ -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
diff --git a/postproc/rgb2rgb.h b/postproc/rgb2rgb.h
index 259bfa6b75..db6aff5f80 100644
--- a/postproc/rgb2rgb.h
+++ b/postproc/rgb2rgb.h
@@ -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
diff --git a/postproc/rgb2rgb_template.c b/postproc/rgb2rgb_template.c
index 5fe94f04ed..f83d565dbb 100644
--- a/postproc/rgb2rgb_template.c
+++ b/postproc/rgb2rgb_template.c
@@ -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