Banuba SDK
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
14 BNB_NO_WARN_BEGIN_GCC("-Wdeprecated-anon-enum-enum-conversion")
15  #include <opencv2/core/core.hpp>
16  #include <opencv2/videoio.hpp>
17 BNB_NO_WARN_END_GCC()
18 
19 
20 namespace 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);
30  ~camera_video_mocker() final;
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
bnb::camera_base_mocker
Definition: base_mocker.hpp:11
bnb::camera_video_mocker
Definition: video_mocker.hpp:22