libheif
Loading...
Searching...
No Matches
heif.h File Reference
#include <stddef.h>
#include <stdint.h>
#include <libheif/heif_version.h>
Include dependency graph for heif.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  heif_error
 
struct  heif_init_params
 
struct  heif_plugin_info
 
struct  heif_reader
 
struct  heif_depth_representation_info
 
struct  heif_color_profile_nclx
 
struct  heif_camera_intrinsic_matrix
 
struct  heif_color_conversion_options
 
struct  heif_decoding_options
 
struct  heif_content_light_level
 
struct  heif_mastering_display_colour_volume
 
struct  heif_decoded_mastering_display_colour_volume
 
struct  heif_writer
 
struct  heif_encoding_options
 

Macros

#define LIBHEIF_API
 
#define heif_fourcc(a, b, c, d)
 
#define LIBHEIF_MAKE_VERSION(h, m, l)
 
#define LIBHEIF_HAVE_VERSION(h, m, l)
 
#define heif_chroma_interleaved_24bit   heif_chroma_interleaved_RGB
 
#define heif_chroma_interleaved_32bit   heif_chroma_interleaved_RGBA
 
#define heif_brand2_heic   heif_fourcc('h','e','i','c')
 HEVC image (heic) brand.
 
#define heif_brand2_heix   heif_fourcc('h','e','i','x')
 HEVC image (heix) brand.
 
#define heif_brand2_hevc   heif_fourcc('h','e','v','c')
 HEVC image sequence (hevc) brand.
 
#define heif_brand2_hevx   heif_fourcc('h','e','v','x')
 HEVC image sequence (hevx) brand.
 
#define heif_brand2_heim   heif_fourcc('h','e','i','m')
 HEVC layered image (heim) brand.
 
#define heif_brand2_heis   heif_fourcc('h','e','i','s')
 HEVC layered image (heis) brand.
 
#define heif_brand2_hevm   heif_fourcc('h','e','v','m')
 HEVC layered image sequence (hevm) brand.
 
#define heif_brand2_hevs   heif_fourcc('h','e','v','s')
 HEVC layered image sequence (hevs) brand.
 
#define heif_brand2_avif   heif_fourcc('a','v','i','f')
 AV1 image (avif) brand.
 
#define heif_brand2_avis   heif_fourcc('a','v','i','s')
 AV1 image sequence (avis) brand.
 
#define heif_brand2_mif1   heif_fourcc('m','i','f','1')
 HEIF image structural brand (mif1).
 
#define heif_brand2_mif2   heif_fourcc('m','i','f','2')
 HEIF image structural brand (mif2).
 
#define heif_brand2_msf1   heif_fourcc('m','s','f','1')
 HEIF image sequence structural brand (msf1).
 
#define heif_brand2_vvic   heif_fourcc('v','v','i','c')
 VVC image (vvic) brand.
 
#define heif_brand2_vvis   heif_fourcc('v','v','i','s')
 VVC image sequence (vvis) brand.
 
#define heif_brand2_evbi   heif_fourcc('e','v','b','i')
 EVC baseline image (evbi) brand.
 
#define heif_brand2_evmi   heif_fourcc('e','v','m','i')
 EVC main profile image (evmi) brand.
 
#define heif_brand2_evbs   heif_fourcc('e','v','b','s')
 EVC baseline image sequence (evbs) brand.
 
#define heif_brand2_evms   heif_fourcc('e','v','m','s')
 EVC main profile image sequence (evms) brand.
 
#define heif_brand2_jpeg   heif_fourcc('j','p','e','g')
 JPEG image (jpeg) brand.
 
#define heif_brand2_jpgs   heif_fourcc('j','p','g','s')
 JPEG image sequence (jpgs) brand.
 
#define heif_brand2_j2ki   heif_fourcc('j','2','k','i')
 JPEG 2000 image (j2ki) brand.
 
#define heif_brand2_j2is   heif_fourcc('j','2','i','s')
 JPEG 2000 image sequence (j2is) brand.
 
#define heif_brand2_miaf   heif_fourcc('m','i','a','f')
 Multi-image application format (MIAF) brand.
 
#define heif_brand2_1pic   heif_fourcc('1','p','i','c')
 Single picture file brand.
 
#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_ALPHA   (1UL<<1)
 
#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_DEPTH   (2UL<<1)
 

Typedefs

typedef uint32_t heif_item_id
 
typedef uint32_t heif_property_id
 
typedef uint32_t heif_brand2
 

Enumerations

enum  heif_error_code {
  heif_error_Ok = 0 , heif_error_Input_does_not_exist = 1 , heif_error_Invalid_input = 2 , heif_error_Unsupported_filetype = 3 ,
  heif_error_Unsupported_feature = 4 , heif_error_Usage_error = 5 , heif_error_Memory_allocation_error = 6 , heif_error_Decoder_plugin_error = 7 ,
  heif_error_Encoder_plugin_error = 8 , heif_error_Encoding_error = 9 , heif_error_Color_profile_does_not_exist = 10 , heif_error_Plugin_loading_error = 11
}
 
enum  heif_suberror_code {
  heif_suberror_Unspecified = 0 , heif_suberror_End_of_data = 100 , heif_suberror_Invalid_box_size = 101 , heif_suberror_No_ftyp_box = 102 ,
  heif_suberror_No_idat_box = 103 , heif_suberror_No_meta_box = 104 , heif_suberror_No_hdlr_box = 105 , heif_suberror_No_hvcC_box = 106 ,
  heif_suberror_No_pitm_box = 107 , heif_suberror_No_ipco_box = 108 , heif_suberror_No_ipma_box = 109 , heif_suberror_No_iloc_box = 110 ,
  heif_suberror_No_iinf_box = 111 , heif_suberror_No_iprp_box = 112 , heif_suberror_No_iref_box = 113 , heif_suberror_No_pict_handler = 114 ,
  heif_suberror_Ipma_box_references_nonexisting_property = 115 , heif_suberror_No_properties_assigned_to_item = 116 , heif_suberror_No_item_data = 117 , heif_suberror_Invalid_grid_data = 118 ,
  heif_suberror_Missing_grid_images = 119 , heif_suberror_Invalid_clean_aperture = 120 , heif_suberror_Invalid_overlay_data = 121 , heif_suberror_Overlay_image_outside_of_canvas = 122 ,
  heif_suberror_Auxiliary_image_type_unspecified = 123 , heif_suberror_No_or_invalid_primary_item = 124 , heif_suberror_No_infe_box = 125 , heif_suberror_Unknown_color_profile_type = 126 ,
  heif_suberror_Wrong_tile_image_chroma_format = 127 , heif_suberror_Invalid_fractional_number = 128 , heif_suberror_Invalid_image_size = 129 , heif_suberror_Invalid_pixi_box = 130 ,
  heif_suberror_No_av1C_box = 131 , heif_suberror_Wrong_tile_image_pixel_depth = 132 , heif_suberror_Unknown_NCLX_color_primaries = 133 , heif_suberror_Unknown_NCLX_transfer_characteristics = 134 ,
  heif_suberror_Unknown_NCLX_matrix_coefficients = 135 , heif_suberror_Invalid_region_data = 136 , heif_suberror_No_ispe_property = 137 , heif_suberror_Camera_intrinsic_matrix_undefined = 138 ,
  heif_suberror_Camera_extrinsic_matrix_undefined = 139 , heif_suberror_Invalid_J2K_codestream = 140 , heif_suberror_No_vvcC_box = 141 , heif_suberror_No_icbr_box = 142 ,
  heif_suberror_Decompression_invalid_data = 150 , heif_suberror_Security_limit_exceeded = 1000 , heif_suberror_Compression_initialisation_error = 1001 , heif_suberror_Nonexisting_item_referenced = 2000 ,
  heif_suberror_Null_pointer_argument = 2001 , heif_suberror_Nonexisting_image_channel_referenced = 2002 , heif_suberror_Unsupported_plugin_version = 2003 , heif_suberror_Unsupported_writer_version = 2004 ,
  heif_suberror_Unsupported_parameter = 2005 , heif_suberror_Invalid_parameter_value = 2006 , heif_suberror_Invalid_property = 2007 , heif_suberror_Item_reference_cycle = 2008 ,
  heif_suberror_Unsupported_codec = 3000 , heif_suberror_Unsupported_image_type = 3001 , heif_suberror_Unsupported_data_version = 3002 , heif_suberror_Unsupported_color_conversion = 3003 ,
  heif_suberror_Unsupported_item_construction_method = 3004 , heif_suberror_Unsupported_header_compression_method = 3005 , heif_suberror_Unsupported_generic_compression_method = 3006 , heif_suberror_Unsupported_bit_depth = 4000 ,
  heif_suberror_Cannot_write_output_data = 5000 , heif_suberror_Encoder_initialization = 5001 , heif_suberror_Encoder_encoding = 5002 , heif_suberror_Encoder_cleanup = 5003 ,
  heif_suberror_Too_many_regions = 5004 , heif_suberror_Plugin_loading_error = 6000 , heif_suberror_Plugin_is_not_loaded = 6001 , heif_suberror_Cannot_read_plugin_directory = 6002 ,
  heif_suberror_No_matching_decoder_installed = 6003
}
 
enum  heif_compression_format {
  heif_compression_undefined = 0 , heif_compression_HEVC = 1 , heif_compression_AVC = 2 , heif_compression_JPEG = 3 ,
  heif_compression_AV1 = 4 , heif_compression_VVC = 5 , heif_compression_EVC = 6 , heif_compression_JPEG2000 = 7 ,
  heif_compression_uncompressed = 8 , heif_compression_mask = 9 , heif_compression_HTJ2K = 10
}
 libheif known compression formats. More...
 
enum  heif_chroma {
  heif_chroma_undefined = 99 , heif_chroma_monochrome = 0 , heif_chroma_420 = 1 , heif_chroma_422 = 2 ,
  heif_chroma_444 = 3 , heif_chroma_interleaved_RGB = 10 , heif_chroma_interleaved_RGBA = 11 , heif_chroma_interleaved_RRGGBB_BE = 12 ,
  heif_chroma_interleaved_RRGGBBAA_BE = 13 , heif_chroma_interleaved_RRGGBB_LE = 14 , heif_chroma_interleaved_RRGGBBAA_LE = 15
}
 
enum  heif_colorspace { heif_colorspace_undefined = 99 , heif_colorspace_YCbCr = 0 , heif_colorspace_RGB = 1 , heif_colorspace_monochrome = 2 }
 
enum  heif_channel {
  heif_channel_Y = 0 , heif_channel_Cb = 1 , heif_channel_Cr = 2 , heif_channel_R = 3 ,
  heif_channel_G = 4 , heif_channel_B = 5 , heif_channel_Alpha = 6 , heif_channel_interleaved = 10
}
 
enum  heif_plugin_type { heif_plugin_type_encoder , heif_plugin_type_decoder }
 
enum  heif_filetype_result { heif_filetype_no , heif_filetype_yes_supported , heif_filetype_yes_unsupported , heif_filetype_maybe }
 
enum  heif_brand {
  heif_unknown_brand , heif_heic , heif_heix , heif_hevc ,
  heif_hevx , heif_heim , heif_heis , heif_hevm ,
  heif_hevs , heif_mif1 , heif_msf1 , heif_avif ,
  heif_avis , heif_vvic , heif_vvis , heif_evbi ,
  heif_evbs , heif_j2ki , heif_j2is
}
 
enum  heif_reader_grow_status { heif_reader_grow_status_size_reached , heif_reader_grow_status_timeout , heif_reader_grow_status_size_beyond_eof }
 
enum  heif_depth_representation_type { heif_depth_representation_type_uniform_inverse_Z = 0 , heif_depth_representation_type_uniform_disparity = 1 , heif_depth_representation_type_uniform_Z = 2 , heif_depth_representation_type_nonuniform_disparity = 3 }
 
enum  heif_color_profile_type { heif_color_profile_type_not_present = 0 , heif_color_profile_type_nclx = heif_fourcc('n', 'c', 'l', 'x') , heif_color_profile_type_rICC = heif_fourcc('r', 'I', 'C', 'C') , heif_color_profile_type_prof = heif_fourcc('p', 'r', 'o', 'f') }
 
enum  heif_color_primaries {
  heif_color_primaries_ITU_R_BT_709_5 = 1 , heif_color_primaries_unspecified = 2 , heif_color_primaries_ITU_R_BT_470_6_System_M = 4 , heif_color_primaries_ITU_R_BT_470_6_System_B_G = 5 ,
  heif_color_primaries_ITU_R_BT_601_6 = 6 , heif_color_primaries_SMPTE_240M = 7 , heif_color_primaries_generic_film = 8 , heif_color_primaries_ITU_R_BT_2020_2_and_2100_0 = 9 ,
  heif_color_primaries_SMPTE_ST_428_1 = 10 , heif_color_primaries_SMPTE_RP_431_2 = 11 , heif_color_primaries_SMPTE_EG_432_1 = 12 , heif_color_primaries_EBU_Tech_3213_E = 22
}
 
enum  heif_transfer_characteristics {
  heif_transfer_characteristic_ITU_R_BT_709_5 = 1 , heif_transfer_characteristic_unspecified = 2 , heif_transfer_characteristic_ITU_R_BT_470_6_System_M = 4 , heif_transfer_characteristic_ITU_R_BT_470_6_System_B_G = 5 ,
  heif_transfer_characteristic_ITU_R_BT_601_6 = 6 , heif_transfer_characteristic_SMPTE_240M = 7 , heif_transfer_characteristic_linear = 8 , heif_transfer_characteristic_logarithmic_100 = 9 ,
  heif_transfer_characteristic_logarithmic_100_sqrt10 = 10 , heif_transfer_characteristic_IEC_61966_2_4 = 11 , heif_transfer_characteristic_ITU_R_BT_1361 = 12 , heif_transfer_characteristic_IEC_61966_2_1 = 13 ,
  heif_transfer_characteristic_ITU_R_BT_2020_2_10bit = 14 , heif_transfer_characteristic_ITU_R_BT_2020_2_12bit = 15 , heif_transfer_characteristic_ITU_R_BT_2100_0_PQ = 16 , heif_transfer_characteristic_SMPTE_ST_428_1 = 17 ,
  heif_transfer_characteristic_ITU_R_BT_2100_0_HLG = 18
}
 
enum  heif_matrix_coefficients {
  heif_matrix_coefficients_RGB_GBR = 0 , heif_matrix_coefficients_ITU_R_BT_709_5 = 1 , heif_matrix_coefficients_unspecified = 2 , heif_matrix_coefficients_US_FCC_T47 = 4 ,
  heif_matrix_coefficients_ITU_R_BT_470_6_System_B_G = 5 , heif_matrix_coefficients_ITU_R_BT_601_6 = 6 , heif_matrix_coefficients_SMPTE_240M = 7 , heif_matrix_coefficients_YCgCo = 8 ,
  heif_matrix_coefficients_ITU_R_BT_2020_2_non_constant_luminance = 9 , heif_matrix_coefficients_ITU_R_BT_2020_2_constant_luminance = 10 , heif_matrix_coefficients_SMPTE_ST_2085 = 11 , heif_matrix_coefficients_chromaticity_derived_non_constant_luminance = 12 ,
  heif_matrix_coefficients_chromaticity_derived_constant_luminance = 13 , heif_matrix_coefficients_ICtCp = 14
}
 
enum  heif_progress_step { heif_progress_step_total = 0 , heif_progress_step_load_tile = 1 }
 
enum  heif_chroma_downsampling_algorithm { heif_chroma_downsampling_nearest_neighbor = 1 , heif_chroma_downsampling_average = 2 , heif_chroma_downsampling_sharp_yuv = 3 }
 
enum  heif_chroma_upsampling_algorithm { heif_chroma_upsampling_nearest_neighbor = 1 , heif_chroma_upsampling_bilinear = 2 }
 
enum  heif_encoder_parameter_type { heif_encoder_parameter_type_integer = 1 , heif_encoder_parameter_type_boolean = 2 , heif_encoder_parameter_type_string = 3 }
 
enum  heif_orientation {
  heif_orientation_normal = 1 , heif_orientation_flip_horizontally = 2 , heif_orientation_rotate_180 = 3 , heif_orientation_flip_vertically = 4 ,
  heif_orientation_rotate_90_cw_then_flip_horizontally = 5 , heif_orientation_rotate_90_cw = 6 , heif_orientation_rotate_90_cw_then_flip_vertically = 7 , heif_orientation_rotate_270_cw = 8
}
 
enum  heif_metadata_compression {
  heif_metadata_compression_off = 0 , heif_metadata_compression_auto = 1 , heif_metadata_compression_unknown = 2 , heif_metadata_compression_deflate = 3 ,
  heif_metadata_compression_zlib = 4 , heif_metadata_compression_brotli = 5
}
 

Functions

const char * heif_get_version (void)
 
uint32_t heif_get_version_number (void)
 
int heif_get_version_number_major (void)
 
int heif_get_version_number_minor (void)
 
int heif_get_version_number_maintenance (void)
 
struct heif_error heif_init (struct heif_init_params *)
 Initialise library.
 
void heif_deinit (void)
 Deinitialise and clean up library.
 
struct heif_error heif_load_plugin (const char *filename, struct heif_plugin_info const **out_plugin)
 
struct heif_error heif_load_plugins (const char *directory, const struct heif_plugin_info **out_plugins, int *out_nPluginsLoaded, int output_array_size)
 
struct heif_error heif_unload_plugin (const struct heif_plugin_info *plugin)
 
const char *const * heif_get_plugin_directories (void)
 
void heif_free_plugin_directories (const char *const *)
 
enum heif_filetype_result heif_check_filetype (const uint8_t *data, int len)
 
struct heif_error heif_has_compatible_filetype (const uint8_t *data, int len)
 Check the filetype box content for a supported file type.
 
int heif_check_jpeg_filetype (const uint8_t *data, int len)
 
enum heif_brand heif_main_brand (const uint8_t *data, int len)
 
heif_brand2 heif_read_main_brand (const uint8_t *data, int len)
 
heif_brand2 heif_fourcc_to_brand (const char *brand_fourcc)
 
void heif_brand_to_fourcc (heif_brand2 brand, char *out_fourcc)
 
int heif_has_compatible_brand (const uint8_t *data, int len, const char *brand_fourcc)
 
struct heif_error heif_list_compatible_brands (const uint8_t *data, int len, heif_brand2 **out_brands, int *out_size)
 
void heif_free_list_of_compatible_brands (heif_brand2 *brands_list)
 
const char * heif_get_file_mime_type (const uint8_t *data, int len)
 
struct heif_context * heif_context_alloc (void)
 
void heif_context_free (struct heif_context *)
 
struct heif_error heif_context_read_from_file (struct heif_context *, const char *filename, const struct heif_reading_options *)
 
struct heif_error heif_context_read_from_memory (struct heif_context *, const void *mem, size_t size, const struct heif_reading_options *)
 
struct heif_error heif_context_read_from_memory_without_copy (struct heif_context *, const void *mem, size_t size, const struct heif_reading_options *)
 
struct heif_error heif_context_read_from_reader (struct heif_context *, const struct heif_reader *reader, void *userdata, const struct heif_reading_options *)
 
int heif_context_get_number_of_top_level_images (struct heif_context *ctx)
 
int heif_context_is_top_level_image_ID (struct heif_context *ctx, heif_item_id id)
 
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_context_get_primary_image_ID (struct heif_context *ctx, heif_item_id *id)
 
struct heif_error heif_context_get_primary_image_handle (struct heif_context *ctx, struct heif_image_handle **)
 
struct heif_error heif_context_get_image_handle (struct heif_context *ctx, heif_item_id id, struct heif_image_handle **)
 
void heif_context_debug_dump_boxes_to_file (struct heif_context *ctx, int fd)
 
void heif_context_set_maximum_image_size_limit (struct heif_context *ctx, int maximum_width)
 
void heif_context_set_max_decoding_threads (struct heif_context *ctx, int max_threads)
 
void heif_image_handle_release (const struct heif_image_handle *)
 
int heif_image_handle_is_primary_image (const struct heif_image_handle *handle)
 
heif_item_id heif_image_handle_get_item_id (const struct heif_image_handle *handle)
 
int heif_image_handle_get_width (const struct heif_image_handle *handle)
 
int heif_image_handle_get_height (const struct heif_image_handle *handle)
 
