fooSetupDecode(tif)	/* called once per IFD after tags has been frozen */
fooPreDecode(tif, sample)/* called once per strip/tile, after data is read,
			    but before the first row is decoded */
fooDecode*(tif, bp, cc, sample)/* decode cc bytes of data into the buffer */
    fooDecodeRow(...)	/* called to decode a single scanline */
    fooDecodeStrip(...)	/* called to decode an entire strip */
    fooDecodeTile(...)	/* called to decode an entire tile */
fooSetupEncode(tif)	/* called once per IFD after tags