Shotcut won't render track (layer) directly above a track that was deleted then undid


#1

This happens to my personal project but since it looks too complex to submit a bug report, I have created a demo file to show it.

4 layers with different color images in each layer. When there are 3 images overlapping, it works just fine. However, when there are 4 images overlapping, the 4th one is not rendered.


#2

second image here to show it works for 3 layers


#3

I’m not reproducing this.
What version of Shotcut are you using?
What is the Blend mode for track V4?
Do you have any filters applied to any of those color clips?


#4

I have tested a few more times again. This bug happens under some circumstances which I am still unable to pin-point what it is. But it seems like to do with dragging the “open other” color image from the Source (Preview) window directly to the timeline. Anyway, I have attached the bug file.bug.mlt (8.9 KB)


#5

Nothing special, no filters, all layers are “over” blend mode. Using the latest Shotcut.
Here is the screenshot:


#6

No problem here. Works great… with my own MLT, I’ll try yours out here in a minute.


#7

I just deleted the white you had there, and created new source white.
Works.

Windows 10 Home, 64-bit


#8

I didn’t edit the MLT file manually. So that means Shotcut is able to create an error(s) to the MLT file which causes it to not render the image(s).


#9

Nothing was said about you editing anything.
I was not able to reproduce the same effect you had, although your mlt file did give me the same result.

Can you provide the steps you took in getting your source to the timeline?
What did you do to get the length of each clip?

It may help out the developers find the root cause and it can be addressed/fixed.

Also, what operating system are you using? This may also help out the developers.
This issue has been brought up before and I can’t remember how it was resolved.
When I find the forum post, I’ll put in this reply.


#10

Sorry, what I meant was there is probably something wrong with Shotcut to cause the error in the MLT file.

This bug happens occasionally. I am not able to find a exact way to reproduce it. But here is easiest way that sometimes be able to reproduce it.

  1. Create a color image using “Open Other”.
  2. Drag the image from the Source Window (Preview window) to the timeline. (This might also cause Shotcut to crash, another bug.)
  3. Repeat the same steps until there are 3/4 layers occupied by different color images.
  4. Try to scrub to the point(time) where they all overlaps.
  5. If this bug doesn’t happen, try deleting some of the images and re-adding it or add a few more color images by the steps described above

Please note that this bug is not limited to “dragging from source (preview) window” and “color images by open other” as this bug also happens to images(transparent) that are imported to the project where images above 3 / 4 layers do not render occasionally.


#11

The problem is not on line 41 of the XML. The problem is the order of the <transition>s with mlt_service = frei0r.cairoblend. The only way to remedy this is not to simply remove the white clip and add a new one. Rather - without editing the XML - is to remove track V5 and re-add a video track using either Add Video Track or Insert Track with V4 active/current (has gold background). Maybe some combination of remove or undo and insert tracks (as opposed to Add) may have caused this. If you find the sequence please share (details between steps 2 and 3).
bug - fixed.mlt (8.9 KB)

$ diff -u ~/Downloads/bug.mlt ~/Downloads/bug\ -\ fixed.mlt
--- /c/Users/ddennedy/Downloads/bug.mlt 2019-03-04 12:14:38.893510800 -0800
+++ "/c/Users/ddennedy/Downloads/bug - fixed.mlt"       2019-03-04 12:10:15.454401200 -0800
@@ -171,28 +171,28 @@
     </transition>
     <transition id="transition6">
       <property name="a_track">0</property>
-      <property name="b_track">5</property>
+      <property name="b_track">4</property>
       <property name="mlt_service">mix</property>
       <property name="always_active">1</property>
       <property name="sum">1</property>
     </transition>
     <transition id="transition7">
       <property name="a_track">1</property>
-      <property name="b_track">5</property>
+      <property name="b_track">4</property>
       <property name="version">0.9</property>
       <property name="mlt_service">frei0r.cairoblend</property>
       <property name="disable">0</property>
     </transition>
     <transition id="transition8">
       <property name="a_track">0</property>
-      <property name="b_track">4</property>
+      <property name="b_track">5</property>
       <property name="mlt_service">mix</property>
       <property name="always_active">1</property>
       <property name="sum">1</property>
     </transition>
     <transition id="transition9">
       <property name="a_track">1</property>
-      <property name="b_track">4</property>
+      <property name="b_track">5</property>
       <property name="version">0.9</property>
       <property name="mlt_service">frei0r.cairoblend</property>
     </transition>

#12

Thanks for replying. I have found a way to reproduce it and your guess is right.

  1. Add 3 or more tracks(layers) and add image or some sort to each of the tracks
  2. Select one of the middle track and remove it
  3. Undo it
  4. Scrub to point which images overlap
  5. The track above the “Undid” layer won’t render

Edit: Just renamed the title of the post to better describe the bug.


Track render order follows creation, not timeline order
#13

This is fixed for the next release v19.04.x