The Titler Revamp – The QML MLT Producer is testing ready
The last time I blogged about the Titler, I promised that the next update would be when we have some sort of a backend ready – and I'm happy to announce now that now we have some sort of a backend ready!
The QML MLT Producer
Testing
Find my MLT fork here
Let us try to run it! Starting with something simple – take a sample QML file: test.qml
With the content:
import QtQuick 2.0
Item {
Rectangle {
id: rectangle
x:0
y: 0
width: 155
height: 160
color: "#5cd037"
}
}
After you have done building, run: melt qml:test.qml
, we get:

and voila!
Which we can confirm (from running qmlscene
on command line or from the Qt Designer Studio) which looks similar

And we can have images with fancier text and images, like this one I recently tried creating

Although it's not at animations yet, this works well enough for our initial testing.
A brief explanation
qml_wrapper
files handle the generation of the rendered images.
In order to render images, this file makes use of QmlRenderer which has endpoints to render a QML file into a given QImage.
producer_qml.cpp
is the main producer file.
When melt qml:test.qml
is run, the registered producer (in this case, qml
) is queried and initialised, and then a QApplication window with the rendered frames is launched and played ( which is what we see )
I refactored a lot of code in the QmlRenderer library comparing it with the code in the last blog post, for the convenience of the producer. For starters, only one method needs to be called for rendering now – render(&image)
. The constructor takes cares of the input file and other params (height, width, format) are fed in by the &image
param.
What's Next?
Test this producer in Kdenlive and see if we can play qml
files in Kdenlive. So far, there are some issues with mishandling multiple OpenGL contexts and threading, which we are looking into right now. And if that goes well, we can then start worrying about the interface. We will let you know how it goes!
Will we have the new Titler for 20.04?
We don't know yet. If the producer integration goes without major hiccups, 20.04 might or might not be a feasible deadline but we hope for the best.