Crash with transform filter
rafallalik at gmail.com
Sun Jul 5 22:15:31 BST 2020
I have a weird problem with transform filter. After applying it to an
image, the playback causes abortion of kdenlive. i am able track the
problem back to mlt.
MWE is a project with still image (jpg).
1. Add an image to the track
2. Add transform effect
3. Try to play the clip in the timeline.
For me the kdenlive crashes every time.
I tried that with 20.04.2 and the git master. My mlt is 6.20.0.
From what I was able to find is that the QPainter in filter_qblend.cpp
receives at some point width,height = 0,0, and QPainter fails with error:
QPainter::begin: Paint device returned engine == 0, type: 3
QPainter::setCompositionMode: Painter not active
QPainter::setRenderHint: Painter must be active to set rendering hints
QPainter::setWorldTransform: Painter not active
QPainter::setOpacity: Painter not active
QPainter::end: Painter not active, aborted
in this code (I added my comments to highlight problematic places):
uint8_t *dest_image = NULL;
dest_image = (uint8_t *) mlt_pool_alloc( image_size );
// width, height here is (sometimes) 0,0
convert_mlt_to_qimage_rgba( dest_image, &destImage, *width, *height );
// destImage has size of 0x0
destImage.fill( mlt_properties_get_int( properties, "background_color" ) );
QPainter painter( &destImage );
painter.setCompositionMode( ( QPainter::CompositionMode )
mlt_properties_get_int( properties, "compositing" ) );
painter.setRenderHints( QPainter::Antialiasing |
// painter breaks after trying painting on image 0x0
painter.drawImage(0, 0, sourceImage);
what is followed with bad image in destImage and an assertion fail from
following code inside:
convert_qimage_to_mlt_rgba( &destImage, dest_image, *width, *height );
ASSERT: "mImg == qImg->constBits()" in file common.cpp, line 63
I was not able to find why width,height are equal to 0,0
Do you have any idea how to trace back the problem to its source?
More information about the kdenlive