summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarsten Haitzler (Rasterman) <raster@rasterman.com>2020-12-18 11:16:38 +0000
committerCarsten Haitzler (Rasterman) <raster@rasterman.com>2020-12-18 11:28:10 +0000
commit00f5eed1d2390d204c83a2cb78a37531f6bbe49c (patch)
treeb3c95338bd7d90127e904ac972859779a15b0e64
parent5f3152a30b6d53def24b85a1b76c75c82edc3c08 (diff)
downloadefl-00f5eed1d2390d204c83a2cb78a37531f6bbe49c.tar.gz
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
-rw-r--r--src/lib/evas/meson.build2
-rw-r--r--src/modules/evas/image_loaders/avif/evas_image_load_avif.c14
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;