{"id":18968894,"url":"https://github.com/tttapa/arm-neon-compositor","last_synced_at":"2025-04-19T14:45:13.623Z","repository":{"id":82576903,"uuid":"277898984","full_name":"tttapa/ARM-NEON-Compositor","owner":"tttapa","description":"Fast SIMD alpha overlay and blending for Raspberry Pi and other ARM systems.","archived":false,"fork":false,"pushed_at":"2020-07-26T22:10:35.000Z","size":9494,"stargazers_count":22,"open_issues_count":1,"forks_count":2,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-04-16T08:11:10.452Z","etag":null,"topics":["image-processing","intrinsics","neon","raspberry-pi","simd"],"latest_commit_sha":null,"homepage":"https://tttapa.github.io/ARM-NEON-Compositor","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tttapa.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-07-07T18:58:31.000Z","updated_at":"2025-03-30T23:12:25.000Z","dependencies_parsed_at":null,"dependency_job_id":"141e8c5f-3959-477d-81f3-f8a327678956","html_url":"https://github.com/tttapa/ARM-NEON-Compositor","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tttapa%2FARM-NEON-Compositor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tttapa%2FARM-NEON-Compositor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tttapa%2FARM-NEON-Compositor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tttapa%2FARM-NEON-Compositor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tttapa","download_url":"https://codeload.github.com/tttapa/ARM-NEON-Compositor/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249716914,"owners_count":21315068,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["image-processing","intrinsics","neon","raspberry-pi","simd"],"created_at":"2024-11-08T14:48:45.654Z","updated_at":"2025-04-19T14:45:13.618Z","avatar_url":"https://github.com/tttapa.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"[![Build Status](https://github.com/tttapa/ARM-NEON-Compositor/workflows/CI%20Tests/badge.svg)](https://github.com/tttapa/ARM-NEON-Compositor/actions)\n[![GitHub](https://img.shields.io/github/stars/tttapa/ARM-NEON-Compositor?label=GitHub\u0026logo=github)](https://github.com/tttapa/ARM-NEON-Compositor)\n\n# ARM/Raspberry Pi NEON Compositor\n\nUses NEON SIMD instructions to overlay a foreground image with an alpha channel\n(transparency) over a background image really quickly.\n\nFor small images, it is up to **3.5 times faster** than an implementation without \nNEON intrinsics, and for really large images, it is around 1.4 times faster.\n\n## Documentation\n\n[**Documentation**](https://tttapa.github.io/ARM-NEON-Compositor/Doxygen/index.html)\n\nThe [**modules**](https://tttapa.github.io/ARM-NEON-Compositor/Doxygen/modules.html)\npage is the best place to start. \nThe main function is [`overlay_alpha_stride`](https://tttapa.github.io/ARM-NEON-Compositor/Doxygen/d6/d96/group__overlay__alpha.html#ga1f0ae30bcf7b623123eff96cf2a40525).\n\nYou can find more in-depth explanations of the NEON intrinsics used by this \nlibrary here: [**Raspberry-Pi/NEON**](https://tttapa.github.io/Pages/Raspberry-Pi/NEON/index.html).\n\n## Examples\n\nThe [`overlay_alpha`](https://tttapa.github.io/ARM-NEON-Compositor/Doxygen/dc/d0e/examples_2overlay_alpha_2overlay_alpha_8cpp-example.html)\nexample overlays a foreground image with an alpha channel onto a background\nimage, for example:\n\n| Background | Foreground | Result |\n|:----------:|:----------:|:------:|\n| ![](doxygen/images/Machu-Picchu.thumb.jpg) | ![](doxygen/images/Overlay-Machu-Picchu.thumb.png) | ![](doxygen/images/Overlay-Machu-Picchu-Output.thumb.jpg) |\n\n## Performance\n\nThe following two graphs show the results of four experiments comparing the\nperformance of overlaying one image onto another, using GCC's `-O3` optimization\nlevel on the one hand, and using hand-crafted NEON intrinsics on the other hand.\nEspecially for small images, the NEON version is much faster.\nFor larger images, memory throughput and caching effects start to become more\nimportant factors than raw processing power, but the NEON version is still \nsignificantly faster than the version without intrinsics.\n\n| Small images | Large images |\n|:------------:|:------------:|\n| ![](doxygen/images/perf-small.svg) | ![](doxygen/images/perf-large.svg) |\n\nThe experiments were carried out on a Raspberry Pi 3B+ running Ubuntu 20.04 \n(64-bit).  \nMore performance tests can be found in the [`perf_test`](https://tttapa.github.io/ARM-NEON-Compositor/Doxygen/dc/d46/examples_2perf_test_2perf_test_8py-example.html) example.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftttapa%2Farm-neon-compositor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftttapa%2Farm-neon-compositor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftttapa%2Farm-neon-compositor/lists"}