LIBJXL_DOC
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
12
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> // TODO(eustas): remove before v1.0
24#include <stddef.h>
25#include <stdint.h>
26
27#ifdef __cplusplus
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 JxlDecoder 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
327
368
392JXL_EXPORT void JxlDecoderRewind(JxlDecoder* dec);
393
412JXL_EXPORT void JxlDecoderSkipFrames(JxlDecoder* dec, size_t amount);
413
427
440JXL_EXPORT JxlDecoderStatus
442 void* parallel_runner_opaque);
443
459JXL_EXPORT size_t JxlDecoderSizeHintBasicInfo(const JxlDecoder* dec);
460
474 int events_wanted);
475
507JXL_EXPORT JxlDecoderStatus
509
526JXL_EXPORT JxlDecoderStatus
528
539JXL_EXPORT JxlDecoderStatus
541
556 JXL_BOOL coalescing);
557
599
615 const uint8_t* data,
616 size_t size);
617
637JXL_EXPORT size_t JxlDecoderReleaseInput(JxlDecoder* dec);
638
657JXL_EXPORT void JxlDecoderCloseInput(JxlDecoder* dec);
658
671 JxlBasicInfo* info);
672
686 const JxlDecoder* dec, size_t index, JxlExtraChannelInfo* info);
687
703 size_t index,
704 char* name,
705 size_t size);
706
720
770 const JxlDecoder* dec, JxlColorProfileTarget target,
771 JxlColorEncoding* color_encoding);
772
796 const JxlDecoder* dec, JxlColorProfileTarget target, size_t* size);
797
814 const JxlDecoder* dec, JxlColorProfileTarget target, uint8_t* icc_profile,
815 size_t size);
816
828 JxlDecoder* dec, const JxlColorEncoding* color_encoding);
829
841 JxlDecoder* dec, float desired_intensity_target);
842
885 JxlDecoder* dec, const JxlColorEncoding* color_encoding,
886 const uint8_t* icc_data, size_t icc_size);
887
901 JxlCmsInterface cms);
902// TODO(firsching): add a function JxlDecoderSetDefaultCms() for setting a
903// default in case libjxl is build with a CMS.
904
918 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
919
939 JxlDecoder* dec, const JxlPixelFormat* format, void* buffer, size_t size);
940
954 JxlFrameHeader* header);
955
969 char* name, size_t size);
970
984 const JxlDecoder* dec, size_t index, JxlBlendInfo* blend_info);
985
1002 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size);
1003
1022 JxlDecoder* dec, const JxlPixelFormat* format, void* buffer, size_t size);
1023
1040typedef void (*JxlImageOutCallback)(void* opaque, size_t x, size_t y,
1041 size_t num_pixels, const void* pixels);
1042
1055typedef void* (*JxlImageOutInitCallback)(void* init_opaque, size_t num_threads,
1056 size_t num_pixels_per_thread);
1057
1074typedef void (*JxlImageOutRunCallback)(void* run_opaque, size_t thread_id,
1075 size_t x, size_t y, size_t num_pixels,
1076 const void* pixels);
1077
1085typedef void (*JxlImageOutDestroyCallback)(void* run_opaque);
1086
1129JXL_EXPORT JxlDecoderStatus
1131 JxlImageOutCallback callback, void* opaque);
1132
1153 JxlDecoder* dec, const JxlPixelFormat* format,
1154 JxlImageOutInitCallback init_callback, JxlImageOutRunCallback run_callback,
1155 JxlImageOutDestroyCallback destroy_callback, void* init_opaque);
1156
1173 const JxlDecoder* dec, const JxlPixelFormat* format, size_t* size,
1174 uint32_t index);
1175
1206JXL_EXPORT JxlDecoderStatus
1208 void* buffer, size_t size, uint32_t index);
1209
1229 uint8_t* data, size_t size);
1230
1248
1272 uint8_t* data, size_t size);
1273
1291
1313 JXL_BOOL decompress);
1314
1381 JxlBoxType type,
1382 JXL_BOOL decompressed);
1383
1394 uint64_t* size);
1395
1410 uint64_t* size);
1411
1423JXL_EXPORT JxlDecoderStatus
1425
1435
1453
1466JXL_EXPORT JxlDecoderStatus
1468
1469#ifdef __cplusplus
1470}
1471#endif
1472
1473#endif /* JXL_DECODE_H_ */
1474
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...
struct JxlMemoryManagerStruct JxlMemoryManager
char JxlBoxType[4]
Definition types.h:146
#define JXL_BOOL
Definition types.h:29
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)
struct JxlDecoder JxlDecoder
Definition decode.h:84
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:712
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)
JXL_EXPORT JxlDecoderStatus JxlDecoderGetBoxSizeContents(const JxlDecoder *dec, uint64_t *size)
void *(* JxlImageOutInitCallback)(void *init_opaque, size_t num_threads, size_t num_pixels_per_thread)
Definition decode.h:1055
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:1074
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:1040
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:1085
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
JxlProgressiveDetail
Definition decode.h:336
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:718
@ JXL_COLOR_PROFILE_TARGET_ORIGINAL
Definition decode.h:715
@ 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:265
@ JXL_DEC_JPEG_NEED_MORE_OUTPUT
Definition decode.h:183
@ JXL_DEC_BASIC_INFO
Definition decode.h:198
@ JXL_DEC_FRAME_PROGRESSION
Definition decode.h:320
@ JXL_DEC_BOX_COMPLETE
Definition decode.h:325
@ JXL_DEC_ERROR
Definition decode.h:141
@ JXL_DEC_NEED_IMAGE_OUT_BUFFER
Definition decode.h:176
@ JXL_DEC_FULL_IMAGE
Definition decode.h:252
@ JXL_DEC_COLOR_ENCODING
Definition decode.h:208
@ JXL_DEC_SUCCESS
Definition decode.h:136
@ JXL_DEC_PREVIEW_IMAGE
Definition decode.h:218
@ JXL_DEC_BOX_NEED_MORE_OUTPUT
Definition decode.h:189
@ 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:167
@ JXL_DEC_FRAME
Definition decode.h:239
@ kDCGroups
Definition decode.h:362
@ kDCProgressive
Definition decode.h:358
@ kFrames
Definition decode.h:340
@ kPasses
Definition decode.h:354
@ kDC
Definition decode.h:344
@ kGroups
Definition decode.h:366
@ kLastPasses
Definition decode.h:349
JxlParallelRetCode(* JxlParallelRunner)(void *runner_opaque, void *jpegxl_opaque, JxlParallelRunInit init, JxlParallelRunFunction func, uint32_t start_range, uint32_t end_range)
Definition parallel_runner.h:127
Abstraction functions used by JPEG XL to allocate memory.
Definition codestream_header.h:95
Definition types.h:133
Definition codestream_header.h:330
Definition cms_interface.h:227
Definition color_encoding.h:114
Definition codestream_header.h:265
Definition codestream_header.h:391
Definition types.h:80
Data types for the JPEG XL API, for both encoding and decoding.