Commit Graph

249 Commits

Author SHA1 Message Date
Marc Rousavy
622d3830f1
feat: Make Frame Processor Plugins object-oriented on iOS as well (#1496)
* feat: Make Frame Processor Plugins object-oriented on iOS as well

* Add Plugin in AppDelegate
2023-02-27 11:18:03 +01:00
Marc Rousavy
30b56153db
feat: Sync Frame Processors (plus runAsync and runAtTargetFps) (#1472)
Before, Frame Processors ran on a separate Thread.

After, Frame Processors run fully synchronous and always at the same FPS as the Camera.

Two new functions have been introduced:

* `runAtTargetFps(fps: number, func: () => void)`: Runs the given code as often as the given `fps`, effectively throttling it's calls.
* `runAsync(frame: Frame, func: () => void)`: Runs the given function on a separate Thread for Frame Processing. A strong reference to the Frame is held as long as the function takes to execute.

You can use `runAtTargetFps` to throttle calls to a specific API (e.g. if your Camera is running at 60 FPS, but you only want to run face detection at ~25 FPS, use `runAtTargetFps(25, ...)`.)

You can use `runAsync` to run a heavy algorithm asynchronous, so that the Camera is not blocked while your algorithm runs. This is useful if your main sync processor draws something, and your async processor is doing some image analysis on the side. 

You can also combine both functions.

Examples:

```js
const frameProcessor = useFrameProcessor((frame) => {
  'worklet'
  console.log("I'm running at 60 FPS!")
}, [])
```

```js
const frameProcessor = useFrameProcessor((frame) => {
  'worklet'
  console.log("I'm running at 60 FPS!")

  runAtTargetFps(10, () => {
    'worklet'
    console.log("I'm running at 10 FPS!")
  })
}, [])
```



```js
const frameProcessor = useFrameProcessor((frame) => {
  'worklet'
  console.log("I'm running at 60 FPS!")

  runAsync(frame, () => {
    'worklet'
    console.log("I'm running on another Thread, I can block for longer!")
  })
}, [])
```

```js
const frameProcessor = useFrameProcessor((frame) => {
  'worklet'
  console.log("I'm running at 60 FPS!")

  runAtTargetFps(10, () => {
    'worklet'
    runAsync(frame, () => {
      'worklet'
      console.log("I'm running on another Thread at 10 FPS, I can block for longer!")
    })
  })
}, [])
```
2023-02-15 16:47:09 +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
Rohan Barman
6b32cd9cd7
docs: Replace outdated react-native-reanimated doc links (#1304) 2022-10-28 12:18:36 +02:00
Lihang Xu
312b82b9f6
docs: Add Dynamsoft Label Recognizer Frame Processor Plugin (#1183) 2022-08-05 09:52:35 +02:00
Philipp Parzer
f289f91773
docs: Fix typo in ERRORS (#1160)
fix typo "promt" to "prompt"
2022-07-25 13:26:18 +02:00
Mateusz Mędrek
2a73c09be5
docs: add vision-camera-plugin-builder sections in Creating Frame Processor Plugins (#1123)
- add automatic setup section to "Creating Frame Processor Plugins (iOS|Android)" with
vision-camera-plugin-builder CLI
2022-07-07 14:06:31 +02:00
Joaquín Ossandon
de41f8be83
docs: 📄 Add mocking section to docs (#1061)
* docs: add mocking mdx guide

* docs: show mocking section on sidebar
2022-05-27 11:34:54 +02:00
Marc Rousavy
485f33eb1c docs: Add Margelo Banner (https://margelo.io) 2022-04-11 15:55:03 +02:00
Aaron Grider
e529591880
docs: Add OCR frame processor plugin (#842) 2022-02-22 13:27:27 +01:00
Dominique Rau
c2de683d67
Update TROUBLESHOOTING.mdx (#832) 2022-02-17 11:10:14 +01:00
Lihang Xu
5e7b6a7050
docs: Add Dynamsoft Barcode Reader plugin (#772) 2022-01-27 08:45:07 +01:00
Marc Rousavy
13516c706b Update FRAME_PROCESSORS.mdx 2022-01-11 12:41:41 +01:00
Marc Rousavy
a0b21775e3 Update FRAME_PROCESSORS.mdx 2022-01-11 12:41:19 +01:00
Marc Rousavy
d44ed2ea39 Update FRAME_PROCESSORS.mdx 2022-01-11 12:39:05 +01:00
Marc Rousavy
c2518bc40f docs: Add documentation for disabling Frame Processors on Expo 2022-01-11 12:38:32 +01:00
Marc Rousavy
9d3665d7b8
chore(deps): Upgrade docs deps (#697)
* chore(deps): Upgrade deps (docs)

* Update package.json

* Update yarn.lock
2022-01-02 18:06:19 +01:00
Marc Rousavy
be5ec69b02
feat: Make Reanimated optional (disable Frame Processors if REA v2 is not installed) (#412)
* Fix building iOS without Reanimated

* Conditionally compile Frame Processors (gradle)

* Conditionally use externalNativeBuild

* Remove Reanimated import

* fix: Conditionally load REA/VisionCamera libraries

* fix: Add disable FP to docs

* fix: Fix dummy placeholder for Scheduler.mm

* fix: Fix dummy `Scheduler` declaration

* fix: Only init `CameraView` C++ side if frame processors are enabled

* fix: Install JSI Bindings on Frame Processor Manager ctor

* fix: Wrong conditional

* whoops
2022-01-02 17:35:26 +01:00
Daniel
5bbe2bfbab
docs: Update compileSdkVersion and targetSdkVersion (#585)
SDK version 31 required after 8d24e344c9
2021-12-30 11:39:38 +01:00
Hirbod
c2ba4fb1af
docs: Update Zooming code link (#661)
Change example link from fixed commit to master (this prevents copying old/non-working code)
2021-12-30 10:10:15 +01:00
dependabot[bot]
b10ca27daa
chore(deps-dev): bump docusaurus-plugin-typedoc in /docs (#649)
Bumps [docusaurus-plugin-typedoc](https://github.com/tgreyuk/typedoc-plugin-markdown/tree/HEAD/packages/docusaurus-plugin-typedoc) from 0.16.3 to 0.16.6.
- [Release notes](https://github.com/tgreyuk/typedoc-plugin-markdown/releases)
- [Changelog](https://github.com/tgreyuk/typedoc-plugin-markdown/blob/master/packages/docusaurus-plugin-typedoc/CHANGELOG.md)
- [Commits](https://github.com/tgreyuk/typedoc-plugin-markdown/commits/docusaurus-plugin-typedoc@0.16.6/packages/docusaurus-plugin-typedoc)

---
updated-dependencies:
- dependency-name: docusaurus-plugin-typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-12-13 17:01:21 +01:00
Marc Rousavy
934de142ee docs: Update Format.pixelFormat documentation 2021-12-10 09:52:40 +01:00
dependabot[bot]
007cf8f72a
chore(deps-dev): bump typedoc-plugin-markdown in /docs (#509)
Bumps [typedoc-plugin-markdown](https://github.com/tgreyuk/typedoc-plugin-markdown/tree/HEAD/packages/typedoc-plugin-markdown) from 3.11.2 to 3.11.3.
- [Release notes](https://github.com/tgreyuk/typedoc-plugin-markdown/releases)
- [Changelog](https://github.com/tgreyuk/typedoc-plugin-markdown/blob/master/packages/typedoc-plugin-markdown/CHANGELOG.md)
- [Commits](https://github.com/tgreyuk/typedoc-plugin-markdown/commits/typedoc-plugin-markdown@3.11.3/packages/typedoc-plugin-markdown)

---
updated-dependencies:
- dependency-name: typedoc-plugin-markdown
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-11 18:29:02 +02:00
dependabot[bot]
eff2e17c97
chore(deps-dev): bump typedoc from 0.22.4 to 0.22.5 in /docs (#475)
Bumps [typedoc](https://github.com/TypeStrong/TypeDoc) from 0.22.4 to 0.22.5.
- [Release notes](https://github.com/TypeStrong/TypeDoc/releases)
- [Changelog](https://github.com/TypeStrong/typedoc/blob/master/CHANGELOG.md)
- [Commits](https://github.com/TypeStrong/TypeDoc/compare/v0.22.4...v0.22.5)

---
updated-dependencies:
- dependency-name: typedoc
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-05 10:38:37 +02:00
Ben McDonald
c627febde5
docs: Fix small typo (#473) 2021-10-02 15:07:32 +02:00
dependabot[bot]
d2cb52fe92
chore(deps-dev): bump typedoc-plugin-markdown in /docs (#462)
Bumps [typedoc-plugin-markdown](https://github.com/tgreyuk/typedoc-plugin-markdown/tree/HEAD/packages/typedoc-plugin-markdown) from 3.11.0 to 3.11.2.
- [Release notes](https://github.com/tgreyuk/typedoc-plugin-markdown/releases)
- [Changelog](https://github.com/tgreyuk/typedoc-plugin-markdown/blob/master/packages/typedoc-plugin-markdown/CHANGELOG.md)
- [Commits](https://github.com/tgreyuk/typedoc-plugin-markdown/commits/typedoc-plugin-markdown@3.11.2/packages/typedoc-plugin-markdown)

---
updated-dependencies:
- dependency-name: typedoc-plugin-markdown
  dependency-type: direct:development
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-09-29 12:31:47 +02:00
alexstanbury
ef40b1db23
docs: Fix Frame Processor install step and QualityPrioritization Order (#451)
* fix: switched incorrect property ordering for qualityPrioritization options

fix: added extra step required for create frame processing plugin on Android

* fix: adjusted the highlighted line

* chore: added guidelines on how to generate and check docs updares

* chore: change instructions so they aren't so unnecessarily wordy! :P
2021-09-24 10:15:26 +02:00
Marc Rousavy
d3105fa207
chore: Upgrade a whole lotta dependencies (#436)
* chore: Upgrade a lot of dependencies for `./`

* chore: Upgrade a lot of dependencies for `./example`

* chore: Upgrade a lot of dependencies for `./docs`

* Use new `EventEmitter` syntax (`.remove()`)

* Update Podfile.lock

* docs: Use watch mode

* docs: Replace all relative links with absolute

* Fix all links

* Update docusaurus.config.js

* Upgrade docusaurus-plugin-typedoc to fix docs build

* Update yarn.lock

* Upgrade typescript to 4.4.3

* Fix error unknown

* Update package.json

* Upgrade typedoc

* Upgrade a few more deps

* Fix deprecated sidebar syntax

* Update Gemfile.lock
2021-09-22 13:58:59 +02:00
Marc Rousavy
68d737d6df
Update FRAME_PROCESSORS.mdx 2021-09-13 10:40:46 +02:00
Rodrigo Gomes
58e586220e
feat: add qrcode scanner plugin (#417)
* add qrcode scanner plugin

* chore: update FRAME_PROCESSOR_PLUGIN_LIST
2021-09-10 12:31:57 +02:00
Marc Rousavy
3aa1f5f849
Update FRAME_PROCESSORS.mdx 2021-09-09 22:04:33 +02:00
Marc Rousavy
43f5c54363
Update FRAME_PROCESSOR_CREATE_FINAL.mdx 2021-09-09 22:04:05 +02:00
Marc Rousavy
fe4b3c093b
Update ERRORS.mdx 2021-09-09 22:03:23 +02:00
Marc Rousavy
7ccc8b65f0
Update FORMATS.mdx 2021-09-09 22:01:52 +02:00
Marc Rousavy
0bbda5b84b
Update FORMATS.mdx 2021-09-09 22:01:23 +02:00
Marc Rousavy
57efc0e315
docs: Add vision-camera-ocr plugin to Community Plugins 2021-09-02 10:24:04 +02:00
Marc Rousavy
f558eb826b
docs: Add two plugins to the Community Plugins List
Adds @rodgomesc's vision-camera-face-detector and my Colorwaver app
2021-09-02 10:21:21 +02:00
Marc Rousavy
dc02a6ec7c
docs: Fix invalid static NSArray allocation 2021-08-28 10:19:06 +02:00
Marc Rousavy
f5e4ab9460
Update FRAME_PROCESSOR_PLUGIN_LIST.mdx 2021-08-16 16:44:56 +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
Marc Rousavy
b5452ac406
Update FRAME_PROCESSORS.mdx 2021-08-10 14:10:07 +02:00
Marc Rousavy
cc4d9c519b
docs: Improve cat bounds example 2021-08-10 14:08:52 +02:00
dependabot[bot]
f000835e21
chore(deps): bump @docusaurus/preset-classic in /docs (#317)
Bumps [@docusaurus/preset-classic](https://github.com/facebook/docusaurus/tree/HEAD/packages/docusaurus-preset-classic) from 2.0.0-beta.3 to 2.0.0-beta.4.
- [Release notes](https://github.com/facebook/docusaurus/releases)
- [Changelog](https://github.com/facebook/docusaurus/blob/master/CHANGELOG.md)
- [Commits](https://github.com/facebook/docusaurus/commits/v2.0.0-beta.4/packages/docusaurus-preset-classic)

---
updated-dependencies:
- dependency-name: "@docusaurus/preset-classic"
  dependency-type: direct:production
  update-type: version-update:semver-patch
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-06 10:36:01 +02:00
Marc Rousavy
1c32726ef6
fix: Throw JS errors if JSI <-> JNI conversion failed (#324) 2021-08-05 10:10:49 +02:00
Marc Rousavy
b493576373
fix: Fix java.lang.NoSuchMethodError error for .toArrayList() (#322)
* fix: Fix `java.lang.NoSuchMethodError` error for `.toArrayList()`

* Fix `HashMap<K, V>` conversion to `jsi::Object`

* Update FRAME_PROCESSORS_CREATE_OVERVIEW.mdx
2021-08-04 16:07:08 +02:00
Marc Rousavy
0f7ee51333
feat: Add console logging support for Frame Processors (#297)
* Try to log to console via runOnJS

* Call `console.log`

* Create custom `VisionCameraScheduler`

* Fix scheduler call

* Call with this

* Fix console setting

* Move J---- to `java-bindings`

* c++ style

* Android: 1/2 Create custom Scheduler

* Android: 2/2 Use custom Scheduler

* Don't use `runOnJS`, use `__callAsync` directly
2021-07-30 10:27:45 +02:00
Marc Rousavy
445af943c3
feat: BREAKING CHANGE: Express zoom factor always in actual factor value (1, 2, 128, ...) instead of 0.0-1.0 scale (#306)
* Make `zoom` go on "factor" scale

* Clean up `zoom` code

* fix float conversion

* fix zoom interpretation

* Update docs for new zoom scale

* fix float conversion
2021-07-29 11:44:22 +02:00
Marc Rousavy
6e2dc4e73b
Update ZOOMING.mdx 2021-07-29 10:54:56 +02:00
Marc Rousavy
2856aa11f9
Update DEVICES.mdx 2021-07-29 10:52:39 +02:00