Return-Path: <SRS0=sUW6=WS=lists.osgeo.org=tiff-bounces@osgeo.org>
Received: from mailfep022.skynet.be ([10.35.132.206])
          by mailafep052-svc.mx.internal
          (InterMail vM.9.07.03.022 201-2473-138-3) with ESMTP
          id <20220611074010.VMVF4460.mailafep052-svc.mx.internal@mailfep022.skynet.be>
          for <chris.lindelaan@skynet.be>; Sat, 11 Jun 2022 09:40:10 +0200
Received: from el9759.bc ([10.27.1.14]) by mailfep022.skynet.be
          (InterMail vM.8.04.03.28.4 201-2389-100-182-103-20180124)
          with ESMTP
          id <20220611074010.BFTO11523.mailfep022.skynet.be@el9759.bc>
          for <chris.lindelaan@skynet.be>; Sat, 11 Jun 2022 09:40:10 +0200
Received: from [172.82.239.188] ([172.82.239.188])
 by el9759.bc with ngmta
 id 3a12e04c-16f780fc85e4d37f; Sat, 11 Jun 2022 09:40:10 +0200
Received-SPF: None (mx101.skynet.be: no sender authenticity
  information available from domain of
  tiff-bounces@lists.osgeo.org) identity=pra;
  client-ip=140.211.15.3; receiver=mx101.skynet.be;
  envelope-from="SRS0=sUW6=WS=lists.osgeo.org=tiff-bounces@osgeo.org";
  x-sender="tiff-bounces@lists.osgeo.org";
  x-conformance=sidf_compatible
Received-SPF: Pass (mx101.skynet.be: domain of
  SRS0=sUW6=WS=lists.osgeo.org=tiff-bounces@osgeo.org
  designates 140.211.15.3 as permitted sender)
  identity=mailfrom; client-ip=140.211.15.3;
  receiver=mx101.skynet.be;
  envelope-from="SRS0=sUW6=WS=lists.osgeo.org=tiff-bounces@osgeo.org";
  x-sender="SRS0=sUW6=WS=lists.osgeo.org=tiff-bounces@osgeo.org";
  x-conformance=sidf_compatible; x-record-type="v=spf1";
  x-record-text="v=spf1 mx a:mail.osgeo.org a:lists.osgeo.org
  a:mail.osgeo.osuosl.org ip4:140.211.15.3 a:osgeo7.osgeo.org
  a:trac.osgeo.org a:dev.trac.osgeo.org
  a:secure.osgeo.osuosl.org ip4:140.211.15.57
  ip4:140.211.15.32 ip4:140.211.15.26 ip4:140.211.15.6"
Received-SPF: PermError (mx101.skynet.be: cannot correctly
  interpret sender authenticity information from domain of
  postmaster@lists.osgeo.org) identity=helo;
  client-ip=140.211.15.3; receiver=mx101.skynet.be;
  envelope-from="SRS0=sUW6=WS=lists.osgeo.org=tiff-bounces@osgeo.org";
  x-sender="postmaster@lists.osgeo.org";
  x-conformance=sidf_compatible; x-record-type="v=spf1";
  x-record-text=""
Authentication-Results: mx101.skynet.be; spf=None smtp.pra=tiff-bounces@lists.osgeo.org; spf=Pass smtp.mailfrom=SRS0=sUW6=WS=lists.osgeo.org=tiff-bounces@osgeo.org; spf=PermError smtp.helo=postmaster@lists.osgeo.org; dkim=hardfail (body hash did not verify [final]) header.i=@awaresystems.be
X-Ironport-Dmarc-Check-Result: validskip
IronPort-SDR: VglfFCSHxSESj+jZBl0kq8oE91nnGKwi/2qvAHsaRmLD7jAKyKJyplsJ6xovDIp6kSvF6gvjMA
 AWvVW8CsDI4zrNRwQXu4uq6YrcYXvBI8rSlRT4NOfhcrt3JHah/bypu8hBQQn5tHk3U70YE2yB
 PpaKGA11HSQwXZlMwY7RArGWmIhbb1g5lWH7eXTqJVMvGn1tlFaNtIT5lllbCaci/j1ahBnzR9
 FO1uE/kZ4JfWelOG2RfG35BYZu1ESzux6WKwnBfPXuoGDfXes2U4wYRyJtUZKQtwUd9+K1k1TS
 RyiMkaDQ4YHt//9BmFglmp0n
