Add convert_pixel_format convenience function.
authorCarl Hetherington <cth@carlh.net>
Tue, 2 Jan 2018 23:35:43 +0000 (23:35 +0000)
committerCarl Hetherington <cth@carlh.net>
Tue, 2 Jan 2018 23:35:43 +0000 (23:35 +0000)
src/lib/image.cc
src/lib/image.h
test/image_test.cc

index a6354f2d16793c8790930f7eb4f622bbfd1db7d0..4371c5997ce22207a2411e9cbf1786dee05334fd 100644 (file)
@@ -220,6 +220,12 @@ Image::crop_scale_window (
        return out;
 }
 
+shared_ptr<Image>
+Image::convert_pixel_format (dcp::YUVToRGB yuv_to_rgb, AVPixelFormat out_format, bool out_aligned, bool fast) const
+{
+       return scale(size(), yuv_to_rgb, out_format, out_aligned, fast);
+}
+
 /** @param out_size Size to scale to.
  *  @param yuv_to_rgb YUVToRGB transform transform to use, if required.
  *  @param out_format Output pixel format.
index ce57c5317f4362d49e93391ace25d27c0bfa3a5f..8de0a2c69e53c5576a28baf62a8b9b4873667125 100644 (file)
@@ -59,6 +59,7 @@ public:
        dcp::Size sample_size (int) const;
        float bytes_per_pixel (int) const;
 
+       boost::shared_ptr<Image> convert_pixel_format (dcp::YUVToRGB yuv_to_rgb, AVPixelFormat out_format, bool aligned, bool fast) const;
        boost::shared_ptr<Image> scale (dcp::Size out_size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat out_format, bool aligned, bool fast) const;
        boost::shared_ptr<Image> crop_scale_window (
                Crop crop, dcp::Size inter_size, dcp::Size out_size, dcp::YUVToRGB yuv_to_rgb, AVPixelFormat out_format, bool aligned, bool fast
index 7428d51830e87d9201a6fe91f12094e08f890584..67daaa509e13ffa768462f00d410416a2f8c40a3 100644 (file)
@@ -140,7 +140,7 @@ alpha_blend_test_one (AVPixelFormat format, string suffix)
 {
        shared_ptr<MagickImageProxy> proxy (new MagickImageProxy (private_data / "prophet_frame.tiff"));
        shared_ptr<Image> raw = proxy->image();
-       shared_ptr<Image> background = raw->scale (raw->size(), dcp::YUV_TO_RGB_REC709, format, true, false);
+       shared_ptr<Image> background = raw->convert_pixel_format (dcp::YUV_TO_RGB_REC709, format, true, false);
 
        shared_ptr<Image> overlay (new Image (AV_PIX_FMT_RGBA, raw->size(), true));
        overlay->make_transparent ();
@@ -171,7 +171,7 @@ alpha_blend_test_one (AVPixelFormat format, string suffix)
 
        background->alpha_blend (overlay, Position<int> (0, 0));
 
-       shared_ptr<Image> save = background->scale (background->size(), dcp::YUV_TO_RGB_REC709, AV_PIX_FMT_RGB24, false, false);
+       shared_ptr<Image> save = background->convert_pixel_format (dcp::YUV_TO_RGB_REC709, AV_PIX_FMT_RGB24, false, false);
 
        write_image (save, "build/test/image_test_" + suffix + ".png", "RGB");
        check_image ("build/test/image_test_" + suffix + ".png", private_data / ("image_test_" + suffix + ".png"));