libtiff: * libtiff/tif_jpeg.c: reduce usage of JCS_UNKNOWN in order

https://github.com/libsdl-org/libtiff/commit/ccfe4298fde64d598767d7b0464f0caa76993f6c

From ccfe4298fde64d598767d7b0464f0caa76993f6c Mon Sep 17 00:00:00 2001
From: Lee Howard <[EMAIL REDACTED]>
Date: Tue, 14 Dec 2010 23:59:42 +0000
Subject: [PATCH]         * libtiff/tif_jpeg.c: reduce usage of JCS_UNKNOWN in
 order         to improve compatibility with various viewers         submitted
 by e-mail from Dwight Kelly <dkelly@apago.com>

---
 ChangeLog          |  6 ++++++
 libtiff/tif_jpeg.c | 13 ++++++++++---
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index fef8a936..885c6b9c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-12-13  Lee Howard <faxguy@howardsilvan.com>
+
+	* libtiff/tif_jpeg.c: reduce usage of JCS_UNKNOWN in order
+	to improve compatibility with various viewers
+	submitted by e-mail from Dwight Kelly <dkelly@apago.com>
+
 2010-12-13  Lee Howard <faxguy@howardsilvan.com>
 
 	* tools/fax2ps.c: be consistent with page-numbering
diff --git a/libtiff/tif_jpeg.c b/libtiff/tif_jpeg.c
index 69691f98..051eba1b 100644
--- a/libtiff/tif_jpeg.c
+++ b/libtiff/tif_jpeg.c
@@ -1,4 +1,4 @@
-/* $Id: tif_jpeg.c,v 1.50.2.14 2010-12-12 01:57:24 faxguy Exp $ */
+/* $Id: tif_jpeg.c,v 1.50.2.15 2010-12-14 23:59:42 faxguy Exp $ */
 
 /*
  * Copyright (c) 1994-1997 Sam Leffler
@@ -1358,8 +1358,15 @@ JPEGPreEncode(TIFF* tif, tsample_t s)
 			sp->cinfo.c.comp_info[0].h_samp_factor = sp->h_sampling;
 			sp->cinfo.c.comp_info[0].v_samp_factor = sp->v_sampling;
 		} else {
-			sp->cinfo.c.in_color_space = JCS_UNKNOWN;
-			if (!TIFFjpeg_set_colorspace(sp, JCS_UNKNOWN))
+			if (td->td_photometric == PHOTOMETRIC_MINISWHITE || td->td_photometric == PHOTOMETRIC_MINISBLACK)
+				sp->cinfo.c.in_color_space = JCS_GRAYSCALE;
+			else if (td->td_photometric == PHOTOMETRIC_RGB)
+				sp->cinfo.c.in_color_space = JCS_RGB;
+			else if (td->td_photometric == PHOTOMETRIC_SEPARATED && td->td_samplesperpixel == 4)
+				sp->cinfo.c.in_color_space = JCS_CMYK;
+			else
+				sp->cinfo.c.in_color_space = JCS_UNKNOWN;
+			if (!TIFFjpeg_set_colorspace(sp, (sp->cinfo.c.in_color_space == JCS_RGB) ? JCS_YCbCr : sp->cinfo.c.in_color_space))
 				return (0);
 			/* jpeg_set_colorspace set all sampling factors to 1 */
 		}