android / android/ndk-samples

Add zero-copy camera pipeline sample using NDK Camera2 and OpenGL ES

Open
#1,172 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
C++
Stars
10.5k
Forks
4.3k
PR merge metrics
No merged PRs in 30d

Description

Hi NDK Team,

I would like to propose adding a new sample demonstrating a high-performance, zero-copy camera rendering pipeline using the NDK camera2 APIs, AImageReader, and OpenGL ES.

**Motivation**
While the existing camera sample effectively demonstrates basic Native Camera2 usage, developers frequently face bottlenecks when attempting low-latency preview rendering, zero-copy frame processing, and synchronization between camera capture streams and the rendering thread.

**What the Sample Demonstrates**

- Zero-Copy Architecture: Leveraging native buffers (AHardwareBuffer / AImageReader) with OpenGL ES external textures (GL_OES_EGL_image_external) to avoid CPU-memory copy overhead.
-
- Low-Latency Rendering: Clean separation of camera capture threads and rendering loops using standard Android NDK synchronization primitives.
-
- Modern Best Practices: Minimal overhead, leak-free buffer recycling, and lifecycle-aware lifecycle management purely in C++ and NDK.

I have already implemented a working prototype in a standalone repository:

[https://github.com/MohammadNouri5700/zerostallcam](https://github.com/MohammadNouri5700/zerostallcam)

**Question**
Would the maintainers be open to accepting this as a new standalone sample in android/ndk-samples?

If so, I am ready to refactor the project to strictly align with this repository's structure, Gradle/CMake conventions, documentation style, and Google CLA requirements before submitting a Pull Request.

**Thank you for your time and feedback!**

Contributor guide

Open the contributing guide

Research direction

Review the existing camera sample in android/ndk-samples and compare the standalone zerostallcam prototype linked in the issue. Check the repository's Gradle, CMake, documentation, and Google CLA conventions first; done means a self-contained sample demonstrating the proposed zero-copy camera-to-OpenGL ES pipeline and conforming to those project conventions.

Written by the indexing model from the issue text.

Assessment

Tech stack
android, cpp
Domain
build-system, computer-graphics, mobile-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Active
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.