-
Notifications
You must be signed in to change notification settings - Fork 133
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
JXL/HEIF/AVIF/WebP/PNG Exif data support #213
Conversation
thanks for all the new updates. I'm going to make sure to make time to merge them asap. |
|
||
if (!exif_blocks.empty()) { | ||
std::vector<uint8_t> exif = handle.get_metadata(exif_blocks[0]); | ||
if (exif.size() > 8 && exif.size() < 65538) { |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
where's the magic 65538 number come from? I see it in other EXIF chunks of the code, where size+some number is 65538. It's an odd number, not a power of 2?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
These libraries all have their own ideas about where to start the Exif data from. JPEG Exif blocks are in the format FF E1 SS SS 45 78 69 66 00 00 [data]
. The SS SS
is a big-endian unsigned short representing the size of everything after FF E1
.
libjxl gives 00 00 00 00 [data]
, libheif gives 00 00 00 00 45 78 69 66 00 00 [data]
, libavif, libwebp and libpng give [data]
, so they have different limits for size. If you want I can change it to 65536 + an offset and add notes explaining why.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I see, now it makes sense. Regarding the documentation, I'll just refer to this comment. This is good investigative information.
Adds support for reading JPEG XL, HEIF, AVIF, WebP and PNG Exif data.
Doesn't work for animated JXLs. e1852b2 fixes a memory leak I introduced in #208 (my bad) and 2ce3887 partially fixes #207.