Skip to content

HiltonRoscoe/TIFF

Repository files navigation

DFDL CCITT Group 3/4 and TIFF

DFDL schemas for:

  • TIFF metadata (header, IFD, strip layout) with CCITT-compressed image strips as opaque BLOBs
  • CCITT Group 3 (T.4) and Group 4 (T.6) fax stream envelopes (EOL, RTC, fill bits, byte alignment flags)

The actual MH/MR/MMR pixel run-length Huffman encoding is treated as opaque data. DFDL v1.0 cannot decode variable-length Huffman tables natively.

Purpose

This is a DFDL boundary exploration experiment. TIFF (one of the most pointer-heavy formats in common use) is the instrument.

DFDL deliberately does not support general-purpose pointer following. By systematically attempting to parse real TIFF files using only lookAhead, variables, BLOBs, composition, and sequential constructs — and by expanding the cases that stress arrays, tiles, subIFDs, and indirection — we generate concrete evidence:

  • How much useful metadata and layout information is achievable within current DFDL.
  • Exactly where the hard walls appear (and which workarounds remain maintainable).
  • A clear "achieved / hybrid / impossible" classification map.

The parser, TDML tests, and corpus are the lab. The primary deliverable is reproducible evidence and documentation suitable for the DFDL community and Daffodil developers. A working fax-oriented schema is a valuable byproduct.

Scope

  • In scope: TIFF IFD parsing, CCITT stream structural envelope (EOL markers, RTC, T4Options/T6Options flags, fill-bit padding), BLOB-wrapped image data
  • Out of scope: Actual pixel-level decompression of CCITT MH/MR/MMR codes

Build and Test

mvn clean test

Layout

  • src/main/resources/com/hiltonroscoe/ccitt/xsd/tiff.dfdl.xsd — TIFF header + IFD parser
  • src/main/resources/com/hiltonroscoe/ccitt/xsd/ccitt-envelope.dfdl.xsd — CCITT T.4/T.6 stream envelope
  • src/test/resources/com/hiltonroscoe/ccitt/Ccitt.tdml — TDML test suite
  • src/test/resources/com/hiltonroscoe/ccitt/corpus/ — vendored test data
  • src/test/java/com/hiltonroscoe/ccitt/TestCcittSuite.java — JUnit runner
  • pom.xml — Maven build (Daffodil TDML + JUnit 4)

License

See the LICENSE file for licensing terms.

Test Data

Test data sources and their licenses will be documented here. All test data must be public domain or permissively licensed (MIT, BSD, Apache 2.0) to be included in this MIT-licensed project.

About

Partial DFDL Schema for TIFF files

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors