Add unit tests to EffectChain testing that the sRGB conversion on the GPU works.
[movit] / test_util.h
1 #ifndef _TEST_UTIL_H
2 #define _TEST_UTIL_H 1
3
4 #include "effect_chain.h"
5
6 class EffectChainTester {
7 public:
8         EffectChainTester(const float *data, unsigned width, unsigned height,
9                           MovitPixelFormat pixel_format = FORMAT_GRAYSCALE,
10                           Colorspace color_space = COLORSPACE_sRGB,
11                           GammaCurve gamma_curve = GAMMA_LINEAR);
12         ~EffectChainTester();
13         
14         EffectChain *get_chain() { return &chain; }
15         Input *add_input(const float *data, MovitPixelFormat pixel_format, Colorspace color_space, GammaCurve gamma_curve);
16         Input *add_input(const unsigned char *data, MovitPixelFormat pixel_format, Colorspace color_space, GammaCurve gamma_curve);
17         void run(float *out_data, GLenum format, Colorspace color_space, GammaCurve gamma_curve);
18
19 private:
20         EffectChain chain;
21         GLuint fbo, texnum;
22         unsigned width, height;
23 };
24
25 void expect_equal(const float *ref, const float *result, unsigned width, unsigned height, float largest_difference_limit = 1.5 / 255.0, float rms_limit = 0.2 / 255.0);
26
27 #endif  // !defined(_TEST_UTIL_H)