Blender  V3.3
Classes | Macros | Typedefs | Functions
sequencer.c File Reference
#include "MEM_guardedalloc.h"
#include "DNA_anim_types.h"
#include "DNA_scene_types.h"
#include "DNA_sequence_types.h"
#include "DNA_sound_types.h"
#include "BLI_listbase.h"
#include "BKE_idprop.h"
#include "BKE_lib_id.h"
#include "BKE_sound.h"
#include "DEG_depsgraph.h"
#include "IMB_colormanagement.h"
#include "IMB_imbuf.h"
#include "SEQ_channels.h"
#include "SEQ_edit.h"
#include "SEQ_effects.h"
#include "SEQ_iterator.h"
#include "SEQ_modifier.h"
#include "SEQ_proxy.h"
#include "SEQ_relations.h"
#include "SEQ_select.h"
#include "SEQ_sequencer.h"
#include "SEQ_sound.h"
#include "SEQ_time.h"
#include "SEQ_utils.h"
#include "BLO_read_write.h"
#include "image_cache.h"
#include "prefetch.h"
#include "sequencer.h"
#include "utils.h"

Go to the source code of this file.

Classes

struct  Read_lib_data
 

Macros

#define DNA_DEPRECATED_ALLOW
 

Typedefs

typedef struct Read_lib_data Read_lib_data
 

Functions

static bool seq_set_strip_done_cb (Sequence *seq, void *UNUSED(userdata))
 
static bool seq_write_data_cb (Sequence *seq, void *userdata)
 
void SEQ_blend_write (BlendWriter *writer, ListBase *seqbase)
 
static bool seq_read_data_cb (Sequence *seq, void *user_data)
 
void SEQ_blend_read (BlendDataReader *reader, ListBase *seqbase)
 
static bool seq_read_lib_cb (Sequence *seq, void *user_data)
 
void SEQ_blend_read_lib (BlendLibReader *reader, Scene *scene, ListBase *seqbase)
 
static bool seq_blend_read_expand (Sequence *seq, void *user_data)
 
void SEQ_blend_read_expand (BlendExpander *expander, ListBase *seqbase)
 
static bool seq_disable_sound_strips_cb (Sequence *seq, void *user_data)
 
static bool seq_update_seq_cb (Sequence *seq, void *user_data)
 
void SEQ_eval_sequences (Depsgraph *depsgraph, Scene *scene, ListBase *seqbase)
 
Allocate / Free Functions
StripProxy * seq_strip_proxy_alloc (void)
 
static Strip * seq_strip_alloc (int type)
 
static void seq_free_strip (Strip *strip)
 
Sequence * SEQ_sequence_alloc (ListBase *lb, int timeline_frame, int machine, int type)
 
static void seq_sequence_free_ex (Scene *scene, Sequence *seq, const bool do_cache, const bool do_id_user)
 
void SEQ_sequence_free (Scene *scene, Sequence *seq)
 
void seq_free_sequence_recurse (Scene *scene, Sequence *seq, const bool do_id_user)
 
Editing * SEQ_editing_get (const Scene *scene)
 
Editing * SEQ_editing_ensure (Scene *scene)
 
void SEQ_editing_free (Scene *scene, const bool do_id_user)
 
static void seq_new_fix_links_recursive (Sequence *seq)
 
SequencerToolSettings * SEQ_tool_settings_init (void)
 
SequencerToolSettings * SEQ_tool_settings_ensure (Scene *scene)
 
void SEQ_tool_settings_free (SequencerToolSettings *tool_settings)
 
eSeqImageFitMethod SEQ_tool_settings_fit_method_get (Scene *scene)
 
short SEQ_tool_settings_snap_mode_get (Scene *scene)
 
short SEQ_tool_settings_snap_flag_get (Scene *scene)
 
int SEQ_tool_settings_snap_distance_get (Scene *scene)
 
void SEQ_tool_settings_fit_method_set (Scene *scene, eSeqImageFitMethod fit_method)
 
eSeqOverlapMode SEQ_tool_settings_overlap_mode_get (Scene *scene)
 