X-Proximus-RemoteIp: 140.211.15.3
X-Proximus-Mfrom: SRS0=sUW6=WS=lists.osgeo.org=tiff-bounces@osgeo.org
X-Proximus-Rcpto: chris.lindelaan@skynet.be
X-IPAS-Result: =?us-ascii?q?A0FUAAAZRqRimAMP04xaHQEBAQEJARIBBQUBQIE+BQELA?=
 =?us-ascii?q?QGCIgEYAWdXKgIBCEuNT4gOAxZ9nUgUAQECAQEBAQEJLAsLBAEBAQIBA4FHQ?=
 =?us-ascii?q?IJxAYVNIAUBBDMGDgECAQMBAQEBAwIDAQEBAQEBAwEBAQQBAQECAQECBAICA?=
 =?us-ascii?q?QECEAEBAQEBAQEBCQsJBwYMBRAOBTxpXwRmBl8EgXkHAzANQBYBgV4FAgMYD?=
 =?us-ascii?q?kwiVgEBAQEBAQEBAScCAQEBAQEBAQEBAQEBAQEBAQEBARYCDVJnAQEBAgEBA?=
 =?us-ascii?q?QEPKAYBAQQKHgsBAgIBAQIGAQEKCysEBAgDAR4FAQwBBQEcBhMFHYJbAYJ1I?=
 =?us-ascii?q?wMEAQqfXoEEQoo4eIEzgQGCCAEBBodlAwaBPQGObUM/AYFNehs2gj03PoFTg?=
 =?us-ascii?q?Q8BBIgYgm2VNAMEBgU6AQIBHig0EoEhcQEIBgYHCgUyBgIMGBQEAhMSUx0CE?=
 =?us-ascii?q?gwKHA5UGQwPAxIDEQEHAgsSCBUsCAMCAwgDAgMjCwIDFwkHCgMdCAocEhAUA?=
 =?us-ascii?q?gQTHgsIAxkMEywJAgQOA0UICwoDEQQDExgLEQUIEAQGAwkvDSgLAxQPAQYDB?=
 =?us-ascii?q?gIFBQEDIAMUAwUnBwMhBwsmDQ0EHAcdAwMFJgMCAhsHAgIDAgYXBgICbwomD?=
 =?us-ascii?q?QgECAQcHSQQBQIHMQUELwIeBAUGEQkCFgIGBAUCBAQWAgISCAIIJxsHFhElG?=
 =?us-ascii?q?QEFDk8GCwkhHCkLBgUGFgMjcQVIDyk1NjwvIRsKTygBmiodJx00LBkJOQI7N?=
 =?us-ascii?q?DgENTqhZJ8aCoNOLgeKaY0Ch3Ixg3WTIJFHlmuNLZQghVYQI4FUJoFabRg7M?=
 =?us-ascii?q?QaCMU4BAwINAgECAQIBAgECAgEBAgMBAQKOHQwWgjKGMoVJA0AzOwIGCwEBA?=
 =?us-ascii?q?wmNF4FvgRFdAQE?=
IronPort-PHdr: A9a23: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
IronPort-Data: A9a23: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
 q4pivQzmNpedU0IIBxkX1ROgyAq
IronPort-HdrOrdr: A9a23:t7BdZaDshHTi/GPlHejwsceALOsnbusQ8zAXPiBKIyC9vPbo6f
 xG+85rniMc6QxhEE3I/OruVpVoLkmsj6Kd37Nhd4tKMDOWw1dAabsSlbcL7VXbalvDH8RmpN
 Jdm5EXMqyGMbCR5fyKqTVQauxQtOVvk5rY49s2rU0dMT2CMJsQnTuRYzzzeiYbNWo2Z6bRVq
 Dsn/aviADQNEj/Bf7Ld0XtMdKz2OEiVfrdEG477t0cmWyzpALtxrrzEx3d+AwfXTNJybJn1W
 TeiQT26uGCnpiAu2LhPqPonvBrcFSN8LZ+Lf3Jq8ARDDLhziyvYoZgV9S53QwdkaWP4FMNl9
 WJgzpIBaROA/y4RBDHnfIl4XiG7AoT
