@img/sharp-libvips-dev 1.2.0-rc.3 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/include/fontconfig/fontconfig.h +12 -2
- package/include/glib-2.0/girepository/girepository.h +3 -0
- package/include/glib-2.0/glib/gmarkup.h +4 -0
- package/include/libheif/heif.h +16 -2603
- package/include/libheif/heif_aux_images.h +182 -0
- package/include/libheif/heif_brands.h +373 -0
- package/include/libheif/heif_color.h +357 -0
- package/include/libheif/heif_context.h +329 -0
- package/include/libheif/heif_cxx.h +6 -6
- package/include/libheif/heif_decoding.h +162 -0
- package/include/libheif/heif_encoding.h +391 -0
- package/include/libheif/heif_entity_groups.h +60 -0
- package/include/libheif/heif_error.h +302 -0
- package/include/libheif/heif_image.h +352 -0
- package/include/libheif/heif_image_handle.h +120 -0
- package/include/libheif/heif_items.h +45 -45
- package/include/libheif/heif_library.h +216 -0
- package/include/libheif/heif_metadata.h +133 -0
- package/include/libheif/heif_plugin.h +53 -41
- package/include/libheif/heif_properties.h +73 -36
- package/include/libheif/heif_regions.h +95 -95
- package/include/libheif/heif_security.h +102 -0
- package/include/libheif/heif_sequences.h +577 -0
- package/include/libheif/heif_tai_timestamps.h +202 -0
- package/include/libheif/heif_tiling.h +137 -0
- package/include/libheif/heif_uncompressed.h +109 -0
- package/include/libheif/heif_version.h +2 -2
- package/include/libpng16/png.h +7 -7
- package/include/libpng16/pngconf.h +1 -1
- package/include/libpng16/pnglibconf.h +1 -1
- package/include/pango-1.0/pango/pango-attributes.h +1 -1
- package/include/pango-1.0/pango/pango-features.h +2 -2
- package/include/png.h +7 -7
- package/include/pngconf.h +1 -1
- package/include/pnglibconf.h +1 -1
- package/include/vips/version.h +4 -4
- package/package.json +1 -1
- package/versions.json +5 -5
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* HEIF codec.
|
|
3
|
+
* Copyright (c) 2017-2025 Dirk Farin <dirk.farin@gmail.com>
|
|
4
|
+
*
|
|
5
|
+
* This file is part of libheif.
|
|
6
|
+
*
|
|
7
|
+
* libheif is free software: you can redistribute it and/or modify
|
|
8
|
+
* it under the terms of the GNU Lesser General Public License as
|
|
9
|
+
* published by the Free Software Foundation, either version 3 of
|
|
10
|
+
* the License, or (at your option) any later version.
|
|
11
|
+
*
|
|
12
|
+
* libheif is distributed in the hope that it will be useful,
|
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
15
|
+
* GNU Lesser General Public License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
18
|
+
* along with libheif. If not, see <http://www.gnu.org/licenses/>.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#ifndef LIBHEIF_HEIF_AUX_IMAGES_H
|
|
22
|
+
#define LIBHEIF_HEIF_AUX_IMAGES_H
|
|
23
|
+
|
|
24
|
+
#ifdef __cplusplus
|
|
25
|
+
extern "C" {
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
#include <libheif/heif_library.h>
|
|
29
|
+
#include <libheif/heif_image.h>
|
|
30
|
+
#include <libheif/heif_error.h>
|
|
31
|
+
|
|
32
|
+
typedef struct heif_encoder heif_encoder;
|
|
33
|
+
typedef struct heif_encoding_options heif_encoding_options;
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
// ------------------------- depth images -------------------------
|
|
37
|
+
|
|
38
|
+
LIBHEIF_API
|
|
39
|
+
int heif_image_handle_has_depth_image(const heif_image_handle*);
|
|
40
|
+
|
|
41
|
+
LIBHEIF_API
|
|
42
|
+
int heif_image_handle_get_number_of_depth_images(const heif_image_handle* handle);
|
|
43
|
+
|
|
44
|
+
LIBHEIF_API
|
|
45
|
+
int heif_image_handle_get_list_of_depth_image_IDs(const heif_image_handle* handle,
|
|
46
|
+
heif_item_id* ids, int count);
|
|
47
|
+
|
|
48
|
+
LIBHEIF_API
|
|
49
|
+
heif_error heif_image_handle_get_depth_image_handle(const heif_image_handle* handle,
|
|
50
|
+
heif_item_id depth_image_id,
|
|
51
|
+
heif_image_handle** out_depth_handle);
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
enum heif_depth_representation_type {
|
|
55
|
+
heif_depth_representation_type_uniform_inverse_Z = 0,
|
|
56
|
+
heif_depth_representation_type_uniform_disparity = 1,
|
|
57
|
+
heif_depth_representation_type_uniform_Z = 2,
|
|
58
|
+
heif_depth_representation_type_nonuniform_disparity = 3
|
|
59
|
+
};
|
|
60
|
+
|
|
61
|
+
typedef struct heif_depth_representation_info {
|
|
62
|
+
uint8_t version;
|
|
63
|
+
|
|
64
|
+
// version 1 fields
|
|
65
|
+
|
|
66
|
+
uint8_t has_z_near;
|
|
67
|
+
uint8_t has_z_far;
|
|
68
|
+
uint8_t has_d_min;
|
|
69
|
+
uint8_t has_d_max;
|
|
70
|
+
|
|
71
|
+
double z_near;
|
|
72
|
+
double z_far;
|
|
73
|
+
double d_min;
|
|
74
|
+
double d_max;
|
|
75
|
+
|
|
76
|
+
enum heif_depth_representation_type depth_representation_type;
|
|
77
|
+
uint32_t disparity_reference_view;
|
|
78
|
+
|
|
79
|
+
uint32_t depth_nonlinear_representation_model_size;
|
|
80
|
+
uint8_t* depth_nonlinear_representation_model;
|
|
81
|
+
|
|
82
|
+
// version 2 fields below
|
|
83
|
+
} heif_depth_representation_info;
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
LIBHEIF_API
|
|
87
|
+
void heif_depth_representation_info_free(const heif_depth_representation_info* info);
|
|
88
|
+
|
|
89
|
+
// Returns true when there is depth_representation_info available
|
|
90
|
+
// Note 1: depth_image_id is currently unused because we support only one depth channel per image, but
|
|
91
|
+
// you should still provide the correct ID for future compatibility.
|
|
92
|
+
// Note 2: Because of an API bug before v1.11.0, the function also works when 'handle' is the handle of the depth image.
|
|
93
|
+
// However, you should pass the handle of the main image. Please adapt your code if needed.
|
|
94
|
+
LIBHEIF_API
|
|
95
|
+
int heif_image_handle_get_depth_image_representation_info(const heif_image_handle* handle,
|
|
96
|
+
heif_item_id depth_image_id,
|
|
97
|
+
const heif_depth_representation_info** out);
|
|
98
|
+
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
// ------------------------- thumbnails -------------------------
|
|
102
|
+
|
|
103
|
+
// List the number of thumbnails assigned to this image handle. Usually 0 or 1.
|
|
104
|
+
LIBHEIF_API
|
|
105
|
+
int heif_image_handle_get_number_of_thumbnails(const heif_image_handle* handle);
|
|
106
|
+
|
|
107
|
+
LIBHEIF_API
|
|
108
|
+
int heif_image_handle_get_list_of_thumbnail_IDs(const heif_image_handle* handle,
|
|
109
|
+
heif_item_id* ids, int count);
|
|
110
|
+
|
|
111
|
+
// Get the image handle of a thumbnail image.
|
|
112
|
+
LIBHEIF_API
|
|
113
|
+
heif_error heif_image_handle_get_thumbnail(const heif_image_handle* main_image_handle,
|
|
114
|
+
heif_item_id thumbnail_id,
|
|
115
|
+
heif_image_handle** out_thumbnail_handle);
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
// Encode the 'image' as a scaled down thumbnail image.
|
|
119
|
+
// The image is scaled down to fit into a square area of width 'bbox_size'.
|
|
120
|
+
// If the input image is already so small that it fits into this bounding box, no thumbnail
|
|
121
|
+
// image is encoded and NULL is returned in 'out_thumb_image_handle'.
|
|
122
|
+
// No error is returned in this case.
|
|
123
|
+
// The encoded thumbnail is automatically assigned to the 'master_image_handle'. Hence, you
|
|
124
|
+
// do not have to call heif_context_assign_thumbnail().
|
|
125
|
+
LIBHEIF_API
|
|
126
|
+
heif_error heif_context_encode_thumbnail(heif_context*,
|
|
127
|
+
const heif_image* image,
|
|
128
|
+
const heif_image_handle* master_image_handle,
|
|
129
|
+
heif_encoder* encoder,
|
|
130
|
+
const heif_encoding_options* options,
|
|
131
|
+
int bbox_size,
|
|
132
|
+
heif_image_handle** out_thumb_image_handle);
|
|
133
|
+
|
|
134
|
+
// Assign 'thumbnail_image' as the thumbnail image of 'master_image'.
|
|
135
|
+
LIBHEIF_API
|
|
136
|
+
heif_error heif_context_assign_thumbnail(struct heif_context*,
|
|
137
|
+
const heif_image_handle* master_image,
|
|
138
|
+
const heif_image_handle* thumbnail_image);
|
|
139
|
+
|
|
140
|
+
|
|
141
|
+
// ------------------------- auxiliary images -------------------------
|
|
142
|
+
|
|
143
|
+
#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_ALPHA (1UL<<1)
|
|
144
|
+
#define LIBHEIF_AUX_IMAGE_FILTER_OMIT_DEPTH (2UL<<1)
|
|
145
|
+
|
|
146
|
+
// List the number of auxiliary images assigned to this image handle.
|
|
147
|
+
LIBHEIF_API
|
|
148
|
+
int heif_image_handle_get_number_of_auxiliary_images(const heif_image_handle* handle,
|
|
149
|
+
int aux_filter);
|
|
150
|
+
|
|
151
|
+
LIBHEIF_API
|
|
152
|
+
int heif_image_handle_get_list_of_auxiliary_image_IDs(const heif_image_handle* handle,
|
|
153
|
+
int aux_filter,
|
|
154
|
+
heif_item_id* ids, int count);
|
|
155
|
+
|
|
156
|
+
// You are responsible to deallocate the returned buffer with heif_image_handle_release_auxiliary_type().
|
|
157
|
+
LIBHEIF_API
|
|
158
|
+
heif_error heif_image_handle_get_auxiliary_type(const heif_image_handle* handle,
|
|
159
|
+
const char** out_type);
|
|
160
|
+
|
|
161
|
+
LIBHEIF_API
|
|
162
|
+
void heif_image_handle_release_auxiliary_type(const heif_image_handle* handle,
|
|
163
|
+
const char** out_type);
|
|
164
|
+
|
|
165
|
+
// Get the image handle of an auxiliary image.
|
|
166
|
+
LIBHEIF_API
|
|
167
|
+
heif_error heif_image_handle_get_auxiliary_image_handle(const heif_image_handle* main_image_handle,
|
|
168
|
+
heif_item_id auxiliary_id,
|
|
169
|
+
heif_image_handle** out_auxiliary_handle);
|
|
170
|
+
|
|
171
|
+
// ===================== DEPRECATED =====================
|
|
172
|
+
|
|
173
|
+
// DEPRECATED (because typo in function name). Use heif_image_handle_release_auxiliary_type() instead.
|
|
174
|
+
LIBHEIF_API
|
|
175
|
+
void heif_image_handle_free_auxiliary_types(const heif_image_handle* handle,
|
|
176
|
+
const char** out_type);
|
|
177
|
+
|
|
178
|
+
#ifdef __cplusplus
|
|
179
|
+
}
|
|
180
|
+
#endif
|
|
181
|
+
|
|
182
|
+
#endif
|
|
@@ -0,0 +1,373 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* HEIF codec.
|
|
3
|
+
* Copyright (c) 2017-2023 Dirk Farin <dirk.farin@gmail.com>
|
|
4
|
+
*
|
|
5
|
+
* This file is part of libheif.
|
|
6
|
+
*
|
|
7
|
+
* libheif is free software: you can redistribute it and/or modify
|
|
8
|
+
* it under the terms of the GNU Lesser General Public License as
|
|
9
|
+
* published by the Free Software Foundation, either version 3 of
|
|
10
|
+
* the License, or (at your option) any later version.
|
|
11
|
+
*
|
|
12
|
+
* libheif is distributed in the hope that it will be useful,
|
|
13
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
14
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
15
|
+
* GNU Lesser General Public License for more details.
|
|
16
|
+
*
|
|
17
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
18
|
+
* along with libheif. If not, see <http://www.gnu.org/licenses/>.
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
#ifndef LIBHEIF_HEIF_BRANDS_H
|
|
22
|
+
#define LIBHEIF_HEIF_BRANDS_H
|
|
23
|
+
|
|
24
|
+
#ifdef __cplusplus
|
|
25
|
+
extern "C" {
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
#include <stddef.h>
|
|
29
|
+
#include <stdint.h>
|
|
30
|
+
|
|
31
|
+
#include <libheif/heif_library.h>
|
|
32
|
+
|
|
33
|
+
|
|
34
|
+
|
|
35
|
+
typedef uint32_t heif_brand2;
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* HEVC image (`heic`) brand.
|
|
39
|
+
*
|
|
40
|
+
* Image conforms to HEVC (H.265) Main or Main Still profile.
|
|
41
|
+
*
|
|
42
|
+
* See ISO/IEC 23008-12:2022 Section B.4.1.
|
|
43
|
+
*/
|
|
44
|
+
#define heif_brand2_heic heif_fourcc('h','e','i','c')
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* HEVC image (`heix`) brand.
|
|
48
|
+
*
|
|
49
|
+
* Image conforms to HEVC (H.265) Main 10 profile.
|
|
50
|
+
*
|
|
51
|
+
* See ISO/IEC 23008-12:2022 Section B.4.1.
|
|
52
|
+
*/
|
|
53
|
+
#define heif_brand2_heix heif_fourcc('h','e','i','x')
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* HEVC image sequence (`hevc`) brand.
|
|
57
|
+
*
|
|
58
|
+
* Image sequence conforms to HEVC (H.265) Main profile.
|
|
59
|
+
*
|
|
60
|
+
* See ISO/IEC 23008-12:2022 Section B.4.2.
|
|
61
|
+
*/
|
|
62
|
+
#define heif_brand2_hevc heif_fourcc('h','e','v','c')
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* HEVC image sequence (`hevx`) brand.
|
|
66
|
+
*
|
|
67
|
+
* Image sequence conforms to HEVC (H.265) Main 10 profile.
|
|
68
|
+
*
|
|
69
|
+
* See ISO/IEC 23008-12:2022 Section B.4.2.
|
|
70
|
+
*/
|
|
71
|
+
#define heif_brand2_hevx heif_fourcc('h','e','v','x')
|
|
72
|
+
|
|
73
|
+
/**
|
|
74
|
+
* HEVC layered image (`heim`) brand.
|
|
75
|
+
*
|
|
76
|
+
* Image layers conform to HEVC (H.265) Main or Multiview Main profile.
|
|
77
|
+
*
|
|
78
|
+
* See ISO/IEC 23008-12:2022 Section B.4.3.
|
|
79
|
+
*/
|
|
80
|
+
#define heif_brand2_heim heif_fourcc('h','e','i','m')
|
|
81
|
+
|
|
82
|
+
/**
|
|
83
|
+
* HEVC layered image (`heis`) brand.
|
|
84
|
+
*
|
|
85
|
+
* Image layers conform to HEVC (H.265) Main, Main 10, Scalable Main
|
|
86
|
+
* or Scalable Main 10 profile.
|
|
87
|
+
*
|
|
88
|
+
* See ISO/IEC 23008-12:2022 Section B.4.3.
|
|
89
|
+
*/
|
|
90
|
+
#define heif_brand2_heis heif_fourcc('h','e','i','s')
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* HEVC layered image sequence (`hevm`) brand.
|
|
94
|
+
*
|
|
95
|
+
* Image sequence layers conform to HEVC (H.265) Main or Multiview Main profile.
|
|
96
|
+
*
|
|
97
|
+
* See ISO/IEC 23008-12:2022 Section B.4.4.
|
|
98
|
+
*/
|
|
99
|
+
#define heif_brand2_hevm heif_fourcc('h','e','v','m')
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* HEVC layered image sequence (`hevs`) brand.
|
|
103
|
+
*
|
|
104
|
+
* Image sequence layers conform to HEVC (H.265) Main, Main 10, Scalable Main
|
|
105
|
+
* or Scalable Main 10 profile.
|
|
106
|
+
*
|
|
107
|
+
* See ISO/IEC 23008-12:2022 Section B.4.4.
|
|
108
|
+
*/
|
|
109
|
+
#define heif_brand2_hevs heif_fourcc('h','e','v','s')
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* AV1 image (`avif`) brand.
|
|
113
|
+
*
|
|
114
|
+
* See https://aomediacodec.github.io/av1-avif/#image-and-image-collection-brand
|
|
115
|
+
*/
|
|
116
|
+
#define heif_brand2_avif heif_fourcc('a','v','i','f')
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* AV1 image sequence (`avis`) brand.
|
|
120
|
+
*
|
|
121
|
+
* See https://aomediacodec.github.io/av1-avif/#image-sequence-brand
|
|
122
|
+
*/
|
|
123
|
+
#define heif_brand2_avis heif_fourcc('a','v','i','s') // AVIF sequence
|
|
124
|
+
|
|
125
|
+
/**
|
|
126
|
+
* HEIF image structural brand (`mif1`).
|
|
127
|
+
*
|
|
128
|
+
* This does not imply a specific coding algorithm.
|
|
129
|
+
*
|
|
130
|
+
* See ISO/IEC 23008-12:2022 Section 10.2.2.
|
|
131
|
+
*/
|
|
132
|
+
#define heif_brand2_mif1 heif_fourcc('m','i','f','1')
|
|
133
|
+
|
|
134
|
+
/**
|
|
135
|
+
* HEIF image structural brand (`mif2`).
|
|
136
|
+
*
|
|
137
|
+
* This does not imply a specific coding algorithm. `mif2` extends
|
|
138
|
+
* the requirements of `mif1` to include the `rref` and `iscl` item
|
|
139
|
+
* properties.
|
|
140
|
+
*
|
|
141
|
+
* See ISO/IEC 23008-12:2022 Section 10.2.3.
|
|
142
|
+
*/
|
|
143
|
+
#define heif_brand2_mif2 heif_fourcc('m','i','f','2')
|
|
144
|
+
|
|
145
|
+
/**
|
|
146
|
+
* HEIF image structural brand (`mif3`).
|
|
147
|
+
*
|
|
148
|
+
* This indicates the low-overhead (ftyp+mini) structure.
|
|
149
|
+
*/
|
|
150
|
+
#define heif_brand2_mif3 heif_fourcc('m','i','f','3')
|
|
151
|
+
|
|
152
|
+
/**
|
|
153
|
+
* HEIF image sequence structural brand (`msf1`).
|
|
154
|
+
*
|
|
155
|
+
* This does not imply a specific coding algorithm.
|
|
156
|
+
*
|
|
157
|
+
* See ISO/IEC 23008-12:2022 Section 10.3.1.
|
|
158
|
+
*/
|
|
159
|
+
#define heif_brand2_msf1 heif_fourcc('m','s','f','1')
|
|
160
|
+
|
|
161
|
+
/**
|
|
162
|
+
* VVC image (`vvic`) brand.
|
|
163
|
+
*
|
|
164
|
+
* See ISO/IEC 23008-12:2022 Section L.4.1.
|
|
165
|
+
*/
|
|
166
|
+
#define heif_brand2_vvic heif_fourcc('v','v','i','c')
|
|
167
|
+
|
|
168
|
+
/**
|
|
169
|
+
* VVC image sequence (`vvis`) brand.
|
|
170
|
+
*
|
|
171
|
+
* See ISO/IEC 23008-12:2022 Section L.4.2.
|
|
172
|
+
*/
|
|
173
|
+
#define heif_brand2_vvis heif_fourcc('v','v','i','s')
|
|
174
|
+
|
|
175
|
+
/**
|
|
176
|
+
* EVC baseline image (`evbi`) brand.
|
|
177
|
+
*
|
|
178
|
+
* See ISO/IEC 23008-12:2022 Section M.4.1.
|
|
179
|
+
*/
|
|
180
|
+
#define heif_brand2_evbi heif_fourcc('e','v','b','i')
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* EVC main profile image (`evmi`) brand.
|
|
184
|
+
*
|
|
185
|
+
* See ISO/IEC 23008-12:2022 Section M.4.2.
|
|
186
|
+
*/
|
|
187
|
+
#define heif_brand2_evmi heif_fourcc('e','v','m','i')
|
|
188
|
+
|
|
189
|
+
/**
|
|
190
|
+
* EVC baseline image sequence (`evbs`) brand.
|
|
191
|
+
*
|
|
192
|
+
* See ISO/IEC 23008-12:2022 Section M.4.3.
|
|
193
|
+
*/
|
|
194
|
+
#define heif_brand2_evbs heif_fourcc('e','v','b','s')
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* EVC main profile image sequence (`evms`) brand.
|
|
198
|
+
*
|
|
199
|
+
* See ISO/IEC 23008-12:2022 Section M.4.4.
|
|
200
|
+
*/
|
|
201
|
+
#define heif_brand2_evms heif_fourcc('e','v','m','s')
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* JPEG image (`jpeg`) brand.
|
|
205
|
+
*
|
|
206
|
+
* See ISO/IEC 23008-12:2022 Annex H.4
|
|
207
|
+
*/
|
|
208
|
+
#define heif_brand2_jpeg heif_fourcc('j','p','e','g')
|
|
209
|
+
|
|
210
|
+
/**
|
|
211
|
+
* JPEG image sequence (`jpgs`) brand.
|
|
212
|
+
*
|
|
213
|
+
* See ISO/IEC 23008-12:2022 Annex H.5
|
|
214
|
+
*/
|
|
215
|
+
#define heif_brand2_jpgs heif_fourcc('j','p','g','s')
|
|
216
|
+
|
|
217
|
+
/**
|
|
218
|
+
* JPEG 2000 image (`j2ki`) brand.
|
|
219
|
+
*
|
|
220
|
+
* See ISO/IEC 15444-16:2021 Section 6.5
|
|
221
|
+
*/
|
|
222
|
+
#define heif_brand2_j2ki heif_fourcc('j','2','k','i')
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* JPEG 2000 image sequence (`j2is`) brand.
|
|
226
|
+
*
|
|
227
|
+
* See ISO/IEC 15444-16:2021 Section 7.6
|
|
228
|
+
*/
|
|
229
|
+
#define heif_brand2_j2is heif_fourcc('j','2','i','s')
|
|
230
|
+
|
|
231
|
+
/**
|
|
232
|
+
* Multi-image application format (MIAF) brand.
|
|
233
|
+
*
|
|
234
|
+
* This is HEIF with additional constraints for interoperability.
|
|
235
|
+
*
|
|
236
|
+
* See ISO/IEC 23000-22.
|
|
237
|
+
*/
|
|
238
|
+
#define heif_brand2_miaf heif_fourcc('m','i','a','f')
|
|
239
|
+
|
|
240
|
+
/**
|
|
241
|
+
* Single picture file brand.
|
|
242
|
+
*
|
|
243
|
+
* This is a compatible brand indicating the file contains a single intra-coded picture.
|
|
244
|
+
*
|
|
245
|
+
* See ISO/IEC 23008-12:2022 Section 10.2.5.
|
|
246
|
+
*/
|
|
247
|
+
#define heif_brand2_1pic heif_fourcc('1','p','i','c')
|
|
248
|
+
|
|
249
|
+
// H.264
|
|
250
|
+
#define heif_brand2_avci heif_fourcc('a','v','c','i')
|
|
251
|
+
#define heif_brand2_avcs heif_fourcc('a','v','c','s')
|
|
252
|
+
|
|
253
|
+
#define heif_brand2_iso8 heif_fourcc('i','s','o','8')
|
|
254
|
+
|
|
255
|
+
// input data should be at least 12 bytes
|
|
256
|
+
LIBHEIF_API
|
|
257
|
+
heif_brand2 heif_read_main_brand(const uint8_t* data, int len);
|
|
258
|
+
|
|
259
|
+
// input data should be at least 16 bytes
|
|
260
|
+
LIBHEIF_API
|
|
261
|
+
heif_brand2 heif_read_minor_version_brand(const uint8_t* data, int len);
|
|
262
|
+
|
|
263
|
+
// 'brand_fourcc' must be 4 character long, but need not be 0-terminated
|
|
264
|
+
LIBHEIF_API
|
|
265
|
+
heif_brand2 heif_fourcc_to_brand(const char* brand_fourcc);
|
|
266
|
+
|
|
267
|
+
// the output buffer must be at least 4 bytes long
|
|
268
|
+
LIBHEIF_API
|
|
269
|
+
void heif_brand_to_fourcc(heif_brand2 brand, char* out_fourcc);
|
|
270
|
+
|
|
271
|
+
// 'brand_fourcc' must be 4 character long, but need not be 0-terminated
|
|
272
|
+
// returns 1 if file includes the brand, and 0 if it does not
|
|
273
|
+
// returns -1 if the provided data is not sufficient
|
|
274
|
+
// (you should input at least as many bytes as indicated in the first 4 bytes of the file, usually ~50 bytes will do)
|
|
275
|
+
// returns -2 on other errors
|
|
276
|
+
LIBHEIF_API
|
|
277
|
+
int heif_has_compatible_brand(const uint8_t* data, int len, const char* brand_fourcc);
|
|
278
|
+
|
|
279
|
+
// Returns an array of compatible brands. The array is allocated by this function and has to be freed with 'heif_free_list_of_compatible_brands()'.
|
|
280
|
+
// The number of entries is returned in out_size.
|
|
281
|
+
LIBHEIF_API
|
|
282
|
+
struct heif_error heif_list_compatible_brands(const uint8_t* data, int len, heif_brand2** out_brands, int* out_size);
|
|
283
|
+
|
|
284
|
+
LIBHEIF_API
|
|
285
|
+
void heif_free_list_of_compatible_brands(heif_brand2* brands_list);
|
|
286
|
+
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
// Returns one of these MIME types:
|
|
290
|
+
// - image/heic HEIF file using h265 compression
|
|
291
|
+
// - image/heif HEIF file using any other compression
|
|
292
|
+
// - image/heic-sequence HEIF image sequence using h265 compression
|
|
293
|
+
// - image/heif-sequence HEIF image sequence using any other compression
|
|
294
|
+
// - image/avif AVIF image
|
|
295
|
+
// - image/avif-sequence AVIF sequence
|
|
296
|
+
// - image/jpeg JPEG image
|
|
297
|
+
// - image/png PNG image
|
|
298
|
+
// If the format could not be detected, an empty string is returned.
|
|
299
|
+
//
|
|
300
|
+
// Provide at least 12 bytes of input. With less input, its format might not
|
|
301
|
+
// be detected. You may also provide more input to increase detection accuracy.
|
|
302
|
+
//
|
|
303
|
+
// Note that JPEG and PNG images cannot be decoded by libheif even though the
|
|
304
|
+
// formats are detected by this function.
|
|
305
|
+
LIBHEIF_API
|
|
306
|
+
const char* heif_get_file_mime_type(const uint8_t* data, int len);
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
// ========================= file type check ======================
|
|
310
|
+
|
|
311
|
+
enum heif_filetype_result
|
|
312
|
+
{
|
|
313
|
+
heif_filetype_no,
|
|
314
|
+
heif_filetype_yes_supported, // it is heif and can be read by libheif
|
|
315
|
+
heif_filetype_yes_unsupported, // it is heif, but cannot be read by libheif
|
|
316
|
+
heif_filetype_maybe // not sure whether it is an heif, try detection with more input data
|
|
317
|
+
};
|
|
318
|
+
|
|
319
|
+
// input data should be at least 12 bytes
|
|
320
|
+
LIBHEIF_API
|
|
321
|
+
enum heif_filetype_result heif_check_filetype(const uint8_t* data, int len);
|
|
322
|
+
|
|
323
|
+
/**
|
|
324
|
+
* Check the filetype box content for a supported file type.
|
|
325
|
+
*
|
|
326
|
+
* <p>The data is assumed to start from the start of the `ftyp` box.
|
|
327
|
+
*
|
|
328
|
+
* <p>This function checks the compatible brands.
|
|
329
|
+
*
|
|
330
|
+
* @returns heif_error_ok if a supported brand is found, or other error if not.
|
|
331
|
+
*/
|
|
332
|
+
LIBHEIF_API
|
|
333
|
+
heif_error heif_has_compatible_filetype(const uint8_t* data, int len);
|
|
334
|
+
|
|
335
|
+
LIBHEIF_API
|
|
336
|
+
int heif_check_jpeg_filetype(const uint8_t* data, int len);
|
|
337
|
+
|
|
338
|
+
|
|
339
|
+
// ===================== DEPRECATED =====================
|
|
340
|
+
|
|
341
|
+
// DEPRECATED, use heif_brand2 and the heif_brand2_* constants instead
|
|
342
|
+
enum heif_brand
|
|
343
|
+
{
|
|
344
|
+
heif_unknown_brand,
|
|
345
|
+
heif_heic, // HEIF image with h265
|
|
346
|
+
heif_heix, // 10bit images, or anything that uses h265 with range extension
|
|
347
|
+
heif_hevc, heif_hevx, // brands for image sequences
|
|
348
|
+
heif_heim, // multiview
|
|
349
|
+
heif_heis, // scalable
|
|
350
|
+
heif_hevm, // multiview sequence
|
|
351
|
+
heif_hevs, // scalable sequence
|
|
352
|
+
heif_mif1, // image, any coding algorithm
|
|
353
|
+
heif_msf1, // sequence, any coding algorithm
|
|
354
|
+
heif_avif, // HEIF image with AV1
|
|
355
|
+
heif_avis,
|
|
356
|
+
heif_vvic, // VVC image
|
|
357
|
+
heif_vvis, // VVC sequence
|
|
358
|
+
heif_evbi, // EVC image
|
|
359
|
+
heif_evbs, // EVC sequence
|
|
360
|
+
heif_j2ki, // JPEG2000 image
|
|
361
|
+
heif_j2is, // JPEG2000 image sequence
|
|
362
|
+
};
|
|
363
|
+
|
|
364
|
+
// input data should be at least 12 bytes
|
|
365
|
+
// DEPRECATED, use heif_read_main_brand() instead
|
|
366
|
+
LIBHEIF_API
|
|
367
|
+
enum heif_brand heif_main_brand(const uint8_t* data, int len);
|
|
368
|
+
|
|
369
|
+
#ifdef __cplusplus
|
|
370
|
+
}
|
|
371
|
+
#endif
|
|
372
|
+
|
|
373
|
+
#endif
|