@nitro-mlkit/pose-detection 0.1.0-beta.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.
Files changed (47) hide show
  1. package/LICENSE +21 -0
  2. package/NitroMLKitPose.podspec +34 -0
  3. package/README.md +57 -0
  4. package/android/CMakeLists.txt +12 -0
  5. package/android/build.gradle +77 -0
  6. package/android/src/main/AndroidManifest.xml +3 -0
  7. package/android/src/main/cpp/cpp-adapter.cpp +9 -0
  8. package/android/src/main/kotlin/com/margelo/nitro/nitromlkit/pose/HybridPoseDetector.kt +93 -0
  9. package/android/src/main/kotlin/com/nitromlkit/pose/NitroMLKitPosePackage.kt +19 -0
  10. package/expo-module.config.json +9 -0
  11. package/ios/HybridPoseDetector.swift +146 -0
  12. package/nitro.json +16 -0
  13. package/nitrogen/generated/.gitattributes +1 -0
  14. package/nitrogen/generated/android/NitroMLKitPose+autolinking.cmake +81 -0
  15. package/nitrogen/generated/android/NitroMLKitPose+autolinking.gradle +27 -0
  16. package/nitrogen/generated/android/NitroMLKitPoseOnLoad.cpp +54 -0
  17. package/nitrogen/generated/android/NitroMLKitPoseOnLoad.hpp +34 -0
  18. package/nitrogen/generated/android/c++/JBatchPoseResult.hpp +91 -0
  19. package/nitrogen/generated/android/c++/JHybridPoseDetectorSpec.cpp +123 -0
  20. package/nitrogen/generated/android/c++/JHybridPoseDetectorSpec.hpp +65 -0
  21. package/nitrogen/generated/android/c++/JPoseLandmark.hpp +73 -0
  22. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromlkit/pose/BatchPoseResult.kt +66 -0
  23. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromlkit/pose/HybridPoseDetectorSpec.kt +63 -0
  24. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromlkit/pose/NitroMLKitPoseOnLoad.kt +35 -0
  25. package/nitrogen/generated/android/kotlin/com/margelo/nitro/nitromlkit/pose/PoseLandmark.kt +71 -0
  26. package/nitrogen/generated/ios/NitroMLKitPose+autolinking.rb +62 -0
  27. package/nitrogen/generated/ios/NitroMLKitPose-Swift-Cxx-Bridge.cpp +57 -0
  28. package/nitrogen/generated/ios/NitroMLKitPose-Swift-Cxx-Bridge.hpp +219 -0
  29. package/nitrogen/generated/ios/NitroMLKitPose-Swift-Cxx-Umbrella.hpp +53 -0
  30. package/nitrogen/generated/ios/NitroMLKitPoseAutolinking.mm +33 -0
  31. package/nitrogen/generated/ios/NitroMLKitPoseAutolinking.swift +26 -0
  32. package/nitrogen/generated/ios/c++/HybridPoseDetectorSpecSwift.cpp +11 -0
  33. package/nitrogen/generated/ios/c++/HybridPoseDetectorSpecSwift.hpp +106 -0
  34. package/nitrogen/generated/ios/swift/BatchPoseResult.swift +63 -0
  35. package/nitrogen/generated/ios/swift/Func_void_std__exception_ptr.swift +46 -0
  36. package/nitrogen/generated/ios/swift/Func_void_std__vector_BatchPoseResult_.swift +46 -0
  37. package/nitrogen/generated/ios/swift/Func_void_std__vector_PoseLandmark_.swift +46 -0
  38. package/nitrogen/generated/ios/swift/HybridPoseDetectorSpec.swift +57 -0
  39. package/nitrogen/generated/ios/swift/HybridPoseDetectorSpec_cxx.swift +188 -0
  40. package/nitrogen/generated/ios/swift/PoseLandmark.swift +49 -0
  41. package/nitrogen/generated/shared/c++/BatchPoseResult.hpp +99 -0
  42. package/nitrogen/generated/shared/c++/HybridPoseDetectorSpec.cpp +23 -0
  43. package/nitrogen/generated/shared/c++/HybridPoseDetectorSpec.hpp +71 -0
  44. package/nitrogen/generated/shared/c++/PoseLandmark.hpp +99 -0
  45. package/package.json +54 -0
  46. package/src/index.ts +18 -0
  47. package/src/specs/PoseDetector.nitro.ts +47 -0
