Blender V4.3
sequencer.cc File Reference
#include "DNA_listBase.h"
#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 "BLI_path_utils.hh"
#include "BKE_fcurve.hh"
#include "BKE_idprop.hh"
#include "BKE_lib_id.hh"
#include "BKE_main.hh"
#include "BKE_scene.hh"
#include "BKE_sound.h"
#include "DEG_depsgraph.hh"
#include "IMB_imbuf.hh"
#include "SEQ_channels.hh"
#include "SEQ_connect.hh"
#include "SEQ_edit.hh"
#include "SEQ_effects.hh"
#include "SEQ_iterator.hh"
#include "SEQ_modifier.hh"
#include "SEQ_proxy.hh"
#include "SEQ_relations.hh"
#include "SEQ_retiming.hh"
#include "SEQ_select.hh"
#include "SEQ_sequencer.hh"
#include "SEQ_sound.hh"
#include "SEQ_thumbnail_cache.hh"
#include "SEQ_time.hh"
#include "SEQ_utils.hh"
#include "BLO_read_write.hh"
#include "image_cache.hh"
#include "prefetch.hh"
#include "sequencer.hh"
#include "utils.hh"

Go to the source code of this file.

Macros

#define DNA_DEPRECATED_ALLOW
 

Functions

static bool seq_set_strip_done_cb (Sequence *seq, void *)
 
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_doversion_250_sound_proxy_update_cb (Sequence *seq, void *user_data)
 
void SEQ_doversion_250_sound_proxy_update (Main *bmain, Editing *ed)
 
static bool seq_mute_sound_strips_cb (Sequence *seq, void *user_data)
 
static void seq_update_mix_sounds (Scene *scene, Sequence *seq)
 
static void seq_update_sound_properties (const Scene *scene, const Sequence *seq)
 
static void seq_update_sound_modifiers (Sequence *seq)
 
static bool must_update_strip_sound (Scene *scene, Sequence *seq)
 
static void seq_update_sound_strips (Scene *scene, Sequence *seq)
 
static bool scene_sequencer_is_used (const Scene *scene, ListBase *seqbase)
 
static void seq_update_scene_strip_sound (const Scene *scene, Sequence *seq)
 
static bool seq_sound_update_cb (Sequence *seq, void *user_data)
 
void SEQ_eval_sequences (Depsgraph *depsgraph, Scene *scene, ListBase *seqbase)
 
Allocate / Free Functions
StripProxyseq_strip_proxy_alloc ()
 
static Stripseq_strip_alloc (int type)
 
static void seq_free_strip (Strip *strip)
 
SequenceSEQ_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)
 
EditingSEQ_editing_get (const Scene *scene)
 
EditingSEQ_editing_ensure (Scene *scene)
 
void SEQ_editing_free (Scene *scene, const bool do_id_user)
 
static void seq_new_fix_links_recursive (Sequence *seq)
 
SequencerToolSettingsSEQ_tool_settings_init ()
 
SequencerToolSettingsSEQ_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)
 
ListBaseSEQ_active_seqbase_get (const Editing *ed)
 
void SEQ_seqbase_active_set (Editing *ed, ListBase *seqbase)
 
static MetaStackseq_meta_stack_alloc (const Scene *scene, Sequence *seq_meta)
 
MetaStackSEQ_meta_stack_active_get (const Editing *ed)
 
void SEQ_meta_stack_set (const Scene *scene, Sequence *dst_seq)
 
SequenceSEQ_meta_stack_pop (Editing *ed)
 
Duplicate Functions
static Sequenceseq_dupli (const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, int dupe_flag, const int flag)
 
static Sequencesequence_dupli_recursive_do (const Scene *scene_src, Scene *scene_dst, ListBase *new_seq_list, Sequence *seq, const int dupe_flag)
 
SequenceSEQ_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_is_valid_strip_channel (const Sequence *seq)
 
SequencerToolSettingsSEQ_tool_settings_copy (SequencerToolSettings *tool_settings)
 

Macro Definition Documentation

◆ DNA_DEPRECATED_ALLOW

#define DNA_DEPRECATED_ALLOW

Definition at line 12 of file sequencer.cc.

Function Documentation

◆ must_update_strip_sound()

static bool must_update_strip_sound ( Scene * scene,
Sequence * seq )
static

◆ scene_sequencer_is_used()

static bool scene_sequencer_is_used ( const Scene * scene,
ListBase * seqbase )
static

◆ SEQ_active_seqbase_get()

ListBase * SEQ_active_seqbase_get ( const Editing * ed)

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

Parameters
edsequence editor data
Returns
pointer to active seqbase. returns NULL if ed is NULL

Definition at line 416 of file sequencer.cc.

References Editing::seqbasep.

