Marc Rousavy
de0d6cda5d
feat: Implement atomically single-lock core/
library on Android ( #2049 )
...
* 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
2023-10-24 11:19:03 +02:00
Marc Rousavy
23d173f6fc
chore: release 3.5.1
2023-10-19 18:37:06 +02:00
Marc Rousavy
5d9d153e54
fix: Fix Xcode 15 build error (var
instead of let
) ( #2048 )
...
* fix: Fix Xcode 15 build error (`var` instead of `let`)
* chore: Restructure code a bit for that logic
* Update CameraDevicesManager.swift
2023-10-19 17:43:20 +02:00
Marc Rousavy
00718ea0ee
fix: Set sensorOrientation
to landscapeRight
2023-10-19 17:02:07 +02:00
Marc Rousavy
993b9f5a37
chore: release 3.5.0
2023-10-19 13:38:19 +02:00
Marc Rousavy
217461ff5d
feat: Make Frame Processors work on API <29 ( #2041 )
2023-10-19 11:47:30 +02:00
Marc Rousavy
da25aa1c1f
fix: Add getFrameProcessorPlugin
for backwards compatibility ( #2040 )
2023-10-19 11:35:02 +02:00
Marc Rousavy
3929c0ac46
fix: Initialize Plugins in a static
block of ReactPackage ( #2039 )
...
* fix: Initialize Plugins in a `static` block of ReactPackage
* fix: Also register FP Plugins in Example
2023-10-19 11:34:09 +02:00
Marc Rousavy
07027d8010
fix: Rename getFrameProcessorPlugin
to initFrameProcessorPlugin
( #2038 )
...
* fix: Rename `getFrameProcessorPlugin` to `initFrameProcessorPlugin`
* fix: Make nullable, add comments
* Format
* Update FrameProcessorPlugin.java
* Update FrameProcessorPlugin.h
* fix: Fix dead links
* Call super constructor
* Update ExampleFrameProcessorPlugin.java
* fix: Init calls
2023-10-19 11:19:47 +02:00
Mateusz Mędrek
a291642c53
feat: Reintroduce Macros for Frame Processor Plugin registration ( #2027 )
...
in VisionCamera v1 & v2 there were two ObjC macros that were helping
in creation/registration of Frame Processors, but these were removed with
v3
This PR reintroduces such macros, which will not only make FP development
easier, but also it will also fix issues people had with registration of
Swift Frame Processors (+load vs +initialize issues)
Docs were also updated to reflect that the macros should be used to
correctly initialize and register ObjC/Swift Frame Processors
2023-10-19 10:35:14 +02:00
Marc Rousavy
2666ac53a6
fix: Fix build on Xcode 14 ( #2033 )
...
* fix: Fix build on Xcode 14
* Format
* Make CI run on `macOS-latest`
* Nested if
2023-10-18 18:25:30 +02:00
Marc Rousavy
9573ae19cb
fix: Remove unneeded kotlin-android-extensions
dependency ( #2034 )
2023-10-18 18:22:34 +02:00
Marc Rousavy
89dfd351e0
fix: Fix torch
not working on iOS ( #2031 )
...
* fix: Fix `torch` not working on iOS
* Format
* fix: Use `withSessionLock` and `withDeviceLock`
* Update CameraSession.swift
* Update RecordingSession.swift
2023-10-18 18:04:58 +02:00
Marc Rousavy
6956fded2d
chore: release 3.4.1
2023-10-18 17:48:04 +02:00
Marc Rousavy
764897dcf1
Update .gitattributes
2023-10-18 13:13:40 +02:00
Marc Rousavy
e845dc8397
Update .gitattributes
2023-10-18 11:30:01 +02:00
Marc Rousavy
674d96706a
fix: Fix Code Type not supported error ( #2022 )
2023-10-17 11:55:11 +02:00
Marc Rousavy
4e1a1fd68b
fix: Rename parsers/
to types/
( #2021 )
...
chore: Rename `parsers/` to `types/`
2023-10-17 11:49:04 +02:00
Marc Rousavy
3b1d8353a5
chore: Add .gitattributes
2023-10-16 18:07:04 +02:00
Marc Rousavy
2af965d1ad
fix: Log in FrameProcessorPluginRegistry
( #2012 )
...
* fix: Log when adding Frame Processor Plugin
* fix: Also log on Android
* Add logs in get as well
* fix: Fix string concat on Android
2023-10-16 17:51:18 +02:00
Marc Rousavy
ce9a505776
chore: release 3.4.0
2023-10-16 17:15:12 +02:00
Marc Rousavy
5e20f9c8fa
chore: Rename CodeScanner
to CodeScannerOptions
in native ( #2010 )
...
* chore: Rename `CodeScanner` to `CodeScannerOptions` on native
* chore: Rename `CodeScanner` on iOS
* fix: Unwrap `options`
* Format
2023-10-16 16:56:39 +02:00
Marc Rousavy
e8ae11e30b
fix: Fix CodeScanner
stalling on Android ( #2009 )
2023-10-16 16:28:51 +02:00
Marc Rousavy
e8df7148fa
fix: Run CodeScanner on default queue, fix stalling ( #2002 )
...
* fix: Run CodeScanner on default queue, fix stalling
* fix: Use `MAX_IMAGES` of 3
2023-10-14 13:30:21 +02:00
Marc Rousavy
ea98112a21
fix: Fix basic Orientation on iOS ( #2000 )
...
* fix: Fix basic Orientation on iOS
* ci: Use macOS 13 runner for latest Xcode 15
* chore: Remove Xcode 15 checks
* Format
2023-10-14 13:17:14 +02:00
Marc Rousavy
fab5bdc0cd
fix: Fix PreviewView overflowing on Android ( #2001 )
...
* fix: Run `addView` on UI Thread
* fix: Fix overflow of PreviewView
2023-10-14 13:17:05 +02:00
Marc Rousavy
315fcb68a8
fix: Fix FpsGraph not updating
2023-10-14 12:41:53 +02:00
Marc Rousavy
62ca95725d
fix: Fix torch not turning off after it has been enabled ( #1997 )
...
fix: Fix torch and low-light boost not turning off again
2023-10-13 18:44:44 +02:00
Marc Rousavy
cd0b413706
feat: New Core/
library ( #1975 )
...
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
2023-10-13 18:33:20 +02:00
Marc Rousavy
e8bb5cfec0
docs: Remove some links that just didn't work for some reason
2023-10-12 10:14:48 +02:00
Marc Rousavy
18e69269d4
fix: Catch errors in CaptureSession
configuration
2023-10-10 19:18:54 +02:00
Marc Rousavy
727fb39f01
fix: Close previous Outputs to free memory
2023-10-10 19:17:36 +02:00
Marc Rousavy
10a44d5b79
fix: Also close outputs
in destroy()
2023-10-10 19:10:42 +02:00
Marc Rousavy
bccd73d704
Revert "fix: Close CameraSession
in onDetachedFromWindow()
( #1962 )"
...
This reverts commit 02726d47f7
.
2023-10-10 19:06:06 +02:00
Vahid Hasani
02726d47f7
fix: Close CameraSession
in onDetachedFromWindow()
( #1962 )
...
* Close camera session in onDetachedFromWindow
* Remove cache folder
---------
Co-authored-by: Marc Rousavy <me@mrousavy.com>
2023-10-10 19:01:54 +02:00
Marc Rousavy
1e7059ca8f
Revert "fix: Remove Frame Processor when Camera unmounts ( #1960 )"
...
This reverts commit d51ac1529b
.
2023-10-10 18:58:47 +02:00
Tuan Luong
d51ac1529b
fix: Remove Frame Processor when Camera unmounts ( #1960 )
...
* unsetFrameProcessor when camera view is removed
* Use `this.lastFrameProcessor` instead
---------
Co-authored-by: Marc Rousavy <marcrousavy@hotmail.com>
2023-10-10 18:55:08 +02:00
Marc Rousavy
18b30cd073
fix: Always call CaptureSession
fully synchronously under Mutex ( #1972 )
...
* fix: Always call `CaptureSession` fully synchronously under Mutex
* Update CameraView.kt
* chore: Format
2023-10-10 18:51:46 +02:00
Marc Rousavy
915ef331d3
feat: Extract CodeScannerPipeline & fix stalling ( #1971 )
...
* chore: Extract CodeScannerPipeline
* chore: Format
* Update CodeScannerPipeline.kt
2023-10-10 18:51:36 +02:00
Marc Rousavy
a2e5cef37e
chore: Fix docs links
2023-10-10 18:40:15 +02:00
Marc Rousavy
b33174399e
docs: Fix broken links
2023-10-10 18:21:39 +02:00
Marc Rousavy
a498144fd5
chore: Update doc URLs
2023-10-09 11:17:07 +02:00
Marc Rousavy
6e72781500
feat: Use correct photo and video format dimensions on iOS ( #1929 )
...
* feat: Use new photo dimensions API
* Update AVCaptureDevice.Format+matchesFilter.swift
* fix: Use Pixels instead of Points for video size
* feat: Set `PhotoOutput`'s maximum photo resolution
* fix: Compare dictionaries instead
* chore: Format code
* fix: Try to use hash.... failing atm
* fix: Use rough comparison again
* fix: Also take video HDR into consideration
* chore: Format
* Use contains
* Update AVCaptureDevice.Format+toDictionary.swift
* docs: Add better docs to Camera props
* Update CameraView+AVCaptureSession.swift
* Update CameraView+AVCaptureSession.swift
2023-10-06 16:11:09 +02:00
Marc Rousavy
a4448c3a7d
fix: Fix focus()
on iOS ( #1943 )
2023-10-06 14:30:12 +02:00
Erwan LE PRADO
9d71990570
feat: Activate Torch Mode on Android ( #1932 )
2023-10-06 14:28:57 +02:00
Marc Rousavy
4cbe8324d5
chore: Replace '
with "
2023-10-06 13:04:34 +02:00
Marc Rousavy
36e9e00930
docs: Add **Flash** documentation
2023-10-05 16:40:15 +02:00
Marc Rousavy
3750734578
chore: release 3.3.1
2023-10-05 14:52:47 +02:00
Marc Rousavy
1843f7ac3a
feat: Add "Camera Devices" screen to Example ( #1927 )
...
* feat: Add "Camera Devices" screen to Example
* feat: Store device in MMKV
2023-10-05 14:52:03 +02:00
Marc Rousavy
658695dca5
docs: Use smaller title on mobile ( #1928 )
2023-10-05 14:50:36 +02:00
Marc Rousavy
cc0256a0fe
chore: Fix lockfiles
2023-10-05 13:38:58 +02:00
Marc Rousavy
e4d9764637
chore: Upgrade lockfiles
2023-10-05 13:35:44 +02:00
Marc Rousavy
fab631d61a
fix: Remove string-hash-64
dependency
...
That's a dependency of react-native-worklets-core.
2023-10-05 12:03:57 +02:00
Marc Rousavy
ffd64feee8
feat: Add enableCodeScanner
to Expo Config Plugin
2023-10-05 11:06:38 +02:00
Jakov Glavina
6e249d165a
feat: Add Expo Config Plugin for CodeScanner MLKit Barcode Model downloader ( #1916 )
2023-10-05 10:58:31 +02:00
Marc Rousavy
59699929f4
fix: Use minSdkVersion
of 26 again
2023-10-05 10:56:30 +02:00
Marc Rousavy
c9795ce767
fix: Fix clean build error ( #1924 )
...
Fixes https://github.com/mrousavy/react-native-vision-camera/issues/1915
2023-10-05 10:46:33 +02:00
Marc Rousavy
3ed74e6794
chore: release 3.3.0
2023-10-04 13:02:41 +02:00
Marc Rousavy
93019c37e6
docs: Update example
2023-10-04 13:00:23 +02:00
Marc Rousavy
5efaefee98
docs: Update QR Code references
2023-10-04 12:56:47 +02:00
Marc Rousavy
6640b72a00
feat: Code Scanner API ( #1912 )
...
* feat: CodeScanner JS API
* feat: iOS
* Use guard
* Format
* feat: Android base
* fix: Attach Surfaces
* Use isBusy var
* fix: Use separate Queue
* feat: Finish iOS types
* feat: Implement all other code types on Android
* fix: Call JS event
* fix: Pass codetypes on Android
* fix: iOS use Preview coordinate system
* docs: Add comments
* chore: Format code
* Update CameraView+AVCaptureSession.swift
* docs: Add Code Scanner docs
* docs: Update
* feat: Use lazily downloaded model on Android
* Revert changes in CameraPage
* Format
* fix: Fix empty QR codes
* Update README.md
2023-10-04 12:53:52 +02:00
Marc Rousavy
2c08e5ae78
fix: Also clean VisionCamera build cache
2023-10-04 11:11:12 +02:00
Marc Rousavy
4fc8cd2e01
fix: Clean C++ CMake cache (.cxx/
) on clean
2023-10-04 11:06:39 +02:00
Marc Rousavy
9a777ba240
fix: Only use supported PixelFormats
2023-10-03 14:05:23 +02:00
Marc Rousavy
224bffd4dc
fix: Use dynamic video format
2023-10-03 13:59:19 +02:00
Marc Rousavy
324e269173
fix: Set minSdkVersion
to 23 ( #1911 )
...
* fix: Set `minSdkVersion` to 21
* sorry I meant 23
2023-10-03 13:52:42 +02:00
Marc Rousavy
8d90dcc476
fix: Make HardwareBuffers compile optionally (opt-out in minSdkVersion <26) ( #1910 )
...
* fix: Make HardwareBuffers compile optionally
* chore: Format C++ code
* fix: Fix if
2023-10-03 13:18:41 +02:00
Marc Rousavy
83c0cdb030
fix: Fix CamcorderProfile
get crash on Samsung devices ( #1907 )
2023-10-03 12:04:03 +02:00
Marc Rousavy
1cdc3d1d9c
fix: Fix +load
not available in Xcode 15 error ( #1908 )
2023-10-03 12:03:29 +02:00
Marc Rousavy
24f77fb224
fix: Use simple wide-angle device if no options are passed ( #1909 )
2023-10-03 12:03:20 +02:00
Mateusz Mędrek
62e786ad04
docs: Add Kotlin & Swift FP plugins examples ( #1902 )
...
* chore(docs): add Kotlin FP example
* chore(docs): add Swift FP plugin
2023-10-03 11:33:48 +02:00
Marc Rousavy
d465c37bea
fix: Remove dng
PixelFormat
2023-10-03 11:27:46 +02:00
Marc Rousavy
68776f683b
chore: Type examplePlugin
2023-09-30 13:35:04 +02:00
Marc Rousavy
b92960a837
chore: Use max zoom of 10 in example
2023-09-30 13:23:17 +02:00
Marc Rousavy
be3d802267
chore: Remove unused ImageWriter
2023-09-30 13:01:56 +02:00
Marc Rousavy
af2ef57951
chore: release 3.2.2
2023-09-30 11:23:05 +02:00
Marc Rousavy
edd73619c3
fix: Fix useCameraDevices
ignoring position
2023-09-30 11:20:11 +02:00
Marc Rousavy
844759e5b1
Update Podfile.lock
2023-09-30 11:17:27 +02:00
Marc Rousavy
56f3dcf1c8
chore: release 3.2.1
2023-09-30 10:52:05 +02:00
Marc Rousavy
2430058cae
fix: Fix redeclaration build error on Android
2023-09-30 10:51:32 +02:00
Marc Rousavy
34f4038e05
chore: release 3.2.0
2023-09-29 21:59:26 +02:00
Marc Rousavy
b397315360
chore: Include README.md in npm package
2023-09-29 21:59:02 +02:00
Marc Rousavy
f78f05a32c
chore: Add README to npm package
2023-09-29 21:56:34 +02:00
Marc Rousavy
85564d6d02
fix: Remove unused Error codes ( #1887 )
...
* fix: Remove unused Errors
* Errors.kt -> CameraError.kt
* fix: remove .system
2023-09-29 21:54:35 +02:00
Marc Rousavy
cf1952d8f7
feat: Use AHardwareBuffer*
for frame.toArrayBuffer()
( #1888 )
...
* feat: Route images through `ImageWriter` into OpenGL pipeline
* fix: Use RGB format
* fix: Every device supports YUV, RGB and NATIVE
* Update VideoPipeline.kt
* log format
* Plug ImageReader between OpenGL pipeline
* Call Frame Processor
* Format
* Remove logs
* feat: Use `HardwareBuffer` for `toArrayBuffer()`
* Format
2023-09-29 21:54:04 +02:00
Marc Rousavy
954b44810b
feat: Route images through ImageWriter
into OpenGL pipeline ( #1874 )
...
* feat: Route images through `ImageWriter` into OpenGL pipeline
* fix: Use RGB format
* fix: Every device supports YUV, RGB and NATIVE
* Update VideoPipeline.kt
* log format
* Plug ImageReader between OpenGL pipeline
* Call Frame Processor
* Format
* Remove logs
2023-09-29 21:52:19 +02:00
Marc Rousavy
a1fbba8d66
chore: Fix formatting
2023-09-29 19:42:28 +02:00
Touch Marine
fb812a6618
fix: Incorrect zoom on Android < 11 ( #1878 )
...
* 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>
2023-09-29 19:41:37 +02:00
Marc Rousavy
016dfa725d
Update Podfile.lock
2023-09-29 15:31:35 +02:00
Marc Rousavy
9d02f5141d
fix: Use compressed buffer format as default format as well ( #1884 )
...
* fix: Use compressed buffer format as default format as well
* chore: Format Swift
2023-09-29 15:27:17 +02:00
Marc Rousavy
902dc634a4
feat: Add customizable Video Bit Rate (videoBitRate
) ( #1882 )
...
* feat: Add `videoBitRate` option to `RecordVideoOptions`
* feat: Implement `videoBitRate` on iOS
* feat: Implement `videoBitRate` on Android
* chore: Format
* docs: Separate recording and photo docs
* docs: Fix links
* docs: Add docs about bitrate and quality
* docs: Add blob
* fix: Don't use inline style for CI
* fix: Correctly log default bitRate
* fix: Fix typo
* fix: Calculate default bit-rate on Android depending on resolution
* Update RecordingSession.kt
2023-09-29 15:27:09 +02:00
Marc Rousavy
fb6ebd9ee1
fix: Allow nil preferredDevice
...
Fixes #1870
2023-09-27 12:51:38 +02:00
Marc Rousavy
14721d314f
chore: Remove semicolons ( #1846 )
...
* chore: Disable `semi` in Prettier
* chore: Format w/o semi
* Remove more `;`
* Lint example
* More ;
2023-09-26 11:39:17 +02:00
Marc Rousavy
f7428f26a4
fix: Allow getCameraDevice
to return undefined
when no Devices are available (e.g. iOS Simulator) ( #1848 )
...
fix: Allow `getCameraDevice` to return `undefined` when no Devices are available
2023-09-26 11:24:24 +02:00
Marc Rousavy
bdc3fd0341
chore: release 3.1.0
2023-09-25 13:05:43 +02:00
Marc Rousavy
979656d379
chore: Update install links
2023-09-25 13:04:22 +02:00
Marc Rousavy
706341fbdb
feat: Add Templates
API for choosing Camera Formats ( #1844 )
...
* docs: New V3 docs for new API
* fix: Prefer Wide-Angle unless explicitly opted-out
* docs: Update DEVICES
* Finish Devices docs
* Switch links
* Revert "Switch links"
This reverts commit 06f196ae0e67787cbd5768e125be6d0a3cb5bbc9.
* docs: New LIFECYCLE
* docs: New CAPTURING docs
* Update Worklets links
* docs: Update TROUBLESHOOTING and ZOOMING
* fix: Update `getAvailableCameraDevices()` usages
* docs: Update FORMATS
* Update Errors.kt
* docs: Fix broken links
* docs: Update references to old hooks
* docs: Create Frame Processor Tips
* docs: Auto-dark mode
* fix: Fix FPS filter
* feat: Add `'max'` flag to format filter
* fix: Use loop
* fix: Fix bug in `getCameraFormat`
* fix: Find best aspect ratio as well
* fix: Switch between formats on FPS change
* Update FRAME_PROCESSOR_PLUGIN_LIST.mdx
* Add FPS graph explanation
* feat: Add `Templates` API for choosing Camera Formats
2023-09-25 13:00:25 +02:00
Marc Rousavy
2d66d5893c
docs: New V3 docs for new API ( #1842 )
...
* docs: New V3 docs for new API
* fix: Prefer Wide-Angle unless explicitly opted-out
* docs: Update DEVICES
* Finish Devices docs
* Switch links
* Revert "Switch links"
This reverts commit 06f196ae0e67787cbd5768e125be6d0a3cb5bbc9.
* docs: New LIFECYCLE
* docs: New CAPTURING docs
* Update Worklets links
* docs: Update TROUBLESHOOTING and ZOOMING
* fix: Update `getAvailableCameraDevices()` usages
* docs: Update FORMATS
* Update Errors.kt
* docs: Fix broken links
* docs: Update references to old hooks
* docs: Create Frame Processor Tips
* docs: Auto-dark mode
* fix: Fix FPS filter
* feat: Add `'max'` flag to format filter
* fix: Use loop
* fix: Fix bug in `getCameraFormat`
* fix: Find best aspect ratio as well
* fix: Switch between formats on FPS change
* Update FRAME_PROCESSOR_PLUGIN_LIST.mdx
* Add FPS graph explanation
* feat: Support HDR filter
* docs: Add HDR docs
* docs: Add Video Stabilization
* docs: Update Skia docs
* Skia links
* Add Skia labels
* Update SKIA_FRAME_PROCESSORS.mdx
* docs: Add Performance
* Update some wording
* Update headers / and zoom
* Add examples for devices
* fix highlights
* fix: Expose `Frame`
* docs: Update FP docs
* Update links
* Update FRAME_PROCESSOR_CREATE_PLUGIN_IOS.mdx
2023-09-25 12:57:03 +02:00
Marc Rousavy
2d96381b3e
feat: New array-based useCameraFormats
API ( #1841 )
...
* feat: New array-based `useCameraFormats` API
* Use triple-camera in Example app
* fix: Remove invalid export
* fix: Use constant-time lookup Filter map and only run sort once
2023-09-23 11:24:15 +02:00
Marc Rousavy
3169444697
feat: Implement resizeMode
prop for iOS ( #1838 )
...
* 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
2023-09-23 10:14:27 +02:00