int heif_image_handle_has_alpha_channel (const struct heif_image_handle *)
 
int heif_image_handle_is_premultiplied_alpha (const struct heif_image_handle *)
 
int heif_image_handle_get_luma_bits_per_pixel (const struct heif_image_handle *)
 
int heif_image_handle_get_chroma_bits_per_pixel (const struct heif_image_handle *)
 
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)
 
int heif_image_handle_get_ispe_width (const struct heif_image_handle *handle)
 
int heif_image_handle_get_ispe_height (const struct heif_image_handle *handle)
 
struct heif_context * heif_image_handle_get_context (const struct heif_image_handle *handle)
 
int heif_image_handle_has_depth_image (const struct heif_image_handle *)
 
int heif_image_handle_get_number_of_depth_images (const struct heif_image_handle *handle)
 
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_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)
 
void heif_depth_representation_info_free (const struct heif_depth_representation_info *info)
 
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_handle_get_number_of_thumbnails (const struct heif_image_handle *handle)
 
int heif_image_handle_get_list_of_thumbnail_IDs (const struct heif_image_handle *handle, heif_item_id *ids, int count)
 
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_image_handle_get_number_of_auxiliary_images (const struct heif_image_handle *handle, int aux_filter)
 
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)
 
struct heif_error heif_image_handle_get_auxiliary_type (const struct heif_image_handle *handle, const char **out_type)
 
void heif_image_handle_release_auxiliary_type (const struct heif_image_handle *handle, const char **out_type)
 
void heif_image_handle_free_auxiliary_types (const struct heif_image_handle *handle, const char **out_type)
 
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)
 
int heif_image_handle_get_number_of_metadata_blocks (const struct heif_image_handle *handle, const char *type_filter)
 
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)
 
const char * heif_image_handle_get_metadata_type (const struct heif_image_handle *handle, heif_item_id metadata_id)
 
const char * heif_image_handle_get_metadata_content_type (const struct heif_image_handle *handle, heif_item_id metadata_id)
 
size_t heif_image_handle_get_metadata_size (const struct heif_image_handle *handle, heif_item_id metadata_id)
 
struct heif_error heif_image_handle_get_metadata (const struct heif_image_handle *handle, heif_item_id metadata_id, void *out_data)
 
const char * heif_image_handle_get_metadata_item_uri_type (const struct heif_image_handle *handle, heif_item_id metadata_id)
 
enum heif_color_profile_type heif_image_handle_get_color_profile_type (const struct heif_image_handle *handle)
 
size_t heif_image_handle_get_raw_color_profile_size (const struct heif_image_handle *handle)
 
struct heif_error heif_image_handle_get_raw_color_profile (const struct heif_image_handle *handle, void *out_data)
 
struct heif_error heif_nclx_color_profile_set_color_primaries (struct heif_color_profile_nclx *nclx, uint16_t cp)
 
struct heif_error heif_nclx_color_profile_set_transfer_characteristics (struct heif_color_profile_nclx *nclx, uint16_t transfer_characteristics)
 
struct heif_error heif_nclx_color_profile_set_matrix_coefficients (struct heif_color_profile_nclx *nclx, uint16_t matrix_coefficients)
 
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_color_profile_nclxheif_nclx_color_profile_alloc (void)
 
void heif_nclx_color_profile_free (struct heif_color_profile_nclx *nclx_profile)
 
enum heif_color_profile_type heif_image_get_color_profile_type (const struct heif_image *image)
 
size_t heif_image_get_raw_color_profile_size (const struct heif_image *image)
 
struct heif_error heif_image_get_raw_color_profile (const struct heif_image *image, void *out_data)
 
struct heif_error heif_image_get_nclx_color_profile (const struct heif_image *image, struct heif_color_profile_nclx **out_data)
 
int heif_image_handle_has_camera_intrinsic_matrix (const struct heif_image_handle *handle)
 
struct heif_error heif_image_handle_get_camera_intrinsic_matrix (const struct heif_image_handle *handle, struct heif_camera_intrinsic_matrix *out_matrix)
 
int heif_image_handle_has_camera_extrinsic_matrix (const struct heif_image_handle *handle)
 
struct heif_error heif_image_handle_get_camera_extrinsic_matrix (const struct heif_image_handle *handle, struct heif_camera_extrinsic_matrix **out_matrix)
 
void heif_camera_extrinsic_matrix_release (struct heif_camera_extrinsic_matrix *)
 
struct heif_error heif_camera_extrinsic_matrix_get_rotation_matrix (const struct heif_camera_extrinsic_matrix *, double *out_matrix_row_major)
 
struct heif_decoding_optionsheif_decoding_options_alloc (void)
 
void heif_decoding_options_free (struct heif_decoding_options *)
 
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)
 
enum heif_colorspace heif_image_get_colorspace (const struct heif_image *)
 
enum heif_chroma heif_image_get_chroma_format (const struct heif_image *)
 
int heif_image_get_width (const struct heif_image *img, enum heif_channel channel)
 Get the width of a specified image channel.
 
int heif_image_get_height (const struct heif_image *img, enum heif_channel channel)
 Get the height of a specified image channel.
 
int heif_image_get_primary_width (const struct heif_image *img)
 Get the width of the main channel.
 
int heif_image_get_primary_height (const struct heif_image *img)
 Get the height of the main channel.
 
struct heif_error heif_image_crop (struct heif_image *img, int left, int right, int top, int bottom)
 
int heif_image_get_bits_per_pixel (const struct heif_image *, enum heif_channel channel)
 
int heif_image_get_bits_per_pixel_range (const struct heif_image *, enum heif_channel channel)
 
int heif_image_has_channel (const struct heif_image *, enum heif_channel channel)
 
const uint8_t * heif_image_get_plane_readonly (const struct heif_image *, enum heif_channel channel, int *out_stride)
 
uint8_t * heif_image_get_plane (struct heif_image *, enum heif_channel channel, int *out_stride)
 
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)
 
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)
 
struct heif_error heif_image_set_nclx_color_profile (struct heif_image *image, const struct heif_color_profile_nclx *color_profile)
 
int heif_image_get_decoding_warnings (struct heif_image *image, int first_warning_idx, struct heif_error *out_warnings, int max_output_buffer_entries)
 
void heif_image_add_decoding_warning (struct heif_image *image, struct heif_error err)
 
void heif_image_release (const struct heif_image *)
 
int heif_image_has_content_light_level (const struct heif_image *)
 
void heif_image_get_content_light_level (const struct heif_image *, struct heif_content_light_level *out)
 
void heif_image_set_content_light_level (const struct heif_image *, const struct heif_content_light_level *in)
 
int heif_image_has_mastering_display_colour_volume (const struct heif_image *)
 
void heif_image_get_mastering_display_colour_volume (const struct heif_image *, struct heif_mastering_display_colour_volume *out)
 
void heif_image_set_mastering_display_colour_volume (const struct heif_image *, const struct heif_mastering_display_colour_volume *in)
 
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)
 
void heif_image_get_pixel_aspect_ratio (const struct heif_image *, uint32_t *aspect_h, uint32_t *aspect_v)
 
void heif_image_set_pixel_aspect_ratio (struct heif_image *, uint32_t aspect_h, uint32_t aspect_v)
 
struct heif_error heif_context_write_to_file (struct heif_context *, const char *filename)
 
struct heif_error heif_context_write (struct heif_context *, struct heif_writer *writer, void *userdata)
 
void heif_context_add_compatible_brand (struct heif_context *ctx, heif_brand2 compatible_brand)
 
int heif_get_decoder_descriptors (enum heif_compression_format format_filter, const struct heif_decoder_descriptor **out_decoders, int count)
 
const char * heif_decoder_descriptor_get_name (const struct heif_decoder_descriptor *)
 
const char * heif_decoder_descriptor_get_id_name (const struct heif_decoder_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)
 
int heif_get_encoder_descriptors (enum heif_compression_format format_filter, const char *name_filter, const struct heif_encoder_descriptor **out_encoders, int count)
 
const char * heif_encoder_descriptor_get_name (const struct heif_encoder_descriptor *)
 
const char * heif_encoder_descriptor_get_id_name (const struct heif_encoder_descriptor *)
 
enum heif_compression_format heif_encoder_descriptor_get_compression_format (const struct heif_encoder_descriptor *)
 
int heif_encoder_descriptor_supports_lossy_compression (const struct heif_encoder_descriptor *)
 
int heif_encoder_descriptor_supports_lossless_compression (const struct heif_encoder_descriptor *)
 
struct heif_error heif_context_get_encoder (struct heif_context *context, const struct heif_encoder_descriptor *, struct heif_encoder **out_encoder)
 
int heif_have_decoder_for_format (enum heif_compression_format format)
 
int heif_have_encoder_for_format (enum heif_compression_format format)
 
struct heif_error heif_context_get_encoder_for_format (struct heif_context *context, enum heif_compression_format format, struct heif_encoder **)
 
void heif_encoder_release (struct heif_encoder *)
 
const char * heif_encoder_get_name (const struct heif_encoder *)
 
struct heif_error heif_encoder_set_lossy_quality (struct heif_encoder *, int quality)
 
struct heif_error heif_encoder_set_lossless (struct heif_encoder *, int enable)
 
struct heif_error heif_encoder_set_logging_level (struct heif_encoder *, int level)
 
const struct heif_encoder_parameter *const * heif_encoder_list_parameters (struct heif_encoder *)
 
const char * heif_encoder_parameter_get_name (const struct heif_encoder_parameter *)
 
enum heif_encoder_parameter_type heif_encoder_parameter_get_type (const struct heif_encoder_parameter *)
 
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_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)
 
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_set_parameter_integer (struct heif_encoder *, const char *parameter_name, int value)
 
struct heif_error heif_encoder_get_parameter_integer (struct heif_encoder *, const char *parameter_name, int *value)
 
struct heif_error heif_encoder_parameter_integer_valid_range (struct heif_encoder *, const char *parameter_name, int *have_minimum_maximum, int *minimum, int *maximum)
 
struct heif_error heif_encoder_set_parameter_boolean (struct heif_encoder *, const char *parameter_name, int value)
 
struct heif_error heif_encoder_get_parameter_boolean (struct heif_encoder *, const char *parameter_name, int *value)
 
