TSC Meeting Notes 2025-11-13

TSC Meeting Notes 2025-11-13

Attendance:

Cary Phillips
Christina Tempelaar-Lietz
John Mertic
Joseph Goldstone
Kimball Thurston
Larry Gritz
Nick Porcino
Peter Hillman
Rod Bogart

Guests:

  • Vlad Lazar, Industrial Light & Magic

  • Pierre-Anthony Lemieux, Sandflow Consulting

  • Michael Smith, Intel / Wavelet Consulting

  • George Tattersall

  • Li Ji, Industrial Light & Magic

Discussion:

Quick Recap

The team discussed symbol versioning issues and prototype testing for different linker flags, with a new release requiring coordination between their team and Foundry. They explored handling security advisories and CVEs through formal processes, while also reviewing a PR for vending OpenJPH and discussing patch update compatibility. The group examined lossy compression methods for OpenEXR files, including potential quality trade-offs and compression ratio considerations, while also addressing gamma nonlinearity and value preservation concerns.

Next Steps

  • Vlad: Create a temporary hack to unstick himself short-term while waiting for long-term solution

  • Christina: Create a GitHub issue about the symbol versioning/linking problem to continue conversation offline and involve Vlad

  • Cary: Post on Slack to direct people to check the GitHub issue if they have opinions on the linking/symbol versioning topic

  • Cary: Submit update to OSS Fuzz to update OpenJPH every time it builds

  • Cary: Do experiment to test if running test programs with LD path set to new shared objects works for the OpenJPH vending PR

  • Cary: Add thorough summary in release notes for the DWA table optimization changes

  • Pierre-Anthony: Consider creating a branch against OpenEXR library for the lossy compression work when the time is right

  • Pierre-Anthony: Expand demo app to support tiles in addition to scanlines

  • Pierre-Anthony: Implement decoder to only read the part of the chunk that contains specific resolutions

  • Team/Community: Test Pierre-Anthony's lossy compression with various images and workflows to provide feedback on quality versus bit savings

  • Team/Community: Test lossy compression on non-visual images like normal maps and depth maps to evaluate quality

Summary

 

Symbol Versioning Progress Update:Vlad reported making progress on understanding the symbol versioning issue and created a prototype to test different linker flags. Peter and Vlad discussed that a new release would be needed, not just from their team but also from the Foundry, indicating a significant timeline for a solution.

 

Security Advisory and CVE Management:Cary discussed the process of handling security advisories and CVEs, noting that it's better to go through the formal process of requesting them. Peter mentioned receiving a message from someone involved in building OpenXR, whom he had interacted with before. Cary also mentioned a private email exchange with the Zero Day Initiative regarding requested CVEs, which haven't been filled out yet. Larry reviewed a PR for vending OpenJPH, which turned out to be less complicated than initially thought, and confirmed that no OpenJPH symbols leaked out.

 

Patch Update Compatibility Discussion:Cary and Larry discussed the compatibility and release process of a patch update, agreeing that it should not require a minor version release as it involves hiding symbols and does not change the ABI. Peter raised concerns about potential issues with library linking, but Cary suggested testing with representative test programs to ensure compatibility. Cary also mentioned the need to update the fuzz test to automatically fetch and commit changes from the OpenJPH master branch.

 

OpenEXR Bug Fix Discussion:Peter and Cary discussed the bug fix process for OpenGPH and OpenEXR, with Cary explaining that the vending solution would be updated to verify fixes. Vlad presented a toy example demonstrating the use of different OpenEXR versions in the same executable, highlighting the need for symbol versioning and a custom namespace for OpenEXR core to avoid symbol clashes.

 

OpenEXR Symbol Versioning Discussion:The team discussed symbol versioning for OpenEXR core libraries, with Peter explaining that they currently use symbol versioning to tag the official version and maintain AVI compatibility. Vlad raised concerns about Nuke picking up incorrect symbols, particularly in Nuke 17, and the team explored how to ensure proper versioning and linking between C++ and C libraries. Kimball suggested a potential solution, and while Christina had questions about how symbol versioning could maintain ABI compatibility, Peter explained that it works by rejecting unversioned symbols. The team agreed that symbol versioning could be added in a future release without breaking compatibility, and Christina suggested creating a GitHub issue to continue the discussion offline.

 

GitHub Issue and Compression Discussion:The team discussed creating a GitHub issue to gather opinions on a technical matter, with Cary and Christina agreeing that GitHub would provide a more permanent and accessible record. Pierre-Anthony presented his work on a lossy compression app using the OpenEXR API, which currently uses 256-line chunks and supports 32-bit float data. The team explored the potential for adding features like channel decorrelation, with Peter suggesting that such changes might affect file compatibility. Michael and Pierre-Anthony discussed the need for user feedback on the quality versus file size tradeoff of the new compression method. Larry mentioned a surprising observation about DWA compression artifacts when viewing HDR images on non-HDR monitors.

 

OpenEXR Gamma Nonlinearity Discussion:The team discussed issues with gamma nonlinearity and lossy compression in OpenEXR images, particularly concerning values greater than one. Larry noted that while the visual differences were small, there were significant value discrepancies in the data that could be problematic for certain applications. Pierre-Anthony suggested examining specific test images to better understand the impact of these issues, though Larry clarified he did not observe any problems on HDR displays himself. The group acknowledged that OpenEXR is primarily a data format for intermediate steps, and any lossy compression could affect subsequent processing stages.

 

Lossy Image Compression Value Preservation:The group discussed methods for detecting and preserving values around 0 and 1 in lossy image compression, with Michael suggesting the use of an ACES viewing transform and Peter proposing the consideration of the PQ curve for perceptual quantization. They explored the possibility of encoder optimization to better preserve these critical values, as well as the need for a decoder to undo any preprocessing steps. Pierre-Anthony emphasized the importance of having experts review the compressed images to ensure they meet visual expectations, suggesting that now is an opportune time to address any issues found.

 

Lossy Compression for EXR Files:The team discussed lossy compression for EXR files, with Pierre-Anthony suggesting a 10:1 compression ratio as a good starting point, though they noted potential quality trade-offs. They explored the possibility of applying lossy compression to non-visual data like normals and alpha channels, with Michael suggesting smaller quantization steps could be used. The group also discussed DWA compression level settings, with Peter and Cary noting they had previously tested and chosen a high-quality setting that wasn't lossless. Finally, Peter explained the memory allocation behavior of an optimization for ERIS's table, clarifying that while the binary doesn't contain the table data, memory is allocated upfront to ensure thread safety.