Referenced by all_strips_from_context(), blo_do_versions_pre250(), channel_draw_context_init(), createTransSeqData(), createTransSeqImageData(), draw_timeline_seq_display(), ED_sequencer_deselect_all(), ED_sequencer_selected_strips_from_context(), freeSeqData(), gizmo2d_calc_bounds(), gizmo2d_calc_rotation(), gizmo2d_calc_transform_orientation(), gizmo2d_calc_transform_pivot(), query_snap_sources_timeline(), query_snap_targets_timeline(), recalcData_sequencer_retiming(), retiming_key_overlap(), segment_speed_set_exec(), select_linked_internal(), select_linked_time_seq(), select_more_less_seq__internal(), seq_box_select_seq_from_preview(), seq_frame_apply_snap(), seq_get_strip_pivot_median(), seq_prefetch_frames(), seq_proxy_build_job(), seq_select_seq_from_preview(), seq_transform_cancel(), seq_view_collection_rect_timeline(), seqbase_active_get(), sequencer_connect_exec(), sequencer_delete_exec(), sequencer_disconnect_exec(), sequencer_drop_copy(), sequencer_enable_proxies_exec(), sequencer_meta_make_exec(), sequencer_meta_separate_exec(), sequencer_rebuild_proxy_exec(), sequencer_select_grouped_exec(), sequencer_select_side_of_frame(), sequencer_select_side_of_frame_exec(), sequencer_separate_images_exec(), sequencer_split_exec(), sequencer_swap_exec(), sequencer_view_all_exec(), strip_modifier_copy_exec(), and strip_speed_set_exec().

◆ SEQ_blend_read()

void SEQ_blend_read ( BlendDataReader * reader,
ListBase * seqbase )

Definition at line 922 of file sequencer.cc.

References SEQ_for_each_callback(), and seq_read_data_cb().

Referenced by scene_blend_read_data().

◆ SEQ_blend_write()

void SEQ_blend_write ( BlendWriter * writer,
ListBase * seqbase )

Read and Write functions for .blend file data.

Definition at line 803 of file sequencer.cc.

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

Referenced by scene_blend_write().

◆ SEQ_doversion_250_sound_proxy_update()

void SEQ_doversion_250_sound_proxy_update ( Main * bmain,
Editing * ed )

◆ seq_doversion_250_sound_proxy_update_cb()

◆ seq_dupli()

◆ SEQ_editing_ensure()

◆ SEQ_editing_free()

◆ SEQ_editing_get()

Editing * SEQ_editing_get ( const Scene * scene)

Definition at line 262 of file sequencer.cc.

Referenced by all_strips_from_context(), animchan_sync_fcurve_scene(), blo_do_versions_290(), blo_do_versions_300(), blender::ed::outliner::TreeDisplaySequencer::build_tree(), change_frame_apply(), channel_draw_context_init(), createTransSeqData(), createTransSeqImageData(), createTransSeqRetimingData(), do_versions_after_linking_300(), do_versions_after_linking_400(), draw_channels(), draw_timeline_seq_display(), draw_timeline_sfra_efra(), ED_imbuf_sample_poll(), ED_sequencer_can_select_handle(), ED_sequencer_deselect_all(), ED_sequencer_select_sequence_single(), ED_sequencer_selected_strips_from_context(), find_nearest_seq(), find_neighboring_sequence(), find_next_prev_sequence(), freeSeqData(), freeSeqData(), freeze_frame_add_from_retiming_selection(), gizmo2d_calc_bounds(), gizmo2d_calc_rotation(), gizmo2d_calc_transform_orientation(), gizmo2d_calc_transform_pivot(), gizmo2d_generic_poll(), mouseover_strips_sorted_get(), proxy_endjob(), query_snap_sources_preview(), query_snap_sources_timeline(), query_snap_targets_preview(), query_snap_targets_timeline(), recalcData_sequencer_retiming(), retiming_key_add_to_editable_strips(), retiming_key_overlap(), retiming_poll(), screen_ctx_selected_editable_sequences(), screen_ctx_selected_sequences(), screen_ctx_sequences(), segment_speed_set_exec(), select_linked_internal(), select_linked_time(), select_more_less_seq__internal(), seq_box_select_seq_from_preview(), SEQ_edit_move_strip_to_meta(), seq_edit_split_operation_permitted_check(), 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_filepath(), SEQ_relations_check_scene_recursion(), seq_relations_find_and_invalidate_metas(), SEQ_relations_free_all_anim_ibufs(), SEQ_render_give_ibuf(), seq_retiming_transition_offset(), 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(), seq_view_collection_rect_timeline(), seqbase_active_get(), SeqTransInfo(), blender::ed::outliner::sequence_fn(), sequencer_add_duplicate_exec(), sequencer_all_free_anim_ibufs(), sequencer_box_select_exec(), sequencer_clipboard_copy_exec(), sequencer_connect_exec(), sequencer_delete_exec(), sequencer_disable_one_time_properties(), sequencer_disconnect_exec(), sequencer_draw_preview(), 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_main_cursor(), 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_retiming_box_select_exec(), sequencer_retiming_data_show_exec(), sequencer_retiming_key_delete_exec(), sequencer_retiming_key_select_exec(), sequencer_retiming_mode_is_active(), sequencer_retiming_reset_exec(), sequencer_retiming_segment_speed_set_exec(), sequencer_retiming_select_all_exec(), sequencer_retiming_select_linked_time(), sequencer_scene_frame_range_update_exec(), sequencer_scene_frame_range_update_poll(), sequencer_select_exec(), sequencer_select_grouped_exec(), sequencer_select_handle_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_skip_for_handle_tweak(), sequencer_slip_exec(), sequencer_slip_invoke(), sequencer_slip_strips(), 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_editable_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(), sequencer_visible_strips_get(), skip_fcurve_selected_data(), strip_speed_get(), strip_speed_set_exec(), timeline_draw_context_get(), transition_add_from_retiming_selection(), blender::ed::outliner::tree_element_sequence_activate(), and blender::ed::outliner::tree_element_sequence_dup_activate().

