Fix incorrect images when cropping without stretch.
[dcpomatic.git] / src / lib / j2k_image_proxy.cc
index d4c7a8716d7a6dae7876d3b07030b0a0f8a79fde..31fda2510492d9285f8987c73a41acd9551a5435 100644 (file)
@@ -137,14 +137,7 @@ J2KImageProxy::prepare (optional<dcp::Size> target_size) const
        }
 
        shared_ptr<dcp::OpenJPEGImage> decompressed = dcp::decompress_j2k (const_cast<uint8_t*> (_data.data().get()), _data.size (), reduce);
-
-       /* When scaling JPEG2000 images (using AV_PIX_FMT_XYZ12LE) ffmpeg will call xyz12ToRgb48 which reads data
-          from the whole of the image stride.  If we are cropping, Image::crop_scale_window munges the
-          start addresses of each image row (to do the crop) but keeps the stride the same.  This means
-          that under crop we will read over the end of the image by the amount of the crop.  To allow this
-          to happen without invalid memory access we need to overallocate by one whole stride's worth of pixels.
-       */
-       _image.reset (new Image (_pixel_format, decompressed->size(), true, decompressed->size().width));
+       _image.reset (new Image (_pixel_format, decompressed->size(), true));
 
        int const shift = 16 - decompressed->precision (0);