diff --git a/mediapipe/framework/port/build_config.bzl b/mediapipe/framework/port/build_config.bzl index 80e9bfc4d..8d1e6cbf7 100644 --- a/mediapipe/framework/port/build_config.bzl +++ b/mediapipe/framework/port/build_config.bzl @@ -214,10 +214,10 @@ def mediapipe_ts_library( """Generate ts_project for MediaPipe open source version. Args: - name: the name of the cc_proto_library. - srcs: the .proto files of the cc_proto_library for Bazel use. + name: the name of the mediapipe_ts_library. + srcs: the .proto files of the mediapipe_ts_library for Bazel use. 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. allow_unoptimized_namespaces: ignored, used only internally """ @@ -235,3 +235,36 @@ def mediapipe_ts_library( declaration = True, 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, + ) diff --git a/mediapipe/tasks/web/components/containers/BUILD b/mediapipe/tasks/web/components/containers/BUILD index 1b0e403ff..3b4fe4ef9 100644 --- a/mediapipe/tasks/web/components/containers/BUILD +++ b/mediapipe/tasks/web/components/containers/BUILD @@ -1,21 +1,21 @@ # 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"]) -mediapipe_ts_library( +mediapipe_ts_declaration( name = "category", srcs = ["category.d.ts"], ) -mediapipe_ts_library( +mediapipe_ts_declaration( name = "classification_result", srcs = ["classification_result.d.ts"], deps = [":category"], ) -mediapipe_ts_library( +mediapipe_ts_declaration( name = "landmark", srcs = ["landmark.d.ts"], ) diff --git a/mediapipe/tasks/web/components/containers/landmark.d.ts b/mediapipe/tasks/web/components/containers/landmark.d.ts index f790d8a0b..0c0799074 100644 --- a/mediapipe/tasks/web/components/containers/landmark.d.ts +++ b/mediapipe/tasks/web/components/containers/landmark.d.ts @@ -18,9 +18,9 @@ * Landmark represents a point in 3D space with x, y, z coordinates. If * 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]. - * 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. */ x: number; diff --git a/mediapipe/tasks/web/core/BUILD b/mediapipe/tasks/web/core/BUILD index 4fb57d6c3..158f5e05f 100644 --- a/mediapipe/tasks/web/core/BUILD +++ b/mediapipe/tasks/web/core/BUILD @@ -1,10 +1,10 @@ # 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"]) -mediapipe_ts_library( +mediapipe_ts_declaration( name = "core", srcs = [ "base_options.d.ts", @@ -24,7 +24,7 @@ mediapipe_ts_library( ], ) -mediapipe_ts_library( +mediapipe_ts_declaration( name = "classifier_options", srcs = [ "classifier_options.d.ts", diff --git a/mediapipe/tasks/web/vision/BUILD b/mediapipe/tasks/web/vision/BUILD index abdbc54ea..279a1f197 100644 --- a/mediapipe/tasks/web/vision/BUILD +++ b/mediapipe/tasks/web/vision/BUILD @@ -9,7 +9,10 @@ mediapipe_ts_library( srcs = ["index.ts"], deps = [ "//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:image_classifier_types", "//mediapipe/tasks/web/vision/object_detector", + "//mediapipe/tasks/web/vision/object_detector:object_detector_types", ], ) diff --git a/mediapipe/tasks/web/vision/gesture_recognizer/BUILD b/mediapipe/tasks/web/vision/gesture_recognizer/BUILD index 6b99f6ce4..7ed04a5b9 100644 --- a/mediapipe/tasks/web/vision/gesture_recognizer/BUILD +++ b/mediapipe/tasks/web/vision/gesture_recognizer/BUILD @@ -3,7 +3,7 @@ # This task takes video frames and outputs synchronized frames along with # 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"]) @@ -11,12 +11,9 @@ licenses(["notice"]) mediapipe_ts_library( name = "gesture_recognizer", - srcs = [ - "gesture_recognizer.ts", - "gesture_recognizer_options.ts", - "gesture_recognizer_result.ts", - ], + srcs = ["gesture_recognizer.ts"], deps = [ + ":gesture_recognizer_types", "//mediapipe/framework:calculator_jspb_proto", "//mediapipe/framework:calculator_options_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:classifier_options", "//mediapipe/tasks/web/core", - "//mediapipe/tasks/web/core:classifier_options", "//mediapipe/tasks/web/core:task_runner", "//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", + ], +) diff --git a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts index c24d1a7b3..b06fbf371 100644 --- a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts +++ b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer.ts @@ -154,10 +154,6 @@ export class GestureRecognizer extends TaskRunner { this.handGestureRecognizerGraphOptions); this.initDefaults(); - - // Disables the automatic render-to-screen code, which allows for pure - // CPU processing. - this.setAutoRenderToScreen(false); } /** diff --git a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_options.ts b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_options.d.ts similarity index 100% rename from mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_options.ts rename to mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_options.d.ts diff --git a/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.ts b/mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.d.ts similarity index 100% rename from mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.ts rename to mediapipe/tasks/web/vision/gesture_recognizer/gesture_recognizer_result.d.ts diff --git a/mediapipe/tasks/web/vision/image_classifier/BUILD b/mediapipe/tasks/web/vision/image_classifier/BUILD index e96d6a8e3..4d9559cfc 100644 --- a/mediapipe/tasks/web/vision/image_classifier/BUILD +++ b/mediapipe/tasks/web/vision/image_classifier/BUILD @@ -2,7 +2,7 @@ # # 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"]) @@ -12,22 +12,31 @@ mediapipe_ts_library( name = "image_classifier", srcs = [ "image_classifier.ts", - "image_classifier_options.ts", - "image_classifier_result.ts", ], deps = [ + ":image_classifier_types", "//mediapipe/framework:calculator_jspb_proto", "//mediapipe/framework:calculator_options_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/web/components/containers:category", - "//mediapipe/tasks/web/components/containers:classification_result", "//mediapipe/tasks/web/components/processors:base_options", "//mediapipe/tasks/web/components/processors:classifier_options", "//mediapipe/tasks/web/components/processors:classifier_result", "//mediapipe/tasks/web/core", - "//mediapipe/tasks/web/core:classifier_options", "//mediapipe/tasks/web/core:task_runner", "//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", + ], +) diff --git a/mediapipe/tasks/web/vision/image_classifier/image_classifier_options.ts b/mediapipe/tasks/web/vision/image_classifier/image_classifier_options.d.ts similarity index 100% rename from mediapipe/tasks/web/vision/image_classifier/image_classifier_options.ts rename to mediapipe/tasks/web/vision/image_classifier/image_classifier_options.d.ts diff --git a/mediapipe/tasks/web/vision/image_classifier/image_classifier_result.ts b/mediapipe/tasks/web/vision/image_classifier/image_classifier_result.d.ts similarity index 100% rename from mediapipe/tasks/web/vision/image_classifier/image_classifier_result.ts rename to mediapipe/tasks/web/vision/image_classifier/image_classifier_result.d.ts diff --git a/mediapipe/tasks/web/vision/object_detector/BUILD b/mediapipe/tasks/web/vision/object_detector/BUILD index 095a84b52..2ce701b17 100644 --- a/mediapipe/tasks/web/vision/object_detector/BUILD +++ b/mediapipe/tasks/web/vision/object_detector/BUILD @@ -3,7 +3,7 @@ # This task takes video frames and outputs synchronized frames along with # 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"]) @@ -13,18 +13,28 @@ mediapipe_ts_library( name = "object_detector", srcs = [ "object_detector.ts", - "object_detector_options.ts", - "object_detector_result.ts", ], deps = [ + ":object_detector_types", "//mediapipe/framework:calculator_jspb_proto", "//mediapipe/framework:calculator_options_jspb_proto", "//mediapipe/framework/formats:detection_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/core", "//mediapipe/tasks/web/core:task_runner", "//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", + ], +) diff --git a/mediapipe/tasks/web/vision/object_detector/object_detector_options.ts b/mediapipe/tasks/web/vision/object_detector/object_detector_options.d.ts similarity index 97% rename from mediapipe/tasks/web/vision/object_detector/object_detector_options.ts rename to mediapipe/tasks/web/vision/object_detector/object_detector_options.d.ts index eec12cf17..3eb7df986 100644 --- a/mediapipe/tasks/web/vision/object_detector/object_detector_options.ts +++ b/mediapipe/tasks/web/vision/object_detector/object_detector_options.d.ts @@ -17,7 +17,7 @@ import {BaseOptions} from '../../../../tasks/web/core/base_options'; /** Options to configure the MediaPipe Object Detector Task */ -export interface ObjectDetectorOptions { +export declare interface ObjectDetectorOptions { /** Options to configure the loading of the model assets. */ baseOptions?: BaseOptions; diff --git a/mediapipe/tasks/web/vision/object_detector/object_detector_result.ts b/mediapipe/tasks/web/vision/object_detector/object_detector_result.d.ts similarity index 100% rename from mediapipe/tasks/web/vision/object_detector/object_detector_result.ts rename to mediapipe/tasks/web/vision/object_detector/object_detector_result.d.ts