56 if (cur->
seq1 == seq || cur->
seq2 == seq || cur->
seq3 == seq) {
86 for (cur = seqbase->
first; cur; cur = cur->
next) {
111 bool invalidate_self,
112 int invalidate_types)
116 if (invalidate_self) {
136 if (meta_seq ==
NULL) {
151 if (seq == invalidated_seq && meta_seq !=
NULL) {
162 int invalidate_types)
209 if (seq->scene == scene_target) {
213 if (seq->seqbase.first !=
NULL) {
231 if (seq->clip == clip_target) {
235 if (seq->seqbase.first !=
NULL) {
261 for (seq = seqbase->
first; seq; seq = seq->
next) {
262 if (for_render &&
CFRA >= seq->
startdisp && CFRA <= seq->enddisp) {
288 bool free_imbuf =
false;
296 if (seq == changed_seq) {
361 if (seq->enddisp < timeline_frame || seq->startdisp > timeline_frame) {
411 if (recursive_seq !=
NULL) {
414 "Recursion detected in video sequencer. Strip %s at frame %d will not be rendered",
415 recursive_seq->
name + 2,
434 if (seq_main ==
NULL || seq ==
NULL) {
438 if (seq_main == seq) {
492 printf(
"Sequence %s does not have UUID generated.\n", sequence->
name);
497 printf(
"Sequence %s has duplicate UUID generated.\n", sequence->
name);
void BKE_reportf(ReportList *reports, ReportType type, const char *format,...) ATTR_PRINTF_FORMAT(3
GSet * BLI_gset_new(GSetHashFP hashfp, GSetCmpFP cmpfp, const char *info) ATTR_MALLOC ATTR_WARN_UNUSED_RESULT
void BLI_gset_insert(GSet *gs, void *key)
void * BLI_gset_lookup(GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_gset_free(GSet *gs, GSetKeyFreeFP keyfreefp)
#define LISTBASE_FOREACH(type, var, list)
void BLI_freelinkN(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
bool BLI_session_uuid_ghash_compare(const void *lhs_v, const void *rhs_v)
SessionUUID BLI_session_uuid_generate(void)
uint BLI_session_uuid_ghash_hash(const void *uuid_v)
bool BLI_session_uuid_is_generated(const SessionUUID *uuid)
void DEG_id_tag_update(struct ID *id, int flag)
@ ID_RECALC_SEQUENCER_STRIPS
#define SEQ_BLEND_REPLACE
@ SEQ_CACHE_STORE_PREPROCESSED
@ SEQ_CACHE_STORE_FINAL_OUT
@ SEQ_CACHE_STORE_COMPOSITE
void IMB_free_anim(struct anim *anim)
#define SEQ_ALL_BEGIN(ed, _seq)
void seq_effect_speed_rebuild_map(Scene *scene, Sequence *seq, bool force)
void SEQ_cache_cleanup(Scene *scene)
void seq_cache_cleanup_sequence(Scene *scene, Sequence *seq, Sequence *seq_changed, int invalidate_types, bool force_seq_changed_range)
void SEQ_prefetch_stop(Scene *scene)
Editing * SEQ_editing_get(Scene *scene, bool alloc)
void SEQ_relations_check_uuids_unique_and_report(const Scene *scene)
bool SEQ_relations_render_loop_check(Sequence *seq_main, Sequence *seq)
void SEQ_relations_invalidate_cache_raw(Scene *scene, Sequence *seq)
static void sequence_invalidate_cache(Scene *scene, Sequence *seq, bool invalidate_self, int invalidate_types)
void SEQ_relations_update_changed_seq_and_deps(Scene *scene, Sequence *changed_seq, int len_change, int ibuf_change)
static bool seq_relations_find_and_invalidate_metas(Scene *scene, Sequence *invalidated_seq, Sequence *meta_seq)
static Sequence * sequencer_check_scene_recursion(Scene *scene, ListBase *seqbase)
void SEQ_relations_invalidate_cache_in_range(Scene *scene, Sequence *seq, Sequence *range_mask, int invalidate_types)
void SEQ_relations_sequence_free_anim(Sequence *seq)
bool SEQ_relations_check_scene_recursion(Scene *scene, ReportList *reports)
void SEQ_relations_invalidate_scene_strips(Main *bmain, Scene *scene_target)
void SEQ_relations_free_all_anim_ibufs(Scene *scene, int timeline_frame)
static void sequence_do_invalidate_dependent(Scene *scene, Sequence *seq, ListBase *seqbase)
static void invalidate_scene_strips(Scene *scene, Scene *scene_target, ListBase *seqbase)
static void sequencer_all_free_anim_ibufs(ListBase *seqbase, int timeline_frame)
void SEQ_relations_session_uuid_generate(struct Sequence *sequence)
void SEQ_relations_invalidate_dependent(Scene *scene, Sequence *seq)
static bool seq_relations_check_depend(Sequence *seq, Sequence *cur)
void SEQ_relations_invalidate_movieclip_strips(Main *bmain, MovieClip *clip_target)
static void invalidate_movieclip_strips(Scene *scene, MovieClip *clip_target, ListBase *seqbase)
void SEQ_relations_free_imbuf(Scene *scene, ListBase *seqbase, bool for_render)
static bool update_changed_seq_recurs(Scene *scene, Sequence *seq, Sequence *changed_seq, int len_change, int ibuf_change)
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Sequence *seq)
void SEQ_relations_invalidate_cache_composite(Scene *scene, Sequence *seq)
void SEQ_time_update_sequence(Scene *scene, Sequence *seq)
struct SequenceModifierData * next
struct Sequence * mask_sequence
bool sequencer_seq_generates_image(Sequence *seq)