int SEQ_tool_settings_pivot_point_get (Scene *scene)
 
ListBase * SEQ_active_seqbase_get (const Editing *ed)
 
void SEQ_seqbase_active_set (Editing *ed, ListBase *seqbase)
 
static MetaStack * seq_meta_stack_alloc (const Scene *scene, Sequence *seq_meta)
 
MetaStack * SEQ_meta_stack_active_get (const Editing *ed)
 
void SEQ_meta_stack_set (const Scene *scene, Sequence *seqm)
 
Sequence * SEQ_meta_stack_pop (Editing *ed)
 
Duplicate Functions
static Sequence * seq_dupli (const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, int dupe_flag, const int flag)
 
static Sequence * sequence_dupli_recursive_do (const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, const int dupe_flag)
 
Sequence * SEQ_sequence_dupli_recursive (const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, int dupe_flag)
 
void SEQ_sequence_base_dupli_recursive (const Scene *scene_src, Scene *scene_dst, ListBase *nseqbase, const ListBase *seqbase, int dupe_flag, const int flag)
 
bool SEQ_valid_strip_channel (Sequence *seq)
 
SequencerToolSettings * SEQ_tool_settings_copy (SequencerToolSettings *tool_settings)
 

Macro Definition Documentation

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 10 of file sequencer.c.

Typedef Documentation

◆ Read_lib_data

typedef struct Read_lib_data Read_lib_data

Function Documentation

◆ SEQ_active_seqbase_get()

ListBase* SEQ_active_seqbase_get ( const Editing *  ed)

◆ SEQ_blend_read()

void SEQ_blend_read ( BlendDataReader *  reader,
ListBase *  seqbase 
)

Definition at line 823 of file sequencer.c.

References SEQ_for_each_callback(), and seq_read_data_cb().

Referenced by scene_blend_read_data().

◆ SEQ_blend_read_expand()

void SEQ_blend_read_expand ( BlendExpander *  expander,
ListBase *  seqbase 
)

Definition at line 919 of file sequencer.c.

References seq_blend_read_expand(), and SEQ_for_each_callback().

Referenced by scene_blend_read_expand().

◆ seq_blend_read_expand()

static bool seq_blend_read_expand ( Sequence *  seq,
void *  user_data 
)
static

◆ SEQ_blend_read_lib()

void SEQ_blend_read_lib ( BlendLibReader *  reader,
Scene *  scene,
ListBase *  seqbase 
)

Definition at line 884 of file sequencer.c.

References data, scene, SEQ_for_each_callback(), and seq_read_lib_cb().

Referenced by scene_blend_read_lib().

◆ SEQ_blend_write()

void SEQ_blend_write ( struct BlendWriter *  writer,
struct ListBase *  seqbase 
)

Read and Write functions for .blend file data.

Definition at line 755 of file sequencer.c.

References NULL, SEQ_for_each_callback(), seq_set_strip_done_cb(), and seq_write_data_cb().

Referenced by scene_blend_write().

◆ seq_disable_sound_strips_cb()

static bool seq_disable_sound_strips_cb ( Sequence *  seq,
void *  user_data 
)
static

Definition at line 926 of file sequencer.c.

References BKE_sound_remove_scene_sound(), NULL, scene, Sequence::scene_sound, and user_data.

Referenced by seq_update_seq_cb().

◆ seq_dupli()

static Sequence* seq_dupli ( const Scene *  scene_src,
Scene *  scene_dst,
ListBase *  new_seq_list,
Sequence *  seq,
int  dupe_flag,
const int  flag 
)
static

◆ SEQ_editing_ensure()

Editing* SEQ_editing_ensure ( Scene *  scene)

◆ SEQ_editing_free()

void SEQ_editing_free ( Scene *  scene,
const bool  do_id_user 
)

◆ SEQ_editing_get()

Editing* SEQ_editing_get ( const Scene *  scene)

Definition at line 241 of file sequencer.c.

References Scene::ed, and scene.

Referenced by all_strips_from_context(), animchan_sync_fcurve_scene(), blo_do_versions_290(), blo_do_versions_300(), blender::ed::outliner::TreeDisplaySequencer::buildTree(), change_frame_apply(), channel_draw_context_init(), color3ubv_from_seq(), createTransSeqData(), createTransSeqImageData(), do_versions_after_linking_300(), draw_channels(), draw_seq_background(), draw_seq_strip(), draw_seq_text_overlay(), draw_sequence_extensions_overlay(), draw_timeline_seq(), draw_timeline_seq_display(), drawmeta_contents(), ED_imbuf_sample_poll(), ED_sequencer_deselect_all(), ED_sequencer_select_sequence_single(), find_nearest_seq(), find_neighboring_sequence(), find_next_prev_sequence(), freeSeqData(), gizmo2d_calc_bounds(), gizmo2d_calc_rotation(), gizmo2d_calc_transform_orientation(), gizmo2d_calc_transform_pivot(), gizmo2d_generic_poll(), proxy_endjob(), query_snap_targets(), screen_ctx_selected_editable_sequences(), screen_ctx_selected_sequences(), screen_ctx_sequences(), select_linked_internal(), select_more_less_seq__internal(), selected_strips_from_context(), seq_box_select_seq_from_preview(), seq_draw_sfra_efra(), SEQ_edit_move_strip_to_meta(), seq_effect_find_selected(), seq_frame_apply_snap(), SEQ_get_seqbase_by_seq(), SEQ_get_seqbase_from_sequence(), seq_get_strip_pivot_median(), seq_get_text_strip_cb(), seq_load_apply_generic_options(), seq_load_apply_generic_options_only_test_overlap(), seq_meta_stack_alloc(), SEQ_meta_stack_set(), seq_prefetch_frames(), seq_prefetch_update_active_seqbase(), seq_proxy_build_job(), seq_proxy_get_fname(), SEQ_relations_check_scene_recursion(), seq_relations_find_and_invalidate_metas(), SEQ_relations_free_all_anim_ibufs(), SEQ_render_give_ibuf(), SEQ_select_active_get(), SEQ_select_active_get_pair(), SEQ_select_active_set(), seq_select_seq_from_preview(), seq_sequence_lookup_build(), SEQ_time_find_next_prev_edit(), seq_transform_cancel(), seq_update_meta_disp_range(), seqbase_active_get(), SeqTransInfo(), sequence_fn(), sequencer_add_duplicate_exec(), sequencer_all_free_anim_ibufs(), sequencer_box_select_exec(), sequencer_copy_exec(), sequencer_delete_exec(), sequencer_disable_one_time_properties(), sequencer_draw_preview(), sequencer_drop_copy(), sequencer_edit_poll(), sequencer_effect_poll(), sequencer_enable_proxies_exec(), sequencer_export_subtitles_exec(), sequencer_gap_insert_exec(), sequencer_gap_remove_exec(), sequencer_lock_exec(), sequencer_main_clamp_view(), sequencer_meta_make_exec(), sequencer_meta_separate_exec(), sequencer_meta_toggle_exec(), sequencer_mute_exec(), sequencer_offset_clear_exec(), sequencer_rebuild_proxy_exec(), sequencer_refresh_all_exec(), sequencer_reload_exec(), sequencer_select_exec(), sequencer_select_grouped_exec(), sequencer_select_handles_exec(), sequencer_select_linked_handle(), sequencer_select_set_active(), sequencer_select_side_exec(), sequencer_select_side_of_frame(), sequencer_select_side_of_frame_exec(), sequencer_separate_images_exec(), sequencer_set_range_to_strips_exec(), sequencer_slip_exec(), sequencer_slip_invoke(), sequencer_snap_exec(), sequencer_split_exec(), sequencer_strip_change_scene_poll(), sequencer_strip_color_tag_set_exec(), sequencer_strip_color_tag_set_poll(), sequencer_strip_has_path_poll(), sequencer_strip_is_text_poll(), sequencer_strip_transform_clear_exec(), sequencer_strip_transform_fit_exec(), sequencer_swap_exec(), sequencer_unlock_exec(), sequencer_unmute_exec(), sequencer_view_all_exec(), sequencer_view_has_preview_poll(), sequencer_view_preview_only_poll(), skip_fcurve_selected_data(), strip_modifier_active_poll(), transform_snap_sequencer_data_alloc(), tree_element_sequence_activate(), and tree_element_sequence_dup_activate().