X-IronPort-Anti-Spam-Filtered: true
X-MGA-submission: =?us-ascii?q?MDEm3q5nhKA0aEpmy406hj3YLzjG6hoAgyablx?=
 =?us-ascii?q?mimJsHn832WjFVwYjfW/3xtSCCazTi+6EH/nJqfeYCCYvcF8UHS5paEN?=
 =?us-ascii?q?CbrKna70GJtK/R4SYNbea3a1KxuWbxyVF6ars=3D?=
Received: from osgeo6.osgeo.osuosl.org (HELO lists.osgeo.org) ([140.211.15.3])
  by mx101.skynet.be with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 11 Jun 2022 09:39:38 +0200
Received: from osgeo6.osgeo.osuosl.org (localhost [127.0.0.1])
	by lists.osgeo.org (Postfix) with ESMTP id 9DAE36145950;
	Sat, 11 Jun 2022 00:39:29 -0700 (PDT)
X-Greylist: delayed 964 seconds by postgrey-1.36 at osgeo6;
 Sat, 11 Jun 2022 00:39:25 PDT
Received: from mailrelay4-3.pub.mailoutpod1-cph3.one.com
 (mailrelay4-3.pub.mailoutpod1-cph3.one.com [46.30.212.13])
 by lists.osgeo.org (Postfix) with ESMTPS id 4D257614665D
 for <tiff@lists.osgeo.org>; Sat, 11 Jun 2022 00:39:25 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=awaresystems.be; s=rsa2;
 h=content-type:cc:to:subject:message-id:date:from:in-reply-to:references:
 mime-version:from;
 bh=0qTF7ztzMG/qbBkf5JRp80blBjBZTyJIKda63wH5w7M=;
 b=Y2gpwAN6koso4dcsPdMZaWcyalyoV5jqQJvpljPjCxcRo/2FRUo0oRxjWX1o2Po0/uZrdV+/Q0OlO
 35wNXfUkvCCP6Ejaa6Q56zBpnDtMaizUP3eEjRsWuGj8OeFtPgf6nAE+EAt9FXmH+YT/CGdOzOwdEE
 uIYEimHO74Yq1rsv+xComXUNYEGy5e616CrM8Q+yhs0FOK+nGr/MU7rqly9vHIarPn00IMnla7eFvH
 YXhgy6yROk/L9QFb4vgds+SKr+VB/8KFvSWH4s0R8XTec5NdT6pDeWfgsA+e9GKGvBnCOITdH6E+zh
 X+Y5JEsQrICE4oaNr/vIT6dTCZSKmwA==
DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed;
 d=awaresystems.be; s=ed2;
 h=content-type:cc:to:subject:message-id:date:from:in-reply-to:references:
 mime-version:from;
 bh=0qTF7ztzMG/qbBkf5JRp80blBjBZTyJIKda63wH5w7M=;
 b=32oaCOCeD6wbE/NlnBkbUbm+hWFew8VKgEE+0s7Tnmg0mau1PbW3zB5BCWCgm7Rp9IljEnNb5WdM2
 AAwmUHJAQ==
X-HalOne-Cookie: 44c48e52b5ffed7f78e77e1f3531a6cf13ff2df2
X-HalOne-ID: 5d628189-e957-11ec-8231-d0431ea8bb10
Received: from mail-ed1-f52.google.com (mail-ed1-f52.google.com
 [209.85.208.52])
 by mailrelay4.pub.mailoutpod1-cph3.one.com (Halon) with ESMTPSA
 id 5d628189-e957-11ec-8231-d0431ea8bb10;
 Sat, 11 Jun 2022 07:23:18 +0000 (UTC)
