Skip to content

Commit eed5a75

Browse files
feat: remove the cameraPosition argument
1 parent 21e8edf commit eed5a75

13 files changed

Lines changed: 41 additions & 1076 deletions

File tree

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

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

10099
export default function VisionCameraScreen() {
101100
const insets = useSafeAreaInsets();
@@ -122,7 +121,7 @@ export default function VisionCameraScreen() {
122121
const format = useMemo(() => {
123122
if (device == null) return undefined;
124123
try {
125-
return getCameraFormat(device, Templates.FrameProcessing);
124+
return getCameraFormat(device, { ...Templates.FrameProcessing });
126125
} catch {
127126
return undefined;
128127
}
@@ -136,10 +135,6 @@ export default function VisionCameraScreen() {
136135
return () => clearTimeout(id);
137136
}, [activeModel]);
138137

139-
useEffect(() => {
140-
cameraPositionSync.setBlocking(cameraPosition);
141-
}, [cameraPosition]);
142-
143138
const handleFpsChange = useCallback((newFps: number, newMs: number) => {
144139
setFps(newFps);
145140
setFrameMs(newMs);
@@ -182,8 +177,6 @@ export default function VisionCameraScreen() {
182177
const taskProps = {
183178
activeModel,
184179
canvasSize,
185-
cameraPosition,
186-
cameraPositionSync,
187180
frameKillSwitch,
188181
onFrameOutputChange: setFrameOutput,
189182
onReadyChange: setIsReady,
@@ -202,7 +195,7 @@ export default function VisionCameraScreen() {
202195
outputs={frameOutput ? [frameOutput] : []}
203196
isActive={isFocused}
204197
format={format}
205-
orientationSource="device"
198+
orientationSource="interface"
206199
/>
207200

208201
{/* 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)