diff options
Diffstat (limited to 'test')
| m--------- | test/data | 0 | ||||
| -rw-r--r-- | test/image_test.cc | 28 |
2 files changed, 28 insertions, 0 deletions
diff --git a/test/data b/test/data -Subproject afc23969020af54cfb5e6e2f368ca7d395ae428 +Subproject 30022e624852127f464933f5008f8ac6226d831 diff --git a/test/image_test.cc b/test/image_test.cc index 2f2c9a9b7..0aa450321 100644 --- a/test/image_test.cc +++ b/test/image_test.cc @@ -24,6 +24,7 @@ * @see test/make_black_test.cc, test/pixel_formats_test.cc */ +#include "lib/compose.hpp" #include "lib/image.h" #include "lib/ffmpeg_image_proxy.h" #include "test.h" @@ -325,6 +326,33 @@ BOOST_AUTO_TEST_CASE (crop_scale_window_test6) check_image("test/data/crop_scale_window_test6.png", "build/test/crop_scale_window_test6.png", 35000); } + +/** Test some small crops with an image that shows up errors in registration of the YUV planes (#1872) */ +BOOST_AUTO_TEST_CASE (crop_scale_window_test7) +{ + using namespace boost::filesystem; + for (int left_crop = 0; left_crop < 8; ++left_crop) { + shared_ptr<FFmpegImageProxy> proxy(new FFmpegImageProxy("test/data/rgb_grey_testcard.png", VIDEO_RANGE_FULL)); + shared_ptr<Image> yuv = proxy->image().image->convert_pixel_format(dcp::YUV_TO_RGB_REC709, AV_PIX_FMT_YUV420P, true, false); + int rounded = left_crop - (left_crop % 2); + shared_ptr<Image> cropped = yuv->crop_scale_window( + Crop(left_crop, 0, 0, 0), + dcp::Size(1998 - rounded, 1080), + dcp::Size(1998 - rounded, 1080), + dcp::YUV_TO_RGB_REC709, + VIDEO_RANGE_VIDEO, + AV_PIX_FMT_RGB24, + VIDEO_RANGE_VIDEO, + true, + false + ); + path file = String::compose("crop_scale_window_test7-%1.png", left_crop); + write_image(cropped, path("build") / "test" / file); + check_image(path("test") / "data" / file, path("build") / "test" / file, 10); + } +} + + BOOST_AUTO_TEST_CASE (as_png_test) { shared_ptr<FFmpegImageProxy> proxy(new FFmpegImageProxy("test/data/3d_test/000001.png", VIDEO_RANGE_FULL)); |
