Example #1
0
/* returns true if early out is possible */
static bool prefetch_check_early_out(const bContext *C)
{
	SpaceClip *sc = CTX_wm_space_clip(C);
	MovieClip *clip = ED_space_clip_get_clip(sc);
	int first_uncached_frame, end_frame;
	int clip_len;

	clip_len = BKE_movieclip_get_duration(clip);

	/* check whether all the frames from prefetch range are cached */
	end_frame = prefetch_get_final_frame(C);

	first_uncached_frame =
		prefetch_find_uncached_frame(clip, sc->user.framenr, end_frame,
		                             sc->user.render_size, sc->user.render_flag, 1);

	if (first_uncached_frame > end_frame || first_uncached_frame == clip_len) {
		int start_frame = prefetch_get_start_frame(C);

		first_uncached_frame =
			prefetch_find_uncached_frame(clip, sc->user.framenr, start_frame,
			                             sc->user.render_size, sc->user.render_flag, -1);

		if (first_uncached_frame < start_frame)
			return true;
	}

	return false;
}
Example #2
0
static Sequence *rna_Sequences_new_clip(ID *id, Editing *ed,
                                        const char *name, MovieClip *clip, int channel,
                                        int frame_start)
{
	Scene *scene = (Scene *)id;
	Sequence *seq;

	seq = alloc_generic_sequence(ed, name, frame_start, channel, SEQ_TYPE_MOVIECLIP, clip->name);
	seq->clip = clip;
	seq->len =  BKE_movieclip_get_duration(clip);
	id_us_plus((ID *)clip);

	BKE_sequence_calc_disp(scene, seq);

	WM_main_add_notifier(NC_SCENE | ND_SEQUENCER, scene);

	return seq;
}
Example #3
0
static int clip_set_scene_frames_exec(bContext *C, wmOperator *UNUSED(op))
{
	MovieClip *clip = CTX_data_edit_movieclip(C);
	Scene *scene = CTX_data_scene(C);
	int clip_length;

	if (ELEM(NULL, scene, clip))
		return OPERATOR_CANCELLED;

	clip_length = BKE_movieclip_get_duration(clip);

	scene->r.sfra = clip->start_frame;
	scene->r.efra = scene->r.sfra + clip_length - 1;

	scene->r.efra = max_ii(scene->r.sfra, scene->r.efra);

	WM_event_add_notifier(C, NC_SCENE | ND_FRAME, scene);

	return OPERATOR_FINISHED;
}