Skip to content

gamut-jxl: only EFFORT reaches libjxl; expose modular-mode control #339

Description

@justin13888
  • JxlEncoderFrameSettingsSetOption is called with exactly one enumerant, EFFORT (verified at c2df11b: crates/gamut-jxl/src/ffi.rs:204, :316). Every other JxlEncoderFrameSettingId is unreachable from JxlEncoder, and gamut-jxl-sys would need the enumerant transcribed before it could be set at all.
  • The public knobs are therefore effort, distance/lossless, container, colour spec, orientation, bit depth and metadata — no coding-tool control of any kind.
  • Deliver: modular-mode control on JxlEncoder, plus the minimal gamut-jxl-sys enumerant additions it requires. Opening the seam makes the rest of the frame-setting surface additive rather than another FFI change each time.
  • Priority note: low rate-distortion value on the VarDCT photo curve — --modular 1 generally loses above distance ~0.5, and libjxl already selects modular for lossless. The motivation is parity with the modular-on variant that https://github.com/justin13888/image-evaluation already sweeps, so gamut-jxl can be compared against libjxl-encode on equal terms.
  • Related: Stable Roadmap #168.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions