SmartSpectra C++ SDK
Measure human vitals from video with SmartSpectra C++ SDK.
Loading...
Searching...
No Matches
presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode > Class Template Reference

Container for background thread processing. More...

#include <background_container.hpp>

Inheritance diagram for presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >:
presage::smartspectra::container::Container< TDeviceType, TOperationMode, TIntegrationMode >

Public Types

typedef container::settings::Settings< TOperationMode, TIntegrationMode > SettingsType
using Base = Container<TDeviceType, TOperationMode, TIntegrationMode>
Public Types inherited from presage::smartspectra::container::Container< TDeviceType, TOperationMode, TIntegrationMode >
typedef container::settings::Settings< TOperationMode, TIntegrationMode > SettingsType

Public Member Functions

 BackgroundContainer (SettingsType settings)
bool GraphIsRunning () const
bool ContainerIsInitialized () const
absl::Status Initialize () override
absl::Status StartGraph ()
absl::Status WaitUntilGraphIsIdle ()
absl::Status SetRecording (bool on)
absl::Status AddFrameWithTimestamp (const cv::Mat &frame_rgb, int64_t frame_timestamp_μs)
physiology::StatusCode GetStatusCode () const
absl::Status StopGraph ()
Public Member Functions inherited from presage::smartspectra::container::Container< TDeviceType, TOperationMode, TIntegrationMode >
 Container (SettingsType settings)
absl::Status SetOnStatusChange (const std::function< absl::Status(physiology::StatusValue)> &on_status_change)
absl::Status SetOnStatusCode (const std::function< absl::Status(physiology::StatusValue)> &on_status_code)
absl::Status SetOnEdgeMetricsOutput (const std::function< absl::Status(const physiology::Metrics &, int64_t input_timestamp)> &on_edge_metrics_output)
absl::Status SetOnCoreMetricsOutput (const std::function< absl::Status(const physiology::MetricsBuffer &, int64_t input_timestamp)> &on_core_metrics_output)
absl::Status SetOnVideoOutput (const std::function< absl::Status(cv::Mat &output_frame, int64_t input_timestamp)> &on_video_output)
absl::Status SetOnFrameSentThrough (const std::function< absl::Status(bool frame_sent_through, int64_t input_timestamp)> &on_dropped_frame)
absl::Status SetOnCorePerformanceTelemetry (const std::function< absl::Status(double, double, int64_t)> &on_effective_core_fps_output)

Additional Inherited Members

Protected Member Functions inherited from presage::smartspectra::container::Container< TDeviceType, TOperationMode, TIntegrationMode >
virtual std::string GetThirdGraphFileSuffix () const
virtual std::string GetGraphFilePrefix () const
absl::StatusOr< std::filesystem::path > GetGraphFilePath (bool binary_graph=true) const
absl::Status ComputeCorePerformanceTelemetry (const physiology::MetricsBuffer &metrics_buffer)
void AddFrameTimestampToBenchmarkingInfo (const mediapipe::Timestamp &timestamp)
Protected Attributes inherited from presage::smartspectra::container::Container< TDeviceType, TOperationMode, TIntegrationMode >
SettingsType settings
mediapipe::CalculatorGraph graph
std::function< absl::Status(physiology::StatusValue)> OnStatusChange
std::function< absl::Status(physiology::StatusValue)> OnStatusCode
std::function< absl::Status(const physiology::Metrics &, int64_t input_timestamp)> OnEdgeMetricsOutput
std::function< absl::Status(const physiology::MetricsBuffer &, int64_t input_timestamp)> OnCoreMetricsOutput
std::function< absl::Status(cv::Mat &output_frame, int64_t input_timestamp)> OnVideoOutput
std::function< absl::Status(bool frame_sent_through, int64_t input_timestamp)> OnFrameSentThrough
std::optional< std::function< absl::Status(double fps, double latency_s, int64_t input_timestamp)> > OnCorePerformanceTelemetry = std::nullopt
platform_independence::DeviceContext< TDeviceType > device_context
bool initialized = false
bool running = false
physiology::StatusValue status
bool recording = false
cv::Mat output_frame_bgr
OperationContext< TOperationMode > operation_context

Detailed Description

template<platform_independence::DeviceType TDeviceType, settings::OperationMode TOperationMode, settings::IntegrationMode TIntegrationMode>
class presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >

Container for background thread processing.

Constructor & Destructor Documentation

◆ BackgroundContainer()

template<platform_independence::DeviceType TDeviceType, settings::OperationMode TOperationMode, settings::IntegrationMode TIntegrationMode>
presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >::BackgroundContainer ( BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >::SettingsType settings)
explicit

Construct a background container with the provided settings.

Member Function Documentation

◆ AddFrameWithTimestamp()

template<platform_independence::DeviceType TDeviceType, settings::OperationMode TOperationMode, settings::IntegrationMode TIntegrationMode>
absl::Status presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >::AddFrameWithTimestamp ( const cv::Mat & frame_rgb,
int64_t frame_timestamp_μs )

Feed a frame into the graph with an explicit timestamp.

Adds frame input to graph. Also, updates the recording status within the graph based on internal state of the container (i.e. recording / not recording)

Template Parameters
TDeviceType
TOperationMode
TIntegrationMode
Parameters
frame
frame_timestamp_μsframe timestamp in microseconds; preferably, should be based on camera's own shutter clock
Returns
status of the operation

◆ GetStatusCode()

template<platform_independence::DeviceType TDeviceType, settings::OperationMode TOperationMode, settings::IntegrationMode TIntegrationMode>
physiology::StatusCode presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >::GetStatusCode ( ) const
inline

Return last observed status code from preprocessing.

◆ GraphIsRunning()

template<platform_independence::DeviceType TDeviceType, settings::OperationMode TOperationMode, settings::IntegrationMode TIntegrationMode>
bool presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >::GraphIsRunning ( ) const

Check if the MediaPipe graph is currently running.

◆ Initialize()

template<platform_independence::DeviceType TDeviceType, settings::OperationMode TOperationMode, settings::IntegrationMode TIntegrationMode>
absl::Status presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >::Initialize ( )
overridevirtual

Initialize the container and prepare the graph.

Reimplemented from presage::smartspectra::container::Container< TDeviceType, TOperationMode, TIntegrationMode >.

◆ SetRecording()

template<platform_independence::DeviceType TDeviceType, settings::OperationMode TOperationMode, settings::IntegrationMode TIntegrationMode>
absl::Status presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >::SetRecording ( bool on)

Toggle recording state within the graph.

◆ StartGraph()

template<platform_independence::DeviceType TDeviceType, settings::OperationMode TOperationMode, settings::IntegrationMode TIntegrationMode>
absl::Status presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >::StartGraph ( )

Start execution of the MediaPipe graph.

◆ StopGraph()

template<platform_independence::DeviceType TDeviceType, settings::OperationMode TOperationMode, settings::IntegrationMode TIntegrationMode>
absl::Status presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >::StopGraph ( )

Stop graph execution and clean up resources.

◆ WaitUntilGraphIsIdle()

template<platform_independence::DeviceType TDeviceType, settings::OperationMode TOperationMode, settings::IntegrationMode TIntegrationMode>
absl::Status presage::smartspectra::container::BackgroundContainer< TDeviceType, TOperationMode, TIntegrationMode >::WaitUntilGraphIsIdle ( )

Block until the graph has finished processing.


The documentation for this class was generated from the following files: