Add native span paths for JPEG XL - #394
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What changed
ListSpan/ExtractSpanpaths for JPEG XL.jxlpcodestreams as one logicalcodestream.jxlentry backed by multiple source ranges.byte[]values.OpenEntrySpanon the owning compatibility path.Why
JPEG XL containers may carry the codestream either in one
jxlcbox or split across multiplejxlpboxes. The existing implementation concatenated all partial codestream payloads into aMemoryStreamand then calledToArray(). For span callers, that defeats the point of the native path.The new layout stores:
metadata.inias owned bytes;FULL.jxl, metadata boxes, and singlejxlcas direct source ranges;jxlpcodestreams as an ordered list of source ranges, excluding each 4-byte partial-index field.Validation added
NativeSpanArchiveInputTestsnow covers 16 native-span formats and adds a multipart JXL case with twojxlpboxes.The shared suite verifies:
References / licensing
jxlpindices: https://github.com/libjxl/libjxl/blob/main/lib/jxl/decode.cclibjxl is BSD-3-Clause. No source code was copied or translated; the implementation is an independent refactor of the repository's existing parser and preserves its current box-order concatenation semantics. No dependencies were added.
Validation
CI run
36110823481completed successfully on the repository README job, Ubuntu, and Windows. This includes Release builds, Core tests (including the 16-format native-span equivalence/allocation suite and multipart JXL extraction), NuGet/meta-package validation, structured-format oracles, end-to-end and external interoperability, external filesystem interoperability, OS integration, polyglot interoperability, performance tests, and package README checks.