77 for (cur = seqbase->
first; cur; cur = cur->
next) {
102 bool invalidate_self,
103 int invalidate_types)
107 if (invalidate_self) {
127 if (meta_seq ==
NULL) {
142 if (seq == invalidated_seq && meta_seq !=
NULL) {
153 int invalidate_types)
200 if (seq->scene == scene_target) {
204 if (seq->seqbase.first !=
NULL) {
222 if (seq->clip == clip_target) {
226 if (seq->seqbase.first !=
NULL) {
252 for (seq = seqbase->
first; seq; seq = seq->
next) {
278 const int frame_range[2])
283 !((frame_range[0] <= timeline_frame) && (frame_range[1] > timeline_frame))) {
346 if (recursive_seq !=
NULL) {
349 "Recursion detected in video sequencer. Strip %s at frame %d will not be rendered",
350 recursive_seq->
name + 2,
368 if (seq_main ==
NULL || seq ==
NULL) {
372 if (seq_main == seq) {
417 printf(
"Sequence %s does not have UUID generated.\n", seq->
name);
422 printf(
"Sequence %s has duplicate UUID generated.\n", seq->
name);
469 if (seq_test == seq) {
void BKE_reportf(ReportList *reports, eReportType 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_lookup(const GSet *gs, const void *key) ATTR_WARN_UNUSED_RESULT
void BLI_gset_insert(GSet *gs, void *key)
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)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
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)
void seq_effect_speed_rebuild_map(Scene *scene, Sequence *seq)
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_for_each_callback(ListBase *seqbase, SeqForEachFunc callback, void *user_data)
ccl_global KernelShaderEvalInput * input
void SEQ_prefetch_stop(Scene *scene)
MetaStack * SEQ_meta_stack_active_get(const Editing *ed)
Editing * SEQ_editing_get(const Scene *scene)
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)
static bool seq_relations_find_and_invalidate_metas(Scene *scene, Sequence *invalidated_seq, Sequence *meta_seq)
static void sequencer_all_free_anim_ibufs(const Scene *scene, ListBase *seqbase, int timeline_frame, const int frame_range[2])
bool SEQ_exists_in_seqbase(const Sequence *seq, const ListBase *seqbase)
static Sequence * sequencer_check_scene_recursion(Scene *scene, ListBase *seqbase)
static bool seq_relations_check_depend(const Scene *scene, Sequence *seq, Sequence *cur)
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)
struct Sequence * SEQ_find_metastrip_by_sequence(ListBase *seqbase, Sequence *meta, Sequence *seq)
static bool get_uuids_cb(Sequence *seq, void *user_data)
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)
void SEQ_relations_session_uuid_generate(struct Sequence *sequence)
void SEQ_relations_invalidate_dependent(Scene *scene, Sequence *seq)
bool SEQ_relation_is_effect_of_strip(const Sequence *effect, const Sequence *input)
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)
void SEQ_relations_invalidate_cache_preprocessed(Scene *scene, Sequence *seq)
void SEQ_relations_invalidate_cache_composite(Scene *scene, Sequence *seq)
int SEQ_time_left_handle_frame_get(const Scene *UNUSED(scene), const Sequence *seq)
bool SEQ_time_strip_intersects_frame(const Scene *scene, const Sequence *seq, const int timeline_frame)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
struct SequenceModifierData * next
struct Sequence * mask_sequence
bool sequencer_seq_generates_image(Sequence *seq)