mlt_properties frame_properties = MLT_FRAME_PROPERTIES(frame);
// Get the frame position
- mlt_position position = mlt_frame_get_position( frame );
+ mlt_position position = mlt_filter_get_position( filter, frame );
// Get the new image
int error = mlt_frame_get_image( frame, image, format, width, height, 1 );
boundry.f[3] = 1;
boundry.f[4] = 1;
mlt_geometry_insert(geometry, &boundry);
+ mlt_geometry_interpolate(geometry);
}
mlt_service_unlock( MLT_FILTER_SERVICE( filter ) );
// Because filter_obscure needs to be rewritten to use mlt_geometry
char geom[100];
- sprintf( geom, "%d,%d:%dx%d", (int)boundry.x, (int)boundry.y, (int)boundry.w, (int)boundry.h );
+ sprintf( geom, "%d/%d:%dx%d", (int)boundry.x, (int)boundry.y, (int)boundry.w, (int)boundry.h );
mlt_properties_set( MLT_FILTER_PROPERTIES( obscure ), "start", geom );
mlt_properties_set( MLT_FILTER_PROPERTIES( obscure ), "end", geom );
}
mlt_properties frame_properties = MLT_FRAME_PROPERTIES(frame);
// Get the frame position
- mlt_position position = mlt_frame_get_position( frame );
+ mlt_position position = mlt_filter_get_position( filter, frame );
mlt_service_lock( MLT_FILTER_SERVICE( filter ) );
item.mix = 100;
mlt_geometry_insert( geom, &item );
+ mlt_geometry_interpolate( geom );
mlt_properties_set_data( filter_properties, "filter_geometry", geom, 0, (mlt_destructor)mlt_geometry_close, (mlt_serialiser)mlt_geometry_serialise );
geometry = mlt_properties_get_data(filter_properties, "filter_geometry", NULL);
}
if( arg != NULL )
mlt_properties_set( MLT_FILTER_PROPERTIES( this ), "geometry", arg );
else
- mlt_properties_set( MLT_FILTER_PROPERTIES( this ), "geometry", "100,100:100x100" );
+ mlt_properties_set( MLT_FILTER_PROPERTIES( this ), "geometry", "100/100:100x100" );
// create an instance of the motion_est and obscure filter
mlt_filter motion_est = mlt_factory_filter( profile, "motion_est", NULL );