From 3bdcdff8ce05ddc04e9feb6e09393d328b7bf318 Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Mon, 25 Jun 2018 14:37:29 +0100 Subject: [PATCH] Camera: Set inverse display transform if needed Shared surface outputs currently re-use the transformation from the input queue directly. However the inverse display flag will get reset by the queue logic and needs to be set again before the incoming buffers are sent to the registered outputs. Bug: 110641448 Test: Manual using application, Camera CTS Change-Id: I36859eb41ccab8459bbd97bad3ea0b6a8575489c --- .../camera/libcameraservice/device3/Camera3StreamSplitter.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp b/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp index 59ac636bde..8a9402e9a4 100644 --- a/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp +++ b/services/camera/libcameraservice/device3/Camera3StreamSplitter.cpp @@ -493,6 +493,10 @@ void Camera3StreamSplitter::onFrameAvailable(const BufferItem& /*item*/) { SP_LOGV("acquired buffer %" PRId64 " from input at slot %d", bufferItem.mGraphicBuffer->getId(), bufferItem.mSlot); + if (bufferItem.mTransformToDisplayInverse) { + bufferItem.mTransform |= NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY; + } + // Attach and queue the buffer to each of the outputs BufferTracker& tracker = *(mBuffers[bufferId]);