Add public TOC inspection API for progressive streaming#786
Open
tokyovigilante wants to merge 2 commits into
Open
Add public TOC inspection API for progressive streaming#786tokyovigilante wants to merge 2 commits into
tokyovigilante wants to merge 2 commits into
Conversation
Expose the frame Table of Contents through the public decoder API so
streaming consumers can locate frame-section byte boundaries without
fully decoding the bitstream: `TocEntry` / `TocGroupKind` plus
`JxlDecoder::{toc_num_entries, toc_entry, frame_data_size,
frame_data_offset}`, available once the decoder reaches `WithFrameInfo`.
Entries are reported in bitstream order, each kind resolved through the
TOC permutation when present. The section-data offset accumulates the TOC
byte size across `process()` calls, since the TOC may be parsed
incrementally.
Tests cover TOC invariants (single/multi-group, permuted), bare-vs-
container consistency, and a chunked-vs-single-shot regression.
Signed-off-by: Ryan Walklin <ryan@testtoast.com>
|
Thanks for your pull request! It looks like this may be your first contribution to a Google open source project. Before we can look at your pull request, you'll need to sign a Contributor License Agreement (CLA). View this failed invocation of the CLA check for more information. For the most up to date status, view the checks section at the bottom of the pull request. |
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.
Expose the frame Table of Contents through the public decoder API so streaming consumers can locate frame-section byte boundaries without fully decoding the bitstream:
TocEntry/TocGroupKindplusJxlDecoder::{toc_num_entries, toc_entry, frame_data_size, frame_data_offset}, available once the decoder reachesWithFrameInfo.Entries are reported in bitstream order, each kind resolved through the TOC permutation when present. The section-data offset accumulates the TOC byte size across
process()calls, since the TOC may be parsed incrementally.Tests cover TOC invariants (single/multi-group, permuted), bare-vs- container consistency, and a chunked-vs-single-shot regression.
AI disclosure: written with Claude Code (Opus 4.8) but all code reviewed and unit tested, as well as against jxl-oxide and libjxl outputs. Also tested against an in-house JXL streaming server and client previously using jxl-oxide.
Closes #387