36#include <libheif/heif_version.h>
56#if defined(_MSC_VER) && !defined(LIBHEIF_STATIC_BUILD)
58#define LIBHEIF_API __declspec(dllexport)
60#define LIBHEIF_API __declspec(dllimport)
62#elif defined(HAVE_VISIBILITY) && HAVE_VISIBILITY
64#define LIBHEIF_API __attribute__((__visibility__("default")))
72#define heif_fourcc(a, b, c, d) ((uint32_t)((a<<24) | (b<<16) | (c<<8) | d))
92#define LIBHEIF_MAKE_VERSION(h, m, l) ((h) << 24 | (m) << 16 | (l) << 8)
93#define LIBHEIF_HAVE_VERSION(h, m, l) (LIBHEIF_NUMERIC_VERSION >= LIBHEIF_MAKE_VERSION(h, m, l))
96struct heif_image_handle;
460#define heif_chroma_interleaved_24bit heif_chroma_interleaved_RGB
461#define heif_chroma_interleaved_32bit heif_chroma_interleaved_RGBA
567 int* out_nPluginsLoaded,
568 int output_array_size);
651#define heif_brand2_heic heif_fourcc('h','e','i','c')
660#define heif_brand2_heix heif_fourcc('h','e','i','x')
669#define heif_brand2_hevc heif_fourcc('h','e','v','c')
678#define heif_brand2_hevx heif_fourcc('h','e','v','x')
687#define heif_brand2_heim heif_fourcc('h','e','i','m')
697#define heif_brand2_heis heif_fourcc('h','e','i','s')
706#define heif_brand2_hevm heif_fourcc('h','e','v','m')
716#define heif_brand2_hevs heif_fourcc('h','e','v','s')
723#define heif_brand2_avif heif_fourcc('a','v','i','f')
730#define heif_brand2_avis heif_fourcc('a','v','i','s')
739#define heif_brand2_mif1 heif_fourcc('m','i','f','1')
750#define heif_brand2_mif2 heif_fourcc('m','i','f','2')
759#define heif_brand2_msf1 heif_fourcc('m','s','f','1')
766#define heif_brand2_vvic heif_fourcc('v','v','i','c')
773#define heif_brand2_vvis heif_fourcc('v','v','i','s')
780#define heif_brand2_evbi heif_fourcc('e','v','b','i')
787#define heif_brand2_evmi heif_fourcc('e','v','m','i')
794#define heif_brand2_evbs heif_fourcc('e','v','b','s')
801#define heif_brand2_evms heif_fourcc('e','v','m','s')
808#define heif_brand2_jpeg heif_fourcc('j','p','e','g')
815#define heif_brand2_jpgs heif_fourcc('j','p','g','s')
822#define heif_brand2_j2ki heif_fourcc('j','2','k','i')
829#define heif_brand2_j2is heif_fourcc('j','2','i','s')
838#define heif_brand2_miaf heif_fourcc('m','i','a','f')
847#define heif_brand2_1pic heif_fourcc('1','p','i','c')
915struct heif_reading_options;
957 const struct heif_reading_options*);
964 const void* mem,
size_t size,
965 const struct heif_reading_options*);
971 const void* mem,
size_t size,
972 const struct heif_reading_options*);
978 const struct heif_reading_options*);
1003 struct heif_image_handle**);
1009 struct heif_image_handle**);
1117 struct heif_image_handle** out_depth_handle);
1183 struct heif_image_handle** out_thumbnail_handle);
1188#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_ALPHA (1UL<<1)
1189#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_DEPTH (2UL<<1)
1204 const char** out_type);
1208 const char** out_type);
1213 const char** out_type);
1219 struct heif_image_handle** out_auxiliary_handle);
1228 const char* type_filter);
1234 const char* type_filter,
1433struct heif_camera_extrinsic_matrix;
1440 struct heif_camera_extrinsic_matrix** out_matrix);
1447 double* out_matrix_row_major);
1564 struct heif_image** out_img,
1621 int left,
int right,
int top,
int bottom);
1660struct heif_scaling_options;
1665 struct heif_image** output,
1666 int width,
int height,
1667 const struct heif_scaling_options* options);
1673 const char* profile_type_fourcc_string,
1674 const void* profile_data,
1675 const size_t profile_size);
1694 int first_warning_idx,
1696 int max_output_buffer_entries);
1775 const char* filename);
1805struct heif_encoder_descriptor;
1810struct heif_encoder_parameter;
1812struct heif_decoder_descriptor;
1821 const struct heif_decoder_descriptor** out_decoders,
1844 const char* name_filter,
1845 const struct heif_encoder_descriptor** out_encoders,
1856 const char* name_filter,
1857 const struct heif_encoder_descriptor** out_encoders,
1883 const struct heif_encoder_descriptor*,
1884 struct heif_encoder** out_encoder);
1903 struct heif_encoder**);
1961 int* have_minimum_maximum,
1962 int* minimum,
int* maximum);
1968 int* have_minimum,
int* have_maximum,
1969 int* minimum,
int* maximum,
1970 int* num_valid_values,
1971 const int** out_integer_array);
1975 const char*
const** out_stringarray);
1980 const char* parameter_name,
1985 const char* parameter_name,
1991 const char* parameter_name,
1992 int* have_minimum_maximum,
1993 int* minimum,
int* maximum);
1997 const char* parameter_name,
2002 const char* parameter_name,
2007 const char* parameter_name,
2012 const char* parameter_name,
2013 char* value,
int value_size);
2018 const char* parameter_name,
2019 const char*
const** out_stringarray);
2023 const char* parameter_name,
2024 int* have_minimum,
int* have_maximum,
2025 int* minimum,
int* maximum,
2026 int* num_valid_values,
2027 const int** out_integer_array);
2040 const char* parameter_name,
2047 const char* parameter_name,
2048 char* value_ptr,
int value_size);
2053 const char* parameter_name);
2124 const struct heif_image* image,
2125 struct heif_encoder* encoder,
2127 struct heif_image_handle** out_image_handle);
2143 struct heif_image** tiles,
2146 struct heif_encoder* encoder,
2148 struct heif_image_handle** out_image_handle);
2152 struct heif_image_handle* image_handle);
2163 const struct heif_image* image,
2164 const struct heif_image_handle* master_image_handle,
2165 struct heif_encoder* encoder,
2168 struct heif_image_handle** out_thumb_image_handle);
2183 const struct heif_image_handle* master_image,
2184 const struct heif_image_handle* thumbnail_image);
2189 const struct heif_image_handle* image_handle,
2190 const void* data,
int size);
2195 const struct heif_image_handle* image_handle,
2196 const void* data,
int size);
2201 const struct heif_image_handle* image_handle,
2202 const void* data,
int size,
2211 const struct heif_image_handle* image_handle,
2212 const void* data,
int size,
2213 const char* item_type,
const char* content_type);
2219 const struct heif_image_handle* image_handle,
2220 const void* data,
int size,
2221 const char* item_uri_type,
2243 struct heif_image** out_image);
2276 int width,
int height,
int bit_depth);
2281 int is_premultiplied_alpha);
2298struct heif_decoder_plugin;
2299struct heif_encoder_plugin;
struct heif_error heif_encoder_set_parameter_boolean(struct heif_encoder *, const char *parameter_name, int value)
void heif_image_handle_release_auxiliary_type(const struct heif_image_handle *handle, const char **out_type)
int heif_image_handle_has_alpha_channel(const struct heif_image_handle *)
struct heif_error heif_image_create(int width, int height, enum heif_colorspace colorspace, enum heif_chroma chroma, struct heif_image **out_image)
Create a new image of the specified resolution and colorspace.
struct heif_error heif_image_handle_get_metadata(const struct heif_image_handle *handle, heif_item_id metadata_id, void *out_data)
int heif_context_get_number_of_top_level_images(struct heif_context *ctx)
void heif_deinit(void)
Deinitialise and clean up library.
heif_plugin_type
Definition heif.h:548
@ heif_plugin_type_decoder
Definition heif.h:550
@ heif_plugin_type_encoder
Definition heif.h:549
int heif_image_handle_get_height(const struct heif_image_handle *handle)
void heif_image_handle_release(const struct heif_image_handle *)
int heif_encoder_descriptor_supports_lossy_compression(const struct heif_encoder_descriptor *)
uint32_t heif_brand2
Definition heif.h:642
enum heif_colorspace heif_image_get_colorspace(const struct heif_image *)
struct heif_error heif_encoder_get_parameter(struct heif_encoder *, const char *parameter_name, char *value_ptr, int value_size)
struct heif_error heif_encoder_get_parameter_string(struct heif_encoder *, const char *parameter_name, char *value, int value_size)
heif_channel
Definition heif.h:489
@ heif_channel_interleaved
Definition heif.h:497
@ heif_channel_G
Definition heif.h:494
@ heif_channel_Y
Definition heif.h:490
@ heif_channel_Cb
Definition heif.h:491
@ heif_channel_B
Definition heif.h:495
@ heif_channel_R
Definition heif.h:493
@ heif_channel_Alpha
Definition heif.h:496
@ heif_channel_Cr
Definition heif.h:492
heif_item_id heif_image_handle_get_item_id(const struct heif_image_handle *handle)
enum heif_compression_format heif_encoder_descriptor_get_compression_format(const struct heif_encoder_descriptor *)
int heif_image_handle_has_camera_intrinsic_matrix(const struct heif_image_handle *handle)
heif_colorspace
Definition heif.h:465
@ heif_colorspace_monochrome
Definition heif.h:485
@ heif_colorspace_undefined
Definition heif.h:466
@ heif_colorspace_YCbCr
Definition heif.h:472
@ heif_colorspace_RGB
Definition heif.h:482
struct heif_error heif_context_read_from_reader(struct heif_context *, const struct heif_reader *reader, void *userdata, const struct heif_reading_options *)
void heif_image_set_mastering_display_colour_volume(const struct heif_image *, const struct heif_mastering_display_colour_volume *in)
heif_chroma
Definition heif.h:445
@ heif_chroma_interleaved_RGB
Definition heif.h:451
@ heif_chroma_444
Definition heif.h:450
@ heif_chroma_monochrome
Definition heif.h:447
@ heif_chroma_interleaved_RGBA
Definition heif.h:452
@ heif_chroma_interleaved_RRGGBBAA_BE
Definition heif.h:454
@ heif_chroma_422
Definition heif.h:449
@ heif_chroma_interleaved_RRGGBB_BE
Definition heif.h:453
@ heif_chroma_undefined
Definition heif.h:446
@ heif_chroma_interleaved_RRGGBB_LE
Definition heif.h:455
@ heif_chroma_interleaved_RRGGBBAA_LE
Definition heif.h:456
@ heif_chroma_420
Definition heif.h:448
int heif_image_handle_get_width(const struct heif_image_handle *handle)
heif_brand
Definition heif.h:615
@ heif_heic
Definition heif.h:617
@ heif_hevs
Definition heif.h:623
@ heif_mif1
Definition heif.h:624
@ heif_j2is
Definition heif.h:633
@ heif_heix
Definition heif.h:618
@ heif_hevc
Definition heif.h:619
@ heif_avis
Definition heif.h:627
@ heif_evbs
Definition heif.h:631
@ heif_vvic
Definition heif.h:628
@ heif_hevx
Definition heif.h:619
@ heif_heis
Definition heif.h:621
@ heif_msf1
Definition heif.h:625
@ heif_j2ki
Definition heif.h:632
@ heif_evbi
Definition heif.h:630
@ heif_hevm
Definition heif.h:622
@ heif_unknown_brand
Definition heif.h:616
@ heif_vvis
Definition heif.h:629
@ heif_avif
Definition heif.h:626
@ heif_heim
Definition heif.h:620
int heif_image_handle_get_luma_bits_per_pixel(const struct heif_image_handle *)
void heif_context_debug_dump_boxes_to_file(struct heif_context *ctx, int fd)
struct heif_error heif_context_encode_grid(struct heif_context *ctx, struct heif_image **tiles, uint16_t rows, uint16_t columns, struct heif_encoder *encoder, const struct heif_encoding_options *input_options, struct heif_image_handle **out_image_handle)
Encodes an array of images into a grid.
struct heif_error heif_load_plugin(const char *filename, struct heif_plugin_info const **out_plugin)
void heif_context_set_max_decoding_threads(struct heif_context *ctx, int max_threads)
const char * heif_image_handle_get_metadata_type(const struct heif_image_handle *handle, heif_item_id metadata_id)
uint32_t heif_property_id
Definition heif.h:353
int heif_image_get_decoding_warnings(struct heif_image *image, int first_warning_idx, struct heif_error *out_warnings, int max_output_buffer_entries)
struct heif_error heif_encoder_parameter_get_valid_integer_values(const struct heif_encoder_parameter *, int *have_minimum, int *have_maximum, int *minimum, int *maximum, int *num_valid_values, const int **out_integer_array)
int heif_image_handle_has_depth_image(const struct heif_image_handle *)
heif_progress_step
Definition heif.h:1463
@ heif_progress_step_total
Definition heif.h:1464
@ heif_progress_step_load_tile
Definition heif.h:1465
struct heif_context * heif_context_alloc(void)
struct heif_error heif_context_add_exif_metadata(struct heif_context *, const struct heif_image_handle *image_handle, const void *data, int size)
const struct heif_encoder_parameter *const * heif_encoder_list_parameters(struct heif_encoder *)
struct heif_error heif_unload_plugin(const struct heif_plugin_info *plugin)
const char * heif_encoder_descriptor_get_name(const struct heif_encoder_descriptor *)
int heif_image_handle_get_number_of_thumbnails(const struct heif_image_handle *handle)
struct heif_error heif_decode_image(const struct heif_image_handle *in_handle, struct heif_image **out_img, enum heif_colorspace colorspace, enum heif_chroma chroma, const struct heif_decoding_options *options)
int heif_image_has_content_light_level(const struct heif_image *)
struct heif_error heif_image_crop(struct heif_image *img, int left, int right, int top, int bottom)
struct heif_error heif_image_handle_get_camera_extrinsic_matrix(const struct heif_image_handle *handle, struct heif_camera_extrinsic_matrix **out_matrix)
size_t heif_image_handle_get_metadata_size(const struct heif_image_handle *handle, heif_item_id metadata_id)
struct heif_error heif_context_encode_image(struct heif_context *, const struct heif_image *image, struct heif_encoder *encoder, const struct heif_encoding_options *options, struct heif_image_handle **out_image_handle)
enum heif_color_profile_type heif_image_get_color_profile_type(const struct heif_image *image)
struct heif_error heif_nclx_color_profile_set_matrix_coefficients(struct heif_color_profile_nclx *nclx, uint16_t matrix_coefficients)
heif_brand2 heif_read_main_brand(const uint8_t *data, int len)
struct heif_error heif_list_compatible_brands(const uint8_t *data, int len, heif_brand2 **out_brands, int *out_size)
enum heif_encoder_parameter_type heif_encoder_parameter_get_type(const struct heif_encoder_parameter *)
const uint8_t * heif_image_get_plane_readonly(const struct heif_image *, enum heif_channel channel, int *out_stride)
heif_suberror_code
Definition heif.h:141
@ heif_suberror_Encoder_encoding
Definition heif.h:321
@ heif_suberror_No_ipma_box
Definition heif.h:168
@ heif_suberror_No_av1C_box
Definition heif.h:219
@ heif_suberror_Null_pointer_argument
Definition heif.h:267
@ heif_suberror_Invalid_region_data
Definition heif.h:230
@ heif_suberror_Security_limit_exceeded
Definition heif.h:255
@ heif_suberror_Invalid_property
Definition heif.h:285
@ heif_suberror_Item_reference_cycle
Definition heif.h:288
@ heif_suberror_Unsupported_parameter
Definition heif.h:279
@ heif_suberror_No_properties_assigned_to_item
Definition heif.h:184
@ heif_suberror_No_icbr_box
Definition heif.h:245
@ heif_suberror_Plugin_is_not_loaded
Definition heif.h:330
@ heif_suberror_Unsupported_header_compression_method
Definition heif.h:306
@ heif_suberror_Unspecified
Definition heif.h:143
@ heif_suberror_No_pitm_box
Definition heif.h:164
@ heif_suberror_Encoder_initialization
Definition heif.h:320
@ heif_suberror_Unsupported_plugin_version
Definition heif.h:273
@ heif_suberror_Unsupported_color_conversion
Definition heif.h:302
@ heif_suberror_Compression_initialisation_error
Definition heif.h:259
@ heif_suberror_No_item_data
Definition heif.h:187
@ heif_suberror_Unknown_NCLX_matrix_coefficients
Definition heif.h:227
@ heif_suberror_Unknown_color_profile_type
Definition heif.h:209
@ heif_suberror_No_infe_box
Definition heif.h:207
@ heif_suberror_No_idat_box
Definition heif.h:156
@ heif_suberror_Ipma_box_references_nonexisting_property
Definition heif.h:181
@ heif_suberror_Plugin_loading_error
Definition heif.h:329
@ heif_suberror_Unknown_NCLX_transfer_characteristics
Definition heif.h:225
@ heif_suberror_Missing_grid_images
Definition heif.h:193
@ heif_suberror_Unsupported_bit_depth
Definition heif.h:313
@ heif_suberror_No_iinf_box
Definition heif.h:172
@ heif_suberror_Invalid_clean_aperture
Definition heif.h:195
@ heif_suberror_Unsupported_generic_compression_method
Definition heif.h:309
@ heif_suberror_Overlay_image_outside_of_canvas
Definition heif.h:201
@ heif_suberror_No_ipco_box
Definition heif.h:166
@ heif_suberror_No_vvcC_box
Definition heif.h:242
@ heif_suberror_Auxiliary_image_type_unspecified
Definition heif.h:203
@ heif_suberror_Too_many_regions
Definition heif.h:324
@ heif_suberror_No_iref_box
Definition heif.h:176
@ heif_suberror_No_pict_handler
Definition heif.h:178
@ heif_suberror_No_or_invalid_primary_item
Definition heif.h:205
@ heif_suberror_Unsupported_writer_version
Definition heif.h:276
@ heif_suberror_Nonexisting_item_referenced
Definition heif.h:264
@ heif_suberror_Invalid_image_size
Definition heif.h:215
@ heif_suberror_No_iloc_box
Definition heif.h:170
@ heif_suberror_No_iprp_box
Definition heif.h:174
@ heif_suberror_End_of_data
Definition heif.h:148
@ heif_suberror_No_ftyp_box
Definition heif.h:154
@ heif_suberror_Unsupported_codec
Definition heif.h:294
@ heif_suberror_Invalid_grid_data
Definition heif.h:190
@ heif_suberror_Invalid_overlay_data
Definition heif.h:198
@ heif_suberror_Invalid_box_size
Definition heif.h:151
@ heif_suberror_Unsupported_item_construction_method
Definition heif.h:304
@ heif_suberror_No_hdlr_box
Definition heif.h:160
@ heif_suberror_Cannot_read_plugin_directory
Definition heif.h:331
@ heif_suberror_No_ispe_property
Definition heif.h:233
@ heif_suberror_Unknown_NCLX_color_primaries
Definition heif.h:223
@ heif_suberror_Nonexisting_image_channel_referenced
Definition heif.h:270
@ heif_suberror_Wrong_tile_image_chroma_format
Definition heif.h:211
@ heif_suberror_Invalid_J2K_codestream
Definition heif.h:240
@ heif_suberror_Unsupported_data_version
Definition heif.h:299
@ heif_suberror_No_matching_decoder_installed
Definition heif.h:332
@ heif_suberror_Invalid_pixi_box
Definition heif.h:217
@ heif_suberror_Camera_extrinsic_matrix_undefined
Definition heif.h:237
@ heif_suberror_Encoder_cleanup
Definition heif.h:322
@ heif_suberror_Invalid_parameter_value
Definition heif.h:282
@ heif_suberror_Invalid_fractional_number
Definition heif.h:213
@ heif_suberror_Unsupported_image_type
Definition heif.h:297
@ heif_suberror_Camera_intrinsic_matrix_undefined
Definition heif.h:235
@ heif_suberror_Decompression_invalid_data
Definition heif.h:248
@ heif_suberror_No_hvcC_box
Definition heif.h:162
@ heif_suberror_Wrong_tile_image_pixel_depth
Definition heif.h:221
@ heif_suberror_No_meta_box
Definition heif.h:158
@ heif_suberror_Cannot_write_output_data
Definition heif.h:318
int heif_image_handle_get_chroma_bits_per_pixel(const struct heif_image_handle *)
struct heif_error heif_context_get_encoder_for_format(struct heif_context *context, enum heif_compression_format format, struct heif_encoder **)
void heif_image_set_content_light_level(const struct heif_image *, const struct heif_content_light_level *in)
enum heif_color_profile_type heif_image_handle_get_color_profile_type(const struct heif_image_handle *handle)
struct heif_decoding_options * heif_decoding_options_alloc(void)
void heif_image_release(const struct heif_image *)
size_t heif_image_get_raw_color_profile_size(const struct heif_image *image)
int heif_image_handle_has_camera_extrinsic_matrix(const struct heif_image_handle *handle)
void heif_image_get_mastering_display_colour_volume(const struct heif_image *, struct heif_mastering_display_colour_volume *out)
struct heif_error heif_has_compatible_filetype(const uint8_t *data, int len)
Check the filetype box content for a supported file type.
void heif_context_free(struct heif_context *)
void heif_context_set_maximum_image_size_limit(struct heif_context *ctx, int maximum_width)
void heif_decoding_options_free(struct heif_decoding_options *)
struct heif_context * heif_image_handle_get_context(const struct heif_image_handle *handle)
int heif_encoder_descriptor_supportes_lossless_compression(const struct heif_encoder_descriptor *)
uint8_t * heif_image_get_plane(struct heif_image *, enum heif_channel channel, int *out_stride)
const char * heif_encoder_get_name(const struct heif_encoder *)
int heif_image_get_primary_height(const struct heif_image *img)
Get the height of the main channel.
void heif_image_get_content_light_level(const struct heif_image *, struct heif_content_light_level *out)
struct heif_error heif_register_decoder_plugin(const struct heif_decoder_plugin *)
struct heif_error heif_image_handle_get_auxiliary_image_handle(const struct heif_image_handle *main_image_handle, heif_item_id auxiliary_id, struct heif_image_handle **out_auxiliary_handle)
heif_error_code
Definition heif.h:101
@ heif_error_Encoding_error
Definition heif.h:130
@ heif_error_Invalid_input
Definition heif.h:109
@ heif_error_Memory_allocation_error
Definition heif.h:121
@ heif_error_Input_does_not_exist
Definition heif.h:106
@ heif_error_Decoder_plugin_error
Definition heif.h:124
@ heif_error_Encoder_plugin_error
Definition heif.h:127
@ heif_error_Plugin_loading_error
Definition heif.h:136
@ heif_error_Unsupported_filetype
Definition heif.h:112
@ heif_error_Ok
Definition heif.h:103
@ heif_error_Unsupported_feature
Definition heif.h:115
@ heif_error_Color_profile_does_not_exist
Definition heif.h:133
@ heif_error_Usage_error
Definition heif.h:118
struct heif_error heif_image_handle_get_camera_intrinsic_matrix(const struct heif_image_handle *handle, struct heif_camera_intrinsic_matrix *out_matrix)
struct heif_error heif_context_add_XMP_metadata(struct heif_context *, const struct heif_image_handle *image_handle, const void *data, int size)
struct heif_error heif_load_plugins(const char *directory, const struct heif_plugin_info **out_plugins, int *out_nPluginsLoaded, int output_array_size)
int heif_get_version_number_maintenance(void)
const char * heif_image_handle_get_metadata_content_type(const struct heif_image_handle *handle, heif_item_id metadata_id)
const char * heif_get_file_mime_type(const uint8_t *data, int len)
struct heif_error heif_context_read_from_file(struct heif_context *, const char *filename, const struct heif_reading_options *)
int heif_image_handle_get_ispe_height(const struct heif_image_handle *handle)
heif_compression_format
libheif known compression formats.
Definition heif.h:363
@ heif_compression_EVC
EVC compression.
Definition heif.h:415
@ heif_compression_JPEG2000
JPEG 2000 compression.
Definition heif.h:422
@ heif_compression_AVC
AVC compression.
Definition heif.h:384
@ heif_compression_uncompressed
Uncompressed encoding.
Definition heif.h:428
@ heif_compression_mask
Mask image encoding.
Definition heif.h:434
@ heif_compression_undefined
Unspecified / undefined compression format.
Definition heif.h:370
@ heif_compression_VVC
VVC compression.
Definition heif.h:407
@ heif_compression_JPEG
JPEG compression.
Definition heif.h:391
@ heif_compression_HEVC
HEVC compression, used for HEIC images.
Definition heif.h:376
@ heif_compression_HTJ2K
High Throughput JPEG 2000 (HT-J2K) compression.
Definition heif.h:441
@ heif_compression_AV1
AV1 compression, used for AVIF images.
Definition heif.h:399
struct heif_error heif_image_get_nclx_color_profile(const struct heif_image *image, struct heif_color_profile_nclx **out_data)
struct heif_error heif_image_get_raw_color_profile(const struct heif_image *image, void *out_data)
const char * heif_decoder_descriptor_get_id_name(const struct heif_decoder_descriptor *)
struct heif_error heif_image_scale_image(const struct heif_image *input, struct heif_image **output, int width, int height, const struct heif_scaling_options *options)
void heif_image_set_premultiplied_alpha(struct heif_image *image, int is_premultiplied_alpha)
enum heif_brand heif_main_brand(const uint8_t *data, int len)
int heif_get_version_number_major(void)
int heif_image_has_channel(const struct heif_image *, enum heif_channel channel)
struct heif_error heif_encoder_set_lossy_quality(struct heif_encoder *, int quality)
int heif_get_decoder_descriptors(enum heif_compression_format format_filter, const struct heif_decoder_descriptor **out_decoders, int count)
struct heif_error heif_encoder_set_logging_level(struct heif_encoder *, int level)
struct heif_error heif_context_get_image_handle(struct heif_context *ctx, heif_item_id id, struct heif_image_handle **)
heif_orientation
Definition heif.h:2058
@ heif_orientation_rotate_180
Definition heif.h:2061
@ heif_orientation_rotate_90_cw_then_flip_horizontally
Definition heif.h:2063
@ heif_orientation_rotate_90_cw_then_flip_vertically
Definition heif.h:2065
@ heif_orientation_flip_vertically
Definition heif.h:2062
@ heif_orientation_rotate_270_cw
Definition heif.h:2066
@ heif_orientation_flip_horizontally
Definition heif.h:2060
@ heif_orientation_normal
Definition heif.h:2059
@ heif_orientation_rotate_90_cw
Definition heif.h:2064
int heif_image_handle_get_number_of_metadata_blocks(const struct heif_image_handle *handle, const char *type_filter)
int heif_context_is_top_level_image_ID(struct heif_context *ctx, heif_item_id id)
struct heif_error heif_encoder_parameter_get_valid_string_values(const struct heif_encoder_parameter *, const char *const **out_stringarray)
struct heif_error heif_encoder_parameter_integer_valid_values(struct heif_encoder *, const char *parameter_name, int *have_minimum, int *have_maximum, int *minimum, int *maximum, int *num_valid_values, const int **out_integer_array)
uint32_t heif_item_id
Definition heif.h:352
uint32_t heif_get_version_number(void)
void heif_encoding_options_free(struct heif_encoding_options *)
void heif_image_get_pixel_aspect_ratio(const struct heif_image *, uint32_t *aspect_h, uint32_t *aspect_v)
struct heif_error heif_encoder_get_parameter_boolean(struct heif_encoder *, const char *parameter_name, int *value)
struct heif_error heif_encoder_parameter_get_valid_integer_range(const struct heif_encoder_parameter *, int *have_minimum_maximum, int *minimum, int *maximum)
struct heif_error heif_context_encode_thumbnail(struct heif_context *, const struct heif_image *image, const struct heif_image_handle *master_image_handle, struct heif_encoder *encoder, const struct heif_encoding_options *options, int bbox_size, struct heif_image_handle **out_thumb_image_handle)
struct heif_error heif_context_get_primary_image_ID(struct heif_context *ctx, heif_item_id *id)
void heif_context_add_compatible_brand(struct heif_context *ctx, heif_brand2 compatible_brand)
int heif_encoder_descriptor_supportes_lossy_compression(const struct heif_encoder_descriptor *)
struct heif_error heif_register_encoder_plugin(const struct heif_encoder_plugin *)
heif_reader_grow_status
Definition heif.h:918
@ heif_reader_grow_status_timeout
Definition heif.h:920
@ heif_reader_grow_status_size_beyond_eof
Definition heif.h:921
@ heif_reader_grow_status_size_reached
Definition heif.h:919
void heif_nclx_color_profile_free(struct heif_color_profile_nclx *nclx_profile)
struct heif_error heif_nclx_color_profile_set_color_primaries(struct heif_color_profile_nclx *nclx, uint16_t cp)
struct heif_error heif_context_get_encoder(struct heif_context *context, const struct heif_encoder_descriptor *, struct heif_encoder **out_encoder)
struct heif_error heif_register_decoder(struct heif_context *heif, const struct heif_decoder_plugin *)
int heif_image_get_width(const struct heif_image *img, enum heif_channel channel)
Get the width of a specified image channel.
void heif_image_add_decoding_warning(struct heif_image *image, struct heif_error err)
int heif_encoder_descriptor_supports_lossless_compression(const struct heif_encoder_descriptor *)
struct heif_error heif_context_add_XMP_metadata2(struct heif_context *, const struct heif_image_handle *image_handle, const void *data, int size, enum heif_metadata_compression compression)
int heif_image_handle_get_number_of_depth_images(const struct heif_image_handle *handle)
void heif_camera_extrinsic_matrix_release(struct heif_camera_extrinsic_matrix *)
struct heif_error heif_context_write(struct heif_context *, struct heif_writer *writer, void *userdata)
int heif_image_get_bits_per_pixel(const struct heif_image *, enum heif_channel channel)
int heif_image_handle_get_ispe_width(const struct heif_image_handle *handle)
struct heif_error heif_context_add_generic_uri_metadata(struct heif_context *ctx, const struct heif_image_handle *image_handle, const void *data, int size, const char *item_uri_type, heif_item_id *out_item_id)
int heif_image_handle_get_list_of_thumbnail_IDs(const struct heif_image_handle *handle, heif_item_id *ids, int count)
int heif_have_decoder_for_format(enum heif_compression_format format)
int heif_image_handle_get_number_of_auxiliary_images(const struct heif_image_handle *handle, int aux_filter)
int heif_context_get_list_of_top_level_image_IDs(struct heif_context *ctx, heif_item_id *ID_array, int count)
struct heif_error heif_encoder_set_parameter(struct heif_encoder *, const char *parameter_name, const char *value)
struct heif_error heif_image_handle_get_raw_color_profile(const struct heif_image_handle *handle, void *out_data)
int heif_image_get_height(const struct heif_image *img, enum heif_channel channel)
Get the height of a specified image channel.
size_t heif_image_handle_get_raw_color_profile_size(const struct heif_image_handle *handle)
struct heif_error heif_image_handle_get_nclx_color_profile(const struct heif_image_handle *handle, struct heif_color_profile_nclx **out_data)
struct heif_error heif_image_handle_get_thumbnail(const struct heif_image_handle *main_image_handle, heif_item_id thumbnail_id, struct heif_image_handle **out_thumbnail_handle)
int heif_get_encoder_descriptors(enum heif_compression_format format_filter, const char *name_filter, const struct heif_encoder_descriptor **out_encoders, int count)
int heif_image_handle_get_depth_image_representation_info(const struct heif_image_handle *handle, heif_item_id depth_image_id, const struct heif_depth_representation_info **out)
int heif_image_get_primary_width(const struct heif_image *img)
Get the width of the main channel.
void heif_encoder_release(struct heif_encoder *)
heif_metadata_compression
Definition heif.h:2171
@ heif_metadata_compression_deflate
Definition heif.h:2175
@ heif_metadata_compression_zlib
Definition heif.h:2176
@ heif_metadata_compression_off
Definition heif.h:2172
@ heif_metadata_compression_brotli
Definition heif.h:2177
@ heif_metadata_compression_auto
Definition heif.h:2173
@ heif_metadata_compression_unknown
Definition heif.h:2174
struct heif_error heif_image_extend_padding_to_size(struct heif_image *image, int min_physical_width, int min_physical_height)
const char * heif_get_version(void)
void heif_brand_to_fourcc(heif_brand2 brand, char *out_fourcc)
int heif_image_handle_get_list_of_auxiliary_image_IDs(const struct heif_image_handle *handle, int aux_filter, heif_item_id *ids, int count)
const struct heif_error heif_error_success
void heif_image_handle_free_auxiliary_types(const struct heif_image_handle *handle, const char **out_type)
void heif_free_plugin_directories(const char *const *)
void heif_depth_representation_info_free(const struct heif_depth_representation_info *info)
struct heif_error heif_context_assign_thumbnail(struct heif_context *, const struct heif_image_handle *master_image, const struct heif_image_handle *thumbnail_image)
struct heif_error heif_context_read_from_memory(struct heif_context *, const void *mem, size_t size, const struct heif_reading_options *)
int heif_image_handle_is_premultiplied_alpha(const struct heif_image_handle *)
struct heif_error heif_nclx_color_profile_set_transfer_characteristics(struct heif_color_profile_nclx *nclx, uint16_t transfer_characteristics)
#define LIBHEIF_API
Definition heif.h:69
#define heif_fourcc(a, b, c, d)
Definition heif.h:72
const char * heif_encoder_parameter_get_name(const struct heif_encoder_parameter *)
int heif_image_handle_get_list_of_metadata_block_IDs(const struct heif_image_handle *handle, const char *type_filter, heif_item_id *ids, int count)
struct heif_color_profile_nclx * heif_nclx_color_profile_alloc(void)
struct heif_error heif_image_set_nclx_color_profile(struct heif_image *image, const struct heif_color_profile_nclx *color_profile)
heif_filetype_result
Definition heif.h:586
@ heif_filetype_maybe
Definition heif.h:590
@ heif_filetype_yes_unsupported
Definition heif.h:589
@ heif_filetype_yes_supported
Definition heif.h:588
@ heif_filetype_no
Definition heif.h:587
const char *const * heif_get_plugin_directories(void)
struct heif_error heif_context_get_primary_image_handle(struct heif_context *ctx, struct heif_image_handle **)
heif_depth_representation_type
Definition heif.h:1121
@ heif_depth_representation_type_nonuniform_disparity
Definition heif.h:1125
@ heif_depth_representation_type_uniform_inverse_Z
Definition heif.h:1122
@ heif_depth_representation_type_uniform_disparity
Definition heif.h:1123
@ heif_depth_representation_type_uniform_Z
Definition heif.h:1124
struct heif_error heif_context_write_to_file(struct heif_context *, const char *filename)
struct heif_error heif_encoder_set_parameter_integer(struct heif_encoder *, const char *parameter_name, int value)
const char * heif_image_handle_get_metadata_item_uri_type(const struct heif_image_handle *handle, heif_item_id metadata_id)
struct heif_error heif_encoder_parameter_string_valid_values(struct heif_encoder *, const char *parameter_name, const char *const **out_stringarray)
struct heif_error heif_mastering_display_colour_volume_decode(const struct heif_mastering_display_colour_volume *in, struct heif_decoded_mastering_display_colour_volume *out)
int heif_encoder_has_default(struct heif_encoder *, const char *parameter_name)
struct heif_error heif_image_add_plane(struct heif_image *image, enum heif_channel channel, int width, int height, int bit_depth)
Add an image plane to the image.
struct heif_error heif_camera_extrinsic_matrix_get_rotation_matrix(const struct heif_camera_extrinsic_matrix *, double *out_matrix_row_major)
heif_color_profile_type
Definition heif.h:1273
@ heif_color_profile_type_rICC
Definition heif.h:1276
@ heif_color_profile_type_prof
Definition heif.h:1277
@ heif_color_profile_type_nclx
Definition heif.h:1275
@ heif_color_profile_type_not_present
Definition heif.h:1274
const char * heif_decoder_descriptor_get_name(const struct heif_decoder_descriptor *)
struct heif_error heif_image_handle_get_depth_image_handle(const struct heif_image_handle *handle, heif_item_id depth_image_id, struct heif_image_handle **out_depth_handle)
struct heif_error heif_init(struct heif_init_params *)
Initialise library.
int heif_have_encoder_for_format(enum heif_compression_format format)
struct heif_encoding_options * heif_encoding_options_alloc(void)
enum heif_filetype_result heif_check_filetype(const uint8_t *data, int len)
heif_transfer_characteristics
Definition heif.h:1315
@ heif_transfer_characteristic_linear
Definition heif.h:1322
@ heif_transfer_characteristic_unspecified
Definition heif.h:1317
@ heif_transfer_characteristic_ITU_R_BT_2020_2_12bit
Definition heif.h:1329
@ heif_transfer_characteristic_ITU_R_BT_470_6_System_B_G
Definition heif.h:1319
@ heif_transfer_characteristic_ITU_R_BT_2100_0_PQ
Definition heif.h:1330
@ heif_transfer_characteristic_ITU_R_BT_2100_0_HLG
Definition heif.h:1332
@ heif_transfer_characteristic_SMPTE_ST_428_1
Definition heif.h:1331
@ heif_transfer_characteristic_ITU_R_BT_709_5
Definition heif.h:1316
@ heif_transfer_characteristic_ITU_R_BT_1361
Definition heif.h:1326
@ heif_transfer_characteristic_IEC_61966_2_1
Definition heif.h:1327
@ heif_transfer_characteristic_SMPTE_240M
Definition heif.h:1321
@ heif_transfer_characteristic_logarithmic_100_sqrt10
Definition heif.h:1324
@ heif_transfer_characteristic_ITU_R_BT_601_6
Definition heif.h:1320
@ heif_transfer_characteristic_IEC_61966_2_4
Definition heif.h:1325
@ heif_transfer_characteristic_logarithmic_100
Definition heif.h:1323
@ heif_transfer_characteristic_ITU_R_BT_2020_2_10bit
Definition heif.h:1328
@ heif_transfer_characteristic_ITU_R_BT_470_6_System_M
Definition heif.h:1318
const char * heif_encoder_descriptor_get_id_name(const struct heif_encoder_descriptor *)
int heif_context_get_encoder_descriptors(struct heif_context *, enum heif_compression_format format_filter, const char *name_filter, const struct heif_encoder_descriptor **out_encoders, int count)
struct heif_error heif_context_add_generic_metadata(struct heif_context *ctx, const struct heif_image_handle *image_handle, const void *data, int size, const char *item_type, const char *content_type)
struct heif_error heif_context_set_primary_image(struct heif_context *, struct heif_image_handle *image_handle)
heif_brand2 heif_fourcc_to_brand(const char *brand_fourcc)
int heif_image_handle_is_primary_image(const struct heif_image_handle *handle)
enum heif_chroma heif_image_get_chroma_format(const struct heif_image *)
struct heif_error heif_encoder_set_parameter_string(struct heif_encoder *, const char *parameter_name, const char *value)
struct heif_error heif_image_handle_get_preferred_decoding_colorspace(const struct heif_image_handle *image_handle, enum heif_colorspace *out_colorspace, enum heif_chroma *out_chroma)
struct heif_error heif_image_handle_get_auxiliary_type(const struct heif_image_handle *handle, const char **out_type)
int heif_image_is_premultiplied_alpha(struct heif_image *image)
int heif_check_jpeg_filetype(const uint8_t *data, int len)
void heif_image_set_pixel_aspect_ratio(struct heif_image *, uint32_t aspect_h, uint32_t aspect_v)
struct heif_error heif_encoder_parameter_integer_valid_range(struct heif_encoder *, const char *parameter_name, int *have_minimum_maximum, int *minimum, int *maximum)
int heif_has_compatible_brand(const uint8_t *data, int len, const char *brand_fourcc)
heif_chroma_upsampling_algorithm
Definition heif.h:1480
@ heif_chroma_upsampling_bilinear
Definition heif.h:1482
@ heif_chroma_upsampling_nearest_neighbor
Definition heif.h:1481
heif_chroma_downsampling_algorithm
Definition heif.h:1470
@ heif_chroma_downsampling_nearest_neighbor
Definition heif.h:1471
@ heif_chroma_downsampling_sharp_yuv
Definition heif.h:1476
@ heif_chroma_downsampling_average
Definition heif.h:1472
int heif_get_version_number_minor(void)
struct heif_error heif_encoder_set_lossless(struct heif_encoder *, int enable)
struct heif_error heif_encoder_get_parameter_integer(struct heif_encoder *, const char *parameter_name, int *value)
void heif_free_list_of_compatible_brands(heif_brand2 *brands_list)
heif_encoder_parameter_type
Definition heif.h:1948
@ heif_encoder_parameter_type_boolean
Definition heif.h:1950
@ heif_encoder_parameter_type_integer
Definition heif.h:1949
@ heif_encoder_parameter_type_string
Definition heif.h:1951
int heif_image_has_mastering_display_colour_volume(const struct heif_image *)
heif_matrix_coefficients
Definition heif.h:1336
@ heif_matrix_coefficients_chromaticity_derived_non_constant_luminance
Definition heif.h:1348
@ heif_matrix_coefficients_ITU_R_BT_601_6
Definition heif.h:1342
@ heif_matrix_coefficients_US_FCC_T47
Definition heif.h:1340
@ heif_matrix_coefficients_chromaticity_derived_constant_luminance
Definition heif.h:1349
@ heif_matrix_coefficients_RGB_GBR
Definition heif.h:1337
@ heif_matrix_coefficients_ITU_R_BT_2020_2_constant_luminance
Definition heif.h:1346
@ heif_matrix_coefficients_ICtCp
Definition heif.h:1350
@ heif_matrix_coefficients_ITU_R_BT_470_6_System_B_G
Definition heif.h:1341
@ heif_matrix_coefficients_unspecified
Definition heif.h:1339
@ heif_matrix_coefficients_YCgCo
Definition heif.h:1344
@ heif_matrix_coefficients_SMPTE_240M
Definition heif.h:1343
@ heif_matrix_coefficients_ITU_R_BT_2020_2_non_constant_luminance
Definition heif.h:1345
@ heif_matrix_coefficients_SMPTE_ST_2085
Definition heif.h:1347
@ heif_matrix_coefficients_ITU_R_BT_709_5
Definition heif.h:1338
int heif_image_handle_get_list_of_depth_image_IDs(const struct heif_image_handle *handle, heif_item_id *ids, int count)
struct heif_error heif_context_read_from_memory_without_copy(struct heif_context *, const void *mem, size_t size, const struct heif_reading_options *)
heif_color_primaries
Definition heif.h:1299
@ heif_color_primaries_SMPTE_ST_428_1
Definition heif.h:1308
@ heif_color_primaries_ITU_R_BT_709_5
Definition heif.h:1300
@ heif_color_primaries_generic_film
Definition heif.h:1306
@ heif_color_primaries_EBU_Tech_3213_E
Definition heif.h:1311
@ heif_color_primaries_ITU_R_BT_601_6
Definition heif.h:1304
@ heif_color_primaries_ITU_R_BT_470_6_System_M
Definition heif.h:1302
@ heif_color_primaries_unspecified
Definition heif.h:1301
@ heif_color_primaries_SMPTE_240M
Definition heif.h:1305
@ heif_color_primaries_ITU_R_BT_470_6_System_B_G
Definition heif.h:1303
@ heif_color_primaries_ITU_R_BT_2020_2_and_2100_0
Definition heif.h:1307
@ heif_color_primaries_SMPTE_EG_432_1
Definition heif.h:1310
@ heif_color_primaries_SMPTE_RP_431_2
Definition heif.h:1309
int heif_image_get_bits_per_pixel_range(const struct heif_image *, enum heif_channel channel)
struct heif_error heif_image_set_raw_color_profile(struct heif_image *image, const char *profile_type_fourcc_string, const void *profile_data, const size_t profile_size)
double principal_point_x
Definition heif.h:1419
double focal_length_y
Definition heif.h:1418
double principal_point_y
Definition heif.h:1420
double skew
Definition heif.h:1421
double focal_length_x
Definition heif.h:1417
uint8_t only_use_preferred_chroma_algorithm
Definition heif.h:1500
uint8_t version
Definition heif.h:1487
enum heif_chroma_upsampling_algorithm preferred_chroma_upsampling_algorithm
Definition heif.h:1492
enum heif_chroma_downsampling_algorithm preferred_chroma_downsampling_algorithm
Definition heif.h:1491
enum heif_transfer_characteristics transfer_characteristics
Definition heif.h:1360
float color_primary_green_x
Definition heif.h:1367
enum heif_matrix_coefficients matrix_coefficients
Definition heif.h:1361
float color_primary_blue_x
Definition heif.h:1368
float color_primary_white_y
Definition heif.h:1369
float color_primary_red_x
Definition heif.h:1366
float color_primary_red_y
Definition heif.h:1366
float color_primary_white_x
Definition heif.h:1369
enum heif_color_primaries color_primaries
Definition heif.h:1359
float color_primary_green_y
Definition heif.h:1367
uint8_t version
Definition heif.h:1357
float color_primary_blue_y
Definition heif.h:1368
uint8_t full_range_flag
Definition heif.h:1362
uint16_t max_content_light_level
Definition heif.h:1712
uint16_t max_pic_average_light_level
Definition heif.h:1713
double min_display_mastering_luminance
Definition heif.h:1745
float white_point_y
Definition heif.h:1743
float display_primaries_y[3]
Definition heif.h:1741
double max_display_mastering_luminance
Definition heif.h:1744
float white_point_x
Definition heif.h:1742
float display_primaries_x[3]
Definition heif.h:1740
void(* start_progress)(enum heif_progress_step step, int max_progress, void *progress_user_data)
Definition heif.h:1514
void(* on_progress)(enum heif_progress_step step, int progress, void *progress_user_data)
Definition heif.h:1516
uint8_t convert_hdr_to_8bit
Definition heif.h:1524
const char * decoder_id
Definition heif.h:1537
uint8_t ignore_transformations
Definition heif.h:1512
void * progress_user_data
Definition heif.h:1520
uint8_t version
Definition heif.h:1506
void(* end_progress)(enum heif_progress_step step, void *progress_user_data)
Definition heif.h:1518
struct heif_color_conversion_options color_conversion_options
Definition heif.h:1542
uint8_t strict_decoding
Definition heif.h:1530
uint8_t * depth_nonlinear_representation_model
Definition heif.h:1148
double z_near
Definition heif.h:1139
double d_min
Definition heif.h:1141
double d_max
Definition heif.h:1142
enum heif_depth_representation_type depth_representation_type
Definition heif.h:1144
uint8_t has_z_far
Definition heif.h:1135
uint32_t disparity_reference_view
Definition heif.h:1145
double z_far
Definition heif.h:1140
uint32_t depth_nonlinear_representation_model_size
Definition heif.h:1147
uint8_t has_z_near
Definition heif.h:1134
uint8_t has_d_min
Definition heif.h:1136
uint8_t version
Definition heif.h:1130
uint8_t has_d_max
Definition heif.h:1137
enum heif_orientation image_orientation
Definition heif.h:2098
uint8_t prefer_uncC_short_form
Definition heif.h:2107
uint8_t save_alpha_channel
Definition heif.h:2076
uint8_t version
Definition heif.h:2072
uint8_t macOS_compatibility_workaround_no_nclx_profile
Definition heif.h:2093
uint8_t macOS_compatibility_workaround
Definition heif.h:2081
uint8_t save_two_colr_boxes_when_ICC_and_nclx_available
Definition heif.h:2085
struct heif_color_profile_nclx * output_nclx_profile
Definition heif.h:2091
struct heif_color_conversion_options color_conversion_options
Definition heif.h:2102
const char * message
Definition heif.h:345
enum heif_suberror_code subcode
Definition heif.h:342
enum heif_error_code code
Definition heif.h:339
int version
Definition heif.h:505
uint16_t white_point_y
Definition heif.h:1732
uint16_t display_primaries_y[3]
Definition heif.h:1730
uint32_t min_display_mastering_luminance
Definition heif.h:1734
uint32_t max_display_mastering_luminance
Definition heif.h:1733
uint16_t white_point_x
Definition heif.h:1731
uint16_t display_primaries_x[3]
Definition heif.h:1729
void * internal_handle
Definition heif.h:558
const void * plugin
Definition heif.h:557
int version
Definition heif.h:555
enum heif_plugin_type type
Definition heif.h:556
int reader_api_version
Definition heif.h:927
enum heif_reader_grow_status(* wait_for_file_size)(int64_t target_size, void *userdata)
Definition heif.h:949
int64_t(* get_position)(void *userdata)
Definition heif.h:930
int(* read)(void *data, size_t size, void *userdata)
Definition heif.h:934
int(* seek)(int64_t position, void *userdata)
Definition heif.h:938
struct heif_error(* write)(struct heif_context *ctx, const void *data, size_t size, void *userdata)
Definition heif.h:1783
int writer_api_version
Definition heif.h:1780