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 <jxl/cms_interface.h>
18#include <jxl/color_encoding.h>
19#include <jxl/jxl_export.h>
20#include <jxl/memory_manager.h>
21#include <jxl/parallel_runner.h>
22#include <jxl/types.h>
23#include <jxl/version.h>
24#include <stddef.h>
25#include <stdint.h>
26
27#if defined(__cplusplus) || defined(c_plusplus)
28extern "C" {
29#endif
30
38JXL_EXPORT uint32_t JxlDecoderVersion(void);
39
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
322
331typedef enum {
332 // after completed kRegularFrames
333 kFrames = 0,
334 // after completed DC (1:8)
335 kDC = 1,
336 // after completed AC passes that are the last pass for their resolution
337 // target.
338 kLastPasses = 2,
339 // after completed AC passes that are not the last pass for their resolution
340 // target.
341 kPasses = 3,
342 // during DC frame when lower resolution are completed (1:32, 1:16)
343 kDCProgressive = 4,
344 // after completed groups
345 kDCGroups = 5,
346 // after completed groups
347 kGroups = 6,
349
373JXL_EXPORT void JxlDecoderRewind(JxlDecoder* dec);
374
393JXL_EXPORT void JxlDecoderSkipFrames(JxlDecoder* dec, size_t amount);
394
408
421JXL_EXPORT JxlDecoderStatus
423 void* parallel_runner_opaque);
424
440JXL_EXPORT size_t JxlDecoderSizeHintBasicInfo(const JxlDecoder* dec);
441
455 int events_wanted);
456
488JXL_EXPORT JxlDecoderStatus
490
506JXL_EXPORT JxlDecoderStatus
508
519JXL_EXPORT JxlDecoderStatus
521
536 JXL_BOOL coalescing);
537
579
595 const uint8_t* data,
596 size_t size);
597
617JXL_EXPORT size_t JxlDecoderReleaseInput(JxlDecoder* dec);
618
637JXL_EXPORT void JxlDecoderCloseInput(JxlDecoder* dec);
638
651 JxlBasicInfo* info);
652
666 const JxlDecoder* dec, size_t index, JxlExtraChannelInfo* info);
667
683 size_t index,
684 char* name,
685 size_t size);
686
700
750 const JxlDecoder* dec, JxlColorProfileTarget target,
751 JxlColorEncoding* color_encoding);
752
776 const JxlDecoder* dec, JxlColorProfileTarget target, size_t* size);
777
794 const JxlDecoder* dec, JxlColorProfileTarget target, uint8_t* icc_profile,
795 size_t size);
796
808 JxlDecoder* dec, const JxlColorEncoding* color_encoding);
809
821 JxlDecoder* dec, float desired_intensity_target);
822
865 JxlDecoder* dec, const JxlColorEncoding* color_encoding,
866 const uint8_t* icc_data, size_t icc_size);
867
881 JxlCmsInterface cms);
882// TODO(firsching): add a function JxlDecoderSetDefaultCms() for setting a
883// default in case libjxl is build with a CMS.
884
898 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
899
916 JxlDecoder* dec, const JxlPixelFormat* format, void* buffer, size_t size);
917
931 JxlFrameHeader* header);
932
946 char* name, size_t size);
947
961 const JxlDecoder* dec, size_t index, JxlBlendInfo* blend_info);
962
979 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
980
998 JxlDecoder* dec, const JxlPixelFormat* format, void* buffer, size_t size);
999
1016typedef void (*JxlImageOutCallback)(void* opaque, size_t x, size_t y,
1017 size_t num_pixels, const void* pixels);
1018
1031typedef void* (*JxlImageOutInitCallback)(void* init_opaque, size_t num_threads,
1032 size_t num_pixels_per_thread);
1033
1050typedef void (*JxlImageOutRunCallback)(void* run_opaque, size_t thread_id,
1051 size_t x, size_t y, size_t num_pixels,
1052 const void* pixels);
1053
1061typedef void (*JxlImageOutDestroyCallback)(void* run_opaque);
1062
1105JXL_EXPORT JxlDecoderStatus
1107 JxlImageOutCallback callback, void* opaque);
1108
1129 JxlDecoder* dec, const JxlPixelFormat* format,
1130 JxlImageOutInitCallback init_callback, JxlImageOutRunCallback run_callback,
1131 JxlImageOutDestroyCallback destroy_callback, void* init_opaque);
1132
1149 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size,
1150 uint32_t index);
1151
1182JXL_EXPORT JxlDecoderStatus
1184 void* buffer, size_t size, uint32_t index);
1185
1205 uint8_t* data, size_t size);
1206
1224
1248 uint8_t* data, size_t size);
1249
1267
1289 JXL_BOOL decompress);
1290
1357 JxlBoxType type,
1358 JXL_BOOL decompressed);
1359
1378 uint64_t* size);
1379
1391JXL_EXPORT JxlDecoderStatus
1393
1403
1421
1434JXL_EXPORT JxlDecoderStatus
1436
1437#if defined(__cplusplus) || defined(c_plusplus)
1438}
1439#endif
1440
1441#endif /* JXL_DECODE_H_ */
1442
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...
char JxlBoxType[4]
Definition types.h:146
#define JXL_BOOL
Definition types.h:30
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_EXPORT JxlDecoderStatus JxlDecoderSetMultithreadedImageOutCallback(JxlDecoder *dec, const JxlPixelFormat *format, JxlImageOutInitCallback init_callback, JxlImageOutRunCallback run_callback, JxlImageOutDestroyCallback destroy_callback, void *init_opaque)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetColorAsEncodedProfile(const JxlDecoder *dec, JxlColorProfileTarget target, JxlColorEncoding *color_encoding)
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 JxlDecoderStatus JxlDecoderGetICCProfileSize(const JxlDecoder *dec, JxlColorProfileTarget target, size_t *size)
JXL_EXPORT size_t JxlDecoderSizeHintBasicInfo(const JxlDecoder *dec)
JXL_EXPORT JxlDecoderStatus JxlDecoderSetCms(JxlDecoder *dec, JxlCmsInterface cms)
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 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)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetColorAsICCProfile(const JxlDecoder *dec, JxlColorProfileTarget target, uint8_t *icc_profile, size_t size)
JxlColorProfileTarget
Definition decode.h:692
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:1031
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:1050
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:1016
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 JxlDecoderSetKeepOrientation(JxlDecoder *dec, JXL_BOOL skip_reorientation)
void(* JxlImageOutDestroyCallback)(void *run_opaque)
Definition decode.h:1061
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_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
JxlProgressiveDetail
Definition decode.h:331
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:698
@ JXL_COLOR_PROFILE_TARGET_ORIGINAL
Definition decode.h:695
@ 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:266
@ JXL_DEC_JPEG_NEED_MORE_OUTPUT
Definition decode.h:184
@ JXL_DEC_BASIC_INFO
Definition decode.h:199
@ JXL_DEC_FRAME_PROGRESSION
Definition decode.h:320
@ JXL_DEC_ERROR
Definition decode.h:141
@ JXL_DEC_NEED_IMAGE_OUT_BUFFER
Definition decode.h:177
@ JXL_DEC_FULL_IMAGE
Definition decode.h:253
@ JXL_DEC_COLOR_ENCODING
Definition decode.h:209
@ JXL_DEC_SUCCESS
Definition decode.h:136
@ JXL_DEC_PREVIEW_IMAGE
Definition decode.h:219
@ JXL_DEC_BOX_NEED_MORE_OUTPUT
Definition decode.h:190
@ JXL_DEC_BOX
Definition decode.h:303
@ 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:240
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
Abstraction functions used by JPEG XL to allocate memory.
Definition codestream_header.h:95
Definition types.h:133
Definition codestream_header.h:328
Definition cms_interface.h:224
Definition color_encoding.h:116
Definition codestream_header.h:263
Definition codestream_header.h:389
Definition memory_manager.h:51
Definition types.h:79
Data types for the JPEG XL API, for both encoding and decoding.