Skip to content

Commit e6cebfd

Browse files
feat: remove the cameraPosition argument
1 parent 43d9ce2 commit e6cebfd

File tree

13 files changed

+41
-1076
lines changed

13 files changed

+41
-1076
lines changed

apps/computer-vision/app/vision_camera/index.tsx

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ const TASKS: Task[] = [
8080
// Module-level consts so worklets in task components can always reference the same stable objects.
8181
// Never replaced — only mutated via setBlocking to avoid closure staleness.
8282
const frameKillSwitch = createSynchronizable(false);
83-
const cameraPositionSync = createSynchronizable<'front' | 'back'>('back');
8483

8584
export default function VisionCameraScreen() {
8685
const insets = useSafeAreaInsets();
@@ -107,7 +106,7 @@ export default function VisionCameraScreen() {
107106
const format = useMemo(() => {
108107
if (device == null) return undefined;
109108
try {
110-
return getCameraFormat(device, Templates.FrameProcessing);
109+
return getCameraFormat(device, { ...Templates.FrameProcessing });
111110
} catch {
112111
return undefined;
113112
}
@@ -121,10 +120,6 @@ export default function VisionCameraScreen() {
121120
return () => clearTimeout(id);
122121
}, [activeModel]);
123122

124-
useEffect(() => {
125-
cameraPositionSync.setBlocking(cameraPosition);
126-
}, [cameraPosition]);
127-
128123
const handleFpsChange = useCallback((newFps: number, newMs: number) => {
129124
setFps(newFps);
130125
setFrameMs(newMs);
@@ -167,8 +162,6 @@ export default function VisionCameraScreen() {
167162
const taskProps = {
168163
activeModel,
169164
canvasSize,
170-
cameraPosition,
171-
cameraPositionSync,
172165
frameKillSwitch,
173166
onFrameOutputChange: setFrameOutput,
174167
onReadyChange: setIsReady,
@@ -187,7 +180,7 @@ export default function VisionCameraScreen() {
187180
outputs={frameOutput ? [frameOutput] : []}
188181
isActive={isFocused}
189182
format={format}
190-
orientationSource="device"
183+
orientationSource="interface"
191184
/>
192185

193186
{/* Layout sentinel — measures the full-screen area for bbox/canvas sizing */}

apps/computer-vision/components/vision_camera/tasks/ClassificationTask.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { scheduleOnRN } from 'react-native-worklets';
55
import { EFFICIENTNET_V2_S, useClassification } from 'react-native-executorch';
66
import { TaskProps } from './types';
77

8-
type Props = Omit<TaskProps, 'activeModel' | 'canvasSize' | 'cameraPosition'>;
8+
type Props = Omit<TaskProps, 'activeModel' | 'canvasSize'>;
99

1010
export default function ClassificationTask({
1111
frameKillSwitch,

apps/computer-vision/components/vision_camera/tasks/ObjectDetectionTask.tsx

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ type Props = TaskProps & { activeModel: ObjModelId };
1818
export default function ObjectDetectionTask({
1919
activeModel,
2020
canvasSize,
21-
cameraPositionSync,
2221
frameKillSwitch,
2322
onFrameOutputChange,
2423
onReadyChange,
@@ -81,7 +80,7 @@ export default function ObjectDetectionTask({
8180
}
8281
try {
8382
if (!detRof) return;
84-
const result = detRof(frame, cameraPositionSync.getDirty(), 0.5);
83+
const result = detRof(frame, 0.5);
8584
// C++ maps coords to screen space (portrait: frameH × frameW)
8685
const screenW = frame.height;
8786
const screenH = frame.width;
@@ -98,7 +97,7 @@ export default function ObjectDetectionTask({
9897
frame.dispose();
9998
}
10099
},
101-
[detRof, frameKillSwitch, updateDetections, cameraPositionSync]
100+
[detRof, frameKillSwitch, updateDetections]
102101
),
103102
});
104103

apps/computer-vision/components/vision_camera/tasks/SegmentationTask.tsx

Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,6 @@ type Props = TaskProps & { activeModel: SegModelId };
3737
export default function SegmentationTask({
3838
activeModel,
3939
canvasSize,
40-
cameraPositionSync,
4140
frameKillSwitch,
4241
onFrameOutputChange,
4342
onReadyChange,
@@ -140,7 +139,6 @@ export default function SegmentationTask({
140139
pixelFormat: 'rgb',
141140
dropFramesWhileBusy: true,
142141
enablePreviewSizedOutputBuffers: true,
143-
144142
onFrame: useCallback(
145143
(frame: Frame) => {
146144
'worklet';
@@ -150,12 +148,7 @@ export default function SegmentationTask({
150148
}
151149
try {
152150
if (!segRof) return;
153-
const result = segRof(
154-
frame,
155-
cameraPositionSync.getDirty(),
156-
[],
157-
false
158-
);
151+
const result = segRof(frame, [], false);
159152
if (result?.ARGMAX) {
160153
const argmax: Int32Array = result.ARGMAX;
161154
const side = Math.round(Math.sqrt(argmax.length));
@@ -186,7 +179,7 @@ export default function SegmentationTask({
186179
frame.dispose();
187180
}
188181
},
189-
[cameraPositionSync, colors, frameKillSwitch, segRof, updateMask]
182+
[colors, frameKillSwitch, segRof, updateMask]
190183
),
191184
});
192185

apps/computer-vision/components/vision_camera/tasks/types.ts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,6 @@ import { createSynchronizable } from 'react-native-worklets';
44
export type TaskProps = {
55
activeModel: string;
66
canvasSize: { width: number; height: number };
7-
cameraPosition: 'front' | 'back';
8-
cameraPositionSync: ReturnType<typeof createSynchronizable<'front' | 'back'>>;
97
frameKillSwitch: ReturnType<typeof createSynchronizable<boolean>>;
108
onFrameOutputChange: (frameOutput: ReturnType<typeof useFrameOutput>) => void;
119
onReadyChange: (isReady: boolean) => void;

0 commit comments

Comments
 (0)