qcam: dng: Make TIFFTAG_CFAPATTERN variable count

Since libtiff version 20201219, the CFAPATTERN tag is using a variable
count and not the fixed 4 values size.
For reference, the commit introducing this is:

	commit 2eb5a954cb7b7ad61559da00743c4b0e2fce34d0
	Author: Sam Hasinoff <hasinoff@google.com>
	Date:   Sun Mar 8 21:23:16 2020 +0100
	Make TIFFTAG_CFAPATTERN variable count

Add a version check in the DNGWriter::write function when this tag is
written as this breaks the raw capture in qcam.

Signed-off-by: Jean-Michel Hautbois <jeanmichel.hautbois@ideasonboard.com>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>
This commit is contained in:
Jean-Michel Hautbois via libcamera-devel
2022-06-16 10:49:41 +02:00
committed by Paul Elder
parent f4201e9636
commit ae7809307e

View File

@@ -507,7 +507,10 @@ int DNGWriter::write(const char *filename, const Camera *camera,
TIFFSetField(tif, TIFFTAG_PLANARCONFIG, PLANARCONFIG_CONTIG);
TIFFSetField(tif, TIFFTAG_SAMPLEFORMAT, SAMPLEFORMAT_UINT);
TIFFSetField(tif, TIFFTAG_CFAREPEATPATTERNDIM, cfaRepeatPatternDim);
TIFFSetField(tif, TIFFTAG_CFAPATTERN, info->pattern);
if (TIFFLIB_VERSION < 20201219)
TIFFSetField(tif, TIFFTAG_CFAPATTERN, info->pattern);
else
TIFFSetField(tif, TIFFTAG_CFAPATTERN, 4, info->pattern);
TIFFSetField(tif, TIFFTAG_CFAPLANECOLOR, 3, cfaPlaneColor);
TIFFSetField(tif, TIFFTAG_CFALAYOUT, 1);