Details | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
3 | pmbaty | 1 | // Copyright 2011 Google Inc. |
2 | // |
||
3 | // This code is licensed under the same terms as WebM: |
||
4 | // Software License Agreement: http://www.webmproject.org/license/software/ |
||
5 | // Additional IP Rights Grant: http://www.webmproject.org/license/additional/ |
||
6 | // ----------------------------------------------------------------------------- |
||
7 | // |
||
8 | // RIFF container manipulation for WEBP images. |
||
9 | // |
||
10 | // Authors: Urvang (urvang@google.com) |
||
11 | // Vikas (vikasa@google.com) |
||
12 | |||
13 | // This API allows manipulation of WebP container images containing features |
||
14 | // like Color profile, XMP metadata, Animation & Tiling. |
||
15 | // |
||
16 | // Code Example#1: Creating a MUX with image data, color profile & XMP metadata. |
||
17 | // |
||
18 | // int copy_data = 0; |
||
19 | // WebPMux* mux = WebPMuxNew(); |
||
20 | // // ... (Prepare image data). |
||
21 | // WebPMuxSetImage(mux, image_data, image_data_size, alpha_data, alpha_size, |
||
22 | // copy_data); |
||
23 | // // ... (Prepare ICCP color profile data). |
||
24 | // WebPMuxSetColorProfile(mux, icc_data, icc_data_size, copy_data); |
||
25 | // // ... (Prepare XMP metadata). |
||
26 | // WebPMuxSetMetadata(mux, xmp_data, xmp_data_size, copy_data); |
||
27 | // // Get data from mux in WebP RIFF format. |
||
28 | // WebPMuxAssemble(mux, &output_data, &output_data_size); |
||
29 | // WebPMuxDelete(mux); |
||
30 | // // ... (Consume output_data; e.g. write output_data to file). |
||
31 | // free(output_data); |
||
32 | // |
||
33 | // Code Example#2: Get image & color profile data from a WebP file. |
||
34 | // |
||
35 | // int copy_data = 0; |
||
36 | // // ... (Read data from file). |
||
37 | // WebPMux* mux = WebPMuxCreate(data, data_size, copy_data); |
||
38 | // WebPMuxGetImage(mux, &image_data, &image_data_size, |
||
39 | // &alpha_data, &alpha_size); |
||
40 | // // ... (Consume image_data; e.g. call WebPDecode() to decode the data). |
||
41 | // WebPMuxGetColorProfile(mux, &icc_data, &icc_data_size); |
||
42 | // // ... (Consume icc_data). |
||
43 | // WebPMuxDelete(mux); |
||
44 | // free(data); |
||
45 | |||
46 | #ifndef WEBP_WEBP_MUX_H_ |
||
47 | #define WEBP_WEBP_MUX_H_ |
||
48 | |||
49 | #include "./types.h" |
||
50 | |||
51 | #if defined(__cplusplus) || defined(c_plusplus) |
||
52 | extern "C" { |
||
53 | #endif |
||
54 | |||
55 | // Error codes |
||
56 | typedef enum { |
||
57 | WEBP_MUX_OK = 1, |
||
58 | WEBP_MUX_ERROR = 0, |
||
59 | WEBP_MUX_NOT_FOUND = -1, |
||
60 | WEBP_MUX_INVALID_ARGUMENT = -2, |
||
61 | WEBP_MUX_INVALID_PARAMETER = -3, |
||
62 | WEBP_MUX_BAD_DATA = -4, |
||
63 | WEBP_MUX_MEMORY_ERROR = -5 |
||
64 | } WebPMuxError; |
||
65 | |||
66 | // Flag values for different features used in VP8X chunk. |
||
67 | typedef enum { |
||
68 | TILE_FLAG = 0x00000001, |
||
69 | ANIMATION_FLAG = 0x00000002, |
||
70 | ICCP_FLAG = 0x00000004, |
||
71 | META_FLAG = 0x00000008, |
||
72 | ALPHA_FLAG = 0x00000010 |
||
73 | } FeatureFlags; |
||
74 | |||
75 | typedef struct WebPMux WebPMux; // main opaque object. |
||
76 | |||
77 | //------------------------------------------------------------------------------ |
||
78 | // Life of a Mux object |
||
79 | |||
80 | // Creates an empty mux object. |
||
81 | // Returns: |
||
82 | // A pointer to the newly created empty mux object. |
||
83 | WEBP_EXTERN(WebPMux*) WebPMuxNew(void); |
||
84 | |||
85 | // Deletes the mux object. |
||
86 | // Parameters: |
||
87 | // mux - (in/out) object to be deleted |
||
88 | WEBP_EXTERN(void) WebPMuxDelete(WebPMux* const mux); |
||
89 | |||
90 | //------------------------------------------------------------------------------ |
||
91 | // Mux creation. |
||
92 | |||
93 | // Creates a mux object from raw data given in WebP RIFF format. |
||
94 | // Parameters: |
||
95 | // data - (in) the raw data in WebP RIFF format |
||
96 | // size - (in) size of raw data |
||
97 | // copy_data - (in) value 1 indicates given data WILL copied to the mux, and |
||
98 | // value 0 indicates data will NOT be copied. |
||
99 | // Returns: |
||
100 | // A pointer to the mux object created from given data - on success. |
||
101 | // NULL - In case of invalid data or memory error. |
||
102 | WEBP_EXTERN(WebPMux*) WebPMuxCreate(const uint8_t* data, uint32_t size, |
||
103 | int copy_data); |
||
104 | |||
105 | //------------------------------------------------------------------------------ |
||
106 | // Single Image. |
||
107 | |||
108 | // Sets the image in the mux object. Any existing images (including frame/tile) |
||
109 | // will be removed. |
||
110 | // Parameters: |
||
111 | // mux - (in/out) object in which the image is to be set |
||
112 | // data - (in) the image data to be set. The data can be either a VP8 |
||
113 | // bitstream or a single-image WebP file (non-animated & non-tiled) |
||
114 | // size - (in) size of the image data |
||
115 | // alpha_data - (in) the alpha data corresponding to the image (if present) |
||
116 | // alpha_size - (in) size of alpha chunk data |
||
117 | // copy_data - (in) value 1 indicates given data WILL copied to the mux, and |
||
118 | // value 0 indicates data will NOT be copied. |
||
119 | // Returns: |
||
120 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL or data is NULL. |
||
121 | // WEBP_MUX_MEMORY_ERROR - on memory allocation error. |
||
122 | // WEBP_MUX_OK - on success. |
||
123 | WEBP_EXTERN(WebPMuxError) WebPMuxSetImage(WebPMux* const mux, |
||
124 | const uint8_t* data, uint32_t size, |
||
125 | const uint8_t* alpha_data, |
||
126 | uint32_t alpha_size, int copy_data); |
||
127 | |||
128 | // Gets a reference to the image in the mux object. |
||
129 | // The caller should NOT free the returned data. |
||
130 | // Parameters: |
||
131 | // mux - (in) object from which the image is to be fetched |
||
132 | // data - (out) the returned image data |
||
133 | // size - (out) size of the returned image data |
||
134 | // alpha_data - (in) the returned alpha data of the image (if present) |
||
135 | // alpha_size - (in) size of alpha chunk data |
||
136 | // Returns: |
||
137 | // WEBP_MUX_INVALID_ARGUMENT - if either of mux, data or size is NULL |
||
138 | // OR if mux contains animation/tiling. |
||
139 | // WEBP_MUX_NOT_FOUND - if image is not present in mux object. |
||
140 | // WEBP_MUX_OK - on success. |
||
141 | WEBP_EXTERN(WebPMuxError) WebPMuxGetImage(const WebPMux* const mux, |
||
142 | const uint8_t** data, uint32_t* size, |
||
143 | const uint8_t** alpha_data, |
||
144 | uint32_t* alpha_size); |
||
145 | |||
146 | // Deletes the image in the mux object. |
||
147 | // Parameters: |
||
148 | // mux - (in/out) object from which the image is to be deleted |
||
149 | // Returns: |
||
150 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL |
||
151 | // OR if mux contains animation/tiling. |
||
152 | // WEBP_MUX_NOT_FOUND - if image is not present in mux object. |
||
153 | // WEBP_MUX_OK - on success. |
||
154 | WEBP_EXTERN(WebPMuxError) WebPMuxDeleteImage(WebPMux* const mux); |
||
155 | |||
156 | //------------------------------------------------------------------------------ |
||
157 | // XMP Metadata. |
||
158 | |||
159 | // Sets the XMP metadata in the mux object. Any existing metadata chunk(s) will |
||
160 | // be removed. |
||
161 | // Parameters: |
||
162 | // mux - (in/out) object to which the XMP metadata is to be added |
||
163 | // data - (in) the XMP metadata data to be added |
||
164 | // size - (in) size of the XMP metadata data |
||
165 | // copy_data - (in) value 1 indicates given data WILL copied to the mux, and |
||
166 | // value 0 indicates data will NOT be copied. |
||
167 | // Returns: |
||
168 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL or data is NULL. |
||
169 | // WEBP_MUX_MEMORY_ERROR - on memory allocation error. |
||
170 | // WEBP_MUX_OK - on success. |
||
171 | WEBP_EXTERN(WebPMuxError) WebPMuxSetMetadata(WebPMux* const mux, |
||
172 | const uint8_t* data, |
||
173 | uint32_t size, int copy_data); |
||
174 | |||
175 | // Gets a reference to the XMP metadata in the mux object. |
||
176 | // The caller should NOT free the returned data. |
||
177 | // Parameters: |
||
178 | // mux - (in) object from which the XMP metadata is to be fetched |
||
179 | // data - (out) the returned XMP metadata |
||
180 | // size - (out) size of the returned XMP metadata |
||
181 | // Returns: |
||
182 | // WEBP_MUX_INVALID_ARGUMENT - if either of mux, data or size is NULL |
||
183 | // WEBP_MUX_NOT_FOUND - if metadata is not present in mux object. |
||
184 | // WEBP_MUX_OK - on success. |
||
185 | WEBP_EXTERN(WebPMuxError) WebPMuxGetMetadata(const WebPMux* const mux, |
||
186 | const uint8_t** data, |
||
187 | uint32_t* size); |
||
188 | |||
189 | // Deletes the XMP metadata in the mux object. |
||
190 | // Parameters: |
||
191 | // mux - (in/out) object from which XMP metadata is to be deleted |
||
192 | // Returns: |
||
193 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL |
||
194 | // WEBP_MUX_NOT_FOUND - If mux does not contain metadata. |
||
195 | // WEBP_MUX_OK - on success. |
||
196 | WEBP_EXTERN(WebPMuxError) WebPMuxDeleteMetadata(WebPMux* const mux); |
||
197 | |||
198 | //------------------------------------------------------------------------------ |
||
199 | // ICC Color Profile. |
||
200 | |||
201 | // Sets the color profile in the mux object. Any existing color profile chunk(s) |
||
202 | // will be removed. |
||
203 | // Parameters: |
||
204 | // mux - (in/out) object to which the color profile is to be added |
||
205 | // data - (in) the color profile data to be added |
||
206 | // size - (in) size of the color profile data |
||
207 | // copy_data - (in) value 1 indicates given data WILL copied to the mux, and |
||
208 | // value 0 indicates data will NOT be copied. |
||
209 | // Returns: |
||
210 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL or data is NULL |
||
211 | // WEBP_MUX_MEMORY_ERROR - on memory allocation error |
||
212 | // WEBP_MUX_OK - on success |
||
213 | WEBP_EXTERN(WebPMuxError) WebPMuxSetColorProfile(WebPMux* const mux, |
||
214 | const uint8_t* data, |
||
215 | uint32_t size, int copy_data); |
||
216 | |||
217 | // Gets a reference to the color profile in the mux object. |
||
218 | // The caller should NOT free the returned data. |
||
219 | // Parameters: |
||
220 | // mux - (in) object from which the color profile data is to be fetched |
||
221 | // data - (out) the returned color profile data |
||
222 | // size - (out) size of the returned color profile data |
||
223 | // Returns: |
||
224 | // WEBP_MUX_INVALID_ARGUMENT - if either of mux, data or size is NULL |
||
225 | // WEBP_MUX_NOT_FOUND - if color profile is not present in mux object. |
||
226 | // WEBP_MUX_OK - on success. |
||
227 | WEBP_EXTERN(WebPMuxError) WebPMuxGetColorProfile(const WebPMux* const mux, |
||
228 | const uint8_t** data, |
||
229 | uint32_t* size); |
||
230 | |||
231 | // Deletes the color profile in the mux object. |
||
232 | // Parameters: |
||
233 | // mux - (in/out) object from which color profile is to be deleted |
||
234 | // Returns: |
||
235 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL |
||
236 | // WEBP_MUX_NOT_FOUND - If mux does not contain color profile. |
||
237 | // WEBP_MUX_OK - on success. |
||
238 | WEBP_EXTERN(WebPMuxError) WebPMuxDeleteColorProfile(WebPMux* const mux); |
||
239 | |||
240 | //------------------------------------------------------------------------------ |
||
241 | // Animation. |
||
242 | |||
243 | // Adds an animation frame to the mux object. |
||
244 | // nth=0 has a special meaning - last position. |
||
245 | // Parameters: |
||
246 | // mux - (in/out) object to which an animation frame is to be added |
||
247 | // nth - (in) The position at which the frame is to be added. |
||
248 | // data - (in) the raw VP8 image data corresponding to frame image. The data |
||
249 | // can be either a VP8 bitstream or a single-image WebP file |
||
250 | // (non-animated & non-tiled) |
||
251 | // size - (in) size of frame chunk data |
||
252 | // alpha_data - (in) the alpha data corresponding to frame image (if present) |
||
253 | // alpha_size - (in) size of alpha chunk data |
||
254 | // x_offset - (in) x-offset of the frame to be added |
||
255 | // y_offset - (in) y-offset of the frame to be added |
||
256 | // duration - (in) duration of the frame to be added (in milliseconds) |
||
257 | // copy_data - (in) value 1 indicates given data WILL copied to the mux, and |
||
258 | // value 0 indicates data will NOT be copied. |
||
259 | // Returns: |
||
260 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL or data is NULL |
||
261 | // WEBP_MUX_NOT_FOUND - If we have less than (nth-1) frames before adding. |
||
262 | // WEBP_MUX_MEMORY_ERROR - on memory allocation error. |
||
263 | // WEBP_MUX_OK - on success. |
||
264 | WEBP_EXTERN(WebPMuxError) WebPMuxAddFrame(WebPMux* const mux, uint32_t nth, |
||
265 | const uint8_t* data, uint32_t size, |
||
266 | const uint8_t* alpha_data, |
||
267 | uint32_t alpha_size, |
||
268 | uint32_t x_offset, uint32_t y_offset, |
||
269 | uint32_t duration, int copy_data); |
||
270 | |||
271 | // TODO(urvang): Create a struct as follows to reduce argument list size: |
||
272 | // typedef struct { |
||
273 | // int nth; |
||
274 | // uint8_t* data; |
||
275 | // uint32_t data_size; |
||
276 | // uint8_t* alpha; |
||
277 | // uint32_t alpha_size; |
||
278 | // uint32_t x_offset, y_offset; |
||
279 | // uint32_t duration; |
||
280 | // } FrameInfo; |
||
281 | |||
282 | // Gets a reference to the nth animation frame from the mux object. |
||
283 | // The caller should NOT free the returned data. |
||
284 | // nth=0 has a special meaning - last position. |
||
285 | // Parameters: |
||
286 | // mux - (in) object from which the info is to be fetched |
||
287 | // nth - (in) index of the frame in the mux object |
||
288 | // data - (out) the returned image data |
||
289 | // size - (out) size of the returned image data |
||
290 | // alpha_data - (in) the alpha data corresponding to frame image (if present) |
||
291 | // alpha_size - (in) size of alpha chunk data |
||
292 | // x_offset - (out) x-offset of the returned frame |
||
293 | // y_offset - (out) y-offset of the returned frame |
||
294 | // duration - (out) duration of the returned frame (in milliseconds) |
||
295 | // Returns: |
||
296 | // WEBP_MUX_INVALID_ARGUMENT - if either mux, data, size, x_offset, |
||
297 | // y_offset, or duration is NULL |
||
298 | // WEBP_MUX_NOT_FOUND - if there are less than nth frames in the mux object. |
||
299 | // WEBP_MUX_BAD_DATA - if nth frame chunk in mux is invalid. |
||
300 | // WEBP_MUX_OK - on success. |
||
301 | WEBP_EXTERN(WebPMuxError) WebPMuxGetFrame(const WebPMux* const mux, |
||
302 | uint32_t nth, |
||
303 | const uint8_t** data, uint32_t* size, |
||
304 | const uint8_t** alpha_data, |
||
305 | uint32_t* alpha_size, |
||
306 | uint32_t* x_offset, |
||
307 | uint32_t* y_offset, |
||
308 | uint32_t* duration); |
||
309 | |||
310 | // Deletes an animation frame from the mux object. |
||
311 | // nth=0 has a special meaning - last position. |
||
312 | // Parameters: |
||
313 | // mux - (in/out) object from which a frame is to be deleted |
||
314 | // nth - (in) The position from which the frame is to be deleted |
||
315 | // Returns: |
||
316 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL |
||
317 | // WEBP_MUX_NOT_FOUND - If there are less than nth frames in the mux object |
||
318 | // before deletion. |
||
319 | // WEBP_MUX_OK - on success. |
||
320 | WEBP_EXTERN(WebPMuxError) WebPMuxDeleteFrame(WebPMux* const mux, uint32_t nth); |
||
321 | |||
322 | // Sets the animation loop count in the mux object. Any existing loop count |
||
323 | // value(s) will be removed. |
||
324 | // Parameters: |
||
325 | // mux - (in/out) object in which loop chunk is to be set/added |
||
326 | // loop_count - (in) animation loop count value. |
||
327 | // Note that loop_count of zero denotes infinite loop. |
||
328 | // Returns: |
||
329 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL |
||
330 | // WEBP_MUX_MEMORY_ERROR - on memory allocation error. |
||
331 | // WEBP_MUX_OK - on success. |
||
332 | WEBP_EXTERN(WebPMuxError) WebPMuxSetLoopCount(WebPMux* const mux, |
||
333 | uint32_t loop_count); |
||
334 | |||
335 | // Gets the animation loop count from the mux object. |
||
336 | // Parameters: |
||
337 | // mux - (in) object from which the loop count is to be fetched |
||
338 | // loop_count - (out) the loop_count value present in the LOOP chunk |
||
339 | // Returns: |
||
340 | // WEBP_MUX_INVALID_ARGUMENT - if either of mux or loop_count is NULL |
||
341 | // WEBP_MUX_NOT_FOUND - if loop chunk is not present in mux object. |
||
342 | // WEBP_MUX_OK - on success. |
||
343 | WEBP_EXTERN(WebPMuxError) WebPMuxGetLoopCount(const WebPMux* const mux, |
||
344 | uint32_t* loop_count); |
||
345 | |||
346 | //------------------------------------------------------------------------------ |
||
347 | // Tiling. |
||
348 | |||
349 | // Adds a tile to the mux object. |
||
350 | // nth=0 has a special meaning - last position. |
||
351 | // Parameters: |
||
352 | // mux - (in/out) object to which a tile is to be added |
||
353 | // nth - (in) The position at which the tile is to be added. |
||
354 | // data - (in) the raw VP8 image data corresponding to tile image. The data |
||
355 | // can be either a VP8 bitstream or a single-image WebP file |
||
356 | // (non-animated & non-tiled) |
||
357 | // size - (in) size of tile chunk data |
||
358 | // alpha_data - (in) the alpha data corresponding to tile image (if present) |
||
359 | // alpha_size - (in) size of alpha chunk data |
||
360 | // x_offset - (in) x-offset of the tile to be added |
||
361 | // y_offset - (in) y-offset of the tile to be added |
||
362 | // copy_data - (in) value 1 indicates given data WILL copied to the mux, and |
||
363 | // value 0 indicates data will NOT be copied. |
||
364 | // Returns: |
||
365 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL or data is NULL |
||
366 | // WEBP_MUX_NOT_FOUND - If we have less than (nth-1) tiles before adding. |
||
367 | // WEBP_MUX_MEMORY_ERROR - on memory allocation error. |
||
368 | // WEBP_MUX_OK - on success. |
||
369 | WEBP_EXTERN(WebPMuxError) WebPMuxAddTile(WebPMux* const mux, uint32_t nth, |
||
370 | const uint8_t* data, uint32_t size, |
||
371 | const uint8_t* alpha_data, |
||
372 | uint32_t alpha_size, |
||
373 | uint32_t x_offset, uint32_t y_offset, |
||
374 | int copy_data); |
||
375 | |||
376 | // Gets a reference to the nth tile from the mux object. |
||
377 | // The caller should NOT free the returned data. |
||
378 | // nth=0 has a special meaning - last position. |
||
379 | // Parameters: |
||
380 | // mux - (in) object from which the info is to be fetched |
||
381 | // nth - (in) index of the tile in the mux object |
||
382 | // data - (out) the returned image data |
||
383 | // size - (out) size of the returned image data |
||
384 | // alpha_data - (in) the alpha data corresponding to tile image (if present) |
||
385 | // alpha_size - (in) size of alpha chunk data |
||
386 | // x_offset - (out) x-offset of the returned tile |
||
387 | // y_offset - (out) y-offset of the returned tile |
||
388 | // Returns: |
||
389 | // WEBP_MUX_INVALID_ARGUMENT - if either mux, data, size, x_offset or |
||
390 | // y_offset is NULL |
||
391 | // WEBP_MUX_NOT_FOUND - if there are less than nth tiles in the mux object. |
||
392 | // WEBP_MUX_BAD_DATA - if nth tile chunk in mux is invalid. |
||
393 | // WEBP_MUX_OK - on success. |
||
394 | WEBP_EXTERN(WebPMuxError) WebPMuxGetTile(const WebPMux* const mux, uint32_t nth, |
||
395 | const uint8_t** data, uint32_t* size, |
||
396 | const uint8_t** alpha_data, |
||
397 | uint32_t* alpha_size, |
||
398 | uint32_t* x_offset, |
||
399 | uint32_t* y_offset); |
||
400 | |||
401 | // Deletes a tile from the mux object. |
||
402 | // nth=0 has a special meaning - last position |
||
403 | // Parameters: |
||
404 | // mux - (in/out) object from which a tile is to be deleted |
||
405 | // nth - (in) The position from which the tile is to be deleted |
||
406 | // Returns: |
||
407 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL |
||
408 | // WEBP_MUX_NOT_FOUND - If there are less than nth tiles in the mux object |
||
409 | // before deletion. |
||
410 | // WEBP_MUX_OK - on success. |
||
411 | WEBP_EXTERN(WebPMuxError) WebPMuxDeleteTile(WebPMux* const mux, uint32_t nth); |
||
412 | |||
413 | //------------------------------------------------------------------------------ |
||
414 | // Misc Utilities. |
||
415 | |||
416 | // Gets the feature flags from the mux object. |
||
417 | // Parameters: |
||
418 | // mux - (in) object from which the features are to be fetched |
||
419 | // flags - (out) the flags specifying which features are present in the |
||
420 | // mux object. This will be an OR of various flag values. |
||
421 | // Enum 'FeatureFlags' can be used to test for individual flag values. |
||
422 | // Returns: |
||
423 | // WEBP_MUX_INVALID_ARGUMENT - if mux is NULL or flags is NULL |
||
424 | // WEBP_MUX_NOT_FOUND - if VP8X chunk is not present in mux object. |
||
425 | // WEBP_MUX_BAD_DATA - if VP8X chunk in mux is invalid. |
||
426 | // WEBP_MUX_OK - on success. |
||
427 | WEBP_EXTERN(WebPMuxError) WebPMuxGetFeatures(const WebPMux* const mux, |
||
428 | uint32_t* flags); |
||
429 | |||
430 | // Gets number of chunks having tag value tag in the mux object. |
||
431 | // Parameters: |
||
432 | // mux - (in) object from which the info is to be fetched |
||
433 | // tag - (in) tag name specifying the type of chunk |
||
434 | // num_elements - (out) number of chunks corresponding to the specified tag |
||
435 | // Returns: |
||
436 | // WEBP_MUX_INVALID_ARGUMENT - if either mux, tag or num_elements is NULL |
||
437 | // WEBP_MUX_OK - on success. |
||
438 | WEBP_EXTERN(WebPMuxError) WebPMuxNumNamedElements(const WebPMux* const mux, |
||
439 | const char* tag, |
||
440 | int* num_elements); |
||
441 | |||
442 | // Assembles all chunks in WebP RIFF format and returns in output_data. |
||
443 | // This function also validates the mux object. |
||
444 | // The content of '*output_data' is allocated using malloc(), and NOT |
||
445 | // owned by the 'mux' object. |
||
446 | // It MUST be deallocated by the caller by calling free(). |
||
447 | // Parameters: |
||
448 | // mux - (in/out) object whose chunks are to be assembled |
||
449 | // output_data - (out) byte array where assembled WebP data is returned |
||
450 | // output_size - (out) size of returned data |
||
451 | // Returns: |
||
452 | // WEBP_MUX_BAD_DATA - if mux object is invalid. |
||
453 | // WEBP_MUX_INVALID_ARGUMENT - if either mux, output_data or output_size is |
||
454 | // NULL. |
||
455 | // WEBP_MUX_MEMORY_ERROR - on memory allocation error. |
||
456 | // WEBP_MUX_OK - on success |
||
457 | WEBP_EXTERN(WebPMuxError) WebPMuxAssemble(WebPMux* const mux, |
||
458 | uint8_t** output_data, |
||
459 | uint32_t* output_size); |
||
460 | |||
461 | //------------------------------------------------------------------------------ |
||
462 | |||
463 | #if defined(__cplusplus) || defined(c_plusplus) |
||
464 | } // extern "C" |
||
465 | #endif |
||
466 | |||
467 | #endif /* WEBP_WEBP_MUX_H_ */ |