Received: by mail-ed1-f52.google.com with SMTP id z7so1379304edm.13
 for <tiff@lists.osgeo.org>; Sat, 11 Jun 2022 00:23:18 -0700 (PDT)
X-Gm-Message-State: AOAM531L6el/AWdf5OgHVohz0vrEvqJOrFsQinupTz524aJ+UjyAzmYn
 nbjMsr0/IGD71lnEpR06LIMyhXBFK2FO1DjIC10=
X-Google-Smtp-Source: ABdhPJzbwnd0ZMTcUbybqlANjQbBDIb551eoHpR/yNGKV3NfeAekag66upguSRteUlIAxnsvgXVCuZzoOcfkoqTpfVU=
X-Received: by 2002:a05:6402:847:b0:42d:91ed:82f3 with SMTP id
 b7-20020a056402084700b0042d91ed82f3mr55812707edz.416.1654932197750; Sat, 11
 Jun 2022 00:23:17 -0700 (PDT)
MIME-Version: 1.0
References: <00c335da-9c4f-b6e3-e6df-1f9507903490@amyspark.me>
 <424b436b-70f6-4bb8-4132-30948a10f103@amyspark.me>
 <32f5090d-1b3c-8165-6fcf-6a3ed73e0718@spatialys.com>
 <e53420e6-c3a5-2a1c-2598-1c9c99f7570a@amyspark.me>
In-Reply-To: <e53420e6-c3a5-2a1c-2598-1c9c99f7570a@amyspark.me>
From: "Joris Van Damme (AWare Systems)" <info@awaresystems.be>
Date: Sat, 11 Jun 2022 09:23:06 +0200
X-Gmail-Original-Message-ID: <CA+NZCsQtbid1pS1SnC_4SJEE4euHOFz595G_BsWMY+D3EMG8WQ@mail.gmail.com>
Message-ID: <CA+NZCsQtbid1pS1SnC_4SJEE4euHOFz595G_BsWMY+D3EMG8WQ@mail.gmail.com>
To: "L. E. Segovia" <amy@amyspark.me>
Cc: tiff@lists.osgeo.org
Subject: Re: [Tiff] How to read JPEG-compressed YCbCr TIFFs
X-BeenThere: tiff@lists.osgeo.org
X-Mailman-Version: 2.1.34
Precedence: list
List-Id: TIFF and libtiff discussion <tiff.lists.osgeo.org>
List-Unsubscribe: <https://lists.osgeo.org/mailman/options/tiff>,
 <mailto:tiff-request@lists.osgeo.org?subject=unsubscribe>
List-Post: <mailto:tiff@lists.osgeo.org>
List-Help: <mailto:tiff-request@lists.osgeo.org?subject=help>
List-Subscribe: <https://lists.osgeo.org/mailman/listinfo/tiff>,
 <mailto:tiff-request@lists.osgeo.org?subject=subscribe>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: tiff-bounces@lists.osgeo.org
Sender: "Tiff" <tiff-bounces@lists.osgeo.org>
X-VadeSecure-Score: 0
X-VadeSecure-Verdict: clean
X-VadeSecure-Cause: gggruggvucftvghtrhhoucdtuddrgedvfedrudduvddguddulecutefuod
 etggdotefrodftvfcurfhrohhfihhlvgemucfrtffqigfkofgfufenuceurghilhhouhhtmecufed
 tudenucenucfjughrpeggfhgjhfffkffvvefuphejjfdufedttgfgvghssehtjeertddttddvnecu
 hfhrohhmpedflfhorhhishcugggrnhcuffgrmhhmvgculdethggrrhgvucfuhihsthgvmhhsmddfu
 ceoihhnfhhosegrfigrrhgvshihshhtvghmshdrsggvqeenucggtffrrghtthgvrhhnpeejueffle
 eijeekleffteeiueevgfehheduleefjeffgefgleffgffhleeljeduudenucffohhmrghinhepohh
 sghgvohdrohhrghenucfkphepudegtddrvdduuddrudehrdefpddvtdelrdekhedrvddtkedrhedv
 necuvehluhhsthgvrhfuihiivgeptdenucfrrghrrghmpehinhgvthepudegtddrvdduuddrudehr
 defpdhmrghilhhfrhhomhepufftufdtpehsfgghieephgfupehlihhsthhsrdhoshhgvghordhorh
 hgpehtihhffhdqsghouhhntggvshesohhsghgvohdrohhrghdpnhgspghrtghpthhtohepuddprhg
 tphhtthhopegthhhrihhsrdhlihhnuggvlhgrrghnsehskhihnhgvthdrsggvpdhmohguvgepshhm
 thhp

