59 const int start_frame,
63 if (name !=
nullptr) {
66 if (path !=
nullptr) {
84 if (load_data->
name[0] !=
'\0') {
111 const char *role_colorspace_byte;
114 if (
STREQ(strip_colorspace, role_colorspace_byte)) {
116 scene->display_settings.display_device);
117 const char *default_view_transform =
119 STRNCPY(scene->view_settings.view_transform, default_view_transform);
257 if (ibuf !=
nullptr) {
261 for (
int i = 0; i < load_data->
image.
len; i++) {
268 seq, ibuf->
x, ibuf->
y, scene->r.xsch, scene->r.ysch, load_data->
fit_method);
291 const int frame_offset = av_stream_offset *
FPS;
332 if (seq->
sound !=
nullptr) {
393 char filepath[
sizeof(load_data->
path)];
397 char colorspace[64] =
"\0";
398 bool is_multiview_loaded =
false;
408 const char *ext =
nullptr;
413 if (prefix[0] !=
'\0') {
414 for (i = 0; i < totfiles; i++) {
425 is_multiview_loaded =
true;
429 if (is_multiview_loaded ==
false) {
438 float video_fps = 0.0f;
441 if (anim_arr[0] !=
nullptr) {
447 video_fps = fps_denom / fps_num;
451 scene->r.frs_sec = fps_denom;
452 scene->r.frs_sec_base = fps_num;
471 for (i = 0; i < totfiles; i++) {
475 sanim->
anim = anim_arr[i];
482 if (anim_arr[0] !=
nullptr) {
491 seq, orig_width, orig_height, scene->r.xsch, scene->r.ysch, load_data->
fit_method);
500 seq->
len = std::max(1, seq->
len);
527 int prev_startdisp = 0, prev_enddisp = 0;
564 bool is_multiview_loaded =
false;
576 const char *ext =
nullptr;
582 if (prefix[0] !=
'\0') {
583 for (i = 0; i < totfiles; i++) {
600 is_multiview_loaded =
true;
604 if (is_multiview_loaded ==
false) {
620 if ((!sanim) || (!sanim->
anim)) {
639 if (seq->
clip ==
nullptr) {
652 if (seq->
mask ==
nullptr) {
700 Main *bmain,
Scene *scene,
Sequence *seq,
bool *r_was_reloaded,
bool *r_can_produce_frames)
703 "This function is only implemented for movie strips.");
705 bool must_reload =
false;
727 *r_was_reloaded =
false;
728 *r_can_produce_frames =
true;
733 *r_was_reloaded =
true;
737 *r_can_produce_frames =
false;
745 *r_can_produce_frames =
false;
751 *r_can_produce_frames =
true;
ImBufAnim * openanim(const char *filepath, int flags, int streamindex, char colorspace[IMA_MAX_SPACE])
void BKE_id_free(Main *bmain, void *idv)
void id_us_ensure_real(ID *id)
const char * BKE_main_blendfile_path(const Main *bmain) ATTR_NONNULL()
const char * BKE_main_blendfile_path_from_global()
int BKE_mask_get_duration(struct Mask *mask)
int BKE_movieclip_get_duration(struct MovieClip *clip)
void BKE_scene_multiview_view_prefix_get(Scene *scene, const char *filepath, char *r_prefix, const char **r_ext)
float BKE_sound_get_length(struct Main *bmain, struct bSound *sound)
bool BKE_sound_info_get(struct Main *main, struct bSound *sound, SoundInfo *sound_info)
struct bSound * BKE_sound_new_file(struct Main *bmain, const char *filepath)
bool BKE_sound_stream_info_get(struct Main *main, const char *filepath, int stream, SoundStreamInfo *sound_info)
#define BLI_assert_msg(a, msg)
BLI_INLINE bool BLI_listbase_is_empty(const struct ListBase *lb)
#define LISTBASE_FOREACH(type, var, list)
void BLI_addtail(struct ListBase *listbase, void *vlink) ATTR_NONNULL(1)
bool BLI_path_abs(char path[FILE_MAX], const char *basepath) ATTR_NONNULL(1
#define BLI_path_join(...)
void BLI_path_split_dir_file(const char *filepath, char *dir, size_t dir_maxncpy, char *file, size_t file_maxncpy) ATTR_NONNULL(1
#define STRNCPY(dst, src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
typedef double(DMatrix)[4][4]
void DEG_id_tag_update(ID *id, unsigned int flags)
@ ID_RECALC_SEQUENCER_STRIPS
@ SEQ_SINGLE_FRAME_CONTENT
@ SEQ_USE_EFFECT_DEFAULT_FADE
@ SEQ_AUDIO_DRAW_WAVEFORM
struct StripElem StripElem
ColorManagedDisplay * IMB_colormanagement_display_get_named(const char *name)
const char * IMB_colormanagement_display_get_default_view_transform_name(ColorManagedDisplay *display)
const char * IMB_colormanagement_role_colorspace_name_get(int role)
@ COLOR_ROLE_DEFAULT_BYTE
bool IMB_anim_can_produce_frames(const ImBufAnim *anim)
int IMB_anim_get_image_height(ImBufAnim *anim)
double IMD_anim_get_offset(ImBufAnim *anim)
bool IMB_anim_get_fps(const ImBufAnim *anim, bool no_av_base, short *r_frs_sec, float *r_frs_sec_base)
int IMB_anim_get_image_width(ImBufAnim *anim)
ImBuf * IMB_loadiffname(const char *filepath, int flags, char colorspace[IM_MAX_SPACE])
int IMB_anim_get_duration(ImBufAnim *anim, IMB_Timecode_Type tc)
Contains defines and structs used throughout the imbuf module.
Read Guarded memory(de)allocation.
@ SEQ_LOAD_SET_VIEW_TRANSFORM
@ SEQ_LOAD_MOVIE_SYNC_FPS
draw_view in_light_buf[] float
SeqEffectHandle SEQ_effect_handle_get(Sequence *seq)
int SEQ_effect_get_num_inputs(int seq_type)
void IMB_freeImBuf(ImBuf *)
void *(* MEM_mallocN)(size_t len, const char *str)
size_t(* MEM_allocN_len)(const void *vmemh)
void MEM_freeN(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
ccl_device_inline float3 ceil(const float3 a)
void seq_anim_add_suffix(Scene *scene, ImBufAnim *anim, const int view_id)
int seq_num_files(Scene *scene, char views_format, const bool is_multiview)
void seq_multiview_name(Scene *scene, const int view_id, const char *prefix, const char *ext, char *r_path, size_t r_size)
void free_proxy_seq(Sequence *seq)
StripElem * SEQ_render_give_stripelem(const Scene *scene, const Sequence *seq, int timeline_frame)
Sequence * seq_sequence_lookup_meta_by_seq(const Scene *scene, const Sequence *key)
void SEQ_sequence_lookup_invalidate(const Scene *scene)
const char * SEQ_sequence_give_name(const Sequence *seq)
void SEQ_sequence_base_unique_name_recursive(Scene *scene, ListBase *seqbasep, Sequence *seq)
void SEQ_set_scale_to_fit(const Sequence *seq, const int image_width, const int image_height, const int preview_width, const int preview_height, const eSeqImageFitMethod fit_method)
Sequence * SEQ_sequence_alloc(ListBase *lb, int timeline_frame, int machine, int type)
Sequence * SEQ_add_scene_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
Sequence * SEQ_add_movieclip_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
Sequence * SEQ_add_effect_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
void SEQ_add_sound_av_sync(Main *, Scene *, Sequence *, SeqLoadData *)
Sequence * SEQ_add_mask_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
Sequence * SEQ_add_movie_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
static void seq_add_set_name(Scene *scene, Sequence *seq, SeqLoadData *load_data)
void SEQ_add_image_set_directory(Sequence *seq, const char *dirpath)
void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, const bool lock_range)
Sequence * SEQ_add_meta_strip(Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
void SEQ_add_image_init_alpha_mode(Sequence *seq)
static void seq_add_set_view_transform(Scene *scene, Sequence *seq, SeqLoadData *load_data)
void SEQ_add_image_load_file(Scene *scene, Sequence *seq, size_t strip_frame, const char *filename)
Sequence * SEQ_add_sound_strip(Main *, Scene *, ListBase *, SeqLoadData *)
void SEQ_add_load_data_init(SeqLoadData *load_data, const char *name, const char *path, const int start_frame, const int channel)
void SEQ_add_movie_reload_if_needed(Main *bmain, Scene *scene, Sequence *seq, bool *r_was_reloaded, bool *r_can_produce_frames)
static void seq_add_generic_update(Scene *scene, Sequence *seq)
Sequence * SEQ_add_image_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqLoadData *load_data)
void SEQ_edit_sequence_name_set(Scene *scene, Sequence *seq, const char *new_name)
void SEQ_relations_invalidate_cache_raw(Scene *scene, Sequence *seq)
void SEQ_relations_sequence_free_anim(Sequence *seq)
void SEQ_relations_invalidate_cache_composite(Scene *scene, Sequence *seq)
void SEQ_time_right_handle_frame_set(const Scene *scene, Sequence *seq, int timeline_frame)
void SEQ_time_update_meta_strip_range(const Scene *scene, Sequence *seq_meta)
void SEQ_time_left_handle_frame_set(const Scene *scene, Sequence *seq, int timeline_frame)
int SEQ_time_left_handle_frame_get(const Scene *, const Sequence *seq)
void seq_time_effect_range_set(const Scene *scene, Sequence *seq)
float SEQ_time_start_frame_get(const Sequence *seq)
int SEQ_time_right_handle_frame_get(const Scene *scene, const Sequence *seq)
void(* init)(Sequence *seq)
struct SeqLoadData::@1364 effect
eSeqImageFitMethod fit_method
bool adjust_playback_rate
Stereo3dFormat * stereo3d_format
struct SeqLoadData::@1363 image
double r_video_stream_start
float media_playback_rate
struct Stereo3dFormat * stereo3d_format
struct SoundInfo::@58 specs
ColorManagedColorspaceSettings colorspace_settings