vision-camera-face-detection 2.2.0 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,81 @@
1
+ import VisionCamera
2
+ import AVFoundation
3
+ import CoreMotion
4
+ import Foundation
5
+ import UIKit
6
+
7
+ final class VisionCameraFaceDetectorOrientation {
8
+ private let motionManager = CMMotionManager()
9
+ private let operationQueue = OperationQueue()
10
+
11
+ // The orientation of the physical device's gyro sensor/accelerometer
12
+ var orientation: Orientation {
13
+ didSet {
14
+ if oldValue != orientation {
15
+ print("Device Orientation changed from \(oldValue) -> \(orientation)")
16
+ }
17
+ }
18
+ }
19
+
20
+ init() {
21
+ // default value
22
+ orientation = .portrait
23
+ startDeviceOrientationListener()
24
+ }
25
+
26
+ deinit {
27
+ stopDeviceOrientationListener()
28
+ }
29
+
30
+ private func startDeviceOrientationListener() {
31
+ stopDeviceOrientationListener()
32
+ if motionManager.isAccelerometerAvailable {
33
+ motionManager.accelerometerUpdateInterval = 0.2
34
+ motionManager.startAccelerometerUpdates(to: operationQueue) { accelerometerData, error in
35
+ if let error {
36
+ print("Failed to get Accelerometer data! \(error)")
37
+ }
38
+ if let accelerometerData {
39
+ self.orientation = accelerometerData.deviceOrientation
40
+ }
41
+ }
42
+ }
43
+ }
44
+
45
+ private func stopDeviceOrientationListener() {
46
+ if motionManager.isAccelerometerActive {
47
+ motionManager.stopAccelerometerUpdates()
48
+ }
49
+ }
50
+ }
51
+
52
+ extension CMAccelerometerData {
53
+ /**
54
+ Get the current device orientation from the given acceleration/gyro data.
55
+ */
56
+ var deviceOrientation: Orientation {
57
+ let acceleration = acceleration
58
+ let xNorm = abs(acceleration.x)
59
+ let yNorm = abs(acceleration.y)
60
+ let zNorm = abs(acceleration.z)
61
+
62
+ // If the z-axis is greater than the other axes, the phone is flat.
63
+ if zNorm > xNorm && zNorm > yNorm {
64
+ return .portrait
65
+ }
66
+
67
+ if xNorm > yNorm {
68
+ if acceleration.x > 0 {
69
+ return .landscapeRight
70
+ } else {
71
+ return .landscapeLeft
72
+ }
73
+ } else {
74
+ if acceleration.y > 0 {
75
+ return .portraitUpsideDown
76
+ } else {
77
+ return .portrait
78
+ }
79
+ }
80
+ }
81
+ }
@@ -4,13 +4,15 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.Camera = void 0;
7
- var _react = _interopRequireDefault(require("react"));
7
+ var _react = _interopRequireWildcard(require("react"));
8
8
  var _reactNative = require("react-native");
9
9
  var _reactNativeVisionCamera = require("react-native-vision-camera");
10
10
  var _reactNativeWorkletsCore = require("react-native-worklets-core");
11
11
  var _FaceDetector = require("./FaceDetector.js");
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ /* eslint-disable react-hooks/exhaustive-deps */
15
+
14
16
  // types
15
17
 
16
18
  /**
@@ -22,10 +24,9 @@ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e
22
24
  * @returns {UseWorkletType} A memoized Worklet
23
25
  */
