-
-
Notifications
You must be signed in to change notification settings - Fork 6.3k
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
Pictures: Move image metadata processing to exiv2 as a new dependency #24109
Conversation
great work so far! looking forward to this reaching completion for P*. |
2e1805f
to
cd1798a
Compare
0acb0d4
to
27b3427
Compare
61b9314
to
9647b7a
Compare
Co-authored-by: fuzzard <[email protected]>
cmake has had a system provided find module for iconv since cmake 3.11 use it, and just alias to our core target naming for our purposes. Provides both our internal target name and the "standard" cmake target name to callers
Test failure completely unrelated, and build failure from previous 2 jobs were builder related and not a test failure. Merging now |
exiv2 fails to build in debug mode:
to reproduce:
Seems is due this: |
@fuzzard I guess I need your help. Any way of guarding that set call if RTC1 is enabled? For what I can tell it seems to be set by cmake build type debug automatically. |
There isnt. your options are either patch it out of the exiv lib, or alter our flags we pass through. We do option 2 for the effects11 library already for a pointer to how to do it on our side xbmc/cmake/modules/FindEffects11.cmake Lines 17 to 26 in 5069e47
You'll want to strip from CMAKE_CXX_FLAGS_DEBUG |
Sorry, something wrong finding the files:
dev package(s) are installed:
|
@mkreisl version 0.28.2 is required (you seem to have 0.27.6): |
WTF, that's what Debian Bookworm has The 0.28 version is not even available in Sid. I don't think that makes sense Edit: Thanks |
I was about to recommend to use |
Ah yes, I somehow lost sight of that, would be a cool option if the external version doesn't meet the requirements to build the internal one. But anyway. the way it was solved here now works for me too. |
Description
This provides a revamp of our picture metadata (exif and iptc) extraction handling logic moving it from a custom implementation (untouched for 14 years - and rencently broken (and fixed) for most of the tags) to an external dependency (exiv2). This allows us to use a single dependency for all image metadata needs and also avoid a lot of corner cases we have currently in our own handling logic while contributing directly to the open-source ecosystem.
Upstream contributions:
Add EXIV2_ENABLE_FILESYSTEM_ACCESS option - Exiv2/exiv2#2837
Set conditional HTTP depending on EXIV2_ENABLE_WEBREADY - Exiv2/exiv2#2844
jpeg: add encodingProcess and numColorComponents SOF members - Exiv2/exiv2#2874
Disable psapi in UWP (unsupported): Exiv2/exiv2#2990
Motivation and context
Custom logic we have in Kodi without any maintainers should be delegated as much as possible to well maintained libs. Exiv2 is a good example, well maintained, easy to contribute and is part of a lot of software projects (e.g. gimp). Also cleans up a lot of magic in GUIPictureInfo.
How has this been tested?
Runtime tested in windows, android, macOS as well as UWP.
What is the effect on users?
None, this is a 1:1 match of our current implementation. I'll track eventual regressions.
Screenshots (if appropriate):
IPTC:
![image](https://private-user-images.githubusercontent.com/7375276/340114497-9be80995-e2f0-487d-94d7-3ca680a20e6a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjI0ODM3OTcsIm5iZiI6MTcyMjQ4MzQ5NywicGF0aCI6Ii83Mzc1Mjc2LzM0MDExNDQ5Ny05YmU4MDk5NS1lMmYwLTQ4N2QtOTRkNy0zY2E2ODBhMjBlNmEucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgwMSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MDFUMDMzODE3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9YjkwZDlhYTMzMzZmNGE4YTU5MzFhZWZiYjM2MTkzZTY2YTBiNDU1YjkzYzYzYzYxYmRmZjc1M2U1MzFmNmIyMiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.PFeYSAQr6tBVGZYHPWUH_U5Od31njTXjioDh0LcbtmQ)
EXIF:
![image](https://private-user-images.githubusercontent.com/7375276/340114528-50eb9212-e850-47c8-bbc2-4d9a0922270f.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MjI0ODM3OTcsIm5iZiI6MTcyMjQ4MzQ5NywicGF0aCI6Ii83Mzc1Mjc2LzM0MDExNDUyOC01MGViOTIxMi1lODUwLTQ3YzgtYmJjMi00ZDlhMDkyMjI3MGYucG5nP1gtQW16LUFsZ29yaXRobT1BV1M0LUhNQUMtU0hBMjU2JlgtQW16LUNyZWRlbnRpYWw9QUtJQVZDT0RZTFNBNTNQUUs0WkElMkYyMDI0MDgwMSUyRnVzLWVhc3QtMSUyRnMzJTJGYXdzNF9yZXF1ZXN0JlgtQW16LURhdGU9MjAyNDA4MDFUMDMzODE3WiZYLUFtei1FeHBpcmVzPTMwMCZYLUFtei1TaWduYXR1cmU9MDk5ZTc1ZGQ5OGI4YmFjYTljYTYzNjU3OGI5NzQ2MGUzYzkzYjIwODQ3YmZiOTQyNTU0YWUwYmU0YzczNTQ5NiZYLUFtei1TaWduZWRIZWFkZXJzPWhvc3QmYWN0b3JfaWQ9MCZrZXlfaWQ9MCZyZXBvX2lkPTAifQ.OLLUh_F3xb9q7njvEKcuhqzbZKxkE0Z5rmJlwcXegSk)
Types of change
Checklist: