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:
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) {