syntax = "proto2";

package mediapipe;

import "mediapipe/framework/calculator.proto";

option java_package = "com.google.mediapipe.proto";
option java_outer_classname = "SwitchContainerProto";

// Options for a switch-container directing traffic to one of several
// contained subgraph or calculator nodes.
message SwitchContainerOptions {
  extend mediapipe.CalculatorOptions {
    optional SwitchContainerOptions ext = 345967970;
  }

  reserved 1;

  // The contained registered subgraphs or calculators.
  repeated CalculatorGraphConfig.Node contained_node = 2;

  // Activates the specified channel to receive input packets.
  optional int32 select = 3;

  // Activates channel 1 for enable = true, channel 0 otherwise.
  optional bool enable = 4;

  // Use DefaultInputStreamHandler for demuxing.
  optional bool synchronize_io = 5;

  // Use ImmediateInputStreamHandler for channel selection.
  optional bool async_selection = 6;

  // Specifies an input stream, "TAG:index", that defines the processed
  // timestamps.  SwitchContainer awaits output at the last processed
  // timestamp before advancing from one selected channel to the next.
  repeated string tick_input_stream = 7;
}
