Add ts_declaration rule for OSS

PiperOrigin-RevId: 488307893
This commit is contained in:
Sebastian Schmidt 2022-11-14 02:25:28 -08:00 committed by Copybara-Service
parent 8d9cdb86dc
commit 6610ca72ba
15 changed files with 95 additions and 34 deletions

View File

@ -214,10 +214,10 @@ def mediapipe_ts_library(
"""Generate ts_project for MediaPipe open source version. """Generate ts_project for MediaPipe open source version.
Args: Args:
name: the name of the cc_proto_library. name: the name of the mediapipe_ts_library.
srcs: the .proto files of the cc_proto_library for Bazel use. srcs: the .proto files of the mediapipe_ts_library for Bazel use.
visibility: visibility of this target. visibility: visibility of this target.
deps: a list of dependency labels for Bazel use; must be cc_proto_library. deps: a list of dependency labels for Bazel use.
testonly: test only or not. testonly: test only or not.
allow_unoptimized_namespaces: ignored, used only internally allow_unoptimized_namespaces: ignored, used only internally
""" """
@ -235,3 +235,36 @@ def mediapipe_ts_library(
declaration = True, declaration = True,
tsconfig = "//:tsconfig.json", tsconfig = "//:tsconfig.json",
)) ))
def mediapipe_ts_declaration(
name,
srcs,
visibility = None,
deps = []):
"""Generate ts_declaration for MediaPipe open source version.
Args:
name: the name of the mediapipe_ts_declaration.
srcs: the .proto files of the mediapipe_ts_declaration for Bazel use.
visibility: visibility of this target.
deps: a list of dependency labels for Bazel use
"""
# Bazel does not create JS files for .d.ts files, which leads to import
# failures in our open source build. We simply re-name the .d.ts files
# to .ts to work around this problem.
for src in srcs:
native.genrule(
name = replace_suffix(src, ".d.ts", "_d_ts"),
srcs = [src],
outs = [replace_suffix(src, ".d.ts", ".ts")],
visibility = visibility,
cmd = "cp -n $< $@;",
)
mediapipe_ts_library(
name = name,
srcs = [replace_suffix(src, ".d.ts", "_d_ts") for src in srcs],
visibility = visibility,
deps = deps,
)

View File

@ -1,21 +1,21 @@
# This package contains options shared by all MediaPipe Tasks for Web. # This package contains options shared by all MediaPipe Tasks for Web.
load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_library") load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_declaration")
package(default_visibility = ["//mediapipe/tasks:internal"]) package(default_visibility = ["//mediapipe/tasks:internal"])
mediapipe_ts_library( mediapipe_ts_declaration(
name = "category", name = "category",
srcs = ["category.d.ts"], srcs = ["category.d.ts"],
) )
mediapipe_ts_library( mediapipe_ts_declaration(
name = "classification_result", name = "classification_result",
srcs = ["classification_result.d.ts"], srcs = ["classification_result.d.ts"],
deps = [":category"], deps = [":category"],
) )
mediapipe_ts_library( mediapipe_ts_declaration(
name = "landmark", name = "landmark",
srcs = ["landmark.d.ts"], srcs = ["landmark.d.ts"],
) )

View File

