LIBJXL
Loading...
Searching...
No Matches
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
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)
28extern "C" {
29#endif
30
38JXL_EXPORT uint32_t JxlDecoderVersion(void);
39
42typedef enum {
46
49
54
60
76JXL_EXPORT JxlSignature JxlSignatureCheck(const uint8_t* buf, size_t len);
77
84typedef struct JxlDecoderStruct JxlDecoder;
85
98JXL_EXPORT JxlDecoder* JxlDecoderCreate(const JxlMemoryManager* memory_manager);
99
107JXL_EXPORT void JxlDecoderReset(JxlDecoder* dec);
108
114JXL_EXPORT void JxlDecoderDestroy(JxlDecoder* dec);
115
122typedef enum {
137
142
158
169
179
188
195
201
210
220
230
240
261
276
290
303
339 JXL_DEC_BOX = 0x4000,
340
358
382JXL_EXPORT void JxlDecoderRewind(JxlDecoder* dec);
383
402JXL_EXPORT void JxlDecoderSkipFrames(JxlDecoder* dec, size_t amount);
403
417
432JXL_EXPORT JXL_DEPRECATED JxlDecoderStatus
434
447JXL_EXPORT JxlDecoderStatus
449 void* parallel_runner_opaque);
450
466JXL_EXPORT size_t JxlDecoderSizeHintBasicInfo(const JxlDecoder* dec);
467
481 int events_wanted);
482
514JXL_EXPORT JxlDecoderStatus
516
532JXL_EXPORT JxlDecoderStatus
534
545JXL_EXPORT JxlDecoderStatus
547
562 JXL_BOOL coalescing);
563
607
623 const uint8_t* data,
624 size_t size);
625
645JXL_EXPORT size_t JxlDecoderReleaseInput(JxlDecoder* dec);
646
665JXL_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
720typedef 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
959 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
960
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
1035typedef void (*JxlImageOutCallback)(void* opaque, size_t x, size_t y,
1036 size_t num_pixels, const void* pixels);
1037
1050typedef void* (*JxlImageOutInitCallback)(void* init_opaque, size_t num_threads,
1051 size_t num_pixels_per_thread);
1052
1069typedef 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
1080typedef void (*JxlImageOutDestroyCallback)(void* run_opaque);
1081
1124JXL_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
1201JXL_EXPORT JxlDecoderStatus
1203 void* buffer, size_t size, uint32_t index);
1204
1224 uint8_t* data, size_t size);
1225
1243
1267 uint8_t* data, size_t size);
1268
1286
1308 JXL_BOOL decompress);
1309
1376 JxlBoxType type,
1377 JXL_BOOL decompressed);
1378
1397 uint64_t* size);
1398
1410JXL_EXPORT JxlDecoderStatus
1412
1422
1440
1441#if defined(__cplusplus) || defined(c_plusplus)
1442}
1443#endif
1444
1445#endif /* JXL_DECODE_H_ */
1446
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:116
#define JXL_BOOL
Definition: types.h:31
JxlProgressiveDetail
Definition: types.h:126
JXL_EXPORT size_t JxlDecoderReleaseBoxBuffer(JxlDecoder *dec)
JXL_EXPORT void JxlDecoderSkipFrames(JxlDecoder *dec, size_t amount)
JXL_EXPORT uint32_t JxlDecoderVersion(void)
JXL_EXPORT size_t JxlDecoderReleaseInput(JxlDecoder *dec)
JXL_EXPORT JXL_DEPRECATED JxlDecoderStatus JxlDecoderSetDCOutBuffer(JxlDecoder *dec, const JxlPixelFormat *format, void *buffer, size_t size)
JXL_EXPORT JxlDecoderStatus JxlDecoderPreviewOutBufferSize(const JxlDecoder *dec, const JxlPixelFormat *format, size_t *size)
JXL_EXPORT void JxlDecoderRewind(JxlDecoder *dec)
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_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:720
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:42
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:1050
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_EXPORT JxlDecoderStatus JxlDecoderSetPreferredColorProfile(JxlDecoder *dec, const JxlColorEncoding *color_encoding)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetImageOutCallback(JxlDecoder *dec, const JxlPixelFormat *format, JxlImageOutCallback callback, void *opaque)
JXL_EXPORT JXL_DEPRECATED JxlDecoderStatus JxlDecoderDCOutBufferSize(const JxlDecoder *dec, const JxlPixelFormat *format, size_t *size)
void(* JxlImageOutCallback)(void *opaque, size_t x, size_t y, size_t num_pixels, const void *pixels)
Definition: decode.h:1035
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:1080
JXL_EXPORT JxlDecoderStatus JxlDecoderFlushImage(JxlDecoder *dec)
JXL_EXPORT JXL_DEPRECATED JxlDecoderStatus JxlDecoderDefaultPixelFormat(const JxlDecoder *dec, JxlPixelFormat *format)
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_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:122
struct JxlDecoderStruct JxlDecoder
Definition: decode.h:84
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:726
@ JXL_COLOR_PROFILE_TARGET_ORIGINAL
Definition: decode.h:723
@ JXL_SIG_NOT_ENOUGH_BYTES
Definition: decode.h:45
@ JXL_SIG_INVALID
Definition: decode.h:48
@ JXL_SIG_CONTAINER
Definition: decode.h:58
@ JXL_SIG_CODESTREAM
Definition: decode.h:53
@ JXL_DEC_JPEG_RECONSTRUCTION
Definition: decode.h:302
@ JXL_DEC_JPEG_NEED_MORE_OUTPUT
Definition: decode.h:194
@ JXL_DEC_BASIC_INFO
Definition: decode.h:209
@ JXL_DEC_EXTENSIONS
Definition: decode.h:219
@ JXL_DEC_FRAME_PROGRESSION
Definition: decode.h:356
@ JXL_DEC_DC_IMAGE
Definition: decode.h:275
@ JXL_DEC_ERROR
Definition: decode.h:141
@ JXL_DEC_NEED_IMAGE_OUT_BUFFER
Definition: decode.h:187
@ JXL_DEC_FULL_IMAGE
Definition: decode.h:289
@ JXL_DEC_COLOR_ENCODING
Definition: decode.h:229
@ JXL_DEC_SUCCESS
Definition: decode.h:136
@ JXL_DEC_PREVIEW_IMAGE
Definition: decode.h:239
@ JXL_DEC_BOX_NEED_MORE_OUTPUT
Definition: decode.h:200
@ JXL_DEC_BOX
Definition: decode.h:339
@ JXL_DEC_NEED_DC_OUT_BUFFER
Definition: decode.h:178
@ JXL_DEC_NEED_MORE_INPUT
Definition: decode.h:157
@ JXL_DEC_NEED_PREVIEW_OUT_BUFFER
Definition: decode.h:168
@ JXL_DEC_FRAME
Definition: decode.h:260
Abstraction functions used by JPEG XL to allocate memory.
Definition: codestream_header.h:105
Definition: codestream_header.h:338
Definition: color_encoding.h:116
Definition: codestream_header.h:273
Definition: codestream_header.h:397
Definition: memory_manager.h:51
Definition: types.h:87
Data types for the JPEG XL API, for both encoding and decoding.