Skip to content

feat(heif): Monochrome channel read and write support, fix crash#5043

Merged
lgritz merged 2 commits intoAcademySoftwareFoundation:mainfrom
brechtvl:fix-heif-mono
Feb 13, 2026
Merged

feat(heif): Monochrome channel read and write support, fix crash#5043
lgritz merged 2 commits intoAcademySoftwareFoundation:mainfrom
brechtvl:fix-heif-mono

Conversation

@brechtvl
Copy link
Contributor

Description

Implement support for reading and writing monochrome. Reading requires
libheif 1.17+ for heif_image_handle_get_preferred_decoding_colorspace.

Previously writing a single channel image would cause an exception due to
wrong parameters, but close() would continue writing the image and crash.
Destroy m_ctx on exception to prevent that for other potential errors.

Tests

Test added for monochrome read and write.

Checklist:

  • I have read the guidelines on contributions and code review procedures.
  • I have updated the documentation if my PR adds features or changes
    behavior.
  • I am sure that this PR's changes are tested somewhere in the
    testsuite
    .
  • I have run and passed the testsuite in CI before submitting the
    PR, by pushing the changes to my fork and seeing that the automated CI
    passed there. (Exceptions: If most tests pass and you can't figure out why
    the remaining ones fail, it's ok to submit the PR and ask for help. Or if
    any failures seem entirely unrelated to your change; sometimes things break
    on the GitHub runners.)
  • My code follows the prevailing code style of this project and I
    fixed any problems reported by the clang-format CI test.
  • If I added or modified a public C++ API call, I have also amended the
    corresponding Python bindings. If altering ImageBufAlgo functions, I also
    exposed the new functionality as oiiotool options.

Implement support for reading and writing monochrome. Reading requires
libheif 1.17+ for heif_image_handle_get_preferred_decoding_colorspace.

Previously Writing a single channel image would cause an exception due to
wrong parameters, but close() would continue writing the image. Destroy
m_ctx on exception to prevent that.

Signed-off-by: Brecht Van Lommel <brecht@blender.org>
Copy link
Collaborator

@lgritz lgritz left a comment

Choose a reason for hiding this comment

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

LGTM, and I'm going to amend a small docs fix if you don't mind.

Signed-off-by: Larry Gritz <lg@larrygritz.com>
@lgritz
Copy link
Collaborator

lgritz commented Feb 13, 2026

I took the liberty of pushing a minor documentation patch to your fork. Can you look it over and be sure it seems fine to you? Then I will merge.

@brechtvl
Copy link
Contributor Author

Thanks, looks good.

@lgritz lgritz merged commit bf7bc9c into AcademySoftwareFoundation:main Feb 13, 2026
62 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants