History log of /frameworks/av/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
afa8a910f065246c8c59386b8b0d9d96669ac85c 15-Mar-2017 Shuzhen Wang <shuzhenwang@google.com> Camera: Do not crash if detachNextBuffer fails

Test: Camera CTS
Bug: 33777818
Change-Id: I965d741df6ce6bdb701dbe1d721cf42ea53c7a40
/frameworks/av/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp
05d19b08f3affa6fa8407e779f67e7ad1c1ca84f 01-Mar-2017 Mathias Agopian <mathias@google.com> fallout of cleaning-up libutils includes

Test: run & compile
Bug: n/a
Change-Id: I63585ed5a764b9ce7af2187b79ca0c83e683fd7f
/frameworks/av/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp
bee0f0a5e7aa19aa7c59de03b508985b68bc6b5e 24-Jan-2017 Shuzhen Wang <shuzhenwang@google.com> Camera: Rework StreamSplitter for camera use cases

- Merge notifyRequestedSurfaces into getBufferLocked, so that during
getBufferLocked, the stream splitter gets to know which outputs the
current request is on.

- Reserve buffer slot in the output queue during getBufferLocked instead
of during onFrameAvailable. So if there is no slot/buffer available, no
new request is sent to HAL. This aligns with current cameraservice logic.
Do not hold the lock while calling attachBuffer to output queue because
it could block for a slow consumer.

- Instead of setting the consumer buffer count of input buffer queue to
maximum of all shared outputs, set it to sum of them. By doing this,
In the case of a slow consumer, other consumers sharing the same stream
won't be impacted.

- Handle the case where onBufferReleased not being fired for buffer
replaced by attachBuffer/queueBuffer.

- Add function to check the return value of onFrameAvailable so that
when output is abandoned, the error code is propagated back to
queueBuffer.

Test: Camera CTS, and CTS with StreamSplitter enabled for all
implementation defined use cases.
Bug: 33777818
Change-Id: I863f501d5283bbe70c71e66b4d37d690484b90fa
/frameworks/av/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp
a141c5f3cc2214a96f250999edacc3bd4d454601 24-Jan-2017 Shuzhen Wang <shuzhenwang@google.com> Camera: StreamSplitter: Return overwritten buffer to input

For Async buffer queue, if a pending buffer is overwritten by an
incoming buffer, onBufferReleased callback isn't called. But the stream
splitter depends on the onBufferReleased to return buffer to input.

Fix the problem by checking the bufferReplaced flag in
QueueBufferOutput.

Test: Camera CTS
Bug: 33777818
Change-Id: I270c7bae7873797ae9b050782828b5a124d3eff9
/frameworks/av/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp
758c215374dba397dabe17b8e96dd38593c09dd7 11-Jan-2017 Shuzhen Wang <shuzhenwang@google.com> Camera: Combine handling of deferred surface and shared surface

- Refactor the OutputConfiguration to contain isDeferred and isShared
flag, and not contain NULL surface.
- Unify the handling of deferred surface and shared surface.

Test: Camera CTS, and manual testing of GoogleCamera use cases
Bug: 33777818
Change-Id: I5dd3472f0f2133699b0e9fbdd8ba456956222746
/frameworks/av/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp
0129d52df9794d6fdf06be304722b5cb51a2eab5 31-Oct-2016 Shuzhen Wang <shuzhenwang@google.com> camera2: Add support for secondary surface for stream

- Enhance OutputConfiguration to contain multiple surfaces for one
underlying stream.
- Create Camera3SharedOutputStream to handle streams with multiple
surfaces.
- Create Camera3StreamSplitter to handle buffer flows between camera and
multiple consumers.

Test: cts, and manually test camera preview/snapshot/recording
Bug: 33777818
Change-Id: Ia010c3cc9d9b4bd5b9ea03cc42fe4e0a0d8033f1
/frameworks/av/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp