if ( producer != NULL && transition != NULL )
{
+ char *name = mlt_properties_get( properties, "_unique_id" );
+ mlt_position position = mlt_properties_get_position( mlt_frame_properties( this ), name );
mlt_properties frame_properties = mlt_frame_properties( this );
+ mlt_producer_seek( producer, position );
+ mlt_frame_set_position( this, position );
mlt_properties_pass( mlt_producer_properties( producer ), properties, "producer." );
mlt_properties_pass( mlt_transition_properties( transition ), properties, "transition." );
mlt_service_get_frame( mlt_producer_service( producer ), &a_frame, 0 );
static mlt_frame filter_process( mlt_filter this, mlt_frame frame )
{
+ // Get the properties of the frame
+ mlt_properties properties = mlt_frame_properties( frame );
+
+ // Get a unique name to store the frame position
+ char *name = mlt_properties_get( mlt_filter_properties( this ), "_unique_id" );
+
+ // Assign the current position to the name
+ mlt_properties_set_position( properties, name, mlt_frame_get_position( frame ) );
+
// Push the frame filter
mlt_frame_push_service( frame, this );
mlt_frame_push_get_image( frame, filter_get_image );