Page MenuHome

VSE movie strip previews
Needs ReviewPublic

Authored by Guillaume M (mathers) on Feb 28 2019, 2:23 PM.
Tokens
"Love" token, awarded by erickblender."Love" token, awarded by tintwotin."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.

Details

Summary

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

Repository
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...

source/blender/editors/space_sequencer/sequencer_draw.c
209

Nope AFAIK.
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...

270

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)

276

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.

source/blender/editors/space_sequencer/sequencer_draw.c
209

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