[Mlt-devel] mlt/src/framework mlt_frame.c,1.92,1.93 mlt_frame.h,1.29,1.30
Brought to you by:
ddennedy,
lilo_booter
From: Charles Y. <lil...@us...> - 2006-03-29 11:18:07
|
Update of /cvsroot/mlt/mlt/src/framework In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv14935/src/framework Modified Files: mlt_frame.c mlt_frame.h Log Message: + Sigh - big endian issues on ppc based macs Index: mlt_frame.c =================================================================== RCS file: /cvsroot/mlt/mlt/src/framework/mlt_frame.c,v retrieving revision 1.92 retrieving revision 1.93 diff -u -d -r1.92 -r1.93 --- mlt_frame.c 29 Mar 2006 08:30:01 -0000 1.92 +++ mlt_frame.c 29 Mar 2006 11:17:52 -0000 1.93 @@ -691,6 +691,48 @@ return ret; } +int mlt_convert_argb_to_yuv422( uint8_t *rgba, int width, int height, int stride, uint8_t *yuv, uint8_t *alpha ) +{ + int ret = 0; + register int y0, y1, u0, u1, v0, v1; + register int r, g, b; + register uint8_t *d = yuv; + register int i, j; + + for ( i = 0; i < height; i++ ) + { + register uint8_t *s = rgba + ( stride * i ); + for ( j = 0; j < ( width / 2 ); j++ ) + { + *alpha++ = *s++; + r = *s++; + g = *s++; + b = *s++; + RGB2YUV (r, g, b, y0, u0 , v0); + *alpha++ = *s++; + r = *s++; + g = *s++; + b = *s++; + RGB2YUV (r, g, b, y1, u1 , v1); + *d++ = y0; + *d++ = (u0+u1) >> 1; + *d++ = y1; + *d++ = (v0+v1) >> 1; + } + if ( width % 2 ) + { + *alpha++ = *s++; + r = *s++; + g = *s++; + b = *s++; + RGB2YUV (r, g, b, y0, u0 , v0); + *d++ = y0; + *d++ = u0; + } + } + return ret; +} + int mlt_convert_yuv420p_to_yuv422( uint8_t *yuv420p, int width, int height, int stride, uint8_t *yuv ) { int ret = 0; Index: mlt_frame.h =================================================================== RCS file: /cvsroot/mlt/mlt/src/framework/mlt_frame.h,v retrieving revision 1.29 retrieving revision 1.30 diff -u -d -r1.29 -r1.30 --- mlt_frame.h 29 Mar 2006 08:30:01 -0000 1.29 +++ mlt_frame.h 29 Mar 2006 11:17:52 -0000 1.30 @@ -77,6 +77,7 @@ 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 ); +extern int mlt_convert_argb_to_yuv422( uint8_t *rgba, int width, int height, int stride, uint8_t *yuv, uint8_t *alpha ); extern int mlt_convert_bgr24_to_yuv422( uint8_t *rgb, int width, int height, int stride, uint8_t *yuv ); extern int mlt_convert_yuv420p_to_yuv422( uint8_t *yuv420p, int width, int height, int stride, uint8_t *yuv ); extern uint8_t *mlt_frame_resize_yuv422( mlt_frame self, int owidth, int oheight ); |