@pose-tracker/pose-estimation-web 0.2.0 → 0.3.0
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.
- package/README.md +6 -2
- package/dist/index.cjs +275 -36
- package/dist/index.d.cts +53 -2
- package/dist/index.d.ts +53 -2
- package/dist/index.js +273 -37
- package/dist/pose-tracker.global.js +3 -3
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _tensorflow_tfjs from '@tensorflow/tfjs';
|
|
2
2
|
|
|
3
3
|
/** Bumped with package.json version (keep in sync). */
|
|
4
|
-
declare const SDK_VERSION = "0.
|
|
4
|
+
declare const SDK_VERSION = "0.3.0";
|
|
5
5
|
declare const SDK_NAME: "posetracker-web";
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -132,6 +132,8 @@ interface EngineBundleDescriptor {
|
|
|
132
132
|
minSdkVersion: string;
|
|
133
133
|
/** True when the version sent in `localVersions.engine` is already current. */
|
|
134
134
|
upToDate?: boolean;
|
|
135
|
+
/** Which interpreter this descriptor is. Absent on older backends = v3. */
|
|
136
|
+
channel?: 'v3' | 'v4';
|
|
135
137
|
}
|
|
136
138
|
interface PoseRuntimePartDescriptor {
|
|
137
139
|
/** Download URL of this part (`GET /api/sdk/pose-runtime?part=...&v=...`). */
|
|
@@ -172,6 +174,11 @@ interface ConfigureRequest {
|
|
|
172
174
|
poseRuntime?: string | null;
|
|
173
175
|
engine?: string | null;
|
|
174
176
|
};
|
|
177
|
+
/**
|
|
178
|
+
* Which remote engine to download. Default / omitted = v3 (production).
|
|
179
|
+
* `v4` is opt-in (heuristic catalog: squat, shoulder_roll, …).
|
|
180
|
+
*/
|
|
181
|
+
engineChannel?: 'v3' | 'v4';
|
|
175
182
|
}
|
|
176
183
|
interface PlanInfo {
|
|
177
184
|
plan: string;
|
|
@@ -202,6 +209,13 @@ interface SdkManifest {
|
|
|
202
209
|
expiresAt: number;
|
|
203
210
|
}
|
|
204
211
|
|
|
212
|
+
/** Opt-in remote engine channel. Default is production V3. */
|
|
213
|
+
type EngineChannel = 'v3' | 'v4';
|
|
214
|
+
/** Movements that exist only in the V4 catalog (not in V3 FSM / Strapi). */
|
|
215
|
+
declare const V4_ONLY_EXERCISE_IDS: readonly ["shoulder_roll", "shoulder_deep_breath", "chair_forward_fold"];
|
|
216
|
+
declare function normalizeEngineChannel(raw?: string | null): EngineChannel;
|
|
217
|
+
declare function requiresEngineV4(exerciseId: string): boolean;
|
|
218
|
+
|
|
205
219
|
/**
|
|
206
220
|
* Handshake client: `configure(apiToken)` → Strapi `SdkManifest`.
|
|
207
221
|
* Same endpoint as RN light; `targetPlatform: 'web'`, `sdkName: posetracker-web`.
|
|
@@ -213,6 +227,11 @@ interface ConfigureOptions {
|
|
|
213
227
|
poseModelProfile?: PoseModelProfile;
|
|
214
228
|
locale?: string;
|
|
215
229
|
localVersions?: ConfigureRequest['localVersions'];
|
|
230
|
+
/**
|
|
231
|
+
* Opt-in V4 heuristic engine. Default `'v3'` (production FSM).
|
|
232
|
+
* Set `'v4'` at init — the handshake downloads `engine-v4.bundle.js`.
|
|
233
|
+
*/
|
|
234
|
+
engine?: EngineChannel;
|
|
216
235
|
}
|
|
217
236
|
declare class ConfigureError extends Error {
|
|
218
237
|
readonly code: 'invalid_token' | 'quota_exceeded' | 'network' | 'internal';
|
|
@@ -716,6 +735,13 @@ interface PoseTrackerEngine {
|
|
|
716
735
|
createSession(options: EngineSessionOptions, emit: EventSink): EngineSession;
|
|
717
736
|
/** Engine >= 1.2.0: custom exercises shipped in the bundle (jump analysis…). */
|
|
718
737
|
listCustomExercises?(): CustomExerciseDescriptor[];
|
|
738
|
+
/** Engine V4 catalog (opt-in channel). Absent on V3 bundles. */
|
|
739
|
+
listExercises?(): Array<{
|
|
740
|
+
id: string;
|
|
741
|
+
displayName: string;
|
|
742
|
+
type: string;
|
|
743
|
+
description?: string;
|
|
744
|
+
}>;
|
|
719
745
|
/** Engine >= 1.2.0: start a custom exercise session (placement + jump_* events). */
|
|
720
746
|
createCustomSession?(options: CustomSessionOptions, emit: EventSink): EngineSession;
|
|
721
747
|
}
|
|
@@ -1008,6 +1034,12 @@ interface PoseTrackerClientOptions extends ConfigureOptions {
|
|
|
1008
1034
|
/** Convenience with `source: 'video' | 'image'` (string / File / Blob). */
|
|
1009
1035
|
sourceUrl?: string;
|
|
1010
1036
|
sourceFile?: File | Blob;
|
|
1037
|
+
/**
|
|
1038
|
+
* Still-image inference. Default `single`: one full-frame SinglePose pass
|
|
1039
|
+
* (no EMA / no ROI). `tracked`: treat analyze() as video frames — EMA +
|
|
1040
|
+
* previous-pose crop so each shot can refine the last skeleton.
|
|
1041
|
+
*/
|
|
1042
|
+
stillMode?: 'single' | 'tracked';
|
|
1011
1043
|
}
|
|
1012
1044
|
/** @deprecated Prefer PoseTrackerClientOptions — kept for vanilla DX. */
|
|
1013
1045
|
type PoseTrackerOptions = PoseTrackerClientOptions;
|
|
@@ -1108,8 +1140,11 @@ declare class PoseTrackerClient {
|
|
|
1108
1140
|
dispose(): Promise<void>;
|
|
1109
1141
|
configure(apiToken?: string): Promise<boolean>;
|
|
1110
1142
|
getAvailableExercises(): ExerciseConfig[];
|
|
1143
|
+
getEngineChannel(): EngineChannel;
|
|
1144
|
+
private v4ExerciseConfig;
|
|
1111
1145
|
getAvailableCustomExercises(): CustomExerciseDescriptor[];
|
|
1112
1146
|
startExercise(exerciseId: string, options?: StartExerciseOptions): void;
|
|
1147
|
+
private beginEngineSession;
|
|
1113
1148
|
private startCustomExercise;
|
|
1114
1149
|
stopExercise(): void;
|
|
1115
1150
|
getCurrentExerciseId(): string | null;
|
|
@@ -1161,6 +1196,9 @@ interface Letterbox {
|
|
|
1161
1196
|
drawH: number;
|
|
1162
1197
|
vw: number;
|
|
1163
1198
|
vh: number;
|
|
1199
|
+
/** Window top-left in original media pixels (still-image video simulation). */
|
|
1200
|
+
originX?: number;
|
|
1201
|
+
originY?: number;
|
|
1164
1202
|
}
|
|
1165
1203
|
interface DetectorFrameResult {
|
|
1166
1204
|
/** Raw model output used for skeleton mapping (MoveNet: Float32Array length 51). */
|
|
@@ -1191,7 +1229,11 @@ interface PoseDetectorAdapter {
|
|
|
1191
1229
|
facingMode: 'user' | 'environment';
|
|
1192
1230
|
displayWidth: number;
|
|
1193
1231
|
displayHeight: number;
|
|
1232
|
+
/** EMA across frames. Default true. Stills may pass true to simulate a short clip. */
|
|
1233
|
+
temporalSmooth?: boolean;
|
|
1194
1234
|
}): Promise<DetectorFrameResult | null>;
|
|
1235
|
+
/** Optional: clear temporal filters when the media source changes. */
|
|
1236
|
+
resetTemporal?(): void;
|
|
1195
1237
|
dispose(): void;
|
|
1196
1238
|
}
|
|
1197
1239
|
interface CreateAdapterContext {
|
|
@@ -1211,6 +1253,9 @@ declare class MoveNetGraphAdapter implements PoseDetectorAdapter {
|
|
|
1211
1253
|
private offscreen;
|
|
1212
1254
|
private offCtx;
|
|
1213
1255
|
private smoothed;
|
|
1256
|
+
private lastVideoKps;
|
|
1257
|
+
private stillPass;
|
|
1258
|
+
private inferLb;
|
|
1214
1259
|
private letterbox;
|
|
1215
1260
|
constructor(ctx: CreateAdapterContext);
|
|
1216
1261
|
getBackend(): string | null;
|
|
@@ -1222,7 +1267,10 @@ declare class MoveNetGraphAdapter implements PoseDetectorAdapter {
|
|
|
1222
1267
|
facingMode: 'user' | 'environment';
|
|
1223
1268
|
displayWidth: number;
|
|
1224
1269
|
displayHeight: number;
|
|
1270
|
+
temporalSmooth?: boolean;
|
|
1225
1271
|
}): Promise<DetectorFrameResult | null>;
|
|
1272
|
+
/** Clear EMA state (call when the still / clip changes). */
|
|
1273
|
+
resetTemporal(): void;
|
|
1226
1274
|
dispose(): void;
|
|
1227
1275
|
}
|
|
1228
1276
|
/** Map video keypoints → object-fit:cover display pixels for drawing. */
|
|
@@ -1251,7 +1299,10 @@ declare class BlazePoseAdapter implements PoseDetectorAdapter {
|
|
|
1251
1299
|
facingMode: 'user' | 'environment';
|
|
1252
1300
|
displayWidth: number;
|
|
1253
1301
|
displayHeight: number;
|
|
1302
|
+
temporalSmooth?: boolean;
|
|
1254
1303
|
}): Promise<DetectorFrameResult | null>;
|
|
1304
|
+
/** Clear cached ROI / landmark filters (call when the still changes). */
|
|
1305
|
+
resetTemporal(): void;
|
|
1255
1306
|
dispose(): void;
|
|
1256
1307
|
}
|
|
1257
1308
|
|
|
@@ -1411,4 +1462,4 @@ declare function findExerciseByIdOrAlias<T extends {
|
|
|
1411
1462
|
id: string;
|
|
1412
1463
|
}>(exerciseId: string, exercises: readonly T[]): T | undefined;
|
|
1413
1464
|
|
|
1414
|
-
export { type AccelerationDiagnostics, type AccelerationState, type AngleValue, type AnglesEvent, BRAND_COLORS, BlazePoseAdapter, type BlazePoseModelType, COCO_KEYPOINT_NAMES, COMBINED_REFERENCE_EXERCISE_MESSAGE, type CameraFacingMode, type CameraOptions, type CameraPoseSource, type ClassicMessageListener, type ClassicNativeMessage, type CocoKeypointName, type ColdStartMode, ConfigureError, type ConfigureOptions, type ConfigureRequest, type CounterEvent, type CounterFormScore, type CustomExerciseDescriptor, type CustomSessionOptions, DEFAULT_BASE_URL, DEFAULT_FEATURES, DEFAULT_LOADING_TEXT, DEFAULT_MOVENET_LIGHTNING_URL, DEFAULT_SKELETON, DEFAULT_SKELETON_DEFINITION, type DetectorFrameResult, type DiagnosticListener, EXERCISE_ALIASES, type EngineBundleDescriptor, type EngineLoadResult, EngineLoader, type EngineLoaderOptions, type EngineSession, type EngineSessionFeatures, type EngineSessionOptions, type ErrorEvent, type EventSink, type ExerciseConfig, type ExerciseSummaryEvent, FREE_PLAN_FEATURES_MESSAGE, type FetchSkeletonOptions, type FileStore, type FormGrade, type FormScoreEvent, INVALID_TOKEN_MESSAGE, type ImagePoseSource, type InferenceRuntime, type InitialPosture, type InitializationEvent, type InitializationStep, type JumpCalibrationEvent, type JumpDiscardedEvent, type JumpHeightEvent, type JumpResultEvent, type JumpStartedEvent, type JumpSummaryEntry, type JumpSummaryEvent, type KeyValueStore, type Keypoint, type KeypointName, type KeypointsEvent, type MinGrade, type ModelDescriptor, type ModelFormat, type ModelsByProfile, MoveNetGraphAdapter, type MovementDefinition, type MovementRecommendation, type MovementStep, type MovementStepParameter, ONLINE_POSE_DETECTION_VERSION, ONLINE_TFJS_VERSION, POSETRACKER_LOGO_URL, type PerformanceWarningEvent, type PlanInfo, type Pose, PoseCamera, PoseCamera_mount, type PoseDetectionModule, type PoseDetectorAdapter, type PoseEstimateInput, type PoseModelAlias, type PoseModelKind, type PoseModelProfile, type PoseRuntimeDescriptor, type PoseRuntimePartDescriptor, type PoseSource, type PoseSourceProps, type PoseSourceType, type PoseTracker, type PoseTrackerCallbacks, PoseTrackerClient, type PoseTrackerClientOptions, type PoseTrackerEngine, type PoseTrackerEvent, type PoseTrackerEventListener, type PoseTrackerEventType, type PoseTrackerFeatures, type PoseTrackerMode, type PoseTrackerOptions, type PoseTrackerStatus, type PostureEvent, type PreloadOptions, type ProgressionEvent, type QualityChangedEvent, type RecommendationsEvent, type ReferenceMovementDescriptor, type RepSummary, type ResolvePoseModelOptions, type ResolvedFeatures, type ResolvedPoseModel, type RuntimeDownloadProgressEvent, SDK_NAME, SDK_VERSION, type SdkManifest, type SkeletonAnglesStyle, type SkeletonCirclesStyle, type SkeletonDefinition, SkeletonFetchError, type SkeletonLinesStyle, type StartExerciseOptions, type StatsEvent, type TfModule, type TfjsCdnUrls, TrackError, type TrackRequest, type TrackResponse, UsageTracker, type UsageTrackerOptions, type VideoPoseSource, type VisibleHipsInfo, type WarningEvent, configure, createLocalFileStore, createLocalKeyValueStore, createMemoryFileStore, createPoseAdapter, createPoseTracker, createWebFileStore, defaultPoseDetectionCdnUrl, defaultTfjsCdnUrls, drawSkeleton, featureNotSupportedMessage, fetchSkeletonDefinition, findExerciseByIdOrAlias, freeBlockedFeatures, initWebGlBackend, isPaidPlan, mapVideoKeypointsToDisplay, mountDomShell, normalizePoseSource, openCameraStream, resolveExerciseName, resolveFeatures, resolvePoseDetection, resolvePoseModel, resolveTf, shouldShowWatermark, stopMediaStream, toClassicNativeMessage };
|
|
1465
|
+
export { type AccelerationDiagnostics, type AccelerationState, type AngleValue, type AnglesEvent, BRAND_COLORS, BlazePoseAdapter, type BlazePoseModelType, COCO_KEYPOINT_NAMES, COMBINED_REFERENCE_EXERCISE_MESSAGE, type CameraFacingMode, type CameraOptions, type CameraPoseSource, type ClassicMessageListener, type ClassicNativeMessage, type CocoKeypointName, type ColdStartMode, ConfigureError, type ConfigureOptions, type ConfigureRequest, type CounterEvent, type CounterFormScore, type CustomExerciseDescriptor, type CustomSessionOptions, DEFAULT_BASE_URL, DEFAULT_FEATURES, DEFAULT_LOADING_TEXT, DEFAULT_MOVENET_LIGHTNING_URL, DEFAULT_SKELETON, DEFAULT_SKELETON_DEFINITION, type DetectorFrameResult, type DiagnosticListener, EXERCISE_ALIASES, type EngineBundleDescriptor, type EngineChannel, type EngineLoadResult, EngineLoader, type EngineLoaderOptions, type EngineSession, type EngineSessionFeatures, type EngineSessionOptions, type ErrorEvent, type EventSink, type ExerciseConfig, type ExerciseSummaryEvent, FREE_PLAN_FEATURES_MESSAGE, type FetchSkeletonOptions, type FileStore, type FormGrade, type FormScoreEvent, INVALID_TOKEN_MESSAGE, type ImagePoseSource, type InferenceRuntime, type InitialPosture, type InitializationEvent, type InitializationStep, type JumpCalibrationEvent, type JumpDiscardedEvent, type JumpHeightEvent, type JumpResultEvent, type JumpStartedEvent, type JumpSummaryEntry, type JumpSummaryEvent, type KeyValueStore, type Keypoint, type KeypointName, type KeypointsEvent, type MinGrade, type ModelDescriptor, type ModelFormat, type ModelsByProfile, MoveNetGraphAdapter, type MovementDefinition, type MovementRecommendation, type MovementStep, type MovementStepParameter, ONLINE_POSE_DETECTION_VERSION, ONLINE_TFJS_VERSION, POSETRACKER_LOGO_URL, type PerformanceWarningEvent, type PlanInfo, type Pose, PoseCamera, PoseCamera_mount, type PoseDetectionModule, type PoseDetectorAdapter, type PoseEstimateInput, type PoseModelAlias, type PoseModelKind, type PoseModelProfile, type PoseRuntimeDescriptor, type PoseRuntimePartDescriptor, type PoseSource, type PoseSourceProps, type PoseSourceType, type PoseTracker, type PoseTrackerCallbacks, PoseTrackerClient, type PoseTrackerClientOptions, type PoseTrackerEngine, type PoseTrackerEvent, type PoseTrackerEventListener, type PoseTrackerEventType, type PoseTrackerFeatures, type PoseTrackerMode, type PoseTrackerOptions, type PoseTrackerStatus, type PostureEvent, type PreloadOptions, type ProgressionEvent, type QualityChangedEvent, type RecommendationsEvent, type ReferenceMovementDescriptor, type RepSummary, type ResolvePoseModelOptions, type ResolvedFeatures, type ResolvedPoseModel, type RuntimeDownloadProgressEvent, SDK_NAME, SDK_VERSION, type SdkManifest, type SkeletonAnglesStyle, type SkeletonCirclesStyle, type SkeletonDefinition, SkeletonFetchError, type SkeletonLinesStyle, type StartExerciseOptions, type StatsEvent, type TfModule, type TfjsCdnUrls, TrackError, type TrackRequest, type TrackResponse, UsageTracker, type UsageTrackerOptions, V4_ONLY_EXERCISE_IDS, type VideoPoseSource, type VisibleHipsInfo, type WarningEvent, configure, createLocalFileStore, createLocalKeyValueStore, createMemoryFileStore, createPoseAdapter, createPoseTracker, createWebFileStore, defaultPoseDetectionCdnUrl, defaultTfjsCdnUrls, drawSkeleton, featureNotSupportedMessage, fetchSkeletonDefinition, findExerciseByIdOrAlias, freeBlockedFeatures, initWebGlBackend, isPaidPlan, mapVideoKeypointsToDisplay, mountDomShell, normalizeEngineChannel, normalizePoseSource, openCameraStream, requiresEngineV4, resolveExerciseName, resolveFeatures, resolvePoseDetection, resolvePoseModel, resolveTf, shouldShowWatermark, stopMediaStream, toClassicNativeMessage };
|
package/dist/index.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as _tensorflow_tfjs from '@tensorflow/tfjs';
|
|
2
2
|
|
|
3
3
|
/** Bumped with package.json version (keep in sync). */
|
|
4
|
-
declare const SDK_VERSION = "0.
|
|
4
|
+
declare const SDK_VERSION = "0.3.0";
|
|
5
5
|
declare const SDK_NAME: "posetracker-web";
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -132,6 +132,8 @@ interface EngineBundleDescriptor {
|
|
|
132
132
|
minSdkVersion: string;
|
|
133
133
|
/** True when the version sent in `localVersions.engine` is already current. */
|
|
134
134
|
upToDate?: boolean;
|
|
135
|
+
/** Which interpreter this descriptor is. Absent on older backends = v3. */
|
|
136
|
+
channel?: 'v3' | 'v4';
|
|
135
137
|
}
|
|
136
138
|
interface PoseRuntimePartDescriptor {
|
|
137
139
|
/** Download URL of this part (`GET /api/sdk/pose-runtime?part=...&v=...`). */
|
|
@@ -172,6 +174,11 @@ interface ConfigureRequest {
|
|
|
172
174
|
poseRuntime?: string | null;
|
|
173
175
|
engine?: string | null;
|
|
174
176
|
};
|
|
177
|
+
/**
|
|
178
|
+
* Which remote engine to download. Default / omitted = v3 (production).
|
|
179
|
+
* `v4` is opt-in (heuristic catalog: squat, shoulder_roll, …).
|
|
180
|
+
*/
|
|
181
|
+
engineChannel?: 'v3' | 'v4';
|
|
175
182
|
}
|
|
176
183
|
interface PlanInfo {
|
|
177
184
|
plan: string;
|
|
@@ -202,6 +209,13 @@ interface SdkManifest {
|
|
|
202
209
|
expiresAt: number;
|
|
203
210
|
}
|
|
204
211
|
|
|
212
|
+
/** Opt-in remote engine channel. Default is production V3. */
|
|
213
|
+
type EngineChannel = 'v3' | 'v4';
|
|
214
|
+
/** Movements that exist only in the V4 catalog (not in V3 FSM / Strapi). */
|
|
215
|
+
declare const V4_ONLY_EXERCISE_IDS: readonly ["shoulder_roll", "shoulder_deep_breath", "chair_forward_fold"];
|
|
216
|
+
declare function normalizeEngineChannel(raw?: string | null): EngineChannel;
|
|
217
|
+
declare function requiresEngineV4(exerciseId: string): boolean;
|
|
218
|
+
|
|
205
219
|
/**
|
|
206
220
|
* Handshake client: `configure(apiToken)` → Strapi `SdkManifest`.
|
|
207
221
|
* Same endpoint as RN light; `targetPlatform: 'web'`, `sdkName: posetracker-web`.
|
|
@@ -213,6 +227,11 @@ interface ConfigureOptions {
|
|
|
213
227
|
poseModelProfile?: PoseModelProfile;
|
|
214
228
|
locale?: string;
|
|
215
229
|
localVersions?: ConfigureRequest['localVersions'];
|
|
230
|
+
/**
|
|
231
|
+
* Opt-in V4 heuristic engine. Default `'v3'` (production FSM).
|
|
232
|
+
* Set `'v4'` at init — the handshake downloads `engine-v4.bundle.js`.
|
|
233
|
+
*/
|
|
234
|
+
engine?: EngineChannel;
|
|
216
235
|
}
|
|
217
236
|
declare class ConfigureError extends Error {
|
|
218
237
|
readonly code: 'invalid_token' | 'quota_exceeded' | 'network' | 'internal';
|
|
@@ -716,6 +735,13 @@ interface PoseTrackerEngine {
|
|
|
716
735
|
createSession(options: EngineSessionOptions, emit: EventSink): EngineSession;
|
|
717
736
|
/** Engine >= 1.2.0: custom exercises shipped in the bundle (jump analysis…). */
|
|
718
737
|
listCustomExercises?(): CustomExerciseDescriptor[];
|
|
738
|
+
/** Engine V4 catalog (opt-in channel). Absent on V3 bundles. */
|
|
739
|
+
listExercises?(): Array<{
|
|
740
|
+
id: string;
|
|
741
|
+
displayName: string;
|
|
742
|
+
type: string;
|
|
743
|
+
description?: string;
|
|
744
|
+
}>;
|
|
719
745
|
/** Engine >= 1.2.0: start a custom exercise session (placement + jump_* events). */
|
|
720
746
|
createCustomSession?(options: CustomSessionOptions, emit: EventSink): EngineSession;
|
|
721
747
|
}
|
|
@@ -1008,6 +1034,12 @@ interface PoseTrackerClientOptions extends ConfigureOptions {
|
|
|
1008
1034
|
/** Convenience with `source: 'video' | 'image'` (string / File / Blob). */
|
|
1009
1035
|
sourceUrl?: string;
|
|
1010
1036
|
sourceFile?: File | Blob;
|
|
1037
|
+
/**
|
|
1038
|
+
* Still-image inference. Default `single`: one full-frame SinglePose pass
|
|
1039
|
+
* (no EMA / no ROI). `tracked`: treat analyze() as video frames — EMA +
|
|
1040
|
+
* previous-pose crop so each shot can refine the last skeleton.
|
|
1041
|
+
*/
|
|
1042
|
+
stillMode?: 'single' | 'tracked';
|
|
1011
1043
|
}
|
|
1012
1044
|
/** @deprecated Prefer PoseTrackerClientOptions — kept for vanilla DX. */
|
|
1013
1045
|
type PoseTrackerOptions = PoseTrackerClientOptions;
|
|
@@ -1108,8 +1140,11 @@ declare class PoseTrackerClient {
|
|
|
1108
1140
|
dispose(): Promise<void>;
|
|
1109
1141
|
configure(apiToken?: string): Promise<boolean>;
|
|
1110
1142
|
getAvailableExercises(): ExerciseConfig[];
|
|
1143
|
+
getEngineChannel(): EngineChannel;
|
|
1144
|
+
private v4ExerciseConfig;
|
|
1111
1145
|
getAvailableCustomExercises(): CustomExerciseDescriptor[];
|
|
1112
1146
|
startExercise(exerciseId: string, options?: StartExerciseOptions): void;
|
|
1147
|
+
private beginEngineSession;
|
|
1113
1148
|
private startCustomExercise;
|
|
1114
1149
|
stopExercise(): void;
|
|
1115
1150
|
getCurrentExerciseId(): string | null;
|
|
@@ -1161,6 +1196,9 @@ interface Letterbox {
|
|
|
1161
1196
|
drawH: number;
|
|
1162
1197
|
vw: number;
|
|
1163
1198
|
vh: number;
|
|
1199
|
+
/** Window top-left in original media pixels (still-image video simulation). */
|
|
1200
|
+
originX?: number;
|
|
1201
|
+
originY?: number;
|
|
1164
1202
|
}
|
|
1165
1203
|
interface DetectorFrameResult {
|
|
1166
1204
|
/** Raw model output used for skeleton mapping (MoveNet: Float32Array length 51). */
|
|
@@ -1191,7 +1229,11 @@ interface PoseDetectorAdapter {
|
|
|
1191
1229
|
facingMode: 'user' | 'environment';
|
|
1192
1230
|
displayWidth: number;
|
|
1193
1231
|
displayHeight: number;
|
|
1232
|
+
/** EMA across frames. Default true. Stills may pass true to simulate a short clip. */
|
|
1233
|
+
temporalSmooth?: boolean;
|
|
1194
1234
|
}): Promise<DetectorFrameResult | null>;
|
|
1235
|
+
/** Optional: clear temporal filters when the media source changes. */
|
|
1236
|
+
resetTemporal?(): void;
|
|
1195
1237
|
dispose(): void;
|
|
1196
1238
|
}
|
|
1197
1239
|
interface CreateAdapterContext {
|
|
@@ -1211,6 +1253,9 @@ declare class MoveNetGraphAdapter implements PoseDetectorAdapter {
|
|
|
1211
1253
|
private offscreen;
|
|
1212
1254
|
private offCtx;
|
|
1213
1255
|
private smoothed;
|
|
1256
|
+
private lastVideoKps;
|
|
1257
|
+
private stillPass;
|
|
1258
|
+
private inferLb;
|
|
1214
1259
|
private letterbox;
|
|
1215
1260
|
constructor(ctx: CreateAdapterContext);
|
|
1216
1261
|
getBackend(): string | null;
|
|
@@ -1222,7 +1267,10 @@ declare class MoveNetGraphAdapter implements PoseDetectorAdapter {
|
|
|
1222
1267
|
facingMode: 'user' | 'environment';
|
|
1223
1268
|
displayWidth: number;
|
|
1224
1269
|
displayHeight: number;
|
|
1270
|
+
temporalSmooth?: boolean;
|
|
1225
1271
|
}): Promise<DetectorFrameResult | null>;
|
|
1272
|
+
/** Clear EMA state (call when the still / clip changes). */
|
|
1273
|
+
resetTemporal(): void;
|
|
1226
1274
|
dispose(): void;
|
|
1227
1275
|
}
|
|
1228
1276
|
/** Map video keypoints → object-fit:cover display pixels for drawing. */
|
|
@@ -1251,7 +1299,10 @@ declare class BlazePoseAdapter implements PoseDetectorAdapter {
|
|
|
1251
1299
|
facingMode: 'user' | 'environment';
|
|
1252
1300
|
displayWidth: number;
|
|
1253
1301
|
displayHeight: number;
|
|
1302
|
+
temporalSmooth?: boolean;
|
|
1254
1303
|
}): Promise<DetectorFrameResult | null>;
|
|
1304
|
+
/** Clear cached ROI / landmark filters (call when the still changes). */
|
|
1305
|
+
resetTemporal(): void;
|
|
1255
1306
|
dispose(): void;
|
|
1256
1307
|
}
|
|
1257
1308
|
|
|
@@ -1411,4 +1462,4 @@ declare function findExerciseByIdOrAlias<T extends {
|
|
|
1411
1462
|
id: string;
|
|
1412
1463
|
}>(exerciseId: string, exercises: readonly T[]): T | undefined;
|
|
1413
1464
|
|
|
1414
|
-
export { type AccelerationDiagnostics, type AccelerationState, type AngleValue, type AnglesEvent, BRAND_COLORS, BlazePoseAdapter, type BlazePoseModelType, COCO_KEYPOINT_NAMES, COMBINED_REFERENCE_EXERCISE_MESSAGE, type CameraFacingMode, type CameraOptions, type CameraPoseSource, type ClassicMessageListener, type ClassicNativeMessage, type CocoKeypointName, type ColdStartMode, ConfigureError, type ConfigureOptions, type ConfigureRequest, type CounterEvent, type CounterFormScore, type CustomExerciseDescriptor, type CustomSessionOptions, DEFAULT_BASE_URL, DEFAULT_FEATURES, DEFAULT_LOADING_TEXT, DEFAULT_MOVENET_LIGHTNING_URL, DEFAULT_SKELETON, DEFAULT_SKELETON_DEFINITION, type DetectorFrameResult, type DiagnosticListener, EXERCISE_ALIASES, type EngineBundleDescriptor, type EngineLoadResult, EngineLoader, type EngineLoaderOptions, type EngineSession, type EngineSessionFeatures, type EngineSessionOptions, type ErrorEvent, type EventSink, type ExerciseConfig, type ExerciseSummaryEvent, FREE_PLAN_FEATURES_MESSAGE, type FetchSkeletonOptions, type FileStore, type FormGrade, type FormScoreEvent, INVALID_TOKEN_MESSAGE, type ImagePoseSource, type InferenceRuntime, type InitialPosture, type InitializationEvent, type InitializationStep, type JumpCalibrationEvent, type JumpDiscardedEvent, type JumpHeightEvent, type JumpResultEvent, type JumpStartedEvent, type JumpSummaryEntry, type JumpSummaryEvent, type KeyValueStore, type Keypoint, type KeypointName, type KeypointsEvent, type MinGrade, type ModelDescriptor, type ModelFormat, type ModelsByProfile, MoveNetGraphAdapter, type MovementDefinition, type MovementRecommendation, type MovementStep, type MovementStepParameter, ONLINE_POSE_DETECTION_VERSION, ONLINE_TFJS_VERSION, POSETRACKER_LOGO_URL, type PerformanceWarningEvent, type PlanInfo, type Pose, PoseCamera, PoseCamera_mount, type PoseDetectionModule, type PoseDetectorAdapter, type PoseEstimateInput, type PoseModelAlias, type PoseModelKind, type PoseModelProfile, type PoseRuntimeDescriptor, type PoseRuntimePartDescriptor, type PoseSource, type PoseSourceProps, type PoseSourceType, type PoseTracker, type PoseTrackerCallbacks, PoseTrackerClient, type PoseTrackerClientOptions, type PoseTrackerEngine, type PoseTrackerEvent, type PoseTrackerEventListener, type PoseTrackerEventType, type PoseTrackerFeatures, type PoseTrackerMode, type PoseTrackerOptions, type PoseTrackerStatus, type PostureEvent, type PreloadOptions, type ProgressionEvent, type QualityChangedEvent, type RecommendationsEvent, type ReferenceMovementDescriptor, type RepSummary, type ResolvePoseModelOptions, type ResolvedFeatures, type ResolvedPoseModel, type RuntimeDownloadProgressEvent, SDK_NAME, SDK_VERSION, type SdkManifest, type SkeletonAnglesStyle, type SkeletonCirclesStyle, type SkeletonDefinition, SkeletonFetchError, type SkeletonLinesStyle, type StartExerciseOptions, type StatsEvent, type TfModule, type TfjsCdnUrls, TrackError, type TrackRequest, type TrackResponse, UsageTracker, type UsageTrackerOptions, type VideoPoseSource, type VisibleHipsInfo, type WarningEvent, configure, createLocalFileStore, createLocalKeyValueStore, createMemoryFileStore, createPoseAdapter, createPoseTracker, createWebFileStore, defaultPoseDetectionCdnUrl, defaultTfjsCdnUrls, drawSkeleton, featureNotSupportedMessage, fetchSkeletonDefinition, findExerciseByIdOrAlias, freeBlockedFeatures, initWebGlBackend, isPaidPlan, mapVideoKeypointsToDisplay, mountDomShell, normalizePoseSource, openCameraStream, resolveExerciseName, resolveFeatures, resolvePoseDetection, resolvePoseModel, resolveTf, shouldShowWatermark, stopMediaStream, toClassicNativeMessage };
|
|
1465
|
+
export { type AccelerationDiagnostics, type AccelerationState, type AngleValue, type AnglesEvent, BRAND_COLORS, BlazePoseAdapter, type BlazePoseModelType, COCO_KEYPOINT_NAMES, COMBINED_REFERENCE_EXERCISE_MESSAGE, type CameraFacingMode, type CameraOptions, type CameraPoseSource, type ClassicMessageListener, type ClassicNativeMessage, type CocoKeypointName, type ColdStartMode, ConfigureError, type ConfigureOptions, type ConfigureRequest, type CounterEvent, type CounterFormScore, type CustomExerciseDescriptor, type CustomSessionOptions, DEFAULT_BASE_URL, DEFAULT_FEATURES, DEFAULT_LOADING_TEXT, DEFAULT_MOVENET_LIGHTNING_URL, DEFAULT_SKELETON, DEFAULT_SKELETON_DEFINITION, type DetectorFrameResult, type DiagnosticListener, EXERCISE_ALIASES, type EngineBundleDescriptor, type EngineChannel, type EngineLoadResult, EngineLoader, type EngineLoaderOptions, type EngineSession, type EngineSessionFeatures, type EngineSessionOptions, type ErrorEvent, type EventSink, type ExerciseConfig, type ExerciseSummaryEvent, FREE_PLAN_FEATURES_MESSAGE, type FetchSkeletonOptions, type FileStore, type FormGrade, type FormScoreEvent, INVALID_TOKEN_MESSAGE, type ImagePoseSource, type InferenceRuntime, type InitialPosture, type InitializationEvent, type InitializationStep, type JumpCalibrationEvent, type JumpDiscardedEvent, type JumpHeightEvent, type JumpResultEvent, type JumpStartedEvent, type JumpSummaryEntry, type JumpSummaryEvent, type KeyValueStore, type Keypoint, type KeypointName, type KeypointsEvent, type MinGrade, type ModelDescriptor, type ModelFormat, type ModelsByProfile, MoveNetGraphAdapter, type MovementDefinition, type MovementRecommendation, type MovementStep, type MovementStepParameter, ONLINE_POSE_DETECTION_VERSION, ONLINE_TFJS_VERSION, POSETRACKER_LOGO_URL, type PerformanceWarningEvent, type PlanInfo, type Pose, PoseCamera, PoseCamera_mount, type PoseDetectionModule, type PoseDetectorAdapter, type PoseEstimateInput, type PoseModelAlias, type PoseModelKind, type PoseModelProfile, type PoseRuntimeDescriptor, type PoseRuntimePartDescriptor, type PoseSource, type PoseSourceProps, type PoseSourceType, type PoseTracker, type PoseTrackerCallbacks, PoseTrackerClient, type PoseTrackerClientOptions, type PoseTrackerEngine, type PoseTrackerEvent, type PoseTrackerEventListener, type PoseTrackerEventType, type PoseTrackerFeatures, type PoseTrackerMode, type PoseTrackerOptions, type PoseTrackerStatus, type PostureEvent, type PreloadOptions, type ProgressionEvent, type QualityChangedEvent, type RecommendationsEvent, type ReferenceMovementDescriptor, type RepSummary, type ResolvePoseModelOptions, type ResolvedFeatures, type ResolvedPoseModel, type RuntimeDownloadProgressEvent, SDK_NAME, SDK_VERSION, type SdkManifest, type SkeletonAnglesStyle, type SkeletonCirclesStyle, type SkeletonDefinition, SkeletonFetchError, type SkeletonLinesStyle, type StartExerciseOptions, type StatsEvent, type TfModule, type TfjsCdnUrls, TrackError, type TrackRequest, type TrackResponse, UsageTracker, type UsageTrackerOptions, V4_ONLY_EXERCISE_IDS, type VideoPoseSource, type VisibleHipsInfo, type WarningEvent, configure, createLocalFileStore, createLocalKeyValueStore, createMemoryFileStore, createPoseAdapter, createPoseTracker, createWebFileStore, defaultPoseDetectionCdnUrl, defaultTfjsCdnUrls, drawSkeleton, featureNotSupportedMessage, fetchSkeletonDefinition, findExerciseByIdOrAlias, freeBlockedFeatures, initWebGlBackend, isPaidPlan, mapVideoKeypointsToDisplay, mountDomShell, normalizeEngineChannel, normalizePoseSource, openCameraStream, requiresEngineV4, resolveExerciseName, resolveFeatures, resolvePoseDetection, resolvePoseModel, resolveTf, shouldShowWatermark, stopMediaStream, toClassicNativeMessage };
|