X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain.cpp;h=a15a566c4153f6c45126aa9f571c028af882a950;hp=3ccab448f17a4ae85a3055d2cab375c6c41e6a0d;hb=8c9047448cc46b7e7909613b7cb9309ecb094609;hpb=affe96389941123d20354ad8091977aa196a741c diff --git a/effect_chain.cpp b/effect_chain.cpp index 3ccab44..a15a566 100644 --- a/effect_chain.cpp +++ b/effect_chain.cpp @@ -38,6 +38,8 @@ Effect *instantiate_effect(EffectId effect) return new GammaExpansionEffect(); case EFFECT_GAMMA_COMPRESSION: return new GammaCompressionEffect(); + case EFFECT_COLOR_SPACE_CONVERSION: + return new ColorSpaceConversionEffect(); case EFFECT_LIFT_GAMMA_GAIN: return new LiftGammaGainEffect(); case EFFECT_SATURATION: @@ -132,7 +134,13 @@ std::string replace_prefix(const std::string &text, const std::string &prefix) void EffectChain::finalize() { - // TODO: If we want a non-sRGB output color space, convert. + if (current_color_space != output_format.color_space) { + ColorSpaceConversionEffect *colorspace_conversion = new ColorSpaceConversionEffect(); + colorspace_conversion->set_int("source_space", current_color_space); + colorspace_conversion->set_int("destination_space", output_format.color_space); + effects.push_back(colorspace_conversion); + current_color_space = output_format.color_space; + } if (current_gamma_curve != output_format.gamma_curve) { if (current_gamma_curve != GAMMA_LINEAR) {