05d36aecc9
Add onVideoChunkReady callback
2024-02-01 19:41:58 -07:00
fb42545890
some camera orientation stuff, maybe toss?
2024-01-31 16:50:36 -07:00
e82f068b21
Add isLandscape to orientation
2024-01-31 16:50:36 -07:00
08f37070a4
Simplify ChunkedRecorder
2024-01-31 16:50:36 -07:00
d95057fa47
Initial chunked recording implementation
2024-01-31 16:50:34 -07:00
Marc Rousavy
ae75e22fc0
fix: Fix crash in toArrayBuffer()
by properly acquiring a reference on AHardwareBuffer*
( #2490 )
...
* fix: Fix crash in `toArrayBuffer()` by properly acquiring a reference on `AHardwareBuffer*`
* Format
* Update Podfile.lock
2024-01-31 20:32:02 +01:00
Marc Rousavy
f896831d4a
fix: Properly check HardwareBuffer
usage flags before setting them ( #2488 )
...
* fix: Properly check `HardwareBuffer` usage flags before setting them
* fix: Use GPU flag if pixel format is NATIVE
* Update VideoPipeline.kt
* Add some logs
* fix: Properly convert ImageFormat to HardwareBufferFormat
* Update Podfile.lock
* fix: Add a safe `getHardwareBufferFormat` method
* Format
2024-01-31 20:31:56 +01:00
dependabot[bot]
fb96d000bc
feat: Bump org.jetbrains.kotlinx:kotlinx-coroutines-android
from 1.5.2 to 1.7.3 ( #2467 )
...
Might be a breaking change as there have been some in that dependency.
chore(deps): bump org.jetbrains.kotlinx:kotlinx-coroutines-android
Bumps [org.jetbrains.kotlinx:kotlinx-coroutines-android](https://github.com/Kotlin/kotlinx.coroutines ) from 1.5.2 to 1.7.3.
- [Release notes](https://github.com/Kotlin/kotlinx.coroutines/releases )
- [Changelog](https://github.com/Kotlin/kotlinx.coroutines/blob/master/CHANGES.md )
- [Commits](https://github.com/Kotlin/kotlinx.coroutines/compare/1.5.2...1.7.3 )
---
updated-dependencies:
- dependency-name: org.jetbrains.kotlinx:kotlinx-coroutines-android
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-31 17:32:01 +01:00
Marc Rousavy
5f75b9e8dc
fix: Fix HostObject destructors to make sure a JNI Environment is set up ( #2462 )
...
* fix: Fix HostObject destructors to make sure a JNI Environment is set up
* Use `reset` instead of `= nullptr`
* Format
* Format
2024-01-30 16:51:09 +01:00
Marc Rousavy
9e1297531e
fix: Use ThreadScope::WithClassLoader
to also load custom JNI Types ( #2461 )
...
* fix: Fix `ThreadScope` in `runAsync`
* fix: Use `&`
* Update JVisionCameraScheduler.cpp
2024-01-30 16:37:00 +01:00
Marc Rousavy
33e2adcec6
fix: Fix Unable to retrieve jni environment. Is the thread attached?
errors by using jni::ThreadScope
( #2457 )
...
fix: Add `jni::ThreadScope` to `JVisionCameraScheduler`
2024-01-30 15:39:33 +01:00
Marc Rousavy
9089014ed8
feat: Add FPS Counter to Android (enableFpsGraph
) ( #2460 )
...
* feat: Add FPS Counter to Android (`enableFpsGraph`)
* feat: Add FPS View
* Update FpsCounterView.kt
* Implement actual graph
* fix layout
* Update FpsGraphView.kt
* Update CameraPage.tsx
2024-01-30 15:28:18 +01:00
Marc Rousavy
8c5b60355f
perf: Use existing cameraQueue
instead of yet another Thread ( #2459 )
...
* perf: Use existing `cameraQueue` instead of yet another Thread
* fix: Use `coroutineScope` to avoid wrong use of isActive
* fix: Do the same for `CameraSession`
* Lint
2024-01-30 14:26:55 +01:00
Marc Rousavy
af14f912fb
chore: Move onFrame
into Callback on Android ( #2458 )
...
* Separate to onFrame
* Restructure FP
* Move lib loading into `CameraViewModule`
2024-01-30 14:17:32 +01:00
Amir Hossein Shekari
02bc8a979c
fix: Fix NullPointerException
in initFrameProcessorPlugin
if plugin is not found ( #2454 )
...
* fix: fix the null exception
* Add `Nullable` and `NonNull` annotations
---------
Co-authored-by: Marc Rousavy <me@mrousavy.com>
2024-01-30 10:52:42 +01:00
Marc Rousavy
b5eb01bac8
fix: Expose auto-focus system for Android ( #2455 )
...
* fix: Expose auto-focus system for Android
* Add `autoFocusSystem` to filter
* Update CameraDeviceDetails.kt
* Update getCameraFormat.ts
2024-01-30 10:49:28 +01:00
Marc Rousavy
bdbcf05d14
fix: Fix NullPointerException
in VideoPipeline.removeRecordingSessionOutputSurface
( #2453 )
2024-01-29 18:59:12 +01:00
Marc Rousavy
c911d25727
fix: Fix SharedArray
JSI constructor allocating a new array instead of wrapping ( #2444 )
2024-01-26 12:05:00 +01:00
Daniel Prado
7e2889cf84
fix: Fix maxImages have been acquired
error in Frame Processor ( #2430 )
...
* fix: maxImages when frameprocessor error
* fix: Use `try`/`finally` for safety
---------
Co-authored-by: Marc Rousavy <me@mrousavy.com>
2024-01-25 18:17:48 +01:00
Marc Rousavy
bc6f954bf1
fix: Fix Android C++ SharedArray logs
2024-01-25 16:34:45 +01:00
Marc Rousavy
b1fa06514f
fix: Catch insufficient-storage
errors ( #2422 )
...
* fix: Catch `insufficient-storage` errors
* feat: Implement `insufficient-storage` error for Android
* fix: Catch insufficient storage error also on takePhoto android
2024-01-24 11:48:38 +01:00
Marc Rousavy
f400487a8d
fix: Remove unneeded synchronized
keyword
2024-01-18 20:02:48 +01:00
Marc Rousavy
bae1f52d4a
chore: Cleanup Android codebase ( #2415 )
2024-01-18 18:55:49 +01:00
Marc Rousavy
992934e00e
feat: SharedArray:wrapData:withSize
init for iOS ( #2410 )
...
* feat: `ArrayBuffer:wrapData:withSize` init for iOS
* Format
* fix build error
* Update ExampleFrameProcessorPlugin.m
* docs: Add class docs for SharedArray
2024-01-18 10:41:26 +01:00
Marc Rousavy
e21a1c2110
fix: Throw not-compatible-with-outputs
error when adding both CodeScannerPipeline and VideoPipeline ( #2411 )
...
* fix: Throw `not-compatible-with-outputs` error when adding CodeScanner and Video
* Format
2024-01-18 10:40:15 +01:00
Marc Rousavy
ba1d7eec9c
feat: Use JSI's ArrayBuffer
instead of TypedArray
( #2408 )
...
* feat: Use JSI's `ArrayBuffer` instead of `TypedArray`
* fix: Fix move memory
* feat: Implement iOS
* Format
* Update JSIJNIConversion.cpp
* fix: Fix Android `toArrayBuffer` and other
* Catch FP call errors
* Update return type
* Use `CPU_READ_OFTEN` flag as well
* CPU flag
* Run destructors under `jni::ThreadScope`
* Update FrameProcessorPluginHostObject.cpp
* fix: Fix `toArrayBuffer()` crash
* Update Frame.ts
2024-01-17 20:18:46 +01:00
Marc Rousavy
2f21609e39
feat: Add SharedArray.getSize()
( #2406 )
...
* feat: Add `SharedArray.getSize()`
* Rename `count` to `size` on iOS
* `->` instead of `.`
2024-01-17 18:30:26 +01:00
Marc Rousavy
bdad4e1acb
fix: Release MediaActionSound
after playing ( #2390 )
...
* fix: Release `MediaActionSound` after playing
* Make it a bit more expressive
2024-01-16 18:01:28 +01:00
Marc Rousavy
58ef21ebfd
feat: Add minFocusDistance
prop to CameraDevice
( #2392 )
...
* docs: Link `videoHdr`
* Update PERFORMANCE.mdx
* docs: Add isActive to perf
* docs: Update errors
* feat: Add `minFocusDistance` prop
* Format
* Update Podfile.lock
* fix: To Double
* fix: Import AVFoundation
* fix: Move from format -> device
* fix: Use centi-meters (cm) instead of meters
* Fix deadloop
* fix: Avoid -1 values
2024-01-15 19:30:20 +01:00
Marc Rousavy
17ae5fae76
fix: Fix CamcorderProfile
out of range error ( #2389 )
...
* fix: Fix `CamcorderProfile` out of range error
* fix: Also take `cameraId` into account
2024-01-15 10:30:13 +01:00
Marc Rousavy
a4686022e2
fix: Avoid "CameraNotReady" errors when updating props in background ( #2382 )
2024-01-13 20:02:18 +01:00
Marc Rousavy
d747933892
fix: Fix SharedArray name
2024-01-12 19:25:13 +01:00
Marc Rousavy
fe614a4c21
fix: Fix JNI TypedArray error
2024-01-12 19:24:46 +01:00
Marc Rousavy
29fe98cc44
feat: Add zero-copy SharedArray
type to Frame Processor Plugins ( #2383 )
...
* feat: Create `TypedArray` class for Frame Processor Plugins
* Type
* feat: Pass `VisionCameraProxy` along (BREAKING)
* feat: Finish implementation
* Log a bit
* feat: Successfully convert JSI <> JNI buffers
* Wrap buffer
* fix: Fix using wrong Runtime
* feat: Add docs
* add zero copy example
* Format C++
* Create iOS base
* feat: Finish iOS implementation
* chore: Format
* fix: Use `NSData` instead of `NSMutableData`
* Format
* fix: Fix build when Frame Processors are disabled
* chore: Rename `TypedArray` to `SharedArray`
* fix: Fix Swift typings for Array
* Remove a few default inits
* fix: Fix Android build
* fix: Use `NSInteger`
* Update SharedArray.mm
* fix: Expose bytes directly on iOS (NSData was immutable)
2024-01-12 16:00:36 +01:00
Marc Rousavy
34c5b11927
feat: Re-throw error on JS side instead of just logging on native side ( #2366 )
...
* feat: Re-throw error on JS side instead of just logging on native side
* fix: Fix proxy
* fix: Fix app crash by only logging error
* fix: Use `global.ErrorUtils` (from reanimated)
2024-01-11 17:23:38 +01:00
Marc Rousavy
322b6fcbd6
fix: Fix Preview stretching on Android ( #2377 )
...
* fix: Fix Preview stretching on Android
* fix: Simplify Preview size computation
* fix: Catch `stopRepeating` error
* fix: Fix preview size calculation
* Format code
* Update CameraSession.kt
* Enable CodeScanner in example app
* fix: Also update size on surface change
* Format
* fix: Flip sizes
* Revert that stuff again
* Update PreviewView.kt
* fix: Swap width and height in SurfaceHolder::setFixedSize
2024-01-11 16:33:40 +01:00
Marc Rousavy
2b10622559
fix: Fix Camera not stopping when isActive
is set to false
( #2361 )
2024-01-10 16:00:28 +01:00
Marc Rousavy
a8b85a3053
fix: Also call onInitialized
when isActive=false
...
related to https://github.com/mrousavy/react-native-vision-camera/issues/2364#issuecomment-1883201425
2024-01-09 17:58:57 +01:00
Marc Rousavy
5c99728561
feat: Add new enableCodeScanner
prop to build.gradle
to make sure CodeScanner
always works ( #2355 )
...
* feat: Always download model instead of relying on Google Play Services
* feat: Use `VisionCamera_enableCodeScanner` flag instead of unsafely replacing
* Update CODE_SCANNING.mdx
2024-01-08 13:14:47 +01:00
Marc Rousavy
cc60ad296a
fix: Validate input props (fps
, hdr
, torch
, ...) instead of silently crashing ( #2354 )
...
* fix: Fix Blackscreen by deterministically destroying session if `isActive=false`
* Re-open Camera if session died
* Simplify Camera
* Disconnect is optional, block when resetting state
* fix: Log in `configure { ... }`
* fix: Make concurrent configure safe
* fix: Don't resize preview
* fix: Use current `CameraConfiguration`
* Don't start if no outputs are available
* Only mount with preview outputs
* Update CameraSession.kt
* Update PreviewView.kt
* Better logging
* Update CameraSession.kt
* Extract
* fix: Rebuild entire session if `isActive` changed
* isActive safe
* Start session at 1
* Create ActiveCameraDevice.kt
* interrupts
* chore: Freeze `frame` in `useFrameProcessor`
* Revert "chore: Freeze `frame` in `useFrameProcessor`"
This reverts commit dff93d506e29a791d8dea8842b880ab5c892211e.
* chore: Better logging
* fix: Move HDR to `video`/`photo` config
* fix: Fix hdr usage
* fix: Ignore any updates after destroying Camera
* fix: Fix video HDR
* chore: Format code
* fix: Check Camera permission
* Remove unneeded error
* Update CameraSession.kt
* Update CameraPage.tsx
* Delete OutputConfiguration.toDebugString.kt
* Update CameraSession.kt
* fix: Perform sanity checks to make sure props are valid
* format
2024-01-08 12:13:05 +01:00
Marc Rousavy
0d21bc3a57
fix: Fix blackscreen issues and lifecycle when closing Camera ( #2339 )
...
* fix: Fix Blackscreen by deterministically destroying session if `isActive=false`
* Re-open Camera if session died
* Simplify Camera
* Disconnect is optional, block when resetting state
* fix: Log in `configure { ... }`
* fix: Make concurrent configure safe
* fix: Don't resize preview
* fix: Use current `CameraConfiguration`
* Don't start if no outputs are available
* Only mount with preview outputs
* Update CameraSession.kt
* Update PreviewView.kt
* Better logging
* Update CameraSession.kt
* Extract
* fix: Rebuild entire session if `isActive` changed
* isActive safe
* Start session at 1
* Create ActiveCameraDevice.kt
* interrupts
* chore: Freeze `frame` in `useFrameProcessor`
* Revert "chore: Freeze `frame` in `useFrameProcessor`"
This reverts commit dff93d506e29a791d8dea8842b880ab5c892211e.
* chore: Better logging
* fix: Move HDR to `video`/`photo` config
* fix: Fix hdr usage
* fix: Ignore any updates after destroying Camera
* fix: Fix video HDR
* chore: Format code
* fix: Check Camera permission
* Remove unneeded error
* Update CameraSession.kt
* Update CameraPage.tsx
* Delete OutputConfiguration.toDebugString.kt
* Update CameraSession.kt
2024-01-08 11:41:57 +01:00
Marc Rousavy
2cd22ad236
fix: Fix "maxImages (3) has already been acquired" error ( #2352 )
2024-01-05 15:51:39 +01:00
Marc Rousavy
833ffb8478
fix: Fix "The given value for videoStabilizationMode could not be parsed" error ( #2353 )
2024-01-05 15:51:34 +01:00
Marc Rousavy
ef4e9fabf9
fix: Unwrap boxed JNI types directly ( #2337 )
...
* fix: Unwrap boxed JNI types directly
* Update JSIJNIConversion.cpp
2024-01-02 14:13:47 +01:00
Marc Rousavy
3dc75112ae
fix: Fix crash when trying to console.log(frame)
( #2335 )
...
* feat: Override `toJSON` to support `console.log(frame)`
* Update FrameHostObject.mm
* Also use on Android
* Update FrameHostObject.mm
2024-01-02 13:54:07 +01:00
Marc Rousavy
895f3ec889
feat: Make Frame
thread-safe and improve error messages ( #2327 )
...
* fix: Fix multi-Thread access on Java
* fix: Thread-lock access on iOS as well
* whoops add missing header impl
* Update Podfile.lock
* fix: Don't use `CFGetRetainCount`
* fix: Lock access on iOS as well
* C++ format
* More detailed error
* chore: Move getters into `Frame`
* Format c++
* Use enum `orientation` again
* format
* fix: Synchronize `isValid` on Java
* Also log pixelformat
* feat: Use Java enums in C++
* Format C++
2023-12-29 14:09:56 +01:00
David Gruseck
7905f2c057
fix: Fix for inset of SENSOR_INFO_ACTIVE_ARRAY_SIZE for Android < 11 ( #2306 )
...
fix for inset of SENSOR_INFO_ACTIVE_ARRAY_SIZE
Co-authored-by: David Gruseck <david.gruseck@actinate.com>
2023-12-22 10:59:23 +01:00
Marc Rousavy
0d3ecd1131
fix: Fix min/max exposure range on Android ( #2304 )
2023-12-21 12:25:46 +01:00
Marc Rousavy
591cf30a06
perf: Make getCameraPermission
and getMicrophonePermission
synchronous ( #2302 )
2023-12-19 14:22:04 +01:00
Marc Rousavy
977bf56c6d
feat: Concurrent/Cancellable configure
( #2282 )
...
* feat: Cancellable `configure`
* Android
* Update Podfile.lock
* Configure outside of lock
* Update lockfiles
* Use `bundle` for CI
* Update script
* Update Podfile.lock
* fix: Set config at end
* Lint
2023-12-13 16:38:02 +01:00