* Remove unused hasConstants method. Do no thrown error on minBy call when filterd videoProfiles contains zero items.
* Remove not related to the fix changes.
* fix: Use `bitRate` multiplier instead of setting it to an absolute value
* Pass override
* Format
* Rename
* feat: Also implement Android
* fix: Log Mbps properly
* fix: Up-/Down-scale bit-rate if different options
* fix: Parse in Manager
* Update RecordingSession+getRecommendedBitRate.kt
Implements a semi-working version of flash photo capture for Android.
This isn't properly implemented because a proper implementation requires a fully custom precapture sequence that enables the torch, then waits for AE/AF to adjust, lock AE/AF, then capture with a single torch burst, and then turn the torch off again. This is quite complex, that's why the feature request #1890 is marked at $3,000.
For now, this is a simple flash burst which _sometimes works_, _sometimes not_ - highly depends on the device.
If anyone wants true working flash capture, sponsor in #1890.
* feat: Create base for `CameraConfiguration` diff
* Fix
* Write three configure methods
* Build?
* MOre
* Update CameraView+RecordVideo.kt
* Fix errors
* Update CameraDeviceDetails.kt
* Update CameraSession.kt
* Auto-resize Preview View
* More
* Make it work? idk
* Format
* Call `configure` under mutex, and change isActive
* fix: Make Outputs comparable
* fix: Make CodeScanner comparable
* Format
* fix: Update outputs after reconfiguring
* Update CameraPage.tsx
* fix: Close CaptureSession before
Moves everything Camera related into `core/` / `Core/` so that it is better encapsulated from React Native.
Benefits:
1. Code is much better organized. Should be easier for collaborators now, and cleaner codebase for me.
2. Locking is fully atomically as you can now only configure the session through a lock/Mutex which is batch-overridable
* On iOS, this makes Camera startup time **MUCH** faster, I measured speedups from **1.5 seconds** to only **240 milliseconds** since we only lock/commit once! 🚀
* On Android, this fixes a few out-of-sync/concurrency issues like "Capture Request contains unconfigured Input/Output Surface!" since it is now a single lock-operation! 💪
3. It is easier to integrate VisionCamera outside of React Native (e.g. Native iOS Apps, NativeScript, Flutter, etc)
With this PR, VisionCamera V3 is up to **7x** faster than V2
* fix: Incorrect zoom on Android < 11
Fixes#1865
* Clamp zoom on Android
Some unclamped zoom values crash. For example, zoom={0.5} crashes
(tested on Android 9).
* Extract zoom into an extension (Android)
* Update package/android/src/main/java/com/mrousavy/camera/extensions/CaptureRequest+setZoom.kt
---------
Co-authored-by: Marc Rousavy <marcrousavy@hotmail.com>
* feat: Implement `resizeMode` prop for iOS
- `"cover"`: Keep aspect ratio, but fill entire parent view (centered).
- `"contain"`: Keep aspect ratio, but make sure the entire content is visible even if it introduces additional blank areas (centered).
* chore: Update prop docs
* Update CameraProps.ts
* Lint & Format
* feat(preview): respect format's aspect ratio
* fix: code guidelines and previewSize in PreviewView
* feat: add resizeMode 'cover' and 'contain' on Android
<!--
❤️ Thank you for your contribution! ❤️
Make sure you have read the Contributing Guidelines:
https://github.com/mrousavy/react-native-vision-camera/blob/main/CONTRIBUTING.md
-->
## What
<!--
Enter a short description on what this pull-request does.
Examples:
This PR adds support for the HEVC format.
This PR fixes a "unsupported device" error on iPhone 8 and below.
This PR fixes a typo in a CameraError.
This PR adds support for Quadruple Cameras.
-->
## Changes
<!--
Create a short list of logic-changes.
Examples:
* This PR changes the default value of X to Y.
* This PR changes the configure() function to cache results.
-->
## Tested on
<!--
Create a short list of devices and operating-systems you have tested
this change on. (And verified that everything works as expected).
Examples:
* iPhone 11 Pro, iOS 14.3
* Huawai P20, Android 10
-->
## Related issues
<!--
Link related issues here.
Examples:
* Fixes#29
* Closes#30
* Resolves#5
-->