Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergey Sharybin <sergey.vfx@gmail.com>2014-03-06 15:27:16 +0400
committerSergey Sharybin <sergey.vfx@gmail.com>2014-03-06 15:32:45 +0400
commit4ce7d5cb79e23c4b28b1f1afe11fa066f3a5ea9c (patch)
tree973e72317b1f1af5f508b6ca82a8eca9dab8bac8
parent68ef6797b2fc2d2e37f59f6aae0d57b4ce8cc4bc (diff)
Fixes for proxies color space
Basically proxy colorspace didn't work well enough. It is still a bit weird and mainly: - Proxies for image sequences are built in the image color space. - Proxies for movies are built in the movie color space. This could be unified but would need some work in proxy build to make it not just pipe frames from one FFmpeg context to another but also apply OCIO on it.
-rw-r--r--source/blender/blenkernel/intern/movieclip.c13
-rw-r--r--source/blender/editors/space_clip/clip_ops.c5
-rw-r--r--source/blender/imbuf/intern/indexer.c4
3 files changed, 16 insertions, 6 deletions
diff --git a/source/blender/blenkernel/intern/movieclip.c b/source/blender/blenkernel/intern/movieclip.c
index 39c3b96f66e..a41b47809eb 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 7a6c4268aab..bb6c50d6224 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 3eaf42b1b22..2afcda8a1a6 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;