Amyspark,

> That implies a conversion to RGB. We need the fully decoded,
> uncompressed YCbCr data, hence why I've been investigating how to make
> it happen.

I get that, and I'm unable to help, but I can clarify what to expect
from LibTiff in this case and how this came about.

It is certainly true that TIFF, as in, the file format itself,
supports subsampling, independent of compression mode. In fact, with
the later arrival of various flavours of CIE L*a*b* encoding, even
though these aren't in the original specification, it would be correct
to say that TIFF supports subsampling independent of colour space, as
long as it makes some sense (as in, you really shouldn't be
subsampling RGB, you do need a separate brightness channel followed by
two chroma channels).

This being said, nobody was ever using that feature before the arrival
of JPEG compression inside TIFF. That got implemented in LibTiff by
delegating JPEG compression and decompression to LibJpeg. And so there
was this extra layer of complication and confusion around subsampling,
as the subsampling byte-level layout was very different in LibJpeg,
inspired by the JPEG file format, compared to the subsampling
byte-level layout in LibTiff as it would have been inspired by the
TIFF format.

From an engineering perspective, what was required was conversion code
to go between the two different layouts. That way, all further
resolution of data organisation and color conversion could proceed
along a generalized path, and at least that way that generalized path
would have been complete and there would have been incentive to
maintain it. From a pragmatic software development perspective,
though, it hardly seemed worth all that trouble. It was way easier to
input RGB to the LibJpeg subcodec when compressing, and output RGB
from it when decompression, forcing LibJpeg to do resolve all the
subsampling/desubsampling issues and colour conversions. In LibJpeg,
the code was already there.

Of course, that leads to inconsistencies on higher levels. Suddenly,
the photometric interpretation value wasn't to be taken literally in
some cases, depending on whether compression mode was JPEG, and
neither were subsampling values, decompressed strip/tile access to
subsampled data wasn't ever going to work in these cases like it was
supposed to in the general case, etc... These inconsistencies in turn
have led to many bugs and problems over the years.

At one point I designed the current old-style JPEG decoder (that next
got maintained to death, and subsequently disabled by default, last I
heard). I decided to do the right thing in that instance, especially
since it was only supposed to decode anyway. I did not add support for
the 'pseudotag' or any other special case hacks, but added code that
did the conversion from LibJpeg subsampled YCbCr output to the
subsampled organisation LibTiff was expecting, in as far as there was
any support for it at all. Of course some people complained, as
suddenly they had to deal with YCbCr and subsampling, whereas before
they got away with ignoring it. As LibTiff at that point didn't have
much support for (de)subsampling, they were right to complain from a
usability standpoint.

I sort of hoped my contribution could be the starting point for more
generalized subsampling support, as well as YCbCr support, independent
of one another and independent of compression mode as is the spirit of
the TIFF file format. Turns out the application was way too niche
though, and the work required to move forward from that point just
wasn't worth it to anyone.

So there you are. I get your code design. I did the same at one point.
You are correct in trying to get to that particular data the way you
want it, given the way you're using LibTiff. But there's no way it's
ever going to work. Your only option is to have a separate path for
JPEG compressed subsampled data, using the "TIFFTAG_JPEGCOLORMODE"
pseudotag, pretending it's actually non-subsampled RGB, as does
LibTiff internally. The data you're looking for, the way you want it,
is not actually there at any point in the inconsistent internal
decoder design.


Best regards,

Joris Van Damme
AWare Systems
_______________________________________________
Tiff mailing list
Tiff@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/tiff
