gd_heif.c (libgd-2.3.2) | : | gd_heif.c (libgd-2.3.3) | ||
---|---|---|---|---|
skipping to change at line 248 | skipping to change at line 248 | |||
See <gdImageCreateFromHeif>. | See <gdImageCreateFromHeif>. | |||
*/ | */ | |||
BGD_DECLARE(gdImagePtr) gdImageCreateFromHeifCtx(gdIOCtx *infile) | BGD_DECLARE(gdImagePtr) gdImageCreateFromHeifCtx(gdIOCtx *infile) | |||
{ | { | |||
return _gdImageCreateFromHeifCtx(infile, GD_HEIF_BRAND_AVIF | GD_HEIF_BRA ND_MIF1 | GD_HEIF_BRAND_HEIC | GD_HEIF_BRAND_HEIX); | return _gdImageCreateFromHeifCtx(infile, GD_HEIF_BRAND_AVIF | GD_HEIF_BRA ND_MIF1 | GD_HEIF_BRAND_HEIC | GD_HEIF_BRAND_HEIX); | |||
} | } | |||
static struct heif_error _gdImageWriteHeif(struct heif_context *heif_ctx, const void *data, size_t size, void *userdata) | static struct heif_error _gdImageWriteHeif(struct heif_context *heif_ctx, const void *data, size_t size, void *userdata) | |||
{ | { | |||
ARG_NOT_USED(heif_ctx); | ||||
gdIOCtx *outfile; | gdIOCtx *outfile; | |||
struct heif_error err; | struct heif_error err; | |||
outfile = (gdIOCtx *)userdata; | outfile = (gdIOCtx *)userdata; | |||
gdPutBuf(data, size, outfile); | gdPutBuf(data, size, outfile); | |||
err.code = heif_error_Ok; | err.code = heif_error_Ok; | |||
err.subcode = heif_suberror_Unspecified; | err.subcode = heif_suberror_Unspecified; | |||
err.message = ""; | err.message = ""; | |||
skipping to change at line 322 | skipping to change at line 323 | |||
} else { | } else { | |||
err = heif_encoder_set_lossy_quality(heif_enc, quality); | err = heif_encoder_set_lossy_quality(heif_enc, quality); | |||
} | } | |||
if (err.code != heif_error_Ok) { | if (err.code != heif_error_Ok) { | |||
gd_error("gd-heif invalid quality number\n"); | gd_error("gd-heif invalid quality number\n"); | |||
heif_encoder_release(heif_enc); | heif_encoder_release(heif_enc); | |||
heif_context_free(heif_ctx); | heif_context_free(heif_ctx); | |||
return GD_FALSE; | return GD_FALSE; | |||
} | } | |||
err = heif_encoder_set_parameter_string(heif_enc, "chroma", chroma); | if (heif_get_version_number_major() >= 1 && heif_get_version_number_minor | |||
if (err.code != heif_error_Ok) { | () >= 9) { | |||
gd_error("gd-heif invalid chroma subsampling parameter\n"); | err = heif_encoder_set_parameter_string(heif_enc, "chroma", chrom | |||
heif_encoder_release(heif_enc); | a); | |||
heif_context_free(heif_ctx); | if (err.code != heif_error_Ok) { | |||
return GD_FALSE; | gd_error("gd-heif invalid chroma subsampling parameter\n" | |||
); | ||||
heif_encoder_release(heif_enc); | ||||
heif_context_free(heif_ctx); | ||||
return GD_FALSE; | ||||
} | ||||
} | } | |||
err = heif_image_create(gdImageSX(im), gdImageSY(im), heif_colorspace_RGB , heif_chroma_interleaved_RGBA, &heif_im); | err = heif_image_create(gdImageSX(im), gdImageSY(im), heif_colorspace_RGB , heif_chroma_interleaved_RGBA, &heif_im); | |||
if (err.code != heif_error_Ok) { | if (err.code != heif_error_Ok) { | |||
gd_error("gd-heif image creation failed"); | gd_error("gd-heif image creation failed"); | |||
heif_encoder_release(heif_enc); | heif_encoder_release(heif_enc); | |||
heif_context_free(heif_ctx); | heif_context_free(heif_ctx); | |||
return GD_FALSE; | return GD_FALSE; | |||
} | } | |||
End of changes. 2 change blocks. | ||||
6 lines changed or deleted | 12 lines changed or added |