struct heif_error heif_encoder_set_parameter_string (struct heif_encoder *, const char *parameter_name, const char *value)
 
struct heif_error heif_encoder_get_parameter_string (struct heif_encoder *, const char *parameter_name, char *value, int value_size)
 
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_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)
 
struct heif_error heif_encoder_set_parameter (struct heif_encoder *, const char *parameter_name, const char *value)
 
struct heif_error heif_encoder_get_parameter (struct heif_encoder *, const char *parameter_name, char *value_ptr, int value_size)
 
int heif_encoder_has_default (struct heif_encoder *, const char *parameter_name)
 
struct heif_encoding_optionsheif_encoding_options_alloc (void)
 
void heif_encoding_options_free (struct heif_encoding_options *)
 
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)
 
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_context_set_primary_image (struct heif_context *, struct heif_image_handle *image_handle)
 
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_assign_thumbnail (struct heif_context *, const struct heif_image_handle *master_image, const struct heif_image_handle *thumbnail_image)
 
struct heif_error heif_context_add_exif_metadata (struct heif_context *, const struct heif_image_handle *image_handle, const void *data, int size)
 
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_context_add_XMP_metadata2 (struct heif_context *, const struct heif_image_handle *image_handle, const void *data, int size, enum heif_metadata_compression compression)
 
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_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)
 
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_add_plane (struct heif_image *image, enum heif_channel channel, int width, int height, int bit_depth)
 Add an image plane to the image.
 
void heif_image_set_premultiplied_alpha (struct heif_image *image, int is_premultiplied_alpha)
 
int heif_image_is_premultiplied_alpha (struct heif_image *image)
 
struct heif_error heif_image_extend_padding_to_size (struct heif_image *image, int min_physical_width, int min_physical_height)
 
struct heif_error heif_register_decoder (struct heif_context *heif, const struct heif_decoder_plugin *)
 
struct heif_error heif_register_decoder_plugin (const struct heif_decoder_plugin *)
 
struct heif_error heif_register_encoder_plugin (const struct heif_encoder_plugin *)
 
int heif_encoder_descriptor_supportes_lossy_compression (const struct heif_encoder_descriptor *)
 
int heif_encoder_descriptor_supportes_lossless_compression (const struct heif_encoder_descriptor *)
 

Variables

const struct heif_error heif_error_success
 

Detailed Description

Public API for libheif.

Macro Definition Documentation

◆ heif_brand2_1pic

#define heif_brand2_1pic   heif_fourcc('1','p','i','c')

Single picture file brand.

This is a compatible brand indicating the file contains a single intra-coded picture.

See ISO/IEC 23008-12:2022 Section 10.2.5.

◆ heif_brand2_avif

#define heif_brand2_avif   heif_fourcc('a','v','i','f')

◆ heif_brand2_avis

#define heif_brand2_avis   heif_fourcc('a','v','i','s')

◆ heif_brand2_evbi

#define heif_brand2_evbi   heif_fourcc('e','v','b','i')

EVC baseline image (evbi) brand.

See ISO/IEC 23008-12:2022 Section M.4.1.

◆ heif_brand2_evbs

#define heif_brand2_evbs   heif_fourcc('e','v','b','s')

EVC baseline image sequence (evbs) brand.

See ISO/IEC 23008-12:2022 Section M.4.3.

◆ heif_brand2_evmi

#define heif_brand2_evmi   heif_fourcc('e','v','m','i')

EVC main profile image (evmi) brand.

See ISO/IEC 23008-12:2022 Section M.4.2.

◆ heif_brand2_evms

#define heif_brand2_evms   heif_fourcc('e','v','m','s')

EVC main profile image sequence (evms) brand.

See ISO/IEC 23008-12:2022 Section M.4.4.

◆ heif_brand2_heic

#define heif_brand2_heic   heif_fourcc('h','e','i','c')

HEVC image (heic) brand.

Image conforms to HEVC (H.265) Main or Main Still profile.

See ISO/IEC 23008-12:2022 Section B.4.1.

◆ heif_brand2_heim

#define heif_brand2_heim   heif_fourcc('h','e','i','m')

HEVC layered image (heim) brand.

Image layers conform to HEVC (H.265) Main or Multiview Main profile.

See ISO/IEC 23008-12:2022 Section B.4.3.

◆ heif_brand2_heis

#define heif_brand2_heis   heif_fourcc('h','e','i','s')

HEVC layered image (heis) brand.

Image layers conform to HEVC (H.265) Main, Main 10, Scalable Main or Scalable Main 10 profile.

See ISO/IEC 23008-12:2022 Section B.4.3.

◆ heif_brand2_heix

#define heif_brand2_heix   heif_fourcc('h','e','i','x')

HEVC image (heix) brand.

Image conforms to HEVC (H.265) Main 10 profile.

See ISO/IEC 23008-12:2022 Section B.4.1.

◆ heif_brand2_hevc

#define heif_brand2_hevc   heif_fourcc('h','e','v','c')

HEVC image sequence (hevc) brand.

Image sequence conforms to HEVC (H.265) Main profile.

See ISO/IEC 23008-12:2022 Section B.4.2.

◆ heif_brand2_hevm

#define heif_brand2_hevm   heif_fourcc('h','e','v','m')

HEVC layered image sequence (hevm) brand.

Image sequence layers conform to HEVC (H.265) Main or Multiview Main profile.

See ISO/IEC 23008-12:2022 Section B.4.4.

◆ heif_brand2_hevs

#define heif_brand2_hevs   heif_fourcc('h','e','v','s')

HEVC layered image sequence (hevs) brand.

Image sequence layers conform to HEVC (H.265) Main, Main 10, Scalable Main or Scalable Main 10 profile.

See ISO/IEC 23008-12:2022 Section B.4.4.

◆ heif_brand2_hevx

#define heif_brand2_hevx   heif_fourcc('h','e','v','x')

HEVC image sequence (hevx) brand.

Image sequence conforms to HEVC (H.265) Main 10 profile.

See ISO/IEC 23008-12:2022 Section B.4.2.

◆ heif_brand2_j2is

#define heif_brand2_j2is   heif_fourcc('j','2','i','s')

JPEG 2000 image sequence (j2is) brand.

See ISO/IEC 15444-16:2021 Section 7.6

◆ heif_brand2_j2ki

#define heif_brand2_j2ki   heif_fourcc('j','2','k','i')

JPEG 2000 image (j2ki) brand.

See ISO/IEC 15444-16:2021 Section 6.5

◆ heif_brand2_jpeg

#define heif_brand2_jpeg   heif_fourcc('j','p','e','g')

JPEG image (jpeg) brand.

See ISO/IEC 23008-12:2022 Annex H.4

◆ heif_brand2_jpgs

#define heif_brand2_jpgs   heif_fourcc('j','p','g','s')

JPEG image sequence (jpgs) brand.

See ISO/IEC 23008-12:2022 Annex H.5

◆ heif_brand2_miaf

#define heif_brand2_miaf   heif_fourcc('m','i','a','f')

Multi-image application format (MIAF) brand.

This is HEIF with additional constraints for interoperability.

See ISO/IEC 23000-22.

◆ heif_brand2_mif1

#define heif_brand2_mif1   heif_fourcc('m','i','f','1')

HEIF image structural brand (mif1).

This does not imply a specific coding algorithm.

See ISO/IEC 23008-12:2022 Section 10.2.2.

◆ heif_brand2_mif2

#define heif_brand2_mif2   heif_fourcc('m','i','f','2')

HEIF image structural brand (mif2).

This does not imply a specific coding algorithm. mif2 extends the requirements of mif1 to include the rref and iscl item properties.

See ISO/IEC 23008-12:2022 Section 10.2.3.

◆ heif_brand2_msf1

#define heif_brand2_msf1   heif_fourcc('m','s','f','1')

HEIF image sequence structural brand (msf1).

This does not imply a specific coding algorithm.

See ISO/IEC 23008-12:2022 Section 10.3.1.

◆ heif_brand2_vvic

#define heif_brand2_vvic   heif_fourcc('v','v','i','c')

VVC image (vvic) brand.

See ISO/IEC 23008-12:2022 Section L.4.1.

◆ heif_brand2_vvis

#define heif_brand2_vvis   heif_fourcc('v','v','i','s')

VVC image sequence (vvis) brand.

See ISO/IEC 23008-12:2022 Section L.4.2.

◆ heif_chroma_interleaved_24bit

#define heif_chroma_interleaved_24bit   heif_chroma_interleaved_RGB

◆ heif_chroma_interleaved_32bit

#define heif_chroma_interleaved_32bit   heif_chroma_interleaved_RGBA

◆ heif_fourcc

#define heif_fourcc ( a,
b,
c,
d )
Value:
((uint32_t)((a<<24) | (b<<16) | (c<<8) | d))

◆ LIBHEIF_API

#define LIBHEIF_API

◆ LIBHEIF_AUX_IMAGE_FILTER_OMIT_ALPHA

#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_ALPHA   (1UL<<1)

◆ LIBHEIF_AUX_IMAGE_FILTER_OMIT_DEPTH

#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_DEPTH   (2UL<<1)

◆ LIBHEIF_HAVE_VERSION

#define LIBHEIF_HAVE_VERSION ( h,
m,
l )
Value:
(LIBHEIF_NUMERIC_VERSION >= LIBHEIF_MAKE_VERSION(h, m, l))
#define LIBHEIF_MAKE_VERSION(h, m, l)
Definition heif.h:92

◆ LIBHEIF_MAKE_VERSION

#define LIBHEIF_MAKE_VERSION ( h,
m,
l )
Value:
((h) << 24 | (m) << 16 | (l) << 8)

Typedef Documentation

◆ heif_brand2

typedef uint32_t heif_brand2

◆ heif_item_id

typedef uint32_t heif_item_id

◆ heif_property_id

typedef uint32_t heif_property_id

Enumeration Type Documentation

◆ heif_brand

enum heif_brand
Enumerator
heif_unknown_brand 
heif_heic 
heif_heix 
heif_hevc 
heif_hevx 
heif_heim 
heif_heis 
heif_hevm 
heif_hevs 
heif_mif1 
heif_msf1 
heif_avif 
heif_avis 
heif_vvic 
heif_vvis 
heif_evbi 
heif_evbs 
heif_j2ki 
heif_j2is 

◆ heif_channel

Enumerator
heif_channel_Y 
heif_channel_Cb 
heif_channel_Cr 
heif_channel_R 
heif_channel_G 
heif_channel_B 
heif_channel_Alpha 
heif_channel_interleaved 

◆ heif_chroma

Enumerator
heif_chroma_undefined 
heif_chroma_monochrome 
heif_chroma_420 
heif_chroma_422 
heif_chroma_444 
heif_chroma_interleaved_RGB 
heif_chroma_interleaved_RGBA 
heif_chroma_interleaved_RRGGBB_BE 
heif_chroma_interleaved_RRGGBBAA_BE 
heif_chroma_interleaved_RRGGBB_LE 
heif_chroma_interleaved_RRGGBBAA_LE 

◆ heif_chroma_downsampling_algorithm

Enumerator
heif_chroma_downsampling_nearest_neighbor 
heif_chroma_downsampling_average 
heif_chroma_downsampling_sharp_yuv 

◆ heif_chroma_upsampling_algorithm

Enumerator
heif_chroma_upsampling_nearest_neighbor 
heif_chroma_upsampling_bilinear 

◆ heif_color_primaries

Enumerator
heif_color_primaries_ITU_R_BT_709_5 
heif_color_primaries_unspecified 
heif_color_primaries_ITU_R_BT_470_6_System_M 
heif_color_primaries_ITU_R_BT_470_6_System_B_G 
heif_color_primaries_ITU_R_BT_601_6 
heif_color_primaries_SMPTE_240M 
heif_color_primaries_generic_film 
heif_color_primaries_ITU_R_BT_2020_2_and_2100_0 
heif_color_primaries_SMPTE_ST_428_1 
heif_color_primaries_SMPTE_RP_431_2 
heif_color_primaries_SMPTE_EG_432_1 
heif_color_primaries_EBU_Tech_3213_E 

◆ heif_color_profile_type

Enumerator
heif_color_profile_type_not_present 
heif_color_profile_type_nclx 
heif_color_profile_type_rICC 
heif_color_profile_type_prof 

◆ heif_colorspace

Enumerator
heif_colorspace_undefined 
heif_colorspace_YCbCr 
heif_colorspace_RGB 
heif_colorspace_monochrome 

◆ heif_compression_format

libheif known compression formats.

Enumerator
heif_compression_undefined 

Unspecified / undefined compression format.

This is used to mean "no match" or "any decoder" for some parts of the API. It does not indicate a specific compression format.

heif_compression_HEVC 

HEVC compression, used for HEIC images.

This is equivalent to H.265.

heif_compression_AVC 

AVC compression.

(Currently unused in libheif.)

The compression is defined in ISO/IEC 14496-10. This is equivalent to H.264.

The encapsulation is defined in ISO/IEC 23008-12:2022 Annex E.

heif_compression_JPEG 

JPEG compression.

The compression format is defined in ISO/IEC 10918-1. The encapsulation of JPEG is specified in ISO/IEC 23008-12:2022 Annex H.

heif_compression_AV1 

AV1 compression, used for AVIF images.

The compression format is provided at https://aomediacodec.github.io/av1-spec/

The encapsulation is defined in https://aomediacodec.github.io/av1-avif/

heif_compression_VVC 

VVC compression.

(Currently unused in libheif.)

The compression format is defined in ISO/IEC 23090-3. This is equivalent to H.266.

The encapsulation is defined in ISO/IEC 23008-12:2022 Annex L.

heif_compression_EVC 

EVC compression.

(Currently unused in libheif.)

The compression format is defined in ISO/IEC 23094-1. This is equivalent to H.266.

The encapsulation is defined in ISO/IEC 23008-12:2022 Annex M.

heif_compression_JPEG2000 

JPEG 2000 compression.

The encapsulation of JPEG 2000 is specified in ISO/IEC 15444-16:2021. The core encoding is defined in ISO/IEC 15444-1, or ITU-T T.800.

heif_compression_uncompressed 

Uncompressed encoding.

This is defined in ISO/IEC 23001-17:2023 (Final Draft International Standard).

heif_compression_mask 

Mask image encoding.

See ISO/IEC 23008-12:2022 Section 6.10.2

heif_compression_HTJ2K 

High Throughput JPEG 2000 (HT-J2K) compression.

The encapsulation of HT-J2K is specified in ISO/IEC 15444-16:2021. The core encoding is defined in ISO/IEC 15444-15, or ITU-T T.814.

◆ heif_depth_representation_type

Enumerator
heif_depth_representation_type_uniform_inverse_Z 
heif_depth_representation_type_uniform_disparity 
heif_depth_representation_type_uniform_Z 
heif_depth_representation_type_nonuniform_disparity 

◆ heif_encoder_parameter_type

Enumerator
heif_encoder_parameter_type_integer 
heif_encoder_parameter_type_boolean 
heif_encoder_parameter_type_string 

◆ heif_error_code

Enumerator
heif_error_Ok 
heif_error_Input_does_not_exist 
heif_error_Invalid_input 
heif_error_Unsupported_filetype 
heif_error_Unsupported_feature 
heif_error_Usage_error 
heif_error_Memory_allocation_error 
heif_error_Decoder_plugin_error 
heif_error_Encoder_plugin_error 
heif_error_Encoding_error 
heif_error_Color_profile_does_not_exist 
heif_error_Plugin_loading_error 

◆ heif_filetype_result

Enumerator
heif_filetype_no 
heif_filetype_yes_supported 
heif_filetype_yes_unsupported 
heif_filetype_maybe 

◆ heif_matrix_coefficients

Enumerator
heif_matrix_coefficients_RGB_GBR 
heif_matrix_coefficients_ITU_R_BT_709_5 
heif_matrix_coefficients_unspecified 
heif_matrix_coefficients_US_FCC_T47 
heif_matrix_coefficients_ITU_R_BT_470_6_System_B_G 
heif_matrix_coefficients_ITU_R_BT_601_6 
heif_matrix_coefficients_SMPTE_240M 
heif_matrix_coefficients_YCgCo 
heif_matrix_coefficients_ITU_R_BT_2020_2_non_constant_luminance 
heif_matrix_coefficients_ITU_R_BT_2020_2_constant_luminance 
heif_matrix_coefficients_SMPTE_ST_2085 
heif_matrix_coefficients_chromaticity_derived_non_constant_luminance 
heif_matrix_coefficients_chromaticity_derived_constant_luminance 
heif_matrix_coefficients_ICtCp 

◆ heif_metadata_compression

Enumerator
heif_metadata_compression_off 
heif_metadata_compression_auto 
heif_metadata_compression_unknown 
heif_metadata_compression_deflate 
heif_metadata_compression_zlib 
heif_metadata_compression_brotli 

◆ heif_orientation

Enumerator
heif_orientation_normal 
heif_orientation_flip_horizontally 
heif_orientation_rotate_180 
heif_orientation_flip_vertically 
heif_orientation_rotate_90_cw_then_flip_horizontally 
heif_orientation_rotate_90_cw 
heif_orientation_rotate_90_cw_then_flip_vertically 
heif_orientation_rotate_270_cw 

◆ heif_plugin_type

Enumerator
heif_plugin_type_encoder 
heif_plugin_type_decoder 

◆ heif_progress_step

Enumerator
heif_progress_step_total 
heif_progress_step_load_tile 

◆ heif_reader_grow_status

Enumerator
heif_reader_grow_status_size_reached 
heif_reader_grow_status_timeout 
heif_reader_grow_status_size_beyond_eof 

◆ heif_suberror_code

Enumerator
heif_suberror_Unspecified 
heif_suberror_End_of_data 
heif_suberror_Invalid_box_size 
heif_suberror_No_ftyp_box 
heif_suberror_No_idat_box 
heif_suberror_No_meta_box 
heif_suberror_No_hdlr_box 
heif_suberror_No_hvcC_box 
heif_suberror_No_pitm_box 
heif_suberror_No_ipco_box 
heif_suberror_No_ipma_box 
heif_suberror_No_iloc_box 
heif_suberror_No_iinf_box 
heif_suberror_No_iprp_box 
heif_suberror_No_iref_box 
heif_suberror_No_pict_handler 
heif_suberror_Ipma_box_references_nonexisting_property 
heif_suberror_No_properties_assigned_to_item 
heif_suberror_No_item_data 
heif_suberror_Invalid_grid_data 
heif_suberror_Missing_grid_images 
heif_suberror_Invalid_clean_aperture 
heif_suberror_Invalid_overlay_data 
heif_suberror_Overlay_image_outside_of_canvas 
heif_suberror_Auxiliary_image_type_unspecified 
heif_suberror_No_or_invalid_primary_item 
heif_suberror_No_infe_box 
heif_suberror_Unknown_color_profile_type 
heif_suberror_Wrong_tile_image_chroma_format 
heif_suberror_Invalid_fractional_number 
heif_suberror_Invalid_image_size 
heif_suberror_Invalid_pixi_box 
heif_suberror_No_av1C_box 
heif_suberror_Wrong_tile_image_pixel_depth 
heif_suberror_Unknown_NCLX_color_primaries 
heif_suberror_Unknown_NCLX_transfer_characteristics 
heif_suberror_Unknown_NCLX_matrix_coefficients 
heif_suberror_Invalid_region_data 
heif_suberror_No_ispe_property 
heif_suberror_Camera_intrinsic_matrix_undefined 
heif_suberror_Camera_extrinsic_matrix_undefined 
heif_suberror_Invalid_J2K_codestream 
heif_suberror_No_vvcC_box 
heif_suberror_No_icbr_box 
heif_suberror_Decompression_invalid_data 
heif_suberror_Security_limit_exceeded 
heif_suberror_Compression_initialisation_error 
heif_suberror_Nonexisting_item_referenced 
heif_suberror_Null_pointer_argument 
heif_suberror_Nonexisting_image_channel_referenced 
heif_suberror_Unsupported_plugin_version 
heif_suberror_Unsupported_writer_version 
heif_suberror_Unsupported_parameter 
heif_suberror_Invalid_parameter_value 
heif_suberror_Invalid_property 
heif_suberror_Item_reference_cycle 
heif_suberror_Unsupported_codec 
heif_suberror_Unsupported_image_type 
heif_suberror_Unsupported_data_version 
heif_suberror_Unsupported_color_conversion 
heif_suberror_Unsupported_item_construction_method 
heif_suberror_Unsupported_header_compression_method 
heif_suberror_Unsupported_generic_compression_method 
heif_suberror_Unsupported_bit_depth 
heif_suberror_Cannot_write_output_data 
heif_suberror_Encoder_initialization 
heif_suberror_Encoder_encoding 
heif_suberror_Encoder_cleanup 
heif_suberror_Too_many_regions 
heif_suberror_Plugin_loading_error 
heif_suberror_Plugin_is_not_loaded 
heif_suberror_Cannot_read_plugin_directory 
heif_suberror_No_matching_decoder_installed 

