X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fmodules%2Fcore%2Ftransition_composite.c;h=88c12225c556cf8300cb997bf4572a09a2433550;hb=e253fb0e1e231bcdc77bc37b05c7a9724dbe2bb1;hp=f8f78c96b98b4db68af8733bee27b738006b4d23;hpb=f9c7e4e64fe57451a17ef25a727c8d3387ee1737;p=melted diff --git a/src/modules/core/transition_composite.c b/src/modules/core/transition_composite.c index f8f78c9..88c1222 100644 --- a/src/modules/core/transition_composite.c +++ b/src/modules/core/transition_composite.c @@ -622,20 +622,34 @@ static int composite_yuv( uint8_t *p_dest, int width_dest, int height_dest, uint stride_dest *= step; int alpha_stride = stride_src / bpp; - if ( line_fn == NULL ) - line_fn = composite_line_yuv; - // now do the compositing only to cropped extents - for ( i = 0; i < height_src; i += step ) + if ( line_fn != NULL ) { - line_fn( p_dest, p_src, width_src, p_alpha, weight, p_luma, softness ); - - p_src += stride_src; - p_dest += stride_dest; - if ( p_alpha ) - p_alpha += alpha_stride; - if ( p_luma ) - p_luma += alpha_stride; + for ( i = 0; i < height_src; i += step ) + { + line_fn( p_dest, p_src, width_src, p_alpha, weight, p_luma, softness ); + + p_src += stride_src; + p_dest += stride_dest; + if ( p_alpha ) + p_alpha += alpha_stride; + if ( p_luma ) + p_luma += alpha_stride; + } + } + else + { + for ( i = 0; i < height_src; i += step ) + { + composite_line_yuv( p_dest, p_src, width_src, p_alpha, weight, p_luma, softness ); + + p_src += stride_src; + p_dest += stride_dest; + if ( p_alpha ) + p_alpha += alpha_stride; + if ( p_luma ) + p_luma += alpha_stride; + } } return ret; @@ -1019,7 +1033,7 @@ static int transition_get_image( mlt_frame a_frame, uint8_t **image, mlt_image_f int32_t luma_softness = mlt_properties_get_double( properties, "softness" ) * ( 1 << 16 ); uint16_t *luma_bitmap = get_luma( properties, width_b, height_b ); - composite_line_fn line_fn = mlt_properties_get_int( properties, "_MMX" ) ? composite_line_yuv_mmx : composite_line_yuv; + composite_line_fn line_fn = mlt_properties_get_int( properties, "_MMX" ) ? composite_line_yuv_mmx : NULL; for ( field = 0; field < ( progressive ? 1 : 2 ); field++ ) {