Filter presets with many keyframes don't save correctly

When I save a preset for a filter, only the first 32 keyframe positions for a filter parameter will be saved.

What is your operating system?
Windows 10

What is your Shotcut version (see Help > About Shotcut)? Is it 32-bit?
21.03.21

Can you repeat the problem? If so, what are the steps?
(Please be specific and use the names as seen in Shotcut, preferably English. Include a screenshot or screen recording if you can. Also, you can attach logs from either View > Application Log or right-click a job and choose View Log.)

Note that the problem may also be apparent using other methods, I’m just giving the specific method through which I produced the problem.

  1. Load two videos (preferably longer ones) to two seperate tracks.
  2. Add a size and position filter to the tracks they are on (not the video).
  3. Manually add keyframes to the size and position keyframe, using over 32 different keyframe positions.
  4. Save this as a preset.
  5. Attempt to load the preset into a new size and position filter on the second video.
  6. Observe that only the first 32 keyframe positions are saved.

Workaround
Copying and pasting filters works as expected.

Reproduced.
Windows 10
Shotcut 21.03.21

In my case, the preset saved the first 30 of 34 keyframes.

1 Like

Interesting, I would have expected the issue to be something along the lines of them only allocating a certain max-length when they saved presets, especially given the nice 2^6 length I had.

Possibly it’s related to string length when they store it as XML, as my clip was far longer than that (about 50 keyframes over 17 minutes) which would have upped the length of a string detailing all the info in plaintext (like how keyframe info is stored in the project files).

I’m curious to know why you need presets with so many keyframes.

I have a lot of custom presets, but they are for simple repetitive tasks like animated transitions for example. They require 2, 4, 6 or maybe 8 keyframes top.

There are occasions when I will use a lot of keyframes. When tracking an object for example. But those keyframes are only relevant to a specific object tracking a point on a specific video. Not worth saving since they can’t be used in any other situations.

A few weeks ago, I would have been glad to know that it could be done.

I was editing two parallel dialog tracks, and I needed the keyframes on two different tracks to be at exactly the same time points (even though the actions were opposite). I did it the tedious way, jumping to the next Keyframe, switching tracks, marking, going back… It took hours.

This would have saved me several hours of work… …if it stored ALL of the Keyframes.

I hear you.
Maybe you can try this next time:

  • Create a temporary track above your 2 other tracks
  • Create a 1 frame color clip that you keep in the Playlist. It will be used as markers
  • When you add a keyframe, paste the one-frame marker on the temporary track at the position of the keyframe.
  • Each time you add a new keyframe, add a marker.

When you’re done, navigate from marker to marker to add keyframes on the other clip.

Hopefully by then this bug will be fixed and I will just make a preset and apply it.

1 Like

I found the bug because I forgot that copying effects exists haha, but that doesn’t change the fact that it’s a pretty annoying bug

The limit is based on the number of bytes that the setting takes to store in the presets file - not the number of keyframes. That is why it varies somewhat from one test to another. The previous limit was 1024 bytes. I have increased it to 4096 bytes. So it is essentially 4 times larger now. This change will be in the next build.

2 Likes

That should be more than enough. Thanks @brian

While we are on the subject…
When we apply a preset, the name of that preset is displayed on the preset tab. But as soon as we do something else, like selecting another clip for example, then come back, the name of the preset in use in no longer visible.
It would be useful if the name of the preset applied stayed displayed.

1 Like

I can appreciate your request, but we will not make that change because the name of the preset that was last applied is not stored as part of the filter. We do not want a scenario where a filter parameter has been changed but a preset name is still showing. Contrary to your suggestion, I have thought about making the preset name clear after being applied in case the user changes a parameter after applying it.

1 Like

This has come up numerous times before. We could make a change so that preset is remembered and then cleared as soon as someone changes a parameter or keyframe. However, I already looked into it, and that would be a lot of work for something that is rarely kept at all preset values. Not for me; no, thanks. Much more interesting stuff to work on.

Also, this limitation is when reading the preset and not saving it. So, the preset files should be OK.

1 Like