openpreserve / jpylyzer

JP2 (JPEG 2000 Part 1) validator and properties extractor. Jpylyzer was specifically created to check that a JP2 file really conforms to the format's specifications. Additionally jpylyzer is able to extract technical characteristics.
http://jpylyzer.openpreservation.org/
Other
69 stars 28 forks source link

Add CAP (Extended Capabilities) marker #198

Closed bitsgalore closed 9 months ago

bitsgalore commented 9 months ago

Needed for HTJ2K, but apparently this has been part of J2K codestreams for a long time:

https://github.com/openpreserve/jpylyzer/issues/197#issuecomment-1714111561

But here's a 2015 version of the spec:

https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-T.800-201511-S!!PDF-E&type=items

This also doesn't mention the CAP marker?

Most detailed description I can find is this:

https://www.itu.int/rec/dologin_pub.asp?lang=f&id=T-REC-T.809-201105-I!!PDF-E&type=items

Symbol Code Main header Tile-part header Rec. ITU-T T.80x ISO/IEC 15444-x Heritage/Extended
Extended capabilities CAP 0xFF50 required not allowed Rec. ITU-T T.801 (2002)/Amd.2 (2005) / ISO/IEC 15444-2:2004/Amd.2:2006

Some more details in section A.2.8. But this doesn't describe the whole structure.

I could find this French version of the original amendment:

https://handle.itu.int/11.1002/1000/8498-fr?locatt=format:pdf&auth

Definition in Section A.3.13 (Capacités étendues (CAP)).

ISO version (English, preview only):

https://cdn.standards.iteh.ai/samples/39476/b46ed5a1633943909330d083ae5f0bd2/ISO-IEC-15444-2-2004-Amd-2-2006.pdf

This also shows it's actually an amendment to Part 2 of the standard (JPX), which explains why it's not in the more recent Part 1 spec!

bitsgalore commented 9 months ago

Mostly done as of https://github.com/openpreserve/jpylyzer/commit/f7240214fbce10bbd48ebe6db372709ddb20ccf5

TODO:

bitsgalore commented 9 months ago

Done: https://github.com/openpreserve/jpylyzer/commit/861d0518d8dc7e4bfad5f96c6fe37e7a38d26564 (and later refactored into https://github.com/openpreserve/jpylyzer/commit/ee8f8a0583000fd000542d920a65544a5a19c608)