Index: webrtc/sdk/android/api/org/webrtc/RendererCommon.java |
diff --git a/webrtc/sdk/android/api/org/webrtc/RendererCommon.java b/webrtc/sdk/android/api/org/webrtc/RendererCommon.java |
index 0708d262c05f4a608afb1b6b2961bfacd4b6af2c..b5ac7501d7bf6b9838477377abdb8207c0bcc9b2 100644 |
--- a/webrtc/sdk/android/api/org/webrtc/RendererCommon.java |
+++ b/webrtc/sdk/android/api/org/webrtc/RendererCommon.java |
@@ -273,6 +273,36 @@ public class RendererCommon { |
return matrix; |
} |
+ /** Converts android.graphics.Matrix to a float[16] matrix array. */ |
+ public static float[] convertMatrixFromAndroidGraphicsMatrix(android.graphics.Matrix matrix) { |
+ float[] values = new float[9]; |
+ matrix.getValues(values); |
+ |
+ // The android.graphics.Matrix looks like this: |
+ // [x1 y1 w1] |
+ // [x2 y2 w2] |
+ // [x3 y3 w3] |
+ // We want to contruct a matrix that looks like this: |
+ // [x1 y1 0 w1] |
+ // [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] |
+ // clang-format off |
+ float[] matrix4x4 = { |
+ values[0 * 3 + 0], values[1 * 3 + 0], 0, values[2 * 3 + 0], |
+ values[0 * 3 + 1], values[1 * 3 + 1], 0, values[2 * 3 + 1], |
+ 0, 0, 1, 0, |
+ values[0 * 3 + 2], values[1 * 3 + 2], 0, values[2 * 3 + 2], |
+ }; |
+ // clang-format on |
+ return matrix4x4; |
+ } |
+ |
/** |
* Calculate display size based on scaling type, video aspect ratio, and maximum display size. |
*/ |