aboutsummaryrefslogtreecommitdiff
path: root/packages/noncvs/windows/extra/Gem/dev/Gem/PixConvert.h
diff options
context:
space:
mode:
Diffstat (limited to 'packages/noncvs/windows/extra/Gem/dev/Gem/PixConvert.h')
-rw-r--r--packages/noncvs/windows/extra/Gem/dev/Gem/PixConvert.h346
1 files changed, 173 insertions, 173 deletions
diff --git a/packages/noncvs/windows/extra/Gem/dev/Gem/PixConvert.h b/packages/noncvs/windows/extra/Gem/dev/Gem/PixConvert.h
index 8ab80a42..b06ab64f 100644
--- a/packages/noncvs/windows/extra/Gem/dev/Gem/PixConvert.h
+++ b/packages/noncvs/windows/extra/Gem/dev/Gem/PixConvert.h
@@ -1,173 +1,173 @@
-/*-----------------------------------------------------------------
-LOG
- GEM - Graphics Environment for Multimedia
-
- GemPixConvertSIMD.h
- - header-file for color conversion
- - this is mainly for (SIMD-)optimized routines
- - part of GEM
-
- Copyright (c) 2006-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at
- For information on usage and redistribution, and for a DISCLAIMER OF ALL
- WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution.
-
------------------------------------------------------------------*/
-
-
-#ifndef _INCLUDE__GEM_GEM_PIXCONVERT_H_
-#define _INCLUDE__GEM_GEM_PIXCONVERT_H_
-
-#include "Gem/Image.h"
-#include "Utils/SIMD.h"
-
-// use formulae from http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC30
-/*
- * [Y] 1 [ 65.738 129.075 25.064 ] [R] [ 16]
- * [U] = --- * [ -37.945 -74.494 112.439 ] * [G]+[128]
- * [V] = 256 [ 112.439 -94.154 -18.285 ] [B] [128]
- *
- * [R] 1 [ 298.082 0.0 408.583 ] [Y] [ 16]
- * [G] = --- * [ 298.082 -100.291 -208.120 ] * ([U]-[128])
- * [B] = 256 [ 298.082 516.411 0.0 ] [V] [128]
- */
-
-#define YUV_POYNTON
-// here comes something to be afraid of:
-// (probably it would be better to define the matrices as real constant-value matrices)
-// (instead of element-wise)
-
-#ifdef YUV_POYNTON
-# define Y_OFFSET 16
-# define UV_OFFSET 128
-
-// RGB2YUV
-// poynton-values rounded
-# define RGB2YUV_11 66
-# define RGB2YUV_12 129
-# define RGB2YUV_13 25
-# define RGB2YUV_21 -38
-# define RGB2YUV_22 -74
-# define RGB2YUV_23 112
-# define RGB2YUV_31 112
-# define RGB2YUV_32 -94
-# define RGB2YUV_33 -18
-
-// YUV2RGB
-// (we skip _21 and _31 as they are equal to _11)
-#if 0
-// poynton-values rounded
-# define YUV2RGB_11 298
-# define YUV2RGB_12 0
-# define YUV2RGB_13 409
-# define YUV2RGB_22 -100
-# define YUV2RGB_23 -208
-# define YUV2RGB_32 516
-# define YUV2RGB_33 0
-#else
-
-// this is round(256*inv(rgb2yuv/256))
-// so the general error should be smaller
-# define YUV2RGB_11 298
-# define YUV2RGB_12 -1
-# define YUV2RGB_13 409
-# define YUV2RGB_22 -100
-# define YUV2RGB_23 -210
-# define YUV2RGB_32 519
-# define YUV2RGB_33 0
-#endif
-
-#else
-/* the old ones: */
-# define Y_OFFSET 0
-# define UV_OFFSET 128
-// RGB2YUV
-# define RGB2YUV_11 77
-# define RGB2YUV_12 150
-# define RGB2YUV_13 29
-# define RGB2YUV_21 -43
-# define RGB2YUV_22 -85
-# define RGB2YUV_23 128
-# define RGB2YUV_31 128
-# define RGB2YUV_32 -107
-# define RGB2YUV_33 -21
-// YUV2RGB
-# define YUV2RGB_11 256
-# define YUV2RGB_12 0
-# define YUV2RGB_13 359
-# define YUV2RGB_22 -88
-# define YUV2RGB_23 -183
-# define YUV2RGB_32 454
-# define YUV2RGB_33 0
-
-#endif /* POYNTON */
-
-#if 0
-/* yuv-coefficients would also need an offset! */
-# define RGB2GRAY_RED RGB2YUV_11
-# define RGB2GRAY_GREEN RGB2YUV_12
-# define RGB2GRAY_BLUE RGB2YUV_13
-# define RGB2GRAY_OFFSET Y_OFFSET
-#else
-# define RGB2GRAY_RED 77
-# define RGB2GRAY_GREEN 150
-# define RGB2GRAY_BLUE 29
-# define RGB2GRAY_OFFSET 0
-#endif
-
-/* AltiVec */
-#ifdef __VEC__
-
-/* there are problems on OSX10.3 with older versions of gcc, since the intrinsic code
- * below freely changes between signed and unsigned short vectors
- * newer versions of gcc accept this...
- * LATER: fix the code (GemPixConvertAltivec:750..800)
- */
-# ifdef __GNUC__
-/* according to hcs it does NOT work with gcc-3.3
- * for simplicity, i disable everything below gcc4
- * JMZ: 20061114
- */
-# if __GNUC__ < 4
-# warning disabling AltiVec for older gcc: please fix me
-# define NO_VECTORINT_TO_VECTORUNSIGNEDINT
-# endif
-# endif /* GNUC */
-
-
- void RGB_to_YCbCr_altivec(const unsigned char *rgbdata, size_t RGB_size,
- unsigned char *pixels);
- void RGBA_to_YCbCr_altivec(const unsigned char *rgbadata, size_t RGBA_size,
- unsigned char *pixels);
- void BGR_to_YCbCr_altivec(const unsigned char *bgrdata, size_t BGR_size,
- unsigned char *pixels);
- void BGRA_to_YCbCr_altivec(const unsigned char *bgradata, size_t BGRA_size,
- unsigned char *pixels);
- void YUV422_to_BGRA_altivec(const unsigned char *yuvdata, size_t pixelnum,
- unsigned char *pixels);
- void YV12_to_YUV422_altivec(const short*Y, const short*U, const short*V,
- unsigned char *data, int xsize, int ysize);
-# ifndef NO_VECTORINT_TO_VECTORUNSIGNEDINT
- void YUV422_to_YV12_altivec(short*pY, short*pY2, short*pU, short*pV,
- const unsigned char *gem_image, int xsize, int ysize);
-# endif
-#endif /* AltiVec */
-
-/* SSE2 */
-#ifdef __SSE2__
-void RGBA_to_UYVY_SSE2(const unsigned char *rgbadata,
- size_t size,
- unsigned char *yuvdata);
-void UYVY_to_RGBA_SSE2(const unsigned char *yuvdata,
- size_t size,
- unsigned char *rgbadata);
-void UYVY_to_RGB_SSE2(const unsigned char *yuvdata,
- size_t size,
- unsigned char *rgbadata);
-#endif /* SSE2 */
-
-/* in case somebody has an old machine... */
-#ifdef __MMX__
-
-#endif /* MMX */
-
-#endif /* _INCLUDE__GEM_GEM_PIXCONVERT_H_ */
+/*-----------------------------------------------------------------
+LOG
+ GEM - Graphics Environment for Multimedia
+
+ GemPixConvertSIMD.h
+ - header-file for color conversion
+ - this is mainly for (SIMD-)optimized routines
+ - part of GEM
+
+ Copyright (c) 2006-2011 IOhannes m zmölnig. forum::für::umläute. IEM. zmoelnig@iem.at
+ For information on usage and redistribution, and for a DISCLAIMER OF ALL
+ WARRANTIES, see the file, "GEM.LICENSE.TERMS" in this distribution.
+
+-----------------------------------------------------------------*/
+
+
+#ifndef _INCLUDE__GEM_GEM_PIXCONVERT_H_
+#define _INCLUDE__GEM_GEM_PIXCONVERT_H_
+
+#include "Gem/Image.h"
+#include "Utils/SIMD.h"
+
+// use formulae from http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html#RTFToC30
+/*
+ * [Y] 1 [ 65.738 129.075 25.064 ] [R] [ 16]
+ * [U] = --- * [ -37.945 -74.494 112.439 ] * [G]+[128]
+ * [V] = 256 [ 112.439 -94.154 -18.285 ] [B] [128]
+ *
+ * [R] 1 [ 298.082 0.0 408.583 ] [Y] [ 16]
+ * [G] = --- * [ 298.082 -100.291 -208.120 ] * ([U]-[128])
+ * [B] = 256 [ 298.082 516.411 0.0 ] [V] [128]
+ */
+
+#define YUV_POYNTON
+// here comes something to be afraid of:
+// (probably it would be better to define the matrices as real constant-value matrices)
+// (instead of element-wise)
+
+#ifdef YUV_POYNTON
+# define Y_OFFSET 16
+# define UV_OFFSET 128
+
+// RGB2YUV
+// poynton-values rounded
+# define RGB2YUV_11 66
+# define RGB2YUV_12 129
+# define RGB2YUV_13 25
+# define RGB2YUV_21 -38
+# define RGB2YUV_22 -74
+# define RGB2YUV_23 112
+# define RGB2YUV_31 112
+# define RGB2YUV_32 -94
+# define RGB2YUV_33 -18
+
+// YUV2RGB
+// (we skip _21 and _31 as they are equal to _11)
+#if 0
+// poynton-values rounded
+# define YUV2RGB_11 298
+# define YUV2RGB_12 0
+# define YUV2RGB_13 409
+# define YUV2RGB_22 -100
+# define YUV2RGB_23 -208
+# define YUV2RGB_32 516
+# define YUV2RGB_33 0
+#else
+
+// this is round(256*inv(rgb2yuv/256))
+// so the general error should be smaller
+# define YUV2RGB_11 298
+# define YUV2RGB_12 -1
+# define YUV2RGB_13 409
+# define YUV2RGB_22 -100
+# define YUV2RGB_23 -210
+# define YUV2RGB_32 519
+# define YUV2RGB_33 0
+#endif
+
+#else
+/* the old ones: */
+# define Y_OFFSET 0
+# define UV_OFFSET 128
+// RGB2YUV
+# define RGB2YUV_11 77
+# define RGB2YUV_12 150
+# define RGB2YUV_13 29
+# define RGB2YUV_21 -43
+# define RGB2YUV_22 -85
+# define RGB2YUV_23 128
+# define RGB2YUV_31 128
+# define RGB2YUV_32 -107
+# define RGB2YUV_33 -21
+// YUV2RGB
+# define YUV2RGB_11 256
+# define YUV2RGB_12 0
+# define YUV2RGB_13 359
+# define YUV2RGB_22 -88
+# define YUV2RGB_23 -183
+# define YUV2RGB_32 454
+# define YUV2RGB_33 0
+
+#endif /* POYNTON */
+
+#if 0
+/* yuv-coefficients would also need an offset! */
+# define RGB2GRAY_RED RGB2YUV_11
+# define RGB2GRAY_GREEN RGB2YUV_12
+# define RGB2GRAY_BLUE RGB2YUV_13
+# define RGB2GRAY_OFFSET Y_OFFSET
+#else
+# define RGB2GRAY_RED 77
+# define RGB2GRAY_GREEN 150
+# define RGB2GRAY_BLUE 29
+# define RGB2GRAY_OFFSET 0
+#endif
+
+/* AltiVec */
+#ifdef __VEC__
+
+/* there are problems on OSX10.3 with older versions of gcc, since the intrinsic code
+ * below freely changes between signed and unsigned short vectors
+ * newer versions of gcc accept this...
+ * LATER: fix the code (GemPixConvertAltivec:750..800)
+ */
+# ifdef __GNUC__
+/* according to hcs it does NOT work with gcc-3.3
+ * for simplicity, i disable everything below gcc4
+ * JMZ: 20061114
+ */
+# if __GNUC__ < 4
+# warning disabling AltiVec for older gcc: please fix me
+# define NO_VECTORINT_TO_VECTORUNSIGNEDINT
+# endif
+# endif /* GNUC */
+
+
+ void RGB_to_YCbCr_altivec(const unsigned char *rgbdata, size_t RGB_size,
+ unsigned char *pixels);
+ void RGBA_to_YCbCr_altivec(const unsigned char *rgbadata, size_t RGBA_size,
+ unsigned char *pixels);
+ void BGR_to_YCbCr_altivec(const unsigned char *bgrdata, size_t BGR_size,
+ unsigned char *pixels);
+ void BGRA_to_YCbCr_altivec(const unsigned char *bgradata, size_t BGRA_size,
+ unsigned char *pixels);
+ void YUV422_to_BGRA_altivec(const unsigned char *yuvdata, size_t pixelnum,
+ unsigned char *pixels);
+ void YV12_to_YUV422_altivec(const short*Y, const short*U, const short*V,
+ unsigned char *data, int xsize, int ysize);
+# ifndef NO_VECTORINT_TO_VECTORUNSIGNEDINT
+ void YUV422_to_YV12_altivec(short*pY, short*pY2, short*pU, short*pV,
+ const unsigned char *gem_image, int xsize, int ysize);
+# endif
+#endif /* AltiVec */
+
+/* SSE2 */
+#ifdef __SSE2__
+void RGBA_to_UYVY_SSE2(const unsigned char *rgbadata,
+ size_t size,
+ unsigned char *yuvdata);
+void UYVY_to_RGBA_SSE2(const unsigned char *yuvdata,
+ size_t size,
+ unsigned char *rgbadata);
+void UYVY_to_RGB_SSE2(const unsigned char *yuvdata,
+ size_t size,
+ unsigned char *rgbadata);
+#endif /* SSE2 */
+
+/* in case somebody has an old machine... */
+#ifdef __MMX__
+
+#endif /* MMX */
+
+#endif /* _INCLUDE__GEM_GEM_PIXCONVERT_H_ */