[Mplayer-cvslog] CVS: main/postproc rgb2rgb.c,1.15,1.16 rgb2rgb.h,1.4,1.5

Michael Niedermayer michael at mplayer.dev.hu
Sun Nov 4 20:37:53 CET 2001


Update of /cvsroot/mplayer/main/postproc
In directory mplayer:/var/tmp.root/cvs-serv27685

Modified Files:
	rgb2rgb.c rgb2rgb.h 
Log Message:
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)


Index: rgb2rgb.c
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/rgb2rgb.c,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- rgb2rgb.c	4 Nov 2001 11:51:36 -0000	1.15
+++ rgb2rgb.c	4 Nov 2001 19:36:24 -0000	1.16
@@ -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

Index: rgb2rgb.h
===================================================================
RCS file: /cvsroot/mplayer/main/postproc/rgb2rgb.h,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -r1.4 -r1.5
--- rgb2rgb.h	4 Nov 2001 11:51:36 -0000	1.4
+++ rgb2rgb.h	4 Nov 2001 19:36:24 -0000	1.5
@@ -1,4 +1,4 @@
-/* 
+/*
  *
  *  rgb2rgb.h, Software RGB to RGB convertor
  *
@@ -10,5 +10,12 @@
 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




More information about the MPlayer-cvslog mailing list