◆ SEQ_eval_sequences()

void SEQ_eval_sequences ( Depsgraph * depsgraph,
Scene * scene,
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 1068 of file sequencer.cc.

References BKE_sound_ensure_scene(), DEG_debug_print_eval(), depsgraph, SEQ_edit_update_muting(), SEQ_for_each_callback(), SEQ_sound_update_bounds_all(), and seq_sound_update_cb().

◆ seq_free_sequence_recurse()

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

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

Definition at line 250 of file sequencer.cc.

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

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

◆ seq_free_strip()

static void seq_free_strip ( Strip * strip)
static

◆ SEQ_is_valid_strip_channel()

bool SEQ_is_valid_strip_channel ( const Sequence * seq)

Definition at line 696 of file sequencer.cc.

References Sequence::machine, and SEQ_MAX_CHANNELS.

Referenced by link_recurs_seq(), and SEQ_transform_seqbase_shuffle_ex().

◆ SEQ_meta_stack_active_get()

MetaStack * SEQ_meta_stack_active_get ( const Editing * ed)

Get MetaStack that corresponds to current level that is being viewed

Returns
pointer to meta stack

Definition at line 448 of file sequencer.cc.

References ListBase::last, and Editing::metastack.

Referenced by SEQ_meta_stack_pop(), seq_prefetch_update_active_seqbase(), seq_update_meta_disp_range(), sequencer_all_free_anim_ibufs(), and sequencer_view_all_exec().

◆ seq_meta_stack_alloc()

◆ SEQ_meta_stack_pop()

Sequence * SEQ_meta_stack_pop ( Editing * ed)

Close last Meta strip open for editing.

Parameters
edsequence editor data

Definition at line 481 of file sequencer.cc.

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 * dst_seq )

Open Meta strip content for editing.

Parameters
edsequence editor data
seqmmeta sequence or NULL for top level view

Definition at line 457 of file sequencer.cc.

References BLI_freelistN(), Editing::channels, Sequence::channels, Editing::metastack, SEQ_channels_displayed_set(), SEQ_editing_get(), seq_meta_stack_alloc(), SEQ_seqbase_active_set(), seq_sequence_lookup_meta_by_seq(), Editing::seqbase, and Sequence::seqbase.

Referenced by sequencer_meta_toggle_exec().

◆ seq_mute_sound_strips_cb()

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

Definition at line 948 of file sequencer.cc.

References BKE_sound_remove_scene_sound(), and Sequence::scene_sound.

Referenced by seq_update_scene_strip_sound().

◆ seq_new_fix_links_recursive()

◆ seq_read_data_cb()

◆ SEQ_seqbase_active_set()

void SEQ_seqbase_active_set ( Editing * ed,
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 425 of file sequencer.cc.

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()

◆ SEQ_sequence_base_dupli_recursive()

◆ 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 245 of file sequencer.cc.

References seq_sequence_free_ex().

Referenced by SEQ_edit_remove_flagged_sequences().

◆ seq_sequence_free_ex()

◆ seq_set_strip_done_cb()

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

Definition at line 710 of file sequencer.cc.

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

Referenced by SEQ_blend_write().

◆ seq_sound_update_cb()

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

◆ seq_strip_alloc()

◆ seq_strip_proxy_alloc()

◆ SEQ_tool_settings_copy()

SequencerToolSettings * SEQ_tool_settings_copy ( SequencerToolSettings * tool_settings)

Definition at line 701 of file sequencer.cc.

References MEM_dupallocN.

Referenced by BKE_toolsettings_copy().

◆ SEQ_tool_settings_ensure()

◆ 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 369 of file sequencer.cc.

References MEM_freeN().

Referenced by BKE_toolsettings_free().

◆ SEQ_tool_settings_init()

◆ 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 410 of file sequencer.cc.

References SequencerToolSettings::pivot_point, 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_mix_sounds()

◆ seq_update_scene_strip_sound()

◆ seq_update_sound_modifiers()

◆ seq_update_sound_properties()

◆ seq_update_sound_strips()

static void seq_update_sound_strips ( Scene * scene,
Sequence * seq )
static

◆ seq_write_data_cb()

◆ 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