◆ heif_transfer_characteristics

Enumerator
heif_transfer_characteristic_ITU_R_BT_709_5 
heif_transfer_characteristic_unspecified 
heif_transfer_characteristic_ITU_R_BT_470_6_System_M 
heif_transfer_characteristic_ITU_R_BT_470_6_System_B_G 
heif_transfer_characteristic_ITU_R_BT_601_6 
heif_transfer_characteristic_SMPTE_240M 
heif_transfer_characteristic_linear 
heif_transfer_characteristic_logarithmic_100 
heif_transfer_characteristic_logarithmic_100_sqrt10 
heif_transfer_characteristic_IEC_61966_2_4 
heif_transfer_characteristic_ITU_R_BT_1361 
heif_transfer_characteristic_IEC_61966_2_1 
heif_transfer_characteristic_ITU_R_BT_2020_2_10bit 
heif_transfer_characteristic_ITU_R_BT_2020_2_12bit 
heif_transfer_characteristic_ITU_R_BT_2100_0_PQ 
heif_transfer_characteristic_SMPTE_ST_428_1 
heif_transfer_characteristic_ITU_R_BT_2100_0_HLG 

Function Documentation

◆ heif_brand_to_fourcc()

void heif_brand_to_fourcc ( heif_brand2 brand,
char * out_fourcc )

◆ heif_camera_extrinsic_matrix_get_rotation_matrix()

struct heif_error heif_camera_extrinsic_matrix_get_rotation_matrix ( const struct heif_camera_extrinsic_matrix * ,
double * out_matrix_row_major )

◆ heif_camera_extrinsic_matrix_release()

void heif_camera_extrinsic_matrix_release ( struct heif_camera_extrinsic_matrix * )

◆ heif_check_filetype()

enum heif_filetype_result heif_check_filetype ( const uint8_t * data,
int len )

◆ heif_check_jpeg_filetype()

int heif_check_jpeg_filetype ( const uint8_t * data,
int len )

◆ heif_context_add_compatible_brand()

void heif_context_add_compatible_brand ( struct heif_context * ctx,
heif_brand2 compatible_brand )

◆ heif_context_add_exif_metadata()

struct heif_error heif_context_add_exif_metadata ( struct heif_context * ,
const struct heif_image_handle * image_handle,
const void * data,
int size )

◆ heif_context_add_generic_metadata()

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 )

◆ heif_context_add_generic_uri_metadata()

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 )

◆ heif_context_add_XMP_metadata()

struct heif_error heif_context_add_XMP_metadata ( struct heif_context * ,
const struct heif_image_handle * image_handle,
const void * data,
int size )

◆ heif_context_add_XMP_metadata2()

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 )

◆ heif_context_alloc()

struct heif_context * heif_context_alloc ( void )

◆ heif_context_assign_thumbnail()

struct heif_error heif_context_assign_thumbnail ( struct heif_context * ,
const struct heif_image_handle * master_image,
const struct heif_image_handle * thumbnail_image )

◆ heif_context_debug_dump_boxes_to_file()

void heif_context_debug_dump_boxes_to_file ( struct heif_context * ctx,
int fd )

◆ heif_context_encode_grid()

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.

Parameters
ctxThe file context
tilesUser allocated array of images that will form the grid.
rowsThe number of rows in the grid.
columnsThe number of columns in the grid.
encoderDefines the encoder to use. See heif_context_get_encoder_for_format()
input_optionsOptional, may be nullptr.
out_image_handleReturns a handle to the grid. The caller is responsible for freeing it.
Returns
Returns an error if ctx, tiles, or encoder is nullptr. If rows or columns is 0.

◆ heif_context_encode_image()

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 )

◆ heif_context_encode_thumbnail()

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 )

◆ heif_context_free()

void heif_context_free ( struct heif_context * )

◆ heif_context_get_encoder()

struct heif_error heif_context_get_encoder ( struct heif_context * context,
const struct heif_encoder_descriptor * ,
struct heif_encoder ** out_encoder )

◆ heif_context_get_encoder_descriptors()

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 )

◆ heif_context_get_encoder_for_format()

struct heif_error heif_context_get_encoder_for_format ( struct heif_context * context,
enum heif_compression_format format,
struct heif_encoder **  )

◆ heif_context_get_image_handle()

struct heif_error heif_context_get_image_handle ( struct heif_context * ctx,
heif_item_id id,
struct heif_image_handle **  )

◆ heif_context_get_list_of_top_level_image_IDs()

int heif_context_get_list_of_top_level_image_IDs ( struct heif_context * ctx,
heif_item_id * ID_array,
int count )

◆ heif_context_get_number_of_top_level_images()

int heif_context_get_number_of_top_level_images ( struct heif_context * ctx)

◆ heif_context_get_primary_image_handle()

struct heif_error heif_context_get_primary_image_handle ( struct heif_context * ctx,
struct heif_image_handle **  )

◆ heif_context_get_primary_image_ID()

struct heif_error heif_context_get_primary_image_ID ( struct heif_context * ctx,
heif_item_id * id )

◆ heif_context_is_top_level_image_ID()

int heif_context_is_top_level_image_ID ( struct heif_context * ctx,
heif_item_id id )

◆ heif_context_read_from_file()

struct heif_error heif_context_read_from_file ( struct heif_context * ,
const char * filename,
const struct heif_reading_options *  )

◆ heif_context_read_from_memory()

struct heif_error heif_context_read_from_memory ( struct heif_context * ,
const void * mem,
size_t size,
const struct heif_reading_options *  )

◆ heif_context_read_from_memory_without_copy()

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_context_read_from_reader()

struct heif_error heif_context_read_from_reader ( struct heif_context * ,
const struct heif_reader * reader,
void * userdata,
const struct heif_reading_options *  )

◆ heif_context_set_max_decoding_threads()

void heif_context_set_max_decoding_threads ( struct heif_context * ctx,
int max_threads )

◆ heif_context_set_maximum_image_size_limit()

void heif_context_set_maximum_image_size_limit ( struct heif_context * ctx,
int maximum_width )

◆ heif_context_set_primary_image()

struct heif_error heif_context_set_primary_image ( struct heif_context * ,
struct heif_image_handle * image_handle )

◆ heif_context_write()

struct heif_error heif_context_write ( struct heif_context * ,
struct heif_writer * writer,
void * userdata )

◆ heif_context_write_to_file()

struct heif_error heif_context_write_to_file ( struct heif_context * ,
const char * filename )

◆ heif_decode_image()

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 )

◆ heif_decoder_descriptor_get_id_name()

const char * heif_decoder_descriptor_get_id_name ( const struct heif_decoder_descriptor * )

◆ heif_decoder_descriptor_get_name()

const char * heif_decoder_descriptor_get_name ( const struct heif_decoder_descriptor * )

◆ heif_decoding_options_alloc()

struct heif_decoding_options * heif_decoding_options_alloc ( void )

◆ heif_decoding_options_free()

void heif_decoding_options_free ( struct heif_decoding_options * )

◆ heif_deinit()

void heif_deinit ( void )

Deinitialise and clean up library.

You should call heif_init() when you start using libheif and heif_deinit() when you are finished. These calls are reference counted. Each call to heif_init() should be matched by one call to heif_deinit().

See also
heif_init()

◆ heif_depth_representation_info_free()

void heif_depth_representation_info_free ( const struct heif_depth_representation_info * info)

◆ heif_encoder_descriptor_get_compression_format()

enum heif_compression_format heif_encoder_descriptor_get_compression_format ( const struct heif_encoder_descriptor * )

◆ heif_encoder_descriptor_get_id_name()

const char * heif_encoder_descriptor_get_id_name ( const struct heif_encoder_descriptor * )

◆ heif_encoder_descriptor_get_name()

const char * heif_encoder_descriptor_get_name ( const struct heif_encoder_descriptor * )

◆ heif_encoder_descriptor_supportes_lossless_compression()

int heif_encoder_descriptor_supportes_lossless_compression ( const struct heif_encoder_descriptor * )

◆ heif_encoder_descriptor_supportes_lossy_compression()

int heif_encoder_descriptor_supportes_lossy_compression ( const struct heif_encoder_descriptor * )

◆ heif_encoder_descriptor_supports_lossless_compression()

int heif_encoder_descriptor_supports_lossless_compression ( const struct heif_encoder_descriptor * )

◆ heif_encoder_descriptor_supports_lossy_compression()

int heif_encoder_descriptor_supports_lossy_compression ( const struct heif_encoder_descriptor * )

◆ heif_encoder_get_name()

const char * heif_encoder_get_name ( const struct heif_encoder * )

◆ heif_encoder_get_parameter()

struct heif_error heif_encoder_get_parameter ( struct heif_encoder * ,
const char * parameter_name,
char * value_ptr,
int value_size )

◆ heif_encoder_get_parameter_boolean()

struct heif_error heif_encoder_get_parameter_boolean ( struct heif_encoder * ,
const char * parameter_name,
int * value )

◆ heif_encoder_get_parameter_integer()

struct heif_error heif_encoder_get_parameter_integer ( struct heif_encoder * ,
const char * parameter_name,
int * value )

◆ heif_encoder_get_parameter_string()

struct heif_error heif_encoder_get_parameter_string ( struct heif_encoder * ,
const char * parameter_name,
char * value,
int value_size )

◆ heif_encoder_has_default()

int heif_encoder_has_default ( struct heif_encoder * ,
const char * parameter_name )

◆ heif_encoder_list_parameters()

const struct heif_encoder_parameter *const * heif_encoder_list_parameters ( struct heif_encoder * )

◆ heif_encoder_parameter_get_name()

