X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=effect_chain.h;h=67955786c9e2efd9a3bfed69021f3d7d4efb05a2;hp=91b8e29f2c5fe12b5405e9778a3a3c948fab1d01;hb=9dcbd93164611ea111cc29519c18193d4f571ac1;hpb=5aae6761385e1d64cb21b8c902f6b47b4f22690a diff --git a/effect_chain.h b/effect_chain.h index 91b8e29..6795578 100644 --- a/effect_chain.h +++ b/effect_chain.h @@ -5,7 +5,6 @@ #include #include "effect.h" -#include "effect_id.h" #include "image_format.h" #include "input.h" @@ -16,24 +15,27 @@ public: // User API: // input, effects, output, finalize need to come in that specific order. - Input *add_input(const ImageFormat &format); + // EffectChain takes ownership of the given input. + // input is returned back for convenience. + Input *add_input(Input *input); - // The returned pointer is owned by EffectChain. - Effect *add_effect(EffectId effect) { + // EffectChain takes ownership of the given effect. + // effect is returned back for convenience. + Effect *add_effect(Effect *effect) { return add_effect(effect, last_added_effect()); } - Effect *add_effect(EffectId effect, Effect *input) { + Effect *add_effect(Effect *effect, Effect *input) { std::vector inputs; inputs.push_back(input); return add_effect(effect, inputs); } - Effect *add_effect(EffectId effect, Effect *input1, Effect *input2) { + Effect *add_effect(Effect *effect, Effect *input1, Effect *input2) { std::vector inputs; inputs.push_back(input1); inputs.push_back(input2); return add_effect(effect, inputs); } - Effect *add_effect(EffectId effect, const std::vector &inputs); + Effect *add_effect(Effect *effect, const std::vector &inputs); // Similar to add_effect, but: // @@ -67,7 +69,9 @@ private: std::vector effects; // In order. }; - void set_use_srgb_texture_format(Effect *effect); + void find_all_nonlinear_inputs(Effect *effect, + std::vector *nonlinear_inputs, + std::vector *intermediates); Effect *normalize_to_linear_gamma(Effect *input); Effect *normalize_to_srgb(Effect *input);