raster pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=00f5eed1d2390d204c83a2cb78a37531f6bbe49c

commit 00f5eed1d2390d204c83a2cb78a37531f6bbe49c
Author: Carsten Haitzler (Rasterman) <ras...@rasterman.com>
Date:   Fri Dec 18 11:16:38 2020 +0000

    evas - avif - fix for 0.8.2 libavif that broke api
    
    also require 0.8.2 ... as well - no point trying to support older
    versions forever and this is still experimental.
    
    fixes T8844
    @fix
---
 src/lib/evas/meson.build                                   |  2 +-
 src/modules/evas/image_loaders/avif/evas_image_load_avif.c | 14 ++++----------
 2 files changed, 5 insertions(+), 11 deletions(-)

diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build
index 883a959aa2..8dcfd98713 100644
--- a/src/lib/evas/meson.build
+++ b/src/lib/evas/meson.build
@@ -10,7 +10,7 @@ giflib = cc.find_library('gif')
 webp = dependency('libwebp', version: ['>=0.5.0'], required: 
get_option('evas-loaders-disabler').contains('webp') == false)
 webpdemux = dependency('libwebpdemux', version: ['>=0.5.0'], required: 
get_option('evas-loaders-disabler').contains('webp') == false)
 libopenjp2 = dependency('libopenjp2', required: 
get_option('evas-loaders-disabler').contains('jp2k') == false)
-libavif = dependency('libavif', required: 
get_option('evas-loaders-disabler').contains('avif') == false)
+libavif = dependency('libavif', required: 
get_option('evas-loaders-disabler').contains('avif') == false, version: '>= 
0.8.2')
 
 evas_image_loaders_file = [
      ['avif',    'shared', [libavif]],
diff --git a/src/modules/evas/image_loaders/avif/evas_image_load_avif.c 
b/src/modules/evas/image_loaders/avif/evas_image_load_avif.c
index 34b6da9bd3..f7cfe0ef03 100644
--- a/src/modules/evas/image_loaders/avif/evas_image_load_avif.c
+++ b/src/modules/evas/image_loaders/avif/evas_image_load_avif.c
@@ -43,7 +43,6 @@ evas_image_load_file_head_avif_internal(Evas_Loader_Internal 
*loader,
                                         int *error)
 {
    Evas_Image_Animated *animated;
-   avifROData raw;
    avifDecoder *decoder;
    avifResult res;
    Eina_Bool ret;
@@ -55,9 +54,6 @@ evas_image_load_file_head_avif_internal(Evas_Loader_Internal 
*loader,
    prop->h = 0;
    prop->alpha = EINA_FALSE;
 
-   raw.size = length;
-   raw.data = (const uint8_t *)map;
-
    decoder = avifDecoderCreate();
    if (!decoder)
      {
@@ -65,7 +61,8 @@ evas_image_load_file_head_avif_internal(Evas_Loader_Internal 
*loader,
         return ret;
      }
 
-   res = avifDecoderParse(decoder, &raw);
+   avifDecoderSetIOMemory(decoder, (const uint8_t *)map, length);
+   res = avifDecoderParse(decoder);
    if (res != AVIF_RESULT_OK)
      {
         ERR("avif file format invalid");
@@ -141,7 +138,6 @@ 
evas_image_load_file_data_avif_internal(Evas_Loader_Internal *loader,
    decoder = loader->decoder;
    if (!decoder)
      {
-        avifROData raw;
         decoder = avifDecoderCreate();
         if (!decoder)
           {
@@ -149,10 +145,8 @@ 
evas_image_load_file_data_avif_internal(Evas_Loader_Internal *loader,
              return EINA_FALSE;
           }
 
-        raw.size = length;
-        raw.data = (const uint8_t *)map;
-
-        res = avifDecoderParse(decoder, &raw);
+        avifDecoderSetIOMemory(decoder, (const uint8_t *)map, length);
+        res = avifDecoderParse(decoder);
         if (res != AVIF_RESULT_OK)
           {
              *error = EVAS_LOAD_ERROR_GENERIC;

-- 


Reply via email to