Remove unused Image::crop.
authorCarl Hetherington <cth@carlh.net>
Sun, 16 Aug 2015 23:41:58 +0000 (00:41 +0100)
committerCarl Hetherington <cth@carlh.net>
Sun, 16 Aug 2015 23:41:58 +0000 (00:41 +0100)
src/lib/image.cc
src/lib/image.h
test/image_test.cc

index 30b997737698480336a5bfd19917172c64f0dd60..04771a24bfec586e6f5c7b9e749c5fb98b46b810 100644 (file)
@@ -208,34 +208,6 @@ Image::scale (dcp::Size out_size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat out_fo
        return scaled;
 }
 
-shared_ptr<Image>
-Image::crop (Crop crop, bool aligned) const
-{
-       dcp::Size cropped_size = crop.apply (size ());
-       shared_ptr<Image> out (new Image (pixel_format(), cropped_size, aligned));
-
-       for (int c = 0; c < components(); ++c) {
-               int const crop_left_in_bytes = bytes_per_pixel(c) * crop.left;
-               /* bytes_per_pixel() could be a fraction; in this case the stride will be rounded
-                  up, and we need to make sure that we copy over the width (up to the stride)
-                  rather than short of the width; hence the ceil() here.
-               */
-               int const cropped_width_in_bytes = ceil (bytes_per_pixel(c) * cropped_size.width);
-
-               /* Start of the source line, cropped from the top but not the left */
-               uint8_t* in_p = data()[c] + (crop.top / out->line_factor(c)) * stride()[c];
-               uint8_t* out_p = out->data()[c];
-
-               for (int y = 0; y < out->lines(c); ++y) {
-                       memcpy (out_p, in_p + crop_left_in_bytes, cropped_width_in_bytes);
-                       in_p += stride()[c];
-                       out_p += out->stride()[c];
-               }
-       }
-
-       return out;
-}
-
 /** Blacken a YUV image whose bits per pixel is rounded up to 16 */
 void
 Image::yuv_16_black (uint16_t v, bool alpha)
index 89cd98f7b281bd6cfe68a758e3b8ceb33625d3a9..492f6212e28db97116250323dae56d59c9e15554 100644 (file)
@@ -59,7 +59,6 @@ public:
        int lines (int) const;
 
        boost::shared_ptr<Image> scale (dcp::Size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat, bool aligned) const;
-       boost::shared_ptr<Image> crop (Crop c, bool aligned) const;
        boost::shared_ptr<Image> crop_scale_window (Crop c, dcp::Size, dcp::Size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat, bool aligned) const;
 
        void make_black ();
index 21363b5efd24b73885c32e23730bcf23074c7c0e..cb1aa35d7e7dd9c0f71628ed5c576970467e0b29 100644 (file)
@@ -131,106 +131,6 @@ BOOST_AUTO_TEST_CASE (compact_image_test)
        delete u;
 }
 
