From da49a5ed3312f104dd0a1d5a4e468d3558ac0a90 Mon Sep 17 00:00:00 2001 From: Emilian Peev Date: Tue, 26 Jun 2018 10:13:39 +0100 Subject: [PATCH] ImageReader: Set inverse diplay transform if needed Image transform sometimes could be missing the inverse display flag. Any buffers that pass through BQs will have this bit reset and moved in a separate buffer item field. To restore and pass the original transform forward check whether the flag got reset and re-enable it accordingly. Bug: 110641448 Test: Manual using application, Camera CTS Change-Id: Ia849f62333be40038a02768563b2f93e2ccf61ce --- media/jni/android_media_ImageReader.cpp | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/media/jni/android_media_ImageReader.cpp b/media/jni/android_media_ImageReader.cpp index c36858ad3d8e6..a45aa90f5f19b 100644 --- a/media/jni/android_media_ImageReader.cpp +++ b/media/jni/android_media_ImageReader.cpp @@ -612,8 +612,12 @@ static jint ImageReader_imageSetup(JNIEnv* env, jobject thiz, jobject image) { Image_setBufferItem(env, image, buffer); env->SetLongField(image, gSurfaceImageClassInfo.mTimestamp, static_cast(buffer->mTimestamp)); + auto transform = buffer->mTransform; + if (buffer->mTransformToDisplayInverse) { + transform |= NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY; + } env->SetIntField(image, gSurfaceImageClassInfo.mTransform, - static_cast(buffer->mTransform)); + static_cast(transform)); env->SetIntField(image, gSurfaceImageClassInfo.mScalingMode, static_cast(buffer->mScalingMode));