Dean
e7b295546a
fix: Add null safety checks in ChunkedRecordingManager
...
Replace !! operators with proper null checks to prevent
NullPointerExceptions when encodedFormat or muxerContext are null.
This can happen if createNextMuxer is called before
onOutputFormatChanged sets the format.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-11 10:04:18 -08:00
Dean
d87ed8ced2
fix: Handle null error message in promise rejection
...
Prevents crash when an exception with null message is caught and rejected
through the React Native bridge.
🤖 Generated with [Claude Code](https://claude.com/claude-code )
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com >
2025-12-11 09:48:32 -08:00
35d80b13d6
disable frame processor jni bindings, preserve video pipeline registration
2025-11-24 10:30:33 -08:00
3d09106e45
skip native library loading for frame processors, wip: failing to launch app
2025-11-17 18:58:13 -08:00
b523e1884f
Fix React Native 0.79 Kotlin compilation errors
...
- Fix currentActivity reference in CameraViewModule
- Convert Map to MutableMap in CameraViewManager for RN 0.79 compatibility
2025-11-17 13:38:30 -08:00
5fcc1a4f77
Bumps and fixes for react native version bump
2025-11-17 13:35:59 -08:00
Dean
2c8d503e66
Fix Bitmap.Config null-safety for Android API 35
2025-10-28 13:54:54 -07:00
5b52acda26
Gross hack to make things sort of work
2024-11-10 17:51:15 -07:00
17f675657e
WIP
2024-11-09 19:52:05 -07:00
e9f08ef488
Fix Preview View Aspect Ratio Orientation Issues in android
2024-10-12 16:20:23 -06:00
0329e7976d
Account for orientation in PreviewView
2024-07-29 00:02:24 -06:00
b28a152471
Fix last segment issue
2024-07-24 21:00:27 -06:00
65021b895a
Merge tag 'v3.9.2' into HEAD
...
Release 3.9.2
2024-07-23 13:21:22 -06:00
Keaton Roux
97941a919f
feat: Add UPC-A support ( #2563 )
...
* Add UPC_A support
* Add documentation for UPC-A on iOS
* Doc adjustments
---------
Co-authored-by: Keaton Roux <keaton@codehesion.co.za >
2024-03-18 15:42:57 +01:00
Loewy
489171f6f3
take internal storage filePath for RecordingSession, tested
2024-03-11 23:52:04 -07:00
Marc Rousavy
3f1a7c9e32
fix: Disable precapture sequence by default ( #2629 )
2024-03-04 12:49:03 +01:00
Guoting Lei
e8dd1e0b2e
fix: Use 0x0 as a fallback Size if SENSOR_INFO_PHYSICAL_SIZE is null (e.g. on USB cameras) ( #2608 )
...
2602:There is a NullPointerException here because CameraCharacteristics cannot get the SENSOR_INFO_PHYSICAL_SIZE value of the camera device
2024-02-29 14:53:36 +01:00
Marc Rousavy
369cb4a043
fix: Fix Precapture timed out after 5 seconds error ( #2586 )
...
* fix: Fix precapture timeout error on capture
* fix: Catch timeout errors
* Update PersistentCameraCaptureSession.kt
* Update PersistentCameraCaptureSession.kt
* fix: Remove unsupported AE/AF/AWB triggers
* fix: Only enable flash if it is really AUTO
* Update CameraCaptureSession+precapture.kt
* Update CameraCaptureSession+setRepeatingRequestAndWaitForPrecapture.kt
* Update PersistentCameraCaptureSession.kt
2024-02-20 18:35:55 +01:00
Marc Rousavy
fabf019f66
fix: Fix "Unknown AF/AE/AWB State" error ( #2592 )
2024-02-20 08:54:26 +01:00
Marc Rousavy
7ac6f4d008
fix: Trigger measure and layout manually in PreviewView ( #2588 )
...
* fix: Trigger `measure` and `layout` manually to fix Preview stretching
* fix: Check for `0`/`NaN`
2024-02-19 14:54:13 +01:00
Marc Rousavy
9af6e61dc8
fix: Cancel focus on session close ( #2578 )
2024-02-19 14:11:14 +01:00
Marc Rousavy
2c52fb01e4
chore: Update comments
2024-02-19 13:41:23 +01:00
Marc Rousavy
bda43d3984
fix: Fix nullable props ( #2573 )
...
* fix: Fix nullable props
* Update CameraView.kt
* Pass error to JS
2024-02-16 13:46:13 +01:00
Marc Rousavy
b105de0194
fix: Add extra sanity-checks for CaptureRequest ( #2571 )
...
* fix: Add extra sanity-checks for `CaptureRequest`
* Update CameraDeviceDetails.kt
* Refactor zoom a bit
* fix: Remove unneeded flash
* Move to AE instead of FLASH control
* Revert "Move to AE instead of FLASH control"
This reverts commit 755689411535803d156a4e84f143d0c9d08c858f.
* Set AE Mode to ON for manual flash control
2024-02-16 13:13:56 +01:00
farwayer
57c6431353
fix: Replace deprecated RCTEventEmitter with UIManager ( #2569 )
...
use new events
2024-02-16 11:27:00 +01:00
Marc Rousavy
129e21f14e
fix: Fix Session has been closed; further changes are illegal error by using tryStopRepeating() ( #2568 )
...
* feat: Allow focus calls to be cancelable
* Cancelable
* fix: Use `tryStopRepeating`
2024-02-15 17:34:55 +01:00
Marc Rousavy
4168d8f752
feat: Allow focus calls to be cancelable ( #2567 )
...
* feat: Allow focus calls to be cancelable
* Cancelable
2024-02-15 17:33:19 +01:00
Marc Rousavy
bcd12649e2
fix: Move PreviewView into SurfaceView to make it simpler ( #2566 )
...
* hmmm
* Set initial fixed size
* fix: Repair PreviewView again
* Update PreviewView.kt
2024-02-15 17:07:57 +01:00
Marc Rousavy
83c0184796
fix: Take Orientation into account for PreviewView ( #2565 )
...
* fix: Take Orientation into account for `PreviewView`
* Log
* Take aspect ratio into account
* Reorganize code a bit
* Set LANDSCAPE_LEFT as default
* chore: Format
2024-02-15 13:30:14 +01:00
Marc Rousavy
5df5ca9adf
fix: Fix PreviewView stretching on Android (now finally a real fix) ( #2564 )
...
* fix: Only resolve once SurfaceHolder actually resized
* fix: Fix onMeasure not being called for `PreviewView`
* fix: Auto-trigger layout computation on Surface Change
* fix: Add proper LayoutParams to `PreviewView`
* Format
2024-02-15 13:09:16 +01:00
Marc Rousavy
a7701c8c9c
perf: Allow skipping pre-capture sequence if already focused ( #2561 )
...
This PR speeds up photo capture on Android by skipping pre-capture sequences on modes that are already focused (either AF, AE or AWB)
2024-02-14 17:04:25 +01:00
Marc Rousavy
37398cc909
feat: Flash with AE Pre-capture trigger for Android ( #2558 )
...
### Flash (`flash`)
Adds `flash` functionality with a fully custom pre-capture AE/AF/AWB trigger sequence for Android. 🎉
```ts
camera.current.takePhoto({
flash: 'on' // or 'auto'
})
```
### Better photos (`qualityPrioritization`)
We now also run the AE/AF/AWB precapture sequence on every photo (unless `qualityPrioritization` is `speed`), meaning photos are now less blurry, properly exposed, and properly white-balanced - so in short: **photo quality is now better!**.
The fast path still exists when using `qualityPrioritization: speed`, as that will skip the precapture sequence and metering actions and just grab an Image from the Camera as quickly as possible.
Additionally, `qualityPrioritization` now controls these options:
- [COLOR_CORRECTION_MODE](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#COLOR_CORRECTION_MODE )
- [EDGE_MODE](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#EDGE_MODE )
- [COLOR_CORRECTION_ABERRATION_MODE](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#COLOR_CORRECTION_ABERRATION_MODE )
- [HOT_PIXEL_MODE](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#HOT_PIXEL_MODE )
- [DISTORTION_CORRECTION_MODE](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#DISTORTION_CORRECTION_MODE )
- [NOISE_REDUCTION_MODE](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#NOISE_REDUCTION_MODE )
- [SHADING_MODE](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#SHADING_MODE )
- [TONEMAP_MODE](https://developer.android.com/reference/android/hardware/camera2/CaptureRequest#TONEMAP_MODE )
..by setting them to `_FAST` or `_HIGH_QUALITY`, which was previously left untouched.
This now means:
- `takePhoto({ qualityPrioritization: 'speed' })` got FASTER 🚀
- `takePhoto({ qualityPrioritization: 'quality' })` got BETTER QUALITY 📸
- `takePhoto({ qualityPrioritization: 'balanced' })` is left unchanged ✅
2024-02-14 16:43:30 +01:00
Marc Rousavy
1a0bd8f7c2
feat: Add enableGpuBuffers property ( #2557 )
...
* Revert "fix: Fix VideoPipeline crash on Samsung (Disable `USAGE_GPU_SAMPLED_IMAGE` ImageReader) (#2555 )"
This reverts commit ad33dd91b1 .
* feat: Add `enableGpuBuffers` prop
* Create ImageWriter separately
2024-02-14 12:47:40 +01:00
Marc Rousavy
478688529b
fix: Fix 60 FPS crashing on some Samsungs ( #2556 )
...
* fix: Fix 60 FPS crash on Samsung by checking `CamcorderProfile.maxFps`
* Log FPS clamp
* Update CameraDeviceDetails.kt
* Format code
2024-02-14 12:47:03 +01:00
Marc Rousavy
3699ccde94
chore: Organize code
2024-02-14 11:53:17 +01:00
Marc Rousavy
ad33dd91b1
fix: Fix VideoPipeline crash on Samsung (Disable USAGE_GPU_SAMPLED_IMAGE ImageReader) ( #2555 )
...
* fix: Fix VideoPipeline crash on Samsung (`USAGE_GPU_SAMPLED_IMAGE` not supported)
* Format code
2024-02-14 11:51:24 +01:00
Marc Rousavy
ec7ce36d25
fix: Use acquireLatestImage instead of acquireNextImage for CodeScanner ( #2549 )
2024-02-13 15:15:29 +01:00
Marc Rousavy
b7e24c444e
fix: Check if session is still valid before resetting AF after focus ( #2550 )
...
* fix: Check if session is still valid before resetting AF after focus
* Update PersistentCameraCaptureSession.kt
2024-02-13 15:15:19 +01:00
Marc Rousavy
a2a2e94865
fix: Fix "Invalid pixel format 35" HardwareBuffer crash ( #2547 )
2024-02-13 13:52:21 +01:00
Marc Rousavy
1011c3f039
fix: Fix java.lang.NoSuchMethodError in FrameProcessor initializer ( #2546 )
2024-02-13 13:46:17 +01:00
Marc Rousavy
24f43efa35
feat: Add context to VisionCameraProxy ( #2545 )
2024-02-13 13:46:07 +01:00
19bf300bbe
Support orientation as a parameter to startRecording
2024-02-08 11:17:09 -07:00
Marc Rousavy
fb1d82ad9a
feat: Implement focus() on Android ( #2523 )
...
* feat: Implement `focus()` on Android
* Throw if not supported
* Do focus in example
* Format
* fix: Properly convert layer point to camera coordinates
* Fix
* Set trigger back to IDLE
* Fix rotation maybe?
* Rotated by
* fix: Fix display point calculation
* Try other
* Invoke `capture` callback on same thread
* Center metering rectangle
* Reset AF Trigger to IDLE
* Reset it to it's default AF mode again, i dont even know anymore
* Update CameraPage.tsx
* Format
* Apply options to repeating
* Set
* Use scene mode
* Update CameraPage.tsx
* Update CameraDeviceDetails.kt
* It fucking works
* Update PersistentCameraCaptureSession.kt
* Update PersistentCameraCaptureSession.kt
* Update PersistentCameraCaptureSession.kt
* Create CameraCaptureSession+setRepeatingRequestAndWait.kt
* Oh my god it works
* Also focus AE
* Cancel reset request
* Rename to AF
* Format
* Update PersistentCameraCaptureSession.kt
2024-02-08 15:16:58 +01:00
Marc Rousavy
3192f5e939
fix: Fix PreviewView being stretched ( #2519 )
...
* fix: Fix Preview stretching
* feat: Keep screen on on Android
* Add test code for race condition
* fix: Fix preview stretching by awaiting SurfaceHolder resizing (`setFixedSize`) before configuring Camera
* Format
* Update SurfaceHolder+resize.kt
* Update CameraPage.tsx
2024-02-07 11:50:33 +01:00
Marc Rousavy
5acc64e031
feat: Create persistent CaptureSession to avoid any blackscreen issues or errors ( #2494 )
...
* feat: Create custom `CaptureSession` wrapper
* Create `PersistentCameraCaptureSession`
* Update VideoStabilizationMode.kt
* Create RepeatingRequest.kt
* Update CaptureSession.kt
* Delete CaptureSession.kt
* Update PersistentCameraCaptureSession.kt
* Update PersistentCameraCaptureSession.kt
* fix: Add `isRepeating`
* Update CameraSession.kt
* Make `SurfaceOutput` not `Closable` anymore
* Update PersistentCameraCaptureSession.kt
* Stub out the rest
* Format
* Set `isRunning` properly
* Close previous outputs
* onError callback
* Format
* Started/Stopped
* Update CameraPage.tsx
* Add `isValid`
* Log `isActive`
* Add `tryAbortCaptures`
* Configure()
* Try?
* Add `didDestroyFromOutside`
* Disable FP for testing
* fix: Call `super.onAttachedToWindow` first
* Hm
* Update CameraSession.kt
* Update PersistentCameraCaptureSession.kt
* Try catch `didDestroyFromOutside`
* Update PersistentCameraCaptureSession.kt
* Session can only be active with a preview
* Update PersistentCameraCaptureSession.kt
* Throw `no-outputs` if needed
* Update logs
* fix: Check for CAMERA permission
* fix: Close session when opening a new device
* perf: Make everything `by lazy` in CameraDeviceDetails
* Update CameraDeviceDetails.kt
* Update PersistentCameraCaptureSession.kt
* Update PersistentCameraCaptureSession.kt
* Move
* Update Podfile.lock
* Implement `capture()`
* Format
* fix: Fix orientation not being applied
* fix: Fix `isMirrored`
* fix: Fix getting size
* fix: Close `Surface` in `VideoPipeline`
* Format
* fix: Fix `VideoPipeline` not properly destroying itself
* Use FP again
* Update CameraConfiguration.kt
* Rename
* Clean up
* Format
* Update CameraConfiguration.kt
* fix: Don't stop repeating request when capturing
2024-02-06 14:19:25 +01:00
Marc Rousavy
d8c95c901f
feat: Synchronize Frame properly ( #2501 )
...
* feat: Synchronize `Frame` properly
* Update CameraError.ts
* Image is not valid if `refCount` < 0
2024-02-05 12:34:32 +01:00
Marc Rousavy
e95264f782
fix: Fix minFocusDistance being NaN on some emulators
2024-02-02 09:54:17 +01:00
413be519d5
Add onVideoChunkReady callback
2024-02-01 19:42:57 -07:00
Marc Rousavy
1a8e518180
chore: Remove unused frameProcessor variable
2024-02-01 11:55:31 +01:00
fb42545890
some camera orientation stuff, maybe toss?
2024-01-31 16:50:36 -07:00