SmartSpectra C++ SDK
Measure human vitals from video with SmartSpectra C++ SDK.
Loading...
Searching...
No Matches
capture_video_source.hpp
1//
2// Created by greg on 2/29/24.
3// Copyright (c) 2024 Presage Technologies
4//
5
6#pragma once
7// === standard library includes (if any) ===
8// === third-party includes (if any) ===
9#include <mediapipe/framework/port/opencv_video_inc.h>
10#include <absl/status/status.h>
11// === local includes (if any) ===
12#include <smartspectra/video_source/video_source.hpp>
13#include <smartspectra/video_source/settings.hpp>
14
15
16namespace presage::smartspectra::video_source::capture {
17
19public:
20 absl::Status Initialize(const VideoSourceSettings& settings) override;
21 bool SupportsExactFrameTimestamp() const override;
22 int64_t GetFrameTimestamp() const override;
23 int GetWidth() override;
24 int GetHeight() override;
25protected:
26 void ProducePreTransformFrame(cv::Mat& frame) override;
27 cv::VideoCapture capture;
28};
29
31public:
32 absl::Status Initialize(const VideoSourceSettings& settings) override;
33 int64_t GetFrameTimestamp() const override;
34 bool SupportsExactFrameTimestamp() const override;
35private:
36 std::vector<int64_t> ReadTimestampsFromFile(const std::string& filename);
37 std::vector<int64_t> timestamps;
38};
39
41public:
42 absl::Status Initialize(const VideoSourceSettings& settings) override;
43
44 bool SupportsExactFrameTimestamp() const override;
45 int64_t GetFrameTimestamp() const override;
46
47 absl::Status TurnOnAutoExposure() override;
48 absl::Status TurnOffAutoExposure() override;
49 absl::Status ToggleAutoExposure() override;
50 absl::StatusOr<bool> IsAutoExposureOn() override;
51 absl::Status IncreaseExposure() override;
52 absl::Status DecreaseExposure() override;
53 bool SupportsExposureControls() override;
54 InputTransformMode GetDefaultInputTransformMode() override;
55
56 void UseNoTimestampConversion();
57 void UseUptimeTimestampConversion();
58
59 int GetWidth() override;
60 int GetHeight() override;
61
62protected:
63 void ProducePreTransformFrame(cv::Mat& frame) override;
64private:
65 std::function<int64_t (int64_t input_timestamp_ms)> convert_timestamp_ms =
66 [](int64_t input_timestamp_ms) { return input_timestamp_ms; };
67 absl::StatusOr<double> GetExposure();
68 absl::Status ModifyExposure(int by);
69 cv::VideoCapture capture;
70 presage::camera::AutoExposureConfiguration auto_exposure_configuration;
71 bool capture_supports_timestamp = false;
72 int exposure_step = 10;
73};
74
75} // namespace presage::smartspectra::video_source::capture
Abstract interface for camera/video input sources.
Definition video_source.hpp:30
virtual absl::StatusOr< double > GetExposure()
Get current exposure as a normalized value.
Definition video_source.cpp:44
int64_t GetFrameTimestamp() const override
Definition capture_video_source.cpp:205
absl::Status ToggleAutoExposure() override
Toggle between automatic and manual exposure modes.
Definition capture_video_source.cpp:249
bool SupportsExposureControls() override
Check if this video source supports exposure controls.
Definition capture_video_source.cpp:325
absl::StatusOr< bool > IsAutoExposureOn() override
Check if automatic exposure is currently enabled.
Definition capture_video_source.cpp:270
absl::Status TurnOnAutoExposure() override
Enable automatic exposure mode.
Definition capture_video_source.cpp:220
absl::Status IncreaseExposure() override
Increase exposure by a fixed hardware-specific step.
Definition capture_video_source.cpp:280
absl::Status TurnOffAutoExposure() override
Disable automatic exposure and switch to manual mode.
Definition capture_video_source.cpp:233
absl::Status DecreaseExposure() override
Decrease exposure by a fixed hardware-specific step.
Definition capture_video_source.cpp:284
absl::Status Initialize(const VideoSourceSettings &settings) override
Definition capture_video_source.cpp:99
absl::Status Initialize(const VideoSourceSettings &settings) override
Definition capture_video_source.cpp:77
int64_t GetFrameTimestamp() const override
Definition capture_video_source.cpp:82
absl::Status Initialize(const VideoSourceSettings &settings) override
Definition capture_video_source.cpp:34
int64_t GetFrameTimestamp() const override
Definition capture_video_source.cpp:30
InputTransformMode
Transformation applied to frames prior to processing.
Definition input_transform.hpp:19
Configuration options for constructing a VideoSource.
Definition settings.hpp:23