LIBJXL
decode.h
Go to the documentation of this file.
1 /* Copyright (c) the JPEG XL Project Authors. All rights reserved.
2  *
3  * Use of this source code is governed by a BSD-style
4  * license that can be found in the LICENSE file.
5  */
6 
13 #ifndef JXL_DECODE_H_
14 #define JXL_DECODE_H_
15 
16 #include <stddef.h>
17 #include <stdint.h>
18 
19 #include "jxl/codestream_header.h"
20 #include "jxl/color_encoding.h"
21 #include "jxl/jxl_export.h"
22 #include "jxl/memory_manager.h"
23 #include "jxl/parallel_runner.h"
24 #include "jxl/types.h"
25 #include "jxl/version.h"
26 
27 #if defined(__cplusplus) || defined(c_plusplus)
28 extern "C" {
29 #endif
30 
38 JXL_EXPORT uint32_t JxlDecoderVersion(void);
39 
42 typedef enum {
46 
49 
54 
59 } JxlSignature;
60 
76 JXL_EXPORT JxlSignature JxlSignatureCheck(const uint8_t* buf, size_t len);
77 
84 typedef struct JxlDecoderStruct JxlDecoder;
85 
98 JXL_EXPORT JxlDecoder* JxlDecoderCreate(const JxlMemoryManager* memory_manager);
99 
107 JXL_EXPORT void JxlDecoderReset(JxlDecoder* dec);
108 
114 JXL_EXPORT void JxlDecoderDestroy(JxlDecoder* dec);
115 
122 typedef enum {
137 
142 
158 
169 
179 
188 
195 
201 
210 
220 
230 
240 
260  JXL_DEC_FRAME = 0x400,
261 
276 
290 
303 
339  JXL_DEC_BOX = 0x4000,
340 
358 
382 JXL_EXPORT void JxlDecoderRewind(JxlDecoder* dec);
383 
402 JXL_EXPORT void JxlDecoderSkipFrames(JxlDecoder* dec, size_t amount);
403 
417 
432 JXL_EXPORT JXL_DEPRECATED JxlDecoderStatus
434 
447 JXL_EXPORT JxlDecoderStatus
449  void* parallel_runner_opaque);
450 
466 JXL_EXPORT size_t JxlDecoderSizeHintBasicInfo(const JxlDecoder* dec);
467 
481  int events_wanted);
482 
514 JXL_EXPORT JxlDecoderStatus
516 
532 JXL_EXPORT JxlDecoderStatus
534 
545 JXL_EXPORT JxlDecoderStatus
547 
562  JXL_BOOL coalescing);
563 
607 
623  const uint8_t* data,
624  size_t size);
625 
645 JXL_EXPORT size_t JxlDecoderReleaseInput(JxlDecoder* dec);
646 
665 JXL_EXPORT void JxlDecoderCloseInput(JxlDecoder* dec);
666 
679  JxlBasicInfo* info);
680 
694  const JxlDecoder* dec, size_t index, JxlExtraChannelInfo* info);
695 
711  size_t index,
712  char* name,
713  size_t size);
714 
720 typedef enum {
724 
728 
767  const JxlDecoder* dec, const JxlPixelFormat* unused_format,
768  JxlColorProfileTarget target, JxlColorEncoding* color_encoding);
769 
794  const JxlDecoder* dec, const JxlPixelFormat* unused_format,
795  JxlColorProfileTarget target, size_t* size);
796 
814  const JxlDecoder* dec, const JxlPixelFormat* unused_format,
815  JxlColorProfileTarget target, uint8_t* icc_profile, size_t size);
816 
851  JxlDecoder* dec, const JxlColorEncoding* color_encoding);
852 
864  JxlDecoder* dec, float desired_intensity_target);
865 
879  const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
880 
897  JxlDecoder* dec, const JxlPixelFormat* format, void* buffer, size_t size);
898 
912  JxlFrameHeader* header);
913 
927  char* name, size_t size);
928 
942  const JxlDecoder* dec, size_t index, JxlBlendInfo* blend_info);
943 
958 JXL_EXPORT JXL_DEPRECATED JxlDecoderStatus JxlDecoderDCOutBufferSize(
959  const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
960 
979 JXL_EXPORT JXL_DEPRECATED JxlDecoderStatus JxlDecoderSetDCOutBuffer(
980  JxlDecoder* dec, const JxlPixelFormat* format, void* buffer, size_t size);
981 
998  const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
999 
1017  JxlDecoder* dec, const JxlPixelFormat* format, void* buffer, size_t size);
1018 
1035 typedef void (*JxlImageOutCallback)(void* opaque, size_t x, size_t y,
1036  size_t num_pixels, const void* pixels);
1037 
1050 typedef void* (*JxlImageOutInitCallback)(void* init_opaque, size_t num_threads,
1051  size_t num_pixels_per_thread);
1052 
1069 typedef void (*JxlImageOutRunCallback)(void* run_opaque, size_t thread_id,
1070  size_t x, size_t y, size_t num_pixels,
1071  const void* pixels);
1072 
1080 typedef void (*JxlImageOutDestroyCallback)(void* run_opaque);
1081 
1124 JXL_EXPORT JxlDecoderStatus
1126  JxlImageOutCallback callback, void* opaque);
1127 
1148  JxlDecoder* dec, const JxlPixelFormat* format,
1149  JxlImageOutInitCallback init_callback, JxlImageOutRunCallback run_callback,
1150  JxlImageOutDestroyCallback destroy_callback, void* init_opaque);
1151 
1168  const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size,
1169  uint32_t index);
1170 
1201 JXL_EXPORT JxlDecoderStatus
1203  void* buffer, size_t size, uint32_t index);
1204 
1224  uint8_t* data, size_t size);
1225 
1242 JXL_EXPORT size_t JxlDecoderReleaseJPEGBuffer(JxlDecoder* dec);
1243 
1267  uint8_t* data, size_t size);
1268 
1285 JXL_EXPORT size_t JxlDecoderReleaseBoxBuffer(JxlDecoder* dec);
1286 
1308  JXL_BOOL decompress);
1309 
1376  JxlBoxType type,
1377  JXL_BOOL decompressed);
1378 
1397  uint64_t* size);
1398 
1410 JXL_EXPORT JxlDecoderStatus
1412 
1422 
1440 
1441 #if defined(__cplusplus) || defined(c_plusplus)
1442 }
1443 #endif
1444 
1445 #endif /* JXL_DECODE_H_ */
1446 
JxlDecoderSetKeepOrientation
JXL_EXPORT JxlDecoderStatus JxlDecoderSetKeepOrientation(JxlDecoder *dec, JXL_BOOL skip_reorientation)
JxlDecoderSetDCOutBuffer
JXL_EXPORT JXL_DEPRECATED JxlDecoderStatus JxlDecoderSetDCOutBuffer(JxlDecoder *dec, const JxlPixelFormat *format, void *buffer, size_t size)
JxlDecoderSetInput
JXL_EXPORT JxlDecoderStatus JxlDecoderSetInput(JxlDecoder *dec, const uint8_t *data, size_t size)
JxlDecoderSetImageOutCallback
JXL_EXPORT JxlDecoderStatus JxlDecoderSetImageOutCallback(JxlDecoder *dec, const JxlPixelFormat *format, JxlImageOutCallback callback, void *opaque)
JxlDecoderImageOutBufferSize
JXL_EXPORT JxlDecoderStatus JxlDecoderImageOutBufferSize(const JxlDecoder *dec, const JxlPixelFormat *format, size_t *size)
JXL_DEC_NEED_PREVIEW_OUT_BUFFER
@ JXL_DEC_NEED_PREVIEW_OUT_BUFFER
Definition: decode.h:168
JXL_BOOL
#define JXL_BOOL
Definition: types.h:31
JxlDecoderSetProgressiveDetail
JXL_EXPORT JxlDecoderStatus JxlDecoderSetProgressiveDetail(JxlDecoder *dec, JxlProgressiveDetail detail)
types.h
Data types for the JPEG XL API, for both encoding and decoding.
JxlDecoderSetCoalescing
JXL_EXPORT JxlDecoderStatus JxlDecoderSetCoalescing(JxlDecoder *dec, JXL_BOOL coalescing)
JxlDecoderSizeHintBasicInfo
JXL_EXPORT size_t JxlDecoderSizeHintBasicInfo(const JxlDecoder *dec)
JXL_DEC_FULL_IMAGE
@ JXL_DEC_FULL_IMAGE
Definition: decode.h:289
JXL_SIG_NOT_ENOUGH_BYTES
@ JXL_SIG_NOT_ENOUGH_BYTES
Definition: decode.h:45
JXL_COLOR_PROFILE_TARGET_ORIGINAL
@ JXL_COLOR_PROFILE_TARGET_ORIGINAL
Definition: decode.h:723
JXL_DEC_NEED_MORE_INPUT
@ JXL_DEC_NEED_MORE_INPUT
Definition: decode.h:157
JXL_DEC_JPEG_RECONSTRUCTION
@ JXL_DEC_JPEG_RECONSTRUCTION
Definition: decode.h:302
codestream_header.h
Definitions of structs and enums for the metadata from the JPEG XL codestream headers (signature,...
JXL_DEC_BOX
@ JXL_DEC_BOX
Definition: decode.h:339
JxlDecoderSubscribeEvents
JXL_EXPORT JxlDecoderStatus JxlDecoderSubscribeEvents(JxlDecoder *dec, int events_wanted)
JXL_DEC_JPEG_NEED_MORE_OUTPUT
@ JXL_DEC_JPEG_NEED_MORE_OUTPUT
Definition: decode.h:194
JxlDecoderGetFrameName
JXL_EXPORT JxlDecoderStatus JxlDecoderGetFrameName(const JxlDecoder *dec, char *name, size_t size)
JXL_DEC_BASIC_INFO
@ JXL_DEC_BASIC_INFO
Definition: decode.h:209
JXL_DEC_NEED_DC_OUT_BUFFER
@ JXL_DEC_NEED_DC_OUT_BUFFER
Definition: decode.h:178
JxlImageOutCallback
void(* JxlImageOutCallback)(void *opaque, size_t x, size_t y, size_t num_pixels, const void *pixels)
Definition: decode.h:1035
JXL_SIG_CODESTREAM
@ JXL_SIG_CODESTREAM
Definition: decode.h:53
JxlDecoderSetUnpremultiplyAlpha
JXL_EXPORT JxlDecoderStatus JxlDecoderSetUnpremultiplyAlpha(JxlDecoder *dec, JXL_BOOL unpremul_alpha)
JxlDecoderReleaseBoxBuffer
JXL_EXPORT size_t JxlDecoderReleaseBoxBuffer(JxlDecoder *dec)
JxlDecoderSetRenderSpotcolors
JXL_EXPORT JxlDecoderStatus JxlDecoderSetRenderSpotcolors(JxlDecoder *dec, JXL_BOOL render_spotcolors)
JXL_DEC_BOX_NEED_MORE_OUTPUT
@ JXL_DEC_BOX_NEED_MORE_OUTPUT
Definition: decode.h:200
JxlDecoderSkipCurrentFrame
JXL_EXPORT JxlDecoderStatus JxlDecoderSkipCurrentFrame(JxlDecoder *dec)
JxlDecoderGetICCProfileSize
JXL_EXPORT JxlDecoderStatus JxlDecoderGetICCProfileSize(const JxlDecoder *dec, const JxlPixelFormat *unused_format, JxlColorProfileTarget target, size_t *size)
JxlDecoderGetIntendedDownsamplingRatio
JXL_EXPORT size_t JxlDecoderGetIntendedDownsamplingRatio(JxlDecoder *dec)
JxlDecoderGetBoxSizeRaw
JXL_EXPORT JxlDecoderStatus JxlDecoderGetBoxSizeRaw(const JxlDecoder *dec, uint64_t *size)
JxlExtraChannelInfo
Definition: codestream_header.h:273
JxlDecoderVersion
JXL_EXPORT uint32_t JxlDecoderVersion(void)
JxlProgressiveDetail
JxlProgressiveDetail
Definition: types.h:126
JxlDecoderGetExtraChannelBlendInfo
JXL_EXPORT JxlDecoderStatus JxlDecoderGetExtraChannelBlendInfo(const JxlDecoder *dec, size_t index, JxlBlendInfo *blend_info)
JxlDecoderSetDecompressBoxes
JXL_EXPORT JxlDecoderStatus JxlDecoderSetDecompressBoxes(JxlDecoder *dec, JXL_BOOL decompress)
JxlFrameHeader
Definition: codestream_header.h:397
JxlDecoderGetBoxType
JXL_EXPORT JxlDecoderStatus JxlDecoderGetBoxType(JxlDecoder *dec, JxlBoxType type, JXL_BOOL decompressed)
JxlBlendInfo
Definition: codestream_header.h:338
JxlDecoderGetExtraChannelInfo
JXL_EXPORT JxlDecoderStatus JxlDecoderGetExtraChannelInfo(const JxlDecoder *dec, size_t index, JxlExtraChannelInfo *info)
JXL_DEC_NEED_IMAGE_OUT_BUFFER
@ JXL_DEC_NEED_IMAGE_OUT_BUFFER
Definition: decode.h:187
JxlDecoderRewind
JXL_EXPORT void JxlDecoderRewind(JxlDecoder *dec)
JXL_DEC_PREVIEW_IMAGE
@ JXL_DEC_PREVIEW_IMAGE
Definition: decode.h:239
JxlSignatureCheck
JXL_EXPORT JxlSignature JxlSignatureCheck(const uint8_t *buf, size_t len)
JxlDecoderSetPreferredColorProfile
JXL_EXPORT JxlDecoderStatus JxlDecoderSetPreferredColorProfile(JxlDecoder *dec, const JxlColorEncoding *color_encoding)
JxlDecoderGetColorAsEncodedProfile
JXL_EXPORT JxlDecoderStatus JxlDecoderGetColorAsEncodedProfile(const JxlDecoder *dec, const JxlPixelFormat *unused_format, JxlColorProfileTarget target, JxlColorEncoding *color_encoding)
JxlDecoderDefaultPixelFormat
JXL_EXPORT JXL_DEPRECATED JxlDecoderStatus JxlDecoderDefaultPixelFormat(const JxlDecoder *dec, JxlPixelFormat *format)
JxlDecoderDestroy
JXL_EXPORT void JxlDecoderDestroy(JxlDecoder *dec)
JxlDecoderSetDesiredIntensityTarget
JXL_EXPORT JxlDecoderStatus JxlDecoderSetDesiredIntensityTarget(JxlDecoder *dec, float desired_intensity_target)
JXL_DEC_FRAME_PROGRESSION
@ JXL_DEC_FRAME_PROGRESSION
Definition: decode.h:356
JxlColorProfileTarget
JxlColorProfileTarget
Definition: decode.h:720
JxlSignature
JxlSignature
Definition: decode.h:42
JxlDecoderSetExtraChannelBuffer
JXL_EXPORT JxlDecoderStatus JxlDecoderSetExtraChannelBuffer(JxlDecoder *dec, const JxlPixelFormat *format, void *buffer, size_t size, uint32_t index)
JxlDecoderSetParallelRunner
JXL_EXPORT JxlDecoderStatus JxlDecoderSetParallelRunner(JxlDecoder *dec, JxlParallelRunner parallel_runner, void *parallel_runner_opaque)
JxlBoxType
char JxlBoxType[4]
Definition: types.h:116
JxlColorEncoding
Definition: color_encoding.h:116
JxlDecoderSetJPEGBuffer
JXL_EXPORT JxlDecoderStatus JxlDecoderSetJPEGBuffer(JxlDecoder *dec, uint8_t *data, size_t size)
JxlDecoderReleaseInput
JXL_EXPORT size_t JxlDecoderReleaseInput(JxlDecoder *dec)
JXL_DEC_SUCCESS
@ JXL_DEC_SUCCESS
Definition: decode.h:136
JxlDecoderGetExtraChannelName
JXL_EXPORT JxlDecoderStatus JxlDecoderGetExtraChannelName(const JxlDecoder *dec, size_t index, char *name, size_t size)
JXL_SIG_INVALID
@ JXL_SIG_INVALID
Definition: decode.h:48
JXL_DEC_EXTENSIONS
@ JXL_DEC_EXTENSIONS
Definition: decode.h:219
JxlDecoderStatus
JxlDecoderStatus
Definition: decode.h:122
JxlDecoderCreate
JXL_EXPORT JxlDecoder * JxlDecoderCreate(const JxlMemoryManager *memory_manager)
JxlDecoderProcessInput
JXL_EXPORT JxlDecoderStatus JxlDecoderProcessInput(JxlDecoder *dec)
JxlDecoderReleaseJPEGBuffer
JXL_EXPORT size_t JxlDecoderReleaseJPEGBuffer(JxlDecoder *dec)
memory_manager.h
Abstraction functions used by JPEG XL to allocate memory.
color_encoding.h
Color Encoding definitions used by JPEG XL. All CIE units are for the standard 1931 2 degree observer...
JXL_DEC_FRAME
@ JXL_DEC_FRAME
Definition: decode.h:260
JxlImageOutDestroyCallback
void(* JxlImageOutDestroyCallback)(void *run_opaque)
Definition: decode.h:1080
JxlDecoderSetPreviewOutBuffer
JXL_EXPORT JxlDecoderStatus JxlDecoderSetPreviewOutBuffer(JxlDecoder *dec, const JxlPixelFormat *format, void *buffer, size_t size)
JxlDecoderSetBoxBuffer
JXL_EXPORT JxlDecoderStatus JxlDecoderSetBoxBuffer(JxlDecoder *dec, uint8_t *data, size_t size)
JxlMemoryManagerStruct
Definition: memory_manager.h:51
JxlParallelRunner
JxlParallelRetCode(* JxlParallelRunner)(void *runner_opaque, void *jpegxl_opaque, JxlParallelRunInit init, JxlParallelRunFunction func, uint32_t start_range, uint32_t end_range)
Definition: parallel_runner.h:119
JXL_DEC_DC_IMAGE
@ JXL_DEC_DC_IMAGE
Definition: decode.h:275
JxlDecoderSetMultithreadedImageOutCallback
JXL_EXPORT JxlDecoderStatus JxlDecoderSetMultithreadedImageOutCallback(JxlDecoder *dec, const JxlPixelFormat *format, JxlImageOutInitCallback init_callback, JxlImageOutRunCallback run_callback, JxlImageOutDestroyCallback destroy_callback, void *init_opaque)
JxlBasicInfo
Definition: codestream_header.h:105
JxlPixelFormat
Definition: types.h:87
JxlDecoderGetFrameHeader
JXL_EXPORT JxlDecoderStatus JxlDecoderGetFrameHeader(const JxlDecoder *dec, JxlFrameHeader *header)
JxlDecoderSetImageOutBuffer
JXL_EXPORT JxlDecoderStatus JxlDecoderSetImageOutBuffer(JxlDecoder *dec, const JxlPixelFormat *format, void *buffer, size_t size)
JxlDecoderPreviewOutBufferSize
JXL_EXPORT JxlDecoderStatus JxlDecoderPreviewOutBufferSize(const JxlDecoder *dec, const JxlPixelFormat *format, size_t *size)
JxlDecoderExtraChannelBufferSize
JXL_EXPORT JxlDecoderStatus JxlDecoderExtraChannelBufferSize(const JxlDecoder *dec, const JxlPixelFormat *format, size_t *size, uint32_t index)
parallel_runner.h
JxlImageOutInitCallback
void *(* JxlImageOutInitCallback)(void *init_opaque, size_t num_threads, size_t num_pixels_per_thread)
Definition: decode.h:1050
JxlDecoderFlushImage
JXL_EXPORT JxlDecoderStatus JxlDecoderFlushImage(JxlDecoder *dec)
JxlDecoderSkipFrames
JXL_EXPORT void JxlDecoderSkipFrames(JxlDecoder *dec, size_t amount)
JxlDecoderCloseInput
JXL_EXPORT void JxlDecoderCloseInput(JxlDecoder *dec)
JXL_DEC_ERROR
@ JXL_DEC_ERROR
Definition: decode.h:141
JXL_COLOR_PROFILE_TARGET_DATA
@ JXL_COLOR_PROFILE_TARGET_DATA
Definition: decode.h:726
JxlDecoderGetColorAsICCProfile
JXL_EXPORT JxlDecoderStatus JxlDecoderGetColorAsICCProfile(const JxlDecoder *dec, const JxlPixelFormat *unused_format, JxlColorProfileTarget target, uint8_t *icc_profile, size_t size)
JxlDecoderReset
JXL_EXPORT void JxlDecoderReset(JxlDecoder *dec)
JXL_SIG_CONTAINER
@ JXL_SIG_CONTAINER
Definition: decode.h:58
JxlImageOutRunCallback
void(* JxlImageOutRunCallback)(void *run_opaque, size_t thread_id, size_t x, size_t y, size_t num_pixels, const void *pixels)
Definition: decode.h:1069
JXL_DEC_COLOR_ENCODING
@ JXL_DEC_COLOR_ENCODING
Definition: decode.h:229
JxlDecoderDCOutBufferSize
JXL_EXPORT JXL_DEPRECATED JxlDecoderStatus JxlDecoderDCOutBufferSize(const JxlDecoder *dec, const JxlPixelFormat *format, size_t *size)
JxlDecoder
struct JxlDecoderStruct JxlDecoder
Definition: decode.h:84
JxlDecoderGetBasicInfo
JXL_EXPORT JxlDecoderStatus JxlDecoderGetBasicInfo(const JxlDecoder *dec, JxlBasicInfo *info)