Skip to content

fix(jpeg2000): enable ICC profile write - #5419

Open
luna-y-kim wants to merge 1 commit into
AcademySoftwareFoundation:mainfrom
luna-y-kim:fix-jpeg2000-icc-profile
Open

fix(jpeg2000): enable ICC profile write#5419
luna-y-kim wants to merge 1 commit into
AcademySoftwareFoundation:mainfrom
luna-y-kim:fix-jpeg2000-icc-profile

Conversation

@luna-y-kim

Copy link
Copy Markdown
Contributor

ICC profile writing was disabled in #1452 due to assertion failures. That was fixed on the OpenJPEG side in v2.5.4 (uclouvain/openjpeg#1574), which is also our current build default.

The ICC profile write code is compiled only when building against OpenJPEG >= 2.5.4. The double-free problem in Jpeg2000Output::close() is addressed by clearing the icc_profile_buf pointer (which points at memory owned by m_icc_profile) before opj_image_destroy() frees it.

Also add a testsuite case. Now the testsuite has two reference outputs: out.txt (no ICC, older OpenJPEG) and out-icc.txt (with ICC). Since runtest.py::checkref() accepts either as alternatives, the text comparison alone cannot catch a breakage. Thus, the extracted .icc file is additionally compared only on OpenJPEG >= 2.5.4, as the real guard.

Fixes #4608

Checklist:

  • I have read the guidelines on contributions and code review procedures.
  • I have read the Policy on AI Coding Assistants
    and if I used AI coding assistants, I have an Assisted-by: TOOL / MODEL
    line in the pull request description above.
  • (N/A) I have updated the documentation if my PR adds features or changes
    behavior.
  • I am sure that this PR's changes are tested 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.
  • (N/A) 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.

ICC profile writing was disabled in AcademySoftwareFoundation#1452 due to assertion failures.
That was fixed on the OpenJPEG side in v2.5.4 (uclouvain/openjpeg#1574),
which is also our current build default.

The ICC profile write code is compiled only when building against
OpenJPEG >= 2.5.4. The double-free problem in `Jpeg2000Output::close()`
is addressed by clearing the `icc_profile_buf` pointer (which points at
memory owned by `m_icc_profile`) before `opj_image_destroy()` frees it.

Also add a testsuite case. Now the testsuite has two reference outputs:
`out.txt` (no ICC, older OpenJPEG) and `out-icc.txt` (with ICC). Since
`runtest.py::checkref()` accepts either as alternatives, the text
comparison alone cannot catch a breakage. Thus, the extracted .icc file
is additionally compared only on OpenJPEG >= 2.5.4, as the real guard.

Fixes AcademySoftwareFoundation#4608

Signed-off-by: Luna Kim <177369799+luna-y-kim@users.noreply.github.com>
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.

ICC profile writing in JPEG2000 is currently disabled

1 participant