◆ SEQ_eval_sequences()

void SEQ_eval_sequences ( struct Depsgraph *  depsgraph,
struct Scene *  scene,
struct ListBase *  seqbase 
)

Evaluate parts of sequences which needs to be done as a part of a dependency graph evaluation. This does NOT include actual rendering of the strips, but rather makes them up-to-date for animation playback and makes them ready for the sequencer's rendering pipeline to render them.

Definition at line 978 of file sequencer.c.

References BKE_sound_ensure_scene(), DEG_debug_print_eval(), depsgraph, Scene::ed, Scene::id, ID::name, scene, SEQ_edit_update_muting(), SEQ_for_each_callback(), SEQ_sound_update_bounds_all(), and seq_update_seq_cb().

◆ seq_free_sequence_recurse()

void seq_free_sequence_recurse ( struct Scene *  scene,
struct Sequence *  seq,
bool  do_id_user 
)

Cache must be freed before calling this function since it leaves the seqbase in an invalid state.

Definition at line 229 of file sequencer.c.

References ListBase::first, Sequence::next, scene, seq_sequence_free_ex(), and Sequence::seqbase.

Referenced by SEQ_clipboard_free(), SEQ_editing_free(), and SEQ_proxy_rebuild_finish().

◆ seq_free_strip()

static void seq_free_strip ( Strip *  strip)
static

◆ SEQ_meta_stack_active_get()

MetaStack* SEQ_meta_stack_active_get ( const Editing *  ed)

◆ seq_meta_stack_alloc()

static MetaStack* seq_meta_stack_alloc ( const Scene *  scene,
Sequence *  seq_meta 
)
static

◆ SEQ_meta_stack_pop()

Sequence* SEQ_meta_stack_pop ( struct Editing *  ed)

Close last Meta strip open for editing.

Parameters
edsequence editor data

Definition at line 453 of file sequencer.c.

References BLI_remlink(), MEM_freeN, Editing::metastack, MetaStack::old_channels, MetaStack::oldbasep, MetaStack::parseq, SEQ_channels_displayed_set(), SEQ_meta_stack_active_get(), and SEQ_seqbase_active_set().

Referenced by sequencer_meta_toggle_exec().

◆ SEQ_meta_stack_set()

void SEQ_meta_stack_set ( const Scene *  scene,
Sequence *  seqm 
)

◆ seq_new_fix_links_recursive()

static void seq_new_fix_links_recursive ( Sequence *  seq)
static

◆ seq_read_data_cb()

static bool seq_read_data_cb ( Sequence *  seq,
void *  user_data 
)
static

◆ seq_read_lib_cb()

static bool seq_read_lib_cb ( Sequence *  seq,
void *  user_data 
)
static

◆ SEQ_seqbase_active_set()

void SEQ_seqbase_active_set ( struct Editing *  ed,
struct ListBase *  seqbase 
)

Set seqbase that is being viewed currently. This can be main seqbase or meta strip seqbase

Parameters
edsequence editor data
seqbaseListBase with strips

Definition at line 397 of file sequencer.c.

References Editing::seqbasep.

Referenced by SEQ_meta_stack_pop(), SEQ_meta_stack_set(), seq_prefetch_update_active_seqbase(), and seq_update_meta_disp_range().

◆ SEQ_sequence_alloc()

Sequence* SEQ_sequence_alloc ( ListBase *  lb,
int  timeline_frame,
int  machine,
int  type 
)

◆ SEQ_sequence_base_dupli_recursive()

void SEQ_sequence_base_dupli_recursive ( const Scene *  scene_src,
Scene *  scene_dst,
ListBase *  nseqbase,
const ListBase *  seqbase,
int  dupe_flag,
const int  flag 
)