package/package.json ADDED
@@ -0,0 +1,54 @@
1
+ {
2
+ "name": "@nitro-mlkit/pose-detection",
3
+ "version": "0.1.0-beta.0",
4
+ "description": "High-performance on-device pose detection (33 skeletal landmarks) for React Native — Google ML Kit + Nitro. Native batch, zero bridge overhead.",
5
+ "main": "src/index.ts",
6
+ "types": "src/index.ts",
7
+ "scripts": {
8
+ "codegen": "nitrogen",
9
+ "build": "tsc --noEmit"
10
+ },
11
+ "keywords": [
12
+ "react-native",
13
+ "nitro",
14
+ "mlkit",
15
+ "pose-detection",
16
+ "pose-estimation",
17
+ "skeleton",
18
+ "machine-learning",
19
+ "on-device",
20
+ "expo"
21
+ ],
22
+ "author": "pologonzalo",
23
+ "license": "MIT",
24
+ "repository": {
25
+ "type": "git",
26
+ "url": "https://github.com/pologonzalo/react-native-nitro-mlkit",
27
+ "directory": "packages/pose-detection"
28
+ },
29
+ "peerDependencies": {
30
+ "expo-modules-core": "*",
31
+ "react": ">=18",
32
+ "react-native": ">=0.76",
33
+ "react-native-nitro-modules": ">=0.20"
34
+ },
35
+ "devDependencies": {
36
+ "expo-modules-core": "*",
37
+ "nitro-codegen": "*",
38
+ "react-native-nitro-modules": "*",
39
+ "typescript": "~5.9.0"
40
+ },
41
+ "files": [
42
+ "src",
43
+ "ios/**/*.swift",
44
+ "android/src",
45
+ "android/build.gradle",
46
+ "android/CMakeLists.txt",
47
+ "expo-module.config.json",
48
+ "nitrogen/generated",
49
+ "*.podspec",
50
+ "nitro.json",
51
+ "README.md",
52
+ "LICENSE"
53
+ ]
54
+ }
package/src/index.ts ADDED
@@ -0,0 +1,18 @@
1
+ export { type PoseDetector } from "./specs/PoseDetector.nitro";
2
+ export type {
3
+ BatchPoseResult,
4
+ PoseLandmark,
5
+ } from "./specs/PoseDetector.nitro";
6
+
7
+ import { Platform } from "react-native";
8
+ import { requireOptionalNativeModule } from "expo-modules-core";
9
+ import { NitroModules } from "react-native-nitro-modules";
10
+ import type { PoseDetector } from "./specs/PoseDetector.nitro";
11
+
12
+ if (Platform.OS === "android") {
13
+ requireOptionalNativeModule("NitroMLKitPose");
14
+ }
15
+
16
+ /** Get the shared PoseDetector instance. */
17
+ export const NitroPose =
18
+ NitroModules.createHybridObject<PoseDetector>("PoseDetector");
@@ -0,0 +1,47 @@
1
+ import type { HybridObject } from "react-native-nitro-modules";
2
+
3
+ /**
4
+ * A single skeletal landmark (one of 33 body points).
5
+ */
6
+ export interface PoseLandmark {
7
+ /** ML Kit landmark type index (0..32, e.g. 0 = nose, 11 = left shoulder). */
8
+ type: number;
9
+ x: number;
10
+ y: number;
11
+ z: number;
12
+ /** Likelihood the landmark is within the frame (0..1). */
13
+ inFrameLikelihood: number;
14
+ }
15
+
16
+ /**
17
+ * Result of detecting a pose in one image within a batch.
18
+ */
19
+ export interface BatchPoseResult {
20
+ index: number;
21
+ /** Detected landmarks (empty if no pose was found). */
22
+ landmarks: PoseLandmark[];
23
+ success: boolean;
24
+ error?: string;
25
+ }
26
+
27
+ /**
28
+ * On-device pose detection powered by MLKit.
29
+ * Returns 33 skeletal landmarks (with 3D position + in-frame likelihood) for
30
+ * the primary body in a still image — all on-device via Nitro.
31
+ */
32
+ export interface PoseDetector extends HybridObject<{
33
+ ios: "swift";
34
+ android: "kotlin";
35
+ }> {
36
+ /** Detect the primary pose in an image; returns its landmarks. */
37
+ detect(imageUri: string): Promise<PoseLandmark[]>;
38
+
39
+ /** Detect poses across many images in parallel (one native call). */
40
+ detectBatch(
41
+ imageUris: string[],
42
+ concurrency: number,
43
+ ): Promise<BatchPoseResult[]>;
44
+
45
+ /** Whether pose detection is available on this device. */
46
+ isAvailable(): boolean;
47
+ }