-BOOST_AUTO_TEST_CASE (crop_image_test)
-{
-       /* This was to check out a bug with valgrind, and is probably not very useful */
-       shared_ptr<Image> image (new Image (PIX_FMT_YUV420P, dcp::Size (16, 16), true));
-       image->make_black ();
-       Crop crop;
-       crop.top = 3;
-       image->crop (crop, false);
-}
-
-/* Test cropping of a YUV 4:2:0 image by 1 pixel, which used to fail because
-   the U/V copying was not rounded up to the next sample.
-*/
-BOOST_AUTO_TEST_CASE (crop_image_test2)
-{
-       /* Here's a 1998 x 1080 image which is black */
-       shared_ptr<Image> image (new Image (PIX_FMT_YUV420P, dcp::Size (1998, 1080), true));
-       image->make_black ();
-
-       /* Crop it by 1 pixel */
-       Crop crop;
-       crop.left = 1;
-       image = image->crop (crop, true);
-
-       /* Convert it back to RGB to make comparison to black easier */
-       image = image->scale (image->size(), dcp::YUV_TO_RGB_REC601, PIX_FMT_RGB24, true);
-
-       /* Check that its still black after the crop */
-       uint8_t* p = image->data()[0];
-       for (int y = 0; y < image->size().height; ++y) {
-               uint8_t* q = p;
-               for (int x = 0; x < image->size().width; ++x) {
-                       BOOST_CHECK_EQUAL (*q++, 0);
-                       BOOST_CHECK_EQUAL (*q++, 0);
-                       BOOST_CHECK_EQUAL (*q++, 0);
-               }
-               p += image->stride()[0];
-       }
-}
-
-static
-void
-crop_scale_window_single (AVPixelFormat in_format, dcp::Size in_size, Crop crop, dcp::Size inter_size, dcp::Size out_size)
-{
-       /* Set up our test image */
-       shared_ptr<Image> test (new Image (in_format, in_size, true));
-       uint8_t n = 0;
-       for (int c = 0; c < test->components(); ++c) {
-               uint8_t* p = test->data()[c];
-               for (int y = 0; y < test->lines(c); ++y) {
-                       for (int x = 0; x < test->stride()[c]; ++x) {
-                               *p++ = n++;
-                       }
-               }
-       }
-
-       /* Convert using separate methods */
-       boost::shared_ptr<Image> sep = test->crop (crop, true);
-       sep = sep->scale (inter_size, dcp::YUV_TO_RGB_REC601, PIX_FMT_RGB24, true);
-       boost::shared_ptr<Image> sep_container (new Image (PIX_FMT_RGB24, out_size, true));
-       sep_container->make_black ();
-       sep_container->copy (sep, Position<int> ((out_size.width - inter_size.width) / 2, (out_size.height - inter_size.height) / 2));
-
-       /* Convert using the all-in-one method */
-       shared_ptr<Image> all = test->crop_scale_window (crop, inter_size, out_size, dcp::YUV_TO_RGB_REC601, PIX_FMT_RGB24, true);
-
-       /* Compare */
-       BOOST_CHECK_EQUAL (sep_container->size().width, all->size().width);
-       BOOST_CHECK_EQUAL (sep_container->size().height, all->size().height);
-
-       /* Assuming RGB on these */
-       BOOST_CHECK_EQUAL (sep_container->components(), 1);
-       BOOST_CHECK_EQUAL (all->components(), 1);
-
-       uint8_t* p = sep_container->data()[0];
-       uint8_t* q = all->data()[0];
-       for (int y = 0; y < all->size().height; ++y) {
-               uint8_t* pp = p;
-               uint8_t* qq = q;
-               for (int x = 0; x < all->size().width * 3; ++x) {
-                       BOOST_CHECK_EQUAL (*pp++, *qq++);
-               }
-               p += sep_container->stride()[0];
-               q += all->stride()[0];
-       }
-}
-
-/** Test Image::crop_scale_window against separate calls to crop/scale/copy */
-BOOST_AUTO_TEST_CASE (crop_scale_window_test)
-{
-       crop_scale_window_single (AV_PIX_FMT_YUV422P, dcp::Size (640, 480), Crop (), dcp::Size (640, 480), dcp::Size (640, 480));
-       crop_scale_window_single (AV_PIX_FMT_YUV422P, dcp::Size (640, 480), Crop (2, 4, 6, 8), dcp::Size (640, 480), dcp::Size (640, 480));
-       crop_scale_window_single (AV_PIX_FMT_YUV422P, dcp::Size (640, 480), Crop (2, 4, 6, 8), dcp::Size (1920, 1080), dcp::Size (1998, 1080));
-       crop_scale_window_single (AV_PIX_FMT_YUV422P, dcp::Size (640, 480), Crop (1, 4, 6, 8), dcp::Size (1920, 1080), dcp::Size (1998, 1080));
-       crop_scale_window_single (AV_PIX_FMT_YUV420P, dcp::Size (640, 480), Crop (16, 16, 0, 0), dcp::Size (1920, 1080), dcp::Size (1998, 1080));
-       crop_scale_window_single (AV_PIX_FMT_YUV420P, dcp::Size (640, 480), Crop (16, 3, 3, 0), dcp::Size (1920, 1080), dcp::Size (1998, 1080));
-       crop_scale_window_single (AV_PIX_FMT_RGB24, dcp::Size (1000, 800), Crop (0, 0, 0, 0), dcp::Size (1920, 1080), dcp::Size (1998, 1080));
-       crop_scale_window_single (AV_PIX_FMT_RGB24, dcp::Size (1000, 800), Crop (55, 0, 1, 9), dcp::Size (1920, 1080), dcp::Size (1998, 1080));
-}
-
 /** Test Image::alpha_blend */
 BOOST_AUTO_TEST_CASE (alpha_blend_test)
 {