libheif
heif_items.h
Go to the documentation of this file.
1 /*
2  * HEIF codec.
3  * Copyright (c) 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_ITEMS_H
22 #define LIBHEIF_HEIF_ITEMS_H
23 
24 #include "libheif/heif.h"
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 
41 int heif_context_get_number_of_items(const struct heif_context* ctx);
42 
54 int heif_context_get_list_of_item_IDs(const struct heif_context* ctx,
55  heif_item_id* ID_array,
56  int count);
57 
70 uint32_t heif_item_get_item_type(const struct heif_context* ctx, heif_item_id item_id);
71 
72 #define heif_item_type_mime heif_fourcc('m','i','m','e')
73 #define heif_item_type_uri heif_fourcc('u','r','i',' ')
74 
76 int heif_item_is_item_hidden(const struct heif_context* ctx, heif_item_id item_id);
77 
78 
90 const char* heif_item_get_mime_item_content_type(const struct heif_context* ctx, heif_item_id item_id);
91 
105 const char* heif_item_get_mime_item_content_encoding(const struct heif_context* ctx, heif_item_id item_id);
106 
118 const char* heif_item_get_uri_item_uri_type(const struct heif_context* ctx, heif_item_id item_id);
119 
121 const char* heif_item_get_item_name(const struct heif_context* ctx, heif_item_id item_id);
122 
124 struct heif_error heif_item_set_item_name(struct heif_context* ctx,
125  heif_item_id item,
126  const char* item_name);
127 
128 
152 struct heif_error heif_item_get_item_data(const struct heif_context* ctx,
153  heif_item_id item_id,
154  enum heif_metadata_compression* out_compression_format,
155  uint8_t** out_data, size_t* out_data_size);
156 
167 void heif_release_item_data(const struct heif_context* ctx, uint8_t** item_data);
168 
169 
170 // ------------------------- item references -------------------------
171 
183 size_t heif_context_get_item_references(const struct heif_context* ctx,
184  heif_item_id from_item_id,
185  int index,
186  uint32_t* out_reference_type_4cc,
187  heif_item_id** out_references_to);
188 
190 void heif_release_item_references(const struct heif_context* ctx, heif_item_id** references);
191 
193 struct heif_error heif_context_add_item_reference(struct heif_context* ctx,
194  uint32_t reference_type,
195  heif_item_id from_item,
196  heif_item_id to_item);
197 
199 struct heif_error heif_context_add_item_references(struct heif_context* ctx,
200  uint32_t reference_type,
201  heif_item_id from_item,
202  const heif_item_id* to_item,
203  int num_to_items);
204 
205 // ------------------------- adding new items -------------------------
206 
208 struct heif_error heif_context_add_item(struct heif_context* ctx,
209  const char* item_type,
210  const void* data, int size,
211  heif_item_id* out_item_id);
212 
214 struct heif_error heif_context_add_mime_item(struct heif_context* ctx,
215  const char* content_type,
216  enum heif_metadata_compression content_encoding,
217  const void* data, int size,
218  heif_item_id* out_item_id);
219 
221 struct heif_error heif_context_add_precompressed_mime_item(struct heif_context* ctx,
222  const char* content_type,
223  const char* content_encoding,
224  const void* data, int size,
225  heif_item_id* out_item_id);
226 
228 struct heif_error heif_context_add_uri_item(struct heif_context* ctx,
229  const char* item_uri_type,
230  const void* data, int size,
231  heif_item_id* out_item_id);
232 
233 #ifdef __cplusplus
234 }
235 #endif
236 
237 #endif
uint32_t heif_item_id
Definition: heif.h:364
heif_metadata_compression
Definition: heif.h:519
#define LIBHEIF_API
Definition: heif.h:71
int heif_context_get_number_of_items(const struct heif_context *ctx)
Gets the number of items.
LIBHEIF_API uint32_t heif_item_get_item_type(const struct heif_context *ctx, heif_item_id item_id)
Gets the item type.
LIBHEIF_API const char * heif_item_get_mime_item_content_type(const struct heif_context *ctx, heif_item_id item_id)
Gets the MIME content_type for an item.
LIBHEIF_API const char * heif_item_get_uri_item_uri_type(const struct heif_context *ctx, heif_item_id item_id)
Gets the item_uri_type for an item.
LIBHEIF_API struct heif_error heif_context_add_mime_item(struct heif_context *ctx, const char *content_type, enum heif_metadata_compression content_encoding, const void *data, int size, heif_item_id *out_item_id)
LIBHEIF_API const char * heif_item_get_item_name(const struct heif_context *ctx, heif_item_id item_id)
LIBHEIF_API size_t heif_context_get_item_references(const struct heif_context *ctx, heif_item_id from_item_id, int index, uint32_t *out_reference_type_4cc, heif_item_id **out_references_to)
Get the item ids that reference the given item.
LIBHEIF_API struct heif_error heif_item_get_item_data(const struct heif_context *ctx, heif_item_id item_id, enum heif_metadata_compression *out_compression_format, uint8_t **out_data, size_t *out_data_size)
Gets the raw metadata, as stored in the HEIF file.
LIBHEIF_API struct heif_error heif_context_add_uri_item(struct heif_context *ctx, const char *item_uri_type, const void *data, int size, heif_item_id *out_item_id)
LIBHEIF_API void heif_release_item_references(const struct heif_context *ctx, heif_item_id **references)
LIBHEIF_API struct heif_error heif_item_set_item_name(struct heif_context *ctx, heif_item_id item, const char *item_name)
LIBHEIF_API void heif_release_item_data(const struct heif_context *ctx, uint8_t **item_data)
Free the item data.
LIBHEIF_API struct heif_error heif_context_add_item_reference(struct heif_context *ctx, uint32_t reference_type, heif_item_id from_item, heif_item_id to_item)
LIBHEIF_API struct heif_error heif_context_add_precompressed_mime_item(struct heif_context *ctx, const char *content_type, const char *content_encoding, const void *data, int size, heif_item_id *out_item_id)
LIBHEIF_API struct heif_error heif_context_add_item_references(struct heif_context *ctx, uint32_t reference_type, heif_item_id from_item, const heif_item_id *to_item, int num_to_items)
LIBHEIF_API int heif_context_get_list_of_item_IDs(const struct heif_context *ctx, heif_item_id *ID_array, int count)
Get the item identifiers.
LIBHEIF_API struct heif_error heif_context_add_item(struct heif_context *ctx, const char *item_type, const void *data, int size, heif_item_id *out_item_id)
LIBHEIF_API int heif_item_is_item_hidden(const struct heif_context *ctx, heif_item_id item_id)
LIBHEIF_API const char * heif_item_get_mime_item_content_encoding(const struct heif_context *ctx, heif_item_id item_id)
Gets the content_encoding for a MIME item.
Definition: heif.h:349