X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fframework%2Fmlt_multitrack.c;h=d274dbcd5609ea6456cd38e54347c0ec80b8b137;hb=2e467c2eeba2b51aecddda21d4bb97bef4cd1459;hp=a54a695973c67177de749aac6c6584496f8c5604;hpb=8625d866c32e8dd10c58c10b383d26d4d23aab32;p=melted diff --git a/src/framework/mlt_multitrack.c b/src/framework/mlt_multitrack.c index a54a695..d274dbc 100644 --- a/src/framework/mlt_multitrack.c +++ b/src/framework/mlt_multitrack.c @@ -136,7 +136,7 @@ void mlt_multitrack_refresh( mlt_multitrack this ) mlt_properties_set( mlt_producer_properties( producer ), "eof", "continue" ); // Determine the longest length - if ( !mlt_properties_get_int( mlt_producer_properties( producer ), "hide" ) ) + //if ( !mlt_properties_get_int( mlt_producer_properties( producer ), "hide" ) ) length = mlt_producer_get_playtime( producer ) > length ? mlt_producer_get_playtime( producer ) : length; // Handle fps @@ -391,28 +391,32 @@ static int producer_get_frame( mlt_producer parent, mlt_frame_ptr frame, int ind // 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 = mlt_producer_cut_parent( this->list[ index ]->producer ); + mlt_producer producer = this->list[ index ]->producer; + + // Get the track hide property + int hide = mlt_properties_get_int( mlt_producer_properties( mlt_producer_cut_parent( producer ) ), "hide" ); // Obtain the current position mlt_position position = mlt_producer_frame( parent ); + // Get the parent properties + mlt_properties producer_properties = mlt_producer_properties( parent ); + + // Get the speed + double speed = mlt_properties_get_double( producer_properties, "_speed" ); + // Make sure we're at the same point - mlt_producer_seek( producer, in + position ); + mlt_producer_seek( producer, position ); // Get the frame from the producer mlt_service_get_frame( mlt_producer_service( producer ), frame, 0 ); // Indicate speed of this producer - mlt_properties producer_properties = mlt_producer_properties( parent ); - 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" ) ); + mlt_properties_set_int( properties, "hide", hide ); } else { @@ -431,9 +435,6 @@ static int producer_get_frame( mlt_producer parent, mlt_frame_ptr frame, int ind // Move to the next frame mlt_producer_prepare_next( parent ); } - - // Refresh our stats - //mlt_multitrack_refresh( this ); } return 0;