Page MenuHome

Optim: new_movie skip file opening when duration is known. Delayed data load.
Needs ReviewPublic

Authored by Félix (Miadim) on Sep 28 2021, 1:16 PM.

Details

Summary
  • Created SEQ_MEDIA_NOT_LOADED flag.
  • SEQ_set_data_from_anim function.
  • Run SEQ_set_data_from_anim at render, prefetch and when selecting active sequence.

Diff Detail

Repository
rB Blender
Branch
optim_skip_anim_opening (branched from master)
Build Status
Buildable 17372
Build 17372: arc lint + arc unit

Event Timeline

Félix (Miadim) requested review of this revision.Sep 28 2021, 1:16 PM
Félix (Miadim) created this revision.

I will have to check this bit more in detail, I would expect to see SEQ_set_data_from_anim only in seq_render_movie_strip.

Also requiring duration for rna_Sequences_new_movie is quite bad idea I think, because how are you supposed to know what file duration is before it is added? Also people may not notice that this causes files to be not loaded and reading movie specific properties would result in incorrect values. This would be solved by calling SEQ_set_data_from_anim from RNA get/set functions though, but still. I would rather add boolean argument to skip file loading, so it has to be enabled explicitly.

source/blender/sequencer/intern/prefetch.c
173–181

I would imagine this to be not needed, will have to check why it is.

source/blender/sequencer/intern/strip_select.c
61–70

This code really seems out of place here. I think you did this so you can present properties in panel correct?

On one hand this is convinient centralized place to do so, but on the other I think it would be best to do in RNA via get/set functions for properties that need this

Also requiring duration for rna_Sequences_new_movie is quite bad idea I think, because how are you supposed to know what file duration is before it is added? Also people may not notice that this causes files to be not loaded and reading movie specific properties would result in incorrect values. This would be solved by calling SEQ_set_data_from_anim from RNA get/set functions though, but still. I would rather add boolean argument to skip file loading, so it has to be enabled explicitly.

duration isn't required, I made it optional in the case where you already know it, when you build an editing from a file for example.

I thought about a boolean, but to me it didn't make sense to skip_opening and not setting the duration. Because you end up with one frame files. And this boolean system requires you to know you must update duration after creation, which is not intuitive and source of mistakes.

source/blender/sequencer/intern/prefetch.c
173–181

This not needed, I made it there to load in background and not have lag while playing. I did it for comfort.

source/blender/sequencer/intern/strip_select.c
61–70

Exactly, I did it because testing through the UI I was confused by the Source panel displaying None for the resolution for example.

  • Fix: remove prefetch load data because was causing crashes with meta sequences and @Richard Antalik (ISS) said it shouldn't be there.
  • Fixed render crashes
  • Use prefetch to load data to avoid lag at shot change while playing
  • Fix: crash for missing stripdata