TSC Meeting Notes 2025-04-03

TSC Meeting Notes 2025-04-03

Attendance:

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

Others:

Li Ji
Pierre-Anthony Lemieux

Discussion:

Quick recap

The meeting covered various topics related to file compression techniques, and upcoming releases. Discussions included analyzing sample files, improving encoder performance, and considering different approaches to compression, including lossless and lossy methods. The team also addressed the implementation of new compression types, potential changes to file formats, and the rewrite of Python binding CMake for Imath.

Next steps

  • Pierre-Anthony to propose a patch against the HT J2K branch broadening the heuristics for RGB detection.

  • Pierre-Anthony to study the example file sent by Cary.

  • Cary to merge the HT J2K branch into the main branch after Pierre-Anthony's patch.

  • Cary to rename the codec during the merge process.

  • Larry to add a nightly CI test for OpenImageIO that builds against the HT J2K branch of OpenEXR.

  • LI to attempt building OpenJPH with the PIC flag, then build OpenEXR and OpenImageIO on top of it.

  • Kimball to review Cary's rewrite of the Python binding CMake setup for Imath.

Summary

File Analysis

Pierre-Anthony was tasked with analyzing a sample file, but he noted the file's labeling was incorrect, which could affect its compression mode.

Case-Insensitive Encoder and File Naming Practices

Larry suggested making the encoder case-insensitive to catch all possible spellings of "red". Pierre-Anthony agreed to try this and also consider other variations like "red star". They discussed the practice of using "red", "green", and "blue" in file naming conventions, with Peter explaining that the original standard allowed for any naming convention. They also discussed the use of multi-part EXR files, with Peter explaining that while Nuke separates left and right channels into separate parts for stereo files, it's not a strict rule. The team agreed to document the current practices and consider whether separating channels into separate parts for better performance is acceptable.

Exploring Compression Techniques for File Performance

In the meeting, Pierre-Anthony, Peter, and Michael discussed the performance of file compression, particularly focusing on the size of the file and the coding process. They considered the possibility of using a naming convention or an API to identify correlation groups within the file, which could improve compression performance. They also discussed the potential for lossless and lossy compression, and the importance of getting the correlation right to avoid introducing artifacts. The team agreed to explore different approaches, including a naming convention and an API, and to consider the impact of these methods on the file size and image quality.

Lossy Compression Discussion and Implementation

Peter and Pierre-Anthony discussed the addition of lossy compression to the existing codec, with Pierre-Anthony expressing concerns about potential issues and suggesting a separate approach. They agreed to have a dedicated meeting to discuss the topic further. Peter proposed delaying the introduction of lossy compression until after the first release, to allow users to familiarize themselves with the existing lossless compression. Pierre-Anthony concurred, emphasizing the importance of understanding the challenges of lossy compression before implementation.

New Compression Type and Python Binding

Peter discussed the upcoming release of a new compression type for deep images, which is not yet ready for release. He suggested introducing two more compression types in one go to avoid breaking the file format every few months. Pierre-Anthony agreed to propose a patch for RGB detection and study an example sent by Cary. Cary proposed merging the changes into the main branch and renaming the codec. Larry suggested adding a test to ensure the changes don't break the build. Michael suggested trying to build OpenJPH with the -fpic flag. Cary discussed the rewrite of the Python binding CMake stuff for Imath, which he planned to review with Kimball.