LIBJXL
encode.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_ENCODE_H_
14 #define JXL_ENCODE_H_
15 
16 #include "jxl/cms_interface.h"
17 #include "jxl/codestream_header.h"
18 #include "jxl/jxl_export.h"
19 #include "jxl/memory_manager.h"
20 #include "jxl/parallel_runner.h"
21 #include "jxl/version.h"
22 
23 #if defined(__cplusplus) || defined(c_plusplus)
24 extern "C" {
25 #endif
26 
34 JXL_EXPORT uint32_t JxlEncoderVersion(void);
35 
42 typedef struct JxlEncoderStruct JxlEncoder;
43 
52 typedef struct JxlEncoderFrameSettingsStruct JxlEncoderFrameSettings;
53 
57 
61 typedef enum {
66 
70 
74 
81 
83 
89 typedef enum {
93 
97 
102 
107 
111 
117 
123 
125 
132 typedef enum {
139 
145 
153 
160 
171 
178 
184 
189 
194 
199 
204 
210 
215 
221 
227 
232 
237 
243 
249 
255 
261 
267 
272 
277 
284 
293 
297 
304 
310 
318 
323 
334 
341 
348 
353 
355 
368 JXL_EXPORT JxlEncoder* JxlEncoderCreate(const JxlMemoryManager* memory_manager);
369 
377 JXL_EXPORT void JxlEncoderReset(JxlEncoder* enc);
378 
384 JXL_EXPORT void JxlEncoderDestroy(JxlEncoder* enc);
385 
395 JXL_EXPORT void JxlEncoderSetCms(JxlEncoder* enc, JxlCmsInterface cms);
396 
409 JXL_EXPORT JxlEncoderStatus
411  void* parallel_runner_opaque);
412 
421 
453  uint8_t** next_out,
454  size_t* avail_out);
455 
489 JXL_EXPORT JxlEncoderStatus
491  const JxlFrameHeader* frame_header);
492 
505  JxlEncoderFrameSettings* frame_settings, size_t index,
506  const JxlBlendInfo* blend_info);
507 
528  JxlEncoderFrameSettings* frame_settings, const char* frame_name);
529 
544  JxlEncoderFrameSettings* frame_settings, const JxlBitDepth* bit_depth);
545 
572 JXL_EXPORT JxlEncoderStatus
574  const uint8_t* buffer, size_t size);
575 
641  const JxlEncoderFrameSettings* frame_settings,
642  const JxlPixelFormat* pixel_format, const void* buffer, size_t size);
643 
668  const JxlEncoderFrameSettings* frame_settings,
669  const JxlPixelFormat* pixel_format, const void* buffer, size_t size,
670  uint32_t index);
671 
741  const JxlBoxType type,
742  const uint8_t* contents,
743  size_t size,
744  JXL_BOOL compress_box);
745 
758 
774 JXL_EXPORT void JxlEncoderCloseBoxes(JxlEncoder* enc);
775 
788 JXL_EXPORT void JxlEncoderCloseFrames(JxlEncoder* enc);
789 
804 JXL_EXPORT void JxlEncoderCloseInput(JxlEncoder* enc);
805 
819 JXL_EXPORT JxlEncoderStatus
821 
836  const uint8_t* icc_profile,
837  size_t size);
838 
848 JXL_EXPORT void JxlEncoderInitBasicInfo(JxlBasicInfo* info);
849 
860 JXL_EXPORT void JxlEncoderInitFrameHeader(JxlFrameHeader* frame_header);
861 
869 JXL_EXPORT void JxlEncoderInitBlendInfo(JxlBlendInfo* blend_info);
870 
887  const JxlBasicInfo* info);
888 
900  JxlExtraChannelInfo* info);
901 
913  JxlEncoder* enc, size_t index, const JxlExtraChannelInfo* info);
914 
930  size_t index,
931  const char* name,
932  size_t size);
933 
949  JxlEncoderFrameSettings* frame_settings, JxlEncoderFrameSettingId option,
950  int64_t value);
951 
967  JxlEncoderFrameSettings* frame_settings, JxlEncoderFrameSettingId option,
968  float value);
969 
989  JXL_BOOL use_container);
990 
1005 JXL_EXPORT JxlEncoderStatus
1007 
1043  int level);
1044 
1065 
1085  JxlEncoderFrameSettings* frame_settings, JXL_BOOL lossless);
1086 
1089 JXL_EXPORT JxlEncoderStatus
1091 
1102 JXL_DEPRECATED JXL_EXPORT JxlEncoderStatus
1104 
1116  JxlEncoderFrameSettings* frame_settings, int tier);
1117 
1133  JxlEncoderFrameSettings* frame_settings, float distance);
1134 
1137 JXL_DEPRECATED JXL_EXPORT JxlEncoderStatus
1139 
1156  JxlEncoder* enc, const JxlEncoderFrameSettings* source);
1157 
1162 
1169 JXL_EXPORT void JxlColorEncodingSetToSRGB(JxlColorEncoding* color_encoding,
1170  JXL_BOOL is_gray);
1171 
1179  JxlColorEncoding* color_encoding, JXL_BOOL is_gray);
1180 
1190 
1191 #if defined(__cplusplus) || defined(c_plusplus)
1192 }
1193 #endif
1194 
1195 #endif /* JXL_ENCODE_H_ */
1196 
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,...
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
JxlExtraChannelType
Definition: codestream_header.h:45
#define JXL_BOOL
Definition: types.h:31
JXL_EXPORT int JxlEncoderGetRequiredCodestreamLevel(const JxlEncoder *enc)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetCodestreamLevel(JxlEncoder *enc, int level)
JXL_EXPORT JxlEncoderStatus JxlEncoderAddJPEGFrame(const JxlEncoderFrameSettings *frame_settings, const uint8_t *buffer, size_t size)
JXL_EXPORT void JxlEncoderInitBlendInfo(JxlBlendInfo *blend_info)
JXL_EXPORT void JxlEncoderCloseInput(JxlEncoder *enc)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetParallelRunner(JxlEncoder *enc, JxlParallelRunner parallel_runner, void *parallel_runner_opaque)
JxlEncoderFrameSettings JxlEncoderOptions
Definition: encode.h:56
JXL_EXPORT JxlEncoderStatus JxlEncoderFrameSettingsSetOption(JxlEncoderFrameSettings *frame_settings, JxlEncoderFrameSettingId option, int64_t value)
struct JxlEncoderStruct JxlEncoder
Definition: encode.h:42
JXL_EXPORT JxlEncoderStatus JxlEncoderSetExtraChannelBuffer(const JxlEncoderFrameSettings *frame_settings, const JxlPixelFormat *pixel_format, const void *buffer, size_t size, uint32_t index)
JXL_EXPORT JxlEncoderStatus JxlEncoderProcessOutput(JxlEncoder *enc, uint8_t **next_out, size_t *avail_out)
JXL_EXPORT JxlEncoderStatus JxlEncoderUseContainer(JxlEncoder *enc, JXL_BOOL use_container)
JXL_EXPORT void JxlColorEncodingSetToSRGB(JxlColorEncoding *color_encoding, JXL_BOOL is_gray)
JXL_EXPORT void JxlEncoderSetCms(JxlEncoder *enc, JxlCmsInterface cms)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetFrameBitDepth(JxlEncoderFrameSettings *frame_settings, const JxlBitDepth *bit_depth)
JXL_EXPORT void JxlEncoderInitFrameHeader(JxlFrameHeader *frame_header)
JXL_DEPRECATED JXL_EXPORT JxlEncoderStatus JxlEncoderOptionsSetDistance(JxlEncoderFrameSettings *, float)
JXL_EXPORT void JxlEncoderReset(JxlEncoder *enc)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetFrameLossless(JxlEncoderFrameSettings *frame_settings, JXL_BOOL lossless)
JXL_EXPORT JxlEncoderStatus JxlEncoderFrameSettingsSetFloatOption(JxlEncoderFrameSettings *frame_settings, JxlEncoderFrameSettingId option, float value)
JXL_EXPORT JxlEncoderFrameSettings * JxlEncoderFrameSettingsCreate(JxlEncoder *enc, const JxlEncoderFrameSettings *source)
JXL_EXPORT JxlEncoderStatus JxlEncoderUseBoxes(JxlEncoder *enc)
JXL_EXPORT void JxlEncoderInitBasicInfo(JxlBasicInfo *info)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetBasicInfo(JxlEncoder *enc, const JxlBasicInfo *info)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetColorEncoding(JxlEncoder *enc, const JxlColorEncoding *color)
JXL_EXPORT JxlEncoderStatus JxlEncoderOptionsSetLossless(JxlEncoderFrameSettings *, JXL_BOOL)
JXL_DEPRECATED JXL_EXPORT JxlEncoderStatus JxlEncoderOptionsSetEffort(JxlEncoderFrameSettings *frame_settings, int effort)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetExtraChannelBlendInfo(JxlEncoderFrameSettings *frame_settings, size_t index, const JxlBlendInfo *blend_info)
JXL_EXPORT void JxlEncoderCloseBoxes(JxlEncoder *enc)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetFrameDistance(JxlEncoderFrameSettings *frame_settings, float distance)
JxlEncoderStatus
Definition: encode.h:61
JXL_EXPORT void JxlEncoderAllowExpertOptions(JxlEncoder *enc)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetFrameHeader(JxlEncoderFrameSettings *frame_settings, const JxlFrameHeader *frame_header)
JXL_EXPORT void JxlColorEncodingSetToLinearSRGB(JxlColorEncoding *color_encoding, JXL_BOOL is_gray)
JXL_DEPRECATED JXL_EXPORT JxlEncoderStatus JxlEncoderOptionsSetDecodingSpeed(JxlEncoderFrameSettings *frame_settings, int tier)
JXL_EXPORT void JxlEncoderInitExtraChannelInfo(JxlExtraChannelType type, JxlExtraChannelInfo *info)
JXL_EXPORT void JxlEncoderCloseFrames(JxlEncoder *enc)
JXL_EXPORT JxlEncoderStatus JxlEncoderAddImageFrame(const JxlEncoderFrameSettings *frame_settings, const JxlPixelFormat *pixel_format, const void *buffer, size_t size)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetICCProfile(JxlEncoder *enc, const uint8_t *icc_profile, size_t size)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetFrameName(JxlEncoderFrameSettings *frame_settings, const char *frame_name)
JXL_EXPORT uint32_t JxlEncoderVersion(void)
JXL_EXPORT JxlEncoder * JxlEncoderCreate(const JxlMemoryManager *memory_manager)
JXL_EXPORT JxlEncoderError JxlEncoderGetError(JxlEncoder *enc)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetExtraChannelName(JxlEncoder *enc, size_t index, const char *name, size_t size)
struct JxlEncoderFrameSettingsStruct JxlEncoderFrameSettings
Definition: encode.h:52
JXL_EXPORT JxlEncoderStatus JxlEncoderAddBox(JxlEncoder *enc, const JxlBoxType type, const uint8_t *contents, size_t size, JXL_BOOL compress_box)
JxlEncoderError
Definition: encode.h:89
JxlEncoderFrameSettingId
Definition: encode.h:132
JXL_EXPORT void JxlEncoderDestroy(JxlEncoder *enc)
JXL_DEPRECATED JXL_EXPORT JxlEncoderFrameSettings * JxlEncoderOptionsCreate(JxlEncoder *, const JxlEncoderFrameSettings *)
JXL_EXPORT JxlEncoderStatus JxlEncoderSetExtraChannelInfo(JxlEncoder *enc, size_t index, const JxlExtraChannelInfo *info)
JXL_EXPORT JxlEncoderStatus JxlEncoderStoreJPEGMetadata(JxlEncoder *enc, JXL_BOOL store_jpeg_metadata)
@ JXL_ENC_ERROR
Definition: encode.h:69
@ JXL_ENC_NEED_MORE_OUTPUT
Definition: encode.h:73
@ JXL_ENC_NOT_SUPPORTED
Definition: encode.h:80
@ JXL_ENC_SUCCESS
Definition: encode.h:65
@ JXL_ENC_ERR_NOT_SUPPORTED
Definition: encode.h:116
@ JXL_ENC_ERR_JBRD
Definition: encode.h:106
@ JXL_ENC_ERR_API_USAGE
Definition: encode.h:122
@ JXL_ENC_ERR_OOM
Definition: encode.h:101
@ JXL_ENC_ERR_OK
Definition: encode.h:92
@ JXL_ENC_ERR_GENERIC
Definition: encode.h:96
@ JXL_ENC_ERR_BAD_INPUT
Definition: encode.h:110
@ JXL_ENC_FRAME_SETTING_DECODING_SPEED
Definition: encode.h:144
@ JXL_ENC_FRAME_SETTING_JPEG_COMPRESS_BOXES
Definition: encode.h:347
@ JXL_ENC_FRAME_SETTING_MODULAR_GROUP_SIZE
Definition: encode.h:296
@ JXL_ENC_FRAME_SETTING_PROGRESSIVE_DC
Definition: encode.h:254
@ JXL_ENC_FRAME_SETTING_EXTRA_CHANNEL_RESAMPLING
Definition: encode.h:159
@ JXL_ENC_FRAME_SETTING_GROUP_ORDER_CENTER_X
Definition: encode.h:226
@ JXL_ENC_FRAME_SETTING_NOISE
Definition: encode.h:183
@ JXL_ENC_FRAME_SETTING_ALREADY_DOWNSAMPLED
Definition: encode.h:170
@ JXL_ENC_FRAME_SETTING_RESPONSIVE
Definition: encode.h:236
@ JXL_ENC_FRAME_SETTING_JPEG_RECON_CFL
Definition: encode.h:322
@ JXL_ENC_FRAME_SETTING_PATCHES
Definition: encode.h:193
@ JXL_ENC_FRAME_SETTING_GROUP_ORDER
Definition: encode.h:220
@ JXL_ENC_FRAME_SETTING_EPF
Definition: encode.h:198
@ JXL_ENC_FRAME_SETTING_CHANNEL_COLORS_GLOBAL_PERCENT
Definition: encode.h:260
@ JXL_ENC_FRAME_SETTING_RESAMPLING
Definition: encode.h:152
@ JXL_ENC_FRAME_SETTING_DOTS
Definition: encode.h:188
@ JXL_ENC_FRAME_SETTING_COLOR_TRANSFORM
Definition: encode.h:283
@ JXL_ENC_FRAME_SETTING_EFFORT
Definition: encode.h:138
@ JXL_ENC_FRAME_SETTING_MODULAR
Definition: encode.h:209
@ JXL_ENC_FRAME_SETTING_MODULAR_COLOR_SPACE
Definition: encode.h:292
@ JXL_ENC_FRAME_SETTING_KEEP_INVISIBLE
Definition: encode.h:214
@ JXL_ENC_FRAME_SETTING_PHOTON_NOISE
Definition: encode.h:177
@ JXL_ENC_FRAME_SETTING_BROTLI_EFFORT
Definition: encode.h:340
@ JXL_ENC_FRAME_SETTING_GROUP_ORDER_CENTER_Y
Definition: encode.h:231
@ JXL_ENC_FRAME_SETTING_GABORISH
Definition: encode.h:203
@ JXL_ENC_FRAME_SETTING_QPROGRESSIVE_AC
Definition: encode.h:248
@ JXL_ENC_FRAME_SETTING_MODULAR_NB_PREV_CHANNELS
Definition: encode.h:317
@ JXL_ENC_FRAME_SETTING_FILL_ENUM
Definition: encode.h:352
@ JXL_ENC_FRAME_SETTING_PROGRESSIVE_AC
Definition: encode.h:242
@ JXL_ENC_FRAME_SETTING_MODULAR_MA_TREE_LEARNING_PERCENT
Definition: encode.h:309
@ JXL_ENC_FRAME_SETTING_LOSSY_PALETTE
Definition: encode.h:276
@ JXL_ENC_FRAME_SETTING_MODULAR_PREDICTOR
Definition: encode.h:303
@ JXL_ENC_FRAME_SETTING_PALETTE_COLORS
Definition: encode.h:271
@ JXL_ENC_FRAME_SETTING_CHANNEL_COLORS_GROUP_PERCENT
Definition: encode.h:266
@ JXL_ENC_FRAME_INDEX_BOX
Definition: encode.h:333
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