|
1 | 1 | # Format Support |
2 | 2 |
|
3 | | -| Capability | JPEG | PNG | WebP | |
4 | | -| --------------------------- | --------------------------------- | --------- | --------- | |
5 | | -| Signature detection | Supported | Supported | Supported | |
6 | | -| Bounded container traversal | Supported | Not yet | Not yet | |
7 | | -| APP/COM classification | Supported | N/A | N/A | |
8 | | -| EXIF container detection | Supported | Not yet | Not yet | |
9 | | -| XMP container detection | Supported, including extended XMP | Not yet | Not yet | |
10 | | -| ICC container detection | Supported | Not yet | Not yet | |
11 | | -| IPTC/Photoshop detection | Supported | Not yet | Not yet | |
12 | | -| Metadata field decoding | Not yet | Not yet | Not yet | |
13 | | -| Cleaning | Not yet | Not yet | Not yet | |
| 3 | +| Capability | JPEG | PNG | WebP | |
| 4 | +| --------------------------- | ---------------------- | -------------- | -------------- | |
| 5 | +| Signature detection | Supported | Supported | Supported | |
| 6 | +| Bounded container traversal | Supported | Not yet | Not yet | |
| 7 | +| EXIF container detection | Supported | Not yet | Not yet | |
| 8 | +| TIFF header and IFD0 | Supported through JPEG | Not integrated | Not integrated | |
| 9 | +| ExifIFD and GPSIFD | Supported through JPEG | Not integrated | Not integrated | |
| 10 | +| Common EXIF/GPS fields | Supported subset | Not integrated | Not integrated | |
| 11 | +| MakerNote decoding | Not supported | Not supported | Not supported | |
| 12 | +| XMP payload decoding | Not yet | Not yet | Not yet | |
| 13 | +| IPTC/ICC payload decoding | Not yet | Not yet | Not yet | |
| 14 | +| Cleaning and verification | Not yet | Not yet | Not yet | |
14 | 15 |
|
15 | | -## JPEG |
| 16 | +## TIFF/EXIF subset |
16 | 17 |
|
17 | | -JPEG detection requires `FF D8`. Container inspection validates marker boundaries and two-byte big-endian declared lengths, recognizes standalone markers and fill bytes, stops at EOI, and reports trailing bytes. SOS headers are traversed, while entropy-coded bytes are skipped without decoding; `FF 00`, RST0–RST7, and multiple scans are handled structurally. |
| 18 | +Both `II` and `MM` byte orders are supported. Traversal covers IFD0, ExifIFDPointer, GPSInfoIFDPointer, and next-IFD links with table, entry, depth, offset, and cycle checks. |
18 | 19 |
|
19 | | -Payload signatures identify: |
| 20 | +Decoded IFD0 tags: ImageDescription, Make, Model, Orientation, Software, DateTime, Artist, and Copyright. |
20 | 21 |
|
21 | | -- APP0 `JFIF\0` and `JFXX\0` as technical container data; |
22 | | -- APP1 `Exif\0\0` as EXIF; |
23 | | -- APP1 standard and extended Adobe XMP identifiers as XMP; |
24 | | -- APP2 `ICC_PROFILE\0` as ICC; |
25 | | -- APP13 `Photoshop 3.0\0` as Photoshop/IPTC; |
26 | | -- APP14 `Adobe` as rendering/container data; |
27 | | -- COM as comment metadata. |
| 22 | +Decoded ExifIFD tags: ExposureTime, FNumber, PhotographicSensitivity, ExifVersion, DateTimeOriginal, DateTimeDigitized, FocalLength, PixelXDimension, PixelYDimension, and FocalLengthIn35mmFilm. MakerNote is named and retained as opaque structure. |
28 | 23 |
|
29 | | -Unknown APP payloads remain unknown. No TIFF, EXIF, XMP XML, ICC, IPTC, thumbnail, frame, Huffman, quantization, or entropy payload is decoded. |
| 24 | +Decoded GPS tags: GPSVersionID, GPSLatitudeRef, GPSLatitude, GPSLongitudeRef, GPSLongitude, GPSAltitudeRef, GPSAltitude, GPSTimeStamp, and GPSDateStamp. Coordinates remain exact raw rational components plus reference fields; decimal coordinates are not derived. |
30 | 25 |
|
31 | | -## PNG and WebP |
| 26 | +Unknown tags remain structurally represented without speculative meaning or large binary values. |
32 | 27 |
|
33 | | -PNG requires its complete eight-byte signature. WebP requires `RIFF` at offset 0 and `WEBP` at offset 8. Their chunk structures, sizes, CRCs, metadata, and image payloads are not yet parsed. |
| 28 | +## Remaining container support |
| 29 | + |
| 30 | +JPEG marker and scan traversal remains supported. XMP, ICC, and Photoshop/IPTC signatures are container-detected only. PNG requires its complete signature and WebP requires `RIFF....WEBP`; their chunks and metadata are not parsed yet. |
0 commit comments