[Mlt-devel] mlt/src/framework mlt_frame.c,1.93,1.94 mlt_frame.h,1.30,1.31
Brought to you by:
ddennedy,
lilo_booter
From: Dan D. <dde...@us...> - 2006-05-22 00:59:52
|
Update of /cvsroot/mlt/mlt/src/framework In directory sc8-pr-cvs7.sourceforge.net:/tmp/cvs-serv25364/src/framework Modified Files: mlt_frame.c mlt_frame.h Log Message: apply patch from Jean Baptiste to add rgb24a support to producer_pixbuf Index: mlt_frame.c =================================================================== RCS file: /cvsroot/mlt/mlt/src/framework/mlt_frame.c,v retrieving revision 1.93 retrieving revision 1.94 diff -u -d -r1.93 -r1.94 --- mlt_frame.c 29 Mar 2006 11:17:52 -0000 1.93 +++ mlt_frame.c 22 May 2006 00:59:48 -0000 1.94 @@ -529,6 +529,41 @@ /***** convenience functions *****/ +int mlt_convert_yuv422_to_rgb24a( uint8_t *yuv, uint8_t *rgba, unsigned int total ) +{ + int ret = 0; + int yy, uu, vv, ug_plus_vg, ub, vr; + int r,g,b; + total /= 2; + while (total--) + { + yy = yuv[0] << 8; + uu = yuv[1] - 128; + vv = yuv[3] - 128; + ug_plus_vg = uu * 88 + vv * 183; + ub = uu * 454; + vr = vv * 359; + r = (yy + vr) >> 8; + g = (yy - ug_plus_vg) >> 8; + b = (yy + ub) >> 8; + rgba[0] = r < 0 ? 0 : (r > 255 ? 255 : (unsigned char)r); + rgba[1] = g < 0 ? 0 : (g > 255 ? 255 : (unsigned char)g); + rgba[2] = b < 0 ? 0 : (b > 255 ? 255 : (unsigned char)b); + rgba[3] = 255; + yy = yuv[2] << 8; + r = (yy + vr) >> 8; + g = (yy - ug_plus_vg) >> 8; + b = (yy + ub) >> 8; + rgba[4] = r < 0 ? 0 : (r > 255 ? 255 : (unsigned char)r); + rgba[5] = g < 0 ? 0 : (g > 255 ? 255 : (unsigned char)g); + rgba[6] = b < 0 ? 0 : (b > 255 ? 255 : (unsigned char)b); + rgba[7] = 255; + yuv += 4; + rgba += 8; + } + return ret; +} + int mlt_convert_rgb24a_to_yuv422( uint8_t *rgba, int width, int height, int stride, uint8_t *yuv, uint8_t *alpha ) { int ret = 0; Index: mlt_frame.h =================================================================== RCS file: /cvsroot/mlt/mlt/src/framework/mlt_frame.h,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- mlt_frame.h 29 Mar 2006 11:17:52 -0000 1.30 +++ mlt_frame.h 22 May 2006 00:59:48 -0000 1.31 @@ -74,6 +74,7 @@ extern void mlt_frame_close( mlt_frame self ); /* convenience functions */ +extern int mlt_convert_yuv422_to_rgb24a( uint8_t *yuv, uint8_t *rgba, unsigned int total ); extern int mlt_convert_rgb24a_to_yuv422( uint8_t *rgba, int width, int height, int stride, uint8_t *yuv, uint8_t *alpha ); extern int mlt_convert_rgb24_to_yuv422( uint8_t *rgb, int width, int height, int stride, uint8_t *yuv ); extern int mlt_convert_bgr24a_to_yuv422( uint8_t *rgba, int width, int height, int stride, uint8_t *yuv, uint8_t *alpha ); |