diff --git a/source/blender/blenkernel/BKE_image.h b/source/blender/blenkernel/BKE_image.h index 3b65436f507..2f32fc6f0f5 100644 --- a/source/blender/blenkernel/BKE_image.h +++ b/source/blender/blenkernel/BKE_image.h @@ -19,6 +19,7 @@ extern "C" { struct Depsgraph; struct ID; struct ImBuf; +struct ImBufAnim; struct Image; struct ImageFormatData; struct ImagePool; @@ -31,7 +32,6 @@ struct RenderResult; struct ReportList; struct Scene; struct StampData; -struct anim; #define IMA_MAX_SPACE 64 #define IMA_UDIM_MAX 2000 @@ -108,14 +108,14 @@ int BKE_imbuf_write_as(struct ImBuf *ibuf, /** * Used by sequencer too. */ -struct anim *openanim(const char *filepath, - int flags, - int streamindex, - char colorspace[IMA_MAX_SPACE]); -struct anim *openanim_noload(const char *filepath, - int flags, - int streamindex, - char colorspace[IMA_MAX_SPACE]); +struct ImBufAnim *openanim(const char *filepath, + int flags, + int streamindex, + char colorspace[IMA_MAX_SPACE]); +struct ImBufAnim *openanim_noload(const char *filepath, + int flags, + int streamindex, + char colorspace[IMA_MAX_SPACE]); void BKE_image_tag_time(struct Image *ima); diff --git a/source/blender/blenkernel/intern/image.cc b/source/blender/blenkernel/intern/image.cc index 1dbb23f5718..abddd5e3486 100644 --- a/source/blender/blenkernel/intern/image.cc +++ b/source/blender/blenkernel/intern/image.cc @@ -2626,20 +2626,23 @@ int BKE_imbuf_write_stamp(const Scene *scene, return BKE_imbuf_write(ibuf, filepath, imf); } -anim *openanim_noload(const char *filepath, - int flags, - int streamindex, - char colorspace[IMA_MAX_SPACE]) +ImBufAnim *openanim_noload(const char *filepath, + int flags, + int streamindex, + char colorspace[IMA_MAX_SPACE]) { - anim *anim; + ImBufAnim *anim; anim = IMB_open_anim(filepath, flags, streamindex, colorspace); return anim; } -anim *openanim(const char *filepath, int flags, int streamindex, char colorspace[IMA_MAX_SPACE]) +ImBufAnim *openanim(const char *filepath, + int flags, + int streamindex, + char colorspace[IMA_MAX_SPACE]) { - anim *anim; + ImBufAnim *anim; ImBuf *ibuf; anim = IMB_open_anim(filepath, flags, streamindex, colorspace); diff --git a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_movieclip.h b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_movieclip.h index 4948afa4665..cb559a1e6ff 100644 --- a/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_movieclip.h +++ b/source/blender/depsgraph/intern/eval/deg_eval_runtime_backup_movieclip.h @@ -10,7 +10,7 @@ struct MovieClip; struct MovieClipCache; -struct anim; +struct ImBufAnim; namespace blender::deg { @@ -26,7 +26,7 @@ class MovieClipBackup { void init_from_movieclip(MovieClip *movieclip); void restore_to_movieclip(MovieClip *movieclip); - struct anim *anim; + struct ImBufAnim *anim; struct MovieClipCache *cache; }; diff --git a/source/blender/editors/space_image/image_buttons.cc b/source/blender/editors/space_image/image_buttons.cc index f3188719f4d..3e0feb4a9ac 100644 --- a/source/blender/editors/space_image/image_buttons.cc +++ b/source/blender/editors/space_image/image_buttons.cc @@ -1242,7 +1242,7 @@ void uiTemplateImageInfo(uiLayout *layout, bContext *C, Image *ima, ImageUser *i int duration = 0; if (ima->source == IMA_SRC_MOVIE && BKE_image_has_anim(ima)) { - anim *anim = ((ImageAnim *)ima->anims.first)->anim; + ImBufAnim *anim = ((ImageAnim *)ima->anims.first)->anim; if (anim) { duration = IMB_anim_get_duration(anim, IMB_TC_RECORD_RUN); } diff --git a/source/blender/editors/space_image/image_ops.cc b/source/blender/editors/space_image/image_ops.cc index 9388977e5c9..b8c22d8430a 100644 --- a/source/blender/editors/space_image/image_ops.cc +++ b/source/blender/editors/space_image/image_ops.cc @@ -1702,7 +1702,7 @@ static int image_match_len_exec(bContext *C, wmOperator * /*op*/) return OPERATOR_CANCELLED; } - anim *anim = ((ImageAnim *)ima->anims.first)->anim; + ImBufAnim *anim = ((ImageAnim *)ima->anims.first)->anim; if (!anim) { return OPERATOR_CANCELLED; } diff --git a/source/blender/editors/space_sequencer/sequencer_drag_drop.cc b/source/blender/editors/space_sequencer/sequencer_drag_drop.cc index 11dd9abe98b..dc87cd0516b 100644 --- a/source/blender/editors/space_sequencer/sequencer_drag_drop.cc +++ b/source/blender/editors/space_sequencer/sequencer_drag_drop.cc @@ -537,7 +537,7 @@ static void prefetch_data_fn(void *custom_data, wmJobWorkerStatus * /*worker_sta } char colorspace[64] = "\0"; /* 64 == MAX_COLORSPACE_NAME length. */ - anim *anim = openanim(job_data->path, IB_rect, 0, colorspace); + ImBufAnim *anim = openanim(job_data->path, IB_rect, 0, colorspace); if (anim != nullptr) { g_drop_coords.strip_len = IMB_anim_get_duration(anim, IMB_TC_NONE); diff --git a/source/blender/imbuf/IMB_imbuf.hh b/source/blender/imbuf/IMB_imbuf.hh index 3d1dfded6ce..ea5bb91326b 100644 --- a/source/blender/imbuf/IMB_imbuf.hh +++ b/source/blender/imbuf/IMB_imbuf.hh @@ -52,7 +52,7 @@ struct ImBuf; struct rctf; struct rcti; -struct anim; +struct ImBufAnim; struct ColorManagedDisplay; @@ -270,19 +270,19 @@ enum eIMBInterpolationFilterMode { /** * Defaults to BL_proxy within the directory of the animation. */ -void IMB_anim_set_index_dir(anim *anim, const char *dir); -void IMB_anim_get_filename(anim *anim, char *filename, int filename_maxncpy); +void IMB_anim_set_index_dir(ImBufAnim *anim, const char *dir); +void IMB_anim_get_filename(ImBufAnim *anim, char *filename, int filename_maxncpy); -int IMB_anim_index_get_frame_index(anim *anim, IMB_Timecode_Type tc, int position); +int IMB_anim_index_get_frame_index(ImBufAnim *anim, IMB_Timecode_Type tc, int position); -int IMB_anim_proxy_get_existing(anim *anim); +int IMB_anim_proxy_get_existing(ImBufAnim *anim); struct IndexBuildContext; /** * Prepare context for proxies/time-codes builder */ -IndexBuildContext *IMB_anim_index_rebuild_context(anim *anim, +IndexBuildContext *IMB_anim_index_rebuild_context(ImBufAnim *anim, IMB_Timecode_Type tcs_in_use, int proxy_sizes_in_use, int quality, @@ -306,34 +306,37 @@ void IMB_anim_index_rebuild_finish(IndexBuildContext *context, bool stop); /** * Return the length (in frames) of the given \a anim. */ -int IMB_anim_get_duration(anim *anim, IMB_Timecode_Type tc); +int IMB_anim_get_duration(ImBufAnim *anim, IMB_Timecode_Type tc); /** * Return the encoded start offset (in seconds) of the given \a anim. */ -double IMD_anim_get_offset(anim *anim); +double IMD_anim_get_offset(ImBufAnim *anim); /** * Return the fps contained in movie files (function rval is false, * and frs_sec and frs_sec_base untouched if none available!) */ -bool IMB_anim_get_fps(const anim *anim, bool no_av_base, short *r_frs_sec, float *r_frs_sec_base); +bool IMB_anim_get_fps(const ImBufAnim *anim, + bool no_av_base, + short *r_frs_sec, + float *r_frs_sec_base); -anim *IMB_open_anim(const char *filepath, - int ib_flags, - int streamindex, - char colorspace[IM_MAX_SPACE]); -void IMB_suffix_anim(anim *anim, const char *suffix); -void IMB_close_anim(anim *anim); -void IMB_close_anim_proxies(anim *anim); -bool IMB_anim_can_produce_frames(const anim *anim); +ImBufAnim *IMB_open_anim(const char *filepath, + int ib_flags, + int streamindex, + char colorspace[IM_MAX_SPACE]); +void IMB_suffix_anim(ImBufAnim *anim, const char *suffix); +void IMB_close_anim(ImBufAnim *anim); +void IMB_close_anim_proxies(ImBufAnim *anim); +bool IMB_anim_can_produce_frames(const ImBufAnim *anim); int ismovie(const char *filepath); -int IMB_anim_get_image_width(anim *anim); -int IMB_anim_get_image_height(anim *anim); -bool IMB_get_gop_decode_time(anim *anim); +int IMB_anim_get_image_width(ImBufAnim *anim); +int IMB_anim_get_image_height(ImBufAnim *anim); +bool IMB_get_gop_decode_time(ImBufAnim *anim); -ImBuf *IMB_anim_absolute(anim *anim, +ImBuf *IMB_anim_absolute(ImBufAnim *anim, int position, IMB_Timecode_Type tc /* = 1 = IMB_TC_RECORD_RUN */, IMB_Proxy_Size preview_size /* = 0 = IMB_PROXY_NONE */); @@ -341,9 +344,9 @@ ImBuf *IMB_anim_absolute(anim *anim, /** * fetches a define preview-frame, usually half way into the movie. */ -ImBuf *IMB_anim_previewframe(anim *anim); +ImBuf *IMB_anim_previewframe(ImBufAnim *anim); -void IMB_free_anim(anim *anim); +void IMB_free_anim(ImBufAnim *anim); #define FILTER_MASK_NULL 0 #define FILTER_MASK_MARGIN 1 diff --git a/source/blender/imbuf/IMB_metadata.hh b/source/blender/imbuf/IMB_metadata.hh index 5ddda5b765c..1d501ca351e 100644 --- a/source/blender/imbuf/IMB_metadata.hh +++ b/source/blender/imbuf/IMB_metadata.hh @@ -10,7 +10,7 @@ struct IDProperty; struct ImBuf; -struct anim; +struct ImBufAnim; /** * The metadata is a list of key/value pairs (both char *) that can me @@ -55,7 +55,7 @@ bool IMB_metadata_get_field(IDProperty *metadata, void IMB_metadata_set_field(IDProperty *metadata, const char *key, const char *value); void IMB_metadata_copy(ImBuf *dimb, ImBuf *simb); -IDProperty *IMB_anim_load_metadata(anim *anim); +IDProperty *IMB_anim_load_metadata(ImBufAnim *anim); /* Invoke callback for every value stored in the metadata. */ typedef void (*IMBMetadataForeachCb)(const char *field, const char *value, void *userdata); diff --git a/source/blender/imbuf/intern/IMB_anim.hh b/source/blender/imbuf/intern/IMB_anim.hh index b9c6e382b0c..77f675d4ba2 100644 --- a/source/blender/imbuf/intern/IMB_anim.hh +++ b/source/blender/imbuf/intern/IMB_anim.hh @@ -56,7 +56,7 @@ extern "C" { # define LITTLE_LONG ENDIAN_NOP #endif -/* anim.curtype, runtime only */ +/** #ImBufAnim::curtype, runtime only. */ #define ANIM_NONE 0 #define ANIM_SEQUENCE (1 << 0) #define ANIM_MOVIE (1 << 4) @@ -67,9 +67,9 @@ extern "C" { struct IDProperty; struct _AviMovie; -struct anim_index; +struct ImBufAnimIndex; -struct anim { +struct ImBufAnim { int ib_flags; int curtype; int cur_position; /* index 0 = 1e, 1 = 2e, enz. */ @@ -132,8 +132,8 @@ struct anim { int proxies_tried; int indices_tried; - struct anim *proxy_anim[IMB_PROXY_MAX_SLOT]; - struct anim_index *curr_idx[IMB_TC_MAX_SLOT]; + struct ImBufAnim *proxy_anim[IMB_PROXY_MAX_SLOT]; + struct ImBufAnimIndex *curr_idx[IMB_TC_MAX_SLOT]; char colorspace[64]; char suffix[64]; /* MAX_NAME - multiview */ diff --git a/source/blender/imbuf/intern/IMB_indexer.hh b/source/blender/imbuf/intern/IMB_indexer.hh index 584dce2af79..367765f1a36 100644 --- a/source/blender/imbuf/intern/IMB_indexer.hh +++ b/source/blender/imbuf/intern/IMB_indexer.hh @@ -42,7 +42,7 @@ typedef struct anim_index_entry { uint64_t pts; } anim_index_entry; -struct anim_index { +struct ImBufAnimIndex { char filepath[1024]; int num_entries; @@ -84,23 +84,23 @@ void IMB_index_builder_proc_frame(anim_index_builder *fp, void IMB_index_builder_finish(anim_index_builder *fp, int rollback); -struct anim_index *IMB_indexer_open(const char *name); -uint64_t IMB_indexer_get_seek_pos(struct anim_index *idx, int frame_index); -uint64_t IMB_indexer_get_seek_pos_pts(struct anim_index *idx, int frame_index); -uint64_t IMB_indexer_get_seek_pos_dts(struct anim_index *idx, int frame_index); +struct ImBufAnimIndex *IMB_indexer_open(const char *name); +uint64_t IMB_indexer_get_seek_pos(struct ImBufAnimIndex *idx, int frame_index); +uint64_t IMB_indexer_get_seek_pos_pts(struct ImBufAnimIndex *idx, int frame_index); +uint64_t IMB_indexer_get_seek_pos_dts(struct ImBufAnimIndex *idx, int frame_index); -int IMB_indexer_get_frame_index(struct anim_index *idx, int frameno); -uint64_t IMB_indexer_get_pts(struct anim_index *idx, int frame_index); -int IMB_indexer_get_duration(struct anim_index *idx); +int IMB_indexer_get_frame_index(struct ImBufAnimIndex *idx, int frameno); +uint64_t IMB_indexer_get_pts(struct ImBufAnimIndex *idx, int frame_index); +int IMB_indexer_get_duration(struct ImBufAnimIndex *idx); -int IMB_indexer_can_scan(struct anim_index *idx, int old_frame_index, int new_frame_index); +int IMB_indexer_can_scan(struct ImBufAnimIndex *idx, int old_frame_index, int new_frame_index); -void IMB_indexer_close(struct anim_index *idx); +void IMB_indexer_close(struct ImBufAnimIndex *idx); -void IMB_free_indices(struct anim *anim); +void IMB_free_indices(struct ImBufAnim *anim); -struct anim *IMB_anim_open_proxy(struct anim *anim, IMB_Proxy_Size preview_size); -struct anim_index *IMB_anim_open_index(struct anim *anim, IMB_Timecode_Type tc); +struct ImBufAnim *IMB_anim_open_proxy(struct ImBufAnim *anim, IMB_Proxy_Size preview_size); +struct ImBufAnimIndex *IMB_anim_open_index(struct ImBufAnim *anim, IMB_Timecode_Type tc); int IMB_proxy_size_to_array_index(IMB_Proxy_Size pr_size); int IMB_timecode_to_array_index(IMB_Timecode_Type tc); diff --git a/source/blender/imbuf/intern/anim_movie.cc b/source/blender/imbuf/intern/anim_movie.cc index 2a1e4b87177..104076835b8 100644 --- a/source/blender/imbuf/intern/anim_movie.cc +++ b/source/blender/imbuf/intern/anim_movie.cc @@ -83,21 +83,21 @@ int ismovie(const char * /*filepath*/) } /* never called, just keep the linker happy */ -static int startmovie(anim * /*anim*/) +static int startmovie(ImBufAnim * /*anim*/) { return 1; } -static ImBuf *movie_fetchibuf(anim * /*anim*/, int /*position*/) +static ImBuf *movie_fetchibuf(ImBufAnim * /*anim*/, int /*position*/) { return nullptr; } -static void free_anim_movie(anim * /*anim*/) +static void free_anim_movie(ImBufAnim * /*anim*/) { /* pass */ } #ifdef WITH_AVI -static void free_anim_avi(anim *anim) +static void free_anim_avi(ImBufAnim *anim) { # if defined(_WIN32) int i; @@ -138,10 +138,10 @@ static void free_anim_avi(anim *anim) #endif /* WITH_AVI */ #ifdef WITH_FFMPEG -static void free_anim_ffmpeg(anim *anim); +static void free_anim_ffmpeg(ImBufAnim *anim); #endif -void IMB_free_anim(anim *anim) +void IMB_free_anim(ImBufAnim *anim) { if (anim == nullptr) { printf("free anim, anim == nullptr\n"); @@ -163,7 +163,7 @@ void IMB_free_anim(anim *anim) MEM_freeN(anim); } -void IMB_close_anim(anim *anim) +void IMB_close_anim(ImBufAnim *anim) { if (anim == nullptr) { return; @@ -172,7 +172,7 @@ void IMB_close_anim(anim *anim) IMB_free_anim(anim); } -void IMB_close_anim_proxies(anim *anim) +void IMB_close_anim_proxies(ImBufAnim *anim) { if (anim == nullptr) { return; @@ -181,7 +181,7 @@ void IMB_close_anim_proxies(anim *anim) IMB_free_indices(anim); } -IDProperty *IMB_anim_load_metadata(anim *anim) +IDProperty *IMB_anim_load_metadata(ImBufAnim *anim) { switch (anim->curtype) { case ANIM_FFMPEG: { @@ -216,16 +216,16 @@ IDProperty *IMB_anim_load_metadata(anim *anim) return anim->metadata; } -anim *IMB_open_anim(const char *filepath, - int ib_flags, - int streamindex, - char colorspace[IM_MAX_SPACE]) +ImBufAnim *IMB_open_anim(const char *filepath, + int ib_flags, + int streamindex, + char colorspace[IM_MAX_SPACE]) { - anim *anim; + ImBufAnim *anim; BLI_assert(!BLI_path_is_rel(filepath)); - anim = (struct anim *)MEM_callocN(sizeof(struct anim), "anim struct"); + anim = (ImBufAnim *)MEM_callocN(sizeof(ImBufAnim), "anim struct"); if (anim != nullptr) { if (colorspace) { colorspace_set_default_role(colorspace, IM_MAX_SPACE, COLOR_ROLE_DEFAULT_BYTE); @@ -243,7 +243,7 @@ anim *IMB_open_anim(const char *filepath, return anim; } -bool IMB_anim_can_produce_frames(const anim *anim) +bool IMB_anim_can_produce_frames(const ImBufAnim *anim) { #if !(defined(WITH_AVI) || defined(WITH_FFMPEG)) UNUSED_VARS(anim); @@ -262,13 +262,13 @@ bool IMB_anim_can_produce_frames(const anim *anim) return false; } -void IMB_suffix_anim(anim *anim, const char *suffix) +void IMB_suffix_anim(ImBufAnim *anim, const char *suffix) { STRNCPY(anim->suffix, suffix); } #ifdef WITH_AVI -static int startavi(anim *anim) +static int startavi(ImBufAnim *anim) { AviError avierror; @@ -387,7 +387,7 @@ static int startavi(anim *anim) #endif /* WITH_AVI */ #ifdef WITH_AVI -static ImBuf *avi_fetchibuf(anim *anim, int position) +static ImBuf *avi_fetchibuf(ImBufAnim *anim, int position) { ImBuf *ibuf = nullptr; int *tmp; @@ -442,7 +442,7 @@ static ImBuf *avi_fetchibuf(anim *anim, int position) #ifdef WITH_FFMPEG -static int startffmpeg(anim *anim) +static int startffmpeg(ImBufAnim *anim) { int i, video_stream_index; @@ -747,7 +747,7 @@ static int startffmpeg(anim *anim) return 0; } -static double ffmpeg_steps_per_frame_get(anim *anim) +static double ffmpeg_steps_per_frame_get(ImBufAnim *anim) { AVStream *v_st = anim->pFormatCtx->streams[anim->videoStream]; AVRational time_base = v_st->time_base; @@ -760,7 +760,7 @@ static double ffmpeg_steps_per_frame_get(anim *anim) * It is likely to overshoot and scanning stops. Having previous frame backed up, it is possible * to use it when overshoot happens. */ -static void ffmpeg_double_buffer_backup_frame_store(anim *anim, int64_t pts_to_search) +static void ffmpeg_double_buffer_backup_frame_store(ImBufAnim *anim, int64_t pts_to_search) { /* `anim->pFrame` is beyond `pts_to_search`. Don't store it. */ if (anim->pFrame_backup_complete && anim->cur_pts >= pts_to_search) { @@ -779,7 +779,7 @@ static void ffmpeg_double_buffer_backup_frame_store(anim *anim, int64_t pts_to_s } /* Free stored backup frame. */ -static void ffmpeg_double_buffer_backup_frame_clear(anim *anim) +static void ffmpeg_double_buffer_backup_frame_clear(ImBufAnim *anim) { if (anim->pFrame_backup_complete) { av_frame_unref(anim->pFrame_backup); @@ -788,7 +788,7 @@ static void ffmpeg_double_buffer_backup_frame_clear(anim *anim) } /* Return recently decoded frame. If it does not exist, return frame from backup buffer. */ -static AVFrame *ffmpeg_double_buffer_frame_fallback_get(anim *anim) +static AVFrame *ffmpeg_double_buffer_frame_fallback_get(ImBufAnim *anim) { av_log(anim->pFormatCtx, AV_LOG_ERROR, "DECODE UNHAPPY: PTS not matched!\n"); @@ -806,7 +806,7 @@ static AVFrame *ffmpeg_double_buffer_frame_fallback_get(anim *anim) * * \param ibuf: The frame just read by `ffmpeg_fetchibuf`, processed in-place. */ -static void ffmpeg_postprocess(anim *anim, AVFrame *input, ImBuf *ibuf) +static void ffmpeg_postprocess(ImBufAnim *anim, AVFrame *input, ImBuf *ibuf) { int filter_y = 0; @@ -890,7 +890,7 @@ static void ffmpeg_postprocess(anim *anim, AVFrame *input, ImBuf *ibuf) } } -static void final_frame_log(anim *anim, +static void final_frame_log(ImBufAnim *anim, int64_t frame_pts_start, int64_t frame_pts_end, const char *str) @@ -909,7 +909,7 @@ static bool ffmpeg_pts_isect(int64_t pts_start, int64_t pts_end, int64_t pts_to_ } /* Return frame that matches `pts_to_search`, nullptr if matching frame does not exist. */ -static AVFrame *ffmpeg_frame_by_pts_get(anim *anim, int64_t pts_to_search) +static AVFrame *ffmpeg_frame_by_pts_get(ImBufAnim *anim, int64_t pts_to_search) { /* NOTE: `frame->pts + frame->pkt_duration` does not always match pts of next frame. * See footage from #86361. Here it is OK to use, because PTS must match current or backup frame. @@ -936,7 +936,7 @@ static AVFrame *ffmpeg_frame_by_pts_get(anim *anim, int64_t pts_to_search) return best_frame; } -static void ffmpeg_decode_store_frame_pts(anim *anim) +static void ffmpeg_decode_store_frame_pts(ImBufAnim *anim) { anim->cur_pts = av_get_pts_from_frame(anim->pFrame); @@ -951,7 +951,7 @@ static void ffmpeg_decode_store_frame_pts(anim *anim) int64_t(anim->cur_pts)); } -static int ffmpeg_read_video_frame(anim *anim, AVPacket *packet) +static int ffmpeg_read_video_frame(ImBufAnim *anim, AVPacket *packet) { int ret = 0; while ((ret = av_read_frame(anim->pFormatCtx, packet)) >= 0) { @@ -966,7 +966,7 @@ static int ffmpeg_read_video_frame(anim *anim, AVPacket *packet) } /* decode one video frame also considering the packet read into cur_packet */ -static int ffmpeg_decode_video_frame(anim *anim) +static int ffmpeg_decode_video_frame(ImBufAnim *anim) { av_log(anim->pFormatCtx, AV_LOG_DEBUG, " DECODE VIDEO FRAME\n"); @@ -1079,7 +1079,7 @@ static int ffmpeg_seek_by_byte(AVFormatContext *pFormatCtx) return false; } -static int64_t ffmpeg_get_seek_pts(anim *anim, int64_t pts_to_search) +static int64_t ffmpeg_get_seek_pts(ImBufAnim *anim, int64_t pts_to_search) { /* FFMPEG seeks internally using DTS values instead of PTS. In some files DTS and PTS values are * offset and sometimes FFMPEG fails to take this into account when seeking. @@ -1099,7 +1099,7 @@ static int64_t ffmpeg_get_seek_pts(anim *anim, int64_t pts_to_search) /* This gives us an estimate of which pts our requested frame will have. * Note that this might be off a bit in certain video files, but it should still be close enough. */ -static int64_t ffmpeg_get_pts_to_search(anim *anim, anim_index *tc_index, int position) +static int64_t ffmpeg_get_pts_to_search(ImBufAnim *anim, ImBufAnimIndex *tc_index, int position) { int64_t pts_to_search; @@ -1120,12 +1120,12 @@ static int64_t ffmpeg_get_pts_to_search(anim *anim, anim_index *tc_index, int po return pts_to_search; } -static bool ffmpeg_is_first_frame_decode(anim *anim) +static bool ffmpeg_is_first_frame_decode(ImBufAnim *anim) { return anim->pFrame_complete == false; } -static void ffmpeg_scan_log(anim *anim, int64_t pts_to_search) +static void ffmpeg_scan_log(ImBufAnim *anim, int64_t pts_to_search) { int64_t frame_pts_start = av_get_pts_from_frame(anim->pFrame); int64_t frame_pts_end = frame_pts_start + av_get_frame_duration_in_pts_units(anim->pFrame); @@ -1138,7 +1138,7 @@ static void ffmpeg_scan_log(anim *anim, int64_t pts_to_search) } /* Decode frames one by one until its PTS matches pts_to_search. */ -static void ffmpeg_decode_video_frame_scan(anim *anim, int64_t pts_to_search) +static void ffmpeg_decode_video_frame_scan(ImBufAnim *anim, int64_t pts_to_search) { const int64_t start_gop_frame = anim->cur_key_frame_pts; bool decode_error = false; @@ -1162,7 +1162,7 @@ static void ffmpeg_decode_video_frame_scan(anim *anim, int64_t pts_to_search) * read_seek2() functions defined. When seeking in these formats, rule to seek to last * necessary I-frame is not honored. It is not even guaranteed that I-frame, that must be * decoded will be read. See https://trac.ffmpeg.org/ticket/1607 & #86944. */ -static int ffmpeg_generic_seek_workaround(anim *anim, +static int ffmpeg_generic_seek_workaround(ImBufAnim *anim, int64_t *requested_pts, int64_t pts_to_search) { @@ -1224,7 +1224,7 @@ static int ffmpeg_generic_seek_workaround(anim *anim, /* Read packet until timestamp matches `anim->cur_packet`, thus recovering internal `anim` stream * position state. */ -static void ffmpeg_seek_recover_stream_position(anim *anim) +static void ffmpeg_seek_recover_stream_position(ImBufAnim *anim) { AVPacket *temp_packet = av_packet_alloc(); while (ffmpeg_read_video_frame(anim, temp_packet) >= 0) { @@ -1240,7 +1240,7 @@ static void ffmpeg_seek_recover_stream_position(anim *anim) } /* Check if seeking and mainly flushing codec buffers is needed. */ -static bool ffmpeg_seek_buffers_need_flushing(anim *anim, int position, int64_t seek_pos) +static bool ffmpeg_seek_buffers_need_flushing(ImBufAnim *anim, int position, int64_t seek_pos) { /* Get timestamp of packet read after seeking. */ AVPacket *temp_packet = av_packet_alloc(); @@ -1269,9 +1269,9 @@ static bool ffmpeg_seek_buffers_need_flushing(anim *anim, int position, int64_t } /* Seek to last necessary key frame. */ -static int ffmpeg_seek_to_key_frame(anim *anim, +static int ffmpeg_seek_to_key_frame(ImBufAnim *anim, int position, - anim_index *tc_index, + ImBufAnimIndex *tc_index, int64_t pts_to_search) { int64_t seek_pos; @@ -1361,14 +1361,14 @@ static int ffmpeg_seek_to_key_frame(anim *anim, return ret; } -static bool ffmpeg_must_seek(anim *anim, int position) +static bool ffmpeg_must_seek(ImBufAnim *anim, int position) { bool must_seek = position != anim->cur_position + 1 || ffmpeg_is_first_frame_decode(anim); anim->seek_before_decode = must_seek; return must_seek; } -static ImBuf *ffmpeg_fetchibuf(anim *anim, int position, IMB_Timecode_Type tc) +static ImBuf *ffmpeg_fetchibuf(ImBufAnim *anim, int position, IMB_Timecode_Type tc) { if (anim == nullptr) { return nullptr; @@ -1376,7 +1376,7 @@ static ImBuf *ffmpeg_fetchibuf(anim *anim, int position, IMB_Timecode_Type tc) av_log(anim->pFormatCtx, AV_LOG_DEBUG, "FETCH: seek_pos=%d\n", position); - anim_index *tc_index = IMB_anim_open_index(anim, tc); + ImBufAnimIndex *tc_index = IMB_anim_open_index(anim, tc); int64_t pts_to_search = ffmpeg_get_pts_to_search(anim, tc_index, position); AVStream *v_st = anim->pFormatCtx->streams[anim->videoStream]; double frame_rate = av_q2d(v_st->r_frame_rate); @@ -1455,7 +1455,7 @@ static ImBuf *ffmpeg_fetchibuf(anim *anim, int position, IMB_Timecode_Type tc) return cur_frame_final; } -static void free_anim_ffmpeg(anim *anim) +static void free_anim_ffmpeg(ImBufAnim *anim) { if (anim == nullptr) { return; @@ -1482,7 +1482,7 @@ static void free_anim_ffmpeg(anim *anim) * Try to initialize the #anim struct. * Returns true on success. */ -static bool anim_getnew(anim *anim) +static bool anim_getnew(ImBufAnim *anim) { BLI_assert(anim->curtype == ANIM_NONE); if (anim == nullptr) { @@ -1539,7 +1539,7 @@ static bool anim_getnew(anim *anim) return true; } -ImBuf *IMB_anim_previewframe(anim *anim) +ImBuf *IMB_anim_previewframe(ImBufAnim *anim) { ImBuf *ibuf = nullptr; int position = 0; @@ -1577,7 +1577,7 @@ ImBuf *IMB_anim_previewframe(anim *anim) return ibuf; } -ImBuf *IMB_anim_absolute(anim *anim, +ImBuf *IMB_anim_absolute(ImBufAnim *anim, int position, IMB_Timecode_Type tc, IMB_Proxy_Size preview_size) @@ -1605,7 +1605,7 @@ ImBuf *IMB_anim_absolute(anim *anim, } } else { - struct anim *proxy = IMB_anim_open_proxy(anim, preview_size); + ImBufAnim *proxy = IMB_anim_open_proxy(anim, preview_size); if (proxy) { position = IMB_anim_index_get_frame_index(anim, tc, position); @@ -1666,9 +1666,9 @@ ImBuf *IMB_anim_absolute(anim *anim, /***/ -int IMB_anim_get_duration(anim *anim, IMB_Timecode_Type tc) +int IMB_anim_get_duration(ImBufAnim *anim, IMB_Timecode_Type tc) { - anim_index *idx; + ImBufAnimIndex *idx; if (tc == IMB_TC_NONE) { return anim->duration_in_frames; } @@ -1681,12 +1681,15 @@ int IMB_anim_get_duration(anim *anim, IMB_Timecode_Type tc) return IMB_indexer_get_duration(idx); } -double IMD_anim_get_offset(anim *anim) +double IMD_anim_get_offset(ImBufAnim *anim) { return anim->start_offset; } -bool IMB_anim_get_fps(const anim *anim, bool no_av_base, short *r_frs_sec, float *r_frs_sec_base) +bool IMB_anim_get_fps(const ImBufAnim *anim, + bool no_av_base, + short *r_frs_sec, + float *r_frs_sec_base) { double frs_sec_base_double; if (anim->frs_sec) { @@ -1719,12 +1722,12 @@ bool IMB_anim_get_fps(const anim *anim, bool no_av_base, short *r_frs_sec, float return false; } -int IMB_anim_get_image_width(anim *anim) +int IMB_anim_get_image_width(ImBufAnim *anim) { return anim->x; } -int IMB_anim_get_image_height(anim *anim) +int IMB_anim_get_image_height(ImBufAnim *anim) { return anim->y; } diff --git a/source/blender/imbuf/intern/indexer.cc b/source/blender/imbuf/intern/indexer.cc index 74a235b8343..6286e7fd779 100644 --- a/source/blender/imbuf/intern/indexer.cc +++ b/source/blender/imbuf/intern/indexer.cc @@ -154,10 +154,10 @@ void IMB_index_builder_finish(anim_index_builder *fp, int rollback) MEM_freeN(fp); } -anim_index *IMB_indexer_open(const char *filepath) +ImBufAnimIndex *IMB_indexer_open(const char *filepath) { char header[13]; - anim_index *idx; + ImBufAnimIndex *idx; FILE *fp = BLI_fopen(filepath, "rb"); int i; @@ -185,7 +185,7 @@ anim_index *IMB_indexer_open(const char *filepath) return nullptr; } - idx = MEM_cnew("anim_index"); + idx = MEM_cnew("ImBufAnimIndex"); STRNCPY(idx->filepath, filepath); @@ -235,7 +235,7 @@ anim_index *IMB_indexer_open(const char *filepath) return idx; } -uint64_t IMB_indexer_get_seek_pos(anim_index *idx, int frame_index) +uint64_t IMB_indexer_get_seek_pos(ImBufAnimIndex *idx, int frame_index) { /* This is hard coded, because our current timecode files return non zero seek position for index * 0. Only when seeking to 0 it is guaranteed, that first packet will be read. */ @@ -248,7 +248,7 @@ uint64_t IMB_indexer_get_seek_pos(anim_index *idx, int frame_index) return idx->entries[frame_index].seek_pos; } -uint64_t IMB_indexer_get_seek_pos_pts(anim_index *idx, int frame_index) +uint64_t IMB_indexer_get_seek_pos_pts(ImBufAnimIndex *idx, int frame_index) { if (frame_index < 0) { frame_index = 0; @@ -259,7 +259,7 @@ uint64_t IMB_indexer_get_seek_pos_pts(anim_index *idx, int frame_index) return idx->entries[frame_index].seek_pos_pts; } -uint64_t IMB_indexer_get_seek_pos_dts(anim_index *idx, int frame_index) +uint64_t IMB_indexer_get_seek_pos_dts(ImBufAnimIndex *idx, int frame_index) { if (frame_index < 0) { frame_index = 0; @@ -270,7 +270,7 @@ uint64_t IMB_indexer_get_seek_pos_dts(anim_index *idx, int frame_index) return idx->entries[frame_index].seek_pos_dts; } -int IMB_indexer_get_frame_index(anim_index *idx, int frameno) +int IMB_indexer_get_frame_index(ImBufAnimIndex *idx, int frameno) { int len = idx->num_entries; int half; @@ -302,7 +302,7 @@ int IMB_indexer_get_frame_index(anim_index *idx, int frameno) return first; } -uint64_t IMB_indexer_get_pts(anim_index *idx, int frame_index) +uint64_t IMB_indexer_get_pts(ImBufAnimIndex *idx, int frame_index) { if (frame_index < 0) { frame_index = 0; @@ -313,7 +313,7 @@ uint64_t IMB_indexer_get_pts(anim_index *idx, int frame_index) return idx->entries[frame_index].pts; } -int IMB_indexer_get_duration(anim_index *idx) +int IMB_indexer_get_duration(ImBufAnimIndex *idx) { if (idx->num_entries == 0) { return 0; @@ -321,7 +321,7 @@ int IMB_indexer_get_duration(anim_index *idx) return idx->entries[idx->num_entries - 1].frameno + 1; } -int IMB_indexer_can_scan(anim_index *idx, int old_frame_index, int new_frame_index) +int IMB_indexer_can_scan(ImBufAnimIndex *idx, int old_frame_index, int new_frame_index) { /* makes only sense, if it is the same I-Frame and we are not * trying to run backwards in time... */ @@ -330,7 +330,7 @@ int IMB_indexer_can_scan(anim_index *idx, int old_frame_index, int new_frame_ind old_frame_index < new_frame_index); } -void IMB_indexer_close(anim_index *idx) +void IMB_indexer_close(ImBufAnimIndex *idx) { MEM_freeN(idx->entries); MEM_freeN(idx); @@ -378,7 +378,7 @@ int IMB_timecode_to_array_index(IMB_Timecode_Type tc) * - rebuild helper functions * ---------------------------------------------------------------------- */ -static void get_index_dir(anim *anim, char *index_dir, size_t index_dir_maxncpy) +static void get_index_dir(ImBufAnim *anim, char *index_dir, size_t index_dir_maxncpy) { if (!anim->index_dir[0]) { char filename[FILE_MAXFILE]; @@ -391,12 +391,15 @@ static void get_index_dir(anim *anim, char *index_dir, size_t index_dir_maxncpy) } } -void IMB_anim_get_filename(anim *anim, char *filename, int filename_maxncpy) +void IMB_anim_get_filename(ImBufAnim *anim, char *filename, int filename_maxncpy) { BLI_path_split_file_part(anim->filepath, filename, filename_maxncpy); } -static bool get_proxy_filepath(anim *anim, IMB_Proxy_Size preview_size, char *filepath, bool temp) +static bool get_proxy_filepath(ImBufAnim *anim, + IMB_Proxy_Size preview_size, + char *filepath, + bool temp) { char index_dir[FILE_MAXDIR]; int i = IMB_proxy_size_to_array_index(preview_size); @@ -425,7 +428,7 @@ static bool get_proxy_filepath(anim *anim, IMB_Proxy_Size preview_size, char *fi return true; } -static void get_tc_filepath(anim *anim, IMB_Timecode_Type tc, char *filepath) +static void get_tc_filepath(ImBufAnim *anim, IMB_Timecode_Type tc, char *filepath) { char index_dir[FILE_MAXDIR]; int i = IMB_timecode_to_array_index(tc); @@ -479,11 +482,11 @@ struct proxy_output_ctx { int cfra; IMB_Proxy_Size proxy_size; int orig_height; - struct anim *anim; + ImBufAnim *anim; }; static proxy_output_ctx *alloc_proxy_output_ffmpeg( - anim *anim, AVStream *st, IMB_Proxy_Size proxy_size, int width, int height, int quality) + ImBufAnim *anim, AVStream *st, IMB_Proxy_Size proxy_size, int width, int height, int quality) { proxy_output_ctx *rv = MEM_cnew("alloc_proxy_output"); @@ -821,7 +824,7 @@ struct FFmpegIndexBuilderContext { bool building_cancelled; }; -static IndexBuildContext *index_ffmpeg_create_context(anim *anim, +static IndexBuildContext *index_ffmpeg_create_context(ImBufAnim *anim, int tcs_in_use, int proxy_sizes_in_use, int quality, @@ -1245,12 +1248,12 @@ static bool indexer_need_to_build_proxy(FFmpegIndexBuilderContext *context) struct FallbackIndexBuilderContext { int anim_type; - struct anim *anim; + ImBufAnim *anim; AviMovie *proxy_ctx[IMB_PROXY_MAX_SLOT]; int proxy_sizes_in_use; }; static AviMovie *alloc_proxy_output_avi( - anim *anim, const char *filepath, int width, int height, int quality) + ImBufAnim *anim, const char *filepath, int width, int height, int quality) { int x, y; AviFormat format; @@ -1287,7 +1290,7 @@ static AviMovie *alloc_proxy_output_avi( return avi; } -static IndexBuildContext *index_fallback_create_context(anim *anim, +static IndexBuildContext *index_fallback_create_context(ImBufAnim *anim, int /*tcs_in_use*/, int proxy_sizes_in_use, int quality) @@ -1328,7 +1331,7 @@ static IndexBuildContext *index_fallback_create_context(anim *anim, static void index_rebuild_fallback_finish(FallbackIndexBuilderContext *context, const bool stop) { - anim *anim = context->anim; + ImBufAnim *anim = context->anim; char filepath[FILE_MAX]; char filepath_tmp[FILE_MAX]; int i; @@ -1359,7 +1362,7 @@ static void index_rebuild_fallback(FallbackIndexBuilderContext *context, { int count = IMB_anim_get_duration(context->anim, IMB_TC_NONE); int i, pos; - anim *anim = context->anim; + ImBufAnim *anim = context->anim; for (pos = 0; pos < count; pos++) { ImBuf *ibuf = IMB_anim_absolute(anim, pos, IMB_TC_NONE, IMB_PROXY_NONE); @@ -1407,7 +1410,7 @@ static void index_rebuild_fallback(FallbackIndexBuilderContext *context, * - public API * ---------------------------------------------------------------------- */ -IndexBuildContext *IMB_anim_index_rebuild_context(anim *anim, +IndexBuildContext *IMB_anim_index_rebuild_context(ImBufAnim *anim, IMB_Timecode_Type tcs_in_use, int proxy_sizes_in_use, int quality, @@ -1535,7 +1538,7 @@ void IMB_anim_index_rebuild_finish(IndexBuildContext *context, const bool stop) UNUSED_VARS(stop, proxy_sizes); } -void IMB_free_indices(anim *anim) +void IMB_free_indices(ImBufAnim *anim) { int i; @@ -1557,7 +1560,7 @@ void IMB_free_indices(anim *anim) anim->indices_tried = 0; } -void IMB_anim_set_index_dir(anim *anim, const char *dir) +void IMB_anim_set_index_dir(ImBufAnim *anim, const char *dir) { if (STREQ(anim->index_dir, dir)) { return; @@ -1567,7 +1570,7 @@ void IMB_anim_set_index_dir(anim *anim, const char *dir) IMB_free_indices(anim); } -anim *IMB_anim_open_proxy(anim *anim, IMB_Proxy_Size preview_size) +ImBufAnim *IMB_anim_open_proxy(ImBufAnim *anim, IMB_Proxy_Size preview_size) { char filepath[FILE_MAX]; int i = IMB_proxy_size_to_array_index(preview_size); @@ -1594,7 +1597,7 @@ anim *IMB_anim_open_proxy(anim *anim, IMB_Proxy_Size preview_size) return anim->proxy_anim[i]; } -anim_index *IMB_anim_open_index(anim *anim, IMB_Timecode_Type tc) +ImBufAnimIndex *IMB_anim_open_index(ImBufAnim *anim, IMB_Timecode_Type tc) { char filepath[FILE_MAX]; int i = IMB_timecode_to_array_index(tc); @@ -1620,9 +1623,9 @@ anim_index *IMB_anim_open_index(anim *anim, IMB_Timecode_Type tc) return anim->curr_idx[i]; } -int IMB_anim_index_get_frame_index(anim *anim, IMB_Timecode_Type tc, int position) +int IMB_anim_index_get_frame_index(ImBufAnim *anim, IMB_Timecode_Type tc, int position) { - anim_index *idx = IMB_anim_open_index(anim, tc); + ImBufAnimIndex *idx = IMB_anim_open_index(anim, tc); if (!idx) { return position; @@ -1631,7 +1634,7 @@ int IMB_anim_index_get_frame_index(anim *anim, IMB_Timecode_Type tc, int positio return IMB_indexer_get_frame_index(idx, position); } -int IMB_anim_proxy_get_existing(anim *anim) +int IMB_anim_proxy_get_existing(ImBufAnim *anim) { const int num_proxy_sizes = IMB_PROXY_MAX_SLOT; int existing = IMB_PROXY_NONE; diff --git a/source/blender/imbuf/intern/thumbs.cc b/source/blender/imbuf/intern/thumbs.cc index 4aa16b373b9..db9bbafcc89 100644 --- a/source/blender/imbuf/intern/thumbs.cc +++ b/source/blender/imbuf/intern/thumbs.cc @@ -391,7 +391,7 @@ static ImBuf *thumb_create_ex(const char *file_path, } } else if (THB_SOURCE_MOVIE == source) { - anim *anim = nullptr; + ImBufAnim *anim = nullptr; anim = IMB_open_anim(file_path, IB_rect | IB_metadata, 0, nullptr); if (anim != nullptr) { img = IMB_anim_absolute(anim, 0, IMB_TC_NONE, IMB_PROXY_NONE); diff --git a/source/blender/makesdna/DNA_image_types.h b/source/blender/makesdna/DNA_image_types.h index 881835d2fe9..9d5c0af59f7 100644 --- a/source/blender/makesdna/DNA_image_types.h +++ b/source/blender/makesdna/DNA_image_types.h @@ -13,11 +13,11 @@ #include "DNA_defs.h" struct GPUTexture; +struct ImBufAnim; struct MovieCache; struct PackedFile; struct RenderResult; struct Scene; -struct anim; /* ImageUser is in Texture, in Nodes, Background Image, Image Window, .... */ /* should be used in conjunction with an ID * to Image. */ @@ -47,7 +47,7 @@ typedef struct ImageUser { typedef struct ImageAnim { struct ImageAnim *next, *prev; - struct anim *anim; + struct ImBufAnim *anim; } ImageAnim; typedef struct ImageView { diff --git a/source/blender/makesdna/DNA_movieclip_types.h b/source/blender/makesdna/DNA_movieclip_types.h index 0ab3d100a25..8496f9a1851 100644 --- a/source/blender/makesdna/DNA_movieclip_types.h +++ b/source/blender/makesdna/DNA_movieclip_types.h @@ -14,10 +14,10 @@ struct AnimData; struct ImBuf; +struct ImBufAnim; struct MovieClipProxy; struct MovieTrackingMarker; struct MovieTrackingTrack; -struct anim; struct bGPdata; typedef struct MovieClipUser { @@ -75,7 +75,7 @@ typedef struct MovieClip { float aspx, aspy; /** Movie source data. */ - struct anim *anim; + struct ImBufAnim *anim; /** Cache for different stuff, not in file. */ struct MovieClipCache *cache; /** Grease pencil data. */ diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 4aeed151a02..e513779512f 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -36,7 +36,7 @@ struct bSound; typedef struct StripAnim { struct StripAnim *next, *prev; - struct anim *anim; + struct ImBufAnim *anim; } StripAnim; typedef struct StripElem { @@ -84,7 +84,7 @@ typedef struct StripProxy { char dirpath[768]; /** Custom file. */ char filename[256]; - struct anim *anim; /* custom proxy anim file */ + struct ImBufAnim *anim; /* custom proxy anim file */ short tc; /* time code in use */ diff --git a/source/blender/makesrna/intern/rna_image.cc b/source/blender/makesrna/intern/rna_image.cc index 146626bb1f6..7edfac37097 100644 --- a/source/blender/makesrna/intern/rna_image.cc +++ b/source/blender/makesrna/intern/rna_image.cc @@ -575,7 +575,7 @@ static int rna_Image_frame_duration_get(PointerRNA *ptr) } if (BKE_image_has_anim(ima)) { - anim *anim = ((ImageAnim *)ima->anims.first)->anim; + ImBufAnim *anim = ((ImageAnim *)ima->anims.first)->anim; if (anim) { duration = IMB_anim_get_duration(anim, IMB_TC_RECORD_RUN); } diff --git a/source/blender/nodes/geometry/nodes/node_geo_image_info.cc b/source/blender/nodes/geometry/nodes/node_geo_image_info.cc index fb5c7f8798f..46a35356487 100644 --- a/source/blender/nodes/geometry/nodes/node_geo_image_info.cc +++ b/source/blender/nodes/geometry/nodes/node_geo_image_info.cc @@ -63,7 +63,7 @@ static void node_geo_exec(GeoNodeExecParams params) float fps = 0.0f; if (ImageAnim *ianim = static_cast(image->anims.first)) { - anim *anim = ianim->anim; + ImBufAnim *anim = ianim->anim; if (anim) { frames = IMB_anim_get_duration(anim, IMB_TC_NONE); diff --git a/source/blender/sequencer/intern/multiview.cc b/source/blender/sequencer/intern/multiview.cc index 1e1a2f9bbd7..a724e04a90e 100644 --- a/source/blender/sequencer/intern/multiview.cc +++ b/source/blender/sequencer/intern/multiview.cc @@ -18,7 +18,7 @@ #include "multiview.hh" -void seq_anim_add_suffix(Scene *scene, anim *anim, const int view_id) +void seq_anim_add_suffix(Scene *scene, ImBufAnim *anim, const int view_id) { const char *suffix = BKE_scene_multiview_view_id_suffix_get(&scene->r, view_id); IMB_suffix_anim(anim, suffix); diff --git a/source/blender/sequencer/intern/multiview.hh b/source/blender/sequencer/intern/multiview.hh index da8055ee713..776fd6d8525 100644 --- a/source/blender/sequencer/intern/multiview.hh +++ b/source/blender/sequencer/intern/multiview.hh @@ -17,7 +17,7 @@ struct Scene; * ********************************************************************** */ -void seq_anim_add_suffix(Scene *scene, anim *anim, int view_id); +void seq_anim_add_suffix(Scene *scene, ImBufAnim *anim, int view_id); void seq_multiview_name( Scene *scene, int view_id, const char *prefix, const char *ext, char *r_path, size_t r_size); /** diff --git a/source/blender/sequencer/intern/proxy.cc b/source/blender/sequencer/intern/proxy.cc index de1ae2e2465..cdbd56776c6 100644 --- a/source/blender/sequencer/intern/proxy.cc +++ b/source/blender/sequencer/intern/proxy.cc @@ -412,7 +412,7 @@ static int seq_proxy_context_count(Sequence *seq, Scene *scene) return num_views; } -static bool seq_proxy_need_rebuild(Sequence *seq, anim *anim) +static bool seq_proxy_need_rebuild(Sequence *seq, ImBufAnim *anim) { if ((seq->strip->proxy->build_flags & SEQ_PROXY_SKIP_EXISTING) == 0) { return true; @@ -608,7 +608,7 @@ void SEQ_proxy_set(Sequence *seq, bool value) } } -void seq_proxy_index_dir_set(anim *anim, const char *base_dir) +void seq_proxy_index_dir_set(ImBufAnim *anim, const char *base_dir) { char dirname[FILE_MAX]; char filename[FILE_MAXFILE]; diff --git a/source/blender/sequencer/intern/proxy.hh b/source/blender/sequencer/intern/proxy.hh index 976f2e8d046..91ea55ee9f3 100644 --- a/source/blender/sequencer/intern/proxy.hh +++ b/source/blender/sequencer/intern/proxy.hh @@ -17,4 +17,4 @@ struct anim; ImBuf *seq_proxy_fetch(const SeqRenderData *context, Sequence *seq, int timeline_frame); bool seq_proxy_get_custom_file_filepath(Sequence *seq, char *name, int view_id); void free_proxy_seq(Sequence *seq); -void seq_proxy_index_dir_set(anim *anim, const char *base_dir); +void seq_proxy_index_dir_set(ImBufAnim *anim, const char *base_dir); diff --git a/source/blender/sequencer/intern/strip_add.cc b/source/blender/sequencer/intern/strip_add.cc index eba8243313a..5f11a0e718d 100644 --- a/source/blender/sequencer/intern/strip_add.cc +++ b/source/blender/sequencer/intern/strip_add.cc @@ -392,7 +392,8 @@ Sequence *SEQ_add_movie_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqL char colorspace[64] = "\0"; /* MAX_COLORSPACE_NAME */ bool is_multiview_loaded = false; const int totfiles = seq_num_files(scene, load_data->views_format, load_data->use_multiview); - anim **anim_arr = static_cast(MEM_callocN(sizeof(anim *) * totfiles, "Video files")); + ImBufAnim **anim_arr = static_cast( + MEM_callocN(sizeof(ImBufAnim *) * totfiles, "Video files")); int i; int orig_width = 0; int orig_height = 0; @@ -575,7 +576,7 @@ void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, const boo if (prefix[0] != '\0') { for (i = 0; i < totfiles; i++) { - anim *anim; + ImBufAnim *anim; char filepath_view[FILE_MAX]; seq_multiview_name(scene, i, prefix, ext, filepath_view, sizeof(filepath_view)); @@ -596,7 +597,7 @@ void SEQ_add_reload_new_file(Main *bmain, Scene *scene, Sequence *seq, const boo } if (is_multiview_loaded == false) { - anim *anim; + ImBufAnim *anim; anim = openanim(filepath, IB_rect | ((seq->flag & SEQ_FILTERY) ? IB_animdeinterlace : 0), seq->streamindex, diff --git a/source/blender/windowmanager/intern/wm_playanim.cc b/source/blender/windowmanager/intern/wm_playanim.cc index cdd61ed869f..d9d1ee5a2e5 100644 --- a/source/blender/windowmanager/intern/wm_playanim.cc +++ b/source/blender/windowmanager/intern/wm_playanim.cc @@ -336,7 +336,7 @@ struct PlayAnimPict { /** The allocated error message to show if the file cannot be loaded. */ char *error_message; ImBuf *ibuf; - struct anim *anim; + ImBufAnim *anim; int frame; int IB_flags; @@ -844,7 +844,7 @@ static void build_pict_list_from_anim(ListBase *picsbase, const int frame_offset) { /* OCIO_TODO: support different input color space. */ - anim *anim = IMB_open_anim(filepath_first, IB_rect, 0, nullptr); + ImBufAnim *anim = IMB_open_anim(filepath_first, IB_rect, 0, nullptr); if (anim == nullptr) { CLOG_WARN(&LOG, "couldn't open anim '%s'", filepath_first); return; @@ -1807,7 +1807,7 @@ static bool wm_main_playanim_intern(int argc, const char **argv, PlayArgs *args_ if (IMB_isanim(filepath)) { /* OCIO_TODO: support different input color spaces. */ - anim *anim = IMB_open_anim(filepath, IB_rect, 0, nullptr); + ImBufAnim *anim = IMB_open_anim(filepath, IB_rect, 0, nullptr); if (anim) { ibuf = IMB_anim_absolute(anim, 0, IMB_TC_NONE, IMB_PROXY_NONE); IMB_close_anim(anim); @@ -1918,7 +1918,7 @@ static bool wm_main_playanim_intern(int argc, const char **argv, PlayArgs *args_ #ifdef WITH_AUDASPACE g_audaspace.source = AUD_Sound_file(filepath); if (!BLI_listbase_is_empty(&ps.picsbase)) { - anim *anim_movie = static_cast(ps.picsbase.first)->anim; + ImBufAnim *anim_movie = static_cast(ps.picsbase.first)->anim; if (anim_movie) { short frs_sec = 25; float frs_sec_base = 1.0;