mp_core 0.1.1
mp_core: ^0.1.1 copied to clipboard
Shared types, model configuration, and runtime primitives for MP tasks.
mp_core #
Shared types, model configuration, and runtime primitives for MP tasks.
Use mp_core directly when building a custom task adapter, or transitively
through mp_vision, mp_text, mp_audio, or mp_genai.
What it provides #
- Model assets, image and audio containers, result types, errors, and task lifecycle
- Immutable image, audio, landmark, classification, detection, embedding, and segmentation containers.
- Models loaded from bytes, local paths, or absolute URIs.
- Optional SHA-256 verification for remotely loaded models.
- CPU, GPU, Edge TPU NNAPI, and LiteRT delegate configuration.
- Task lifecycle, status errors, timestamp validation, and injectable runtimes.
- Generated FFI bindings for the public MediaPipe Tasks C headers.
- Shared browser module and model-asset helpers.
Model assets #
Models are application data, not SDK configuration. Supply one as bytes, a local path, or an absolute HTTPS URI, and pin remote models with a SHA-256 digest:
final local = ModelAsset.path('models/gesture_recognizer.task');
final memory = ModelAsset.bytes(Uint8List.fromList(modelBytes));
final remote = ModelAsset.uri(
Uri.parse('https://cdn.example.com/models/gesture_recognizer.task'),
sha256: '0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef',
);
The SDK never chooses or downloads a model without an explicit ModelAsset.
Publish immutable, versioned model URLs and always provide a digest for
production clients.
Combine a model with a delegate:
final options = BaseOptions(modelAsset: local, delegate: MpDelegate.cpu);
Ownership #
Every created task implements MpTask. Call close() when inference is no
longer needed. Closing twice is safe, and invoking a closed task fails
immediately with MpTaskClosedError.
final detector = await ObjectDetector.create(options);
try {
final result = await detector.detect(image);
// Use the result.
} finally {
await detector.close();
}
Long-lived tasks belong near the owning feature boundary, not inside a per-frame callback. A task serializes its native calls, so handles are never entered concurrently.
Failure contract #
Unsupported API and platform combinations fail explicitly with
MpException(MpStatus.unimplemented, …) rather than silently returning empty
results. Check MpStatus before treating a failure as a model or input problem.
Where to go next #
MP is independent software. MediaPipe is a trademark of Google LLC; this project is not affiliated with or endorsed by Google.