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/cms_interface.h"
21#include "jxl/color_encoding.h"
22#include "jxl/jxl_export.h"
23#include "jxl/memory_manager.h"
24#include "jxl/parallel_runner.h"
25#include "jxl/types.h"
26#include "jxl/version.h"
27
28#if defined(__cplusplus) || defined(c_plusplus)
29extern "C" {
30#endif
31
39JXL_EXPORT uint32_t JxlDecoderVersion(void);
40
43typedef enum {
47
50
55
61
77JXL_EXPORT JxlSignature JxlSignatureCheck(const uint8_t* buf, size_t len);
78
85typedef struct JxlDecoderStruct JxlDecoder;
86
99JXL_EXPORT JxlDecoder* JxlDecoderCreate(const JxlMemoryManager* memory_manager);
100
108JXL_EXPORT void JxlDecoderReset(JxlDecoder* dec);
109
115JXL_EXPORT void JxlDecoderDestroy(JxlDecoder* dec);
116
123typedef enum {
138
143
159
170
180
189
196
202
211
221
231
241
262
277
291
304
340 JXL_DEC_BOX = 0x4000,
341
359
383JXL_EXPORT void JxlDecoderRewind(JxlDecoder* dec);
384
403JXL_EXPORT void JxlDecoderSkipFrames(JxlDecoder* dec, size_t amount);
404
418
433JXL_DEPRECATED JXL_EXPORT JxlDecoderStatus
435
448JXL_EXPORT JxlDecoderStatus
450 void* parallel_runner_opaque);
451
467JXL_EXPORT size_t JxlDecoderSizeHintBasicInfo(const JxlDecoder* dec);
468
482 int events_wanted);
483
515JXL_EXPORT JxlDecoderStatus
517
533JXL_EXPORT JxlDecoderStatus
535
546JXL_EXPORT JxlDecoderStatus
548
563 JXL_BOOL coalescing);
564
608
624 const uint8_t* data,
625 size_t size);
626
646JXL_EXPORT size_t JxlDecoderReleaseInput(JxlDecoder* dec);
647
666JXL_EXPORT void JxlDecoderCloseInput(JxlDecoder* dec);
667
680 JxlBasicInfo* info);
681
695 const JxlDecoder* dec, size_t index, JxlExtraChannelInfo* info);
696
712 size_t index,
713 char* name,
714 size_t size);
715
721typedef enum {
725
729
780 const JxlDecoder* dec, const JxlPixelFormat* unused_format,
781 JxlColorProfileTarget target, JxlColorEncoding* color_encoding);
782
807 const JxlDecoder* dec, const JxlPixelFormat* unused_format,
808 JxlColorProfileTarget target, size_t* size);
809
827 const JxlDecoder* dec, const JxlPixelFormat* unused_format,
828 JxlColorProfileTarget target, uint8_t* icc_profile, size_t size);
829
841 JxlDecoder* dec, const JxlColorEncoding* color_encoding);
842
854 JxlDecoder* dec, float desired_intensity_target);
855
898 JxlDecoder* dec, const JxlColorEncoding* color_encoding,
899 const uint8_t* icc_data, size_t icc_size);
900
913JXL_EXPORT void JxlDecoderSetCms(JxlDecoder* dec, JxlCmsInterface cms);
914// TODO(firsching): add a function JxlDecoderSetDefaultCms() for setting a
915// default in case libjxl is build with an CMS.
916
930 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
931
948 JxlDecoder* dec, const JxlPixelFormat* format, void* buffer, size_t size);
949
963 JxlFrameHeader* header);
964
978 char* name, size_t size);
979
993 const JxlDecoder* dec, size_t index, JxlBlendInfo* blend_info);
994
1010 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
1011
1031 JxlDecoder* dec, const JxlPixelFormat* format, void* buffer, size_t size);
1032
1049 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
1050
1068 JxlDecoder* dec, const JxlPixelFormat* format, void* buffer, size_t size);
1069
1086typedef void (*JxlImageOutCallback)(void* opaque, size_t x, size_t y,
1087 size_t num_pixels, const void* pixels);
1088
1101typedef void* (*JxlImageOutInitCallback)(void* init_opaque, size_t num_threads,
1102 size_t num_pixels_per_thread);
1103
1120typedef void (*JxlImageOutRunCallback)(void* run_opaque, size_t thread_id,
1121 size_t x, size_t y, size_t num_pixels,
1122 const void* pixels);
1123
1131typedef void (*JxlImageOutDestroyCallback)(void* run_opaque);
1132
1175JXL_EXPORT JxlDecoderStatus
1177 JxlImageOutCallback callback, void* opaque);
1178
1199 JxlDecoder* dec, const JxlPixelFormat* format,
1200 JxlImageOutInitCallback init_callback, JxlImageOutRunCallback run_callback,
1201 JxlImageOutDestroyCallback destroy_callback, void* init_opaque);
1202
1219 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size,
1220 uint32_t index);
1221
1252JXL_EXPORT JxlDecoderStatus
1254 void* buffer, size_t size, uint32_t index);
1255
1275 uint8_t* data, size_t size);
1276
1294
1318 uint8_t* data, size_t size);
1319
1337
1359 JXL_BOOL decompress);
1360
1427 JxlBoxType type,
1428 JXL_BOOL decompressed);
1429
1448 uint64_t* size);
1449
1461JXL_EXPORT JxlDecoderStatus
1463
1473
1491
1504JXL_EXPORT JxlDecoderStatus
1506
1507#if defined(__cplusplus) || defined(c_plusplus)
1508}
1509#endif
1510
1511#endif /* JXL_DECODE_H_ */
1512
Interface to allow the injection of different color management systems (CMSes, also called color mana...
Definitions of structs and enums for the metadata from the JPEG XL codestream headers (signature,...
Color Encoding definitions used by JPEG XL. All CIE units are for the standard 1931 2 degree observer...
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
char JxlBoxType[4]
Definition: types.h:152
#define JXL_BOOL
Definition: types.h:31
JxlProgressiveDetail
Definition: types.h:162
JXL_EXPORT size_t JxlDecoderReleaseBoxBuffer(JxlDecoder *dec)
JXL_EXPORT void JxlDecoderSkipFrames(JxlDecoder *dec, size_t amount)
JXL_EXPORT uint32_t JxlDecoderVersion(void)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetOutputColorProfile(JxlDecoder *dec, const JxlColorEncoding *color_encoding, const uint8_t *icc_data, size_t icc_size)
JXL_EXPORT size_t JxlDecoderReleaseInput(JxlDecoder *dec)
JXL_EXPORT JxlDecoderStatus JxlDecoderPreviewOutBufferSize(const JxlDecoder *dec, const JxlPixelFormat *format, size_t *size)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetImageOutBitDepth(JxlDecoder *dec, const JxlBitDepth *bit_depth)
JXL_EXPORT void JxlDecoderRewind(JxlDecoder *dec)
JXL_DEPRECATED JXL_EXPORT JxlDecoderStatus JxlDecoderDefaultPixelFormat(const JxlDecoder *dec, JxlPixelFormat *format)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetMultithreadedImageOutCallback(JxlDecoder *dec, const JxlPixelFormat *format, JxlImageOutInitCallback init_callback, JxlImageOutRunCallback run_callback, JxlImageOutDestroyCallback destroy_callback, void *init_opaque)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetDesiredIntensityTarget(JxlDecoder *dec, float desired_intensity_target)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetPreviewOutBuffer(JxlDecoder *dec, const JxlPixelFormat *format, void *buffer, size_t size)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetFrameName(const JxlDecoder *dec, char *name, size_t size)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetExtraChannelName(const JxlDecoder *dec, size_t index, char *name, size_t size)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetCoalescing(JxlDecoder *dec, JXL_BOOL coalescing)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetInput(JxlDecoder *dec, const uint8_t *data, size_t size)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetBoxSizeRaw(const JxlDecoder *dec, uint64_t *size)
JXL_EXPORT void JxlDecoderCloseInput(JxlDecoder *dec)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetFrameHeader(const JxlDecoder *dec, JxlFrameHeader *header)
JXL_EXPORT size_t JxlDecoderSizeHintBasicInfo(const JxlDecoder *dec)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetColorAsEncodedProfile(const JxlDecoder *dec, const JxlPixelFormat *unused_format, JxlColorProfileTarget target, JxlColorEncoding *color_encoding)
JXL_DEPRECATED JXL_EXPORT JxlDecoderStatus JxlDecoderDCOutBufferSize(const JxlDecoder *dec, const JxlPixelFormat *format, size_t *size)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetImageOutBuffer(JxlDecoder *dec, const JxlPixelFormat *format, void *buffer, size_t size)
JXL_EXPORT size_t JxlDecoderGetIntendedDownsamplingRatio(JxlDecoder *dec)
JXL_EXPORT JxlDecoderStatus JxlDecoderImageOutBufferSize(const JxlDecoder *dec, const JxlPixelFormat *format, size_t *size)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetICCProfileSize(const JxlDecoder *dec, const JxlPixelFormat *unused_format, JxlColorProfileTarget target, size_t *size)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetExtraChannelInfo(const JxlDecoder *dec, size_t index, JxlExtraChannelInfo *info)
JXL_EXPORT JxlDecoderStatus JxlDecoderSkipCurrentFrame(JxlDecoder *dec)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetDecompressBoxes(JxlDecoder *dec, JXL_BOOL decompress)
JXL_EXPORT JxlDecoder * JxlDecoderCreate(const JxlMemoryManager *memory_manager)
JXL_EXPORT size_t JxlDecoderReleaseJPEGBuffer(JxlDecoder *dec)
JxlColorProfileTarget
Definition: decode.h:721
JXL_EXPORT JxlDecoderStatus JxlDecoderExtraChannelBufferSize(const JxlDecoder *dec, const JxlPixelFormat *format, size_t *size, uint32_t index)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetBoxBuffer(JxlDecoder *dec, uint8_t *data, size_t size)
JxlSignature
Definition: decode.h:43
JXL_EXPORT void JxlDecoderSetCms(JxlDecoder *dec, JxlCmsInterface cms)
JXL_EXPORT JxlDecoderStatus JxlDecoderSubscribeEvents(JxlDecoder *dec, int events_wanted)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetParallelRunner(JxlDecoder *dec, JxlParallelRunner parallel_runner, void *parallel_runner_opaque)
JXL_EXPORT JxlDecoderStatus JxlDecoderProcessInput(JxlDecoder *dec)
void *(* JxlImageOutInitCallback)(void *init_opaque, size_t num_threads, size_t num_pixels_per_thread)
Definition: decode.h:1101
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:1120
JXL_EXPORT JxlDecoderStatus JxlDecoderSetPreferredColorProfile(JxlDecoder *dec, const JxlColorEncoding *color_encoding)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetImageOutCallback(JxlDecoder *dec, const JxlPixelFormat *format, JxlImageOutCallback callback, void *opaque)
void(* JxlImageOutCallback)(void *opaque, size_t x, size_t y, size_t num_pixels, const void *pixels)
Definition: decode.h:1086
JXL_EXPORT JxlDecoderStatus JxlDecoderGetBoxType(JxlDecoder *dec, JxlBoxType type, JXL_BOOL decompressed)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetBasicInfo(const JxlDecoder *dec, JxlBasicInfo *info)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetUnpremultiplyAlpha(JxlDecoder *dec, JXL_BOOL unpremul_alpha)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetColorAsICCProfile(const JxlDecoder *dec, const JxlPixelFormat *unused_format, JxlColorProfileTarget target, uint8_t *icc_profile, size_t size)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetKeepOrientation(JxlDecoder *dec, JXL_BOOL skip_reorientation)
void(* JxlImageOutDestroyCallback)(void *run_opaque)
Definition: decode.h:1131
JXL_EXPORT JxlDecoderStatus JxlDecoderFlushImage(JxlDecoder *dec)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetExtraChannelBlendInfo(const JxlDecoder *dec, size_t index, JxlBlendInfo *blend_info)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetJPEGBuffer(JxlDecoder *dec, uint8_t *data, size_t size)
JXL_DEPRECATED JXL_EXPORT JxlDecoderStatus JxlDecoderSetDCOutBuffer(JxlDecoder *dec, const JxlPixelFormat *format, void *buffer, size_t size)
JXL_EXPORT void JxlDecoderDestroy(JxlDecoder *dec)
JXL_EXPORT JxlSignature JxlSignatureCheck(const uint8_t *buf, size_t len)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetProgressiveDetail(JxlDecoder *dec, JxlProgressiveDetail detail)
JxlDecoderStatus
Definition: decode.h:123
struct JxlDecoderStruct JxlDecoder
Definition: decode.h:85
JXL_EXPORT JxlDecoderStatus JxlDecoderSetRenderSpotcolors(JxlDecoder *dec, JXL_BOOL render_spotcolors)
JXL_EXPORT void JxlDecoderReset(JxlDecoder *dec)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetExtraChannelBuffer(JxlDecoder *dec, const JxlPixelFormat *format, void *buffer, size_t size, uint32_t index)
@ JXL_COLOR_PROFILE_TARGET_DATA
Definition: decode.h:727
@ JXL_COLOR_PROFILE_TARGET_ORIGINAL
Definition: decode.h:724
@ JXL_SIG_NOT_ENOUGH_BYTES
Definition: decode.h:46
@ JXL_SIG_INVALID
Definition: decode.h:49
@ JXL_SIG_CONTAINER
Definition: decode.h:59
@ JXL_SIG_CODESTREAM
Definition: decode.h:54
@ JXL_DEC_JPEG_RECONSTRUCTION
Definition: decode.h:303
@ JXL_DEC_JPEG_NEED_MORE_OUTPUT
Definition: decode.h:195
@ JXL_DEC_BASIC_INFO
Definition: decode.h:210
@ JXL_DEC_EXTENSIONS
Definition: decode.h:220
@ JXL_DEC_FRAME_PROGRESSION
Definition: decode.h:357
@ JXL_DEC_DC_IMAGE
Definition: decode.h:276
@ JXL_DEC_ERROR
Definition: decode.h:142
@ JXL_DEC_NEED_IMAGE_OUT_BUFFER
Definition: decode.h:188
@ JXL_DEC_FULL_IMAGE
Definition: decode.h:290
@ JXL_DEC_COLOR_ENCODING
Definition: decode.h:230
@ JXL_DEC_SUCCESS
Definition: decode.h:137
@ JXL_DEC_PREVIEW_IMAGE
Definition: decode.h:240
@ JXL_DEC_BOX_NEED_MORE_OUTPUT
Definition: decode.h:201
@ JXL_DEC_BOX
Definition: decode.h:340
@ JXL_DEC_NEED_DC_OUT_BUFFER
Definition: decode.h:179
@ JXL_DEC_NEED_MORE_INPUT
Definition: decode.h:158
@ JXL_DEC_NEED_PREVIEW_OUT_BUFFER
Definition: decode.h:169
@ JXL_DEC_FRAME
Definition: decode.h:261
Abstraction functions used by JPEG XL to allocate memory.
Definition: codestream_header.h:96
Definition: types.h:139
Definition: codestream_header.h:329
Definition: cms_interface.h:209
Definition: color_encoding.h:116
Definition: codestream_header.h:264
Definition: codestream_header.h:388
Definition: memory_manager.h:51
Definition: types.h:86
Data types for the JPEG XL API, for both encoding and decoding.