Return-Path: <tiff-bounces@remotesensing.org>
Received: from inmx019.isp.belgacom.be (inmx019.isp.belgacom.be [195.238.3.138])
        by mailst035.isp.belgacom.be (8.12.11/8.12.11/Skynet-MAILSTORE-2.14) with ESMTP id j2GJcjcg025978
        for <joris.at.lebbeke@skynet.be>; Wed, 16 Mar 2005 20:38:45 +0100
        (envelope-from <tiff-bounces@remotesensing.org>)
Received: from xserve.flids.com (adsl-065-083-169-202.sip.mco.bellsouth.net [65.83.169.202])
        by inmx019.isp.belgacom.be (8.12.11/8.12.11/Skynet-IN-2.32) with ESMTP id j2GJcc8n030391
        for <joris.at.lebbeke@skynet.be>; Wed, 16 Mar 2005 20:38:38 +0100
        (envelope-from <tiff-bounces@remotesensing.org>)
Received: from adsl-065-083-169-202.sip.mco.bellsouth.net (localhost [127.0.0.1])
	by xserve.flids.com (Postfix) with ESMTP
	id 4E0DA15D8370; Wed, 16 Mar 2005 14:38:11 -0500 (EST)
X-Original-To: tiff@remotesensing.org
Delivered-To: tiff@remotesensing.org
Received: from outmx002.isp.belgacom.be (outmx002.isp.belgacom.be
	[195.238.3.52])
	by xserve.flids.com (Postfix) with ESMTP id EE53115D834D
	for <tiff@remotesensing.org>; Wed, 16 Mar 2005 14:38:07 -0500 (EST)
Received: from outmx002.isp.belgacom.be (localhost [127.0.0.1])
	by outmx002.isp.belgacom.be (8.12.11/8.12.11/Skynet-OUT-2.22) with
	ESMTP id j2GJc5wj015667
	for <tiff@remotesensing.org>; Wed, 16 Mar 2005 20:38:05 +0100
	(envelope-from <joris.at.lebbeke@skynet.be>)
Received: from dfgrrxsknr4e (75-175.245.81.adsl.skynet.be [81.245.175.75])
	by outmx002.isp.belgacom.be (8.12.11/8.12.11/Skynet-OUT-2.22) with SMTP
	id j2GJbvae015595; Wed, 16 Mar 2005 20:37:57 +0100
	(envelope-from <joris.at.lebbeke@skynet.be>)
Message-ID: <001201c52a5f$cbd15300$4baff551@dfgrrxsknr4e>
From: "Joris" <joris.at.lebbeke@skynet.be>
To: "Roger Watkins" <RogerQuillDisc@insightbb.com>,
        "libTIFF group" <tiff@remotesensing.org>
References: <001c01c52988$4f65f460$6502a8c0@insightbb.com><001101c5298a$34494590$6aacf551@dfgrrxsknr4e>
	<000a01c52a53$18de4840$6502a8c0@insightbb.com>
Subject: Re: [Tiff] Need to write CCITT T.6 encoded TIFF file data
	directlytomemory buffer
Date: Wed, 16 Mar 2005 20:38:57 +0100
MIME-Version: 1.0
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: 7bit
X-Priority: 3
X-MSMail-Priority: Normal
X-Mailer: Microsoft Outlook Express 6.00.2800.1478
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1478
Cc: 
X-BeenThere: tiff@remotesensing.org
X-Mailman-Version: 2.1.2
Precedence: list
List-Id: TIFF and libtiff discussion  <tiff.remotesensing.org>
List-Unsubscribe: <http://xserve.flids.com/mailman/listinfo/tiff>,
	<mailto:tiff-request@remotesensing.org?subject=unsubscribe>
List-Archive: <http://xserve.flids.com/pipermail/tiff>
List-Post: <mailto:tiff@remotesensing.org>
List-Help: <mailto:tiff-request@remotesensing.org?subject=help>
List-Subscribe: <http://xserve.flids.com/mailman/listinfo/tiff>,
	<mailto:tiff-request@remotesensing.org?subject=subscribe>
Sender: tiff-bounces@remotesensing.org
Errors-To: tiff-bounces@remotesensing.org
X-UIDL: 1314de60ed10efde9e905cbc77170d2a

Roger,

> I am now more puzzled than ever.

I'm not sure what's so confusing. Why do you expect any reference to any
particular codec in IO functions? Perhaps I should try and explain where exactly
this IO comes into play...

The basic TIFF open function is TIFFClientOpen. This is not just the most basic
of TIFF open functions, it is in fact the *only* TIFF open function on the
platform independent LibTiff level. Amongst its parameters are pointers to IO
functions. By providing pointers to file IO functions, you obtain TIFF
reading/writing from/to file. By providing pointers to TStream IO functions you
obtain TIFF reading/writing from/to TStream. The most widely used TIFFOpen is in
fact a wrapper around TIFFClientOpen that passes pointers to file IO functions.

Let's look at this from another perspective. There's something like three layers
involved here

- The application level, that makes the call to a TIFFOpen or TIFFOpenStream
function
- The platform dependent little layer on top of LibTiff. This layer implements
IO functions in platform specific manners. tiff_win32.c, for example, is a
platform dependent layer, specifically targetted towards LibTiff usage in
windows. This tiff_win32.c thus implements file IO functions in a manner that
works for this platform. It also implements a TIFFOpen function, that is a
wrapper around the platform independent TIFFClientOpen, and passes pointers to
these win32 file IO functions.
- The platform independent core LibTiff. This layer can be platform independent
because it doesn't actually need to know how to read from or write to file, for
example. Instead, it has pointers to functions that do this kind of stuff,
provided as parameters in the TIFFClientOpen call. Whenever this core LibTiff
layer needs to read, it calls the tiff reader function that is *not* part of
patform independent core LibTiff, but pointed to by a TIFFClientOpen parameter,
and presumably implemented in the previously explained platform dependent little
layer.

More information about the various TIFFOpen flavours is here:

http://www.remotesensing.org/libtiff/man/TIFFOpen.3tiff.html

Does this all explain it?


Joris Van Damme
info@awaresystems.be
http://www.awaresystems.be/
Download your free TIFF tag viewer for windows here:
http://www.awaresystems.be/imaging/tiff/astifftagviewer.html

_______________________________________________
Tiff mailing list
Tiff@remotesensing.org
http://xserve.flids.com/mailman/listinfo/tiff
