X-Git-Url: http://research.m1stereo.tv/gitweb?a=blobdiff_plain;f=src%2Fframework%2Fmlt_tractor.c;fp=src%2Fframework%2Fmlt_tractor.c;h=b319a048bce89593214407d8e6ce834f72c9ae19;hb=e6c03148e1dc3b0e363c9f304b3ed93fbc1a91a9;hp=ce678cfe6664dd3318052c42e56380db1d4400ab;hpb=9c7eb9d98a2a663e399feaef53c0eac46cf24989;p=melted diff --git a/src/framework/mlt_tractor.c b/src/framework/mlt_tractor.c index ce678cf..b319a04 100644 --- a/src/framework/mlt_tractor.c +++ b/src/framework/mlt_tractor.c @@ -28,6 +28,7 @@ #include #include #include +#include /** Forward references to static methods. */ @@ -252,6 +253,8 @@ static void destroy_data_queue( void *arg ) } /** Get the next frame. + + TODO: This function needs to be redesigned... */ static int producer_get_frame( mlt_producer parent, mlt_frame_ptr frame, int track ) @@ -408,10 +411,24 @@ static int producer_get_frame( mlt_producer parent, mlt_frame_ptr frame, int tra // Pick up first video and audio frames if ( !done && !mlt_frame_is_test_audio( temp ) && !( mlt_properties_get_int( temp_properties, "hide" ) & 2 ) ) + { + // Order of frame creation is starting to get problematic + if ( audio != NULL ) + { + mlt_deque_push_front( MLT_FRAME_AUDIO_STACK( temp ), producer_get_audio ); + mlt_deque_push_front( MLT_FRAME_AUDIO_STACK( temp ), audio ); + } audio = temp; + } if ( !done && !mlt_frame_is_test_card( temp ) && !( mlt_properties_get_int( temp_properties, "hide" ) & 1 ) ) + { + if ( video != NULL ) + { + mlt_deque_push_front( MLT_FRAME_IMAGE_STACK( temp ), producer_get_image ); + mlt_deque_push_front( MLT_FRAME_IMAGE_STACK( temp ), video ); + } video = temp; - + } } // Now stack callbacks