File tree Expand file tree Collapse file tree 2 files changed +57
-6
lines changed Expand file tree Collapse file tree 2 files changed +57
-6
lines changed Original file line number Diff line number Diff line change 27
27
#include < memory>
28
28
29
29
30
+ struct heif_unci_image_parameters * heif_unci_image_parameters_alloc ()
31
+ {
32
+ auto * params = new heif_unci_image_parameters ();
33
+
34
+ params->version = 1 ;
35
+
36
+ // --- version 1
37
+
38
+ params->image_width = 0 ;
39
+ params->image_height = 0 ;
40
+
41
+ // TODO: should we define that tile size = 0 means no tiling?
42
+ params->tile_width = 0 ;
43
+ params->tile_height = 0 ;
44
+
45
+ params->compression = heif_unci_compression_off;
46
+
47
+ return params;
48
+ }
49
+
50
+
51
+ void heif_unci_image_parameters_copy (struct heif_unci_image_parameters * dst,
52
+ const struct heif_unci_image_parameters * src)
53
+ {
54
+ if (src == nullptr || dst == nullptr ) {
55
+ return ;
56
+ }
57
+
58
+ int min_version = std::min (src->version , dst->version );
59
+
60
+ switch (min_version) {
61
+ case 1 :
62
+ dst->image_width = src->image_width ;
63
+ dst->image_height = src->image_height ;
64
+ dst->tile_width = src->tile_width ;
65
+ dst->tile_height = src->tile_height ;
66
+ dst->compression = src->compression ;
67
+ break ;
68
+ }
69
+ }
70
+
71
+
72
+ void heif_unci_image_parameters_release (struct heif_unci_image_parameters * params)
73
+ {
74
+ delete params;
75
+ }
76
+
77
+
30
78
struct heif_error heif_context_add_unci_image (struct heif_context * ctx,
31
79
const struct heif_unci_image_parameters * parameters,
32
80
const struct heif_encoding_options * encoding_options,
Original file line number Diff line number Diff line change @@ -283,16 +283,19 @@ Result<Encoder::CodedImageData> ImageItem_uncompressed::encode(const std::shared
283
283
Result<Encoder::CodedImageData> ImageItem_uncompressed::encode_static (const std::shared_ptr<HeifPixelImage>& src_image,
284
284
const struct heif_encoding_options & options)
285
285
{
286
- heif_unci_image_parameters parameters{};
287
- parameters.image_width = src_image->get_width ();
288
- parameters.image_height = src_image->get_height ();
289
- parameters.tile_width = parameters.image_width ;
290
- parameters.tile_height = parameters.image_height ;
286
+ auto parameters = std::unique_ptr<heif_unci_image_parameters,
287
+ void (*)(heif_unci_image_parameters*)>(heif_unci_image_parameters_alloc (),
288
+ heif_unci_image_parameters_release);
289
+
290
+ parameters->image_width = src_image->get_width ();
291
+ parameters->image_height = src_image->get_height ();
292
+ parameters->tile_width = parameters->image_width ;
293
+ parameters->tile_height = parameters->image_height ;
291
294
292
295
293
296
// --- generate configuration property boxes
294
297
295
- Result<unciHeaders> genHeadersResult = generate_headers (src_image, & parameters, &options);
298
+ Result<unciHeaders> genHeadersResult = generate_headers (src_image, parameters. get () , &options);
296
299
if (genHeadersResult.error ) {
297
300
return genHeadersResult.error ;
298
301
}
You can’t perform that action at this time.
0 commit comments