const char * heif_encoder_parameter_get_name ( const struct heif_encoder_parameter * )

◆ heif_encoder_parameter_get_type()

enum heif_encoder_parameter_type heif_encoder_parameter_get_type ( const struct heif_encoder_parameter * )

◆ heif_encoder_parameter_get_valid_integer_range()

struct heif_error heif_encoder_parameter_get_valid_integer_range ( const struct heif_encoder_parameter * ,
int * have_minimum_maximum,
int * minimum,
int * maximum )

◆ heif_encoder_parameter_get_valid_integer_values()

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 )

◆ heif_encoder_parameter_get_valid_string_values()

struct heif_error heif_encoder_parameter_get_valid_string_values ( const struct heif_encoder_parameter * ,
const char *const ** out_stringarray )

◆ heif_encoder_parameter_integer_valid_range()

struct heif_error heif_encoder_parameter_integer_valid_range ( struct heif_encoder * ,
const char * parameter_name,
int * have_minimum_maximum,
int * minimum,
int * maximum )

◆ heif_encoder_parameter_integer_valid_values()

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 )

◆ heif_encoder_parameter_string_valid_values()

struct heif_error heif_encoder_parameter_string_valid_values ( struct heif_encoder * ,
const char * parameter_name,
const char *const ** out_stringarray )

◆ heif_encoder_release()

void heif_encoder_release ( struct heif_encoder * )

◆ heif_encoder_set_logging_level()

struct heif_error heif_encoder_set_logging_level ( struct heif_encoder * ,
int level )

◆ heif_encoder_set_lossless()

struct heif_error heif_encoder_set_lossless ( struct heif_encoder * ,
int enable )

◆ heif_encoder_set_lossy_quality()

struct heif_error heif_encoder_set_lossy_quality ( struct heif_encoder * ,
int quality )

◆ heif_encoder_set_parameter()

struct heif_error heif_encoder_set_parameter ( struct heif_encoder * ,
const char * parameter_name,
const char * value )

◆ heif_encoder_set_parameter_boolean()

struct heif_error heif_encoder_set_parameter_boolean ( struct heif_encoder * ,
const char * parameter_name,
int value )

◆ heif_encoder_set_parameter_integer()

struct heif_error heif_encoder_set_parameter_integer ( struct heif_encoder * ,
const char * parameter_name,
int value )

◆ heif_encoder_set_parameter_string()

struct heif_error heif_encoder_set_parameter_string ( struct heif_encoder * ,
const char * parameter_name,
const char * value )

◆ heif_encoding_options_alloc()

struct heif_encoding_options * heif_encoding_options_alloc ( void )

◆ heif_encoding_options_free()

void heif_encoding_options_free ( struct heif_encoding_options * )

◆ heif_fourcc_to_brand()

heif_brand2 heif_fourcc_to_brand ( const char * brand_fourcc)

◆ heif_free_list_of_compatible_brands()

void heif_free_list_of_compatible_brands ( heif_brand2 * brands_list)

◆ heif_free_plugin_directories()

void heif_free_plugin_directories ( const char *const * )

◆ heif_get_decoder_descriptors()

int heif_get_decoder_descriptors ( enum heif_compression_format format_filter,
const struct heif_decoder_descriptor ** out_decoders,
int count )

◆ heif_get_encoder_descriptors()

int heif_get_encoder_descriptors ( enum heif_compression_format format_filter,
const char * name_filter,
const struct heif_encoder_descriptor ** out_encoders,
int count )

◆ heif_get_file_mime_type()

const char * heif_get_file_mime_type ( const uint8_t * data,
int len )

◆ heif_get_plugin_directories()

const char *const * heif_get_plugin_directories ( void )

◆ heif_get_version()

const char * heif_get_version ( void )

◆ heif_get_version_number()

uint32_t heif_get_version_number ( void )

◆ heif_get_version_number_maintenance()

int heif_get_version_number_maintenance ( void )

◆ heif_get_version_number_major()

int heif_get_version_number_major ( void )

◆ heif_get_version_number_minor()

int heif_get_version_number_minor ( void )

◆ heif_has_compatible_brand()

int heif_has_compatible_brand ( const uint8_t * data,
int len,
const char * brand_fourcc )

◆ heif_has_compatible_filetype()

struct heif_error heif_has_compatible_filetype ( const uint8_t * data,
int len )

Check the filetype box content for a supported file type.

The data is assumed to start from the start of the ftyp box.

This function checks the compatible brands.

Returns
heif_error_ok if a supported brand is found, or other error if not.

◆ heif_have_decoder_for_format()

int heif_have_decoder_for_format ( enum heif_compression_format format)

◆ heif_have_encoder_for_format()

int heif_have_encoder_for_format ( enum heif_compression_format format)

◆ heif_image_add_decoding_warning()

void heif_image_add_decoding_warning ( struct heif_image * image,
struct heif_error err )

◆ heif_image_add_plane()

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.

The image plane needs to match the colorspace and chroma of the image. Note that this does not need to be a single "planar" format - interleaved pixel channels can also be used if the chroma is interleaved.

The indicated bit_depth corresponds to the bit depth per channel. For example, with an interleaved format like RRGGBB where each color is represented by 10 bits, the bit_depth would be 10 rather than 30.

For backward compatibility, one can also specify 24bits for RGB and 32bits for RGBA, instead of the preferred 8 bits. However, this use is deprecated.

Parameters
imagethe parent image to add the channel plane to
channelthe channel of the plane to add
widththe width of the plane
heightthe height of the plane
bit_depththe bit depth per color channel
Returns
whether the addition succeeded or there was an error
Note
The width and height are usually the same as the parent image, but can be less for subsampling.
The specified width can differ from the row stride of the resulting image plane. Always use the result of heif_image_get_plane or heif_image_get_plane_readonly to determine row stride.

◆ heif_image_create()

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.

This does not allocate memory for the image data. Use heif_image_add_plane to add the corresponding planes to match the specified colorspace and chroma.

Parameters
widththe width of the image in pixels
heightthe height of the image in pixels
colorspacethe colorspace of the image
chromathe chroma of the image
out_imagepointer to pointer of the resulting image
Returns
whether the creation succeeded or there was an error

◆ heif_image_crop()

struct heif_error heif_image_crop ( struct heif_image * img,
int left,
int right,
int top,
int bottom )

◆ heif_image_extend_padding_to_size()

struct heif_error heif_image_extend_padding_to_size ( struct heif_image * image,
int min_physical_width,
int min_physical_height )

◆ heif_image_get_bits_per_pixel()

int heif_image_get_bits_per_pixel ( const struct heif_image * ,
enum heif_channel channel )

◆ heif_image_get_bits_per_pixel_range()

int heif_image_get_bits_per_pixel_range ( const struct heif_image * ,
enum heif_channel channel )

◆ heif_image_get_chroma_format()

enum heif_chroma heif_image_get_chroma_format ( const struct heif_image * )

◆ heif_image_get_color_profile_type()

enum heif_color_profile_type heif_image_get_color_profile_type ( const struct heif_image * image)

◆ heif_image_get_colorspace()

enum heif_colorspace heif_image_get_colorspace ( const struct heif_image * )

◆ heif_image_get_content_light_level()

void heif_image_get_content_light_level ( const struct heif_image * ,
struct heif_content_light_level * out )

◆ heif_image_get_decoding_warnings()

int heif_image_get_decoding_warnings ( struct heif_image * image,
int first_warning_idx,
struct heif_error * out_warnings,
int max_output_buffer_entries )

◆ heif_image_get_height()

int heif_image_get_height ( const struct heif_image * img,
enum heif_channel channel )

Get the height of a specified image channel.

Parameters
imgthe image to get the height for
channelthe channel to select
Returns
the height of the channel in pixels, or -1 the channel does not exist in the image

◆ heif_image_get_mastering_display_colour_volume()

void heif_image_get_mastering_display_colour_volume ( const struct heif_image * ,
struct heif_mastering_display_colour_volume * out )

◆ heif_image_get_nclx_color_profile()

struct heif_error heif_image_get_nclx_color_profile ( const struct heif_image * image,
struct heif_color_profile_nclx ** out_data )

◆ heif_image_get_pixel_aspect_ratio()

void heif_image_get_pixel_aspect_ratio ( const struct heif_image * ,
uint32_t * aspect_h,
uint32_t * aspect_v )

◆ heif_image_get_plane()

uint8_t * heif_image_get_plane ( struct heif_image * ,
enum heif_channel channel,
int * out_stride )

◆ heif_image_get_plane_readonly()

const uint8_t * heif_image_get_plane_readonly ( const struct heif_image * ,
enum heif_channel channel,
int * out_stride )

◆ heif_image_get_primary_height()

int heif_image_get_primary_height ( const struct heif_image * img)

Get the height of the main channel.

This is the Y channel in YCbCr or mono, or any in RGB.

Parameters
imgthe image to get the primary height for
Returns
the height in pixels

◆ heif_image_get_primary_width()

int heif_image_get_primary_width ( const struct heif_image * img)

Get the width of the main channel.

This is the Y channel in YCbCr or mono, or any in RGB.

Parameters
imgthe image to get the primary width for
Returns
the width in pixels

◆ heif_image_get_raw_color_profile()

struct heif_error heif_image_get_raw_color_profile ( const struct heif_image * image,
void * out_data )

◆ heif_image_get_raw_color_profile_size()

size_t heif_image_get_raw_color_profile_size ( const struct heif_image * image)

◆ heif_image_get_width()

int heif_image_get_width ( const struct heif_image * img,
enum heif_channel channel )

Get the width of a specified image channel.

Parameters
imgthe image to get the width for
channelthe channel to select
Returns
the width of the channel in pixels, or -1 the channel does not exist in the image

◆ heif_image_handle_free_auxiliary_types()

void heif_image_handle_free_auxiliary_types ( const struct heif_image_handle * handle,
const char ** out_type )

◆ heif_image_handle_get_auxiliary_image_handle()

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_image_handle_get_auxiliary_type()

struct heif_error heif_image_handle_get_auxiliary_type ( const struct heif_image_handle * handle,
const char ** out_type )

◆ heif_image_handle_get_camera_extrinsic_matrix()

