From 3e6b7d0fd874789c13aa53a62932d94cbb36163b Mon Sep 17 00:00:00 2001 From: Campbell Barton Date: Tue, 16 Feb 2016 00:05:44 +1100 Subject: Fix white balance, was doing unnecessary linear conversions This made byte & float images behave differently, where other modifiers remain the same. Also remove scene from the modifier (should have been passed as arg but no longer needed). --- source/blender/blenkernel/BKE_sequencer.h | 2 +- source/blender/blenkernel/intern/seqmodifier.c | 9 +-------- source/blender/blenloader/intern/readfile.c | 1 - source/blender/blenloader/intern/versioning_260.c | 2 +- source/blender/editors/space_sequencer/sequencer_modifier.c | 2 +- source/blender/makesdna/DNA_sequence_types.h | 1 - source/blender/makesrna/intern/rna_sequencer.c | 2 +- 7 files changed, 5 insertions(+), 14 deletions(-) diff --git a/source/blender/blenkernel/BKE_sequencer.h b/source/blender/blenkernel/BKE_sequencer.h index f3212e5dff5..30bb6954019 100644 --- a/source/blender/blenkernel/BKE_sequencer.h +++ b/source/blender/blenkernel/BKE_sequencer.h @@ -460,7 +460,7 @@ typedef struct SequenceModifierTypeInfo { const struct SequenceModifierTypeInfo *BKE_sequence_modifier_type_info_get(int type); -struct SequenceModifierData *BKE_sequence_modifier_new(struct Sequence *seq, const char *name, int type, struct Scene *scene); +struct SequenceModifierData *BKE_sequence_modifier_new(struct Sequence *seq, const char *name, int type); bool BKE_sequence_modifier_remove(struct Sequence *seq, struct SequenceModifierData *smd); void BKE_sequence_modifier_clear(struct Sequence *seq); void BKE_sequence_modifier_free(struct SequenceModifierData *smd); diff --git a/source/blender/blenkernel/intern/seqmodifier.c b/source/blender/blenkernel/intern/seqmodifier.c index 2c46cf12844..94eb7974d1a 100644 --- a/source/blender/blenkernel/intern/seqmodifier.c +++ b/source/blender/blenkernel/intern/seqmodifier.c @@ -184,7 +184,6 @@ static void whiteBalance_init_data(SequenceModifierData *smd) } typedef struct WhiteBalanceThreadData { - struct ColorSpace *colorspace; float white[3]; } WhiteBalanceThreadData; @@ -210,7 +209,6 @@ static void whiteBalance_apply_threaded(int width, int height, unsigned char *re } else { straight_uchar_to_premul_float(result, rect + pixel_index); - IMB_colormanagement_colorspace_to_scene_linear_v3(result, data->colorspace); } mul_v3_v3(result, multiplier); @@ -230,7 +228,6 @@ static void whiteBalance_apply_threaded(int width, int height, unsigned char *re copy_v3_v3(rect_float + pixel_index, result); } else { - IMB_colormanagement_scene_linear_to_colorspace_v3(result, data->colorspace); premul_float_to_straight_uchar(rect + pixel_index, result); } } @@ -243,9 +240,6 @@ static void whiteBalance_apply(SequenceModifierData *smd, ImBuf *ibuf, ImBuf *ma WhiteBalanceModifierData *wbmd = (WhiteBalanceModifierData *) smd; copy_v3_v3(data.white, wbmd->white_value); - IMB_colormanagement_display_to_scene_linear_v3(data.white, - IMB_colormanagement_display_get_named(wbmd->modifier.scene->display_settings.display_device)); - data.colorspace = ibuf->rect_colorspace; modifier_apply_threaded(ibuf, mask, whiteBalance_apply_threaded, &data); } @@ -883,7 +877,7 @@ const SequenceModifierTypeInfo *BKE_sequence_modifier_type_info_get(int type) return modifiersTypes[type]; } -SequenceModifierData *BKE_sequence_modifier_new(Sequence *seq, const char *name, int type, struct Scene *scene) +SequenceModifierData *BKE_sequence_modifier_new(Sequence *seq, const char *name, int type) { SequenceModifierData *smd; const SequenceModifierTypeInfo *smti = BKE_sequence_modifier_type_info_get(type); @@ -892,7 +886,6 @@ SequenceModifierData *BKE_sequence_modifier_new(Sequence *seq, const char *name, smd->type = type; smd->flag |= SEQUENCE_MODIFIER_EXPANDED; - smd->scene = scene; if (!name || !name[0]) BLI_strncpy(smd->name, smti->name, sizeof(smd->name)); diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 17567ae840a..cf4f18301b2 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -5503,7 +5503,6 @@ static void lib_link_sequence_modifiers(FileData *fd, Scene *scene, ListBase *lb for (smd = lb->first; smd; smd = smd->next) { if (smd->mask_id) smd->mask_id = newlibadr_us(fd, scene->id.lib, smd->mask_id); - smd->scene = scene; } } diff --git a/source/blender/blenloader/intern/versioning_260.c b/source/blender/blenloader/intern/versioning_260.c index 6dd2d99ef12..907baab0aee 100644 --- a/source/blender/blenloader/intern/versioning_260.c +++ b/source/blender/blenloader/intern/versioning_260.c @@ -1503,7 +1503,7 @@ void blo_do_versions_260(FileData *fd, Library *UNUSED(lib), Main *main) SequenceModifierData *smd; ColorBalanceModifierData *cbmd; - smd = BKE_sequence_modifier_new(seq, NULL, seqModifierType_ColorBalance, scene); + smd = BKE_sequence_modifier_new(seq, NULL, seqModifierType_ColorBalance); cbmd = (ColorBalanceModifierData *) smd; cbmd->color_balance = *strip->color_balance; diff --git a/source/blender/editors/space_sequencer/sequencer_modifier.c b/source/blender/editors/space_sequencer/sequencer_modifier.c index f7999ee3c13..1b3d458bb69 100644 --- a/source/blender/editors/space_sequencer/sequencer_modifier.c +++ b/source/blender/editors/space_sequencer/sequencer_modifier.c @@ -71,7 +71,7 @@ static int strip_modifier_add_exec(bContext *C, wmOperator *op) Sequence *seq = BKE_sequencer_active_get(scene); int type = RNA_enum_get(op->ptr, "type"); - BKE_sequence_modifier_new(seq, NULL, type, scene); + BKE_sequence_modifier_new(seq, NULL, type); BKE_sequence_invalidate_cache(scene, seq); WM_event_add_notifier(C, NC_SCENE | ND_SEQUENCER, scene); diff --git a/source/blender/makesdna/DNA_sequence_types.h b/source/blender/makesdna/DNA_sequence_types.h index 56112d2866f..3a64890a84b 100644 --- a/source/blender/makesdna/DNA_sequence_types.h +++ b/source/blender/makesdna/DNA_sequence_types.h @@ -313,7 +313,6 @@ typedef struct SequenceModifierData { struct Sequence *mask_sequence; struct Mask *mask_id; - struct Scene *scene; } SequenceModifierData; typedef struct ColorBalanceModifierData { diff --git a/source/blender/makesrna/intern/rna_sequencer.c b/source/blender/makesrna/intern/rna_sequencer.c index 2c66b737ca4..fae0d1c80ff 100644 --- a/source/blender/makesrna/intern/rna_sequencer.c +++ b/source/blender/makesrna/intern/rna_sequencer.c @@ -1044,7 +1044,7 @@ static SequenceModifierData *rna_Sequence_modifier_new(Sequence *seq, bContext * Scene *scene = CTX_data_scene(C); SequenceModifierData *smd; - smd = BKE_sequence_modifier_new(seq, name, type, scene); + smd = BKE_sequence_modifier_new(seq, name, type); BKE_sequence_invalidate_cache_for_modifier(scene, seq); -- cgit v1.2.3