Thread: [Mlt-devel] mlt/src/modules/sdl consumer_sdl.c,1.97,1.98
Brought to you by:
ddennedy,
lilo_booter
From: Charles Y. <lil...@us...> - 2005-10-25 07:27:10
|
Update of /cvsroot/mlt/mlt/src/modules/sdl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv6213/src/modules/sdl Modified Files: consumer_sdl.c Log Message: src/modules/core/consumer_null.c src/modules/sdl/consumer_sdl.c + Terminate on pause functionality src/modules/motion_est/filter_autotrack_rectangle.c + Ensures that tracked area remains valid (out of bounds was causing core dumps) ? Currently, width/height is preserved on boundaries, but maybe it should shrink/grow? Index: consumer_sdl.c =================================================================== RCS file: /cvsroot/mlt/mlt/src/modules/sdl/consumer_sdl.c,v retrieving revision 1.97 retrieving revision 1.98 diff -u -d -r1.97 -r1.98 --- consumer_sdl.c 13 Oct 2005 08:04:10 -0000 1.97 +++ consumer_sdl.c 25 Oct 2005 07:26:52 -0000 1.98 @@ -683,6 +683,10 @@ // Get the consumer mlt_consumer consumer = &this->parent; + // Convenience functionality + int terminate_on_pause = mlt_properties_get_int( MLT_CONSUMER_PROPERTIES( consumer ), "terminate_on_pause" ); + int terminated = 0; + // Video thread pthread_t thread; @@ -696,11 +700,15 @@ struct timespec tm = { 0, 100000 }; // Loop until told not to - while( this->running ) + while( !terminated && this->running ) { // Get a frame from the attached producer frame = mlt_consumer_rt_frame( consumer ); + // Check for termination + if ( terminate_on_pause && frame != NULL ) + terminated = mlt_properties_get_double( MLT_FRAME_PROPERTIES( frame ), "_speed" ) == 0.0; + // Ensure that we have a frame if ( frame != NULL ) { @@ -737,6 +745,8 @@ } } + this->running = 0; + // Kill the video thread if ( init_video == 0 ) { |