struct heif_error heif_image_handle_get_camera_extrinsic_matrix ( const struct heif_image_handle * handle,
struct heif_camera_extrinsic_matrix ** out_matrix )

◆ heif_image_handle_get_camera_intrinsic_matrix()

struct heif_error heif_image_handle_get_camera_intrinsic_matrix ( const struct heif_image_handle * handle,
struct heif_camera_intrinsic_matrix * out_matrix )

◆ heif_image_handle_get_chroma_bits_per_pixel()

int heif_image_handle_get_chroma_bits_per_pixel ( const struct heif_image_handle * )

◆ heif_image_handle_get_color_profile_type()

enum heif_color_profile_type heif_image_handle_get_color_profile_type ( const struct heif_image_handle * handle)

◆ heif_image_handle_get_context()

struct heif_context * heif_image_handle_get_context ( const struct heif_image_handle * handle)

◆ heif_image_handle_get_depth_image_handle()

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 )

◆ heif_image_handle_get_depth_image_representation_info()

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 )

◆ heif_image_handle_get_height()

int heif_image_handle_get_height ( const struct heif_image_handle * handle)

◆ heif_image_handle_get_ispe_height()

int heif_image_handle_get_ispe_height ( const struct heif_image_handle * handle)

◆ heif_image_handle_get_ispe_width()

int heif_image_handle_get_ispe_width ( const struct heif_image_handle * handle)

◆ heif_image_handle_get_item_id()

heif_item_id heif_image_handle_get_item_id ( const struct heif_image_handle * handle)

◆ heif_image_handle_get_list_of_auxiliary_image_IDs()

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 )

◆ heif_image_handle_get_list_of_depth_image_IDs()

int heif_image_handle_get_list_of_depth_image_IDs ( const struct heif_image_handle * handle,
heif_item_id * ids,
int count )

◆ heif_image_handle_get_list_of_metadata_block_IDs()

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 )

◆ heif_image_handle_get_list_of_thumbnail_IDs()

int heif_image_handle_get_list_of_thumbnail_IDs ( const struct heif_image_handle * handle,
heif_item_id * ids,
int count )

◆ heif_image_handle_get_luma_bits_per_pixel()

int heif_image_handle_get_luma_bits_per_pixel ( const struct heif_image_handle * )

◆ heif_image_handle_get_metadata()

struct heif_error heif_image_handle_get_metadata ( const struct heif_image_handle * handle,
heif_item_id metadata_id,
void * out_data )

◆ heif_image_handle_get_metadata_content_type()

const char * heif_image_handle_get_metadata_content_type ( const struct heif_image_handle * handle,
heif_item_id metadata_id )

◆ heif_image_handle_get_metadata_item_uri_type()

const char * heif_image_handle_get_metadata_item_uri_type ( const struct heif_image_handle * handle,
heif_item_id metadata_id )

◆ heif_image_handle_get_metadata_size()

size_t heif_image_handle_get_metadata_size ( const struct heif_image_handle * handle,
heif_item_id metadata_id )

◆ heif_image_handle_get_metadata_type()

const char * heif_image_handle_get_metadata_type ( const struct heif_image_handle * handle,
heif_item_id metadata_id )

◆ heif_image_handle_get_nclx_color_profile()

struct heif_error heif_image_handle_get_nclx_color_profile ( const struct heif_image_handle * handle,
struct heif_color_profile_nclx ** out_data )

◆ heif_image_handle_get_number_of_auxiliary_images()

int heif_image_handle_get_number_of_auxiliary_images ( const struct heif_image_handle * handle,
int aux_filter )

◆ heif_image_handle_get_number_of_depth_images()

int heif_image_handle_get_number_of_depth_images ( const struct heif_image_handle * handle)

◆ heif_image_handle_get_number_of_metadata_blocks()

int heif_image_handle_get_number_of_metadata_blocks ( const struct heif_image_handle * handle,
const char * type_filter )

◆ heif_image_handle_get_number_of_thumbnails()

int heif_image_handle_get_number_of_thumbnails ( const struct heif_image_handle * handle)

◆ heif_image_handle_get_preferred_decoding_colorspace()

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 )

◆ heif_image_handle_get_raw_color_profile()

struct heif_error heif_image_handle_get_raw_color_profile ( const struct heif_image_handle * handle,
void * out_data )

◆ heif_image_handle_get_raw_color_profile_size()

size_t heif_image_handle_get_raw_color_profile_size ( const struct heif_image_handle * handle)

◆ heif_image_handle_get_thumbnail()

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 )

◆ heif_image_handle_get_width()

int heif_image_handle_get_width ( const struct heif_image_handle * handle)

◆ heif_image_handle_has_alpha_channel()

int heif_image_handle_has_alpha_channel ( const struct heif_image_handle * )

◆ heif_image_handle_has_camera_extrinsic_matrix()

int heif_image_handle_has_camera_extrinsic_matrix ( const struct heif_image_handle * handle)

◆ heif_image_handle_has_camera_intrinsic_matrix()

int heif_image_handle_has_camera_intrinsic_matrix ( const struct heif_image_handle * handle)

◆ heif_image_handle_has_depth_image()

int heif_image_handle_has_depth_image ( const struct heif_image_handle * )

◆ heif_image_handle_is_premultiplied_alpha()

int heif_image_handle_is_premultiplied_alpha ( const struct heif_image_handle * )

◆ heif_image_handle_is_primary_image()

int heif_image_handle_is_primary_image ( const struct heif_image_handle * handle)

◆ heif_image_handle_release()

void heif_image_handle_release ( const struct heif_image_handle * )

◆ heif_image_handle_release_auxiliary_type()

void heif_image_handle_release_auxiliary_type ( const struct heif_image_handle * handle,
const char ** out_type )

◆ heif_image_has_channel()

int heif_image_has_channel ( const struct heif_image * ,
enum heif_channel channel )

◆ heif_image_has_content_light_level()

int heif_image_has_content_light_level ( const struct heif_image * )

◆ heif_image_has_mastering_display_colour_volume()

int heif_image_has_mastering_display_colour_volume ( const struct heif_image * )

◆ heif_image_is_premultiplied_alpha()

int heif_image_is_premultiplied_alpha ( struct heif_image * image)

◆ heif_image_release()

void heif_image_release ( const struct heif_image * )

◆ heif_image_scale_image()

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 )

◆ heif_image_set_content_light_level()

void heif_image_set_content_light_level ( const struct heif_image * ,
const struct heif_content_light_level * in )

◆ heif_image_set_mastering_display_colour_volume()

void heif_image_set_mastering_display_colour_volume ( const struct heif_image * ,
const struct heif_mastering_display_colour_volume * in )

◆ heif_image_set_nclx_color_profile()

struct heif_error heif_image_set_nclx_color_profile ( struct heif_image * image,
const struct heif_color_profile_nclx * color_profile )

◆ heif_image_set_pixel_aspect_ratio()

void heif_image_set_pixel_aspect_ratio ( struct heif_image * ,
uint32_t aspect_h,
uint32_t aspect_v )

◆ heif_image_set_premultiplied_alpha()

void heif_image_set_premultiplied_alpha ( struct heif_image * image,
int is_premultiplied_alpha )

◆ heif_image_set_raw_color_profile()

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 )

◆ heif_init()

struct heif_error heif_init ( struct heif_init_params * )

Initialise library.

You should call heif_init() when you start using libheif and heif_deinit() when you are finished. These calls are reference counted. Each call to heif_init() should be matched by one call to heif_deinit().

For backwards compatibility, it is not really necessary to call heif_init(), but some library memory objects will never be freed if you do not call heif_init()/heif_deinit().

heif_init() will load the external modules installed in the default plugin path. Thus, you need it when you want to load external plugins from the default path. Codec plugins that are compiled into the library directly (selected by the compile-time parameters of libheif) will be available even without heif_init().

Make sure that you do not have one part of your program use heif_init()/heif_deinit() and another part that does not use it as the latter may try to use an uninitialized library. If in doubt, enclose everything with init/deinit.

You may pass nullptr to get default parameters. Currently, no parameters are supported.

◆ heif_list_compatible_brands()

struct heif_error heif_list_compatible_brands ( const uint8_t * data,
int len,
heif_brand2 ** out_brands,
int * out_size )

◆ heif_load_plugin()

struct heif_error heif_load_plugin ( const char * filename,
struct heif_plugin_info const ** out_plugin )

◆ heif_load_plugins()

struct heif_error heif_load_plugins ( const char * directory,
const struct heif_plugin_info ** out_plugins,
int * out_nPluginsLoaded,
int output_array_size )

◆ heif_main_brand()

enum heif_brand heif_main_brand ( const uint8_t * data,
int len )

◆ heif_mastering_display_colour_volume_decode()

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 )

◆ heif_nclx_color_profile_alloc()

struct heif_color_profile_nclx * heif_nclx_color_profile_alloc ( void )

◆ heif_nclx_color_profile_free()

void heif_nclx_color_profile_free ( struct heif_color_profile_nclx * nclx_profile)

◆ heif_nclx_color_profile_set_color_primaries()

struct heif_error heif_nclx_color_profile_set_color_primaries ( struct heif_color_profile_nclx * nclx,
uint16_t cp )

◆ heif_nclx_color_profile_set_matrix_coefficients()

struct heif_error heif_nclx_color_profile_set_matrix_coefficients ( struct heif_color_profile_nclx * nclx,
uint16_t matrix_coefficients )

◆ heif_nclx_color_profile_set_transfer_characteristics()

struct heif_error heif_nclx_color_profile_set_transfer_characteristics ( struct heif_color_profile_nclx * nclx,
uint16_t transfer_characteristics )

◆ heif_read_main_brand()

heif_brand2 heif_read_main_brand ( const uint8_t * data,
int len )

◆ heif_register_decoder()

struct heif_error heif_register_decoder ( struct heif_context * heif,
const struct heif_decoder_plugin *  )

◆ heif_register_decoder_plugin()

struct heif_error heif_register_decoder_plugin ( const struct heif_decoder_plugin * )

◆ heif_register_encoder_plugin()

struct heif_error heif_register_encoder_plugin ( const struct heif_encoder_plugin * )

◆ heif_unload_plugin()

struct heif_error heif_unload_plugin ( const struct heif_plugin_info * plugin)

Variable Documentation

◆ heif_error_success

const struct heif_error heif_error_success
extern