From d1e7b51b9f31dabf3ce55aa17a1e6c2e8b35300a Mon Sep 17 00:00:00 2001 From: Junrou Nishida Date: Sat, 8 Jul 2023 15:24:51 +0900 Subject: [PATCH] feat: implement BaseOptions (#948) * feat: import protos from mediapipe.tasks.core.proto * feat: add Vision.RunningMode * refactor: rename the asmdef for tests * build: test code can access internal properties * feat: implement BaseOptions --- .../Runtime/Scripts/AssemblyInfo.cs | 9 +++ .../Runtime/Scripts/AssemblyInfo.cs.meta | 11 +++ .../Runtime/Scripts/Protobuf/Tasks.meta | 8 ++ .../Runtime/Scripts/Protobuf/Tasks/Core.meta | 8 ++ .../Scripts/Protobuf/Tasks/Core/Proto.meta | 8 ++ .../Tasks/Core/Proto/Acceleration.cs.meta | 11 +++ .../Tasks/Core/Proto/BaseOptions.cs.meta | 11 +++ .../Tasks/Core/Proto/ExternalFile.cs.meta | 11 +++ .../Runtime/Scripts/Tasks/Core/BaseOptions.cs | 78 +++++++++++++++++++ .../Scripts/Tasks/Core/BaseOptions.cs.meta | 11 +++ .../Runtime/Scripts/Tasks/Vision.meta | 8 ++ .../Runtime/Scripts/Tasks/Vision/Core.meta | 8 ++ .../Scripts/Tasks/Vision/Core/RunningMode.cs | 15 ++++ .../Tasks/Vision/Core/RunningMode.cs.meta | 11 +++ ...asmdef => Mediapipe.Tests.EditMode.asmdef} | 4 +- ...a => Mediapipe.Tests.EditMode.asmdef.meta} | 0 .../EditMode/Tasks/Core/BaseOptionsTest.cs | 43 ++++++++++ .../Tasks/Core/BaseOptionsTest.cs.meta | 11 +++ mediapipe_api/BUILD | 1 + mediapipe_api/tasks/cc/core/proto/BUILD | 50 ++++++++++++ third_party/mediapipe_visibility.diff | 14 ++++ 21 files changed, 329 insertions(+), 2 deletions(-) create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/AssemblyInfo.cs create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/AssemblyInfo.cs.meta create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks.meta create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core.meta create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto.meta create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/Acceleration.cs.meta create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/BaseOptions.cs.meta create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/ExternalFile.cs.meta create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Core/BaseOptions.cs create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Core/BaseOptions.cs.meta create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision.meta create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core.meta create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core/RunningMode.cs create mode 100644 Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core/RunningMode.cs.meta rename Packages/com.github.homuler.mediapipe/Tests/EditMode/{Mediapipe.Runtime.Tests.asmdef => Mediapipe.Tests.EditMode.asmdef} (92%) rename Packages/com.github.homuler.mediapipe/Tests/EditMode/{Mediapipe.Runtime.Tests.asmdef.meta => Mediapipe.Tests.EditMode.asmdef.meta} (100%) create mode 100644 Packages/com.github.homuler.mediapipe/Tests/EditMode/Tasks/Core/BaseOptionsTest.cs create mode 100644 Packages/com.github.homuler.mediapipe/Tests/EditMode/Tasks/Core/BaseOptionsTest.cs.meta create mode 100644 mediapipe_api/tasks/cc/core/proto/BUILD diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/AssemblyInfo.cs b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/AssemblyInfo.cs new file mode 100644 index 000000000..e89e9caae --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/AssemblyInfo.cs @@ -0,0 +1,9 @@ +// Copyright (c) 2023 homuler +// +// Use of this source code is governed by an MIT-style +// license that can be found in the LICENSE file or at +// https://opensource.org/licenses/MIT. + +using System.Runtime.CompilerServices; + +[assembly: InternalsVisibleTo("Mediapipe.Tests.EditMode")] diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/AssemblyInfo.cs.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/AssemblyInfo.cs.meta new file mode 100644 index 000000000..f6c0a020e --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/AssemblyInfo.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8b704b0f89b3071c8b27fdcfb38f46a9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks.meta new file mode 100644 index 000000000..55af6e224 --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 44068213a86686f21a29732977adb026 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core.meta new file mode 100644 index 000000000..15cfd9afd --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 23cb3501484d36c73b7ebe25bf75f0e6 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto.meta new file mode 100644 index 000000000..e41475a94 --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 424c033e23be5918c825e4c813c7ae89 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/Acceleration.cs.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/Acceleration.cs.meta new file mode 100644 index 000000000..e3ae886ff --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/Acceleration.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e923cb79b3d088aac83ce33c1e5fe5ff +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/BaseOptions.cs.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/BaseOptions.cs.meta new file mode 100644 index 000000000..7b67867d4 --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/BaseOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cea9e9df6123c73d782ca5d29e83a96e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/ExternalFile.cs.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/ExternalFile.cs.meta new file mode 100644 index 000000000..c3730263e --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Protobuf/Tasks/Core/Proto/ExternalFile.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 650000988952b03669ca816598aa1ee5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Core/BaseOptions.cs b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Core/BaseOptions.cs new file mode 100644 index 000000000..5fa880640 --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Core/BaseOptions.cs @@ -0,0 +1,78 @@ +// Copyright (c) 2023 homuler +// +// Use of this source code is governed by an MIT-style +// license that can be found in the LICENSE file or at +// https://opensource.org/licenses/MIT. + +namespace Mediapipe.Tasks.Core +{ + public sealed class BaseOptions + { + public enum Delegate + { + CPU, + GPU, + } + + public Delegate delegateCase { get; } = Delegate.CPU; + public string modelAssetPath { get; } = string.Empty; + public byte[] modelAssetBuffer { get; } = null; + + public BaseOptions(Delegate delegateCase = Delegate.CPU, string modelAssetPath = "", byte[] modelAssetBuffer = null) + { + this.delegateCase = delegateCase; + this.modelAssetPath = modelAssetPath; + this.modelAssetBuffer = modelAssetBuffer; + } + + private Proto.Acceleration acceleration + { + get + { + switch (delegateCase) + { + case Delegate.CPU: + return new Proto.Acceleration + { + Tflite = new InferenceCalculatorOptions.Types.Delegate.Types.TfLite { }, + }; + case Delegate.GPU: + return new Proto.Acceleration + { + Gpu = new InferenceCalculatorOptions.Types.Delegate.Types.Gpu { }, + }; + default: + return null; + } + } + } + + private Proto.ExternalFile modelAsset + { + get + { + var file = new Proto.ExternalFile { }; + + if (modelAssetPath != null) + { + file.FileName = modelAssetPath; + } + if (modelAssetBuffer != null) + { + file.FileContent = Google.Protobuf.ByteString.CopyFrom(modelAssetBuffer); + } + + return file; + } + } + + internal Proto.BaseOptions ToProto() + { + return new Proto.BaseOptions + { + ModelAsset = modelAsset, + Acceleration = acceleration, + }; + } + } +} diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Core/BaseOptions.cs.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Core/BaseOptions.cs.meta new file mode 100644 index 000000000..b998fbfb2 --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Core/BaseOptions.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d96e87ded0e3f8c9798e4ee416f6001e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision.meta new file mode 100644 index 000000000..2d53d48d5 --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3cb4833be2590dd688a3d34d2bed5cf9 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core.meta new file mode 100644 index 000000000..92e838060 --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8059c30e4935ffbd7a1eb1526ea20fe7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core/RunningMode.cs b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core/RunningMode.cs new file mode 100644 index 000000000..927534bf9 --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core/RunningMode.cs @@ -0,0 +1,15 @@ +// Copyright (c) 2023 homuler +// +// Use of this source code is governed by an MIT-style +// license that can be found in the LICENSE file or at +// https://opensource.org/licenses/MIT. + +namespace Mediapipe.Tasks.Vision.Core +{ + public enum RunningMode + { + IMAGE, + VIDEO, + LIVE_STREAM, + } +} diff --git a/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core/RunningMode.cs.meta b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core/RunningMode.cs.meta new file mode 100644 index 000000000..e4aa37ecf --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Runtime/Scripts/Tasks/Vision/Core/RunningMode.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e4606a7ecbf22b549d3cc1a154949e5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/com.github.homuler.mediapipe/Tests/EditMode/Mediapipe.Runtime.Tests.asmdef b/Packages/com.github.homuler.mediapipe/Tests/EditMode/Mediapipe.Tests.EditMode.asmdef similarity index 92% rename from Packages/com.github.homuler.mediapipe/Tests/EditMode/Mediapipe.Runtime.Tests.asmdef rename to Packages/com.github.homuler.mediapipe/Tests/EditMode/Mediapipe.Tests.EditMode.asmdef index 758d1458b..457626856 100644 --- a/Packages/com.github.homuler.mediapipe/Tests/EditMode/Mediapipe.Runtime.Tests.asmdef +++ b/Packages/com.github.homuler.mediapipe/Tests/EditMode/Mediapipe.Tests.EditMode.asmdef @@ -1,5 +1,5 @@ { - "name": "Mediapipe.Runtime.Tests", + "name": "Mediapipe.Tests.EditMode", "rootNamespace": "", "references": [ "UnityEngine.TestRunner", @@ -22,4 +22,4 @@ ], "versionDefines": [], "noEngineReferences": false -} +} \ No newline at end of file diff --git a/Packages/com.github.homuler.mediapipe/Tests/EditMode/Mediapipe.Runtime.Tests.asmdef.meta b/Packages/com.github.homuler.mediapipe/Tests/EditMode/Mediapipe.Tests.EditMode.asmdef.meta similarity index 100% rename from Packages/com.github.homuler.mediapipe/Tests/EditMode/Mediapipe.Runtime.Tests.asmdef.meta rename to Packages/com.github.homuler.mediapipe/Tests/EditMode/Mediapipe.Tests.EditMode.asmdef.meta diff --git a/Packages/com.github.homuler.mediapipe/Tests/EditMode/Tasks/Core/BaseOptionsTest.cs b/Packages/com.github.homuler.mediapipe/Tests/EditMode/Tasks/Core/BaseOptionsTest.cs new file mode 100644 index 000000000..fe3f6d58b --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Tests/EditMode/Tasks/Core/BaseOptionsTest.cs @@ -0,0 +1,43 @@ +// Copyright (c) 2023 homuler +// +// Use of this source code is governed by an MIT-style +// license that can be found in the LICENSE file or at +// https://opensource.org/licenses/MIT. + +using Mediapipe.Tasks.Core; +using NUnit.Framework; + +namespace Mediapipe.Tests.Tasks.Core +{ + public class BaseOptionsTest + { + #region ToProto + [TestCase(BaseOptions.Delegate.CPU, Mediapipe.Tasks.Core.Proto.Acceleration.DelegateOneofCase.Tflite)] + [TestCase(BaseOptions.Delegate.GPU, Mediapipe.Tasks.Core.Proto.Acceleration.DelegateOneofCase.Gpu)] + public void ToProto_ShouldSetDelegateCase(BaseOptions.Delegate delegateCase, Mediapipe.Tasks.Core.Proto.Acceleration.DelegateOneofCase delegateOneofCase) + { + var options = new BaseOptions(delegateCase: delegateCase); + var proto = options.ToProto(); + Assert.AreEqual(delegateOneofCase, proto.Acceleration.DelegateCase); + } + + [Test] + public void ToProto_ShouldSetModelAsset_When_ModelAssetPathIsSet() + { + var path = "asset/path"; + var options = new BaseOptions(modelAssetPath: path); + var proto = options.ToProto(); + Assert.AreEqual(path, proto.ModelAsset.FileName); + } + + [Test] + public void ToProto_ShouldSetModelAsset_When_ModelAssetBufferIsSet() + { + var contents = new byte[] { 1, 2, 3 }; + var options = new BaseOptions(modelAssetBuffer: contents); + var proto = options.ToProto(); + Assert.AreEqual(contents, proto.ModelAsset.FileContent.ToByteArray()); + } + #endregion + } +} diff --git a/Packages/com.github.homuler.mediapipe/Tests/EditMode/Tasks/Core/BaseOptionsTest.cs.meta b/Packages/com.github.homuler.mediapipe/Tests/EditMode/Tasks/Core/BaseOptionsTest.cs.meta new file mode 100644 index 000000000..7abbd3793 --- /dev/null +++ b/Packages/com.github.homuler.mediapipe/Tests/EditMode/Tasks/Core/BaseOptionsTest.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3fb3f745463902925861404619212fef +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/mediapipe_api/BUILD b/mediapipe_api/BUILD index 3172bfc25..f99bcfc63 100644 --- a/mediapipe_api/BUILD +++ b/mediapipe_api/BUILD @@ -555,6 +555,7 @@ pkg_zip( "//mediapipe_api/modules/face_geometry:proto_srcs", "//mediapipe_api/modules/face_geometry/protos:proto_srcs", "//mediapipe_api/modules/holistic_landmark/calculators:proto_srcs", + "//mediapipe_api/tasks/cc/core/proto:proto_srcs", "//mediapipe_api/util:proto_srcs", "//mediapipe_api/util/tracking:proto_srcs", ], diff --git a/mediapipe_api/tasks/cc/core/proto/BUILD b/mediapipe_api/tasks/cc/core/proto/BUILD new file mode 100644 index 000000000..cab4d524a --- /dev/null +++ b/mediapipe_api/tasks/cc/core/proto/BUILD @@ -0,0 +1,50 @@ +# Copyright (c) 2021 homuler +# +# Use of this source code is governed by an MIT-style +# license that can be found in the LICENSE file or at +# https://opensource.org/licenses/MIT. + +load("@rules_pkg//pkg:mappings.bzl", "pkg_files") +load("//mediapipe_api:csharp_proto_src.bzl", "csharp_proto_src") + +package(default_visibility = ["//visibility:public"]) + +pkg_files( + name = "proto_srcs", + srcs = [ + ":base_options_cs", + ":external_file_cs", + ":acceleration_cs", + ], + prefix = "Tasks/Core/Proto", +) + +csharp_proto_src( + name = "base_options_cs", + proto_src = "mediapipe/tasks/cc/core/proto/base_options.proto", + deps = [ + "@com_google_mediapipe//mediapipe/calculators/tensor:protos_src", + "@com_google_mediapipe//mediapipe/framework:protos_src", + "@com_google_mediapipe//mediapipe/tasks/cc/core/proto:protos_src", + ], +) + +csharp_proto_src( + name = "external_file_cs", + proto_src = "mediapipe/tasks/cc/core/proto/external_file.proto", + deps = [ + "@com_google_mediapipe//mediapipe/calculators/tensor:protos_src", + "@com_google_mediapipe//mediapipe/framework:protos_src", + "@com_google_mediapipe//mediapipe/tasks/cc/core/proto:protos_src", + ], +) + +csharp_proto_src( + name = "acceleration_cs", + proto_src = "mediapipe/tasks/cc/core/proto/acceleration.proto", + deps = [ + "@com_google_mediapipe//mediapipe/calculators/tensor:protos_src", + "@com_google_mediapipe//mediapipe/framework:protos_src", + "@com_google_mediapipe//mediapipe/tasks/cc/core/proto:protos_src", + ], +) diff --git a/third_party/mediapipe_visibility.diff b/third_party/mediapipe_visibility.diff index b788654f9..4429a3d9a 100644 --- a/third_party/mediapipe_visibility.diff +++ b/third_party/mediapipe_visibility.diff @@ -346,6 +346,20 @@ index dad9cdf1..aeaed482 100644 licenses(["notice"]) +diff --git a/mediapipe/tasks/cc/core/proto/BUILD b/mediapipe/tasks/cc/core/proto/BUILD +index 72de1be8..bd6e9781 100644 +--- a/mediapipe/tasks/cc/core/proto/BUILD ++++ b/mediapipe/tasks/cc/core/proto/BUILD +@@ -68,3 +68,9 @@ mediapipe_proto_library( + "//mediapipe/framework:calculator_proto", + ], + ) ++ ++filegroup( ++ name = "protos_src", ++ srcs = glob(["*.proto"]), ++ visibility = ["//visibility:public"], ++) diff --git a/mediapipe/util/BUILD b/mediapipe/util/BUILD index b9fe8b0c..695987ad 100644 --- a/mediapipe/util/BUILD