LIBJXL
Loading...
Searching...
No Matches
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"
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)
24extern "C" {
25#endif
26
34JXL_EXPORT uint32_t JxlEncoderVersion(void);
35
42typedef struct JxlEncoderStruct JxlEncoder;
43
52typedef struct JxlEncoderFrameSettingsStruct JxlEncoderFrameSettings;
53
57
83
125
132typedef 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
368JXL_EXPORT JxlEncoder* JxlEncoderCreate(const JxlMemoryManager* memory_manager);
369
377JXL_EXPORT void JxlEncoderReset(JxlEncoder* enc);
378
384JXL_EXPORT void JxlEncoderDestroy(JxlEncoder* enc);
385
395JXL_EXPORT void JxlEncoderSetCms(JxlEncoder* enc, JxlCmsInterface cms);
396
409JXL_EXPORT JxlEncoderStatus
411 void* parallel_runner_opaque);
412
421
453 uint8_t** next_out,
454 size_t* avail_out);
455
489JXL_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
572JXL_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
774JXL_EXPORT void JxlEncoderCloseBoxes(JxlEncoder* enc);
775
788JXL_EXPORT void JxlEncoderCloseFrames(JxlEncoder* enc);
789
804JXL_EXPORT void JxlEncoderCloseInput(JxlEncoder* enc);
805
819JXL_EXPORT JxlEncoderStatus
821
836 const uint8_t* icc_profile,
837 size_t size);
838
849
860JXL_EXPORT void JxlEncoderInitFrameHeader(JxlFrameHeader* frame_header);
861
869JXL_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
950 int64_t value);
951
968 float value);
969
989 JXL_BOOL use_container);
990
1005JXL_EXPORT JxlEncoderStatus
1007
1043 int level);
1044
1065
1085 JxlEncoderFrameSettings* frame_settings, JXL_BOOL lossless);
1086
1089JXL_EXPORT JxlEncoderStatus
1091
1102JXL_DEPRECATED JXL_EXPORT JxlEncoderStatus
1104
1116 JxlEncoderFrameSettings* frame_settings, int tier);
1117
1133 JxlEncoderFrameSettings* frame_settings, float distance);
1134
1137JXL_DEPRECATED JXL_EXPORT JxlEncoderStatus
1139
1156 JxlEncoder* enc, const JxlEncoderFrameSettings* source);
1157
1162
1169JXL_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)
JXL_DEPRECATED JXL_EXPORT JxlEncoderFrameSettings * JxlEncoderOptionsCreate(JxlEncoder *, const JxlEncoderFrameSettings *)
struct JxlEncoderStruct JxlEncoder
Definition encode.h:42
JXL_EXPORT JxlEncoder * JxlEncoderCreate(const JxlMemoryManager *memory_manager)
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 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 JxlEncoderFrameSettings * JxlEncoderFrameSettingsCreate(JxlEncoder *enc, const JxlEncoderFrameSettings *source)
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_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