@ -18,9 +18,9 @@
* Landmark represents a point in 3D space with x, y, z coordinates. If * Landmark represents a point in 3D space with x, y, z coordinates. If
* normalized is true, the landmark coordinates is normalized respect to the * normalized is true, the landmark coordinates is normalized respect to the
* dimension of image, and the coordinates values are in the range of [0,1]. * dimension of image, and the coordinates values are in the range of [0,1].
* Otherwise, it represenet a point in world coordinates. * Otherwise, it represents a point in world coordinates.
*/ */
export declare class Landmark { export declare interface Landmark {
/** The x coordinates of the landmark. */ /** The x coordinates of the landmark. */
x: number; x: number;

View File

@ -1,10 +1,10 @@
# This package contains options shared by all MediaPipe Tasks for Web. # This package contains options shared by all MediaPipe Tasks for Web.
load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_library") load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_declaration", "mediapipe_ts_library")
package(default_visibility = ["//mediapipe/tasks:internal"]) package(default_visibility = ["//mediapipe/tasks:internal"])
mediapipe_ts_library( mediapipe_ts_declaration(
name = "core", name = "core",
srcs = [ srcs = [
"base_options.d.ts", "base_options.d.ts",
@ -24,7 +24,7 @@ mediapipe_ts_library(
], ],
) )
mediapipe_ts_library( mediapipe_ts_declaration(
name = "classifier_options", name = "classifier_options",
srcs = [ srcs = [
"classifier_options.d.ts", "classifier_options.d.ts",

View File

@ -9,7 +9,10 @@ mediapipe_ts_library(
srcs = ["index.ts"], srcs = ["index.ts"],
deps = [ deps = [
"//mediapipe/tasks/web/vision/gesture_recognizer", "//mediapipe/tasks/web/vision/gesture_recognizer",
"//mediapipe/tasks/web/vision/gesture_recognizer:gesture_recognizer_types",
"//mediapipe/tasks/web/vision/image_classifier", "//mediapipe/tasks/web/vision/image_classifier",
"//mediapipe/tasks/web/vision/image_classifier:image_classifier_types",
"//mediapipe/tasks/web/vision/object_detector", "//mediapipe/tasks/web/vision/object_detector",
"//mediapipe/tasks/web/vision/object_detector:object_detector_types",
], ],
) )

View File

@ -3,7 +3,7 @@
# This task takes video frames and outputs synchronized frames along with # This task takes video frames and outputs synchronized frames along with
# the detection results for one or more gesture categories, using Gesture Recognizer. # the detection results for one or more gesture categories, using Gesture Recognizer.
load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_library") load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_declaration", "mediapipe_ts_library")
package(default_visibility = ["//mediapipe/tasks:internal"]) package(default_visibility = ["//mediapipe/tasks:internal"])
@ -11,12 +11,9 @@ licenses(["notice"])
mediapipe_ts_library( mediapipe_ts_library(
name = "gesture_recognizer", name = "gesture_recognizer",
srcs = [ srcs = ["gesture_recognizer.ts"],
"gesture_recognizer.ts",
"gesture_recognizer_options.ts",
"gesture_recognizer_result.ts",
],
deps = [ deps = [
":gesture_recognizer_types",
"//mediapipe/framework:calculator_jspb_proto", "//mediapipe/framework:calculator_jspb_proto",
"//mediapipe/framework:calculator_options_jspb_proto", "//mediapipe/framework:calculator_options_jspb_proto",
"//mediapipe/framework/formats:classification_jspb_proto", "//mediapipe/framework/formats:classification_jspb_proto",
@ -33,8 +30,21 @@ mediapipe_ts_library(
"//mediapipe/tasks/web/components/processors:base_options", "//mediapipe/tasks/web/components/processors:base_options",
"//mediapipe/tasks/web/components/processors:classifier_options", "//mediapipe/tasks/web/components/processors:classifier_options",
"//mediapipe/tasks/web/core", "//mediapipe/tasks/web/core",
"//mediapipe/tasks/web/core:classifier_options",
"//mediapipe/tasks/web/core:task_runner", "//mediapipe/tasks/web/core:task_runner",
"//mediapipe/web/graph_runner:wasm_mediapipe_lib_ts", "//mediapipe/web/graph_runner:wasm_mediapipe_lib_ts",
], ],
) )
mediapipe_ts_declaration(
name = "gesture_recognizer_types",
srcs = [
"gesture_recognizer_options.d.ts",
"gesture_recognizer_result.d.ts",
],
deps = [
"//mediapipe/tasks/web/components/containers:category",
"//mediapipe/tasks/web/components/containers:landmark",
"//mediapipe/tasks/web/core",
"//mediapipe/tasks/web/core:classifier_options",
],
)

View File

@ -154,10 +154,6 @@ export class GestureRecognizer extends TaskRunner {
this.handGestureRecognizerGraphOptions); this.handGestureRecognizerGraphOptions);
this.initDefaults(); this.initDefaults();
// Disables the automatic render-to-screen code, which allows for pure
// CPU processing.
this.setAutoRenderToScreen(false);
} }
/** /**

View File

@ -2,7 +2,7 @@
# #
# This task takes video or image frames and outputs the classification result. # This task takes video or image frames and outputs the classification result.
load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_library") load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_declaration", "mediapipe_ts_library")
package(default_visibility = ["//mediapipe/tasks:internal"]) package(default_visibility = ["//mediapipe/tasks:internal"])
@ -12,22 +12,31 @@ mediapipe_ts_library(
name = "image_classifier", name = "image_classifier",
srcs = [ srcs = [
"image_classifier.ts", "image_classifier.ts",
"image_classifier_options.ts",
"image_classifier_result.ts",
], ],
deps = [ deps = [
":image_classifier_types",
"//mediapipe/framework:calculator_jspb_proto", "//mediapipe/framework:calculator_jspb_proto",
"//mediapipe/framework:calculator_options_jspb_proto", "//mediapipe/framework:calculator_options_jspb_proto",
"//mediapipe/tasks/cc/components/containers/proto:classifications_jspb_proto", "//mediapipe/tasks/cc/components/containers/proto:classifications_jspb_proto",
"//mediapipe/tasks/cc/vision/image_classifier/proto:image_classifier_graph_options_jspb_proto", "//mediapipe/tasks/cc/vision/image_classifier/proto:image_classifier_graph_options_jspb_proto",
"//mediapipe/tasks/web/components/containers:category",
"//mediapipe/tasks/web/components/containers:classification_result",
"//mediapipe/tasks/web/components/processors:base_options", "//mediapipe/tasks/web/components/processors:base_options",
"//mediapipe/tasks/web/components/processors:classifier_options", "//mediapipe/tasks/web/components/processors:classifier_options",
"//mediapipe/tasks/web/components/processors:classifier_result", "//mediapipe/tasks/web/components/processors:classifier_result",
"//mediapipe/tasks/web/core", "//mediapipe/tasks/web/core",
"//mediapipe/tasks/web/core:classifier_options",
"//mediapipe/tasks/web/core:task_runner", "//mediapipe/tasks/web/core:task_runner",
"//mediapipe/web/graph_runner:wasm_mediapipe_lib_ts", "//mediapipe/web/graph_runner:wasm_mediapipe_lib_ts",
], ],
) )
mediapipe_ts_declaration(
name = "image_classifier_types",
srcs = [
"image_classifier_options.d.ts",
"image_classifier_result.d.ts",
],
deps = [
"//mediapipe/tasks/web/components/containers:category",
"//mediapipe/tasks/web/components/containers:classification_result",
"//mediapipe/tasks/web/core:classifier_options",
],
)

View File

@ -3,7 +3,7 @@
# This task takes video frames and outputs synchronized frames along with # This task takes video frames and outputs synchronized frames along with
# the detection results for one or more object categories, using Object Detector. # the detection results for one or more object categories, using Object Detector.
load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_library") load("//mediapipe/framework/port:build_config.bzl", "mediapipe_ts_declaration", "mediapipe_ts_library")
package(default_visibility = ["//mediapipe/tasks:internal"]) package(default_visibility = ["//mediapipe/tasks:internal"])
@ -13,18 +13,28 @@ mediapipe_ts_library(
name = "object_detector", name = "object_detector",
srcs = [ srcs = [
"object_detector.ts", "object_detector.ts",
"object_detector_options.ts",
"object_detector_result.ts",
], ],
deps = [ deps = [
":object_detector_types",
"//mediapipe/framework:calculator_jspb_proto", "//mediapipe/framework:calculator_jspb_proto",
"//mediapipe/framework:calculator_options_jspb_proto", "//mediapipe/framework:calculator_options_jspb_proto",
"//mediapipe/framework/formats:detection_jspb_proto", "//mediapipe/framework/formats:detection_jspb_proto",
"//mediapipe/tasks/cc/vision/object_detector/proto:object_detector_options_jspb_proto", "//mediapipe/tasks/cc/vision/object_detector/proto:object_detector_options_jspb_proto",
"//mediapipe/tasks/web/components/containers:category",
"//mediapipe/tasks/web/components/processors:base_options", "//mediapipe/tasks/web/components/processors:base_options",
"//mediapipe/tasks/web/core", "//mediapipe/tasks/web/core",
"//mediapipe/tasks/web/core:task_runner", "//mediapipe/tasks/web/core:task_runner",
"//mediapipe/web/graph_runner:wasm_mediapipe_lib_ts", "//mediapipe/web/graph_runner:wasm_mediapipe_lib_ts",
], ],
) )
mediapipe_ts_declaration(
name = "object_detector_types",
srcs = [
"object_detector_options.d.ts",
"object_detector_result.d.ts",
],
deps = [
"//mediapipe/tasks/web/components/containers:category",
"//mediapipe/tasks/web/core",
],
)

View File

@ -17,7 +17,7 @@
import {BaseOptions} from '../../../../tasks/web/core/base_options'; import {BaseOptions} from '../../../../tasks/web/core/base_options';
/** Options to configure the MediaPipe Object Detector Task */ /** Options to configure the MediaPipe Object Detector Task */
export interface ObjectDetectorOptions { export declare interface ObjectDetectorOptions {
/** Options to configure the loading of the model assets. */ /** Options to configure the loading of the model assets. */
baseOptions?: BaseOptions; baseOptions?: BaseOptions;