64 if (timeline_frame <= sta) {
65 frame_index = end - sta;
67 else if (timeline_frame >= end) {
71 frame_index = end - timeline_frame;
75 if (timeline_frame <= sta) {
78 else if (timeline_frame >= end) {
79 frame_index = end - sta;
82 frame_index = timeline_frame - sta;
91 frame_index -=
fmodf((
double)frame_index, (
double)seq->
strobe);
126 startofs = start - seq->
start;
130 endofs = seq->
start + seq->
len - end;
135 seq->
start + startofs,
219 else if (seq->
seq2) {
273 const bool do_skip_mute,
274 const bool do_center,
275 const bool do_unselected)
280 int dist, best_dist, best_frame = timeline_frame;
281 int seq_frames[2], seq_frames_tot;
289 return timeline_frame;
314 for (i = 0; i < seq_frames_tot; i++) {
315 const int seq_frame = seq_frames[i];
321 if (seq_frame < timeline_frame) {
322 dist = timeline_frame - seq_frame;
326 if (seq_frame > timeline_frame) {
327 dist = seq_frame - timeline_frame;
331 dist =
abs(seq_frame - timeline_frame);
335 if (dist < best_dist) {
336 best_frame = seq_frame;
360 return (
float)frs_sec / frs_sec_base;
392 if (seqbase ==
NULL) {
397 if (rect->
xmin > seq->startdisp - 1) {
398 rect->
xmin = seq->startdisp - 1;
400 if (rect->
xmax < seq->enddisp + 1) {
401 rect->
xmax = seq->enddisp + 1;
403 if (rect->
ymax < seq->machine + 2) {
404 rect->
ymax = seq->machine + 2;
419 const int initial_frame,
425 const int sfra = (int)rectf.
xmin;
426 const int efra = (
int)rectf.
xmax;
427 int timeline_frame = initial_frame;
432 for (; timeline_frame >= sfra; timeline_frame--) {
438 timeline_frame = initial_frame;
442 for (; timeline_frame <= efra; timeline_frame++) {
450 for (; timeline_frame <= efra; timeline_frame++) {
452 const int gap_end_frame = timeline_frame;
float BKE_movieclip_get_fps(struct MovieClip *clip)
void BKE_sound_move_scene_sound(struct Scene *scene, void *handle, int startframe, int endframe, int frameskip, double audio_offset)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
MINLINE int min_ii(int a, int b)
MINLINE int max_ii(int a, int b)
MINLINE int min_iii(int a, int b, int c)
MINLINE int max_iii(int a, int b, int c)
bool IMB_anim_get_fps(struct anim *anim, short *frs_sec, float *frs_sec_base, bool no_av_base)
int SEQ_render_evaluate_frame(ListBase *seqbase, int timeline_frame)
MetaStack * SEQ_meta_stack_active_get(const Editing *ed)
Editing * SEQ_editing_get(Scene *scene, bool alloc)
static int metaseq_end(Sequence *metaseq)
static void seq_time_update_meta_strip(Scene *scene, Sequence *seq_meta)
int SEQ_time_cmp_time_startdisp(const void *a, const void *b)
void SEQ_timeline_boundbox(const Scene *scene, const ListBase *seqbase, rctf *rect)
void seq_time_gap_info_get(const Scene *scene, ListBase *seqbase, const int initial_frame, GapInfo *r_gap_info)
static int metaseq_start(Sequence *metaseq)
float SEQ_time_sequence_get_fps(Scene *scene, Sequence *seq)
int SEQ_time_find_next_prev_edit(Scene *scene, int timeline_frame, const short side, const bool do_skip_mute, const bool do_center, const bool do_unselected)
static void seq_update_sound_bounds_recursive_impl(Scene *scene, Sequence *metaseq, int start, int end)
float seq_give_frame_index(Sequence *seq, float timeline_frame)
void seq_update_sound_bounds_recursive(Scene *scene, Sequence *metaseq)
static void seq_time_update_meta_strip_range(Scene *scene, Sequence *seq_meta)
void SEQ_time_update_sequence_bounds(Scene *scene, Sequence *seq)
void SEQ_time_update_sequence(Scene *scene, Sequence *seq)
__forceinline const avxi abs(const avxi &a)
void seq_open_anim_file(Scene *scene, Sequence *seq, bool openfile)