In other messages I've inquired about the 'flash' or missing frames at
the end of clip/zone/project playback. I've traced it to
consumer_sdl.c. this->running is set to 0 BEFORE the last frames of a
list have been displayed. The slower the processor the more this is
apparent.
set breakpoint on 660 with the condition that this->running = 0
set a breakpoint on 793.
use this in renderer.cpp
static void consumer_frame_show(mlt_consumer, Render * self, mlt_frame
frame_ptr)
{
// detect if the producer has finished playing. Is there a better
way to do it?
if (self->m_isBlocked) return;
Mlt::Frame frame(frame_ptr);
#ifdef Q_WS_MAC
self->showFrame(frame);
#endif
int i = mlt_frame_get_position(frame_ptr);
self->emitFrameNumber(i);
if (frame.get_double("_speed") == 0.0) {
kDebug() << " AKAK stop: speed 0 pos: " << i;
self->emitConsumerStopped();
} else if (frame.get_double("_speed") < 0.0 && i <= 0) {
kDebug() << " AKAK stop: speed < 0 pos: "<< i;
self->pause();
self->emitConsumerStopped();
} else kDebug() << " AKAK pos " << i; // use this to see that the
next-to-last frame or more is always dropped
}
you will see that 793 is hit and sets running=0 before the last of the
queue is displayed, dumping the display loop out at line 515.
( I hope I got those line numbers right, it's been a long 22 hours....)
Al Kirk
------------------------------------------------------------------------------
Throughout its 18-year history, RSA Conference consistently attracts the
world's best and brightest in the field, creating opportunities for Conference
attendees to learn about information security's most important issues through
interactions with peers, luminaries and emerging and established companies.
http://p.sf.net/sfu/rsaconf-dev2dev
_______________________________________________
Kdenlive-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/kdenlive-devel