diff options
| author | 2018-06-26 10:13:39 +0100 | |
|---|---|---|
| committer | 2018-06-26 10:17:34 +0100 | |
| commit | da49a5ed3312f104dd0a1d5a4e468d3558ac0a90 (patch) | |
| tree | 5adcc70e2b51de6d6d9b52c78fc063ef3498ec42 | |
| 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
| -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)); |