diff -ru src-ori/encoder.h src/encoder.h
--- src-ori/encoder.h	Wed Jan 12 10:35:34 2005
+++ src/encoder.h	Wed Jan 12 10:32:43 2005
@@ -39,7 +39,7 @@
  * Types
  ****************************************************************************/
 
-typedef int bool;
+//typedef int bool;
 
 /*****************************************************************************
  * Structures
diff -ru src-ori/image/colorspace.c src/image/colorspace.c
--- src-ori/image/colorspace.c	Wed Jan 12 10:35:34 2005
+++ src/image/colorspace.c	Wed Jan 12 10:32:43 2005
@@ -33,6 +33,7 @@
 /* input */
 packedFuncPtr rgb555_to_yv12;
 packedFuncPtr rgb565_to_yv12;
+packedFuncPtr rgb444_to_yv12;
 packedFuncPtr bgr_to_yv12;
 packedFuncPtr bgra_to_yv12;
 packedFuncPtr abgr_to_yv12;
@@ -55,6 +56,7 @@
 /* output */
 packedFuncPtr yv12_to_rgb555;
 packedFuncPtr yv12_to_rgb565;
+packedFuncPtr yv12_to_rgb444;
 packedFuncPtr yv12_to_bgr;
 packedFuncPtr yv12_to_bgra;
 packedFuncPtr yv12_to_abgr;
@@ -164,6 +166,9 @@
 #define MK_RGB565_G(RGB)  ((RGB) >> 3) & 0xfc
 #define MK_RGB565_R(RGB)  ((RGB) >> 8) & 0xf8
 
+#define MK_RGB444_B(RGB)  ((RGB) << 4) & 0xf0
+#define MK_RGB444_G(RGB)  ((RGB)     ) & 0xf0
+#define MK_RGB444_R(RGB)  ((RGB) >> 4) & 0xf0
 
 #define READ_RGB16_Y(ROW, UVID, C1,C2,C3,C4)	\
 	rgb = *(uint16_t *) (x_ptr + ((ROW)*x_stride) + 0);	\
@@ -288,6 +293,7 @@
 
 MAKE_COLORSPACE(rgb555_to_yv12_c,  2,2,2, RGB16_TO_YV12,  MK_RGB555, 0,0,0)
 MAKE_COLORSPACE(rgb565_to_yv12_c,  2,2,2, RGB16_TO_YV12,  MK_RGB565, 0,0,0)
+MAKE_COLORSPACE(rgb444_to_yv12_c,  2,2,2, RGB16_TO_YV12,  MK_RGB444, 0,0,0)
 MAKE_COLORSPACE(bgr_to_yv12_c,     3,2,2, RGB_TO_YV12,    2,1,0, 0)
 MAKE_COLORSPACE(bgra_to_yv12_c,    4,2,2, RGB_TO_YV12,    2,1,0, 0)
 MAKE_COLORSPACE(abgr_to_yv12_c,    4,2,2, RGB_TO_YV12,    3,2,1, 0)
@@ -338,6 +344,11 @@
 	((MAX(0,MIN(255, G)) << 3) & 0x07e0) | \
 	((MAX(0,MIN(255, B)) >> 3) & 0x001f)
 
+#define MK_RGB444(R,G,B)	\
+	((MAX(0,MIN(255, R)) << 4) & 0x0f00) | \
+	((MAX(0,MIN(255, G))     ) & 0x00f0) | \
+	((MAX(0,MIN(255, B)) >> 4) & 0x000f)
+
 #define WRITE_RGB16(ROW,UV_ROW,C1)	\
 	rgb_y = RGB_Y_tab[ y_ptr[y_stride*(ROW) + 0] ];						\
 	b[ROW] = (b[ROW] & 0x7) + ((rgb_y + b_u##UV_ROW) >> SCALEBITS_OUT);	\
@@ -442,6 +453,7 @@
 
 MAKE_COLORSPACE(yv12_to_rgb555_c,  2,2,2, YV12_TO_RGB16,  MK_RGB555, 0,0,0)
 MAKE_COLORSPACE(yv12_to_rgb565_c,  2,2,2, YV12_TO_RGB16,  MK_RGB565, 0,0,0)
+MAKE_COLORSPACE(yv12_to_rgb444_c,  2,2,2, YV12_TO_RGB16,  MK_RGB444, 0,0,0)
 MAKE_COLORSPACE(yv12_to_bgr_c,     3,2,2, YV12_TO_RGB,    2,1,0, 0)
 MAKE_COLORSPACE(yv12_to_bgra_c,    4,2,2, YV12_TO_RGB,	  2,1,0,3)
 MAKE_COLORSPACE(yv12_to_abgr_c,    4,2,2, YV12_TO_RGB,    3,2,1,0)
diff -ru src-ori/image/colorspace.h src/image/colorspace.h
--- src-ori/image/colorspace.h	Wed Jan 12 10:35:34 2005
+++ src/image/colorspace.h	Wed Jan 12 10:32:43 2005
@@ -54,6 +54,7 @@
 
 extern packedFuncPtr rgb555_to_yv12;
 extern packedFuncPtr rgb565_to_yv12;
+extern packedFuncPtr rgb444_to_yv12;
 extern packedFuncPtr bgr_to_yv12;
 extern packedFuncPtr bgra_to_yv12;
 extern packedFuncPtr abgr_to_yv12;
@@ -75,6 +76,7 @@
 /* plain c */
 packedFunc rgb555_to_yv12_c;
 packedFunc rgb565_to_yv12_c;
+packedFunc rgb444_to_yv12_c;
 packedFunc bgr_to_yv12_c;
 packedFunc bgra_to_yv12_c;
 packedFunc abgr_to_yv12_c;
@@ -114,6 +116,7 @@
 
 extern packedFuncPtr yv12_to_rgb555;
 extern packedFuncPtr yv12_to_rgb565;
+extern packedFuncPtr yv12_to_rgb444;
 extern packedFuncPtr yv12_to_bgr;
 extern packedFuncPtr yv12_to_bgra;
 extern packedFuncPtr yv12_to_abgr;
@@ -135,6 +138,7 @@
 /* plain c */
 packedFunc yv12_to_rgb555_c;
 packedFunc yv12_to_rgb565_c;
+packedFunc yv12_to_rgb444_c;
 packedFunc yv12_to_bgr_c;
 packedFunc yv12_to_bgra_c;
 packedFunc yv12_to_abgr_c;
diff -ru src-ori/image/image.c src/image/image.c
--- src-ori/image/image.c	Wed Jan 12 10:35:34 2005
+++ src/image/image.c	Wed Jan 12 10:32:43 2005
@@ -571,6 +571,14 @@
 			interlacing?rgb565i_to_yv12_c:rgb565_to_yv12_c, 2);
 		break;
 
+	case XVID_CSP_RGB444:
+		safe_packed_conv(
+			src[0], src_stride[0], image->y, image->u, image->v,
+			edged_width, edged_width2, width, height, (csp & XVID_CSP_VFLIP),
+			rgb444_to_yv12,
+			rgb444_to_yv12_c, 2);
+		break;
+
 
 	case XVID_CSP_BGR:
 		safe_packed_conv(
@@ -747,6 +755,15 @@
 			interlacing?yv12_to_rgb565i  :yv12_to_rgb565,
 			interlacing?yv12_to_rgb565i_c:yv12_to_rgb565_c, 2);
 		return 0;
+
+	case XVID_CSP_RGB444:
+		safe_packed_conv(
+			dst[0], dst_stride[0], image->y, image->u, image->v,
+			edged_width, edged_width2, width, height, (csp & XVID_CSP_VFLIP),
+			yv12_to_rgb444,
+			yv12_to_rgb444_c, 2);
+		return 0;
+
 
     case XVID_CSP_BGR:
 		safe_packed_conv(
diff -ru src-ori/portab.h src/portab.h
--- src-ori/portab.h	Wed Jan 12 10:35:34 2005
+++ src/portab.h	Wed Jan 12 10:32:43 2005
@@ -63,7 +63,16 @@
 
 #else
 
-#    include <inttypes.h>
+//#include <inttypes.h>
+//#include <e32def.h>
+#    define int8_t   signed char
+#    define uint8_t  unsigned char
+#    define int16_t  signed short
+#    define uint16_t unsigned short
+#    define int32_t  signed int
+#    define uint32_t unsigned int
+#    define int64_t  signed long
+#    define uint64_t unsigned long
 
 #endif
 
diff -ru src-ori/xvid.c src/xvid.c
--- src-ori/xvid.c	Wed Jan 12 10:35:34 2005
+++ src/xvid.c	Wed Jan 12 10:32:43 2005
@@ -244,6 +244,7 @@
 	yv12_to_yv12    = yv12_to_yv12_c;
 	rgb555_to_yv12  = rgb555_to_yv12_c;
 	rgb565_to_yv12  = rgb565_to_yv12_c;
+	rgb444_to_yv12  = rgb444_to_yv12_c;
 	bgr_to_yv12     = bgr_to_yv12_c;
 	bgra_to_yv12    = bgra_to_yv12_c;
 	abgr_to_yv12    = abgr_to_yv12_c;
@@ -265,6 +266,7 @@
 	/* All colorspace transformation functions YV12->User format */
 	yv12_to_rgb555  = yv12_to_rgb555_c;
 	yv12_to_rgb565  = yv12_to_rgb565_c;
+	yv12_to_rgb444  = yv12_to_rgb444_c;
 	yv12_to_bgr     = yv12_to_bgr_c;
 	yv12_to_bgra    = yv12_to_bgra_c;
 	yv12_to_abgr    = yv12_to_abgr_c;
diff -ru src-ori/xvid.h src/xvid.h
--- src-ori/xvid.h	Wed Jan 12 10:35:34 2005
+++ src/xvid.h	Wed Jan 12 10:32:43 2005
@@ -107,6 +107,7 @@
 #define XVID_CSP_BGR      (1<< 9) /* 24-bit bgr packed */
 #define XVID_CSP_RGB555   (1<<10) /* 16-bit rgb555 packed */
 #define XVID_CSP_RGB565   (1<<11) /* 16-bit rgb565 packed */
+#define XVID_CSP_RGB444   (1<<16) /* 16-bit rgb444 packed w/ 4bit padding (Symbian S60) */
 #define XVID_CSP_SLICE    (1<<12) /* decoder only: 4:2:0 planar, per slice rendering */
 #define XVID_CSP_INTERNAL (1<<13) /* decoder only: 4:2:0 planar, returns ptrs to internal buffers */
 #define XVID_CSP_NULL     (1<<14) /* decoder only: dont output anything */

