From 53784608efe9ae2656de46b7da767f19d92270b2 Mon Sep 17 00:00:00 2001 From: Vincent Torri Date: Sat, 11 Jul 2020 11:34:01 +0100 Subject: [PATCH] Evas: add avif evas loader Summary: Add AV1 image file loader to Evas Test Plan: test executable with avif files found in libavif project Reviewers: raster Subscribers: cedric, #reviewers, #committers Tags: #efl Differential Revision: https://phab.enlightenment.org/D12051 --- meson_options.txt | 4 +- po/POTFILES.in | 1221 +++++++++++++++++++- src/lib/evas/common/evas_image_load.c | 4 +- src/lib/evas/file/evas_module.c | 4 + src/lib/evas/meson.build | 2 + .../evas/image_loaders/avif/evas_image_load_avif.c | 290 +++++ 6 files changed, 1512 insertions(+), 13 deletions(-) create mode 100644 src/modules/evas/image_loaders/avif/evas_image_load_avif.c diff --git a/meson_options.txt b/meson_options.txt index 2f5d4ce..cb1f8a9 100644 --- a/meson_options.txt +++ b/meson_options.txt @@ -189,8 +189,8 @@ option('unmount-path', option('evas-loaders-disabler', type : 'array', description : 'List of modular image/vector loaders to disable in efl', - choices : ['gst', 'pdf', 'ps', 'raw', 'svg', 'rsvg', 'xcf', 'bmp', 'dds', 'eet', 'generic', 'gif', 'ico', 'jp2k', 'jpeg', 'pmaps', 'png', 'psd', 'tga', 'tgv', 'tiff', 'wbmp', 'webp', 'xpm', 'json'], - value : ['json'] + choices : ['gst', 'pdf', 'ps', 'raw', 'svg', 'rsvg', 'xcf', 'bmp', 'dds', 'eet', 'generic', 'gif', 'ico', 'jp2k', 'jpeg', 'pmaps', 'png', 'psd', 'tga', 'tgv', 'tiff', 'wbmp', 'webp', 'xpm', 'json', 'avif'], + value : ['json', 'avif'] ) option('ecore-imf-loaders-disabler', diff --git a/po/POTFILES.in b/po/POTFILES.in index 9431715..11b1b79 100644 --- a/po/POTFILES.in +++ b/po/POTFILES.in @@ -86,16 +86,1217 @@ src/edje_external/elementary/elm_panes.c src/edje_external/elementary/elm_photocam.c src/edje_external/elementary/elm_progressbar.c src/edje_external/elementary/elm_radio.c -src/edje_external/elementary/elm_scroller.c -src/edje_external/elementary/elm_slider.c -src/edje_external/elementary/elm_slideshow.c -src/edje_external/elementary/elm_spinner.c -src/edje_external/elementary/elm_thumb.c -src/edje_external/elementary/elm_toolbar.c -src/lib/elementary/elc_ctxpopup.c -src/lib/elementary/elc_fileselector.c -src/lib/elementary/elc_fileselector_button.c -src/lib/elementary/elc_fileselector_entry.c +src/edje_external/elementary/elm_label.c +src/edje_external/elementary/elm_bg.c +src/edje_external/elementary/elm_hoversel.c +src/edje_external/elementary/elm_map.c +src/edje_external/elementary/elm_index.c +src/edje_external/elementary/elm_fileselector_entry.c +src/edje_external/elementary/elm_list.c +src/edje_external/elementary/elm_naviframe.c +src/tests/eolian_js/eolian_js_test_constructor_method_impl.c +src/tests/eolian_js/eolian_js_test_test_object_impl.c +src/tests/efl_mono/dummy_child.c +src/tests/efl_mono/dummy_hidden_object.c +src/tests/efl_mono/dummy_numberwrapper.c +src/tests/efl_mono/dummy_interfaces.c +src/tests/efl_mono/dummy_inherit_helper.c +src/tests/efl_mono/dummy_constructible_object.c +src/tests/efl_mono/dummy_test_object.c +src/tests/efl_mono/dummy_part_holder.c +src/tests/efl_mono/dummy_event_manager.c +src/tests/elput/elput_suite.c +src/tests/elput/elput_test_elput.c +src/tests/ecore_con/ecore_con_suite.c +src/tests/ecore_con/ecore_con_test_efl_net_ip_address.c +src/tests/ecore_con/ecore_con_test_ecore_con.c +src/tests/ecore_con/ecore_con_test_ecore_con_url.c +src/tests/ecore_con/ecore_con_test_ecore_con_eet.c +src/tests/edje/edje_test_features.c +src/tests/edje/edje_test_signal.c +src/tests/edje/edje_test_edje.c +src/tests/edje/edje_test_text.c +src/tests/edje/edje_suite.c +src/tests/edje/efl_test_layout3.c +src/tests/edje/efl_test_layout.c +src/tests/edje/efl_test_layout2.c +src/tests/edje/edje_test_container.c +src/tests/edje/edje_test_swallow.c +src/tests/eolian/eolian_generation.c +src/tests/eolian/eolian_generated_future.c +src/tests/eolian/data/class_simple_ref.c +src/tests/eolian/data/function_as_argument_ref.c +src/tests/eolian/data/object_impl_add_ref.c +src/tests/eolian/data/override_ref.c +src/tests/eolian/data/owning_ref.c +src/tests/eolian/data/object_impl_ref.c +src/tests/eolian/data/function_as_argument_impl_ref.c +src/tests/eolian/eolian_parsing.c +src/tests/eolian/eolian_static.c +src/tests/eolian/eolian_aux.c +src/tests/eolian/eolian_suite.c +src/tests/eina_cxx/simple.c +src/tests/ecore/ecore_test_ecore_fb.c +src/tests/ecore/ecore_test_ecore_thread_eina_thread_queue.c +src/tests/ecore/efl_app_test_loop_fd.c +src/tests/ecore/ecore_test_ecore_audio.c +src/tests/ecore/ecore_test_ecore_evas_selection.c +src/tests/ecore/efl_app_test_loop.c +src/tests/ecore/efl_app_test_promise.c +src/tests/ecore/ecore_test_poller.c +src/tests/ecore/ecore_test_ecore.c +src/tests/ecore/efl_app_test_cml.c +src/tests/ecore/ecore_test_args.c +src/tests/ecore/ecore_test_animator.c +src/tests/ecore/ecore_test_ecore_evas.c +src/tests/ecore/ecore_test_ecore_imf.c +src/tests/ecore/efl_app_test_loop_timer.c +src/tests/ecore/ecore_test_idle.c +src/tests/ecore/ecore_test_ecore_input.c +src/tests/ecore/ecore_test_job.c +src/tests/ecore/ecore_test_ecore_file.c +src/tests/ecore/ecore_test_timer.c +src/tests/ecore/ecore_suite.c +src/tests/ecore/ecore_test_pipe.c +src/tests/ecore/efl_app_test_env.c +src/tests/ecore/efl_app_suite.c +src/tests/ecore/ecore_test_ecore_x.c +src/tests/eo/composite_objects/composite_objects_main.c +src/tests/eo/composite_objects/composite_objects_comp.c +src/tests/eo/composite_objects/composite_objects_simple.c +src/tests/eo/signals/signals_simple.c +src/tests/eo/signals/signals_main.c +src/tests/eo/constructors/constructors_simple7.c +src/tests/eo/constructors/constructors_simple.c +src/tests/eo/constructors/constructors_simple4.c +src/tests/eo/constructors/constructors_simple6.c +src/tests/eo/constructors/constructors_mixin.c +src/tests/eo/constructors/constructors_main.c +src/tests/eo/constructors/constructors_simple5.c +src/tests/eo/constructors/constructors_simple2.c +src/tests/eo/constructors/constructors_simple3.c +src/tests/eo/children/children_simple.c +src/tests/eo/children/children_main.c +src/tests/eo/suite/eo_test_class_simple.c +src/tests/eo/suite/eo_test_class_errors.c +src/tests/eo/suite/eo_test_lifecycle.c +src/tests/eo/suite/eo_test_class_behaviour_errors.c +src/tests/eo/suite/eo_error_msgs.c +src/tests/eo/suite/eo_test_general.c +src/tests/eo/suite/eo_test_value.c +src/tests/eo/suite/eo_test_init.c +src/tests/eo/suite/eo_test_event.c +src/tests/eo/suite/eo_test_threaded_calls.c +src/tests/eo/suite/eo_test_domain.c +src/tests/eo/suite/eo_test_class_singleton.c +src/tests/eo/suite/eo_test_reflection_complex_class_structure.c +src/tests/eo/suite/eo_suite.c +src/tests/eo/suite/eo_test_reflection.c +src/tests/eo/suite/eo_test_call_errors.c +src/tests/eo/interface/interface_main.c +src/tests/eo/interface/interface_interface.c +src/tests/eo/interface/interface_simple.c +src/tests/eo/interface/interface_interface2.c +src/tests/eo/mixin/mixin_mixin.c +src/tests/eo/mixin/mixin_inherit.c +src/tests/eo/mixin/mixin_mixin2.c +src/tests/eo/mixin/mixin_simple.c +src/tests/eo/mixin/mixin_mixin3.c +src/tests/eo/mixin/mixin_mixin4.c +src/tests/eo/mixin/mixin_main.c +src/tests/eo/access/access_simple.c +src/tests/eo/access/access_main.c +src/tests/eo/access/access_inherit.c +src/tests/eo/function_overrides/function_overrides_inherit2.c +src/tests/eo/function_overrides/function_overrides_simple.c +src/tests/eo/function_overrides/function_overrides_inherit.c +src/tests/eo/function_overrides/function_overrides_inherit3.c +src/tests/eo/function_overrides/function_overrides_main.c +src/tests/eet/eet_test_common.c +src/tests/eet/eet_test_cache.c +src/tests/eet/eet_suite.c +src/tests/eet/eet_test_connection.c +src/tests/eet/eet_test_init.c +src/tests/eet/eet_test_cipher.c +src/tests/eet/eet_test_identity.c +src/tests/eet/eet_test_image.c +src/tests/eet/eet_test_file.c +src/tests/eet/eet_test_data.c +src/tests/efreet/ef_locale.c +src/tests/efreet/main.c +src/tests/efreet/ef_icon_theme.c +src/tests/efreet/efreet_spec_test.c +src/tests/efreet/ef_cache.c +src/tests/efreet/ef_mime.c +src/tests/efreet/ef_desktop.c +src/tests/efreet/ef_menu.c +src/tests/efreet/efreet_user_dir.c +src/tests/efreet/efreet_test_efreet_cache.c +src/tests/efreet/ef_ini.c +src/tests/efreet/efreet_async_test.c +src/tests/efreet/efreet_icon_cache_dump.c +src/tests/efreet/ef_utils.c +src/tests/efreet/efreet_suite.c +src/tests/efreet/efreet_test_efreet.c +src/tests/efreet/ef_data_dirs.c +src/tests/efreet/compare/efreet_alloc.c +src/tests/efreet/compare/efreet_menu_alloc.c +src/tests/evas/efl_test_canvas2.c +src/tests/evas/efl_test_canvas3.c +src/tests/evas/evas_test_text.c +src/tests/evas/evas_test_events.c +src/tests/evas/evas_test_evasgl.c +src/tests/evas/evas_buffer_helper.c +src/tests/evas/evas_test_image.c +src/tests/evas/evas_test_filters.c +src/tests/evas/evas_test_textblock.c +src/tests/evas/efl_canvas_animation.c +src/tests/evas/evas_suite.c +src/tests/evas/evas_test_callbacks.c +src/tests/evas/efl_test_canvas.c +src/tests/evas/evas_test_mask.c +src/tests/evas/evas_test_new.c +src/tests/evas/evas_test_init.c +src/tests/evas/evas_test_render_engines.c +src/tests/evas/evas_test_object_smart.c +src/tests/evas/evas_test_object.c +src/tests/evas/evas_test_focus.c +src/tests/emotion/emotion_test_main.c +src/tests/emotion/emotion_test_main-eo.c +src/tests/elementary/elm_test_bubble.c +src/tests/elementary/elm_test_index.c +src/tests/elementary/elm_test_flip.c +src/tests/elementary/elm_test_slideshow.c +src/tests/elementary/elm_test_atspi.c +src/tests/elementary/elm_code_test_parse.c +src/tests/elementary/efl_ui_test_radio_group.c +src/tests/elementary/efl_ui_test_slider.c +src/tests/elementary/efl_ui_test_image.c +src/tests/elementary/elm_code_test_widget_undo.c +src/tests/elementary/efl_ui_test_grid.c +src/tests/elementary/efl_ui_window_cnp_dnd_slave.c +src/tests/elementary/efl_ui_test_timepicker.c +src/tests/elementary/elm_code_test_indent.c +src/tests/elementary/efl_ui_test_vg_animation.c +src/tests/elementary/elm_test_list.c +src/tests/elementary/elm_test_web.c +src/tests/elementary/elm_code_test_widget_text.c +src/tests/elementary/efl_ui_test_select_model.c +src/tests/elementary/elm_test_thumb.c +src/tests/elementary/elm_test_popup.c +src/tests/elementary/elm_test_menu.c +src/tests/elementary/efl_ui_test_box_flow.c +src/tests/elementary/elm_test_map.c +src/tests/elementary/efl_ui_test_list_collection.c +src/tests/elementary/efl_ui_test_widget.c +src/tests/elementary/elm_test_fileselector.c +src/tests/elementary/elm_test_multibuttonentry.c +src/tests/elementary/elm_test_hoversel.c +src/tests/elementary/efl_ui_test_scroller.c +src/tests/elementary/elm_test_slider.c +src/tests/elementary/efl_ui_test_view_model.c +src/tests/elementary/efl_ui_test_atspi.c +src/tests/elementary/elm_test_inwin.c +src/tests/elementary/elm_test_entry.c +src/tests/elementary/elm_code_file_test_memory.c +src/tests/elementary/elm_test_icon.c +src/tests/elementary/elm_test_image.c +src/tests/elementary/elm_test_spinner.c +src/tests/elementary/efl_ui_test_progressbar.c +src/tests/elementary/efl_ui_test_popup.c +src/tests/elementary/elm_test_calendar.c +src/tests/elementary/elm_test_widget_basics.c +src/tests/elementary/efl_ui_test_image_zoomable.c +src/tests/elementary/efl_ui_test_box_stack.c +src/tests/elementary/efl_ui_test_focus.c +src/tests/elementary/elm_code_test_syntax.c +src/tests/elementary/custom_recognizer.c +src/tests/elementary/elm_code_file_test_load.c +src/tests/elementary/elm_test_panel.c +src/tests/elementary/efl_ui_test_box.c +src/tests/elementary/efl_ui_suite.c +src/tests/elementary/elm_test_conformant.c +src/tests/elementary/elm_test_button.c +src/tests/elementary/elm_test_notify.c +src/tests/elementary/efl_ui_test_collection_view.c +src/tests/elementary/elm_code_test_basic.c +src/tests/elementary/efl_ui_test_win.c +src/tests/elementary/elm_test_toolbar.c +src/tests/elementary/elm_test_player.c +src/tests/elementary/elm_test_photo.c +src/tests/elementary/elm_test_label.c +src/tests/elementary/elm_test_colorselector.c +src/tests/elementary/elm_test_grid.c +src/tests/elementary/elm_test_layout.c +src/tests/elementary/elm_test_panes.c +src/tests/elementary/efl_ui_model.c +src/tests/elementary/elm_test_naviframe.c +src/tests/elementary/elm_test_mapbuf.c +src/tests/elementary/efl_ui_test_focus_common.c +src/tests/elementary/elm_test_datetime.c +src/tests/elementary/elm_test_progressbar.c +src/tests/elementary/efl_ui_test_callback.c +src/tests/elementary/elm_test_check.c +src/tests/elementary/efl_ui_test_grid_collection.c +src/tests/elementary/efl_ui_test_config.c +src/tests/elementary/efl_ui_test_position_manager_common.c +src/tests/elementary/suite_helpers.c +src/tests/elementary/elm_test_diskselector.c +src/tests/elementary/elm_test_hover.c +src/tests/elementary/elm_code_test_widget_selection.c +src/tests/elementary/elm_suite_build.c +src/tests/elementary/elm_test_radio.c +src/tests/elementary/elm_code_test_text.c +src/tests/elementary/efl_ui_test_check.c +src/tests/elementary/elm_test_table.c +src/tests/elementary/efl_ui_test_relative_container.c +src/tests/elementary/efl_ui_test_gesture.c +src/tests/elementary/elm_test_genlist.c +src/tests/elementary/elm_test_actionslider.c +src/tests/elementary/custom_gesture.c +src/tests/elementary/elm_test_plug.c +src/tests/elementary/elm_test_flipselector.c +src/tests/elementary/spec/efl_test_content.c +src/tests/elementary/spec/efl_test_selectable.c +src/tests/elementary/spec/efl_test_gfx_view.c +src/tests/elementary/spec/efl_test_container.c +src/tests/elementary/spec/efl_ui_spec_suite.c +src/tests/elementary/spec/efl_test_ui_view.c +src/tests/elementary/spec/efl_test_range_display.c +src/tests/elementary/spec/efl_test_basics.c +src/tests/elementary/spec/efl_test_range_interactive.c +src/tests/elementary/spec/efl_test_clickable.c +src/tests/elementary/spec/efl_test_format.c +src/tests/elementary/spec/efl_test_pack.c +src/tests/elementary/spec/efl_test_multi_selectable.c +src/tests/elementary/spec/efl_test_gfx_arrangement.c +src/tests/elementary/spec/efl_test_single_selectable.c +src/tests/elementary/spec/efl_test_pack_linear.c +src/tests/elementary/elm_test_fileselector_button.c +src/tests/elementary/efl_ui_test_layout.c +src/tests/elementary/elm_test_separator.c +src/tests/elementary/elm_test_fileselector_entry.c +src/tests/elementary/elm_test_dayselector.c +src/tests/elementary/elm_test_gengrid.c +src/tests/elementary/efl_ui_test_group_item.c +src/tests/elementary/efl_ui_test_text.c +src/tests/elementary/elm_test_bg.c +src/tests/elementary/efl_ui_test_collection.c +src/tests/elementary/elm_test_config.c +src/tests/elementary/elm_test_widget_focus.c +src/tests/elementary/elm_test_prefs.c +src/tests/elementary/elm_test_video.c +src/tests/elementary/elm_test_ctxpopup.c +src/tests/elementary/efl_ui_test_spotlight.c +src/tests/elementary/efl_ui_test_spin_button.c +src/tests/elementary/elm_suite.c +src/tests/elementary/elm_test_frame.c +src/tests/elementary/elm_test_glview.c +src/tests/elementary/elm_test_photocam.c +src/tests/elementary/efl_ui_build.c +src/tests/elementary/elm_code_test_line.c +src/tests/elementary/efl_ui_test_collection_common.c +src/tests/elementary/efl_ui_compile_test.c +src/tests/elementary/efl_ui_test_focus_sub.c +src/tests/elementary/efl_ui_test_table.c +src/tests/elementary/elm_test_init.c +src/tests/elementary/custom_recognizer2.c +src/tests/elementary/elm_code_test_widget.c +src/tests/elementary/efl_ui_test_spin.c +src/tests/elementary/elm_test_clock.c +src/tests/elementary/elm_test_segmentcontrol.c +src/tests/elementary/elm_test_box.c +src/tests/elementary/elm_test_win.c +src/tests/elementary/elm_test_scroller.c +src/tests/eeze/eeze_test_net.c +src/tests/eeze/eeze_test_udev.c +src/tests/eeze/eeze_test_init.c +src/tests/eeze/eeze_suite.c +src/tests/eeze/eeze_test_sensor.c +src/tests/ector/suite/ector_test_init.c +src/tests/ector/suite/ector_suite.c +src/tests/eolian_cxx/simple.c +src/tests/eolian_cxx/generic.c +src/tests/eolian_cxx/name1_name2_type_generation.c +src/tests/eolian_cxx/c.c +src/tests/eolian_cxx/a.c +src/tests/eolian_cxx/complex.c +src/tests/eolian_cxx/b.c +src/tests/eolian_cxx/name_name.c +src/tests/elua/elua_suite.c +src/tests/elua/elua_lib.c +src/tests/eina/eina_test_barrier.c +src/tests/eina/eina_test_tiler.c +src/tests/eina/eina_test_debug.c +src/tests/eina/eina_test_accessor.c +src/tests/eina/eina_test_log.c +src/tests/eina/eina_test_error.c +src/tests/eina/eina_test_array.c +src/tests/eina/eina_test_freeq.c +src/tests/eina/eina_test_slice.c +src/tests/eina/eina_suite.c +src/tests/eina/eina_test_cow.c +src/tests/eina/eina_test_sched.c +src/tests/eina/eina_test_benchmark.c +src/tests/eina/eina_test_crc.c +src/tests/eina/eina_test_binshare.c +src/tests/eina/eina_test_inlist.c +src/tests/eina/eina_test_simple_xml_parser.c +src/tests/eina/eina_test_vector.c +src/tests/eina/eina_test_module_dummy.c +src/tests/eina/eina_test_util.c +src/tests/eina/eina_test_convert.c +src/tests/eina/eina_test_clist.c +src/tests/eina/eina_test_counter.c +src/tests/eina/eina_test_vpath.c +src/tests/eina/eina_test_rectangle.c +src/tests/eina/eina_test_value.c +src/tests/eina/eina_test_fp.c +src/tests/eina/eina_test_magic.c +src/tests/eina/eina_test_hash.c +src/tests/eina/eina_test_abi.c +src/tests/eina/eina_test_xattr.c +src/tests/eina/eina_test_rbtree.c +src/tests/eina/eina_test_safepointer.c +src/tests/eina/eina_test_matrix.c +src/tests/eina/eina_test_binbuf.c +src/tests/eina/eina_test_ustr.c +src/tests/eina/eina_test_range.c +src/tests/eina/eina_test_list.c +src/tests/eina/eina_test_stringshare.c +src/tests/eina/eina_test_abstract_content.c +src/tests/eina/eina_test_ustringshare.c +src/tests/eina/eina_test_inarray.c +src/tests/eina/eina_test_matrixsparse.c +src/tests/eina/eina_test_quaternion.c +src/tests/eina/eina_test_strbuf.c +src/tests/eina/eina_test_lalloc.c +src/tests/eina/eina_test_bezier.c +src/tests/eina/eina_test_file.c +src/tests/eina/eina_test_tmpstr.c +src/tests/eina/eina_test_slstr.c +src/tests/eina/eina_test_str.c +src/tests/eina/eina_test_iterator.c +src/tests/eina/eina_test_trash.c +src/tests/eina/eina_test_main.c +src/tests/eina/eina_test_quadtree.c +src/tests/eina/eina_test_module.c +src/tests/eina/eina_test_lock.c +src/tests/eina/eina_test_mempool.c +src/tests/eina/eina_test_quad.c +src/tests/evil/evil_test_main.c +src/tests/evil/evil_test_stdio.c +src/tests/evil/evil_suite.c +src/tests/evil/evil_test_unistd.c +src/tests/evil/evil_test_stdlib.c +src/tests/evil/evil_test_dlfcn.c +src/tests/efl/efl_test_container_model.c +src/tests/efl/efl_suite.c +src/tests/efl/efl_test_composite_model.c +src/tests/eio/eio_test_manager.c +src/tests/eio/eio_test_monitor.c +src/tests/eio/eio_test_manager_xattr.c +src/tests/eio/eio_test_file.c +src/tests/eio/eio_test_common.c +src/tests/eio/efl_io_model_test_monitor_add.c +src/tests/eio/eio_test_eet.c +src/tests/eio/eio_test_sentry.c +src/tests/eio/eio_test_xattr.c +src/tests/eio/eio_suite.c +src/tests/eio/eio_test_map.c +src/tests/eio/efl_io_model_test_file.c +src/tests/timeout.c +src/tests/emile/emile_test_base.c +src/tests/emile/emile_test_base64.c +src/tests/emile/emile_suite.c +src/tests/ecore_wl2/ecore_wl2_test_output.c +src/tests/ecore_wl2/ecore_wl2_test_display.c +src/tests/ecore_wl2/ecore_wl2_test_input.c +src/tests/ecore_wl2/ecore_wl2_test_window.c +src/tests/ecore_wl2/ecore_wl2_test_ecore_wl2.c +src/tests/ecore_wl2/ecore_wl2_suite.c +src/tests/eldbus/eldbus_test_eldbus_pending_cancel.c +src/tests/eldbus/eldbus_test_eldbus_model_object.c +src/tests/eldbus/eldbus_test_eldbus_object.c +src/tests/eldbus/eldbus_test_eldbus_init.c +src/tests/eldbus/eldbus_test_eldbus_proxy.c +src/tests/eldbus/eldbus_test_eldbus_model.c +src/tests/eldbus/eldbus_test_eldbus_pending_data.c +src/tests/eldbus/eldbus_test_eldbus_model_signal.c +src/tests/eldbus/eldbus_test_eldbus_model_method.c +src/tests/eldbus/eldbus_suite.c +src/tests/eldbus/eldbus_test_eldbus_signal_handler.c +src/tests/eldbus/eldbus_test_eldbus_message.c +src/tests/eldbus/eldbus_test_eldbus_model_connection.c +src/tests/eldbus/eldbus_test_fake_server_eldbus_model_proxy.c +src/tests/eldbus/eldbus_test_eldbus_model_proxy.c +src/tests/eldbus/eldbus_fake_server.c +src/modules/ecore/system/systemd/ecore_system_systemd.c +src/modules/ecore/system/tizen/ecore_system_tizen.c +src/modules/ecore/system/upower/ecore_system_upower.c +src/modules/evas/image_loaders/xpm/evas_image_load_xpm.c +src/modules/evas/image_loaders/bmp/evas_image_load_bmp.c +src/modules/evas/image_loaders/dds/evas_image_load_dds.c +src/modules/evas/image_loaders/dds/s3tc_decoder.c +src/modules/evas/image_loaders/tga/evas_image_load_tga.c +src/modules/evas/image_loaders/jpeg/evas_image_load_jpeg.c +src/modules/evas/image_loaders/psd/evas_image_load_psd.c +src/modules/evas/image_loaders/png/evas_image_load_png.c +src/modules/evas/image_loaders/tiff/evas_image_load_tiff.c +src/modules/evas/image_loaders/eet/evas_image_load_eet.c +src/modules/evas/image_loaders/wbmp/evas_image_load_wbmp.c +src/modules/evas/image_loaders/jp2k/evas_image_load_jp2k.c +src/modules/evas/image_loaders/webp/evas_image_load_webp.c +src/modules/evas/image_loaders/ico/evas_image_load_ico.c +src/modules/evas/image_loaders/pmaps/evas_image_load_pmaps.c +src/modules/evas/image_loaders/generic/evas_image_load_generic.c +src/modules/evas/image_loaders/gif/evas_image_load_gif.c +src/modules/evas/image_loaders/tgv/evas_image_load_tgv.c +src/modules/evas/image_loaders/avif/evas_image_load_avif.c +src/modules/evas/image_savers/jpeg/evas_image_save_jpeg.c +src/modules/evas/image_savers/png/evas_image_save_png.c +src/modules/evas/image_savers/tiff/evas_image_save_tiff.c +src/modules/evas/image_savers/eet/evas_image_save_eet.c +src/modules/evas/image_savers/webp/evas_image_save_webp.c +src/modules/evas/image_savers/tgv/evas_image_save_tgv.c +src/modules/evas/vg_loaders/json/evas_vg_load_json.c +src/modules/evas/vg_loaders/eet/evas_vg_load_eet.c +src/modules/evas/vg_loaders/svg/evas_vg_load_svg.c +src/modules/evas/engines/eglfs/evas_outbuf.c +src/modules/evas/engines/eglfs/evas_engine.c +src/modules/evas/engines/gl_x11/evas_x_main.c +src/modules/evas/engines/gl_x11/evas_engine.c +src/modules/evas/engines/software_x11/evas_x_egl.c +src/modules/evas/engines/software_x11/evas_xlib_color.c +src/modules/evas/engines/software_x11/evas_xlib_swapper.c +src/modules/evas/engines/software_x11/evas_xlib_buffer.c +src/modules/evas/engines/software_x11/evas_xlib_outbuf.c +src/modules/evas/engines/software_x11/evas_xlib_main.c +src/modules/evas/engines/software_x11/evas_xlib_dri_image.c +src/modules/evas/engines/software_x11/evas_xlib_image.c +src/modules/evas/engines/software_x11/evas_xlib_swapbuf.c +src/modules/evas/engines/software_x11/evas_engine.c +src/modules/evas/engines/gl_common/evas_gl_api_gles1.c +src/modules/evas/engines/gl_common/evas_gl_file_cache.c +src/modules/evas/engines/gl_common/evas_gl_api_ext.c +src/modules/evas/engines/gl_common/evas_gl_rectangle.c +src/modules/evas/engines/gl_common/evas_gl_image.c +src/modules/evas/engines/gl_common/evas_gl_context.c +src/modules/evas/engines/gl_common/evas_gl_texture.c +src/modules/evas/engines/gl_common/evas_gl_core.c +src/modules/evas/engines/gl_common/evas_gl_preload.c +src/modules/evas/engines/gl_common/evas_gl_line.c +src/modules/evas/engines/gl_common/evas_gl_polygon.c +src/modules/evas/engines/gl_common/evas_gl_api.c +src/modules/evas/engines/gl_common/evas_gl_shader.c +src/modules/evas/engines/gl_common/evas_gl_font.c +src/modules/evas/engines/gl_sdl/evas_engine.c +src/modules/evas/engines/wayland_shm/evas_outbuf.c +src/modules/evas/engines/wayland_shm/evas_engine.c +src/modules/evas/engines/software_gdi/evas_gdi_buffer.c +src/modules/evas/engines/software_gdi/evas_gdi_main.c +src/modules/evas/engines/software_gdi/evas_outbuf.c +src/modules/evas/engines/software_gdi/evas_engine.c +src/modules/evas/engines/drm/evas_outbuf.c +src/modules/evas/engines/drm/evas_engine.c +src/modules/evas/engines/wayland_egl/evas_engine.c +src/modules/evas/engines/wayland_egl/evas_wl_main.c +src/modules/evas/engines/gl_drm/evas_outbuf.c +src/modules/evas/engines/gl_drm/evas_engine.c +src/modules/evas/engines/software_ddraw/evas_outbuf.c +src/modules/evas/engines/software_ddraw/evas_engine.c +src/modules/evas/engines/software_ddraw/evas_ddraw_buffer.c +src/modules/evas/engines/buffer/evas_outbuf.c +src/modules/evas/engines/buffer/evas_engine.c +src/modules/evas/engines/gl_cocoa/evas_engine.c +src/modules/evas/engines/gl_generic/evas_ector_gl_buffer.c +src/modules/evas/engines/gl_generic/filters/gl_filter_blend.c +src/modules/evas/engines/gl_generic/filters/gl_filter_curve.c +src/modules/evas/engines/gl_generic/filters/gl_filter_grayscale.c +src/modules/evas/engines/gl_generic/filters/gl_filter_displace.c +src/modules/evas/engines/gl_generic/filters/gl_filter_fill.c +src/modules/evas/engines/gl_generic/filters/gl_filter_mask.c +src/modules/evas/engines/gl_generic/filters/gl_filter_blur.c +src/modules/evas/engines/gl_generic/filters/gl_filter_inverse_color.c +src/modules/evas/engines/gl_generic/evas_engine.c +src/modules/evas/engines/gl_generic/evas_ector_gl_image_buffer.c +src/modules/evas/engines/fb/evas_outbuf.c +src/modules/evas/engines/fb/evas_engine.c +src/modules/evas/engines/fb/evas_fb_main.c +src/modules/evas/engines/software_generic/evas_native_tbm.c +src/modules/evas/engines/software_generic/evas_ector_software_buffer.c +src/modules/evas/engines/software_generic/evas_native_dmabuf.c +src/modules/evas/engines/software_generic/filters/blur/blur_box_alpha_sse3.c +src/modules/evas/engines/software_generic/filters/blur/blur_box_alpha_i386.c +src/modules/evas/engines/software_generic/filters/blur/blur_box_alpha_.c +src/modules/evas/engines/software_generic/filters/blur/blur_box_alpha_neon.c +src/modules/evas/engines/software_generic/filters/blur/blur_box_rgba_sse3.c +src/modules/evas/engines/software_generic/filters/blur/blur_box_rgba_i386.c +src/modules/evas/engines/software_generic/filters/blur/blur_gaussian_rgba_.c +src/modules/evas/engines/software_generic/filters/blur/blur_gaussian_alpha_.c +src/modules/evas/engines/software_generic/filters/blur/blur_box_rgba_neon.c +src/modules/evas/engines/software_generic/filters/blur/blur_box_rgba_.c +src/modules/evas/engines/software_generic/filters/evas_filter_mask.c +src/modules/evas/engines/software_generic/filters/evas_filter_blend.c +src/modules/evas/engines/software_generic/filters/evas_filter_inverse_color.c +src/modules/evas/engines/software_generic/filters/evas_filter_fill.c +src/modules/evas/engines/software_generic/filters/evas_filter_curve.c +src/modules/evas/engines/software_generic/filters/evas_filter_blur.c +src/modules/evas/engines/software_generic/filters/evas_filter_displace.c +src/modules/evas/engines/software_generic/filters/evas_filter_bump.c +src/modules/evas/engines/software_generic/filters/evas_filter_grayscale.c +src/modules/evas/engines/software_generic/filters/evas_filter_transform.c +src/modules/evas/engines/software_generic/evas_engine.c +src/modules/evas/vg_savers/eet/evas_vg_save_eet.c +src/modules/evas/vg_savers/svg/evas_vg_save_svg.c +src/modules/emotion/gstreamer1/emotion_convert.c +src/modules/emotion/gstreamer1/emotion_alloc.c +src/modules/emotion/gstreamer1/emotion_gstreamer.c +src/modules/emotion/gstreamer1/emotion_sink.c +src/modules/elementary/prefs/elm_button.c +src/modules/elementary/prefs/elm_slider.c +src/modules/elementary/prefs/elm_swallow.c +src/modules/elementary/prefs/elm_check.c +src/modules/elementary/prefs/elm_horizontal_frame.c +src/modules/elementary/prefs/elm_entry.c +src/modules/elementary/prefs/elm_spinner.c +src/modules/elementary/prefs/elm_horizontal_box.c +src/modules/elementary/prefs/elm_datetime.c +src/modules/elementary/prefs/prefs_iface.c +src/modules/elementary/prefs/elm_vertical_box.c +src/modules/elementary/prefs/elm_vertical_frame.c +src/modules/elementary/prefs/elm_label.c +src/modules/elementary/prefs/elm_separator.c +src/modules/elementary/test_map/mod.c +src/modules/elementary/test_entry/mod.c +src/modules/elementary/access_output/mod.c +src/modules/elementary/web/none/elm_web_none.c +src/modules/elementary/web/none/elm_web_none_eo.c +src/modules/ecore_buffer/x11_dri2/ecore_buffer_x11_dri2.c +src/modules/ecore_buffer/x11_dri3/ecore_buffer_x11_dri3.c +src/modules/ecore_buffer/shm/ecore_buffer_shm.c +src/modules/eeze/sensor/fake/fake.c +src/modules/eeze/sensor/udev/udev.c +src/modules/ethumb/emotion/emotion.c +src/modules/eina/mp/pass_through/eina_pass_through.c +src/modules/eina/mp/one_big/eina_one_big.c +src/modules/eina/mp/chained_pool/eina_chained_mempool.c +src/modules/ecore_imf/ibus/ibus_imcontext.c +src/modules/ecore_imf/ibus/ibus_module.c +src/modules/ecore_imf/wayland/wayland_module.c +src/modules/ecore_imf/wayland/wayland_imcontext.c +src/modules/ecore_imf/xim/ecore_imf_xim.c +src/modules/ecore_wl2/engines/dmabuf/ecore_wl2_surface_module_dmabuf.c +src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server_fb_keymap.c +src/modules/ecore_evas/vnc_server/ecore_evas_vnc_server.c +src/modules/ecore_evas/engines/cocoa/ecore_evas_cocoa.c +src/modules/ecore_evas/engines/drm/ecore_evas_drm.c +src/modules/ecore_evas/engines/x/ecore_evas_x.c +src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_egl.c +src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_shm.c +src/modules/ecore_evas/engines/wayland/ecore_evas_wayland_common.c +src/modules/ecore_evas/engines/win32/ecore_evas_win32.c +src/modules/ecore_evas/engines/sdl/ecore_evas_sdl.c +src/modules/ecore_evas/engines/fb/ecore_evas_fb.c +src/modules/ecore_evas/engines/extn/ecore_evas_extn_buf.c +src/modules/ecore_evas/engines/extn/ecore_evas_extn.c +src/static_libs/lz4/xxhash.c +src/static_libs/lz4/lz4frame.c +src/static_libs/lz4/lz4hc.c +src/static_libs/lz4/lz4.c +src/static_libs/freetype/sw_ft_stroker.c +src/static_libs/freetype/sw_ft_math.c +src/static_libs/freetype/sw_ft_raster.c +src/static_libs/vg_common/vg_common_json.c +src/static_libs/vg_common/vg_common_svg.c +src/static_libs/http-parser/test.c +src/static_libs/http-parser/contrib/parsertrace.c +src/static_libs/http-parser/contrib/url_parser.c +src/static_libs/http-parser/http_parser.c +src/static_libs/libunibreak/linebreakdata.c +src/static_libs/libunibreak/linebreakdef.c +src/static_libs/libunibreak/graphemebreak.c +src/static_libs/libunibreak/unibreakbase.c +src/static_libs/libunibreak/graphemebreakdata.c +src/static_libs/libunibreak/unibreakdef.c +src/static_libs/libunibreak/linebreak.c +src/static_libs/libunibreak/wordbreak.c +src/static_libs/libunibreak/wordbreakdata.c +src/static_libs/rg_etc/etc2_encoder.c +src/static_libs/rg_etc/rg_etc1.c +src/static_libs/rg_etc/rg_etc2.c +src/static_libs/buildsystem/buildsystem_autotools.c +src/static_libs/buildsystem/buildsystem_meson.c +src/static_libs/draw/draw_convert.c +src/static_libs/draw/draw_main_sse2.c +src/static_libs/draw/draw_alpha_main.c +src/static_libs/draw/draw_main_neon.c +src/static_libs/draw/draw_main.c +src/static_libs/triangulator/triangulator_stroker.c +src/static_libs/triangulator/triangulator_simple.c +src/lib/ecore_sdl/ecore_sdl.c +src/lib/efl_mono/efl_mono_model_internal.c +src/lib/efl_mono/efl_custom_exports_mono.c +src/lib/efl_mono/efl_mono_accessors.c +src/lib/elput/elput_logind.c +src/lib/elput/elput_manager.c +src/lib/elput/elput.c +src/lib/elput/elput_evdev.c +src/lib/elput/elput_touch.c +src/lib/elput/elput_input.c +src/lib/ecore_con/ecore_con_local_win32.c +src/lib/ecore_con/ecore_con_eet_client_obj_eo.c +src/lib/ecore_con/efl_net_dialer_tcp.c +src/lib/ecore_con/ecore_con_local.c +src/lib/ecore_con/efl_net_server_tcp.c +src/lib/ecore_con/ecore_con_socks.c +src/lib/ecore_con/efl_net_socket.c +src/lib/ecore_con/ecore_con_eet_server_obj_eo.c +src/lib/ecore_con/efl_net_session-none.c +src/lib/ecore_con/efl_net_session-connman.c +src/lib/ecore_con/efl_net_ssl_context.c +src/lib/ecore_con/efl_net_dialer_http.c +src/lib/ecore_con/efl_net_socket_udp.c +src/lib/ecore_con/efl_net_ssl_ctx-none.c +src/lib/ecore_con/efl_net_server_ssl.c +src/lib/ecore_con/efl_net_socket_fd.c +src/lib/ecore_con/ecore_con_eet_base_eo.c +src/lib/ecore_con/efl_net_control_technology-connman.c +src/lib/ecore_con/efl_net_dialer_unix.c +src/lib/ecore_con/efl_net_control-none.c +src/lib/ecore_con/ecore_con_alloc.c +src/lib/ecore_con/efl_net_dialer_websocket.c +src/lib/ecore_con/efl_net_dialer_simple.c +src/lib/ecore_con/ecore_con_legacy.c +src/lib/ecore_con/efl_net_ssl_conn-gnutls.c +src/lib/ecore_con/efl_net_server_ip.c +src/lib/ecore_con/efl_net_control-connman.c +src/lib/ecore_con/efl_net_socket_unix.c +src/lib/ecore_con/efl_net_socket_windows.c +src/lib/ecore_con/efl_net_ssl_ctx-openssl.c +src/lib/ecore_con/ecore_con_url.c +src/lib/ecore_con/efl_net_socket_simple.c +src/lib/ecore_con/ecore_con_url_curl.c +src/lib/ecore_con/efl_net_ssl_ctx-gnutls.c +src/lib/ecore_con/efl_net_ssl_conn-none.c +src/lib/ecore_con/efl_net_socket_ssl.c +src/lib/ecore_con/efl_net_control_technology-none.c +src/lib/ecore_con/efl_net_server.c +src/lib/ecore_con/ecore_con_eet_base_eo.legacy.c +src/lib/ecore_con/ecore_con_eet.c +src/lib/ecore_con/efl_net_server_windows.c +src/lib/ecore_con/efl_net_dialer_ssl.c +src/lib/ecore_con/efl_net_control_access_point-connman.c +src/lib/ecore_con/efl_net_server_simple.c +src/lib/ecore_con/efl_net_ssl_conn-openssl.c +src/lib/ecore_con/efl_net_control_access_point-none.c +src/lib/ecore_con/efl_net_dialer_windows.c +src/lib/ecore_con/efl_net_socket_tcp.c +src/lib/ecore_con/efl_net_dialer.c +src/lib/ecore_con/efl_net_dialer_udp.c +src/lib/ecore_con/efl_net_server_udp.c +src/lib/ecore_con/ecore_con_proxy_helper.c +src/lib/ecore_con/ecore_con.c +src/lib/ecore_con/efl_net_server_unix.c +src/lib/ecore_con/efl_net_server_udp_client.c +src/lib/ecore_con/efl_net_server_fd.c +src/lib/ecore_con/efl_net_ip_address.c +src/lib/ecore_con/efl_net-connman.c +src/lib/edje/edje_calc.c +src/lib/edje/edje_part_external.c +src/lib/edje/edje_cache.c +src/lib/edje/edje_lua.c +src/lib/edje/edje_legacy.c +src/lib/edje/edje_lua2.c +src/lib/edje/edje_part_text.c +src/lib/edje/edje_var.c +src/lib/edje/edje_textblock.c +src/lib/edje/edje_embryo.c +src/lib/edje/edje_signal.c +src/lib/edje/edje_module.c +src/lib/edje/efl_layout_group_eo.legacy.c +src/lib/edje/edje_part.c +src/lib/edje/edje_match.c +src/lib/edje/efl_canvas_layout_eo.legacy.c +src/lib/edje/edje_edit.c +src/lib/edje/edje_smart.c +src/lib/edje/edje_part_swallow.c +src/lib/edje/edje_box_layout.c +src/lib/edje/edje_program.c +src/lib/edje/edje_main.c +src/lib/edje/edje_external.c +src/lib/edje/edje_part_box.c +src/lib/edje/edje_textblock_styles.c +src/lib/edje/edje_lua_script_only.c +src/lib/edje/edje_multisense.c +src/lib/edje/edje_data.c +src/lib/edje/edje_load.c +src/lib/edje/edje_util.c +src/lib/edje/edje_misc.c +src/lib/edje/edje_message_queue.c +src/lib/edje/edje_entry.c +src/lib/edje/edje_edit_eo.c +src/lib/edje/edje_convert.c +src/lib/edje/edje_callbacks.c +src/lib/edje/edje_text.c +src/lib/edje/edje_part_invalid.c +src/lib/edje/edje_part_table.c +src/lib/ecore_avahi/ecore_avahi.c +src/lib/eolian/database_implement_api.c +src/lib/eolian/database_var.c +src/lib/eolian/database_expr_api.c +src/lib/eolian/eolian_database.c +src/lib/eolian/database_function_parameter_api.c +src/lib/eolian/eo_parser.c +src/lib/eolian/database_class.c +src/lib/eolian/database_function_api.c +src/lib/eolian/database_function.c +src/lib/eolian/database_type_api.c +src/lib/eolian/database_type.c +src/lib/eolian/database_function_parameter.c +src/lib/eolian/database_event_api.c +src/lib/eolian/database_validate.c +src/lib/eolian/eo_lexer.c +src/lib/eolian/database_constructor_api.c +src/lib/eolian/database_part_api.c +src/lib/eolian/database_constructor.c +src/lib/eolian/database_class_api.c +src/lib/eolian/database_event.c +src/lib/eolian/database_expr.c +src/lib/eolian/database_var_api.c +src/lib/eolian/eolian_aux.c +src/lib/eolian/database_implement.c +src/lib/eolian/eolian.c +src/lib/eolian/database_check.c +src/lib/eolian/database_part.c +src/lib/ecore/efl_composite_model.c +src/lib/ecore/efl_loop_consumer.c +src/lib/ecore/efl_core_proc_env.c +src/lib/ecore/efl_io_stdout.c +src/lib/ecore/efl_loop_message_future.c +src/lib/ecore/efl_loop.c +src/lib/ecore/ecore_anim.c +src/lib/ecore/efl_filter_model.c +src/lib/ecore/efl_io_writer_fd.c +src/lib/ecore/ecore_throttle.c +src/lib/ecore/efl_boolean_model.c +src/lib/ecore/ecore_idler.c +src/lib/ecore/ecore_timer.c +src/lib/ecore/efl_io_copier.c +src/lib/ecore/efl_io_sizer_fd.c +src/lib/ecore/ecore_thread.c +src/lib/ecore/efl_loop_fd.c +src/lib/ecore/efl_cubic_bezier_interpolator.c +src/lib/ecore/efl_loop_handler.c +src/lib/ecore/efl_divisor_interpolator.c +src/lib/ecore/efl_decelerate_interpolator.c +src/lib/ecore/ecore_app.c +src/lib/ecore/efl_loop_timer_eo.legacy.c +src/lib/ecore/efl_loop_message_future_handler.c +src/lib/ecore/ecore_alloc.c +src/lib/ecore/efl_loop_model.c +src/lib/ecore/efl_loop_message.c +src/lib/ecore/ecore_exe_posix.c +src/lib/ecore/efl_thread.c +src/lib/ecore/efl_spring_interpolator.c +src/lib/ecore/ecore_poller.c +src/lib/ecore/ecore_exe_win32.c +src/lib/ecore/efl_app.c +src/lib/ecore/efl_exe.c +src/lib/ecore/ecore_signal.c +src/lib/ecore/ecore_events.c +src/lib/ecore/efl_io_positioner_fd.c +src/lib/ecore/ecore.c +src/lib/ecore/efl_bounce_interpolator.c +src/lib/ecore/ecore_main.c +src/lib/ecore/efl_generic_model.c +src/lib/ecore/ecore_exe_eo.c +src/lib/ecore/efl_threadio.c +src/lib/ecore/efl_io_stderr.c +src/lib/ecore/ecore_time.c +src/lib/ecore/ecore_event_message_handler.c +src/lib/ecore/efl_io_stdin.c +src/lib/ecore/efl_io_closer_fd.c +src/lib/ecore/ecore_getopt.c +src/lib/ecore/efl_loop_message_handler.c +src/lib/ecore/ecore_job.c +src/lib/ecore/ecore_main_timechanges.c +src/lib/ecore/ecore_idle_exiter.c +src/lib/ecore/efl_io_buffered_stream.c +src/lib/ecore/ecore_glib.c +src/lib/ecore/efl_task.c +src/lib/ecore/ecore_idle_enterer.c +src/lib/ecore/efl_sinusoidal_interpolator.c +src/lib/ecore/efl_core_env.c +src/lib/ecore/efl_linear_interpolator.c +src/lib/ecore/efl_accelerate_interpolator.c +src/lib/ecore/efl_core_command_line.c +src/lib/ecore/efl_io_reader_fd.c +src/lib/ecore/ecore_event_message.c +src/lib/ecore/efl_container_model.c +src/lib/ecore/efl_io_file.c +src/lib/ecore/ecore_pipe.c +src/lib/ecore/efl_appthread.c +src/lib/ecore/ecore_exe.c +src/lib/eo/eo_class_class.c +src/lib/eo/eo_ptr_indirection.c +src/lib/eo/eo_add_fallback.c +src/lib/eo/eo.c +src/lib/eo/eo_base_class.c +src/lib/eet/eet_connection.c +src/lib/eet/eet_cipher.c +src/lib/eet/eet_dictionary.c +src/lib/eet/eet_lib.c +src/lib/eet/eet_data.c +src/lib/eet/eet_alloc.c +src/lib/eet/eet_utils.c +src/lib/eet/eet_image.c +src/lib/eet/eet_node.c +src/lib/efreet/efreet_cache.c +src/lib/efreet/efreet_ini.c +src/lib/efreet/efreet_utils.c +src/lib/efreet/efreet_uri.c +src/lib/efreet/efreet_mime.c +src/lib/efreet/efreet_icon.c +src/lib/efreet/efreet_menu.c +src/lib/efreet/efreet_base.c +src/lib/efreet/efreet_xml.c +src/lib/efreet/efreet_trash.c +src/lib/efreet/efreet.c +src/lib/efreet/efreet_desktop_command.c +src/lib/efreet/efreet_desktop.c +src/lib/ecore_audio/ecore_audio_obj_out.c +src/lib/ecore_audio/ecore_audio_obj.c +src/lib/ecore_audio/ecore_audio_obj_out_wasapi.c +src/lib/ecore_audio/ecore_audio_obj_in.c +src/lib/ecore_audio/ecore_audio_obj_in_tone.c +src/lib/ecore_audio/ecore_audio_custom.c +src/lib/ecore_audio/ecore_audio_alsa.c +src/lib/ecore_audio/ecore_audio_obj_out_pulse.c +src/lib/ecore_audio/ecore_audio.c +src/lib/ecore_audio/ecore_audio_sndfile_vio.c +src/lib/ecore_audio/ecore_audio_obj_in_sndfile.c +src/lib/ecore_audio/ecore_audio_obj_out_sndfile.c +src/lib/ecore_audio/ecore_audio_pulse_ml.c +src/lib/ecore_audio/ecore_audio_pulse.c +src/lib/ecore_ipc/ecore_ipc.c +src/lib/evas/cache/evas_cache_image.c +src/lib/evas/cache/evas_cache_engine_image.c +src/lib/evas/cache/evas_preload.c +src/lib/evas/common/evas_image_save.c +src/lib/evas/common/evas_convert_gry_1.c +src/lib/evas/common/evas_op_blend/op_blend_color_neon.c +src/lib/evas/common/evas_op_blend/op_blend_master_sse3.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_color_sse3.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_mask_i386.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_color_i386.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_.c +src/lib/evas/common/evas_op_blend/op_blend_mask_color_.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_mask_sse3.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_sse3.c +src/lib/evas/common/evas_op_blend/op_blend_color_sse3.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_mask_.c +src/lib/evas/common/evas_op_blend/op_blend_color_i386.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_mask_neon.c +src/lib/evas/common/evas_op_blend/op_blend_mask_color_i386.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_color_neon.c +src/lib/evas/common/evas_op_blend/op_blend_mask_color_neon.c +src/lib/evas/common/evas_op_blend/op_blend_color_.c +src/lib/evas/common/evas_op_blend/op_blend_mask_color_sse3.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_i386.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_neon.c +src/lib/evas/common/evas_op_blend/op_blend_pixel_color_.c +src/lib/evas/common/evas_image_scalecache.c +src/lib/evas/common/evas_op_mul/op_mul_pixel_color_.c +src/lib/evas/common/evas_op_mul/op_mul_mask_color_.c +src/lib/evas/common/evas_op_mul/op_mul_pixel_.c +src/lib/evas/common/evas_op_mul/op_mul_color_.c +src/lib/evas/common/evas_op_mul/op_mul_color_i386.c +src/lib/evas/common/evas_op_mul/op_mul_pixel_i386.c +src/lib/evas/common/evas_op_mul/op_mul_pixel_mask_.c +src/lib/evas/common/evas_op_mul/op_mul_pixel_color_i386.c +src/lib/evas/common/evas_op_mul/op_mul_pixel_mask_i386.c +src/lib/evas/common/evas_op_mul/op_mul_mask_color_i386.c +src/lib/evas/common/evas_font_draw.c +src/lib/evas/common/evas_scale_smooth_scaler_downx.c +src/lib/evas/common/evas_image_load.c +src/lib/evas/common/evas_map_image.c +src/lib/evas/common/evas_polygon_main.c +src/lib/evas/common/evas_scale_smooth_scaler_down.c +src/lib/evas/common/evas_op_sub_main_.c +src/lib/evas/common/evas_op_mul_main_.c +src/lib/evas/common/evas_op_add/op_add_pixel_mask_i386.c +src/lib/evas/common/evas_op_add/op_add_pixel_.c +src/lib/evas/common/evas_op_add/op_add_mask_color_i386.c +src/lib/evas/common/evas_op_add/op_add_pixel_mask_.c +src/lib/evas/common/evas_op_add/op_add_pixel_i386.c +src/lib/evas/common/evas_op_add/op_add_color_.c +src/lib/evas/common/evas_op_add/op_add_mask_color_.c +src/lib/evas/common/evas_op_add/op_add_pixel_color_.c +src/lib/evas/common/evas_op_add/op_add_pixel_color_i386.c +src/lib/evas/common/evas_op_add/op_add_color_i386.c +src/lib/evas/common/evas_map_image_internal.c +src/lib/evas/common/evas_image_data.c +src/lib/evas/common/evas_map_image_internal_high.c +src/lib/evas/common/evas_map_image_core.c +src/lib/evas/common/evas_scale_smooth_scaler_downx_downy.c +src/lib/evas/common/evas_convert_colorspace.c +src/lib/evas/common/evas_map_image_loop.c +src/lib/evas/common/evas_scale_smooth_scaler.c +src/lib/evas/common/evas_scale_smooth_scaler_noscale.c +src/lib/evas/common/evas_scale_smooth.c +src/lib/evas/common/evas_convert_rgb_8.c +src/lib/evas/common/evas_rectangle_main.c +src/lib/evas/common/evas_convert_rgb_16.c +src/lib/evas/common/evas_blend_main.c +src/lib/evas/common/evas_convert_color.c +src/lib/evas/common/evas_font_query.c +src/lib/evas/common/evas_scale_main.c +src/lib/evas/common/evas_op_mask_main_.c +src/lib/evas/common/evas_draw_main.c +src/lib/evas/common/evas_op_add_main_.c +src/lib/evas/common/evas_convert_main.c +src/lib/evas/common/evas_op_copy_main_.c +src/lib/evas/common/evas_font_compress_draw.c +src/lib/evas/common/evas_op_blend_main_.c +src/lib/evas/common/evas_common_generic_cache.c +src/lib/evas/common/evas_op_copy/op_copy_pixel_color_neon.c +src/lib/evas/common/evas_op_copy/op_copy_mask_color_.c +src/lib/evas/common/evas_op_copy/op_copy_pixel_mask_i386.c +src/lib/evas/common/evas_op_copy/op_copy_pixel_neon.c +src/lib/evas/common/evas_op_copy/op_copy_color_i386.c +src/lib/evas/common/evas_op_copy/op_copy_color_neon.c +src/lib/evas/common/evas_op_copy/op_copy_pixel_i386.c +src/lib/evas/common/evas_op_copy/op_copy_pixel_mask_neon.c +src/lib/evas/common/evas_op_copy/op_copy_pixel_color_.c +src/lib/evas/common/evas_op_copy/op_copy_mask_color_neon.c +src/lib/evas/common/evas_op_copy/op_copy_color_.c +src/lib/evas/common/evas_op_copy/op_copy_mask_color_i386.c +src/lib/evas/common/evas_op_copy/op_copy_pixel_.c +src/lib/evas/common/evas_op_copy/op_copy_pixel_mask_.c +src/lib/evas/common/evas_op_copy/op_copy_pixel_color_i386.c +src/lib/evas/common/evas_convert_rgb_24.c +src/lib/evas/common/evas_op_mask/op_mask_pixel_mask_i386.c +src/lib/evas/common/evas_op_mask/op_mask_pixel_color_i386.c +src/lib/evas/common/evas_op_mask/op_mask_pixel_mask_.c +src/lib/evas/common/evas_op_mask/op_mask_mask_color_i386.c +src/lib/evas/common/evas_op_mask/op_mask_mask_color_.c +src/lib/evas/common/evas_op_mask/op_mask_pixel_.c +src/lib/evas/common/evas_op_mask/op_mask_pixel_color_.c +src/lib/evas/common/evas_op_mask/op_mask_pixel_i386.c +src/lib/evas/common/evas_op_mask/op_mask_color_.c +src/lib/evas/common/evas_op_mask/op_mask_color_i386.c +src/lib/evas/common/evas_cpu.c +src/lib/evas/common/evas_font_load.c +src/lib/evas/common/evas_op_sub/op_sub_pixel_color_i386.c +src/lib/evas/common/evas_op_sub/op_sub_pixel_i386.c +src/lib/evas/common/evas_op_sub/op_sub_color_.c +src/lib/evas/common/evas_op_sub/op_sub_mask_color_i386.c +src/lib/evas/common/evas_op_sub/op_sub_pixel_mask_i386.c +src/lib/evas/common/evas_op_sub/op_sub_pixel_color_.c +src/lib/evas/common/evas_op_sub/op_sub_mask_color_.c +src/lib/evas/common/evas_op_sub/op_sub_color_i386.c +src/lib/evas/common/evas_op_sub/op_sub_pixel_mask_.c +src/lib/evas/common/evas_op_sub/op_sub_pixel_.c +src/lib/evas/common/evas_text_utils.c +src/lib/evas/common/evas_font_compress.c +src/lib/evas/common/region.c +src/lib/evas/common/evas_scale_smooth_scaler_up.c +src/lib/evas/common/evas_blit_main.c +src/lib/evas/common/evas_thread_render.c +src/lib/evas/common/evas_convert_gry_8.c +src/lib/evas/common/evas_scale_sample.c +src/lib/evas/common/language/evas_bidi_utils.c +src/lib/evas/common/language/evas_language_utils.c +src/lib/evas/common/evas_scale_span.c +src/lib/evas/common/evas_image_main.c +src/lib/evas/common/evas_scale_smooth_scaler_downy.c +src/lib/evas/common/evas_convert_yuv.c +src/lib/evas/common/evas_font_ot.c +src/lib/evas/common/evas_font_main.c +src/lib/evas/common/evas_convert_grypal_6.c +src/lib/evas/common/evas_tiler.c +src/lib/evas/common/evas_line_main.c +src/lib/evas/common/evas_convert_rgb_32.c +src/lib/evas/common/evas_pipe.c +src/lib/evas/main.c +src/lib/evas/canvas/evas_rectangle.c +src/lib/evas/canvas/efl_canvas_surface_x11.c +src/lib/evas/canvas/evas_filter_mixin.c +src/lib/evas/canvas/evas_stats.c +src/lib/evas/canvas/evas_key.c +src/lib/evas/canvas/evas_table_eo.c +src/lib/evas/canvas/evas_object_intercept.c +src/lib/evas/canvas/efl_canvas_vg_gradient.c +src/lib/evas/canvas/evas_grid_eo.c +src/lib/evas/canvas/efl_canvas_rotate_animation.c +src/lib/evas/canvas/evas_map.c +src/lib/evas/canvas/efl_canvas_translate_animation.c +src/lib/evas/canvas/efl_canvas_textblock_eo.legacy.c +src/lib/evas/canvas/efl_canvas_object_eo.legacy.c +src/lib/evas/canvas/efl_canvas_alpha_animation.c +src/lib/evas/canvas/evas_object_table.c +src/lib/evas/canvas/evas_out.c +src/lib/evas/canvas/efl_canvas_vg_gradient_radial.c +src/lib/evas/canvas/efl_canvas_event_grabber.c +src/lib/evas/canvas/efl_canvas_vg_object_eo.legacy.c +src/lib/evas/canvas/evas_object_text.c +src/lib/evas/canvas/efl_canvas_event_grabber_eo.legacy.c +src/lib/evas/canvas/evas_object_inform.c +src/lib/evas/canvas/efl_canvas_vg_object.c +src/lib/evas/canvas/evas_object_image.c +src/lib/evas/canvas/evas_image_eo.c +src/lib/evas/canvas/evas_image_legacy.c +src/lib/evas/canvas/efl_canvas_proxy.c +src/lib/evas/canvas/evas_name.c +src/lib/evas/canvas/efl_canvas_surface_wayland.c +src/lib/evas/canvas/efl_canvas_group_eo.legacy.c +src/lib/evas/canvas/efl_input_event.c +src/lib/evas/canvas/evas_object_rectangle.c +src/lib/evas/canvas/efl_gfx_vg_value_provider.c +src/lib/evas/canvas/evas_object_main.c +src/lib/evas/canvas/efl_text_formatter.c +src/lib/evas/canvas/evas_callbacks.c +src/lib/evas/canvas/evas_font_dir.c +src/lib/evas/canvas/efl_canvas_vg_shape.c +src/lib/evas/canvas/evas_grid_eo.legacy.c +src/lib/evas/canvas/evas_line_eo.c +src/lib/evas/canvas/evas_object_smart.c +src/lib/evas/canvas/evas_render.c +src/lib/evas/canvas/efl_canvas_object_animation.c +src/lib/evas/canvas/efl_canvas_vg_shape_eo.legacy.c +src/lib/evas/canvas/evas_object_line.c +src/lib/evas/canvas/evas_box_eo.legacy.c +src/lib/evas/canvas/evas_clip.c +src/lib/evas/canvas/evas_key_grab.c +src/lib/evas/canvas/efl_canvas_animation.c +src/lib/evas/canvas/evas_events.c +src/lib/evas/canvas/efl_canvas_group_animation.c +src/lib/evas/canvas/evas_object_textblock.c +src/lib/evas/canvas/evas_device.c +src/lib/evas/canvas/efl_input_hold.c +src/lib/evas/canvas/efl_canvas_vg_image.c +src/lib/evas/canvas/evas_events_legacy.c +src/lib/evas/canvas/evas_data.c +src/lib/evas/canvas/evas_text_eo.legacy.c +src/lib/evas/canvas/efl_input_device.c +src/lib/evas/canvas/efl_canvas_scale_animation.c +src/lib/evas/canvas/efl_canvas_parallel_group_animation.c +src/lib/evas/canvas/efl_input_key.c +src/lib/evas/canvas/efl_canvas_vg_node.c +src/lib/evas/canvas/efl_canvas_surface_tbm.c +src/lib/evas/canvas/efl_gfx_mapping.c +src/lib/evas/canvas/efl_input_focus.c +src/lib/evas/canvas/evas_object_textgrid.c +src/lib/evas/canvas/evas_canvas_eo.c +src/lib/evas/canvas/efl_canvas_vg_container_eo.legacy.c +src/lib/evas/canvas/evas_layer.c +src/lib/evas/canvas/evas_box_eo.c +src/lib/evas/canvas/efl_canvas_vg_node_eo.legacy.c +src/lib/evas/canvas/evas_line_eo.legacy.c +src/lib/evas/canvas/evas_focus.c +src/lib/evas/canvas/evas_touch_point.c +src/lib/evas/canvas/evas_gl.c +src/lib/evas/canvas/evas_text_eo.c +src/lib/evas/canvas/evas_main.c +src/lib/evas/canvas/evas_object_box.c +src/lib/evas/canvas/efl_input_pointer.c +src/lib/evas/canvas/efl_canvas_surface.c +src/lib/evas/canvas/evas_smart.c +src/lib/evas/canvas/evas_table_eo.legacy.c +src/lib/evas/canvas/evas_textgrid_eo.c +src/lib/evas/canvas/efl_canvas_image.c +src/lib/evas/canvas/efl_canvas_snapshot.c +src/lib/evas/canvas/evas_object_polygon.c +src/lib/evas/canvas/evas_textgrid_eo.legacy.c +src/lib/evas/canvas/efl_text_cursor_object.c +src/lib/evas/canvas/efl_canvas_vg_container.c +src/lib/evas/canvas/evas_object_grid.c +src/lib/evas/canvas/efl_canvas_vg_utils.c +src/lib/evas/canvas/efl_canvas_vg_gradient_linear.c +src/lib/evas/canvas/efl_canvas_sequential_group_animation.c +src/lib/evas/canvas/evas_object_smart_clipped.c +src/lib/evas/canvas/efl_input_clickable.c +src/lib/evas/canvas/evas_canvas_eo.legacy.c +src/lib/evas/canvas/evas_async_events.c +src/lib/evas/vg/evas_vg_cache.c +src/lib/evas/gesture/efl_canvas_gesture_triple_tap.c +src/lib/evas/gesture/efl_canvas_gesture_long_press.c +src/lib/evas/gesture/efl_canvas_gesture_recognizer_momentum.c +src/lib/evas/gesture/efl_canvas_gesture_double_tap.c +src/lib/evas/gesture/efl_canvas_gesture_recognizer_rotate.c +src/lib/evas/gesture/efl_canvas_gesture_recognizer_tap.c +src/lib/evas/gesture/efl_canvas_gesture_flick.c +src/lib/evas/gesture/efl_canvas_gesture_touch.c +src/lib/evas/gesture/efl_canvas_gesture_recognizer.c +src/lib/evas/gesture/efl_canvas_gesture_recognizer_zoom.c +src/lib/evas/gesture/efl_canvas_gesture.c +src/lib/evas/gesture/efl_canvas_gesture_momentum.c +src/lib/evas/gesture/efl_canvas_gesture_recognizer_custom.c +src/lib/evas/gesture/efl_canvas_gesture_rotate.c +src/lib/evas/gesture/efl_canvas_gesture_recognizer_triple_tap.c +src/lib/evas/gesture/efl_canvas_gesture_recognizer_double_tap.c +src/lib/evas/gesture/efl_canvas_gesture_custom.c +src/lib/evas/gesture/efl_canvas_gesture_tap.c +src/lib/evas/gesture/efl_canvas_gesture_recognizer_flick.c +src/lib/evas/gesture/efl_canvas_gesture_recognizer_long_press.c +src/lib/evas/gesture/efl_canvas_gesture_manager.c +src/lib/evas/gesture/efl_canvas_gesture_zoom.c +src/lib/evas/filters/evas_filter_parser.c +src/lib/evas/filters/evas_filter.c +src/lib/evas/filters/evas_filter_utils.c +src/lib/evas/file/evas_module.c +src/lib/evas/file/evas_path.c +src/lib/ecore_file/ecore_file_download.c +src/lib/ecore_file/ecore_file_monitor_win32.c +src/lib/ecore_file/ecore_file_path.c +src/lib/ecore_file/ecore_file_monitor_inotify.c +src/lib/ecore_file/ecore_file_monitor_poll.c +src/lib/ecore_file/ecore_file_monitor.c +src/lib/ecore_file/ecore_file.c +src/lib/ecore_drm/ecore_drm_fb.c +src/lib/ecore_drm/ecore_drm_tty.c +src/lib/ecore_drm/ecore_drm_evdev.c +src/lib/ecore_drm/ecore_drm_logind.c +src/lib/ecore_drm/ecore_drm_device.c +src/lib/ecore_drm/ecore_drm.c +src/lib/ecore_drm/ecore_drm_dbus.c +src/lib/ecore_drm/ecore_drm_sprites.c +src/lib/ecore_drm/ecore_drm_output.c +src/lib/ecore_drm/ecore_drm_launcher.c +src/lib/ecore_drm/ecore_drm_inputs.c +src/lib/emotion/efl_canvas_video_eo.legacy.c +src/lib/emotion/emotion_webcam.c +src/lib/emotion/emotion_main.c +src/lib/emotion/emotion_smart.c +src/lib/emotion/emotion_modules.c +src/lib/elementary/efl_ui_radio_box.c +src/lib/elementary/efl_ui_frame.c +src/lib/elementary/elm_slideshow.c +src/lib/elementary/elm_access.c +src/lib/elementary/efl_ui_win.c +src/lib/elementary/efl_ui_panes.c +src/lib/elementary/elm_dayselector_item_eo.c +src/lib/elementary/efl_ui_focus_manager_root_focus.c +src/lib/elementary/elm_code_widget_text.c +src/lib/elementary/elm_util.c +src/lib/elementary/elm_code_widget_eo.legacy.c +src/lib/elementary/elm_prefs.c +src/lib/elementary/elm_calendar_item_eo.c +src/lib/elementary/elm_view_form_eo.c +src/lib/elementary/elm_fileselector_button_eo.c +src/lib/elementary/elm_pan_eo.legacy.c +src/lib/elementary/efl_ui_tab_pager.c +src/lib/elementary/efl_ui_separator.c +src/lib/elementary/elm_web_eo.legacy.c +src/lib/elementary/efl_ui_view_model.c +src/lib/elementary/elm_fileselector_eo.legacy.c +src/lib/elementary/elm_main.c +src/lib/elementary/elm_code_widget_legacy_eo.c +src/lib/elementary/elm_grid_eo.legacy.c +src/lib/elementary/elm_gesture_layer.c +src/lib/elementary/elm_sys_notify_eo.legacy.c +src/lib/elementary/elm_player_eo.c src/lib/elementary/elc_hoversel.c src/lib/elementary/elc_multibuttonentry.c src/lib/elementary/elc_naviframe.c diff --git a/src/lib/evas/common/evas_image_load.c b/src/lib/evas/common/evas_image_load.c index 1d28253..5d3e3aa 100644 --- a/src/lib/evas/common/evas_image_load.c +++ b/src/lib/evas/common/evas_image_load.c @@ -66,6 +66,8 @@ static const struct ext_loader_s loaders[] = MATCHING(".dds", "dds"), + MATCHING(".avif", "avif"), + /* xcf - gefenric */ MATCHING(".xcf", "generic"), MATCHING(".xcf.gz", "generic"), @@ -163,7 +165,7 @@ static const struct ext_loader_s loaders[] = static const char *loaders_name[] = { /* in order of most likely needed */ "png", "jpeg", "eet", "xpm", "tiff", "gif", "svg", "webp", "pmaps", - "bmp", "tga", "wbmp", "ico", "psd", "jp2k", "dds", "generic" + "bmp", "tga", "wbmp", "ico", "psd", "jp2k", "dds", "avif", "generic" }; struct evas_image_foreach_loader_data diff --git a/src/lib/evas/file/evas_module.c b/src/lib/evas/file/evas_module.c index a1e8b62..b991186 100644 --- a/src/lib/evas/file/evas_module.c +++ b/src/lib/evas/file/evas_module.c @@ -196,6 +196,7 @@ EVAS_EINA_STATIC_MODULE_DEFINE(vg_loader, json); #endif #if !EVAS_MODULE_NO_IMAGE_LOADERS +EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, avif); EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, bmp); EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, dds); EVAS_EINA_STATIC_MODULE_DEFINE(image_loader, eet); @@ -287,6 +288,9 @@ static const struct { #endif #endif #if !EVAS_MODULE_NO_IMAGE_LOADERS +#ifdef EVAS_STATIC_BUILD_AVIF + EVAS_EINA_STATIC_MODULE_USE(image_loader, avif), +#endif #ifdef EVAS_STATIC_BUILD_BMP EVAS_EINA_STATIC_MODULE_USE(image_loader, bmp), #endif diff --git a/src/lib/evas/meson.build b/src/lib/evas/meson.build index 9e68a69..100a6d2 100644 --- a/src/lib/evas/meson.build +++ b/src/lib/evas/meson.build @@ -10,8 +10,10 @@ 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) evas_image_loaders_file = [ + ['avif', 'shared', [libavif]], ['bmp', 'shared', []], ['eet', 'static', [eet]], ['generic', 'shared', [rt]], 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 new file mode 100644 index 0000000..88469dd --- /dev/null +++ b/src/modules/evas/image_loaders/avif/evas_image_load_avif.c @@ -0,0 +1,290 @@ +#ifdef HAVE_CONFIG_H +# include +#endif + +#include + +#include + +#include "Evas_Loader.h" + +typedef struct _Evas_Loader_Internal Evas_Loader_Internal; +struct _Evas_Loader_Internal +{ + Eina_File *f; + Evas_Image_Load_Opts *opts; +}; + +static int _evas_loader_avif_log_dom = -1; + +#ifdef ERR +# undef ERR +#endif +#define ERR(...) EINA_LOG_DOM_ERR(_evas_loader_avif_log_dom, __VA_ARGS__) + +#ifdef WRN +# undef WRN +#endif +#define WRN(...) EINA_LOG_DOM_WARN(_evas_loader_avif_log_dom, __VA_ARGS__) + +#ifdef INF +# undef INF +#endif +#define INF(...) EINA_LOG_DOM_INFO(_evas_loader_avif_log_dom, __VA_ARGS__) + +static Eina_Bool +evas_image_load_file_head_avif_internal(unsigned int *w, unsigned int *h, + unsigned char *alpha, + void *map, size_t length, + int *error) +{ + avifROData raw; + avifDecoder *decoder; + avifImage *image; + avifResult res; + + raw.size = length; + raw.data = (const uint8_t *)map; + + decoder = avifDecoderCreate(); + if (!decoder) + { + *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; + return EINA_FALSE; + } + + image = avifImageCreateEmpty(); + if (!image) + { + *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; + goto destroy_decoder; + } + + res = avifDecoderRead(decoder, image, &raw); + if (res != AVIF_RESULT_OK) + { + ERR("avif file format invalid"); + *error = EVAS_LOAD_ERROR_GENERIC; + goto destroy_image; + } + + *w = image->width; + *h = image->height; + *alpha = !!image->alphaPlane; + *error = EVAS_LOAD_ERROR_NONE; + + avifImageDestroy(image); + avifDecoderDestroy(decoder); + + return EINA_TRUE; + + destroy_image: + avifImageDestroy(image); + destroy_decoder: + avifDecoderDestroy(decoder); + + return EINA_FALSE; +} + +static Eina_Bool +evas_image_load_file_data_avif_internal(void *pixels, + void *map, size_t length, + int *error) +{ + avifRGBImage rgb; + avifROData raw; + avifDecoder *decoder; + avifImage *image; + avifResult res; + + raw.size = length; + raw.data = (const uint8_t *)map; + + decoder = avifDecoderCreate(); + if (!decoder) + { + *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; + return EINA_FALSE; + } + + image = avifImageCreateEmpty(); + if (!image) + { + *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; + goto destroy_decoder; + } + + res = avifDecoderRead(decoder, image, &raw); + if (res != AVIF_RESULT_OK) + { + ERR("avif file format invalid"); + *error = EVAS_LOAD_ERROR_GENERIC; + goto destroy_image; + } + + avifRGBImageSetDefaults(&rgb, image); + rgb.format = AVIF_RGB_FORMAT_BGRA; + rgb.depth = 8; + rgb.pixels = pixels; + rgb.rowBytes = 4 * image->width; + + avifImageYUVToRGB(image, &rgb); + + *error = EVAS_LOAD_ERROR_NONE; + + avifImageDestroy(image); + avifDecoderDestroy(decoder); + + return EINA_TRUE; + + destroy_image: + avifImageDestroy(image); + destroy_decoder: + avifDecoderDestroy(decoder); + + return EINA_FALSE; +} + +static void * +evas_image_load_file_open_avif(Eina_File *f, Eina_Stringshare *key EINA_UNUSED, + Evas_Image_Load_Opts *opts, + Evas_Image_Animated *animated EINA_UNUSED, + int *error) +{ + Evas_Loader_Internal *loader; + + loader = calloc(1, sizeof (Evas_Loader_Internal)); + if (!loader) + { + *error = EVAS_LOAD_ERROR_RESOURCE_ALLOCATION_FAILED; + return NULL; + } + + loader->f = f; + loader->opts = opts; + + return loader; +} + +static void +evas_image_load_file_close_avif(void *loader_data) +{ + free(loader_data); +} + +static Eina_Bool +evas_image_load_file_head_avif(void *loader_data, + Emile_Image_Property *prop, + int *error) +{ + Evas_Loader_Internal *loader = loader_data; + Eina_File *f; + void *map; + Eina_Bool val; + + f = loader->f; + + map = eina_file_map_all(f, EINA_FILE_RANDOM); + if (!map) + { + *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; + return EINA_FALSE; + } + + val = evas_image_load_file_head_avif_internal(&prop->w, &prop->h, + &prop->alpha, + map, eina_file_size_get(f), + error); + + eina_file_map_free(f, map); + + return val; +} + +static Eina_Bool +evas_image_load_file_data_avif(void *loader_data, + Emile_Image_Property *prop EINA_UNUSED, + void *pixels, + int *error) +{ + Evas_Loader_Internal *loader = loader_data; + Eina_File *f; + void *map; + Eina_Bool val = EINA_FALSE; + + f = loader->f; + + map = eina_file_map_all(f, EINA_FILE_WILLNEED); + if (!map) + { + *error = EVAS_LOAD_ERROR_DOES_NOT_EXIST; + goto on_error; + } + + val = evas_image_load_file_data_avif_internal(pixels, + map, eina_file_size_get(f), + error); + + eina_file_map_free(f, map); + + on_error: + return val; +} + +static Evas_Image_Load_Func evas_image_load_avif_func = +{ + EVAS_IMAGE_LOAD_VERSION, + evas_image_load_file_open_avif, + evas_image_load_file_close_avif, + (void*) evas_image_load_file_head_avif, + NULL, + (void*) evas_image_load_file_data_avif, + NULL, + EINA_TRUE, + EINA_TRUE +}; + +static int +module_open(Evas_Module *em) +{ + if (!em) return 0; + + _evas_loader_avif_log_dom = eina_log_domain_register("evas-avif", EINA_COLOR_BLUE); + if (_evas_loader_avif_log_dom < 0) + { + EINA_LOG_ERR("Can not create a module log domain."); + return 0; + } + + em->functions = (void *)(&evas_image_load_avif_func); + + return 1; +} + +static void +module_close(Evas_Module *em EINA_UNUSED) +{ + if (_evas_loader_avif_log_dom >= 0) + { + eina_log_domain_unregister(_evas_loader_avif_log_dom); + _evas_loader_avif_log_dom = -1; + } +} + +static Evas_Module_Api evas_modapi = +{ + EVAS_MODULE_API_VERSION, + "avif", + "none", + { + module_open, + module_close + } +}; + +EVAS_MODULE_DEFINE(EVAS_MODULE_TYPE_IMAGE_LOADER, image_loader, avif); + +#ifndef EVAS_STATIC_BUILD_AVIF +EVAS_EINA_MODULE_DEFINE(image_loader, avif); +#endif + -- 2.7.4