[Ffmpeg-cvslog] r6842 - trunk/vhook/drawtext.c

diego subversion
Mon Oct 30 20:17:51 CET 2006


Author: diego
Date: Mon Oct 30 20:17:51 2006
New Revision: 6842

Modified:
   trunk/vhook/drawtext.c

Log:
Use fixed point in color conversion.
patch by Gustavo Sverzut Barbieri, barbieri gmail com


Modified: trunk/vhook/drawtext.c
==============================================================================
--- trunk/vhook/drawtext.c	(original)
+++ trunk/vhook/drawtext.c	Mon Oct 30 20:17:51 2006
@@ -61,11 +61,15 @@
 #include FT_FREETYPE_H
 #include FT_GLYPH_H
 
-#define RGB_TO_YUV(rgb_color, yuv_color) { \
-    yuv_color[0] = ( 0.257 * rgb_color[0]) + (0.504 * rgb_color[1]) + (0.098 * rgb_color[2]) +  16; \
-    yuv_color[2] = ( 0.439 * rgb_color[0]) - (0.368 * rgb_color[1]) - (0.071 * rgb_color[2]) + 128; \
-    yuv_color[1] = (-0.148 * rgb_color[0]) - (0.291 * rgb_color[1]) + (0.439 * rgb_color[2]) + 128; \
-}
+#define SCALEBITS 10
+#define ONE_HALF  (1 << (SCALEBITS - 1))
+#define FIX(x)    ((int) ((x) * (1<<SCALEBITS) + 0.5))
+
+#define RGB_TO_YUV(rgb_color, yuv_color) do { \
+  yuv_color[0] = (FIX(0.29900)    * rgb_color[0] + FIX(0.58700) * rgb_color[1] + FIX(0.11400) * rgb_color[2] + ONE_HALF) >> SCALEBITS; \
+  yuv_color[2] = ((FIX(0.50000)   * rgb_color[0] - FIX(0.41869) * rgb_color[1] - FIX(0.08131) * rgb_color[2] + ONE_HALF - 1) >> SCALEBITS) + 128; \
+  yuv_color[1] = ((- FIX(0.16874) * rgb_color[0] - FIX(0.33126) * rgb_color[1] + FIX(0.50000) * rgb_color[2] + ONE_HALF - 1) >> SCALEBITS) + 128; \
+} while (0)
 
 #define COPY_3(dst,src) { \
     dst[0]=src[0]; \




More information about the ffmpeg-cvslog mailing list