◆ SEQ_sequence_dupli_recursive()

Sequence* SEQ_sequence_dupli_recursive ( const Scene *  scene_src,
Scene *  scene_dst,
ListBase *  new_seq_list,
Sequence *  seq,
int  dupe_flag 
)

◆ SEQ_sequence_free()

void SEQ_sequence_free ( Scene *  scene,
Sequence *  seq 
)

Definition at line 224 of file sequencer.c.

References scene, and seq_sequence_free_ex().

Referenced by SEQ_edit_remove_flagged_sequences(), and thumbnail_hash_data_free().

◆ seq_sequence_free_ex()

static void seq_sequence_free_ex ( Scene *  scene,
Sequence *  seq,
const bool  do_cache,
const bool  do_id_user 
)
static

◆ seq_set_strip_done_cb()

static bool seq_set_strip_done_cb ( Sequence *  seq,
void *  UNUSEDuserdata 
)
static

Definition at line 672 of file sequencer.c.

References Strip::done, and Sequence::strip.

Referenced by SEQ_blend_write().

◆ seq_strip_alloc()

static Strip* seq_strip_alloc ( int  type)
static

◆ seq_strip_proxy_alloc()

StripProxy* seq_strip_proxy_alloc ( void  )

◆ SEQ_tool_settings_copy()

SequencerToolSettings* SEQ_tool_settings_copy ( SequencerToolSettings *  tool_settings)

Definition at line 664 of file sequencer.c.

References MEM_dupallocN.

Referenced by BKE_toolsettings_copy().

◆ SEQ_tool_settings_ensure()

SequencerToolSettings* SEQ_tool_settings_ensure ( Scene *  scene)

◆ SEQ_tool_settings_fit_method_get()

eSeqImageFitMethod SEQ_tool_settings_fit_method_get ( Scene *  scene)

◆ SEQ_tool_settings_fit_method_set()

void SEQ_tool_settings_fit_method_set ( Scene *  scene,
eSeqImageFitMethod  fit_method 
)

◆ SEQ_tool_settings_free()

void SEQ_tool_settings_free ( SequencerToolSettings *  tool_settings)

Definition at line 341 of file sequencer.c.

References MEM_freeN.

Referenced by BKE_toolsettings_free().

◆ SEQ_tool_settings_init()

SequencerToolSettings* SEQ_tool_settings_init ( void  )

◆ SEQ_tool_settings_overlap_mode_get()

eSeqOverlapMode SEQ_tool_settings_overlap_mode_get ( Scene *  scene)

◆ SEQ_tool_settings_pivot_point_get()

int SEQ_tool_settings_pivot_point_get ( Scene *  scene)

Definition at line 382 of file sequencer.c.

References SequencerToolSettings::pivot_point, scene, and SEQ_tool_settings_ensure().

Referenced by t_around_get().

◆ SEQ_tool_settings_snap_distance_get()

int SEQ_tool_settings_snap_distance_get ( Scene *  scene)

◆ SEQ_tool_settings_snap_flag_get()

short SEQ_tool_settings_snap_flag_get ( Scene *  scene)

◆ SEQ_tool_settings_snap_mode_get()

short SEQ_tool_settings_snap_mode_get ( Scene *  scene)

◆ seq_update_seq_cb()

static bool seq_update_seq_cb ( Sequence *  seq,
void *  user_data 
)
static

◆ SEQ_valid_strip_channel()

bool SEQ_valid_strip_channel ( Sequence *  seq)

Definition at line 653 of file sequencer.c.

References Sequence::machine, and MAXSEQ.

Referenced by link_recurs_seq(), and SEQ_transform_seqbase_shuffle_ex().

◆ seq_write_data_cb()

static bool seq_write_data_cb ( Sequence *  seq,
void *  userdata 
)
static

◆ sequence_dupli_recursive_do()

static Sequence* sequence_dupli_recursive_do ( const Scene *  scene_src,
Scene *  scene_dst,
ListBase *  new_seq_list,
Sequence *  seq,
const int  dupe_flag 
)
static