From 9c0e0fa687f7f159ab466a256b49e833a34fe3db Mon Sep 17 00:00:00 2001 From: sakal Date: Wed, 19 Jul 2017 01:24:55 -0700 Subject: [PATCH] Fix fromAndroidGraphicsMatrix to use column-major order for output. BUG=webrtc:7760 Review-Url: https://codereview.webrtc.org/2976423002 Cr-Commit-Position: refs/heads/master@{#19089} --- .../sdk/android/src/jni/native_handle_impl.cc | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/webrtc/sdk/android/src/jni/native_handle_impl.cc b/webrtc/sdk/android/src/jni/native_handle_impl.cc index e2f3c9cd63..562e7ec6f8 100644 --- a/webrtc/sdk/android/src/jni/native_handle_impl.cc +++ b/webrtc/sdk/android/src/jni/native_handle_impl.cc @@ -52,15 +52,20 @@ Matrix Matrix::fromAndroidGraphicsMatrix(JNIEnv* jni, jobject j_matrix) { // [x2 y2 0 w2] // [ 0 0 1 0] // [x3 y3 0 w3] + // Since it is stored in column-major order, it looks like this: + // [x1 x2 0 x3 + // y1 y2 0 y3 + // 0 0 1 0 + // w1 w2 0 w3] matrix.elem_[0 * 4 + 0] = array_3x3_ptr[0 * 3 + 0]; - matrix.elem_[0 * 4 + 1] = array_3x3_ptr[0 * 3 + 1]; - matrix.elem_[0 * 4 + 3] = array_3x3_ptr[0 * 3 + 2]; - matrix.elem_[1 * 4 + 0] = array_3x3_ptr[1 * 3 + 0]; + matrix.elem_[0 * 4 + 1] = array_3x3_ptr[1 * 3 + 0]; + matrix.elem_[0 * 4 + 3] = array_3x3_ptr[2 * 3 + 0]; + matrix.elem_[1 * 4 + 0] = array_3x3_ptr[0 * 3 + 1]; matrix.elem_[1 * 4 + 1] = array_3x3_ptr[1 * 3 + 1]; - matrix.elem_[1 * 4 + 3] = array_3x3_ptr[1 * 3 + 2]; + matrix.elem_[1 * 4 + 3] = array_3x3_ptr[2 * 3 + 1]; matrix.elem_[2 * 4 + 2] = 1; // Z-scale should be 1. - matrix.elem_[3 * 4 + 0] = array_3x3_ptr[2 * 3 + 0]; - matrix.elem_[3 * 4 + 1] = array_3x3_ptr[2 * 3 + 1]; + matrix.elem_[3 * 4 + 0] = array_3x3_ptr[0 * 3 + 2]; + matrix.elem_[3 * 4 + 1] = array_3x3_ptr[1 * 3 + 2]; matrix.elem_[3 * 4 + 3] = array_3x3_ptr[2 * 3 + 2]; return matrix; }