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; }