X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=test%2Fimage_test.cc;h=0bae58e60146bc42e68f59b0bf552ad933b79be4;hb=3f9b394d57e750624d361f5daae6db77079f862a;hp=2bbe9d14b1e5c789031a8c52a69758287891bc3c;hpb=c984f807703fb113c3e53d9a61d38e1cc83bf196;p=dcpomatic.git diff --git a/test/image_test.cc b/test/image_test.cc index 2bbe9d14b..0bae58e60 100644 --- a/test/image_test.cc +++ b/test/image_test.cc @@ -261,7 +261,7 @@ BOOST_AUTO_TEST_CASE (crop_scale_window_test) { shared_ptr proxy(new FFmpegImageProxy("test/data/flat_red.png")); shared_ptr raw = proxy->image().first; - shared_ptr out = raw->crop_scale_window(Crop(), dcp::Size(1998, 836), dcp::Size(1998, 1080), dcp::YUV_TO_RGB_REC709, AV_PIX_FMT_YUV420P, true, false); + shared_ptr out = raw->crop_scale_window(Crop(), dcp::Size(1998, 836), dcp::Size(1998, 1080), dcp::YUV_TO_RGB_REC709, VIDEO_RANGE_FULL, AV_PIX_FMT_YUV420P, true, false); shared_ptr save = out->scale(dcp::Size(1998, 1080), dcp::YUV_TO_RGB_REC709, AV_PIX_FMT_RGB24, false, false); write_image(save, "build/test/crop_scale_window_test.png", "RGB"); check_image("test/data/crop_scale_window_test.png", "build/test/crop_scale_window_test.png"); @@ -278,3 +278,52 @@ BOOST_AUTO_TEST_CASE (as_png_test) check_image ("test/data/3d_test/000001.png", "build/test/as_png_rgb.png"); check_image ("test/data/3d_test/000001.png", "build/test/as_png_bgr.png"); } + +/* Very dumb test to fade black to make sure it stays black */ +static void +fade_test_format_black (AVPixelFormat f, string name) +{ + Image yuv (f, dcp::Size(640, 480), true); + yuv.make_black (); + yuv.fade (0); + string const filename = "fade_test_black_" + name + ".png"; + yuv.convert_pixel_format(dcp::YUV_TO_RGB_REC709, AV_PIX_FMT_RGBA, true, false)->as_png().write("build/test/" + filename); + check_image ("test/data/" + filename, "build/test/" + filename); +} + +/* Fade red to make sure it stays red */ +static void +fade_test_format_red (AVPixelFormat f, float amount, string name) +{ + shared_ptr proxy(new FFmpegImageProxy("test/data/flat_red.png")); + shared_ptr red = proxy->image().first->convert_pixel_format(dcp::YUV_TO_RGB_REC709, f, true, false); + red->fade (amount); + string const filename = "fade_test_red_" + name + ".png"; + red->convert_pixel_format(dcp::YUV_TO_RGB_REC709, AV_PIX_FMT_RGBA, true, false)->as_png().write("build/test/" + filename); + check_image ("test/data/" + filename, "build/test/" + filename); +} + +BOOST_AUTO_TEST_CASE (fade_test) +{ + fade_test_format_black (AV_PIX_FMT_YUV420P, "yuv420p"); + fade_test_format_black (AV_PIX_FMT_YUV422P10, "yuv422p10"); + fade_test_format_black (AV_PIX_FMT_RGB24, "rgb24"); + fade_test_format_black (AV_PIX_FMT_XYZ12LE, "xyz12le"); + fade_test_format_black (AV_PIX_FMT_RGB48LE, "rgb48le"); + + fade_test_format_red (AV_PIX_FMT_YUV420P, 0, "yuv420p_0"); + fade_test_format_red (AV_PIX_FMT_YUV420P, 0.5, "yuv420p_50"); + fade_test_format_red (AV_PIX_FMT_YUV420P, 1, "yuv420p_100"); + fade_test_format_red (AV_PIX_FMT_YUV422P10, 0, "yuv422p10_0"); + fade_test_format_red (AV_PIX_FMT_YUV422P10, 0.5, "yuv422p10_50"); + fade_test_format_red (AV_PIX_FMT_YUV422P10, 1, "yuv422p10_100"); + fade_test_format_red (AV_PIX_FMT_RGB24, 0, "rgb24_0"); + fade_test_format_red (AV_PIX_FMT_RGB24, 0.5, "rgb24_50"); + fade_test_format_red (AV_PIX_FMT_RGB24, 1, "rgb24_100"); + fade_test_format_red (AV_PIX_FMT_XYZ12LE, 0, "xyz12le_0"); + fade_test_format_red (AV_PIX_FMT_XYZ12LE, 0.5, "xyz12le_50"); + fade_test_format_red (AV_PIX_FMT_XYZ12LE, 1, "xyz12le_100"); + fade_test_format_red (AV_PIX_FMT_RGB48LE, 0, "rgb48le_0"); + fade_test_format_red (AV_PIX_FMT_RGB48LE, 0.5, "rgb48le_50"); + fade_test_format_red (AV_PIX_FMT_RGB48LE, 1, "rgb48le_100"); +}