Marc Rousavy
ea568855a7
chore: Fix GitHub Action CocoaPods cache misses ( #2491 )
...
* chore: Fix GitHub Action CocoaPods cache misses
* Only use Pods directory
2024-01-31 20:48:05 +01:00
dependabot[bot]
c2ea3820af
chore(deps): bump actions/cache from 3 to 4 ( #2479 )
...
Bumps [actions/cache](https://github.com/actions/cache ) from 3 to 4.
- [Release notes](https://github.com/actions/cache/releases )
- [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md )
- [Commits](https://github.com/actions/cache/compare/v3...v4 )
---
updated-dependencies:
- dependency-name: actions/cache
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-31 17:26:21 +01:00
dependabot[bot]
d8aefa596c
chore(deps): bump actions/setup-java from 2 to 4 ( #2481 )
...
Bumps [actions/setup-java](https://github.com/actions/setup-java ) from 2 to 4.
- [Release notes](https://github.com/actions/setup-java/releases )
- [Commits](https://github.com/actions/setup-java/compare/v2...v4 )
---
updated-dependencies:
- dependency-name: actions/setup-java
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-31 17:26:12 +01:00
dependabot[bot]
09de2f17cd
chore(deps): bump actions/upload-artifact from 3 to 4 ( #2480 )
...
Bumps [actions/upload-artifact](https://github.com/actions/upload-artifact ) from 3 to 4.
- [Release notes](https://github.com/actions/upload-artifact/releases )
- [Commits](https://github.com/actions/upload-artifact/compare/v3...v4 )
---
updated-dependencies:
- dependency-name: actions/upload-artifact
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-01-31 17:26:03 +01:00
Marc Rousavy
61f6b47cd8
chore: Separate download and run step in ktlint CI ( #2448 )
...
* Separate download and run step in ktlint
* fix: Upgrade ktlint to 1.1.1
2024-01-29 11:23:42 +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
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
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
Mateusz Mędrek
bdd81cf2fb
chore: Improve native Frame Processor Plugin documentation ( #1877 )
2023-10-03 11:36:55 +02:00
Marc Rousavy
9dd91a4001
ci: Upgrade setup-java@v1 to setup-java@v2 ( #1829 )
2023-09-23 15:38:49 +02:00
Marc Rousavy
db5120e163
ci: Remove Gradle Lint ( #1830 )
2023-09-21 19:16:13 +02:00
Marc Rousavy
86e1c5ff02
ci: Upgrade buildcache@v1 to buildcache@v2
2023-09-21 19:13:18 +02:00
Marc Rousavy
96fba0b925
ci: Upgrade cache@v2 to cache@v3
2023-09-21 19:10:22 +02:00
Marc Rousavy
cb4d64c671
ci: Also upload Gradle Lint report to the CI
2023-09-21 19:09:41 +02:00
Marc Rousavy
115140d01c
ci: Run KTLint ( #1825 )
...
* ci: Run ktlint
* Update validate-android.yml
* Update validate-android.yml
* Update validate-android.yml
* Use correct path
* test: Use wrong Kotlin formatting
* Use checkout@v4
* Revert "test: Use wrong Kotlin formatting"
This reverts commit 282c23be9c40506f20f99f56f7166ea2fc8d45aa.
2023-09-21 19:06:33 +02:00
Marc Rousavy
a417be6292
ci: Upgrade checkout@v2 to checkout@v4 ( #1826 )
2023-09-21 19:02:10 +02:00
Marc Rousavy
ca7c8ab22d
chore: Use new Android Lint CI ( #1761 )
...
* chore: Use new Android Lint CI
* Update validate-android.yml
2023-09-06 11:01:36 +02:00
Marc Rousavy
f3fd3f15e3
chore: Clean up Android codebase a bit ( #1748 )
...
<!--
❤️ 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
-->
2023-09-02 01:04:36 +02:00
Marc Rousavy
74b5898af7
fix: Use pod install
instead of bundle exec pod ...
2023-09-01 20:21:40 +02:00
Marc Rousavy
e44d0e7aed
chore: Fix iOS build CI
2023-09-01 20:09:33 +02:00
Marc Rousavy
036856aed5
chore: Move everything into package/
( #1745 )
...
* Move everything into package
* Remove .DS_Store
* Move scripts and eslintrc to package
* Create CODE_OF_CONDUCT.md
* fix some links
* Update all links (I think)
* Update generated docs
* Update notice-yarn-changes.yml
* Update validate-android.yml
* Update validate-cpp.yml
* Delete notice-yarn-changes.yml
* Update validate-cpp.yml
* Update validate-cpp.yml
* Update validate-js.yml
* Update validate-cpp.yml
* Update validate-cpp.yml
* wrong c++ style
* Revert "wrong c++ style"
This reverts commit 55a3575589c6f13f8b05134d83384f55e0601ab2.
2023-09-01 18:15:28 +02:00
Marc Rousavy
03b57a7d27
feat: Use clang-format to keep the C++ codebase clean ( #1741 )
...
* Use clang-format
* Create .clang-format
* Update .clang-format
* Update .clang-format
* Update .clang-format
* Only search in cpp dirs
* Update clang-format.sh
* Update .clang-format
* Update .clang-format
* Update .clang-format
* Format C++ code!
* Use version 16
* Update clang-format.sh
* Remove Shaders.ts
* fix: Lint Swift
2023-09-01 12:58:32 +02:00
Marc Rousavy
0a28454579
chore: Remove Skia ❌ 🎨 ( #1740 )
...
* Revert "feat: Skia for Android (#1731 )"
This reverts commit a7c137da07
.
* Remove some skia
* Remove all the Skia stuff.
* Update useFrameProcessor.ts
* Update lockfiles
* fix: Use native Preview again
* Use `OpenGLTexture&` again
* Remove `PreviewOutput` (we use `SurfaceView` in parallel)
* fix: Log photo widths
* fix: Fix cpplint
2023-09-01 12:20:17 +02:00
Marc Rousavy
37a3548a81
feat: Full Android rewrite (CameraX -> Camera2) ( #1674 )
...
* Nuke CameraX
* fix: Run View Finder on UI Thread
* Open Camera, set up Threads
* fix init
* Mirror if needed
* Try PreviewView
* Use max resolution
* Add `hardwareLevel` property
* Check if output type is supported
* Replace `frameRateRanges` with `minFps` and `maxFps`
* Remove `isHighestPhotoQualitySupported`
* Remove `colorSpace`
The native platforms will use the best / most accurate colorSpace by default anyways.
* HDR
* Check from format
* fix
* Remove `supportsParallelVideoProcessing`
* Correctly return video/photo sizes on Android now. Finally
* Log all Device props
* Log if optimized usecase is used
* Cleanup
* Configure Camera Input only once
* Revert "Configure Camera Input only once"
This reverts commit 0fd6c03f54c7566cb5592053720c4a8743aba92e.
* Extract Camera configuration
* Try to reconfigure all
* Hook based
* Properly set up `CameraSession`
* Delete unused
* fix: Fix recreate when outputs change
* Update NativePreviewView.kt
* Use callback for closing
* Catch CameraAccessException
* Finally got it stable
* Remove isMirrored
* Implement `takePhoto()`
* Add ExifInterface library
* Run findViewById on UI Thread
* Add Photo Output Surface to takePhoto
* Fix Video Stabilization Modes
* Optimize Imports
* More logs
* Update CameraSession.kt
* Close Image
* Use separate Executor in CameraQueue
* Delete hooks
* Use same Thread again
* If opened, call error
* Update CameraSession.kt
* Log HW level
* fix: Don't enable Stream Use Case if it's not 100% supported
* Move some stuff
* Cleanup PhotoOutputSynchronizer
* Try just open in suspend fun
* Some synchronization fixes
* fix logs
* Update CameraDevice+createCaptureSession.kt
* Update CameraDevice+createCaptureSession.kt
* fixes
* fix: Use Snapshot Template for speed capture prio
* Use PREVIEW template for repeating request
* Use `TEMPLATE_RECORD` if video use-case is attached
* Use `isRunning` flag
* Recreate session everytime on active/inactive
* Lazily get values in capture session
* Stability
* Rebuild session if outputs change
* Set `didOutputsChange` back to false
* Capture first in lock
* Try
* kinda fix it? idk
* fix: Keep Outputs
* Refactor into single method
* Update CameraView.kt
* Use Enums for type safety
* Implement Orientation (I think)
* Move RefCount management to Java (Frame)
* Don't crash when dropping a Frame
* Prefer Devices with higher max resolution
* Prefer multi-cams
* Use FastImage for Media Page
* Return orientation in takePhoto()
* Load orientation from EXIF Data
* Add `isMirrored` props and documentation for PhotoFile
* fix: Return `not-determined` on Android
* Update CameraViewModule.kt
* chore: Upgrade packages
* fix: Fix Metro Config
* Cleanup config
* Properly mirror Images on save
* Prepare MediaRecorder
* Start/Stop MediaRecorder
* Remove `takeSnapshot()`
It no longer works on Android and never worked on iOS. Users could use useFrameProcessor to take a Snapshot
* Use `MediaCodec`
* Move to `VideoRecording` class
* Cleanup Snapshot
* Create `SkiaPreviewView` hybrid class
* Create OpenGL context
* Create `SkiaPreviewView`
* Fix texture creation missing context
* Draw red frame
* Somehow get it working
* Add Skia CMake setup
* Start looping
* Init OpenGL
* Refactor into `SkiaRenderer`
* Cleanup PreviewSize
* Set up
* Only re-render UI if there is a new Frame
* Preview
* Fix init
* Try rendering Preview
* Update SkiaPreviewView.kt
* Log version
* Try using Skia (fail)
* Drawwwww!!!!!!!!!! 🎉
* Use Preview Size
* Clear first
* Refactor into SkiaRenderer
* Add `previewType: "none"` on iOS
* Simplify a lot
* Draw Camera? For some reason? I have no idea anymore
* Fix OpenGL errors
* Got it kinda working again?
* Actually draw Frame woah
* Clean up code
* Cleanup
* Update on main
* Synchronize render calls
* holy shit
* Update SkiaRenderer.cpp
* Update SkiaRenderer.cpp
* Refactor
* Update SkiaRenderer.cpp
* Check for `NO_INPUT_TEXTURE`^
* Post & Wait
* Set input size
* Add Video back again
* Allow session without preview
* Convert JPEG to byte[]
* feat: Use `ImageReader` and use YUV Image Buffers in Skia Context (#1689 )
* Try to pass YUV Buffers as Pixmaps
* Create pixmap!
* Clean up
* Render to preview
* Only render if we have an output surface
* Update SkiaRenderer.cpp
* Fix Y+U+V sampling code
* Cleanup
* Fix Semaphore 0
* Use 4:2:0 YUV again idk
* Update SkiaRenderer.h
* Set minSdk to 26
* Set surface
* Revert "Set minSdk to 26"
This reverts commit c4085b7c16c628532e5c2d68cf7ed11c751d0b48.
* Set previewType
* feat: Video Recording with Camera2 (#1691 )
* Rename
* Update CameraSession.kt
* Use `SurfaceHolder` instead of `SurfaceView` for output
* Update CameraOutputs.kt
* Update CameraSession.kt
* fix: Fix crash when Preview is null
* Check if snapshot capture is supported
* Update RecordingSession.kt
* S
* Use `MediaRecorder`
* Make audio optional
* Add Torch
* Output duration
* Update RecordingSession.kt
* Start RecordingSession
* logs
* More log
* Base for preparing pass-through Recording
* Use `ImageWriter` to append Images to the Recording Surface
* Stream PRIVATE GPU_SAMPLED_IMAGE Images
* Add flags
* Close session on stop
* Allow customizing `videoCodec` and `fileType`
* Enable Torch
* Fix Torch Mode
* Fix comparing outputs with hashCode
* Update CameraSession.kt
* Correctly pass along Frame Processor
* fix: Use AUDIO_BIT_RATE of 16 * 44,1Khz
* Use CAMCORDER instead of MIC microphone
* Use 1 channel
* fix: Use `Orientation`
* Add `native` PixelFormat
* Update iOS to latest Skia integration
* feat: Add `pixelFormat` property to Camera
* Catch error in configureSession
* Fix JPEG format
* Clean up best match finder
* Update CameraDeviceDetails.kt
* Clamp sizes by maximum CamcorderProfile size
* Remove `getAvailableVideoCodecs`
* chore: release 3.0.0-rc.5
* Use maximum video size of RECORD as default
* Update CameraDeviceDetails.kt
* Add a todo
* Add JSON device to issue report
* Prefer `full` devices and flash
* Lock to 30 FPS on Samsung
* Implement Zoom
* Refactor
* Format -> PixelFormat
* fix: Feat `pixelFormat` -> `pixelFormats`
* Update TROUBLESHOOTING.mdx
* Format
* fix: Implement `zoom` for Photo Capture
* fix: Don't run if `isActive` is `false`
* fix: Call `examplePlugin(frame)`
* fix: Fix Flash
* fix: Use `react-native-worklets-core`!
* fix: Fix import
2023-08-21 12:50:14 +02:00
Marc Rousavy
61fd4e0474
Merge branch 'main' into v3
2023-07-31 18:27:11 +02:00
Marc Rousavy
1e57e5b95c
ci: Add CI tests to build Android without Skia or FP
2023-07-31 17:38:58 +02:00
Marc Rousavy
375e894038
feat: Complete iOS Codebase rewrite ( #1647 )
...
* Make Frame Processors an extra subspec
* Update VisionCamera.podspec
* Make optional
* Make VisionCamera compile without Skia
* Fix
* Add skia again
* Update VisionCamera.podspec
* Make VisionCamera build without Frame Processors
* Rename error to `system/frame-processors-unavailable`
* Fix Frame Processor returning early
* Remove `preset`, FP partial rewrite
* Only warn on frame drop
* Fix wrong queue
* fix: Run on CameraQueue again
* Update CameraView.swift
* fix: Activate audio session asynchronously on audio queue
* Update CameraView+RecordVideo.swift
* Update PreviewView.h
* Cleanups
* Cleanup
* fix cast
* feat: Add LiDAR Depth Camera support
* Upgrade Ruby
* Add vector icons type
* Update Gemfile.lock
* fix: Stop queues on deinit
* Also load `builtInTrueDepthCamera`
* Update CameraViewManager.swift
* Update SkImageHelpers.mm
* Extract FrameProcessorCallback to FrameProcessor
Holds more context now :)
* Rename to .m
* fix: Add `RCTLog` import
* Create SkiaFrameProcessor
* Update CameraBridge.h
* Call Frame Processor
* Fix defines
* fix: Allow deleting callback funcs
* fix Skia build
* batch
* Just call `setSkiaFrameProcessor`
* Rewrite in Swift
* Pass `SkiaRenderer`
* Fix Import
* Move `PreviewView` to Swift
* Fix Layer
* Set Skia Canvas to Frame Host Object
* Make `DrawableFrameHostObject` subclass
* Fix TS types
* Use same MTLDevice and apply scale
* Make getter
* Extract `setTorch` and `Preview`
* fix: Fix nil metal device
* Don't wait for session stop in deinit
* Use main pixel ratio
* Use unique_ptr for Render Contexts
* fix: Fix SkiaPreviewDisplayLink broken after deinit
* inline `getTextureCache`
* Update CameraPage.tsx
* chore: Format iOS
* perf: Allow MTLLayer to be optimized for only frame buffers
* Add RN Video types
* fix: Fix Frame Processors if guard
* Find nodeModules recursively
* Create `Frame.isDrawable`
* Add `cocoapods-check` dependency
2023-07-20 15:30:04 +02:00
Marc Rousavy
ba20e76d38
remove build docs
2023-03-06 11:36:00 +01:00
Marc Rousavy
0c3cd66016
fix: Improve C++ safety by attaching Cache Invalidator to jsi::Runtime
's lifecycle ( #1488 )
...
* fix: fix C++ lint
* fix: attach `InvalidateCacheOnDestroy` to `jsi::Runtime`
2023-02-21 15:44:43 +01:00
Marc Rousavy
f0ea18115e
fix: Fix CI for V3 ( #1475 )
...
* fix: Fix CI for "Build Android"
* update versions
* Update Gemfile.lock
* format swift
* fix: Fix swift lint
* Update .swiftlint.yml
* Use C++17 for lint
* fix: Fix C++ lints
2023-02-15 17:24:33 +01:00
Marc Rousavy
a0590dccb5
feat: Replace Reanimated with RN Worklets ( #1468 )
...
* Setup RN Worklets
* Use RN Worklets on iOS
* Fix console
* Add `installFrameProcessorBindings()` function
* Add `FrameProcessorPlugins` proxy (BREAKING CHANGE)
* Clean up docs
* Update FRAME_PROCESSORS.mdx
* Use RN Worklets 0.2.5
* feat: Android build setup
* Rewrite Android Frame Processor Part
* Update CMakeLists.txt
* fix: Add react-native-worklets Gradle dependency
* Update Podfile.lock
* fix build
* gradle:7.4.1
* Init JSI Bindings in method on Android
* Fix Folly flags
* fix: Init `FrameProcessorRuntimeManager` later
* fix: Wrap in `<GestureHandlerRootView>`
* Refactor plugins
* fix: Remove enableFrameProcessors
* Install RN Worklets from current GH master
* Update babel.config.js
* Update CameraViewModule.kt
* Update ImageProxyUtils.java
* feat: Upgrade to Reanimated v3
* fix: Fix crash on Worklet init
* Update RN Worklets to latest master
* fix: Simplify FP Plugins Proxy
2023-02-13 15:22:45 +01:00
Marc Rousavy
11d1e7178d
chore: Upgrade to RN 71 ( #1465 )
...
* chore: Upgrade Example to RN 0.71
* chore: Upgrade all libs
* fix: Fix CameraRoll installation
* Update Gradle Tools
* fix: Fix buildscripts
* Clean out build.gradle
* fix: Fix Kotlin setup
* fix: Move kotlin-android dependency to lib
* Move `_setGlobalConsole`
* Update gradle-wrapper.properties
* Rebuild lockfiles
* chore: Update build:gradle
* Update StatusBarBlurBackground.tsx
* Use Java 11 in Workflows
* Update MediaPage.tsx
* Add `google` repository to build.gradle
* Double Java Heap size
* Increase heap size
* Alternative args
* Update build.gradle
2023-02-09 11:52:41 +01:00
Marc Rousavy
0904767cf2
fix: Log Stacktrace on Frame Processor Error ( #731 )
...
* fix: Log JS Stack on Error
* Android
* Format Stacktrace better
* Update FrameProcessorUtils.mm
* Allow unapproved C++11 headers
* Use `.c_str()`
2022-01-10 16:37:47 +01:00
Marc Rousavy
3d51cca02c
chore: Also run validate-cpp for Android C++ files
2021-09-07 14:17:35 +02:00
Marc Rousavy
a2293e858d
fix: Fix TypeScript relative imports ( #358 )
...
* fix: Fix TypeScript relative imports
* Decouple `example` from tsconfig
* fix ESLint config
* add lint-ci script
* move example running to workflow
* test ts
* test eslint
* test ts
* fix ESLint formatter
* Revert "fix ESLint formatter"
This reverts commit 21aca0dcdb54d4ce98b33d2b4f1decc18bc82e85.
* Revert "test ts"
This reverts commit becc346ad3d097b7d3570ebc8b5bf80390aadf87.
* Revert "test eslint"
This reverts commit 9c9f0b81bf3aa57188f550a34b2a8151e364f3b0.
* Revert "test ts"
This reverts commit 3cbe7200608910087b43e0d9cdae0917b0b4215e.
2021-08-16 10:45:41 +02:00
Bartosz Kaszubowski
0569c065bc
chore: fix the permission issue for dependabot ( #286 )
...
* attempt to fix the permission issue for dependabot
* move permissions to the job scope
2021-07-26 09:42:51 +02:00
Marc Rousavy
b2f3c08a07
fix: Distribute Android code as source ( #234 )
...
* Build Android as source
* more reliably find `enableHermes`
2021-07-08 10:52:14 +02:00
Marc Rousavy
a591cea809
chore: Also run CI on android-npm changes
2021-06-29 09:22:05 +02:00
Marc Rousavy
87e6bb710e
feat: Frame Processors for Android ( #196 )
...
* Create android gradle build setup
* Fix `prefab` config
* Add `pickFirst **/*.so` to example build.gradle
* fix REA path
* cache gradle builds
* Update validate-android.yml
* Create Native Proxy
* Copy REA header
* implement ctor
* Rename CameraViewModule -> FrameProcessorRuntimeManager
* init FrameProcessorRuntimeManager
* fix name
* Update FrameProcessorRuntimeManager.h
* format
* Create AndroidErrorHandler.h
* Initialize runtime and install JSI funcs
* Update FrameProcessorRuntimeManager.cpp
* Update CameraViewModule.kt
* Make CameraView hybrid C++ class to find view & set frame processor
* Update FrameProcessorRuntimeManager.cpp
* pass function by rvalue
* pass by const &&
* extract hermes and JSC REA
* pass `FOR_HERMES`
* correctly prepare JSC and Hermes
* Update CMakeLists.txt
* add missing hermes include
* clean up imports
* Create JImageProxy.h
* pass ImageProxy to JNI as `jobject`
* try use `JImageProxy` C++ wrapper type
* Use `local_ref<JImageProxy>`
* Create `JImageProxyHostObject` for JSI interop
* debug call to frame processor
* Unset frame processor
* Fix CameraView native part not being registered
* close image
* use `jobject` instead of `JImageProxy` for now :(
* fix hermes build error
* Set enable FP callback
* fix JNI call
* Update CameraView.cpp
* Get Format
* Create plugin abstract
* Make `FrameProcessorPlugin` a hybrid object
* Register plugin CXX
* Call `registerPlugin`
* Catch
* remove JSI
* Create sample QR code plugin
* register plugins
* Fix missing JNI binding
* Add `mHybridData`
* prefix name with two underscores (`__`)
* Update CameraPage.tsx
* wrap `ImageProxy` in host object
* Use `jobject` for HO box
* Update JImageProxy.h
* reinterpret jobject
* Try using `JImageProxy` instead of `jobject`
* Update JImageProxy.h
* get bytes per row and plane count
* Update CameraView.cpp
* Return base
* add some docs and JNI JSI conversion
* indent
* Convert JSI value to JNI jobject
* using namespace facebook
* Try using class
* Use plain old Object[]
* Try convert JNI -> JSI
* fix decl
* fix bool init
* Correctly link folly
* Update CMakeLists.txt
* Convert Map to Object
* Use folly for Map and Array
* Return `alias_ref<jobject>` instead of raw `jobject`
* fix JNI <-> JSI conversion
* Update JSIJNIConversion.cpp
* Log parameters
* fix params index offset
* add more test cases
* Update FRAME_PROCESSORS_CREATE_OVERVIEW.mdx
* fix types
* Rename to example plugin
* remove support for hashmap
* Try use HashMap iterable fbjni binding
* try using JReadableArray/JReadableMap
* Fix list return values
* Update JSIJNIConversion.cpp
* Update JSIJNIConversion.cpp
* (iOS) Rename ObjC QR Code Plugin to Example Plugin
* Rename Swift plugin QR -> Example
* Update ExamplePluginSwift.swift
* Fix Map/Dictionary logging format
* Update ExampleFrameProcessorPlugin.m
* Reconfigure session if frame processor changed
* Handle use-cases via `maxUseCasesCount`
* Don't crash app on `configureSession` error
* Document "use-cases"
* Update DEVICES.mdx
* fix merge
* Make `const &`
* iOS: Automatically enable `video` if a `frameProcessor` is set
* Update CameraView.cpp
* fix docs
* Automatically fallback to snapshot capture if `supportsParallelVideoProcessing` is false.
* Fix lookup
* Update CameraView.kt
* Implement `frameProcessorFps`
* Finalize Frame Processor Plugin Hybrid
* Update CameraViewModule.kt
* Support `flash` on `takeSnapshot()`
* Update docs
* Add docs
* Update CameraPage.tsx
* Attribute NonNull
* remove unused imports
* Add Android docs for Frame Processors
* Make JNI HashMap <-> JSI Object conversion faster
directly access `toHashMap` instead of going through java
* add todo
* Always run `prepareJSC` and `prepareHermes`
* switch jsc and hermes
* Specify ndkVersion `21.4.7075529`
* Update gradle.properties
* Update gradle.properties
* Create .aar
* Correctly prepare android package
* Update package.json
* Update package.json
* remove `prefab` build feature
* split
* Add docs for registering the FP plugin
* Add step for dep
* Update CaptureButton.tsx
* Move to `reanimated-headers/`
* Exclude reanimated-headers from cpplint
* disable `build/include_order` rule
* cpplint fixes
* perf: Make `JSIJNIConversion` a `namespace` instead of `class`
* Ignore runtime/references for `convert` funcs
* Build Android .aar in CI
* Run android build script only on `prepack`
* Update package.json
* Update package.json
* Update build-android-npm-package.sh
* Move to `yarn build`
* Also install node_modules in example step
* Update validate-android.yml
* sort imports
* fix torch
* Run ImageAnalysis on `FrameProcessorThread`
* Update Errors.kt
* Add clean android script
* Upgrade reanimated to 2.3.0-alpha.1
* Revert "Upgrade reanimated to 2.3.0-alpha.1"
This reverts commit c1d3bed5e03728d0b5e335a359524ff4f56f5035.
* ⚠️ TEMP FIX: hotfix reanimated build.gradle
* Update CameraView+TakeSnapshot.kt
* ⚠️ TEMP FIX: Disable ktlint action for now
* Update clean.sh
* Set max heap size to 4g
* rebuild lockfiles
* Update Podfile.lock
* rename
* Build lib .aar before example/
2021-06-27 12:37:54 +02:00
Marc Rousavy
8aec647acd
fix: Fix CI ( #165 )
...
* fix conditional
* Build with cache again
* Update build-ios.yml
* Update build-ios.yml
* Build for iPhone 11 Pro
* Continue on buildcache restore error
* remove emoji
* Remove `measureElapsedTime<T>`
* Upgrade dependencies
* Build with `-quiet`
* Use `xcpretty`
* set -o
2021-06-04 12:32:20 +02:00
Marc Rousavy
aaad8fc94a
fix: GH action iOS build
2021-06-03 14:31:04 +02:00
Marc Rousavy
160ec77940
devops: Notice yarn.lock changes ( #145 )
...
* test
* Update notice-yarn-changes.yml
* upgrade prettier
2021-05-20 10:31:25 +02:00
Marc Rousavy
b6a67d5ced
feature: Frame Processors (iOS) ( #2 )
...
* Clean up Frame Processor
* Create FrameProcessorHolder
* Create FrameProcessorDelegate in ObjC++
* Move frame processor to FrameProcessorDelegate
* Decorate runtime, check for null
* Update FrameProcessorDelegate.mm
* Cleanup FrameProcessorBindings.mm
* Fix RuntimeDecorator.h import
* Update FrameProcessorDelegate.mm
* "React" -> "React Helper" to avoid confusion
* Rename folders again
* Fix podspec flattening a lot of headers, causing REA nameclash
* Fix header imports to avoid REA naming collision
* Lazily initialize jsi::Runtime on DispatchQueue
* Install frame processor bindings from Swift
* First try to call jsi::Function (frame processor) 👀
* Call viewForReactTag on RCT main thread
* Fix bridge accessing
* Add more logs
* Update CameraViewManager.swift
* Add more TODOs
* Re-indent .cpp files
* Fix RCTTurboModule import podspec
* Remove unnecessary include check for swift umbrella header
* Merge branch 'main' into frame-processors
* Docs: use static width for images (283)
* Create validate-cpp.yml
* Update a lot of packages to latest
* Set SWIFT_VERSION to 5.2 in podspec
* Create clean.sh
* Delete unused C++ files
* podspec: Remove CLANG_CXX_LANGUAGE_STANDARD and OTHER_CFLAGS
* Update pod lockfiles
* Regenerate lockfiles
* Remove IOSLogger
* Use NSLog
* Create FrameProcessorManager (inherits from REA RuntimeManager)
* Create reanimated::RuntimeManager shared_ptr
* Re-integrate pods
* Add react-native-reanimated >=2 peerDependency
* Add metro-config
* blacklist -> exclusionList
* Try to call worklet
* Fix jsi::Value* initializer
* Call ShareableValue::adapt (makeShareable) with React/JS Runtime
* Add null-checks
* Lift runtime manager creation out of delegate, into bindings
* Remove debug statement
* Make RuntimeManager unique_ptr
* Set _FRAME_PROCESSOR
* Extract convertJSIFunctionToFrameProcessorCallback
* Print frame
* Merge branch 'main' into frame-processors
* Reformat Swift code
* Install reanimated from npm again
* Re-integrate Pods
* Dependabot: Also scan example/ and docs/
* Update validate-cpp.yml
* Create FrameProcessorUtils
* Create Frame.h
* Abstract HostObject creation away
* Fix types
* Fix frame processor call
* Add todo
* Update lockfiles
* Add C++ contributing instructions
* Update CONTRIBUTING.md
* Add android/src/main/cpp to cpplint
* Update cpplint.sh
* Fix a few cpplint errors
* Fix globals
* Fix a few more cpplint errors
* Update App.tsx
* Update AndroidLogger.cpp
* Format
* Fix cpplint script (check-cpp)
* Try to simplify frame processor
* y
* Update FrameProcessorUtils.mm
* Update FrameProcessorBindings.mm
* Update CameraView.swift
* Update CameraViewManager.m
* Restructure everything
* fix
* Fix `@objc` export (make public)
* Refactor installFrameProcessorBindings into FrameProcessorRuntimeManager
* Add swift RCTBridge.runOnJS helper
* Fix run(onJS)
* Add pragma once
* Add `&self` to lambda
* Update FrameProcessorRuntimeManager.mm
* reorder imports
* Fix imports
* forward declare
* Rename extension
* Destroy buffer after execution
* Add FrameProcessorPluginRegistry base
* Merge branch 'main' into frame-processors
* Add frameProcessor to types
* Update Camera.tsx
* Fix rebase merge
* Remove movieOutput
* Use `useFrameProcessor`
* Fix bad merge
* Add additional ESLint rules
* Update lockfiles
* Update CameraViewManager.m
* Add support for V8 runtime
* Add frame processor plugins API
* Print plugin invoke
* Fix React Utils in podspec
* Fix runOnJS swift name
* Remove invalid redecl of `captureSession`
* Use REA 2.1.0 which includes all my big PRs 🎉
* Update validate-cpp.yml
* Update Podfile.lock
* Remove Flipper
* Fix dereferencing
* Capture `self` by value. Fucking hell, what a dumb mistake.
* Override a few HostObject functions
* Expose isReady, width, height, bytesPerRow and planesCount
* use hook again
* Expose property names
* FrameProcessor -> Frame
* Update CameraView+RecordVideo.swift
* Add Swift support for Frame Processors Plugins
* Add macros for plugin installation
* Add ObjC frame processor plugin
* Correctly install frame processor plugins
* Don't require custom name for macro
* Check if plugin already exists
* Implement QR Code Frame Processor Plugin in Swift
* Adjust ObjC style frame processor macro
* optimize
* Add `frameProcessorFrameDropRate`
* Fix types
* Only log once
* Log if it executes slowly
* Implement `frameProcessorFps`
* Implement manual encoded video recordings
* Use recommended video settings
* Add fileType types
* Ignore if input is not ready for media data
* Add completion handler
* Add audio buffer sampling
* Init only for video frame
* use AVAssetWriterInputPixelBufferAdaptor
* Remove AVAssetWriterInputPixelBufferAdaptor
* Rotate VideoWriter
* Always assume portrait orientation
* Update RecordingSession.swift
* Use a separate Queue for Audio
* Format Swift
* Update CameraView+RecordVideo.swift
* Use `videoQueue` instead of `cameraQueue`
* Move example plugins to example app
* Fix hardcoded name in plugin macro
* QRFrame... -> QRCodeFrame...
* Update FrameProcessorPlugin.h
* Add example frame processors to JS base
* Update QRCodeFrameProcessorPluginSwift.m
* Add docs to create FP Plugins
* Update FRAME_PROCESSORS_CREATE.mdx
* Update FRAME_PROCESSORS_CREATE.mdx
* Use `AVAssetWriterInputPixelBufferAdaptor` for efficient pixel buffer recycling
* Add customizable `pixelFormat`
* Use native format if available
* Update project.pbxproj
* Set video width and height as source-pixel-buffer attributes
* Catch
* Update App.tsx
* Don't explicitly set video dimensions, let CVPixelBufferPool handle it
* Add a few logs
* Cleanup
* Update CameraView+RecordVideo.swift
* Eagerly initialize asset writer to fix stutter at first frame
* Use `cameraQueue` DispatchQueue to not block CaptureDataOutputDelegate
* Fix duration calculation
* cleanup
* Cleanup
* Swiftformat
* Return available video codecs
* Only show frame drop notification for video output
* Remove photo and video codec functionality
It was too much complexity and probably never used anyways.
* Revert all android related changes for now
* Cleanup
* Remove unused header
* Update AVAssetWriter.Status+descriptor.swift
* Only call Frame Processor for Video Frames
* Fix `if`
* Add support for Frame Processor plugin parameters/arguments
* Fix arg support
* Move to JSIUtils.mm
* Update JSIUtils.h
* Update FRAME_PROCESSORS_CREATE.mdx
* Update FRAME_PROCESSORS_CREATE.mdx
* Upgrade packages for docs/
* fix docs
* Rename
* highlight lines
* docs
* community plugins
* Update FRAME_PROCESSOR_CREATE_FINAL.mdx
* Update FRAME_PROCESSOR_PLUGIN_LIST.mdx
* Update FRAME_PROCESSOR_PLUGIN_LIST.mdx
* Update dependencies (1/2)
* Update dependencies (2/2)
* Update Gemfile.lock
* add FP docs
* Update README.md
* Make `lastFrameProcessor` private
* add `frameProcessor` docs
* fix docs
* adjust docs
* Update DEVICES.mdx
* fix
* s
* Add logs demo
* add metro restart note
* Update FRAME_PROCESSOR_CREATE_PLUGIN_IOS.mdx
* Mirror video device
* Update AVCaptureVideoDataOutput+mirror.swift
* Create .swift-version
* Enable whole module optimization
* Fix recording mirrored video
* Swift format
* Clean dictionary on `markInvalid`
* Fix cleanup
* Add docs for disabling frame processors
* Update project.pbxproj
* Revert "Update project.pbxproj"
This reverts commit e67861e51b88b4888a6940e2d20388f3044211d0.
* Log frame drop reason
* Format
* add more samples
* Add clang-format
* also check .mm
* Revert "also check .mm"
This reverts commit 8b9d5e2c29866b05909530d104f6633d6c49eadd.
* Revert "Add clang-format"
This reverts commit 7643ac808e0fc34567ea1f814e73d84955381636.
* Use `kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange` as default
* Read matching video attributes from videoSettings
* Add TODO
* Swiftformat
* Conditionally disable frame processors
* Assert if trying to use frame processors when disabled
* Add frame-processors demo gif
* Allow disabling frame processors via `VISION_CAMERA_DISABLE_FRAME_PROCESSORS`
* Update FrameProcessorRuntimeManager.mm
* Update FRAME_PROCESSORS.mdx
* Update project.pbxproj
* Update FRAME_PROCESSORS_CREATE_OVERVIEW.mdx
2021-05-06 14:11:55 +02:00
Marc Rousavy
9f956a6f2f
devops: Use buildcache for iOS builds ( #131 )
...
* Use buildcache for iOS builds
from https://github.com/mikehardy/buildcache-action
* Update build-ios.yml
* Update build-ios.yml
* Specify compiler options to make buildcache work
* Update build-ios.yml
2021-05-05 15:28:14 +02:00
Marc Rousavy
0ce6f3eddd
Add autofix/diff checker to ESLint
2021-03-12 15:10:44 +01:00
Marc Rousavy
04163160ff
Also run validate-js for example/
2021-03-12 14:58:09 +01:00
Marc Rousavy
dee957648b
Fix tsc (again) ( #50 )
...
* Test forbid `<View>`
* Update validate-js.yml
* Run yarn lint with custom formatter lib
* Revert "Test forbid `<View>`"
This reverts commit d36ab54b48b7e86e594d360bd71c82b541ed63fa.
* Test: Intentional tsc error
* Update notice-new-dependencies.yml
* Update validate-js.yml
* Use reviewdog again, but with custom efm
* Fix <Camera> props
* Update validate-js.yml
* Try use github-check
* Update validate-js.yml
* Update validate-js.yml
* Add two reporters
* Update validate-js.yml
* Level error
* Use github-pr-review
* Update validate-js.yml
* Revert "Test: Intentional tsc error"
This reverts commit a4e7f6f599d403848729143f1bd87a3435c70826.
2021-03-12 14:19:22 +01:00
Marc Rousavy
33483cba94
Fix tsc ( #49 )
...
* Test: Rename a used prop
* Use `github-check` reporter
* Also output to CI
* Update validate-js.yml
* Update validate-js.yml
* Update validate-js.yml
* Revert "Test: Rename a used prop"
This reverts commit 266b2716ea591a1e826279c1f573870bee3b13e5.
* Run tsc and lint in parallel
* Flatten `CameraProps` into single `interface`
* Type NativeCameraViewProps
* Fix native method typings
* Force `as any` for now
2021-03-12 13:21:46 +01:00
Marc Rousavy
b3881db9b8
Only build iOS if native files changed
2021-03-12 09:59:45 +01:00
Marc Rousavy
1f08a44100
Use Ruby Gemfile (bundle) to optimize pod install times
2021-03-11 19:08:51 +01:00