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
StripProxyseq_strip_proxy_alloc (void)
 
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 (void)
 
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 *seqm)
 
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_valid_strip_channel (Sequence *seq)
 
SequencerToolSettingsSEQ_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