71 explicit Container(SettingsType settings);
76 absl::Status
SetOnStatusChange(
const std::function<absl::Status(physiology::StatusValue)>& on_status_change);
82 absl::Status
SetOnStatusCode(
const std::function<absl::Status(physiology::StatusValue)>& on_status_code);
84 absl::Status SetOnEdgeMetricsOutput(
85 const std::function<absl::Status(
const physiology::Metrics&, int64_t input_timestamp)>& on_edge_metrics_output
93 std::function<absl::Status(
const physiology::MetricsBuffer&, int64_t input_timestamp)>& on_core_metrics_output
96 absl::Status SetOnVideoOutput(
97 const std::function<absl::Status(cv::Mat& output_frame, int64_t input_timestamp)>& on_video_output
104 const std::function<absl::Status(
bool frame_sent_through, int64_t input_timestamp)>& on_dropped_frame
111 const std::function<absl::Status(
double,
double, int64_t)>& on_effective_core_fps_output
131 absl::StatusOr<std::filesystem::path>
GetGraphFilePath(
bool binary_graph =
true)
const;
141 SettingsType settings;
144 mediapipe::CalculatorGraph graph;
148 std::function<absl::Status(physiology::StatusValue)> OnStatusChange =
149 [](physiology::StatusValue status) {
return absl::OkStatus(); };
152 std::function<absl::Status(physiology::StatusValue)> OnStatusCode =
153 [](physiology::StatusValue status) {
return absl::OkStatus(); };
156 std::function<absl::Status(
const physiology::Metrics&, int64_t input_timestamp)> OnEdgeMetricsOutput =
157 [](
const physiology::Metrics&, int64_t input_timestamp) {
return absl::OkStatus(); };
160 std::function<absl::Status(
const physiology::MetricsBuffer&, int64_t input_timestamp)> OnCoreMetricsOutput =
161 [](
const physiology::MetricsBuffer&, int64_t input_timestamp) {
return absl::OkStatus(); };
164 std::function<absl::Status(cv::Mat& output_frame, int64_t input_timestamp)> OnVideoOutput =
165 [](cv::Mat& output_frame, int64_t input_timestamp) {
return absl::OkStatus(); };
169 std::function<absl::Status(
bool frame_sent_through, int64_t input_timestamp)> OnFrameSentThrough =
170 [](
bool frame_sent_through, int64_t input_timestamp) {
return absl::OkStatus(); };
173 std::optional<std::function<absl::Status(
double fps,
double latency_s, int64_t input_timestamp)>>
174 OnCorePerformanceTelemetry = std::nullopt;
176 platform_independence::DeviceContext<TDeviceType> device_context;
177 bool initialized =
false;
178 bool running =
false;
180 physiology::StatusValue status;
181 bool recording =
false;
184 cv::Mat output_frame_bgr;
189 std::set<int64_t> frames_in_graph_timestamps;
190 const int64_t fps_averaging_window_microseconds = 3 * 1000000;
191 struct MetricsBufferBenchmarkingInfo {
192 int64_t first_timestamp = 0;
193 int64_t last_timestamp = 0;
194 int32_t frame_count = 0;
195 double latency_seconds = 0;
197 std::vector<MetricsBufferBenchmarkingInfo> metrics_buffer_benchmarking_info_buffer;
198 std::optional<double> offset_from_system_time = std::nullopt;
Helper for managing polling of operation-specific graph streams.
Definition operation_context.hpp:36