Adds a public function for creating TaskRunner instances.
PiperOrigin-RevId: 493109736
This commit is contained in:
parent
4f8eaee20f
commit
69b27b246a
|
@ -32,6 +32,34 @@ const GraphRunnerImageLibType =
|
||||||
/** An implementation of the GraphRunner that supports image operations */
|
/** An implementation of the GraphRunner that supports image operations */
|
||||||
export class GraphRunnerImageLib extends GraphRunnerImageLibType {}
|
export class GraphRunnerImageLib extends GraphRunnerImageLibType {}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new instance of a Mediapipe Task. Determines if SIMD is
|
||||||
|
* supported and loads the relevant WASM binary.
|
||||||
|
* @return A fully instantiated instance of `T`.
|
||||||
|
*/
|
||||||
|
export async function
|
||||||
|
createTaskRunner<T extends TaskRunner<O>, O extends TaskRunnerOptions>(
|
||||||
|
type: WasmMediaPipeConstructor<T>, initializeCanvas: boolean,
|
||||||
|
fileset: WasmFileset, options: O): Promise<T> {
|
||||||
|
const fileLocator: FileLocator = {
|
||||||
|
locateFile() {
|
||||||
|
// The only file loaded with this mechanism is the Wasm binary
|
||||||
|
return fileset.wasmBinaryPath.toString();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Initialize a canvas if requested. If OffscreenCanvas is availble, we
|
||||||
|
// let the graph runner initialize it by passing `undefined`.
|
||||||
|
const canvas = initializeCanvas ? (typeof OffscreenCanvas === 'undefined' ?
|
||||||
|
document.createElement('canvas') :
|
||||||
|
undefined) :
|
||||||
|
null;
|
||||||
|
const instance = await createMediaPipeLib(
|
||||||
|
type, fileset.wasmLoaderPath, NO_ASSETS, canvas, fileLocator);
|
||||||
|
await instance.setOptions(options);
|
||||||
|
return instance;
|
||||||
|
}
|
||||||
|
|
||||||
/** Base class for all MediaPipe Tasks. */
|
/** Base class for all MediaPipe Tasks. */
|
||||||
export abstract class TaskRunner<O extends TaskRunnerOptions> {
|
export abstract class TaskRunner<O extends TaskRunnerOptions> {
|
||||||
protected abstract baseOptions: BaseOptionsProto;
|
protected abstract baseOptions: BaseOptionsProto;
|
||||||
|
@ -47,23 +75,7 @@ export abstract class TaskRunner<O extends TaskRunnerOptions> {
|
||||||
O extends TaskRunnerOptions>(
|
O extends TaskRunnerOptions>(
|
||||||
type: WasmMediaPipeConstructor<T>, initializeCanvas: boolean,
|
type: WasmMediaPipeConstructor<T>, initializeCanvas: boolean,
|
||||||
fileset: WasmFileset, options: O): Promise<T> {
|
fileset: WasmFileset, options: O): Promise<T> {
|
||||||
const fileLocator: FileLocator = {
|
return createTaskRunner(type, initializeCanvas, fileset, options);
|
||||||
locateFile() {
|
|
||||||
// The only file loaded with this mechanism is the Wasm binary
|
|
||||||
return fileset.wasmBinaryPath.toString();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Initialize a canvas if requested. If OffscreenCanvas is availble, we
|
|
||||||
// let the graph runner initialize it by passing `undefined`.
|
|
||||||
const canvas = initializeCanvas ? (typeof OffscreenCanvas === 'undefined' ?
|
|
||||||
document.createElement('canvas') :
|
|
||||||
undefined) :
|
|
||||||
null;
|
|
||||||
const instance = await createMediaPipeLib(
|
|
||||||
type, fileset.wasmLoaderPath, NO_ASSETS, canvas, fileLocator);
|
|
||||||
await instance.setOptions(options);
|
|
||||||
return instance;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
|
|
Loading…
Reference in New Issue
Block a user