github libjxl/libjxl v0.7rc
0.7 release candidate

latest releases: v0.10.2, v0.10.1, v0.10-snapshot...
pre-release21 months ago

THIS IS A RELEASE CANDIDATE. We expect to have v0.7 release soon.

Added

  • decoder API: Ability to decode the content of metadata boxes:
    JXL_DEC_BOX, JXL_DEC_BOX_NEED_MORE_OUTPUT, JxlDecoderSetBoxBuffer,
    JxlDecoderGetBoxType, JxlDecoderGetBoxSizeRaw and
    JxlDecoderSetDecompressBoxes.
  • decoder API: ability to mark the input is finished: JxlDecoderCloseInput.
  • decoder API: ability to request updates on different progressive events using
    JxlDecoderSetProgressiveDetail; currently supported events are
    kDC, kLastPasses and kPasses.
  • decoder API: ability to specify desired intensity target using
    JxlDecoderSetDesiredIntensityTarget
  • decoder API: new function JxlDecoderSetCoalesced to allow decoding
    non-coalesced (unblended) frames, e.g. layers of a composite still image
    or the cropped frames of a recompressed GIF/APNG.
  • decoder API: new function JxlDecoderSetUnpremultiplyAlpha to set
    preference for getting an associated alpha channel with premultiplied or
    unpremultiplied colors.
  • decoder API: field added to JxlFrameHeader: a JxlLayerInfo struct
    that contains crop dimensions and offsets and blending information for
    the non-coalesced case.
  • decoder API: new function JxlDecoderGetExtraChannelBlendInfo to get
    the blending information for extra channels in the non-coalesced case.
  • decoder API: new function JxlDecoderSetMultithreadedImageOutCallback,
    allowing output callbacks to receive more information about the number of
    threads on which they are running.
  • decoder API: new function JxlDecoderSkipCurrentFrame to skip processing
    the current frame after a progressive detail is reached.
  • decoder API: new function JxlDecoderGetIntendedDownsamplingRatio to get
    the intended downsampling ratio of progressive steps, based on the
    information in the frame header.
  • decoder API: new function JxlDecoderSetRenderSpotcolors to allow disabling
    rendering of spot colors.
  • decoder/encoder API: add two fields to JXLBasicInfo: intrinsic_xsize
    and intrinsic_ysize to signal the intrinsic size.
  • encoder API: ability to add metadata boxes, added new functions
    JxlEncoderAddBox, JxlEncoderUseBoxes, JxlEncoderCloseBoxes and
    JxlEncoderCloseFrames.
  • encoder API: added ability to set several encoder options / extra fields to
    frames using JxlEncoderSetFrameName, JxlEncoderFrameSettingsSetOption,
    JxlEncoderFrameSettingsSetFloatOption.
  • encoder API: added ability to check required codestream compatibility level
    and force specified using JxlEncoderGetRequiredCodestreamLevel and
    JxlEncoderSetCodestreamLevel.
  • encoder API: added ability to force emitting box-based container format
    using JxlEncoderUseContainer.
  • encoder API: added ability to store JPEG metadata for lossless reconstruction
    using JxlEncoderStoreJPEGMetadata
  • encoder API: new functions JxlEncoderSetFrameHeader and
    JxlEncoderSetExtraChannelBlendInfo to set animation
    and blending parameters of the frame, and JxlEncoderInitFrameHeader and
    JxlEncoderInitBlendInfo to initialize the structs to set.
  • encoder API: ability to encode arbitrary extra channels:
    JxlEncoderInitExtraChannelInfo, JxlEncoderSetExtraChannelInfo,
    JxlEncoderSetExtraChannelName and JxlEncoderSetExtraChannelBuffer.
  • encoder API: ability to plug custom CMS implementation using
    JxlEncoderSetCms(JxlEncoder* enc, JxlCmsInterface cms)
  • encoder API: added JxlEncoderGetError to retrieve last encoder error.

Changed

  • decoder API: using JxlDecoderCloseInput at the end of all input is required
    when using JXL_DEC_BOX, and is now also encouraged in other cases, but not
    required in those other cases for backwards compatibility.
  • encoder API: JxlEncoderCloseInput now closes both frames and boxes input.
  • CLI: cjxl and djxl have been reimplemented on the base of public decoder
    and encoder API; dropped dependency on gflags for argument parsing.

Deprecated

  • decoder API: JXL_DEC_EXTENSIONS event: use JXL_DEC_BASIC_INFO
  • decoder / encoder API: pixel types JXL_TYPE_BOOLEAN and JXL_TYPE_UINT32:
    consider using JXL_TYPE_UINT8 and JXL_TYPE_FLOAT correspondingly.
  • decoder API: pixel format parameter for JxlDecoderGetColorAsEncodedProfile
    and JxlDecoderGetICCProfileSize: pass NULL.
  • decoder API: JxlDecoderDefaultPixelFormat
  • encoder API: JxlEncoderOptions: use JxlEncoderFrameSettings instead.
  • encoder API: JxlEncoderOptionsCreate: use JxlEncoderFrameSettingsCreate
    instead.
  • encoder API: JxlEncoderOptionsSetDistance: use JxlEncoderSetFrameDistance
    instead.
  • encoder API: JxlEncoderOptionsSetLossless: use JxlEncoderSetFrameLossless
    instead.
  • encoder API: JxlEncoderOptionsSetEffort: use
    JxlEncoderFrameSettingsSetOption(frame_settings, JXL_ENC_FRAME_SETTING_EFFORT, effort)
    instead.
  • encoder API: JxlEncoderOptionsSetDecodingSpeed: use
    JxlEncoderFrameSettingsSetOption(frame_settings, JXL_ENC_FRAME_SETTING_DECODING_SPEED, tier)
    instead.
  • encoder API: deprecated JXL_ENC_NOT_SUPPORTED, the encoder returns
    JXL_ENC_ERROR instead and there is no need to handle
    JXL_ENC_NOT_SUPPORTED.

Note: This release is for evaluation purposes and may contain bugs, including security bugs, that may not be individually documented when fixed. See the SECURITY.md file for details. Always prefer to use the latest release.

Please provide feedback and report bugs here.

Don't miss a new libjxl release

NewReleases is sending notifications on new releases.