Skip to content

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