Vision camera v3 (#1121)

* Bump vision-camera

* Refactor patch

* Move patched orientation into patch functions file

* Update react-native-vision-camera+3.4.1.patch

* Switch to MacOS 13 runner

Vision camera requires XCode 15 to compile.

* Add step to specify XCode 15

* Higher level of logging

* Increase test timeout

* Add comment

* Remove navigation to obs without evidence for signed out user

* Patch for location permission not working on iOS

* Increase setup timeout

* Increase some more timeouts

* Revert back to less logging in CI

* Does it have to do with timeouts?

* Trace log level

* Update README.md

* Disable Homebrew’s auto update and install cleanup

* Setup ruby step

* Install pods only if not cached

* Revert "Install pods only if not cached"

This reverts commit 42a2ea02f9.

* Run simulator in headless mode, record all logs

* Increase timeouts again

* Revert "Remove navigation to obs without evidence for signed out user"

This reverts commit 2b4718f5ce.

* Add boolean to run use effect only once

* Did merge wrong code

* There is one more permission gate when entering obs edit now

* Add permission gate dismissal to signed out user test

* Add comment, rename state

* Lower action timeout

* Update react-native-vision-camera to 3.6, update Reanimated to v3 (#838)

* Bump camera and plugin

* Upgrade Reanimated and libs using it

* Update vision-camera mock

* Remove superfluous patch

* Fix type

* Add mocks for e2e tests because bottom sheet does not work on AOSP

* Update package-lock.json

* Update vision camera

* Bump vision camera

* Update vision camera patch version

* Remove superfluous patch

* Update vision camera

* Update vision-camera and plugin

* Use latest vision plugin = rebased v3

* Run npm clean-start

* No longer needed

* Duplicate prop

* Switch back to v3 code

* Upgrading Detox fixes issue with iOS tests failing

Because of previous lack of permissions.

* Update to latest detox version

* Npm i force

* Vision 3 e2e testing, (#1126)

* Remove jest detox config

* Revert e2e timeout increase

* Revert jest config timeout

* Use macos 14 runner which has XCode 15 per default

* Use latest bottom sheet

* Revert "Use latest bottom sheet"

This reverts commit c66cd09838.

* Adding comma back in

* Remove spaces

* Use latest vision-camera and plugin

* Use release version of vision-camera

* Remove force flag

* Update react-native-worklets-core

* Upgrade reanimated

* Update babel.config to allow nested worklets

* Run frame processor async

* Remove enableGpuBuffers flag

* Remove no longer needed comment

* Update comments about version

* Update vision-camera and plugin

* Code format

* Rename param

* Use latest-plugin

* Remove fps param from camera view

* Change confidenceThreshold to number

* API change for results structure

* Refactor fps to be checked inside hook

As of vision-camera 3.9.1 our camera feed is stuttering when calling the runAtTargetFps function inside the useFrameProcessor hook.
So, what I did here is to track the time and skip the frames that are received before the target fps is reached.

* Remove updates of non-camera related

* Update comment

* Code format

* Snapshot updates

* Revert changes to ios e2e

* Add a log for the average time it takes a frame to be processed

* Use release version of plugin

* Add a patch for runAsync to work in release builds

* Update react-native-worklets-core to 0.4.0

* Use latest plugin version

* Add a shift method to worklet arrays

* Use latest vision-plugin

This makes use of .shift() in worklet array and depends on the previous patch.

* Set result timestamp and show age of result in debug mode

* Fix an error with timestamp being undefined

* Remove log

* Use latest vision plugin

* Change result timestamp to pink

* Comment

---------

Co-authored-by: Ken-ichi Ueda <kenichi.ueda@gmail.com>
This commit is contained in:
Johannes Klein
2024-03-27 00:47:43 +01:00
committed by GitHub
parent b397d0d4f5
commit 0e0a6560ac
23 changed files with 318 additions and 268 deletions

View File

@@ -0,0 +1,30 @@
diff --git a/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiArrayWrapper.h b/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiArrayWrapper.h
index aea3ee9..72e2191 100644
--- a/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiArrayWrapper.h
+++ b/node_modules/react-native-worklets-core/cpp/wrappers/WKTJsiArrayWrapper.h
@@ -86,6 +86,17 @@ public:
return lastEl->unwrapAsProxyOrValue(runtime);
};
+ JSI_HOST_FUNCTION(shift) {
+ // Shift first element from array
+ if (_array.empty()) {
+ return jsi::Value::undefined();
+ }
+ auto firstEl = _array.at(0);
+ _array.erase(_array.begin());
+ notify();
+ return firstEl->unwrapAsProxyOrValue(runtime);
+ };
+
JSI_HOST_FUNCTION(forEach) {
auto callbackFn = arguments[0].asObject(runtime).asFunction(runtime);
for (size_t i = 0; i < _array.size(); i++) {
@@ -275,6 +286,7 @@ public:
JSI_EXPORT_FUNCTIONS(
JSI_EXPORT_FUNC(JsiArrayWrapper, push),
JSI_EXPORT_FUNC(JsiArrayWrapper, pop),
+ JSI_EXPORT_FUNC(JsiArrayWrapper, shift),
JSI_EXPORT_FUNC(JsiArrayWrapper, forEach),
JSI_EXPORT_FUNC(JsiArrayWrapper, map),
JSI_EXPORT_FUNC(JsiArrayWrapper, filter),