https://bugs.kde.org/show_bug.cgi?id=384764
--- Comment #7 from mikko.rap...@iki.fi --- Running with my old pet peeve where I remove the caching and frame dropping from kdenlive rendering, since on these old machines I get better performance that way: diff --git a/src/renderer.cpp b/src/renderer.cpp index e839d10b0..5b87caec9 100644 --- a/src/renderer.cpp +++ b/src/renderer.cpp @@ -754,9 +754,12 @@ void Render::switchPlay(bool play, double speed) m_mltProducer->seek(0); } if (m_mltConsumer->get_int("real_time") != m_qmlView->realTime()) { - m_mltConsumer->set("real_time", m_qmlView->realTime()); - m_mltConsumer->set("buffer", 25); - m_mltConsumer->set("prefill", 1); + //m_mltConsumer->set("real_time", m_qmlView->realTime()); + m_mltConsumer->set("buffer", 0); + m_mltConsumer->set("prefill", 0); + // try to avoid fps drop in preview: + m_mltConsumer->set("drop_max", 1); + m_mltConsumer->set("real_time", 0); // Changes to real_time require a consumer restart if running. if (!m_mltConsumer->is_stopped()) { m_mltConsumer->stop(); @@ -771,7 +774,7 @@ void Render::switchPlay(bool play, double speed) } m_mltProducer->set_speed(speed); } else { - m_mltConsumer->set("real_time", -1); + m_mltConsumer->set("real_time", 0); m_mltConsumer->set("buffer", 0); m_mltConsumer->set("prefill", 0); m_mltProducer->set_speed(0.0); @@ -794,9 +797,12 @@ void Render::play(double speed) resetZoneMode(); } if (speed != 0 && m_mltConsumer->get_int("real_time") != m_qmlView->realTime()) { - m_mltConsumer->set("real_time", m_qmlView->realTime()); - m_mltConsumer->set("buffer", 25); - m_mltConsumer->set("prefill", 1); + //m_mltConsumer->set("real_time", m_qmlView->realTime()); + m_mltConsumer->set("buffer", 0); + m_mltConsumer->set("prefill", 0); + // try to avoid fps drop in preview: + m_mltConsumer->set("drop_max", 0); + m_mltConsumer->set("real_time", 0); // Changes to real_time require a consumer restart if running. if (!m_mltConsumer->is_stopped()) { m_mltConsumer->stop(); @@ -926,7 +932,7 @@ void Render::setDropFrames(bool drop) dropFrames = -dropFrames; } //m_mltConsumer->stop(); - m_mltConsumer->set("real_time", dropFrames); + //m_mltConsumer->set("real_time", dropFrames); if (m_mltConsumer->start() == -1) { qCWarning(KDENLIVE_LOG) << "ERROR, Cannot start monitor"; } This is slightly better at around 10 fps in 1080p25 mode when previewing proxy clips, but there is a quite easily triggered crash where stack trace actually shows that the frame was rendered in 1080 format from proxy clip which is 640x360: Thread 12 "FrameRenderer" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fe3be453700 (LWP 18154)] #0 0x00007fe41cba1ee3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 No symbol table info available. #1 0x00007fe41cbbf99e in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 No symbol table info available. #2 0x00007fe41cbf9c26 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 No symbol table info available. #3 0x00007fe41cc004bf in QRasterPaintEngine::drawImage(QPointF const&, QImage const&) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 No symbol table info available. #4 0x00007fe41cc1d8af in QPainter::drawImage(QPointF const&, QImage const&) () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5 No symbol table info available. #5 0x00007fe3d2f8a979 in QPainter::drawImage (flags=..., sh=-1, sw=-1, sy=0, sx=0, image=..., y=0, x=0, this=0x7fe3be452428) at /usr/include/x86_64-linux-gnu/qt5/QtGui/qpainter.h:858 sy = 0 sw = -1 image = @0x7fe3be452460: <incomplete type> y = 0 this = 0x7fe3be452428 sx = 0 sh = -1 x = 0 #6 get_image (a_frame=a_frame@entry=0x7fe3a8014170, image=image@entry=0x7fe3be452650, format=format@entry=0x7fe3be45269c, width=width@entry=0x7fe3be452694, height=height@entry=0x7fe3be452698, writable=writable@entry=0) at transition_qtblend.cpp:190 error = <optimized out> b_frame = <optimized out> b_properties = <optimized out> properties = 0x7fe3a8014170 transition_properties = <optimized out> b_image = 0x7fe3907f9020 "13N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066Q\377\063\066Q\377\063\066Q\377\065\070T\377\065\070T\377"... hasAlpha = <optimized out> opacity = 1 b_width = 1920 b_height = 1080 transform = {affine = {_m11 = 1, _m12 = 0, _m21 = 0, _m22 = 1, _dx = 0, _dy = 0}, m_13 = 0, m_23 = 0, m_33 = 1, m_type = 0, m_dirty = 0, d = 0x0} rect = {x = <optimized out>, y = <optimized out>, w = <optimized out>, h = -1, o = <optimized out>} length = <optimized out> position = <optimized out> profile = <optimized out> normalised_width = 1920 normalised_height = 1080 output_ar = <optimized out> interps = <optimized out> image_size = 0 a_image = 0x7fe3867fd020 "" hqPainting = false bottomImg = <incomplete type> topImg = <incomplete type> painter = {static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x7fe41cd6eca0, data = 0x7fe41cd6ebe0, static_metacall = 0x0, relatedMetaObjects = 0x0, extradata = 0x0}}, d_ptr = {d = 0x7fe3b000dde0}} #7 0x00007fe426311c87 in mlt_frame_get_image (self=self@entry=0x7fe3a8014170, buffer=buffer@entry=0x7fe3be452650, format=format@entry=0x7fe3be45269c, width=width@entry=0x7fe3be452694, height=height@entry=0x7fe3be452698, writable=writable@entry=0) at mlt_frame.c:585 properties = 0x7fe3a8014170 get_image = 0x7fe3d2f8a5c0 <get_image(mlt_frame, uint8_t**, mlt_image_format*, int*, int*, int)> requested_format = <optimized out> error = 0 #8 0x00007fe426327cc9 in producer_get_image (self=self@entry=0x7fe3a8149cf0, buffer=buffer@entry=0x7fe3be452650, format=format@entry=0x7fe3be45269c, width=width@entry=0x7fe3be452694, height=height@entry=0x7fe3be452698, writable=writable@entry=0) at mlt_tractor.c:370 data = 0x0 size = 0 properties = 0x7fe3a8149cf0 frame = 0x7fe3a8014170 frame_properties = 0x7fe3a8014170 #9 0x00007fe426311c87 in mlt_frame_get_image (self=0x7fe3a8149cf0, buffer=buffer@entry=0x7fe3be452650, format=format@entry=0x7fe3be45269c, width=width@entry=0x7fe3be452694, height=height@entry=0x7fe3be452698, writable=writable@entry=0) at mlt_frame.c:585 properties = 0x7fe3a8149cf0 get_image = 0x7fe426327b60 <producer_get_image> requested_format = <optimized out> error = 0 #10 0x00007fe4260f774b in Mlt::Frame::get_image ( this=this@entry=0x7fe3be452700, format=@0x7fe3be45269c: mlt_image_rgb24a, format@entry=@0x7fe3be45269c: mlt_image_yuv420p, w=@0x7fe3be452694: 1920, w@entry=@0x7fe3be452694: 0, h=@0x7fe3be452698: 1080, h@entry=@0x7fe3be452698: 0, writable=writable@entry=0) at MltFrame.cpp:83 image = 0x7fe3b000d7e0 "13N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\061\063N\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066P\377\063\066Q\377\063\066Q\377\063\066Q\377\065\070T\377\065\070T\377"... #11 0x000055599248f095 in FrameRenderer::showFrame ( this=this@entry=0x555995539e60, frame=...) at ./src/monitor/glwidget.cpp:1323 width = 1920 height = 1080 format = mlt_image_rgb24a #12 0x00005559925fe53c in FrameRenderer::qt_static_metacall ( _o=0x555995539e60, _id=<optimized out>, _a=<optimized out>, _c=<optimized out>) at ./obj-x86_64-linux-gnu/src/kdenlive_autogen/T5U2TTTZLX/moc_glwidget.cpp:772 _t = 0x555995539e60 #13 0x00007fe41c40f3d2 in QObject::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #14 0x00007fe41fbcd46c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 No symbol table info available. #15 0x00007fe41fbd4d34 in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 No symbol table info available. #16 0x00007fe41c3dfd68 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #17 0x00007fe41c3e24dd in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #18 0x00007fe41c438dd3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #19 0x00007fe415594f67 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 No symbol table info available. #20 0x00007fe4155951a0 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 No symbol table info available. #21 0x00007fe41559522c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 No symbol table info available. #22 0x00007fe41c4383ff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #23 0x00007fe41c3dddba in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #24 0x00007fe41c1fd3ca in QThread::exec() () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #25 0x00007fe41c20229d in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 No symbol table info available. #26 0x00007fe4187e1494 in start_thread (arg=0x7fe3be453700) at pthread_create.c:333 __res = <optimized out> pd = 0x7fe3be453700 now = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140616126510848, 780787169714677039, 0, 140733228324927, 0, 140617891983424, -787402878124382929, -784231928223193809}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0, cleanup = 0x0, canceltype = 0}}} not_first_call = <optimized out> pagesize_m1 = <optimized out> sp = <optimized out> freesize = <optimized out> __PRETTY_FUNCTION__ = "start_thread" #27 0x00007fe41b607abf in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:97 So, would be really nice that for preview, the rendering resolution would be the render window size and not the full project profile which then needs to be downscaled to the small preview screen. The scaling for proxy clips is now done twice: once by mlt to render 640x to 1080x and then by the viewer to downscale 1080x to what ever 300x is the size of preview. -- You are receiving this mail because: You are watching all bug changes.