summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/lib/image.cc8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/lib/image.cc b/src/lib/image.cc
index 1a5b11ecb..97aeccd76 100644
--- a/src/lib/image.cc
+++ b/src/lib/image.cc
@@ -183,6 +183,14 @@ Image::crop_scale_window (
/* Size of the image after any crop */
dcp::Size const cropped_size = rounded_crop.apply (size());
+ /* Hack: if we're not doing quite the crop that we were asked for, and we carry on scaling
+ * to the inter_size we were asked for, there is a small but noticeable wobble in the image
+ * luminance (#1872). This hack means we will jump in steps of the subsampling distance
+ * in both crop and scale.
+ */
+ inter_size.width = round_width_for_subsampling(inter_size.width, in_desc);
+ inter_size.height = round_width_for_subsampling(inter_size.height, in_desc);
+
/* Scale context for a scale from cropped_size to inter_size */
struct SwsContext* scale_context = sws_getContext (
cropped_size.width, cropped_size.height, pixel_format(),