Skip to content

RivanParmar/neon

Repository files navigation

Neon

This is an Android application built with Java that demonstrates the use of Arm® Assembly (leveraging Arm® Neon™ SIMD technology) for high-performance image processing filters. C++ acts as middleware, bridging the Java application layer and the low-level Assembly implementations.

✨ Features

  • Apply different filters such as Grayscale, Invert, Brightness, Contrast and Sepia.
  • Modify parameters for filters like the amount of brightness to be applied or the amount of contrast to be applied.
  • Switch between Java and Assembly implementations for each filter to observe differences.
  • Measure and Compare the performance of filter applications between Java and Assembly.
  • Save the filtered images.

⚒️ Building

You can try out the app by downloading it directly from the Releases section.

To build the app from source:

  1. Clone the repository.
  2. Open the project in Android Studio1.
  3. Build and Run.

Note: An AArch64 (Arm®v8-A 64-bit) device or emulator is needed to run the app.

📖 Assembly Implementation Details

For in-depth documentation on how each filter has been implemented using Arm® Assembly, please refer to the assembly implementation doc.

💡 Potential Future Filters

A list of potential filters that can be implemented using Arm® Assembly include:

  • Box Blur
  • Edge Detection
  • Sharpen
  • Threshold
  • Gaussian

📚 Helpful Resources

Here are some useful resources to learn Arm Assembly:

License

This project is licensed under the MIT License - see the LICENSE file for details.

Footnotes

  1. Android Studio LadyBug or newer is recommended with Android NDK and CMake installed.

About

Android image filtering with Assembly

Topics

Resources

License

Stars

1 star

Watchers

0 watching

Forks

Contributors