diff options
Diffstat (limited to 'source/blender/blenkernel/BKE_sequencer.h')
-rw-r--r-- | source/blender/blenkernel/BKE_sequencer.h | 113 |
1 files changed, 77 insertions, 36 deletions
diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index 0766012b4a5..eb19fce94e5 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -46,6 +46,11 @@ struct StripElem; #define BUILD_SEQAR_COUNT_CURRENT 1 #define BUILD_SEQAR_COUNT_CHILDREN 2 +#define EARLY_NO_INPUT -1 +#define EARLY_DO_EFFECT 0 +#define EARLY_USE_INPUT_1 1 +#define EARLY_USE_INPUT_2 2 + /* sequence iterator */ typedef struct SeqIterator { @@ -78,6 +83,22 @@ void seq_array(struct Editing *ed, struct Sequence ***seqarray, int *tot, int us seq_end(&iter); \ } +typedef struct SeqRenderData { + struct Main *bmain; + struct Scene *scene; + int rectx; + int recty; + int preview_render_size; + int motion_blur_samples; + float motion_blur_shutter; +} SeqRenderData; + +SeqRenderData seq_new_render_data( + struct Main * bmain, struct Scene * scene, + int rectx, int recty, int preview_render_size); + +int seq_cmp_render_data(const SeqRenderData * a, const SeqRenderData * b); +unsigned int seq_hash_render_data(const SeqRenderData * a); /* Wipe effect */ enum {DO_SINGLE_WIPE, DO_DOUBLE_WIPE, DO_BOX_WIPE, DO_CROSS_WIPE, @@ -92,7 +113,7 @@ struct SeqEffectHandle { /* number of input strips needed (called directly after construction) */ - int (*num_inputs)(); + int (*num_inputs)(void); /* load is called first time after readblenfile in get_sequence_effect automatically */ @@ -124,53 +145,61 @@ struct SeqEffectHandle { (mixed cases are handled one layer up...) */ struct ImBuf* (*execute)( - struct Main *bmain, - struct Scene *scene, struct Sequence *seq, float cfra, + SeqRenderData context, + struct Sequence *seq, float cfra, float facf0, float facf1, - int x, int y, int preview_render_size, struct ImBuf *ibuf1, struct ImBuf *ibuf2, struct ImBuf *ibuf3); }; /* ********************* prototypes *************** */ -/* sequence.c */ -void printf_strip(struct Sequence *seq); +/* ********************************************************************** + * sequence.c + + * sequencer render functions + ********************************************************************** */ + +struct ImBuf *give_ibuf_seq(SeqRenderData context, float cfra, int chanshown); +struct ImBuf *give_ibuf_seq_threaded(SeqRenderData context, float cfra, int chanshown); +struct ImBuf *give_ibuf_seq_direct(SeqRenderData context, float cfra, struct Sequence *seq); +struct ImBuf *give_ibuf_seqbase(SeqRenderData context, float cfra, int chan_shown, struct ListBase *seqbasep); +void give_ibuf_prefetch_request(SeqRenderData context, float cfra, int chan_shown); /* apply functions recursively */ int seqbase_recursive_apply(struct ListBase *seqbase, int (*apply_func)(struct Sequence *seq, void *), void *arg); int seq_recursive_apply(struct Sequence *seq, int (*apply_func)(struct Sequence *, void *), void *arg); -// extern +/* maintainance functions, mostly for RNA */ +// extern void seq_free_sequence(struct Scene *scene, struct Sequence *seq); void seq_free_strip(struct Strip *strip); void seq_free_editing(struct Scene *scene); void seq_free_clipboard(void); struct Editing *seq_give_editing(struct Scene *scene, int alloc); -char *give_seqname(struct Sequence *seq); -struct ImBuf *give_ibuf_seq(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size); -struct ImBuf *give_ibuf_seq_threaded(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chanshown, int render_size); -struct ImBuf *give_ibuf_seq_direct(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int render_size, struct Sequence *seq); -struct ImBuf *give_ibuf_seqbase(struct Main *bmain, struct Scene *scene, int rectx, int recty, int cfra, int chan_shown, int render_size, struct ListBase *seqbasep); -void give_ibuf_prefetch_request(int rectx, int recty, int cfra, int chanshown, int render_size); +const char *give_seqname(struct Sequence *seq); void calc_sequence(struct Scene *scene, struct Sequence *seq); void calc_sequence_disp(struct Scene *scene, struct Sequence *seq); void new_tstripdata(struct Sequence *seq); -void reload_sequence_new_file(struct Main *bmain, struct Scene *scene, struct Sequence * seq, int lock_range); +void reload_sequence_new_file(struct Scene *scene, struct Sequence * seq, int lock_range); void sort_seq(struct Scene *scene); void build_seqar_cb(struct ListBase *seqbase, struct Sequence ***seqar, int *totseq, int (*test_func)(struct Sequence * seq)); int evaluate_seq_frame(struct Scene *scene, int cfra); struct StripElem *give_stripelem(struct Sequence *seq, int cfra); -// intern? +// intern +void printf_strip(struct Sequence *seq); // debugging function (unused) void update_changed_seq_and_deps(struct Scene *scene, struct Sequence *changed_seq, int len_change, int ibuf_change); int input_have_to_preprocess( - struct Scene *scene, struct Sequence * seq, - float cfra, int seqrectx, int seqrecty); + SeqRenderData context, struct Sequence * seq, float cfra); + +/* ********************************************************************** + seqcache.c -/* seqcache.c */ + Sequencer memory cache management functions + ********************************************************************** */ typedef enum { SEQ_STRIPELEM_IBUF, @@ -179,28 +208,39 @@ typedef enum { SEQ_STRIPELEM_IBUF_ENDSTILL } seq_stripelem_ibuf_t; -void seq_stripelem_cache_init(); -void seq_stripelem_cache_destruct(); +void seq_stripelem_cache_init(void); +void seq_stripelem_cache_destruct(void); -void seq_stripelem_cache_cleanup(); +void seq_stripelem_cache_cleanup(void); struct ImBuf * seq_stripelem_cache_get( - struct Sequence * seq, int rectx, int recty, + SeqRenderData context, struct Sequence * seq, float cfra, seq_stripelem_ibuf_t type); void seq_stripelem_cache_put( - struct Sequence * seq, int rectx, int recty, + SeqRenderData context, struct Sequence * seq, float cfra, seq_stripelem_ibuf_t type, struct ImBuf * nval); +/* ********************************************************************** + seqeffects.c -/* seqeffects.c */ -// intern? + Sequencer effect strip managment functions + ********************************************************************** +*/ + +/* intern */ struct SeqEffectHandle get_sequence_blend(struct Sequence *seq); void sequence_effect_speed_rebuild_map(struct Scene *scene, struct Sequence *seq, int force); -// extern +/* extern */ struct SeqEffectHandle get_sequence_effect(struct Sequence *seq); int get_sequence_effect_num_inputs(int seq_type); + +/* ********************************************************************** + Sequencer editing functions + ********************************************************************** +*/ + /* for transform but also could use elsewhere */ int seq_tx_get_start(struct Sequence *seq); int seq_tx_get_end(struct Sequence *seq); @@ -213,6 +253,7 @@ int seq_tx_test(struct Sequence * seq); int seq_single_check(struct Sequence *seq); void seq_single_fix(struct Sequence *seq); int seq_test_overlap(struct ListBase * seqbasep, struct Sequence *test); +void seq_translate(struct Scene *scene, struct Sequence *seq, int delta); struct ListBase *seq_seqbase(struct ListBase *seqbase, struct Sequence *seq); void seq_offset_animdata(struct Scene *scene, struct Sequence *seq, int ofs); void seq_dupe_animdata(struct Scene *scene, char *name_from, char *name_to); @@ -220,14 +261,14 @@ int shuffle_seq(struct ListBase * seqbasep, struct Sequence *test, struct Scene int shuffle_seq_time(ListBase * seqbasep, struct Scene *evil_scene); int seqbase_isolated_sel_check(struct ListBase *seqbase); void free_imbuf_seq(struct Scene *scene, struct ListBase * seqbasep, int check_mem_usage, int keep_file_handles); -struct Sequence *seq_dupli_recursive(struct Scene *scene, struct Sequence * seq, int dupe_flag); +struct Sequence *seq_dupli_recursive(struct Scene *scene, struct Scene *scene_to, struct Sequence * seq, int dupe_flag); int seq_swap(struct Sequence *seq_a, struct Sequence *seq_b); void seq_update_sound(struct Scene* scene, struct Sequence *seq); void seq_update_muting(struct Scene* scene, struct Editing *ed); void seqbase_sound_reload(struct Scene *scene, ListBase *seqbase); void seqbase_unique_name_recursive(ListBase *seqbasep, struct Sequence *seq); -void seqbase_dupli_recursive(struct Scene *scene, ListBase *nseqbase, ListBase *seqbase, int dupe_flag); +void seqbase_dupli_recursive(struct Scene *scene, struct Scene *scene_to, ListBase *nseqbase, ListBase *seqbase, int dupe_flag); void clear_scene_in_allseqs(struct Main *bmain, struct Scene *sce); @@ -252,17 +293,17 @@ typedef struct SeqLoadInfo { } SeqLoadInfo; /* SeqLoadInfo.flag */ -#define SEQ_LOAD_REPLACE_SEL 1<<0 -#define SEQ_LOAD_FRAME_ADVANCE 1<<1 -#define SEQ_LOAD_MOVIE_SOUND 1<<2 -#define SEQ_LOAD_SOUND_CACHE 1<<3 +#define SEQ_LOAD_REPLACE_SEL (1<<0) +#define SEQ_LOAD_FRAME_ADVANCE (1<<1) +#define SEQ_LOAD_MOVIE_SOUND (1<<2) +#define SEQ_LOAD_SOUND_CACHE (1<<3) /* seq_dupli' flags */ -#define SEQ_DUPE_UNIQUE_NAME 1<<0 -#define SEQ_DUPE_CONTEXT 1<<1 -#define SEQ_DUPE_ANIM 1<<2 -#define SEQ_DUPE_ALL 1<<3 /* otherwise only selected are copied */ +#define SEQ_DUPE_UNIQUE_NAME (1<<0) +#define SEQ_DUPE_CONTEXT (1<<1) +#define SEQ_DUPE_ANIM (1<<2) +#define SEQ_DUPE_ALL (1<<3) /* otherwise only selected are copied */ /* use as an api function */ typedef struct Sequence *(*SeqLoadFunc)(struct bContext *, ListBase *, struct SeqLoadInfo *); |