Skip to content

Add UNCONST profile extensions and rework the tile info API - #236

Open
kpchoi wants to merge 8 commits into
mainfrom
add_profile_ext
Open

Add UNCONST profile extensions and rework the tile info API#236
kpchoi wants to merge 8 commits into
mainfrom
add_profile_ext

Conversation

@kpchoi

@kpchoi kpchoi commented Aug 6, 2026

Copy link
Copy Markdown
Collaborator

This implements the 16K small-tile support discussed in #228 as a set of OpenAPV profile extensions, together with the API changes needed to handle large tile counts. See docs/profile_ext.md for the extension definition.

UNCONST profiles

  • <profile>-UNCONST extensions for all seven RFC 9924 profiles (e.g. 422-10-UNCONST, profile_idc 43), defined in a new document docs/profile_ext.md together with the numbering convention and the existing 16C12 profiles
  • They follow all constraints of their base profile but have no limit on the number of tile columns/rows, and allow tiles down to one MB (16x16)
  • Tile arrays in the encoder, decoder, and frame header are allocated through the instance allocator instead of fixed OAPV_MAX_TILES arrays, so the tile count is only bounded by the frame size

Tile info API rework (source-incompatible changes)

  • oapv_frm_info_t carries the tile partitioning of a frame
  • New oapvd_info_tile() fills caller-provided tile positions with a capacity check; the fixed 400-entry oapv_tile_info_t is removed
  • oapvd_decode_frame() takes a tile index list for partial decoding, and --cyclic-tile-decoding takes the number of tiles to decode per frame
  • Parameters of the reworked decoder APIs are validated against NULL and out-of-range values

Fixes

  • 444-16C12 was only half supported: it could not be selected by the encoder and its bitstreams were rejected by the decoder
  • OAPV_CFG_SET_DISABLE_COMPANDING was overwritten by the per-frame companding derivation; it is now kept separately and overrides it
  • Bottom-boundary tiles reported an unclipped height in the tile info
  • A bitstream buffer too small for the tile layout is rejected before encoding starts instead of failing mid-encode

Documentation

  • New docs/programmers_guide.md covering encoding, both decoder API sets, tile-based partial decoding, runtime configuration, and the custom memory allocator; linked from the README

@m-w-park m-w-park 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 to me.

@ssantihub

Copy link
Copy Markdown
Collaborator

LGTM

kpchoi added 6 commits August 6, 2026 20:51
Signed-off-by: KP Choi <kp5.choi@samsung.com>
Signed-off-by: KP Choi <kp5.choi@samsung.com>
Signed-off-by: KP Choi <kp5.choi@samsung.com>
Signed-off-by: KP Choi <kp5.choi@samsung.com>
Signed-off-by: KP Choi <kp5.choi@samsung.com>
Signed-off-by: KP Choi <kp5.choi@samsung.com>
kpchoi added 2 commits August 6, 2026 21:20
Signed-off-by: KP Choi <kp5.choi@samsung.com>
Signed-off-by: KP Choi <kp5.choi@samsung.com>
@kpchoi kpchoi changed the title Add UNCONST profile extensions for unconstrained tile partitioning for 16k supporting Add UNCONST profile extensions and rework the tile info API Aug 6, 2026
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.

3 participants