chromium/third_party/mediapipe/src/mediapipe/framework/api2/stream/merge.h

#ifndef MEDIAPIPE_FRAMEWORK_API2_STREAM_MERGE_H_
#define MEDIAPIPE_FRAMEWORK_API2_STREAM_MERGE_H_

#include "mediapipe/framework/api2/builder.h"

namespace mediapipe::api2::builder {

// Updates @graph to choose @a stream if it's available (not empty stream at
// specific timestamp) or @b stream otherwise.
template <typename T>
Stream<T> Merge(Stream<T> a, Stream<T> b, Graph& graph) {
  auto& merge_node = graph.AddNode("MergeCalculator");
  a.ConnectTo(merge_node.In("")[0]);
  b.ConnectTo(merge_node.In("")[1]);
  return merge_node.Out("").template Cast<T>();
}

}  // namespace mediapipe::api2::builder

#endif  // MEDIAPIPE_FRAMEWORK_API2_STREAM_MERGE_H_