24
26
  function useWorklet(func, dependencyList) {
25
- const worklet = _react.default.useMemo(() => {
27
+ const worklet = (0, _react.useMemo)(() => {
26
28
  const context = _reactNativeWorkletsCore.Worklets.defaultContext;
27
29
  return context.createRunAsync(func);
28
- // eslint-disable-next-line react-hooks/exhaustive-deps
29
30
  }, dependencyList);
30
31
  return worklet;
31
32
  }
@@ -39,8 +40,7 @@ function useWorklet(func, dependencyList) {
39
40
  * @returns {UseRunInJSType} a memoized Worklet
40
41
  */
41
42
  function useRunInJS(func, dependencyList) {
42
- // eslint-disable-next-line react-hooks/exhaustive-deps
43
- return _react.default.useMemo(() => _reactNativeWorkletsCore.Worklets.createRunOnJS(func), dependencyList);
43
+ return (0, _react.useMemo)(() => _reactNativeWorkletsCore.Worklets.createRunOnJS(func), dependencyList);
44
44
  }
45
45
 
46
46
  /**
@@ -52,6 +52,7 @@ function useRunInJS(func, dependencyList) {
52
52
  const Camera = exports.Camera = /*#__PURE__*/_react.default.forwardRef(({
53
53
  faceDetectionOptions,
54
54
  faceDetectionCallback,
55
+ // skiaActions,
55
56
  ...props
56
57
  }, ref) => {
57
58
  const {
@@ -61,6 +62,7 @@ const Camera = exports.Camera = /*#__PURE__*/_react.default.forwardRef(({
61
62
  * Is there an async task already running?
62
63
  */
63
64
  const isAsyncContextBusy = (0, _reactNativeWorkletsCore.useSharedValue)(false);
65
+ const faces = (0, _reactNativeWorkletsCore.useSharedValue)('[]');
64
66
 
65
67
  /**
66
68
  * Throws logs/errors back on js thread
@@ -76,7 +78,7 @@ const Camera = exports.Camera = /*#__PURE__*/_react.default.forwardRef(({
76
78
  /**
77
79
  * Runs on detection callback on js thread
78
80
  */
79
- const runInJs = useRunInJS(faceDetectionCallback, [faceDetectionCallback]);
81
+ const runOnJs = useRunInJS(faceDetectionCallback, [faceDetectionCallback]);
80
82
 
81
83
  /**
82
84
  * Async context that will handle face detection
@@ -85,11 +87,11 @@ const Camera = exports.Camera = /*#__PURE__*/_react.default.forwardRef(({
85
87
  'worklet';
86
88
 
87
89
  try {
88
- const faces = detectFaces(frame);
90
+ faces.value = JSON.stringify(detectFaces(frame));
89
91
  // increment frame count so we can use frame on
90
92
  // js side without frame processor getting stuck
91
93
  frame.incrementRefCount();
92
- runInJs(faces, frame).finally(() => {
94
+ runOnJs(JSON.parse(faces.value), frame).finally(() => {
93
95
  'worklet';
94
96
 
95
97
  // finally decrement frame count so it can be dropped
@@ -101,7 +103,7 @@ const Camera = exports.Camera = /*#__PURE__*/_react.default.forwardRef(({
101
103
  frame.decrementRefCount();
102
104
  isAsyncContextBusy.value = false;
103
105
  }
104
- }, [detectFaces, runInJs]);
106
+ }, [detectFaces, runOnJs]);
105
107
 
106
108
  /**
107
109
  * Detect faces on frame on an async context without blocking camera preview
@@ -122,42 +124,64 @@ const Camera = exports.Camera = /*#__PURE__*/_react.default.forwardRef(({
122
124
  }
123
125
 
124
126
  /**
125
- * Camera frame processor
127
+ * Skia frame processor
128
+ */
129
+ // NOTE - temporary without skia
130
+ // const skiaFrameProcessor = useSkiaFrameProcessor(
131
+ // (frame) => {
132
+ // 'worklet';
133
+ // frame.render();
134
+ // skiaActions!(JSON.parse(faces.value), frame);
135
+ // runAsync(frame);
136
+ // },
137
+ // [runOnAsyncContext, skiaActions]
138
+ // );
139
+
140
+ /**
141
+ * Default frame processor
126
142
  */
127
- const processorAndroid = (0, _reactNativeVisionCamera.useFrameProcessor)(frame => {
143
+ const cameraFrameProcessor = (0, _reactNativeVisionCamera.useFrameProcessor)(frame => {
128
144
  'worklet';
129
145
 
130
146
  runAsync(frame);
131
147
  }, [runOnAsyncContext]);
132
148
 
149
+ /**
150
+ * Camera frame processor
151
+ */
152
+ const frameProcessor = (() => {
153
+ // const { autoMode } = faceDetectionOptions ?? {};
154
+
155
+ // if (!autoMode && !!skiaActions) return skiaFrameProcessor;
156
+
157
+ return cameraFrameProcessor;
158
+ })();
159
+
133
160
  //
134
161
  // use bellow when vision-camera's
135
162
  // context creation issue is solved
136
163
  //
137
- /**
138
- * Runs on detection callback on js thread
139
- */
140
- // const runOnJs = useRunOnJS(faceDetectionCallback, [faceDetectionCallback]);
141
-
142
- // const processorIOS = useFrameProcessor(
143
- // (frame) => {
144
- // 'worklet';
145
- // runOnJs(detectFaces(frame), frame);
146
- // // runAsync(frame, () => {
147
- // // 'worklet';
148
- // // runOnJs(detectFaces(frame), frame);
149
- // // });
150
- // },
151
- // [runOnJs]
152
- // );
164
+ // /**
165
+ // * Runs on detection callback on js thread
166
+ // */
167
+ // const runOnJs = useRunOnJS( faceDetectionCallback, [
168
+ // faceDetectionCallback
169
+ // ] )
170
+
171
+ // const cameraFrameProcessor = useFrameProcessor( ( frame ) => {
172
+ // 'worklet'
173
+ // runAsync( frame, () => {
174
+ // 'worklet'
175
+ // runOnJs(
176
+ // detectFaces( frame ),
177
+ // frame
178
+ // )
179
+ // } )
180
+ // }, [ runOnJs ] )
153
181
 
154
182
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeVisionCamera.Camera, {
155
- ref: ref
156
- // frameProcessor={
157
- // Platform.OS === 'android' ? processorAndroid : processorIOS
158
- // }
159
- ,
160
- frameProcessor: processorAndroid,
183
+ ref: ref,
184
+ frameProcessor: frameProcessor,
161
185
  pixelFormat: _reactNative.Platform.OS === 'android' ? 'yuv' : 'rgb',
162
186
  ...props
163
187
  });
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_reactNativeVisionCamera","_reactNativeWorkletsCore","_FaceDetector","_jsxRuntime","e","__esModule","default","useWorklet","func","dependencyList","worklet","React","useMemo","context","Worklets","defaultContext","createRunAsync","useRunInJS","createRunOnJS","Camera","exports","forwardRef","faceDetectionOptions","faceDetectionCallback","props","ref","detectFaces","useFaceDetector","isAsyncContextBusy","useSharedValue","logOnJs","log","error","console","message","JSON","stringify","runInJs","runOnAsyncContext","frame","faces","incrementRefCount","finally","decrementRefCount","value","runAsync","internal","processorAndroid","useFrameProcessor","jsx","frameProcessor","pixelFormat","Platform","OS"],"sourceRoot":"../../src","sources":["Camera.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeVisionCamera","_reactNativeWorkletsCore","_FaceDetector","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","useWorklet","func","dependencyList","worklet","useMemo","context","Worklets","defaultContext","createRunAsync","useRunInJS","createRunOnJS","Camera","exports","React","forwardRef","faceDetectionOptions","faceDetectionCallback","props","ref","detectFaces","useFaceDetector","isAsyncContextBusy","useSharedValue","faces","logOnJs","log","error","console","message","JSON","stringify","runOnJs","runOnAsyncContext","frame","value","incrementRefCount","parse","finally","decrementRefCount","runAsync","internal","cameraFrameProcessor","useFrameProcessor","frameProcessor","jsx","pixelFormat","Platform","OS"],"sourceRoot":"../../src","sources":["Camera.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["_react","require","_reactNativeVisionCamera","createFaceDetectorPlugin","options","plugin","VisionCameraProxy","initFrameProcessorPlugin","Error","detectFaces","frame","call","useFaceDetector","useMemo"],"sourceRoot":"../../src","sources":["FaceDetector.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AA+HA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,wBAAwBA,CAC/BC,OAA8B,EACV;EACpB,MAAMC,MAAM,GAAGC,0CAAiB,CAACC,wBAAwB,CAAC,aAAa,EAAE;IACvE,GAAGH;EACL,CAAC,CAAC;EAEF,IAAI,CAACC,MAAM,EAAE;IACX,MAAM,IAAIG,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,OAAO;IACLC,WAAW,EAAGC,KAAY,IAAa;MACrC,SAAS;;MACT;MACA,OAAOL,MAAM,CAACM,IAAI,CAACD,KAAK,CAAC;IAC3B;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,eAAeA,CAC7BR,OAA8B,EACV;EACpB,OAAO,IAAAS,cAAO,EAAC,MAAMV,wBAAwB,CAACC,OAAO,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;AACpE","ignoreList":[]}
1
+ {"version":3,"names":["_react","require","_reactNativeVisionCamera","createFaceDetectorPlugin","options","plugin","VisionCameraProxy","initFrameProcessorPlugin","Error","detectFaces","frame","call","useFaceDetector","useMemo"],"sourceRoot":"../../src","sources":["FaceDetector.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,wBAAA,GAAAD,OAAA;AAwJA;AACA;AACA;AACA;AACA;AACA;AACA,SAASE,wBAAwBA,CAC/BC,OAA8B,EACV;EACpB,MAAMC,MAAM,GAAGC,0CAAiB,CAACC,wBAAwB,CAAC,aAAa,EAAE;IACvE,GAAGH;EACL,CAAC,CAAC;EAEF,IAAI,CAACC,MAAM,EAAE;IACX,MAAM,IAAIG,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,OAAO;IACLC,WAAW,EAAGC,KAAY,IAAa;MACrC,SAAS;;MACT;MACA,OAAOL,MAAM,CAACM,IAAI,CAACD,KAAK,CAAC;IAC3B;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,SAASE,eAAeA,CAC7BR,OAA8B,EACV;EACpB,OAAO,IAAAS,cAAO,EAAC,MAAMV,wBAAwB,CAACC,OAAO,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;AACpE","ignoreList":[]}
@@ -1,8 +1,12 @@
1
1
  "use strict";
2
2
 
3
- import React from 'react';
3
+ /* eslint-disable react-hooks/exhaustive-deps */
4
+
5
+ import React, { useMemo } from 'react';
4
6
  import { Platform } from 'react-native';
5
- import { Camera as VisionCamera, useFrameProcessor } from 'react-native-vision-camera';
7
+ import { Camera as VisionCamera, useFrameProcessor
8
+ // useSkiaFrameProcessor,
9
+ } from 'react-native-vision-camera';
6
10
  import { Worklets,
7
11
  // useRunOnJS,
8
12
  useSharedValue } from 'react-native-worklets-core';
@@ -19,10 +23,9 @@ import { jsx as _jsx } from "react/jsx-runtime";
19
23
  * @returns {UseWorkletType} A memoized Worklet
20
24
  */
21
25
  function useWorklet(func, dependencyList) {
22
- const worklet = React.useMemo(() => {
26
+ const worklet = useMemo(() => {
23
27
  const context = Worklets.defaultContext;
24
28
  return context.createRunAsync(func);
25
- // eslint-disable-next-line react-hooks/exhaustive-deps
26
29
  }, dependencyList);
27
30
  return worklet;
28
31
  }
@@ -36,8 +39,7 @@ function useWorklet(func, dependencyList) {
36
39
  * @returns {UseRunInJSType} a memoized Worklet
37
40
  */
38
41
  function useRunInJS(func, dependencyList) {
39
- // eslint-disable-next-line react-hooks/exhaustive-deps
40
- return React.useMemo(() => Worklets.createRunOnJS(func), dependencyList);
42
+ return useMemo(() => Worklets.createRunOnJS(func), dependencyList);
41
43
  }
42
44
 
43
45
  /**
@@ -49,6 +51,7 @@ function useRunInJS(func, dependencyList) {
49
51
  export const Camera = /*#__PURE__*/React.forwardRef(({
50
52
  faceDetectionOptions,
51
53
  faceDetectionCallback,
54
+ // skiaActions,
52
55
  ...props
53
56
  }, ref) => {
54
57
  const {
@@ -58,6 +61,7 @@ export const Camera = /*#__PURE__*/React.forwardRef(({
58
61
  * Is there an async task already running?
59
62
  */
60
63
  const isAsyncContextBusy = useSharedValue(false);
64
+ const faces = useSharedValue('[]');
61
65
 
62
66
  /**
63
67
  * Throws logs/errors back on js thread
@@ -73,7 +77,7 @@ export const Camera = /*#__PURE__*/React.forwardRef(({
73
77
  /**
74
78
  * Runs on detection callback on js thread
75
79
  */
76
- const runInJs = useRunInJS(faceDetectionCallback, [faceDetectionCallback]);
80
+ const runOnJs = useRunInJS(faceDetectionCallback, [faceDetectionCallback]);
77
81
 
78
82
  /**
79
83
  * Async context that will handle face detection
@@ -82,11 +86,11 @@ export const Camera = /*#__PURE__*/React.forwardRef(({
82
86
  'worklet';
83
87
 
84
88
  try {
85
- const faces = detectFaces(frame);
89
+ faces.value = JSON.stringify(detectFaces(frame));
86
90
  // increment frame count so we can use frame on
87
91
  // js side without frame processor getting stuck
88
92
  frame.incrementRefCount();
89
- runInJs(faces, frame).finally(() => {
93
+ runOnJs(JSON.parse(faces.value), frame).finally(() => {
90
94
  'worklet';
91
95
 
92
96
  // finally decrement frame count so it can be dropped
@@ -98,7 +102,7 @@ export const Camera = /*#__PURE__*/React.forwardRef(({
98
102
  frame.decrementRefCount();
99
103
  isAsyncContextBusy.value = false;
100
104
  }
101
- }, [detectFaces, runInJs]);
105
+ }, [detectFaces, runOnJs]);
102
106
 
103
107
  /**
104
108
  * Detect faces on frame on an async context without blocking camera preview
@@ -119,42 +123,64 @@ export const Camera = /*#__PURE__*/React.forwardRef(({
119
123
  }
120
124
 
121
125
  /**
122
- * Camera frame processor
126
+ * Skia frame processor
127
+ */
128
+ // NOTE - temporary without skia
129
+ // const skiaFrameProcessor = useSkiaFrameProcessor(
130
+ // (frame) => {
131
+ // 'worklet';
132
+ // frame.render();
133
+ // skiaActions!(JSON.parse(faces.value), frame);
134
+ // runAsync(frame);
135
+ // },
136
+ // [runOnAsyncContext, skiaActions]
137
+ // );
138
+
139
+ /**
140
+ * Default frame processor
123
141
  */
124
- const processorAndroid = useFrameProcessor(frame => {
142
+ const cameraFrameProcessor = useFrameProcessor(frame => {
125
143
  'worklet';
126
144
 
127
145
  runAsync(frame);
128
146
  }, [runOnAsyncContext]);
129
147
 
148
+ /**
149
+ * Camera frame processor
150
+ */
151
+ const frameProcessor = (() => {
152
+ // const { autoMode } = faceDetectionOptions ?? {};
153
+
154
+ // if (!autoMode && !!skiaActions) return skiaFrameProcessor;
155
+
156
+ return cameraFrameProcessor;
157
+ })();
158
+
130
159
  //
131
160
  // use bellow when vision-camera's
132
161
  // context creation issue is solved
133
162
  //
134
- /**
135
- * Runs on detection callback on js thread
136
- */
137
- // const runOnJs = useRunOnJS(faceDetectionCallback, [faceDetectionCallback]);
138
-
139
- // const processorIOS = useFrameProcessor(
140
- // (frame) => {
141
- // 'worklet';
142
- // runOnJs(detectFaces(frame), frame);
143
- // // runAsync(frame, () => {
144
- // // 'worklet';
145
- // // runOnJs(detectFaces(frame), frame);
146
- // // });
147
- // },
148
- // [runOnJs]
149
- // );
163
+ // /**
164
+ // * Runs on detection callback on js thread
165
+ // */
166
+ // const runOnJs = useRunOnJS( faceDetectionCallback, [
167
+ // faceDetectionCallback
168
+ // ] )
169
+
170
+ // const cameraFrameProcessor = useFrameProcessor( ( frame ) => {
171
+ // 'worklet'
172
+ // runAsync( frame, () => {
173
+ // 'worklet'
174
+ // runOnJs(
175
+ // detectFaces( frame ),
176
+ // frame
177
+ // )
178
+ // } )
179
+ // }, [ runOnJs ] )
150
180
 
151
181
  return /*#__PURE__*/_jsx(VisionCamera, {
152
- ref: ref
153
- // frameProcessor={
154
- // Platform.OS === 'android' ? processorAndroid : processorIOS
155
- // }
156
- ,
157
- frameProcessor: processorAndroid,
182
+ ref: ref,
183
+ frameProcessor: frameProcessor,
158
184
  pixelFormat: Platform.OS === 'android' ? 'yuv' : 'rgb',
159
185
  ...props
160
186
  });
@@ -1 +1 @@
1
- {"version":3,"names":["React","Platform","Camera","VisionCamera","useFrameProcessor","Worklets","useSharedValue","useFaceDetector","jsx","_jsx","useWorklet","func","dependencyList","worklet","useMemo","context","defaultContext","createRunAsync","useRunInJS","createRunOnJS","forwardRef","faceDetectionOptions","faceDetectionCallback","props","ref","detectFaces","isAsyncContextBusy","logOnJs","log","error","console","message","JSON","stringify","runInJs","runOnAsyncContext","frame","faces","incrementRefCount","finally","decrementRefCount","value","runAsync","internal","processorAndroid","frameProcessor","pixelFormat","OS"],"sourceRoot":"../../src","sources":["Camera.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["React","useMemo","Platform","Camera","VisionCamera","useFrameProcessor","Worklets","useSharedValue","useFaceDetector","jsx","_jsx","useWorklet","func","dependencyList","worklet","context","defaultContext","createRunAsync","useRunInJS","createRunOnJS","forwardRef","faceDetectionOptions","faceDetectionCallback","props","ref","detectFaces","isAsyncContextBusy","faces","logOnJs","log","error","console","message","JSON","stringify","runOnJs","runOnAsyncContext","frame","value","incrementRefCount","parse","finally","decrementRefCount","runAsync","internal","cameraFrameProcessor","frameProcessor","pixelFormat","OS"],"sourceRoot":"../../src","sources":["Camera.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["useMemo","VisionCameraProxy","createFaceDetectorPlugin","options","plugin","initFrameProcessorPlugin","Error","detectFaces","frame","call","useFaceDetector"],"sourceRoot":"../../src","sources":["FaceDetector.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,iBAAiB,QAAoB,4BAA4B;AA+H1E;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,wBAAwBA,CAC/BC,OAA8B,EACV;EACpB,MAAMC,MAAM,GAAGH,iBAAiB,CAACI,wBAAwB,CAAC,aAAa,EAAE;IACvE,GAAGF;EACL,CAAC,CAAC;EAEF,IAAI,CAACC,MAAM,EAAE;IACX,MAAM,IAAIE,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,OAAO;IACLC,WAAW,EAAGC,KAAY,IAAa;MACrC,SAAS;;MACT;MACA,OAAOJ,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;IAC3B;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,eAAeA,CAC7BP,OAA8B,EACV;EACpB,OAAOH,OAAO,CAAC,MAAME,wBAAwB,CAACC,OAAO,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;AACpE","ignoreList":[]}
1
+ {"version":3,"names":["useMemo","VisionCameraProxy","createFaceDetectorPlugin","options","plugin","initFrameProcessorPlugin","Error","detectFaces","frame","call","useFaceDetector"],"sourceRoot":"../../src","sources":["FaceDetector.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SACEC,iBAAiB,QAGZ,4BAA4B;AAoJnC;AACA;AACA;AACA;AACA;AACA;AACA,SAASC,wBAAwBA,CAC/BC,OAA8B,EACV;EACpB,MAAMC,MAAM,GAAGH,iBAAiB,CAACI,wBAAwB,CAAC,aAAa,EAAE;IACvE,GAAGF;EACL,CAAC,CAAC;EAEF,IAAI,CAACC,MAAM,EAAE;IACX,MAAM,IAAIE,KAAK,CAAC,sDAAsD,CAAC;EACzE;EAEA,OAAO;IACLC,WAAW,EAAGC,KAAY,IAAa;MACrC,SAAS;;MACT;MACA,OAAOJ,MAAM,CAACK,IAAI,CAACD,KAAK,CAAC;IAC3B;EACF,CAAC;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASE,eAAeA,CAC7BP,OAA8B,EACV;EACpB,OAAOH,OAAO,CAAC,MAAME,wBAAwB,CAACC,OAAO,CAAC,EAAE,CAACA,OAAO,CAAC,CAAC;AACpE","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../../src/Camera.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,MAAM,IAAI,YAAY,EAEvB,MAAM,4BAA4B,CAAC;AAUpC,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EAEN,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AASjE,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA4C1E;;;;;GAKG;AACH,eAAO,MAAM,MAAM;2BA/CM,oBAAoB;2BACpB,YAAY;oDAgKpC,CAAC"}
1
+ {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../../src/Camera.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EACL,MAAM,IAAI,YAAY,EAGvB,MAAM,4BAA4B,CAAC;AAUpC,OAAO,KAAK,EACV,WAAW,EAEX,KAAK,EAEN,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AASjE,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA2C1E;;;;;GAKG;AACH,eAAO,MAAM,MAAM;2BA9CM,oBAAoB;2BACpB,YAAY;oDA4LpC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type Frame } from 'react-native-vision-camera';
1
+ import { type CameraPosition, type Frame } from 'react-native-vision-camera';
2
2
  type FaceDetectorPlugin = {
3
3
  /**
4
4
  * Detect faces on frame
@@ -19,9 +19,9 @@ export interface Face {
19
19
  leftEyeOpenProbability: number;
20
20
  rightEyeOpenProbability: number;
21
21
  smilingProbability: number;
22
- contours: Contours;
23
- landmarks: Landmarks;
24
- data: any;
22
+ contours?: Contours;
23
+ landmarks?: Landmarks;
24
+ data: number[];
25
25
  }
26
26
  export interface Bounds {
27
27
  width: number;
@@ -98,13 +98,31 @@ export interface FaceDetectionOptions {
98
98
  */
99
99
  trackingEnabled?: boolean;
100
100
  /**
101
- * Should auto scale face bounds, contour and landmarks on native side?
101
+ * Should handle auto scale (face bounds, contour and landmarks) and rotation on native side?
102
102
  * This option should be disabled if you want to draw on frame using `Skia Frame Processor`.
103
103
  * See [this](https://github.com/luicfrr/react-native-vision-camera-face-detector/issues/30#issuecomment-2058805546) and [this](https://github.com/luicfrr/react-native-vision-camera-face-detector/issues/35) for more details.
104
104
  *
105
105
  * @default false
106
106
  */
107
- autoScale?: boolean;
107
+ autoMode?: boolean;
108
+ /**
109
+ * Required if you want to use `autoMode`. You must handle your own logic to get screen sizes, with or without statusbar size, etc...
110
+ *
111
+ * @default 1.0
112
+ */
113
+ windowWidth?: number;
114
+ /**
115
+ * Required if you want to use `autoMode`. You must handle your own logic to get screen sizes, with or without statusbar size, etc...
116
+ *
117
+ * @default 1.0
118
+ */
119
+ windowHeight?: number;
120
+ /**
121
+ * Current active camera
122
+ *
123
+ * @default front
124
+ */
125
+ cameraFacing?: CameraPosition;
108
126
  /**
109
127
  * for enable/disable tensorflow lite logic, just face detection
110
128
  */
@@ -1 +1 @@
1
- {"version":3,"file":"FaceDetector.d.ts","sourceRoot":"","sources":["../../../../src/FaceDetector.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAE3E,KAAK,kBAAkB,GAAG;IACxB;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;CACvC,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC;CACX;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,mBAAmB,EAAE,KAAK,EAAE,CAAC;IAC7B,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC3B,oBAAoB,EAAE,KAAK,EAAE,CAAC;IAC9B,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,WAAW,EAAE,KAAK,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,KAAK,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;IAChB,YAAY,EAAE,KAAK,CAAC;IACpB,UAAU,EAAE,KAAK,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAEtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA4BD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,kBAAkB,CAEpB"}
1
+ {"version":3,"file":"FaceDetector.d.ts","sourceRoot":"","sources":["../../../../src/FaceDetector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../../src/Camera.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EACL,MAAM,IAAI,YAAY,EAEvB,MAAM,4BAA4B,CAAC;AAUpC,OAAO,KAAK,EACV,WAAW,EACX,KAAK,EAEN,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AASjE,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA4C1E;;;;;GAKG;AACH,eAAO,MAAM,MAAM;2BA/CM,oBAAoB;2BACpB,YAAY;oDAgKpC,CAAC"}
1
+ {"version":3,"file":"Camera.d.ts","sourceRoot":"","sources":["../../../../src/Camera.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAkB,MAAM,OAAO,CAAC;AAEvC,OAAO,EACL,MAAM,IAAI,YAAY,EAGvB,MAAM,4BAA4B,CAAC;AAUpC,OAAO,KAAK,EACV,WAAW,EAEX,KAAK,EAEN,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,IAAI,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AASjE,KAAK,YAAY,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,KAAK,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AA2C1E;;;;;GAKG;AACH,eAAO,MAAM,MAAM;2BA9CM,oBAAoB;2BACpB,YAAY;oDA4LpC,CAAC"}
@@ -1,4 +1,4 @@
1
- import { type Frame } from 'react-native-vision-camera';
1
+ import { type CameraPosition, type Frame } from 'react-native-vision-camera';
2
2
  type FaceDetectorPlugin = {
3
3
  /**
4
4
  * Detect faces on frame
@@ -19,9 +19,9 @@ export interface Face {
19
19
  leftEyeOpenProbability: number;
20
20
  rightEyeOpenProbability: number;
21
21
  smilingProbability: number;
22
- contours: Contours;
23
- landmarks: Landmarks;
24
- data: any;
22
+ contours?: Contours;
23
+ landmarks?: Landmarks;
24
+ data: number[];
25
25
  }
26
26
  export interface Bounds {
27
27
  width: number;
@@ -98,13 +98,31 @@ export interface FaceDetectionOptions {
98
98
  */
99
99
  trackingEnabled?: boolean;
100
100
  /**
101
- * Should auto scale face bounds, contour and landmarks on native side?
101
+ * Should handle auto scale (face bounds, contour and landmarks) and rotation on native side?
102
102
  * This option should be disabled if you want to draw on frame using `Skia Frame Processor`.
103
103
  * See [this](https://github.com/luicfrr/react-native-vision-camera-face-detector/issues/30#issuecomment-2058805546) and [this](https://github.com/luicfrr/react-native-vision-camera-face-detector/issues/35) for more details.
104
104
  *
105
105
  * @default false
106
106
  */
107
- autoScale?: boolean;
107
+ autoMode?: boolean;
108
+ /**
109
+ * Required if you want to use `autoMode`. You must handle your own logic to get screen sizes, with or without statusbar size, etc...
110
+ *
111
+ * @default 1.0
112
+ */
113
+ windowWidth?: number;
114
+ /**
115
+ * Required if you want to use `autoMode`. You must handle your own logic to get screen sizes, with or without statusbar size, etc...
116
+ *
117
+ * @default 1.0
118
+ */
119
+ windowHeight?: number;
120
+ /**
121
+ * Current active camera
122
+ *
123
+ * @default front
124
+ */
125
+ cameraFacing?: CameraPosition;
108
126
  /**
109
127
  * for enable/disable tensorflow lite logic, just face detection
110
128
  */
@@ -1 +1 @@
1
- {"version":3,"file":"FaceDetector.d.ts","sourceRoot":"","sources":["../../../../src/FaceDetector.ts"],"names":[],"mappings":"AACA,OAAO,EAAqB,KAAK,KAAK,EAAE,MAAM,4BAA4B,CAAC;AAE3E,KAAK,kBAAkB,GAAG;IACxB;;;;OAIG;IACH,WAAW,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAAE,CAAC;CACvC,CAAC;AAEF,KAAK,KAAK,GAAG;IACX,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX,CAAC;AAEF,MAAM,WAAW,IAAI;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,sBAAsB,EAAE,MAAM,CAAC;IAC/B,uBAAuB,EAAE,MAAM,CAAC;IAChC,kBAAkB,EAAE,MAAM,CAAC;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,SAAS,EAAE,SAAS,CAAC;IACrB,IAAI,EAAE,GAAG,CAAC;CACX;AAED,MAAM,WAAW,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,KAAK,EAAE,CAAC;IACd,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,mBAAmB,EAAE,KAAK,EAAE,CAAC;IAC7B,iBAAiB,EAAE,KAAK,EAAE,CAAC;IAC3B,oBAAoB,EAAE,KAAK,EAAE,CAAC;IAC9B,QAAQ,EAAE,KAAK,EAAE,CAAC;IAClB,SAAS,EAAE,KAAK,EAAE,CAAC;IACnB,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,aAAa,EAAE,KAAK,EAAE,CAAC;IACvB,gBAAgB,EAAE,KAAK,EAAE,CAAC;IAC1B,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,WAAW,EAAE,KAAK,EAAE,CAAC;IACrB,UAAU,EAAE,KAAK,EAAE,CAAC;IACpB,WAAW,EAAE,KAAK,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,KAAK,CAAC;IAClB,QAAQ,EAAE,KAAK,CAAC;IAChB,QAAQ,EAAE,KAAK,CAAC;IAChB,YAAY,EAAE,KAAK,CAAC;IACpB,UAAU,EAAE,KAAK,CAAC;IAClB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,WAAW,EAAE,KAAK,CAAC;IACnB,SAAS,EAAE,KAAK,CAAC;IACjB,SAAS,EAAE,KAAK,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAEtC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAE7B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;IAEpC;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;;OAMG;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAE1B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AA4BD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,OAAO,CAAC,EAAE,oBAAoB,GAC7B,kBAAkB,CAEpB"}
1
+ {"version":3,"file":"FaceDetector.d.ts","sourceRoot":"","sources":["../../../../src/FaceDetector.ts"],"names":[],"mappings":"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"}