00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _MLT_FRAME_H_
00022 #define _MLT_FRAME_H_
00023
00024
00025 extern int mlt_convert_yuv422_to_rgb24a( uint8_t *yuv, uint8_t *rgba, unsigned int total );
00026 extern int mlt_convert_rgb24a_to_yuv422( uint8_t *rgba, int width, int height, int stride, uint8_t *yuv, uint8_t *alpha );
00027 extern int mlt_convert_rgb24_to_yuv422( uint8_t *rgb, int width, int height, int stride, uint8_t *yuv );
00028 extern int mlt_convert_bgr24a_to_yuv422( uint8_t *rgba, int width, int height, int stride, uint8_t *yuv, uint8_t *alpha );
00029 extern int mlt_convert_argb_to_yuv422( uint8_t *rgba, int width, int height, int stride, uint8_t *yuv, uint8_t *alpha );
00030 extern int mlt_convert_bgr24_to_yuv422( uint8_t *rgb, int width, int height, int stride, uint8_t *yuv );
00031 extern int mlt_convert_yuv420p_to_yuv422( uint8_t *yuv420p, int width, int height, int stride, uint8_t *yuv );
00032
00033
00034 #define RGB2YUV(r, g, b, y, u, v)\
00035 y = ((263*r + 516*g + 100*b) >> 10) + 16;\
00036 u = ((-152*r - 298*g + 450*b) >> 10) + 128;\
00037 v = ((450*r - 377*g - 73*b) >> 10) + 128;
00038
00039
00040 #define RGB2YUV_UNSCALED(r, g, b, y, u, v)\
00041 y = (299*r + 587*g + 114*b) >> 10;\
00042 u = ((-169*r - 331*g + 500*b) >> 10) + 128;\
00043 v = ((500*r - 419*g - 81*b) >> 10) + 128;\
00044 y = y < 16 ? 16 : y;\
00045 u = u < 16 ? 16 : u;\
00046 v = v < 16 ? 16 : v;\
00047 y = y > 235 ? 235 : y;\
00048 u = u > 240 ? 240 : u;\
00049 v = v > 240 ? 240 : v
00050
00051 #define YUV2RGB( y, u, v, r, g, b ) \
00052 r = ((1192 * ( y - 16 ) + 1634 * ( v - 128 ) ) >> 10 ); \
00053 g = ((1192 * ( y - 16 ) - 832 * ( v - 128 ) - 400 * ( u - 128 ) ) >> 10 ); \
00054 b = ((1192 * ( y - 16 ) + 2066 * ( u - 128 ) ) >> 10 ); \
00055 r = r < 0 ? 0 : r > 255 ? 255 : r; \
00056 g = g < 0 ? 0 : g > 255 ? 255 : g; \
00057 b = b < 0 ? 0 : b > 255 ? 255 : b;
00058
00059 #endif