Fix corrupted image when over-cropping black filler frames.
[dcpomatic.git] / test / image_test.cc
index bf7effe092dcbe7541a1f48173ce7bdb8840f5e5..9c1c7457e774974073e1abe85b2b9b26018d35b1 100644 (file)
@@ -479,3 +479,20 @@ BOOST_AUTO_TEST_CASE (make_black_test)
                ++N;
        }
 }
+
+
+/** Make sure the image isn't corrupted if it is cropped too much.  This can happen when a
+ *  filler 128x128 black frame is emitted from the FFmpegDecoder and the overall crop in either direction
+ *  is greater than 128 pixels.
+ */
+BOOST_AUTO_TEST_CASE (over_crop_test)
+{
+       shared_ptr<Image> image (new Image (AV_PIX_FMT_RGB24, dcp::Size(128, 128), true));
+       image->make_black ();
+       shared_ptr<Image> scaled = image->crop_scale_window (
+               Crop(0, 0, 128, 128), dcp::Size(1323, 565), dcp::Size(1349, 565), dcp::YUV_TO_RGB_REC709, VIDEO_RANGE_FULL, AV_PIX_FMT_RGB24, VIDEO_RANGE_FULL, true, true
+               );
+       string const filename = "over_crop_test.png";
+       write_image (scaled, "build/test/" + filename);
+       check_image ("test/data/" + filename, "build/test/" + filename);
+}