diff options
author | Emilian Peev <epeev@google.com> | 2018-06-26 10:13:39 +0100 |
---|---|---|
committer | Emilian Peev <epeev@google.com> | 2018-06-26 10:17:34 +0100 |
commit | da49a5ed3312f104dd0a1d5a4e468d3558ac0a90 (patch) | |
tree | 5adcc70e2b51de6d6d9b52c78fc063ef3498ec42 /media/jni/android_media_ImageReader.cpp | |
parent | 80167ec0c723d9843fbe7056ea2a53c5a8c254b3 (diff) |
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
Diffstat (limited to 'media/jni/android_media_ImageReader.cpp')
-rw-r--r-- | media/jni/android_media_ImageReader.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/media/jni/android_media_ImageReader.cpp b/media/jni/android_media_ImageReader.cpp index c36858ad3d8e..a45aa90f5f19 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<jlong>(buffer->mTimestamp)); + auto transform = buffer->mTransform; + if (buffer->mTransformToDisplayInverse) { + transform |= NATIVE_WINDOW_TRANSFORM_INVERSE_DISPLAY; + } env->SetIntField(image, gSurfaceImageClassInfo.mTransform, - static_cast<jint>(buffer->mTransform)); + static_cast<jint>(transform)); env->SetIntField(image, gSurfaceImageClassInfo.mScalingMode, static_cast<jint>(buffer->mScalingMode)); |