[V4][Android] - The returned captured image dimensions is different from the output of `Image.getSize` 🐛
What's happening?
Hello!
In my recent try to update to the latest v4.0.1. I am encountering a weird issue when the orientation prop is set to landscape-left. The image dimension produced by camera.takePhoto() doesn't match the output of the react-native api Image.getSize. I suspect that wrong metadata are set in this case? All ohter values for the orientation props are okay.
You can check the following video that showcase the issue. Writtent in red :
- VC : Is the output of the camera.takePhoto
- RN : Is the output of the Image.getSize
Note: I reproduce in the example app if I change the orientation prop and console log the Image.getSize output.
https://github.com/mrousavy/react-native-vision-camera/assets/91324462/14a70f7e-b6d8-417e-888a-2e61db26378e
Reproduceable Code
import { useEffect, useRef, useState } from 'react';
import { Button, Image, ScrollView, StyleSheet, Text, View } from 'react-native';
import { Camera, Orientation, useCameraDevice } from 'react-native-vision-camera';
type PhotoModel = {
uri: string;
visionCameraWidth: number;
visionCameraHeight: number;
imageWidth: number;
imageheight: number;
};
export default App = () => {
const [init, setInit] = useState(false);
useEffect(() => {
(async () => {
const newCameraPermission = await Camera.requestCameraPermission();
setInit(true);
})();
}, []);
const device = useCameraDevice('back');
const cameraRef = useRef<Camera>(null);
const [orientation, setOrientation] = useState<Orientation>('portrait');
const [images, setImages] = useState<PhotoModel[]>([]);
if (!init) {
return <></>;
}
if (device == null) return <></>;
return (
<View style={StyleSheet.absoluteFill}>
<Camera
ref={cameraRef}
style={StyleSheet.absoluteFill}
device={device}
isActive={true}
photo={true}
orientation={orientation}
/>
<Button
title="Take photo"
onPress={async () => {
const photoResult = await cameraRef.current?.takePhoto({});
if (photoResult) {
Image.getSize('file:///' + photoResult?.path, (w, h) => {
setImages((prev) => {
return [
...prev,
{
uri: 'file:///' + photoResult.path,
visionCameraWidth: photoResult.width,
visionCameraHeight: photoResult.height,
imageWidth: w,
imageheight: h,
},
];
});
});
}
}}
/>
<Button
title="Focus"
onPress={async () => {
const photoResult = await cameraRef.current?.focus({ x: 0, y: 0 });
}}
/>
<View style={{ backgroundColor: 'red', height: 30 }}>
<View style={{ flex: 1, flexDirection: 'row' }}>
<Button
title="LandLeft"
onPress={() => {
setOrientation('landscape-left');
}}
/>
<Button
title="LandRight"
onPress={() => {
setOrientation('landscape-right');
}}
/>
<Button
title="Port"
onPress={() => {
setOrientation('portrait');
}}
/>
<Button
title="PortDown"
onPress={() => {
setOrientation('portrait-upside-down');
}}
/>
</View>
</View>
<ScrollView
style={{
position: 'absolute',
bottom: 0,
left: 0,
right: 0,
height: 200,
backgroundColor: 'black',
}}
horizontal={true}
>
{images.map((image, index) => {
return (
<View key={index} style={{ flex: 1 }}>
<Image
style={{ flex: 1 }}
source={{
uri: image.uri,
}}
height={200}
width={200}
/>
<Text
style={{
position: 'absolute',
bottom: 0,
left: 0,
right: 0,
height: 20,
color: 'red',
}}
>
VC: {image.visionCameraWidth}x{image.visionCameraHeight}. RN:{' '}
{image.imageWidth}x{image.imageheight}
</Text>
</View>
);
})}
</ScrollView>
</View>
);
};
Relevant log output
2024-04-25 17:37:07.096 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.112 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.129 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.146 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.163 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.179 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.196 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.213 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.229 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.246 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.263 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.280 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.296 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.313 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.329 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.346 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.363 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:07.554 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:08.554 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:09.555 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:10.555 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:11.554 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:12.554 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:13.555 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:14.556 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:15.556 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:16.556 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:17.556 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:18.557 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:19.556 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:20.557 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:21.557 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:22.557 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:23.558 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:24.559 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:25.559 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:26.558 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:27.559 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:28.559 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:29.560 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:30.561 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:31.562 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:32.561 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:33.561 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:34.563 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:34.692 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 0
2024-04-25 17:37:34.725 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 1
2024-04-25 17:37:34.774 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.788 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.802 18515-18515 CameraView com.rnvc I Updating CameraSession...
2024-04-25 17:37:34.803 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.804 18515-18515 CameraSession com.rnvc I configure { ... }: Waiting for lock...
2024-04-25 17:37:34.804 18515-18515 CameraSession com.rnvc I Nothing changed, aborting configure { ... }
2024-04-25 17:37:34.821 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.838 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.855 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.872 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.888 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.905 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.922 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.939 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.955 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.972 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:34.989 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.005 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.022 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.039 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.055 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.072 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.089 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.106 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.122 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.139 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.156 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.171 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:35.563 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:36.562 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:37.562 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:38.093 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 0
2024-04-25 17:37:38.120 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.130 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.139 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 1
2024-04-25 17:37:38.148 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.158 18515-18515 CameraView com.rnvc D Finding view 7...
2024-04-25 17:37:38.159 18515-18515 CameraView com.rnvc D Found view 7!
2024-04-25 17:37:38.160 18515-25573 CameraView.takePhoto com.rnvc I Taking photo... Options: {}
2024-04-25 17:37:38.162 18515-25571 UseCaseAttachState com.rnvc D Active and attached use case: [androidx.camera.core.ImageCapture-92c8645b-d6f5-4cf1-9ffc-983c56701873136296374, androidx.camera.core.Preview-b93df1a8-de19-4add-841e-ab5ab742755786324049] for camera: 0
2024-04-25 17:37:38.163 18515-25573 CameraSession com.rnvc I Ringer mode is silent (1), disabling shutter sound...
2024-04-25 17:37:38.163 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.164 18515-25571 CaptureSession com.rnvc D Attempting to submit CaptureRequest after setting
2024-04-25 17:37:38.164 18515-25571 CaptureSession com.rnvc D Issuing request for session.
2024-04-25 17:37:38.164 18515-25571 Camera2Cap...estBuilder com.rnvc D createCaptureRequest
2024-04-25 17:37:38.168 18515-18515 ImageCapture com.rnvc D takePictureInternal
2024-04-25 17:37:38.169 18515-18515 CameraOrientationUtil com.rnvc D getRelativeImageRotation: destRotationDegrees=90, sourceRotationDegrees=90, isOppositeFacing=true, result=0
2024-04-25 17:37:38.170 18515-18515 TakePictureManager com.rnvc D Issue the next TakePictureRequest.
2024-04-25 17:37:38.181 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.197 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.214 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.233 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.248 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.264 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.281 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.298 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.315 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.331 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.348 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.365 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.381 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.398 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.415 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.431 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.448 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.457 18515-25572 Camera2CameraImpl com.rnvc D {Camera@ab341b3[id=0]} Issue capture request
2024-04-25 17:37:38.457 18515-25572 CaptureSession com.rnvc D Issuing capture request.
2024-04-25 17:37:38.459 18515-25572 Camera2Cap...estBuilder com.rnvc D createReprocessCaptureRequest
2024-04-25 17:37:38.465 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.482 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.499 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.517 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:38.562 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:38.695 18515-18515 CameraView com.rnvc I invokeOnShutter(PHOTO)
2024-04-25 17:37:38.721 18515-18515 TakePictureManager com.rnvc D Issue the next TakePictureRequest.
2024-04-25 17:37:38.721 18515-18515 TakePictureManager com.rnvc D No new request.
2024-04-25 17:37:38.897 18515-25562 CameraView.takePhoto com.rnvc I Successfully captured 4032 x 3024 photo!
2024-04-25 17:37:39.349 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.517 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.534 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.550 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.562 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:39.566 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.582 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.599 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.615 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.633 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.649 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.666 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.682 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.700 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.717 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.733 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.750 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.766 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.784 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.800 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:39.816 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:40.562 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:41.563 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:42.563 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:43.564 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:44.563 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:45.563 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:46.398 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 0
2024-04-25 17:37:46.425 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.436 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.453 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.469 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.481 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 1
2024-04-25 17:37:46.486 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.503 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.518 18515-18515 CameraView com.rnvc I Updating CameraSession...
2024-04-25 17:37:46.520 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.521 18515-18515 CameraSession com.rnvc I configure { ... }: Waiting for lock...
2024-04-25 17:37:46.521 18515-18515 CameraSession com.rnvc I Nothing changed, aborting configure { ... }
2024-04-25 17:37:46.536 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.553 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.563 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:46.569 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.586 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.603 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.620 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.637 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.654 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.670 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.687 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.704 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.720 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.737 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.754 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.770 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.787 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.804 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:46.819 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:47.564 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:48.370 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 0
2024-04-25 17:37:48.394 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.408 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.425 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.437 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 1
2024-04-25 17:37:48.441 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.448 18515-18515 CameraView com.rnvc D Finding view 7...
2024-04-25 17:37:48.449 18515-18515 CameraView com.rnvc D Found view 7!
2024-04-25 17:37:48.449 18515-25562 CameraView.takePhoto com.rnvc I Taking photo... Options: {}
2024-04-25 17:37:48.451 18515-25570 UseCaseAttachState com.rnvc D Active and attached use case: [androidx.camera.core.ImageCapture-92c8645b-d6f5-4cf1-9ffc-983c56701873136296374, androidx.camera.core.Preview-b93df1a8-de19-4add-841e-ab5ab742755786324049] for camera: 0
2024-04-25 17:37:48.453 18515-25562 CameraSession com.rnvc I Ringer mode is silent (1), disabling shutter sound...
2024-04-25 17:37:48.453 18515-25570 CaptureSession com.rnvc D Attempting to submit CaptureRequest after setting
2024-04-25 17:37:48.453 18515-25570 CaptureSession com.rnvc D Issuing request for session.
2024-04-25 17:37:48.453 18515-25570 Camera2Cap...estBuilder com.rnvc D createCaptureRequest
2024-04-25 17:37:48.455 18515-18515 ImageCapture com.rnvc D takePictureInternal
2024-04-25 17:37:48.458 18515-18515 CameraOrientationUtil com.rnvc D getRelativeImageRotation: destRotationDegrees=270, sourceRotationDegrees=90, isOppositeFacing=true, result=180
2024-04-25 17:37:48.458 18515-18515 TakePictureManager com.rnvc D Issue the next TakePictureRequest.
2024-04-25 17:37:48.458 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.462 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.475 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.491 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.508 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.525 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.543 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.558 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.564 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:48.575 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.592 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.609 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.625 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.642 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.659 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.676 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.693 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.709 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.726 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.743 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.746 18515-25570 Camera2CameraImpl com.rnvc D {Camera@ab341b3[id=0]} Issue capture request
2024-04-25 17:37:48.746 18515-25570 CaptureSession com.rnvc D Issuing capture request.
2024-04-25 17:37:48.748 18515-25570 Camera2Cap...estBuilder com.rnvc D createReprocessCaptureRequest
2024-04-25 17:37:48.759 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.776 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.789 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:48.960 18515-18515 CameraView com.rnvc I invokeOnShutter(PHOTO)
2024-04-25 17:37:48.980 18515-18515 TakePictureManager com.rnvc D Issue the next TakePictureRequest.
2024-04-25 17:37:48.980 18515-18515 TakePictureManager com.rnvc D No new request.
2024-04-25 17:37:49.151 18515-25573 CameraView.takePhoto com.rnvc I Successfully captured 4032 x 3024 photo!
2024-04-25 17:37:49.564 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:50.320 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.527 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.544 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.562 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.565 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:50.577 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.596 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.612 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.628 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.645 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.662 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.678 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.695 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.712 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.728 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.744 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.761 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.779 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.796 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.811 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:50.829 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:51.565 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:52.157 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 0
2024-04-25 17:37:52.254 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.267 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.284 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.302 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.313 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 1
2024-04-25 17:37:52.318 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.337 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.349 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.365 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.383 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.400 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.416 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.433 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.450 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.466 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.483 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.499 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.517 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.533 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.550 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.566 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:52.567 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.584 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.600 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.617 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.633 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.652 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.667 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.685 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.700 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.720 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.734 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.752 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.767 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.784 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.801 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.819 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.834 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.852 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.870 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.885 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.901 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.920 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.935 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.953 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.968 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:52.985 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.216 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 0
2024-04-25 17:37:53.287 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.303 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.320 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.335 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.353 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.359 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 1
2024-04-25 17:37:53.369 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.386 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.402 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.420 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.436 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.453 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.469 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.486 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.503 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.519 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.536 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.555 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.567 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:53.569 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.588 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.603 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.621 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.637 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.651 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 0
2024-04-25 17:37:53.656 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.671 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.689 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.705 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.721 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.739 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.755 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.771 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.784 18515-18515 ViewRootIm...nActivity] com.rnvc I ViewPostIme pointer 1
2024-04-25 17:37:53.788 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.804 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.821 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.837 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.853 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.871 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.888 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.904 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.922 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.937 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.956 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.971 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:53.988 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.005 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.021 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.038 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.055 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.072 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.088 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.105 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.121 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.138 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.155 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.170 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.188 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.204 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.221 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.240 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.256 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.271 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.288 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.305 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.322 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.338 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.355 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.371 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.388 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.404 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.422 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.438 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.455 18515-25530 OpenGLRenderer com.rnvc D mPreviousPosition == bounds[l=-212.00 t=72.00 r=1292.00 b=2076.00]
2024-04-25 17:37:54.566 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:55.567 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
2024-04-25 17:37:56.567 18515-25595 CameraView com.rnvc I invokeOnAverageFpsChanged(0.0)
Camera Device
{
"formats": [],
"sensorOrientation": "landscape-left",
"hardwareLevel": "full",
"maxZoom": 8,
"minZoom": 1,
"maxExposure": 20,
"supportsLowLightBoost": false,
"neutralZoom": 1,
"physicalDevices": [
"wide-angle-camera"
],
"supportsFocus": true,
"supportsRawCapture": false,
"isMultiCam": false,
"minFocusDistance": 10,
"minExposure": -20,
"name": "0 (BACK) androidx.camera.camera2",
"hasFlash": true,
"hasTorch": true,
"position": "back",
"id": "0"
}
Device
Galaxy S9 - SM-G960F (Android 10, One UI 2.5)
VisionCamera Version
4.0.1
Can you reproduce this issue in the VisionCamera Example app?
Yes, I can reproduce the same issue in the Example app here
Additional information
- [ ] I am using Expo
- [ ] I have enabled Frame Processors (react-native-worklets-core)
- [X] I have read the Troubleshooting Guide
- [X] I agree to follow this project's Code of Conduct
- [X] I searched for similar issues in this repository and found none.
I use BitmapFactory.decodeFile to get the width and height of the photo after capturing.
According to BitmapFactory.Options.outHeight;
The resulting height of the bitmap. If inJustDecodeBounds is set to false, this will be height of the output bitmap after any scaling is applied. If true, it will be the height of the input image without any accounting for scaling.
We set inJustDecodeBounds to true, so this should be "the height of the input image without any accounting for scaling." - does Image.getSize maybe perform display scaling already?
@mrousavy I tried to debug both source code and didn't any valid conclusion. I noted indeed that when react load the Image there is a resize done only for the LandscapeLeft picture. (done here in the RN code). But why would it happen only for this orientation ? Other three looks fine. It has to be something else I feel.
The same app login in V3 works fine.
I noted that when react load the exif to get the orientation, I have the following results.
public static final int ORIENTATION_NORMAL = 1;
public static final int ORIENTATION_ROTATE_180 = 3;
public static final int ORIENTATION_ROTATE_270 = 8;
public static final int ORIENTATION_ROTATE_90 = 6;
ORIENTATION_ROTATE_90 -> Portrait
ORIENTATION_ROTATE_NORMAL -> LandscapeLeft
ORIENTATION_ROTATE_180 -> LandscapeRight
ORIENTATION_ROTATE_270 -> PortraitUpsideDown
Which is different from V3 :
ORIENTATION_ROTATE_180 -> LandscapeLeft
ORIENTATION_ROTATE_NORMAL -> LandscapeRight
Exif metadata are read here in react
hmm, interesting. Orientation is still something that's not fully supported (See #1891) - so I don't really have a lot of insights, other than that I'd be confident that CameraX' EXIF writer is probably a bit more battletested than the one I wrote in V3. So V4 should be correct, anything that's incorrect should probably be reported in the Google Issue Tracker, they test on a lot of devices. I only have 3 phones.
Okay, I will dig more into it and check with a sample CameraX native app. And submit an issue if necessary. The root cause of this issue may be the same as for https://github.com/mrousavy/react-native-vision-camera/issues/2802
I even feel that it's a bug in react-native, because loading the image without even using the camera cause the issue. I looked for multiple issues on github of people having this issue. I also realised that I had this issue even before V4. So, closing the issue. Thanks for your time on this one!