diff options
author | Ruben Brunk <rubenbrunk@google.com> | 2015-02-13 01:36:13 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2015-02-13 01:36:13 +0000 |
commit | ff475c0ea71ffd5f015cce1462daf373129ca896 (patch) | |
tree | b2a2ad0241808a1e6ac86db21a9ec3404b9856cc /core/java | |
parent | 15ebb4daab95c5ae85ebe5070099d2ab3be83676 (diff) | |
parent | 41af9d592efbae88ed95ab77a856dd4e8fbab998 (diff) | |
download | frameworks_base-ff475c0ea71ffd5f015cce1462daf373129ca896.zip frameworks_base-ff475c0ea71ffd5f015cce1462daf373129ca896.tar.gz frameworks_base-ff475c0ea71ffd5f015cce1462daf373129ca896.tar.bz2 |
Merge "camera2: Fix legacy scaling factor application." into lmp-mr1-dev automerge: d2ccbd4
automerge: 41af9d5
* commit '41af9d592efbae88ed95ab77a856dd4e8fbab998':
camera2: Fix legacy scaling factor application.
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/hardware/camera2/legacy/SurfaceTextureRenderer.java | 12 |
1 files changed, 7 insertions, 5 deletions
diff --git a/core/java/android/hardware/camera2/legacy/SurfaceTextureRenderer.java b/core/java/android/hardware/camera2/legacy/SurfaceTextureRenderer.java index a0a0716..615b2c8 100644 --- a/core/java/android/hardware/camera2/legacy/SurfaceTextureRenderer.java +++ b/core/java/android/hardware/camera2/legacy/SurfaceTextureRenderer.java @@ -269,21 +269,23 @@ public class SurfaceTextureRenderer { throw new IllegalStateException("Illegal intermediate texture with dimension of 0"); } - // Letterbox or pillerbox output dimensions into intermediate dimensions. + // Letterbox or pillar-box output dimensions into intermediate dimensions. RectF intermediate = new RectF(/*left*/0, /*top*/0, /*right*/texWidth, /*bottom*/texHeight); RectF output = new RectF(/*left*/0, /*top*/0, /*right*/width, /*bottom*/height); android.graphics.Matrix boxingXform = new android.graphics.Matrix(); boxingXform.setRectToRect(output, intermediate, android.graphics.Matrix.ScaleToFit.CENTER); boxingXform.mapRect(output); - // Find scaling factor from pillerboxed/letterboxed output dimensions to intermediate + // Find scaling factor from pillar-boxed/letter-boxed output dimensions to intermediate // buffer dimensions. float scaleX = intermediate.width() / output.width(); float scaleY = intermediate.height() / output.height(); - // Scale opposite dimension in clip coordinates so output is letterboxed/pillerboxed into - // the intermediate dimensions (rather than vice-versa). - Matrix.scaleM(mMVPMatrix, /*offset*/0, /*x*/scaleY, /*y*/scaleX, /*z*/1); + // Intermediate texture is implicitly scaled to 'fill' the output dimensions in clip space + // coordinates in the shader. To avoid stretching, we need to scale the larger dimension + // of the intermediate buffer so that the output buffer is actually letter-boxed + // or pillar-boxed into the intermediate buffer after clipping. + Matrix.scaleM(mMVPMatrix, /*offset*/0, /*x*/scaleX, /*y*/scaleY, /*z*/1); if (DEBUG) { Log.d(TAG, "Scaling factors (S_x = " + scaleX + ",S_y = " + scaleY + ") used for " + |