Change the ZSLProcessor to use a Surface.
Add a Surface stream API to the CameraDeviceBase and use it down to the
ZSLProcessor. The functionality does not change, but the IGBP
dependency is removed.
Test: N/A
Flag: com.android.graphics.libgui.flags.wb_camera3_and_processors
Bug: 342199002
BYPASS_IGBP_IGBC_API_REASON=warren buffers
Change-Id: I1695a4b6ff321ec0ed74da29c3238257ecec72d1
diff --git a/services/camera/libcameraservice/device3/Camera3InputStream.cpp b/services/camera/libcameraservice/device3/Camera3InputStream.cpp
index f9b6037..999f563 100644
--- a/services/camera/libcameraservice/device3/Camera3InputStream.cpp
+++ b/services/camera/libcameraservice/device3/Camera3InputStream.cpp
@@ -182,6 +182,21 @@
/*output*/false, /*transform*/ -1);
}
+#if WB_CAMERA3_AND_PROCESSORS_WITH_DEPENDENCIES
+status_t Camera3InputStream::getInputSurfaceLocked(sp<Surface> *surface) {
+ ATRACE_CALL();
+
+ if (surface == NULL) {
+ return BAD_VALUE;
+ } else if (mSurface == NULL) {
+ ALOGE("%s: No input stream is configured", __FUNCTION__);
+ return INVALID_OPERATION;
+ }
+
+ *surface = mSurface;
+ return OK;
+}
+#else
status_t Camera3InputStream::getInputBufferProducerLocked(
sp<IGraphicBufferProducer> *producer) {
ATRACE_CALL();
@@ -196,6 +211,7 @@
*producer = mProducer;
return OK;
}
+#endif
status_t Camera3InputStream::disconnectLocked() {
@@ -284,7 +300,12 @@
mConsumer->setName(String8::format("Camera3-InputStream-%d", mId));
mConsumer->setMaxAcquiredBufferCount(mTotalBufferCount);
+#if WB_CAMERA3_AND_PROCESSORS_WITH_DEPENDENCIES
+ mSurface = mConsumer->getSurface();
+#else
mProducer = mConsumer->getSurface()->getIGraphicBufferProducer();
+#endif // WB_CAMERA3_AND_PROCESSORS_WITH_DEPENDENCIES
+
#else
mConsumer = new BufferItemConsumer(consumer, mUsage,
mTotalBufferCount);