Banuba SDK
Loading...
Searching...
No Matches
video_mocker.hpp
1
2#pragma once
3
4#include <chrono>
5#include <thread>
6#include <optional>
7
8#include <bnb/types/base_types.hpp>
9#include <bnb/spal/camera/base_mocker.hpp>
10#include <bnb/utils/defs.hpp>
11#include <bnb/utils/warning_ingore.h>
12
13#if !BNB_OS_EMSCRIPTEN
14BNB_NO_WARN_BEGIN_GCC("-Wdeprecated-anon-enum-enum-conversion")
15 #include <opencv2/core/core.hpp>
16 #include <opencv2/videoio.hpp>
17BNB_NO_WARN_END_GCC()
18
19
20namespace bnb
21{
22 class BNB_EXPORT camera_video_mocker final : public camera_base_mocker
23 {
24 public:
25 typedef std::optional<cv::Rect> rect_t;
26
27 public:
28 camera_video_mocker(const camera_base::push_frame_cb_t& cb, uint32_t frame_rate, const std::string& input_file, const rect_t& clip_area);
29 camera_video_mocker(const camera_base::push_frame_cb_t& cb, const std::string& input_file, const rect_t& clip_area = std::nullopt);
31
32 void set_device_by_index(uint32_t device_index) override;
33 void set_device_by_id(const std::string& device_id) override;
34
35 private:
36 void update_image_content() final;
37
38 private:
39 uint32_t m_frame_width;
40 uint32_t m_frame_height;
41 uint32_t m_frame_size;
42
43 cv::VideoCapture m_capture;
44 std::optional<cv::Rect> m_clip_area;
45 };
46
47} // namespace bnb
48
49#endif