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}
This commit is contained in:
sakal
2017-07-19 01:24:55 -07:00
committed by Commit Bot
parent b4aa4eb06f
commit 9c0e0fa687

View File

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