11#define DNA_DEPRECATED_ALLOW
86 data->transform->scale_x = 1;
87 data->transform->scale_y = 1;
88 data->transform->origin[0] = 0.5f;
89 data->transform->origin[1] = 0.5f;
105 printf(
"error: negative users in strip\n");
109 if (
data->stripdata) {
114 if (
data->proxy->anim) {
123 if (
data->transform) {
141 strip->
start = timeline_frame;
177 const bool do_id_user)
187 sh.
free(strip, do_id_user);
190 if (strip->
sound && do_id_user) {
204 if (
ed->act_strip == strip) {
205 ed->act_strip =
nullptr;
262 Strip *istrip, *istrip_next;
264 for (istrip =
static_cast<Strip *
>(strip->
seqbase.
first); istrip; istrip = istrip_next) {
265 istrip_next = istrip->
next;
279 if (scene->
ed ==
nullptr) {
283 ed->seqbasep = &
ed->seqbase;
286 ed->displayed_channels = &
ed->channels;
330 smd->mask_strip = strip_map.
lookup_default(smd->mask_strip, smd->mask_strip);
335 con->strip_ref = strip_map.
lookup_default(con->strip_ref, con->strip_ref);
349 "Sequencer tool settings");
359 return tool_settings;
365 if (tool_settings ==
nullptr) {
370 return tool_settings;
431 ed->seqbasep = seqbase;
458 return static_cast<MetaStack *
>(
ed->metastack.last);
467 if (dst !=
nullptr) {
470 Strip *meta_parent = dst;
511 strip_map.
add(strip, strip_new);
609 if (new_seq_list !=
nullptr) {
613 if (scene_src == scene_dst) {
635 scene_src, scene_dst, new_seq_list, strip, dupe_flag, 0, strip_map);
639 scene_src, scene_dst, &strip_new->
seqbase, s, dupe_flag, strip_map);
651 scene_src, scene_dst, new_seq_list, strip, dupe_flag, strip_map);
675 scene_src, scene_dst, nseqbase, strip, dupe_flag,
flag, strip_map);
746 switch (strip->
type) {
781 if (
data->transform) {
845 switch (strip->
type) {
935 if (con->strip_ref) {
956 Main *bmain =
static_cast<Main *
>(user_data);
960 sizeof(filepath_abs),
994 if (strip->
sound !=
nullptr) {
1046 bool sequencer_is_used =
false;
1048 if (strip_iter->scene == scene && (strip_iter->flag &
SEQ_SCENE_STRIPS) != 0) {
1049 sequencer_is_used =
true;
1056 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_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_scene_add_scene_sound_defaults(struct Scene *scene, struct Strip *sequence)
void * BKE_sound_add_scene_sound_defaults(struct Scene *scene, struct Strip *sequence)
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_update_sequence_handle(void *handle, void *sound_handle)
void BKE_sound_remove_scene_sound(struct Scene *scene, void *handle)
#define BLI_assert_unreachable()
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE void BLI_listbase_clear(ListBase *lb)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
#define LISTBASE_FOREACH_MUTABLE(type, var, list)
void void BLI_freelistN(ListBase *listbase) ATTR_NONNULL(1)
void BLI_addtail(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_remlink(ListBase *listbase, void *vlink) ATTR_NONNULL(1)
void BLI_addhead(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
@ STRIP_TYPE_GAUSSIAN_BLUR
@ SEQ_TRANSFORM_FILTER_AUTO
@ SEQ_EDIT_SHOW_MISSING_MEDIA
@ SEQ_CACHE_STORE_FINAL_OUT
@ SEQ_AUDIO_VOLUME_ANIMATED
@ SEQ_PROXY_TC_RECORD_RUN_NO_GAPS
@ SEQ_PROXY_TC_RECORD_RUN
#define STRIP_FONT_NOT_LOADED
@ V3D_AROUND_LOCAL_ORIGINS
Read Guarded memory(de)allocation.
#define STRIP_DUPE_UNIQUE_NAME
BMesh const char void * data
BPy_StructRNA * depsgraph
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
bool add(const Key &key, const Value &value)
Value lookup_default(const Key &key, const Value &default_value) const
void * MEM_mallocN(size_t len, const char *str)
void * MEM_callocN(size_t len, const char *str)
void * MEM_dupallocN(const void *vmemh)
size_t(* MEM_allocN_len)(const void *vmemh)
void MEM_freeN(void *vmemh)
void MOV_close(MovieReader *anim)
static StripData * seq_strip_alloc(int type)
void relations_strip_free_anim(Strip *strip)
void channels_displayed_set(Editing *ed, ListBase *channels)
static void seq_update_sound_strips(Scene *scene, Strip *strip)
Strip * lookup_meta_by_strip(Editing *ed, const Strip *key)
int time_right_handle_frame_get(const Scene *scene, const Strip *strip)
SequencerToolSettings * tool_settings_init()
static Strip * strip_duplicate_recursive_impl(const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Strip *strip, const int dupe_flag, blender::Map< Strip *, Strip * > &strip_map)
bool disconnect(Strip *strip)
EffectHandle strip_effect_handle_get(Strip *strip)
void eval_strips(Depsgraph *depsgraph, Scene *scene, ListBase *seqbase)
void sound_update_bounds_all(Scene *scene)
static void strip_update_mix_sounds(Scene *scene, Strip *strip)
eSeqImageFitMethod tool_settings_fit_method_get(Scene *scene)
int retiming_keys_count(const Strip *strip)
static bool scene_sequencer_is_used(const Scene *scene, ListBase *seqbase)
static void seq_update_scene_strip_sound(const Scene *scene, Strip *strip)
void doversion_250_sound_proxy_update(Main *bmain, Editing *ed)
void channels_ensure(ListBase *channels)
void strip_channel_set(Strip *strip, int channel)
void media_presence_free(Scene *scene)
SequencerToolSettings * tool_settings_copy(SequencerToolSettings *tool_settings)
static bool must_update_strip_sound(Scene *scene, Strip *strip)
void blend_write(BlendWriter *writer, ListBase *seqbase)
void tool_settings_free(SequencerToolSettings *tool_settings)
Editing * editing_get(const Scene *scene)
void meta_stack_set(const Scene *scene, Strip *dst)
StripProxy * seq_strip_proxy_alloc()
void seq_prefetch_free(Scene *scene)
void active_seqbase_set(Editing *ed, ListBase *seqbase)
static bool strip_sound_update_cb(Strip *strip, void *user_data)
int time_left_handle_frame_get(const Scene *, const Strip *strip)
static void seq_free_strip(StripData *data)
void seq_free_strip_recurse(Scene *scene, Strip *strip, const bool do_id_user)
static void strip_update_sound_modifiers(Strip *strip)
void relations_invalidate_cache_raw(Scene *scene, Strip *strip)
static bool seq_set_strip_done_cb(Strip *strip, void *)
void strip_free(Scene *scene, Strip *strip)
void cut_one_way_connections(Strip *strip)
static void seq_strip_free_ex(Scene *scene, Strip *strip, const bool do_cache, const bool do_id_user)
MetaStack * meta_stack_active_get(const Editing *ed)
Editing * editing_ensure(Scene *scene)
void proxy_set(Strip *strip, bool value)
Strip * strip_duplicate_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Strip *strip, int dupe_flag)
static bool seq_mute_sound_strips_cb(Strip *strip, void *user_data)
static MetaStack * seq_meta_stack_alloc(const Scene *scene, Strip *strip_meta)
static bool strip_doversion_250_sound_proxy_update_cb(Strip *strip, void *user_data)
void final_image_cache_destroy(Scene *scene)
void editing_free(Scene *scene, const bool do_id_user)
constexpr int MAX_CHANNELS
static void strip_update_sound_properties(const Scene *scene, const Strip *strip)
void * sound_modifier_recreator(Strip *strip, StripModifierData *smd, void *sound)
void for_each_callback(ListBase *seqbase, ForEachFunc callback, void *user_data)
static bool strip_write_data_cb(Strip *strip, void *userdata)
bool is_strip_connected(const Strip *strip)
void modifier_blend_read_data(BlendDataReader *reader, ListBase *lb)
static Strip * strip_duplicate(const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Strip *strip, int dupe_flag, const int flag, blender::Map< Strip *, Strip * > &strip_map)
int tool_settings_pivot_point_get(Scene *scene)
void edit_update_muting(Editing *ed)
void retiming_sound_animation_data_set(const Scene *scene, const Strip *strip)
void tool_settings_fit_method_set(Scene *scene, eSeqImageFitMethod fit_method)
void channels_duplicate(ListBase *channels_dst, ListBase *channels_src)
void modifier_clear(Strip *strip)
bool is_valid_strip_channel(const Strip *strip)
short tool_settings_snap_flag_get(Scene *scene)
SequencerToolSettings * tool_settings_ensure(Scene *scene)
static bool strip_read_data_cb(Strip *strip, void *user_data)
int tool_settings_snap_distance_get(Scene *scene)
static void seqbase_dupli_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *nseqbase, const ListBase *seqbase, int dupe_flag, const int flag, blender::Map< Strip *, Strip * > &strip_map)
void intra_frame_cache_destroy(Scene *scene)
void source_image_cache_destroy(Scene *scene)
static void strip_lookup_free(StripLookup **lookup)
void strip_unique_name_set(Scene *scene, ListBase *seqbasep, Strip *strip)
void relations_session_uid_generate(Strip *strip)
void modifier_list_copy(Strip *strip_new, Strip *strip)
void channels_free(ListBase *channels)
static void seq_new_fix_links_recursive(Strip *strip, blender::Map< Strip *, Strip * > strip_map)
ListBase * active_seqbase_get(const Editing *ed)
short tool_settings_snap_mode_get(Scene *scene)
void connections_duplicate(ListBase *connections_dst, ListBase *connections_src)
Strip * meta_stack_pop(Editing *ed)
void blend_read(BlendDataReader *reader, ListBase *seqbase)
Strip * strip_alloc(ListBase *lb, int timeline_frame, int channel, int type)
void seqbase_duplicate_recursive(const Scene *scene_src, Scene *scene_dst, ListBase *nseqbase, const ListBase *seqbase, int dupe_flag, const int flag)
void thumbnail_cache_destroy(Scene *scene)
eSeqOverlapMode tool_settings_overlap_mode_get(Scene *scene)
void modifier_blend_write(BlendWriter *writer, ListBase *modbase)
struct ToolSettings * toolsettings
StripTransform * transform
struct MovieReader * anim
struct Stereo3dFormat * stereo3d_format
float media_playback_rate
struct SeqRetimingKey * retiming_keys
struct IDProperty * system_properties
TextVarsRuntime * runtime
void(* copy)(Strip *dst, const Strip *src, int flag)
void(* free)(Strip *strip, bool do_id_user)