diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c index 39c3b96f66e1ae56369b53e5941532eda09e70c6..a41b47809eb60ef6ef6307342f762af4225f2a05 100644 --- a/source/blender/blenkernel/intern/movieclip.c +++ b/source/blender/blenkernel/intern/movieclip.c @@ -214,8 +214,17 @@ static ImBuf *movieclip_load_sequence_file(MovieClip *clip, MovieClipUser *user, int undistort = user->render_flag & MCLIP_PROXY_RENDER_UNDISTORT; get_proxy_fname(clip, user->render_size, undistort, framenr, name); - /* proxies were built using default color space settings */ - colorspace = NULL; + /* Well, this is a bit weird, but proxies for movie sources + * are built in the same exact color space as the input, + * + * But image sequences are built in the display space. + */ + if (clip->source == MCLIP_SRC_MOVIE) { + colorspace = clip->colorspace_settings.name; + } + else { + colorspace = NULL; + } } else { get_sequence_fname(clip, framenr, name); diff --git a/source/blender/editors/space_clip/clip_ops.c b/source/blender/editors/space_clip/clip_ops.c index 7a6c4268aab09ac95e0a3826f3fce489aeb67233..bb6c50d62244da8030fca85d00ba2dabf0c246b4 100644 --- a/source/blender/editors/space_clip/clip_ops.c +++ b/source/blender/editors/space_clip/clip_ops.c @@ -1002,7 +1002,7 @@ static void do_movie_proxy(void *pjv, int *UNUSED(build_sizes), int UNUSED(build } else { sfra = 1; - efra = IMB_anim_get_duration(clip->anim, IMB_TC_NONE); + efra = clip->len; } if (build_undistort_count) { @@ -1118,7 +1118,8 @@ static void *do_proxy_thread(void *data_v) while ((mem = proxy_thread_next_frame(data->queue, data->clip, &size, &cfra))) { ImBuf *ibuf; - ibuf = IMB_ibImageFromMemory(mem, size, IB_rect | IB_multilayer | IB_alphamode_detect, NULL, "proxy frame"); + ibuf = IMB_ibImageFromMemory(mem, size, IB_rect | IB_multilayer | IB_alphamode_detect, + data->clip->colorspace_settings.name, "proxy frame"); BKE_movieclip_build_proxy_frame_for_ibuf(data->clip, ibuf, NULL, cfra, data->build_sizes, data->build_count, false); diff --git a/source/blender/imbuf/intern/indexer.c b/source/blender/imbuf/intern/indexer.c index 3eaf42b1b22ee95d816b2dd4177f17ab6758d312..2afcda8a1a64e2f5146504a6ad35b42589f387a1 100644 --- a/source/blender/imbuf/intern/indexer.c +++ b/source/blender/imbuf/intern/indexer.c @@ -1265,8 +1265,8 @@ struct anim *IMB_anim_open_proxy( get_proxy_filename(anim, preview_size, fname, FALSE); - /* proxies are generated in default color space */ - anim->proxy_anim[i] = IMB_open_anim(fname, 0, 0, NULL); + /* proxies are generated in the same color space as animation itself */ + anim->proxy_anim[i] = IMB_open_anim(fname, 0, 0, anim->colorspace); anim->proxies_tried |= preview_size;