AWARE [SYSTEMS] Imaging expertise for the Delphi developer
AWare Systems, Imaging expertise for the Delphi developer, Home TIFF and LibTiff Mailing List Archive

LibTiff Mailing List

TIFF and LibTiff Mailing List Archive
March 2004

Previous Thread
Next Thread

Previous by Thread
Next by Thread

Previous by Date
Next by Date

Contact

The TIFF Mailing List Homepage
This list is run by Frank Warmerdam
Archive maintained by AWare Systems



Valid HTML 4.01!



Thread

2004.03.15 23:58 "libtiff and streams", by Dimitar Gospodinov
2004.03.16 00:14 "Re: libtiff and streams", by Bob Friesenhahn
2004.03.16 00:43 "Re: libtiff and streams", by Joris Van Damme
2004.03.16 01:38 "Re: libtiff and streams", by Dimitar Gospodinov
2004.03.16 02:08 "Re: libtiff and streams", by Joris Van Damme
2004.03.16 06:56 "Re: libtiff and streams", by Andrey Kiselev
2004.03.16 12:16 "Re: libtiff and streams", by <d_sf@cox.net>
2004.03.16 04:30 "Re: libtiff and streams", by Frank Warmerdam
2004.03.16 08:00 "Re: libtiff and streams", by Rob Tillaart
2004.03.16 08:25 "Re: libtiff and streams", by Andrey Kiselev

2004.03.16 08:00 "Re: libtiff and streams", by Rob Tillaart

Hi,

A search on the RFC list on www.ietf.org gave the following TIFF hits:

2302 Tag Image File Format (TIFF) - image/tiff MIME Sub-type
     Registration. G. Parsons, J. Rafferty, S. Zilles. March 1998.
     (Format: TXT=14375 bytes) (Obsoleted by RFC3302) (Status: PROPOSED
     STANDARD)

2306 Tag Image File Format (TIFF) - F Profile for Facsimile. G.
     Parsons, J. Rafferty. March 1998. (Format: TXT=59358 bytes)
(Status:
     INFORMATIONAL)

3250 Tag Image File Format Fax eXtended (TIFF-FX) - image/tiff-fx MIME
     Sub-type Registration. L. McIntyre, G. Parsons, J. Rafferty.
     September 2002. (Format: TXT=17876 bytes) (Status: PROPOSED
STANDARD)

3302 Tag Image File Format (TIFF) - image/tiff MIME Sub-type
     Registration. G. Parsons, J. Rafferty. September 2002. (Format:
     TXT=15183 bytes) (Obsoletes RFC2302) (Status: PROPOSED STANDARD)


The RFC 2306 describes some guidelines to structure TIFF's:

http://www.faqs.org/rfcs/rfc2306.html section 3.1.4, 


from the RFC:
                   +-----------------------+
                   |         Header        |------------+
                   +-----------------------+            | First IFD
                   |      IFD (page 0)     | <----------+ Offset
               +---|                       |------------+
               |   |                       |--+         |
         Value |   +-----------------------+  |         |
        Offset +-->|      Long Values      |  |         |
                   +-----------------------|  | Strip   |
                   |  Image Data (page 0)  |<-+ Offset  |
                   +-----------------------+            | Next IFD
                   |      IFD (page 1)     | <----------+ Offset
               +---|                       |------------+
               |   |                       |--+         |
         Value |   +-----------------------+  |         |
        Offset +-->|      Long Values      |  |         |
                   +-----------------------|  | Strip   |
                   |  Image Data (page 1)  |<-+ Offset  |
                   +-----------------------+            | Next IFD
                   |      IFD (page 2)     | <----------+ Offset
                   +-----------------------+
                   |          :            |
                   |          :            |

       Figure 3.1     TIFF-F Minimum Subset File Structure


As far as I understand the RFC, images following these extra TIFF-F
rules can be processed in a stream. However as stated in an earlier mail
on this topic if the application has to 
go random through the pages you will have to buffer things.

So if you want to do streaming you should have a TIFF_2_TIFF-F
normalizer in the front of the pipeline and every filter in the pipeline
should write according to TIFF-F. But as stated in the RFC the filters
should be able to read non TIFF-F conforming TIFF format to be more
generic. 

Other method to get streaming:
Besides using a normalizer to convert TIFF 2 TIFF-F there is always the
option to make a pipeline of single page tiffs and split any multipage
at the beginning of the pipeline. Drawback is that you must think of a
way to mark the end of stream. 
I can imagine a file consisting of a TIFFheader with a null pointer to
the first IFD.Or just one IFD with no information in it. I do not know
if these are within the spec. One IFD with a new tag marking end of
stream should be.

So far my 2 cents,

regards,
rob tillaart