Add proto3 Any proto support for Java task api
PiperOrigin-RevId: 547836041
This commit is contained in:
parent
e37bedd344
commit
8b59567cb7
|
@ -32,6 +32,7 @@ android_library(
|
||||||
"//mediapipe/tasks/cc/core/proto:base_options_java_proto_lite",
|
"//mediapipe/tasks/cc/core/proto:base_options_java_proto_lite",
|
||||||
"//mediapipe/tasks/cc/core/proto:external_file_java_proto_lite",
|
"//mediapipe/tasks/cc/core/proto:external_file_java_proto_lite",
|
||||||
"//mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni:model_resources_cache_jni",
|
"//mediapipe/tasks/java/com/google/mediapipe/tasks/core/jni:model_resources_cache_jni",
|
||||||
|
"//third_party:any_java_proto",
|
||||||
"//third_party:autovalue",
|
"//third_party:autovalue",
|
||||||
"@com_google_protobuf//:protobuf_javalite",
|
"@com_google_protobuf//:protobuf_javalite",
|
||||||
"@maven//:com_google_guava_guava",
|
"@maven//:com_google_guava_guava",
|
||||||
|
|
|
@ -20,6 +20,8 @@ import com.google.mediapipe.proto.CalculatorProto.CalculatorGraphConfig;
|
||||||
import com.google.mediapipe.proto.CalculatorProto.CalculatorGraphConfig.Node;
|
import com.google.mediapipe.proto.CalculatorProto.CalculatorGraphConfig.Node;
|
||||||
import com.google.mediapipe.proto.CalculatorProto.InputStreamInfo;
|
import com.google.mediapipe.proto.CalculatorProto.InputStreamInfo;
|
||||||
import com.google.mediapipe.calculator.proto.FlowLimiterCalculatorProto.FlowLimiterCalculatorOptions;
|
import com.google.mediapipe.calculator.proto.FlowLimiterCalculatorProto.FlowLimiterCalculatorOptions;
|
||||||
|
import com.google.mediapipe.framework.MediaPipeException;
|
||||||
|
import com.google.protobuf.Any;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
@ -110,10 +112,21 @@ public abstract class TaskInfo<T extends TaskOptions> {
|
||||||
*/
|
*/
|
||||||
CalculatorGraphConfig generateGraphConfig() {
|
CalculatorGraphConfig generateGraphConfig() {
|
||||||
CalculatorGraphConfig.Builder graphBuilder = CalculatorGraphConfig.newBuilder();
|
CalculatorGraphConfig.Builder graphBuilder = CalculatorGraphConfig.newBuilder();
|
||||||
Node.Builder taskSubgraphBuilder =
|
CalculatorOptions options = taskOptions().convertToCalculatorOptionsProto();
|
||||||
Node.newBuilder()
|
Any anyOptions = taskOptions().convertToAnyProto();
|
||||||
.setCalculator(taskGraphName())
|
if (!(options == null ^ anyOptions == null)) {
|
||||||
.setOptions(taskOptions().convertToCalculatorOptionsProto());
|
throw new MediaPipeException(
|
||||||
|
MediaPipeException.StatusCode.INVALID_ARGUMENT.ordinal(),
|
||||||
|
"Only one of convertTo*Proto() method should be implemented for "
|
||||||
|
+ taskOptions().getClass());
|
||||||
|
}
|
||||||
|
Node.Builder taskSubgraphBuilder = Node.newBuilder().setCalculator(taskGraphName());
|
||||||
|
if (options != null) {
|
||||||
|
taskSubgraphBuilder.setOptions(options);
|
||||||
|
}
|
||||||
|
if (anyOptions != null) {
|
||||||
|
taskSubgraphBuilder.addNodeOptions(anyOptions);
|
||||||
|
}
|
||||||
for (String outputStream : outputStreams()) {
|
for (String outputStream : outputStreams()) {
|
||||||
taskSubgraphBuilder.addOutputStream(outputStream);
|
taskSubgraphBuilder.addOutputStream(outputStream);
|
||||||
graphBuilder.addOutputStream(outputStream);
|
graphBuilder.addOutputStream(outputStream);
|
||||||
|
|
|
@ -20,18 +20,26 @@ import com.google.mediapipe.proto.CalculatorOptionsProto.CalculatorOptions;
|
||||||
import com.google.mediapipe.tasks.core.proto.AccelerationProto;
|
import com.google.mediapipe.tasks.core.proto.AccelerationProto;
|
||||||
import com.google.mediapipe.tasks.core.proto.BaseOptionsProto;
|
import com.google.mediapipe.tasks.core.proto.BaseOptionsProto;
|
||||||
import com.google.mediapipe.tasks.core.proto.ExternalFileProto;
|
import com.google.mediapipe.tasks.core.proto.ExternalFileProto;
|
||||||
|
import com.google.protobuf.Any;
|
||||||
import com.google.protobuf.ByteString;
|
import com.google.protobuf.ByteString;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* MediaPipe Tasks options base class. Any MediaPipe task-specific options class should extend
|
* MediaPipe Tasks options base class. Any MediaPipe task-specific options class should extend
|
||||||
* {@link TaskOptions}.
|
* {@link TaskOptions} and implement exactly one of converTo*Proto() methods.
|
||||||
*/
|
*/
|
||||||
public abstract class TaskOptions {
|
public abstract class TaskOptions {
|
||||||
/**
|
/**
|
||||||
* Converts a MediaPipe Tasks task-specific options to a {@link CalculatorOptions} protobuf
|
* Converts a MediaPipe Tasks task-specific options to a {@link CalculatorOptions} protobuf
|
||||||
* message.
|
* message.
|
||||||
*/
|
*/
|
||||||
public abstract CalculatorOptions convertToCalculatorOptionsProto();
|
public CalculatorOptions convertToCalculatorOptionsProto() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Converts a MediaPipe Tasks task-specific options to an proto3 {@link Any} message. */
|
||||||
|
public Any convertToAnyProto() {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts a {@link BaseOptions} instance to a {@link BaseOptionsProto.BaseOptions} protobuf
|
* Converts a {@link BaseOptions} instance to a {@link BaseOptionsProto.BaseOptions} protobuf
|
||||||
|
|
7
third_party/BUILD
vendored
7
third_party/BUILD
vendored
|
@ -378,3 +378,10 @@ java_library(
|
||||||
"@maven//:com_google_auto_value_auto_value_annotations",
|
"@maven//:com_google_auto_value_auto_value_annotations",
|
||||||
],
|
],
|
||||||
)
|
)
|
||||||
|
|
||||||
|
java_proto_library(
|
||||||
|
name = "any_java_proto",
|
||||||
|
deps = [
|
||||||
|
"@com_google_protobuf//:any_proto",
|
||||||
|
],
|
||||||
|
)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user