12#define DNA_DEPRECATED_ALLOW
98 printf(
"error: negative users in strip\n");
134 seq->
start = timeline_frame;
171 const bool do_id_user)
181 sh.
free(seq, do_id_user);
184 if (seq->
sound && do_id_user) {
255 iseq_next = iseq->
next;
269 if (scene->ed ==
nullptr) {
328 if (smd->mask_sequence && smd->mask_sequence->tmp) {
329 smd->mask_sequence =
static_cast<Sequence *
>(smd->mask_sequence->tmp);
335 if (con->seq_ref->tmp) {
336 con->seq_ref =
static_cast<Sequence *
>(con->seq_ref->tmp);
355 return tool_settings;
361 if (tool_settings ==
nullptr) {
363 tool_settings = scene->toolsettings->sequencer_tool_settings;
366 return tool_settings;
463 if (dst_seq !=
nullptr) {
602 if (new_seq_list !=
nullptr) {
606 if (scene_src == scene_dst) {
629 seqn =
seq_dupli(scene_src, scene_dst, new_seq_list, seq, dupe_flag, 0);
665 if (seqn ==
nullptr) {
673 scene_src, scene_dst, &seqn->
seqbase, &seq->seqbase, dupe_flag_recursive,
flag);
705 return tool_settings_copy;
929 Main *bmain =
static_cast<Main *
>(user_data);
965 if (seq->
sound !=
nullptr) {
1017 bool sequencer_is_used =
false;
1019 if (seq_iter->scene == scene && (seq_iter->flag &
SEQ_SCENE_STRIPS) != 0) {
1020 sequencer_is_used =
true;
1027 return sequencer_is_used;
#define IDP_BlendDataRead(reader, prop)
void IDP_FreePropertyContent_ex(IDProperty *prop, bool do_id_user)
IDProperty * IDP_CopyProperty_ex(const IDProperty *prop, int flag) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
void IDP_BlendWrite(BlendWriter *writer, const IDProperty *prop)
@ LIB_ID_CREATE_NO_USER_REFCOUNT
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
float BKE_scene_frame_get(const Scene *scene)
void BKE_sound_set_scene_sound_pan_at_frame(void *handle, int frame, float pan, char animated)
void * BKE_sound_scene_add_scene_sound_defaults(struct Scene *scene, struct Sequence *sequence)
void BKE_sound_set_scene_volume(struct Scene *scene, float volume)
struct bSound * BKE_sound_new_file(struct Main *bmain, const char *filepath)
void BKE_sound_ensure_scene(struct Scene *scene)
void BKE_sound_set_scene_sound_volume_at_frame(void *handle, int frame, float volume, char animated)
void BKE_sound_update_scene_sound(void *handle, struct bSound *sound)
void * BKE_sound_add_scene_sound_defaults(struct Scene *scene, struct Sequence *sequence)
void BKE_sound_update_sequence_handle(void *handle, void *sound_handle)
void BKE_sound_remove_scene_sound(struct Scene *scene, void *handle)
#define BLI_assert_unreachable()
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
void BLI_addhead(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
#define LISTBASE_FOREACH(type, var, list)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
BLI_INLINE void BLI_listbase_clear(struct ListBase *lb)
void void BLI_freelistN(struct ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
#define BLI_path_join(...)
#define BLO_write_struct(writer, struct_name, data_ptr)
#define BLO_write_struct_array(writer, struct_name, array_size, data_ptr)
#define BLO_read_struct_list(reader, struct_name, list)
#define BLO_read_struct_array(reader, struct_name, array_size, ptr_p)
#define BLO_read_struct(reader, struct_name, ptr_p)
void DEG_debug_print_eval(Depsgraph *depsgraph, const char *function_name, const char *object_name, const void *object_address)
These structs are the foundation for all linked lists in the library system.
@ SEQ_SNAP_TO_PREVIEW_CENTER
@ SEQ_SNAP_TO_STRIPS_PREVIEW
@ SEQ_SNAP_TO_PREVIEW_BORDERS
@ SEQ_SNAP_TO_CURRENT_FRAME
@ SEQ_CACHE_STORE_FINAL_OUT
#define SEQ_FONT_NOT_LOADED
@ SEQ_EDIT_SHOW_MISSING_MEDIA
@ SEQ_AUDIO_VOLUME_ANIMATED
@ SEQ_PROXY_TC_RECORD_RUN_NO_GAPS
@ SEQ_PROXY_TC_RECORD_RUN
@ SEQ_TRANSFORM_FILTER_AUTO
@ V3D_AROUND_LOCAL_ORIGINS
void IMB_free_anim(ImBufAnim *anim)
Read Guarded memory(de)allocation.
#define SEQ_DUPE_UNIQUE_NAME
constexpr int SEQ_MAX_CHANNELS
#define SEQ_DUPE_IS_RECURSIVE_CALL
void SEQ_channels_duplicate(ListBase *channels_dst, ListBase *channels_src)
void SEQ_channels_free(ListBase *channels)
void SEQ_channels_ensure(ListBase *channels)
void SEQ_channels_displayed_set(Editing *ed, ListBase *channels)
const Depsgraph * depsgraph
SeqEffectHandle SEQ_effect_handle_get(Sequence *seq)
void seq_cache_destruct(Scene *scene)
void SEQ_for_each_callback(ListBase *seqbase, SeqForEachFunc callback, void *user_data)
void *(* MEM_mallocN)(size_t len, const char *str)
size_t(* MEM_allocN_len)(const void *vmemh)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_dupallocN)(const void *vmemh)
void media_presence_free(Scene *scene)
void thumbnail_cache_destroy(Scene *scene)
void seq_prefetch_free(Scene *scene)
void SEQ_proxy_set(Sequence *seq, bool value)
Sequence * seq_sequence_lookup_meta_by_seq(const Scene *scene, const Sequence *key)
void SEQ_sequence_lookup_free(const Scene *scene)
void SEQ_modifier_blend_write(BlendWriter *writer, ListBase *modbase)
void SEQ_modifier_clear(Sequence *seq)
void SEQ_modifier_blend_read_data(BlendDataReader *reader, ListBase *lb)
void SEQ_modifier_list_copy(Sequence *seqn, Sequence *seq)
void SEQ_sound_update_bounds_all(Scene *scene)
void * SEQ_sound_modifier_recreator(Sequence *seq, SequenceModifierData *smd, void *sound)
void SEQ_sequence_base_unique_name_recursive(Scene *scene, ListBase *seqbasep, Sequence *seq)
void SEQ_tool_settings_free(SequencerToolSettings *tool_settings)
void SEQ_sequence_base_dupli_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *nseqbase, const ListBase *seqbase, int dupe_flag, const int flag)
static void seq_update_sound_strips(Scene *scene, Sequence *seq)
static void seq_new_fix_links_recursive(Sequence *seq)
Editing * SEQ_editing_ensure(Scene *scene)
void SEQ_sequence_free(Scene *scene, Sequence *seq)
SequencerToolSettings * SEQ_tool_settings_ensure(Scene *scene)
static bool seq_set_strip_done_cb(Sequence *seq, void *)
static bool seq_mute_sound_strips_cb(Sequence *seq, void *user_data)
ListBase * SEQ_active_seqbase_get(const Editing *ed)
static bool seq_read_data_cb(Sequence *seq, void *user_data)
static void seq_update_scene_strip_sound(const Scene *scene, Sequence *seq)
short SEQ_tool_settings_snap_mode_get(Scene *scene)
static void seq_update_mix_sounds(Scene *scene, Sequence *seq)
int SEQ_tool_settings_snap_distance_get(Scene *scene)
void SEQ_doversion_250_sound_proxy_update(Main *bmain, Editing *ed)
Sequence * SEQ_meta_stack_pop(Editing *ed)
static void seq_sequence_free_ex(Scene *scene, Sequence *seq, const bool do_cache, const bool do_id_user)
void SEQ_editing_free(Scene *scene, const bool do_id_user)
static MetaStack * seq_meta_stack_alloc(const Scene *scene, Sequence *seq_meta)
static bool seq_doversion_250_sound_proxy_update_cb(Sequence *seq, void *user_data)
static Strip * seq_strip_alloc(int type)
SequencerToolSettings * SEQ_tool_settings_init()
short SEQ_tool_settings_snap_flag_get(Scene *scene)
static Sequence * sequence_dupli_recursive_do(const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, const int dupe_flag)
SequencerToolSettings * SEQ_tool_settings_copy(SequencerToolSettings *tool_settings)
void SEQ_eval_sequences(Depsgraph *depsgraph, Scene *scene, ListBase *seqbase)
Sequence * SEQ_sequence_dupli_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, int dupe_flag)
StripProxy * seq_strip_proxy_alloc()
void SEQ_seqbase_active_set(Editing *ed, ListBase *seqbase)
void seq_free_sequence_recurse(Scene *scene, Sequence *seq, const bool do_id_user)
void SEQ_blend_read(BlendDataReader *reader, ListBase *seqbase)
eSeqOverlapMode SEQ_tool_settings_overlap_mode_get(Scene *scene)
static bool scene_sequencer_is_used(const Scene *scene, ListBase *seqbase)
int SEQ_tool_settings_pivot_point_get(Scene *scene)
static bool seq_write_data_cb(Sequence *seq, void *userdata)
static bool seq_sound_update_cb(Sequence *seq, void *user_data)
static bool must_update_strip_sound(Scene *scene, Sequence *seq)
static void seq_free_strip(Strip *strip)
eSeqImageFitMethod SEQ_tool_settings_fit_method_get(Scene *scene)
void SEQ_meta_stack_set(const Scene *scene, Sequence *dst_seq)
Sequence * SEQ_sequence_alloc(ListBase *lb, int timeline_frame, int machine, int type)
static void seq_update_sound_properties(const Scene *scene, const Sequence *seq)
void SEQ_tool_settings_fit_method_set(Scene *scene, eSeqImageFitMethod fit_method)
static void seq_update_sound_modifiers(Sequence *seq)
Editing * SEQ_editing_get(const Scene *scene)
bool SEQ_is_valid_strip_channel(const Sequence *seq)
void SEQ_blend_write(BlendWriter *writer, ListBase *seqbase)
MetaStack * SEQ_meta_stack_active_get(const Editing *ed)
static Sequence * seq_dupli(const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, int dupe_flag, const int flag)
void SEQ_connections_duplicate(ListBase *connections_dst, ListBase *connections_src)
bool SEQ_disconnect(Sequence *seq)
bool SEQ_is_strip_connected(const Sequence *seq)
void SEQ_cut_one_way_connections(Sequence *seq)
void SEQ_edit_update_muting(Editing *ed)
void SEQ_relations_invalidate_cache_raw(Scene *scene, Sequence *seq)
void SEQ_relations_session_uid_generate(Sequence *sequence)
void SEQ_relations_sequence_free_anim(Sequence *seq)
int SEQ_retiming_keys_count(const Sequence *seq)
void SEQ_retiming_sound_animation_data_set(const Scene *scene, const Sequence *seq)
int SEQ_time_left_handle_frame_get(const Scene *, const Sequence *seq)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
int show_missing_media_flag
ListBase * displayed_channels
void(* free)(Sequence *seq, bool do_id_user)
void(* copy)(Sequence *dst, const Sequence *src, int flag)
float media_playback_rate
struct SeqRetimingKey * retiming_keys
struct Stereo3dFormat * stereo3d_format
StripTransform * transform