AWARE SYSTEMS
TIFF and LibTiff Mail List Archive

Thread

2000.12.15 09:50 "Stripes in thumbnail", by Christian Bednarek
2000.12.17 23:41 "Re: Stripes in thumbnail", by Joris Van Damme
2000.12.18 00:29 "Re: Stripes in thumbnail", by Sam Leffler
2000.12.18 13:06 "Re: Stripes in thumbnail", by Joris Van Damme
2000.12.18 14:28 "Re: Stripes in thumbnail", by Joris Van Damme
2000.12.18 06:08 "Re: Stripes in thumbnail", by Christian Bednarek
[...]

2000.12.18 00:29 "Re: Stripes in thumbnail", by Sam Leffler

LibTiff fax decompression has been reported to behave differently from other decompressors like eg the one in Photoshop. My guess is that some scanlines in the original g4 tiff(s) cannot be correctly interpretted by LibTiff, and are simply (partially) skipped, leaving a (partially) blank line. Warning and error behaviour of the g3/g4 decompressors has been reported to be imperfect, so it's even possible you don't even get a warning about this, I guess...

The G3 and G4 codecs in the library should follow the published specs; if they don't please provide an example image where they don't. Suggesting that they behave differently than other codecs (e.g. Photoshop) is nonsense.

FWIW, these codecs haven't changed in any material way in probably 5 or 6 years (the last change I can recall was to support images wider than 64K pixels--i.e. changing some 16-bit counters to 32-bit). The library (including G3+G4 support) has been around for >10 years.

As to error and warning behaviour; again please be specific if you've encountered a problem. The G4 decoder cannot resynchronize on scanline boundaries so it treats any decoding error as "fatal" and does not attempt to continue decoding a scanline, strip, or tile. The G3 decoder can resynchronize when EOL markers are present and tries to since many G3-encoded images are obtained from fax transmissions where single bit errors may be present and aborting the decoding is typically not the desired behaviour. In all cases the library error and/or warning handlers are invoked when decoding fails for some reason. I don't recall exactly which handler is invoked under which conditions; check the source code.

SAm