// Check if we have a track for this index
if ( index < this->count && this->list[ index ] != NULL )
{
+ // Determine the in point
+ int in = mlt_producer_is_cut( this->list[ index ]->producer ) ? mlt_producer_get_in( this->list[ index ]->producer ) : 0;
+
// Get the producer for this track
- mlt_producer producer = this->list[ index ]->producer;
+ mlt_producer producer = mlt_producer_cut_parent( this->list[ index ]->producer );
// Obtain the current position
mlt_position position = mlt_producer_frame( parent );
// Make sure we're at the same point
- mlt_producer_seek( producer, position );
+ mlt_producer_seek( producer, in + position );
// Get the frame from the producer
mlt_service_get_frame( mlt_producer_service( producer ), frame, 0 );
double speed = mlt_properties_get_double( producer_properties, "_speed" );
mlt_properties properties = mlt_frame_properties( *frame );
mlt_properties_set_double( properties, "_speed", speed );
+ mlt_properties_set_position( properties, "_position", position );
mlt_properties_set_int( properties, "hide", mlt_properties_get_int( mlt_producer_properties( producer ), "hide" ) );
}
else