Page MenuHome

VSE movie strip previews
Needs ReviewPublic

Authored by Guillaume M (mathers) on Feb 28 2019, 2:23 PM.
"Like" token, awarded by mal_cando."Love" token, awarded by bachadam."Love" token, awarded by Funkster."Love" token, awarded by mon."Love" token, awarded by Okavango."Love" token, awarded by pablovazquez.



Adds previews to movie strips in the VSE. This is a draft revision so people can test it and comment on the code.

More changes are required, some memory is leaked and options should be added in the UI to enable/disable/document this feature.

How to use : add a movie strip, and generate a 25% proxy. The previews should appear when the proxy is fully generated.

Original proposan

Based on revision 9d34a9d

Diff Detail

rB Blender

Event Timeline

This is by far the most important criteria i had when i was choosing the NLE editor for linux. I thought this would never get a mention in Blender and i didn't even bother to make a suggestion, you proved me wrong. Tremendous upgrade!

Tried to push the same thing to kdenlive guys, but they don't seem to grasp the importance of this...


See T54395

I wrote some quick and dirty get_rect in source/blender/imbuf/intern/anim_movie.c but it can get more complex, the more you realize capabilities of codec.

But we should have this at least in basic version...


I guess, that's how mafia works...

you may want to look at D3597 for seq_proxy_fetch

Not sure if that will be helpful, but it worked for me (no leaks)


I see, what you did there...

In final version I would maybe suggest using seq_render_strip and approach like in D4219.
That is have bool use_fallback_render(default true) in SeqRenderData, set it to false meaning, that you don't want to render original image when proxy is not found.


I may provide as well...

It was as simple as

void IMB_anim_get_rect(struct anim *anim, int *x, int *y)
	*x = anim->x;
	*y = anim->y;

Problem is, that anim struct is redefined in sequencer, so compiler can't access its members...
you can define it in anim_movie.c and it will work

I might take a look at this over the weekend - @Guillaume M (mathers) and @Richard Antalik (ISS), would you have any pointers for do's and dont's, with regards the new caching system changes?

I might take a look at this over the weekend - @Guillaume M (mathers) and @Richard Antalik (ISS), would you have any pointers for do's and dont's, with regards the new caching system changes?

I can't really comment on the cache changes, but on the strip previews : (I don't know how familiar you are with the VSE code, so these may be obvious)

  • When the height of the strip is very small, you probably want to set a limit on how many images are displayed (in the worst case, you would have many 1px images)
  • Make sure the set of rendered frames changes as little as possible (when moving the clip or changing its length) to take advantage of cache
  • Allow the user to enable/disable previews
  • There are many many papercut improvements to make on the VSE, keep the diff focused on strip previews only, and have separate diffs for seperate issues