Skip to content

Support splitting tiled multiview images - #2829

Open
1cbyc wants to merge 1 commit into
AcademySoftwareFoundation:mainfrom
1cbyc:1cbyc/2825-split-tiled-deep-views
Open

1cbyc wants to merge 1 commit into
AcademySoftwareFoundation:mainfrom
1cbyc:1cbyc/2825-split-tiled-deep-views

Conversation

@1cbyc

@1cbyc 1cbyc commented Nov 9, 2026 •

Copy link
Copy Markdown

Fixes #2825

Allow exrmultipart --convert to split multiview tiled inputs into one part per view while preserving single-level, mipmapped, and ripmapped tile levels, channel types, and channel sampling. Deep image conversion remains unchanged and does not split views pending a definition of multipart deep-image semantics.

The focused regression test covers all three tiled level modes and uses exrmetrics to read, rewrite, and reread both output parts, verifying that their pixel data is complete and decodable.

Validation:

  • cmake --build build --target exrmultipart exrmetrics -j2
  • ctest --test-dir build -R '^OpenEXR\.bin\.exrmultipart$' --output-on-failure

Co-authored-by: insisong emmanuelisaacnsisong@gmail.com

@linux-foundation-easycla

linux-foundation-easycla Bot commented Nov 9, 2026 •

Copy link
Copy Markdown

CLA Signed
The committers listed above are authorized under a signed CLA.

  • ✅ login: 1cbyc / name: 1cbyc (267ccf6)

@1cbyc

1cbyc commented Nov 9, 2026 •

Copy link
Copy Markdown
Author

CLA Signed
The committers listed above are authorized under a signed CLA.

  • ✅ login: 1cbyc / name: 1cbyc (210c500)

@cary-ilm
cary-ilm requested a review from peterhillman November 9, 2026 15:47
Comment thread src/test/bin/test_exrmultipart.py Outdated
result = do_run ([exrinfo, outimage])
assert f"type: '{image_type}'" in result.stdout

# Convert a tiled multiview image into one tiled part per view.

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Some more thorough tests would be good here, testing single level as well as mip/ripmapped tiles. Is there a way to check that the pixel data is as expected, as well as that the parts have the appropriate channels?

Comment thread src/bin/exrmultipart/exrmultipart.cpp Outdated
}

if (input_type == DEEPSCANLINE || input_type == DEEPTILE)
{

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Conversion of deep images requires a bit of discussion before it is merged.

Existing tools which read deep images probably won't understand images where channels for a single view are spared across multiple parts. Users might expect them to if there's a standard tool for creating the files. I don't think there's any documentation describing multipart deep files. For example, what happens if two parts have a different number of samples for the same pixel? Perhaps any support for splitting deep images into parts should also be accompanied by better documentation, examples and other support utilities

Co-authored-by: insisong <emmanuelisaacnsisong@gmail.com>
Signed-off-by: 1cbyc <isaacnsisong@gmail.com>
@1cbyc
1cbyc force-pushed the 1cbyc/2825-split-tiled-deep-views branch from 267ccf6 to 210c500 Compare November 10, 2026 01:25
@1cbyc 1cbyc changed the title Support splitting tiled and deep multiview images Support splitting tiled multiview images Nov 10, 2026

@peterhillman peterhillman left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Looks good, thanks for the changes

The proposed support for deep images might be worth submitting as a separate proposal or draft PR for discussion. The code itself was fine, the question is whether the layout it wrote is one that should be standardized, and whether there is sufficient documentation about how to read such files.

This branch has not been deployed

No deployments
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.

exrmultipart --convert should support splitting tiled and deep files into multiple parts

2 participants