X-Git-Url: https://git.sesse.net/?p=movit;a=blobdiff_plain;f=ycbcr_422interleaved_input_test.cpp;h=0d2c3fcba4189d52b3fb9a83352fdb6032740098;hp=9a56fb1621285eecc89932a9f1dc94c4da8c98d5;hb=81f33379cabb7cf8b47f2d2bd3892f853afc89ab;hpb=5f81c29e307735bbadb3c0cb06500af627b2e57a diff --git a/ycbcr_422interleaved_input_test.cpp b/ycbcr_422interleaved_input_test.cpp index 9a56fb1..0d2c3fc 100644 --- a/ycbcr_422interleaved_input_test.cpp +++ b/ycbcr_422interleaved_input_test.cpp @@ -3,6 +3,8 @@ #include #include +#include + #include "effect_chain.h" #include "gtest/gtest.h" #include "test_util.h" @@ -10,6 +12,8 @@ #include "resize_effect.h" #include "ycbcr_422interleaved_input.h" +using namespace std; + namespace movit { // Adapted from the Simple444 test from YCbCrInputTest. @@ -36,7 +40,7 @@ TEST(YCbCr422InterleavedInputTest, Simple422) { }; float out_data[4 * width * height]; - EffectChainTester tester(NULL, width, height); + EffectChainTester tester(nullptr, width, height); ImageFormat format; format.color_space = COLORSPACE_sRGB; @@ -64,6 +68,31 @@ TEST(YCbCr422InterleavedInputTest, Simple422) { expect_equal(expected_data, out_data, 4 * width, height, 0.025, 0.002); } +// An effect that does nothing except changing its output sizes. +class VirtualResizeEffect : public Effect { +public: + VirtualResizeEffect(int width, int height, int virtual_width, int virtual_height) + : width(width), + height(height), + virtual_width(virtual_width), + virtual_height(virtual_height) {} + string effect_type_id() const override { return "VirtualResizeEffect"; } + string output_fragment_shader() override { return read_file("identity.frag"); } + + bool changes_output_size() const override { return true; } + + void get_output_size(unsigned *width, unsigned *height, + unsigned *virtual_width, unsigned *virtual_height) const override { + *width = this->width; + *height = this->height; + *virtual_width = this->virtual_width; + *virtual_height = this->virtual_height; + } + +private: + int width, height, virtual_width, virtual_height; +}; + TEST(YCbCr422InterleavedInputTest, LumaLinearInterpolation) { const int width = 4; const int height = 1; @@ -82,7 +111,7 @@ TEST(YCbCr422InterleavedInputTest, LumaLinearInterpolation) { }; float out_data[out_width * height]; - EffectChainTester tester(NULL, out_width, height); + EffectChainTester tester(nullptr, out_width, height); ImageFormat format; format.color_space = COLORSPACE_sRGB; @@ -102,11 +131,7 @@ TEST(YCbCr422InterleavedInputTest, LumaLinearInterpolation) { YCbCr422InterleavedInput *input = new YCbCr422InterleavedInput(format, ycbcr_format, width, height); input->set_pixel_data(uyvy); tester.get_chain()->add_input(input); - - ResizeEffect *upscale = new ResizeEffect(); - ASSERT_TRUE(upscale->set_int("width", out_width)); - ASSERT_TRUE(upscale->set_int("height", height)); - tester.get_chain()->add_effect(upscale); + tester.get_chain()->add_effect(new VirtualResizeEffect(out_width, height, out_width, height)); tester.run(out_data, GL_RED, COLORSPACE_sRGB, GAMMA_sRGB); @@ -143,7 +168,7 @@ TEST(YCbCr422InterleavedInputTest, DifferentCbAndCrPositioning) { }; float out_data[width * height]; - EffectChainTester tester(NULL, width, height); + EffectChainTester tester(nullptr, width, height); ImageFormat format; format.color_space = COLORSPACE_sRGB; @@ -202,7 +227,7 @@ TEST(YCbCr422InterleavedInputTest, PBO) { glBufferData(GL_PIXEL_UNPACK_BUFFER_ARB, width * height * 2, uyvy, GL_STREAM_DRAW); glBindBuffer(GL_PIXEL_UNPACK_BUFFER_ARB, 0); - EffectChainTester tester(NULL, width, height); + EffectChainTester tester(nullptr, width, height); ImageFormat format; format.color_space = COLORSPACE_sRGB;