Fixed
Status Update
Comments
ap...@google.com <ap...@google.com> #2
Project: platform/frameworks/support
Branch: androidx-main
Author: Scott Nien <
Link:
Fix the issue that PreviewViewMeteringPointFactory produces wrong coordinates when effect or stream sharing is enabled.
Expand for full commit details
Fix the issue that PreviewViewMeteringPointFactory produces wrong coordinates when effect or stream sharing is enabled.
The PreviewviewMeteringPointFactory uses the PreviewRotationDegrees to transform the
coordinates. This PreviewRotationDegrees in TransformationInfo does't
reflect the sensor_orientation and the display orientation when effect
or stream sharing is enabled.
Solution :
Use getSensorToBufferTransform from TransmationInfo instead to convert the view(x,y)
to sensor (x,y) and also set the surfaceAspectRatio as the sensor size.
Bug: 345993685
RelNote: "Fixed the issue where invoking startFocusMetering with
PreviewView.getMeteringPointFactory does't get the correct sensor
coordinates when an effect is enabled or when 4 use cases are bound
(stream-sharing)."
Test: All tests in camera-view
Change-Id: I916c55d371a2c2e7de798b21080318591f099561
Files:
- M
camera/camera-core/src/main/java/androidx/camera/core/MeteringPointFactory.java
- M
camera/camera-core/src/main/java/androidx/camera/core/internal/CameraUseCaseAdapter.java
- M
camera/camera-view/src/androidTest/java/androidx/camera/view/PreviewViewMeteringPointFactoryDeviceTest.kt
- M
camera/camera-view/src/main/java/androidx/camera/view/PreviewTransformation.java
- M
camera/camera-view/src/main/java/androidx/camera/view/PreviewView.java
- M
camera/camera-view/src/main/java/androidx/camera/view/PreviewViewMeteringPointFactory.java
- M
camera/camera-view/src/test/java/androidx/camera/view/PreviewViewMeteringPointFactoryTest.java
Hash: 4099c75fbc3979a18c18f435fbf508ffdd4c7ab1
Date: Fri Sep 27 14:17:44 2024
ch...@google.com <ch...@google.com> #3
The issue is fixed and the fix will be included in 1.4.0-rc04 and 1.4.0 stable release as well as the new alpha in 1.5.0. Thanks for reporting this issue and I am sorry for not fixing it promptly.
na...@google.com <na...@google.com> #4
The following release(s) address this bug.It is possible this bug has only been partially addressed:
androidx.camera:camera-core:1.4.0-rc04
androidx.camera:camera-view:1.4.0-rc04
Description
We should look into the various places in the APIs where these surface to ensure that this is the API we want before going to beta.
For example, Cubic is constructed with PointF objects, which it exposes as vals. This is worth considering in several ways:
- Having the points available for inspection is good, but we don't want the data to be changed in the underlying cubics (which is possible since PointF is mutable)
- It might not make sense to even have a public constructor; Cubics are necessary for callers to be able to inspect a Polygon (and maybe render debug information for it). But the object is mostly an implementation detail of this API, so it seems unnecessary to expose the constructor(s).
- We might want to use Float internally, regardless of what is used to construct a Cubic. This might help with both performance/allocations internally and avoiding mutability from the PointFs that callers can see
- If we use Float internally, and opt to avoid public constructors, then we might as well use Floats to construct Cubics as well, to avoid allocating PointF objects just to construct a Cubic
- If PointF is only used as a way to return data from a Cubic to a caller, then we could lazily allocate those objects