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;
// Get the image from the a frame
mlt_frame_get_image( a_frame, image, format, width, height, 1 );
+ // Get the properties from the transition
+ mlt_properties properties = mlt_transition_properties( this );
+
if ( b_frame != NULL )
{
// Get the properties of the a frame
// Get the properties of the b frame
mlt_properties b_props = mlt_frame_properties( b_frame );
- // Get the properties from the transition
- mlt_properties properties = mlt_transition_properties( this );
-
// Structures for geometry
struct geometry_s result;
// Optimisation - no compositing required
if ( result.mix == 0 || ( result.w == 0 && result.h == 0 ) )
+ {
+ mlt_properties_set_data( properties, "geometries", NULL, 0, NULL, NULL );
return 0;
+ }
// Since we are the consumer of the b_frame, we must pass along these
// consumer properties from the a_frame
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;
+ composite_line_fn line_fn = NULL;
for ( field = 0; field < ( progressive ? 1 : 2 ); field++ )
{
}
}
+ // Force geometries to be recalculated
+ mlt_properties_set_data( properties, "geometries", NULL, 0, NULL, NULL );
+
return 0;
}