Commit 95b09624 authored by Gustavo Sverzut Barbieri's avatar Gustavo Sverzut Barbieri Committed by Diego Biurrun

Use fixed point in color conversion.

patch by Gustavo Sverzut Barbieri, barbieri gmail com

Originally committed as revision 6842 to svn://svn.ffmpeg.org/ffmpeg/trunk
parent e3893992
...@@ -61,11 +61,15 @@ ...@@ -61,11 +61,15 @@
#include FT_FREETYPE_H #include FT_FREETYPE_H
#include FT_GLYPH_H #include FT_GLYPH_H
#define RGB_TO_YUV(rgb_color, yuv_color) { \ #define SCALEBITS 10
yuv_color[0] = ( 0.257 * rgb_color[0]) + (0.504 * rgb_color[1]) + (0.098 * rgb_color[2]) + 16; \ #define ONE_HALF (1 << (SCALEBITS - 1))
yuv_color[2] = ( 0.439 * rgb_color[0]) - (0.368 * rgb_color[1]) - (0.071 * rgb_color[2]) + 128; \ #define FIX(x) ((int) ((x) * (1<<SCALEBITS) + 0.5))
yuv_color[1] = (-0.148 * rgb_color[0]) - (0.291 * rgb_color[1]) + (0.439 * rgb_color[2]) + 128; \
} #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) { \ #define COPY_3(dst,src) { \
dst[0]=src[0]; \ dst[0]=src[0]; \
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment