Skip to content
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

improve handling of unsupported images #17367

Merged
merged 14 commits into from
Aug 31, 2024

Conversation

ralfbrown
Copy link
Collaborator

Add more internal failure codes and make error messages to the user more specific based on those additional codes. Also suppress the "failed to read whitebalance" error when an image could not be fully loaded (e.g. due to unsupported camera model).

There are now three different icons for images which can't be edited by the user - the skull for missing/unreadable image files, a warning triangle for corrupted files or when an I/O error occurred, and a question mark for unsupported files (camera model, compression mode, etc.). As you can tell from the icons, I'm not an artist, so improved renditions are not just welcome, they are requested.

Right now, the question mark will never show for two reasons - rawspeed uses the exact same exception type for both unsupported and corrupt files, and imageio_open() blindly tries every possible loader until one succeeds, so a later loader will replace the error code from the loader which could actually handle the file type with its own error.

A PR to address the second of these is coming.

The skull image should be reserved for missing or otherwise
inaccessible files (e.g. no read permission).  This will let the user
distinguish between the cases
- not available
- unsupported file type (e.g. HEIF when libheif not linked) or subformat (e.g. compression)
- read error or corrupted file
Instead of retrying an image load which results in an error FOUR
HUNDRED times, only do a few retries with pauses in between (the
latter just so that the user gets a chance to read the error message).
To properly tell the user what happened, rawspeed needs at least a new
exception type for unsupported cameras and preferably also one for
unsupported features like compression mode.  Currently, both of those
are thrown as "decode error", which signals a corrupted file in cases
other than those two.
Copy link
Member

@TurboGit TurboGit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sharing code.

src/common/mipmap_cache.c Outdated Show resolved Hide resolved
@TurboGit TurboGit added this to the 5.0 milestone Aug 28, 2024
@TurboGit TurboGit added the feature: enhancement current features to improve label Aug 28, 2024
Copy link
Member

@TurboGit TurboGit left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thanks!

@TurboGit TurboGit merged commit b85a45f into darktable-org:master Aug 31, 2024
6 checks passed
@ralfbrown ralfbrown deleted the imageio_errors branch August 31, 2024 11:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature: enhancement current features to improve scope: UI user interface and interactions
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants