From e8fa68cb93ad8738747d49b643c1dde6a1cdcada Mon Sep 17 00:00:00 2001 From: Dirk Farin Date: Mon, 7 Oct 2024 00:36:22 +0200 Subject: [PATCH] fix tild decoder initialization --- libheif/api/libheif/heif.h | 4 +++- libheif/image-items/image_item.cc | 14 ++++++++++++++ libheif/image-items/image_item.h | 2 ++ 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/libheif/api/libheif/heif.h b/libheif/api/libheif/heif.h index 014571d36b..60efef75c9 100644 --- a/libheif/api/libheif/heif.h +++ b/libheif/api/libheif/heif.h @@ -1634,6 +1634,7 @@ enum heif_chroma_upsampling_algorithm heif_chroma_upsampling_bilinear = 2 }; + struct heif_color_conversion_options { // 'version' must be 1. @@ -1652,7 +1653,8 @@ struct heif_color_conversion_options // at the cost of slightly higher computation times. uint8_t only_use_preferred_chroma_algorithm; - // --- Note that we cannot extend this struct because it is embedded in other structs (heif_decoding_options and heif_encoding_options). + // --- Note that we cannot extend this struct because it is embedded in + // other structs (heif_decoding_options and heif_encoding_options). }; // Assumes that it is a version=1 struct. diff --git a/libheif/image-items/image_item.cc b/libheif/image-items/image_item.cc index c8364815b1..cfe956cdce 100644 --- a/libheif/image-items/image_item.cc +++ b/libheif/image-items/image_item.cc @@ -77,6 +77,15 @@ Error ImageItem::check_resolution(uint32_t w, uint32_t h) const } +Error ImageItem::init_decoder_from_item(heif_item_id id) +{ + m_id = id; + + Error err = on_load_file(); + return err; +} + + heif_compression_format ImageItem::compression_format_from_fourcc_infe_type(uint32_t type) { switch (type) { @@ -944,6 +953,11 @@ Result> ImageItem::read_bitstream_configuration_data_overri auto item_codec = ImageItem::alloc_for_compression_format(const_cast(get_context()), format); assert(item_codec); + Error err = item_codec->init_decoder_from_item(itemId); + if (err) { + return err; + } + return item_codec->read_bitstream_configuration_data(itemId); } diff --git a/libheif/image-items/image_item.h b/libheif/image-items/image_item.h index 2b788396df..28f5bbbfb1 100644 --- a/libheif/image-items/image_item.h +++ b/libheif/image-items/image_item.h @@ -261,6 +261,8 @@ class ImageItem : public ErrorBuffer virtual Error on_load_file() { return Error::Ok; } + Error init_decoder_from_item(heif_item_id id); + Result> decode_image(const struct heif_decoding_options& options, bool decode_tile_only, uint32_t tile_x0, uint32_t tile_y0) const;