Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Manage camera buffer lifetime and limit preview listeners #1024

Open
wants to merge 8 commits into
base: master
Choose a base branch
from

Conversation

rlittletht
Copy link

Two main changes in this PR:

  1. Prevent multiple listeners from being registered for OnPreviewFrameReady (SetupCamera calls it which is automatically called by SurfaceCreated() as well as from client code). Having a single listener prevents duplicate calls to Decode with the same camera buffer.

  2. When we get a preview frame from the camera, we get a data buffer that was pulled from the camera's list of buffers. This buffer has to be added back to the camera before it can be reused, but it cannot be returned too early else the camera will start filling in the buffer before any background tasks are done with it.

This change removes automatically returning the camera buffer (which was previously done before the background task was complete), and requires the registered listener to add the buffer back when its done. This is done at the end of the processing of the background task. If we choose not to launch a task to decode, then we immediately add the buffer back.

This change also Disposes the fastArray only after we add the buffer back to the camera (to avoid releasing the handle and losing the buffer).

This will resolve issue #1023

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant