- emit rendererPosition((int) m_mltConsumer->position());
- mlt_image_format format = mlt_image_rgb24a;
- int width = 0;
- int height = 0;
- const uchar* image = frame.get_image(format, width, height);
- QImage qimage(width, height, QImage::Format_ARGB32_Premultiplied);
- memcpy(qimage.scanLine(0), image, width * height * 4);
- emit showImageSignal(qimage);
- if (analyseAudio) showAudio(frame);
- if (sendFrameForAnalysis && frame.get_frame()->convert_image) {
- emit frameUpdated(qimage.rgbSwapped());
+ int currentPos = m_mltConsumer->position();
+ if (currentPos == requestedSeekPosition) requestedSeekPosition = SEEK_INACTIVE;
+ emit rendererPosition(currentPos);
+ if (frame.is_valid()) {
+ mlt_image_format format = mlt_image_rgb24a;
+ int width = 0;
+ int height = 0;
+ const uchar* image = frame.get_image(format, width, height);
+ QImage qimage(width, height, QImage::Format_ARGB32_Premultiplied);
+ memcpy(qimage.scanLine(0), image, width * height * 4);
+ emit showImageSignal(qimage);
+ if (analyseAudio) showAudio(frame);
+ if (sendFrameForAnalysis && frame.get_frame()->convert_image) {
+ emit frameUpdated(qimage.rgbSwapped());
+ }
+ }
+ emit checkSeeking();
+}
+
+void Render::slotCheckSeeking()
+{
+ if (requestedSeekPosition != SEEK_INACTIVE) {
+ kDebug()<<"// SEEKONG: "<<requestedSeekPosition;
+ m_mltProducer->seek(requestedSeekPosition);
+ //m_mltConsumer->purge();
+ if (m_mltProducer->get_speed() == 0) {
+ refresh();
+ }