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:
authorRichard Antalik <richardantalik@gmail.com>2021-05-05 08:19:30 +0300
committerRichard Antalik <richardantalik@gmail.com>2021-05-05 08:19:30 +0300
commit9576612d45dc062c85ec66250e2c9824ea4026a5 (patch)
treea5b80ac3f06ea0c52e87ccf7af4d85b59bbc8492 /source/blender/sequencer
parent96abe5ebbc55323fc28ee4f6a852c912298c72d1 (diff)
VSE: Set view transform based on strip colorspace
In some cases, users start video editing work from General template, where Filmic view transform is chosen by default. Currently, this causes issue when working with sRGB footage, which are not properly decoded into linear working space and final render looks miscolored. When adding first strip, check it's colorspace and if it corresponds to colorspace for byte images, ensure that view transform is set to default value, which is Standard. Reviewed By: brecht Differential Revision: https://developer.blender.org/D11151
Diffstat (limited to 'source/blender/sequencer')
-rw-r--r--source/blender/sequencer/SEQ_add.h1
-rw-r--r--source/blender/sequencer/intern/strip_add.c21
2 files changed, 22 insertions, 0 deletions
diff --git a/source/blender/sequencer/SEQ_add.h b/source/blender/sequencer/SEQ_add.h
index 9cb52145c04..2941eb6f4c0 100644
--- a/source/blender/sequencer/SEQ_add.h
+++ b/source/blender/sequencer/SEQ_add.h
@@ -36,6 +36,7 @@ typedef enum eSeqLoadFlags {
SEQ_LOAD_SOUND_CACHE = (1 << 1),
SEQ_LOAD_SOUND_MONO = (1 << 2),
SEQ_LOAD_MOVIE_SYNC_FPS = (1 << 3),
+ SEQ_LOAD_SET_VIEW_TRANSFORM = (1 << 4),
} eSeqLoadFlags;
/* Api for adding new sequence strips. */
diff --git a/source/blender/sequencer/intern/strip_add.c b/source/blender/sequencer/intern/strip_add.c
index 55d92c1eb10..1106f47c477 100644
--- a/source/blender/sequencer/intern/strip_add.c
+++ b/source/blender/sequencer/intern/strip_add.c
@@ -50,6 +50,7 @@
#include "DEG_depsgraph_query.h"
+#include "IMB_colormanagement.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "IMB_metadata.h"
@@ -128,6 +129,24 @@ static void seq_add_set_name(Sequence *seq, SeqLoadData *load_data)
}
}
+static void seq_add_set_view_transform(Scene *scene, Sequence *seq, SeqLoadData *load_data)
+{
+ const char *strip_colorspace = seq->strip->colorspace_settings.name;
+
+ if (load_data->flags & SEQ_LOAD_SET_VIEW_TRANSFORM) {
+ const char *role_colorspace_byte;
+ role_colorspace_byte = IMB_colormanagement_role_colorspace_name_get(COLOR_ROLE_DEFAULT_BYTE);
+
+ if (STREQ(strip_colorspace, role_colorspace_byte)) {
+ struct ColorManagedDisplay *display = IMB_colormanagement_display_get_named(
+ scene->display_settings.display_device);
+ const char *default_view_transform =
+ IMB_colormanagement_display_get_default_view_transform_name(display);
+ STRNCPY(scene->view_settings.view_transform, default_view_transform);
+ }
+ }
+}
+
/**
* Add scene strip.
*
@@ -344,6 +363,7 @@ Sequence *SEQ_add_image_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqL
/* Set Last active directory. */
BLI_strncpy(scene->ed->act_imagedir, seq->strip->dir, sizeof(scene->ed->act_imagedir));
+ seq_add_set_view_transform(scene, seq, load_data);
seq_add_set_name(seq, load_data);
seq_add_generic_update(scene, seqbase, seq);
@@ -559,6 +579,7 @@ Sequence *SEQ_add_movie_strip(Main *bmain, Scene *scene, ListBase *seqbase, SeqL
strip->stripdata->orig_height = orig_height;
BLI_split_dirfile(load_data->path, strip->dir, se->name, sizeof(strip->dir), sizeof(se->name));
+ seq_add_set_view_transform(scene, seq, load_data);
seq_add_set_name(seq, load_data);
seq_add_generic_update(scene, seqbase, seq);