64 const int start_frame,
67 memset(load_data, 0,
sizeof(
LoadData));
68 if (name !=
nullptr) {
71 if (path !=
nullptr) {
90 if (load_data->
name[0] !=
'\0') {
117 const char *role_colorspace_byte;
120 if (
STREQ(strip_colorspace, role_colorspace_byte)) {
123 const char *default_view_transform =
184 if (strip->
input1 ==
nullptr) {
246 if (strip->
len == 1) {
265 if (ibuf !=
nullptr) {
297 const double av_stream_offset = sound_stream.
start - load_data->r_video_stream_start;
298 const int frame_offset = av_stream_offset *
FPS;
310 if (!sound_loaded && !load_data->allow_invalid_file) {
322 strip->
sound = sound;
338 if (strip->
sound !=
nullptr) {
399 char filepath[
sizeof(load_data->
path)];
403 char colorspace[64] =
"\0";
404 bool is_multiview_loaded =
false;
413 const char *ext =
nullptr;
418 if (prefix[0] !=
'\0') {
419 for (
i = 0;
i < totfiles;
i++) {
430 is_multiview_loaded =
true;
434 if (is_multiview_loaded ==
false) {
443 float video_fps = 0.0f;
446 if (anim_arr[0] !=
nullptr) {
451 video_fps = fps_num / fps_denom;
456 scene->
r.frs_sec = fps_num;
457 scene->
r.frs_sec_base = fps_denom;
476 for (
i = 0;
i < totfiles;
i++) {
480 sanim->
anim = anim_arr[
i];
487 if (anim_arr[0] !=
nullptr) {
496 strip, orig_width, orig_height, scene->
r.xsch, scene->
r.ysch, load_data->
fit_method);
504 strip->
len = std::max(1, strip->
len);
515 data->stripdata->orig_width = orig_width;
516 data->stripdata->orig_height = orig_height;
517 data->stripdata->orig_fps = video_fps;
531 int prev_startdisp = 0, prev_enddisp = 0;
552 switch (strip->
type) {
560 strip->
len = std::max(strip->
len, 0);
566 bool is_multiview_loaded =
false;
578 const char *ext =
nullptr;
584 if (prefix[0] !=
'\0') {
585 for (
i = 0;
i < totfiles;
i++) {
602 is_multiview_loaded =
true;
606 if (is_multiview_loaded ==
false) {
622 if ((!sanim) || (!sanim->
anim)) {
635 strip->
len = std::max(strip->
len, 0);
639 if (strip->
clip ==
nullptr) {
647 strip->
len = std::max(strip->
len, 0);
650 if (strip->
mask ==
nullptr) {
656 strip->
len = std::max(strip->
len, 0);
666 strip->
len = std::max(strip->
len, 0);
676 strip->
len = std::max(strip->
len, 0);
692 Main *bmain,
Scene *scene,
Strip *strip,
bool *r_was_reloaded,
bool *r_can_produce_frames)
695 "This function is only implemented for movie strips.");
697 bool must_reload =
false;
719 *r_was_reloaded =
false;
720 *r_can_produce_frames =
true;
725 *r_was_reloaded =
true;
729 *r_can_produce_frames =
false;
737 *r_can_produce_frames =
false;
743 *r_can_produce_frames =
true;
MovieReader * 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)
struct SoundInfo SoundInfo
bool BKE_sound_stream_info_get(struct Main *main, const char *filepath, int stream, SoundStreamInfo *sound_info)
blender::ocio::Display ColorManagedDisplay
#define BLI_assert_msg(a, msg)
#define LISTBASE_FOREACH(type, var, list)
BLI_INLINE bool BLI_listbase_is_empty(const ListBase *lb)
void BLI_addtail(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
char * STRNCPY(char(&dst)[N], const char *src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
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 StripData StripData
struct StripElem StripElem
@ COLOR_ROLE_DEFAULT_BYTE
const char * IMB_colormanagement_role_colorspace_name_get(int role)
const char * IMB_colormanagement_display_get_default_view_transform_name(const ColorManagedDisplay *display)
const ColorManagedDisplay * IMB_colormanagement_display_get_named(const char *name)
ImBuf * IMB_load_image_from_filepath(const char *filepath, const int flags, char r_colorspace[IM_MAX_SPACE]=nullptr)
void IMB_freeImBuf(ImBuf *ibuf)
Read Guarded memory(de)allocation.
BMesh const char void * data
void * MEM_mallocN(size_t len, const char *str)
void * MEM_calloc_arrayN(size_t len, size_t size, const char *str)
void * MEM_callocN(size_t len, const char *str)
size_t(* MEM_allocN_len)(const void *vmemh)
void MEM_freeN(void *vmemh)
double MOV_get_start_offset_seconds(const MovieReader *anim)
int MOV_get_duration_frames(MovieReader *anim, IMB_Timecode_Type tc)
bool MOV_is_initialized_and_valid(const MovieReader *anim)
int MOV_get_image_width(const MovieReader *anim)
float MOV_get_fps(const MovieReader *anim)
IDProperty * MOV_load_metadata(MovieReader *anim)
bool MOV_get_fps_num_denom(const MovieReader *anim, short &r_fps_num, float &r_fps_denom)
int MOV_get_image_height(const MovieReader *anim)
void relations_strip_free_anim(Strip *strip)
Strip * lookup_meta_by_strip(Editing *ed, const Strip *key)
int time_right_handle_frame_get(const Scene *scene, const Strip *strip)
void add_movie_reload_if_needed(Main *bmain, Scene *scene, Strip *strip, bool *r_was_reloaded, bool *r_can_produce_frames)
void relations_invalidate_cache(Scene *scene, Strip *strip)
EffectHandle strip_effect_handle_get(Strip *strip)
void transform_translate_strip(Scene *evil_scene, Strip *strip, int delta)
void add_image_init_alpha_mode(Strip *strip)
static void strip_add_generic_update(Scene *scene, Strip *strip)
Strip * add_effect_strip(Scene *scene, ListBase *seqbase, LoadData *load_data)
void edit_strip_name_set(Scene *scene, Strip *strip, const char *new_name)
void add_image_load_file(Scene *scene, Strip *strip, size_t strip_frame, const char *filename)
void add_image_set_directory(Strip *strip, const char *dirpath)
int time_left_handle_frame_get(const Scene *, const Strip *strip)
Strip * add_sound_strip(Main *, Scene *, ListBase *, LoadData *)
const char * strip_give_name(const Strip *strip)
void relations_invalidate_cache_raw(Scene *scene, Strip *strip)
void add_sound_av_sync(Main *, Scene *, Strip *, LoadData *)
static void strip_add_set_view_transform(Scene *scene, Strip *strip, LoadData *load_data)
float time_start_frame_get(const Strip *strip)
Strip * add_meta_strip(Scene *scene, ListBase *seqbase, LoadData *load_data)
void add_reload_new_file(Main *bmain, Scene *scene, Strip *strip, const bool lock_range)
void time_update_meta_strip_range(const Scene *scene, Strip *strip_meta)
Strip * add_scene_strip(Scene *scene, ListBase *seqbase, LoadData *load_data)
Strip * add_image_strip(Main *bmain, Scene *scene, ListBase *seqbase, LoadData *load_data)
Strip * add_movieclip_strip(Scene *scene, ListBase *seqbase, LoadData *load_data)
void free_strip_proxy(Strip *strip)
void strip_unique_name_set(Scene *scene, ListBase *seqbasep, Strip *strip)
static void strip_add_set_name(Scene *scene, Strip *strip, LoadData *load_data)
@ SEQ_LOAD_SET_VIEW_TRANSFORM
@ SEQ_LOAD_MOVIE_SYNC_FPS
Strip * add_mask_strip(Scene *scene, ListBase *seqbase, LoadData *load_data)
void time_left_handle_frame_set(const Scene *scene, Strip *strip, int timeline_frame)
void time_right_handle_frame_set(const Scene *scene, Strip *strip, int timeline_frame)
void seq_anim_add_suffix(Scene *scene, MovieReader *anim, const int view_id)
Strip * strip_alloc(ListBase *lb, int timeline_frame, int channel, int type)
void strip_lookup_invalidate(const Editing *ed)
Strip * add_movie_strip(Main *bmain, Scene *scene, ListBase *seqbase, LoadData *load_data)
int seq_num_files(Scene *scene, char views_format, const bool is_multiview)
void add_load_data_init(LoadData *load_data, const char *name, const char *path, const int start_frame, const int channel)
void set_scale_to_fit(const Strip *strip, const int image_width, const int image_height, const int preview_width, const int preview_height, const eSeqImageFitMethod fit_method)
StripElem * render_give_stripelem(const Scene *scene, const Strip *strip, int timeline_frame)
void strip_time_effect_range_set(const Scene *scene, Strip *strip)
int effect_get_num_inputs(int strip_type)
void seq_multiview_name(Scene *scene, const int view_id, const char *prefix, const char *ext, char *r_path, size_t r_size)
ColorManagedViewSettings view_settings
ColorManagedDisplaySettings display_settings
struct SoundInfo::@231102123130065173371367072324216376355364061242 specs
struct MovieReader * anim
ColorManagedColorspaceSettings colorspace_settings
struct Stereo3dFormat * stereo3d_format
float media_playback_rate
void(* init)(Strip *strip)
struct blender::seq::LoadData::@153152276245330147232163273366304251377253076051 effect
eSeqImageFitMethod fit_method
struct blender::seq::LoadData::@023153262234117060143000107015250011003344047212 image
bool adjust_playback_rate
Stereo3dFormat * stereo3d_format
double r_video_stream_start