Intel® RealSense™ Cross Platform API
Intel Realsense Cross-platform API
playback_sensor.h
Go to the documentation of this file.
1 // License: Apache 2.0. See LICENSE file in root directory.
2 // Copyright(c) 2017 Intel Corporation. All Rights Reserved.
3 
4 #pragma once
5 #include <core/roi.h>
6 #include <core/extension.h>
7 #include <core/serialization.h>
8 #include "core/streaming.h"
9 #include "archive.h"
10 #include "concurrency.h"
11 #include "sensor.h"
12 #include "types.h"
13 
14 namespace librealsense
15 {
17  public extendable_interface,
18  public info_container,
19  public options_container,
20  public std::enable_shared_from_this<playback_sensor>
21  {
22  public:
23  using frame_interface_callback_t = std::function<void(frame_holder)>;
28 
29  playback_sensor(const device_interface& parent_device, const device_serializer::sensor_snapshot& sensor_description);
30  virtual ~playback_sensor();
31 
32  stream_profiles get_stream_profiles() const override;
33  void open(const stream_profiles& requests) override;
34  void close() override;
37  void start(frame_callback_ptr callback) override;
38  void stop() override;
39  bool is_streaming() const override;
40  bool extend_to(rs2_extension extension_type, void** ext) override;
41  const device_interface& get_device() override;
42  void handle_frame(frame_holder frame, bool is_real_time);
43  void update_option(rs2_option id, std::shared_ptr<option> option);
44  void stop(bool invoke_required);
45  void flush_pending_frames();
47  frame_callback_ptr get_frames_callback() const override;
48  void set_frames_callback(frame_callback_ptr callback) override;
49  stream_profiles get_active_streams() const override;
50  int register_before_streaming_changes_callback(std::function<void(bool)> callback) override;
51  void unregister_before_start_callback(int token) override;
52  void raise_notification(const notification& n);
53  private:
54  void register_sensor_streams(const stream_profiles& vector);
55  void register_sensor_infos(const device_serializer::sensor_snapshot& sensor_snapshot);
56  void register_sensor_options(const device_serializer::sensor_snapshot& sensor_snapshot);
57 
58  frame_callback_ptr m_user_callback;
59  notifications_processor _notifications_processor;
60  using stream_unique_id = int;
61  std::map<stream_unique_id, std::shared_ptr<dispatcher>> m_dispatchers;
62  std::atomic<bool> m_is_started;
63  device_serializer::sensor_snapshot m_sensor_description;
64  uint32_t m_sensor_id;
65  std::mutex m_mutex;
66  std::map<std::pair<rs2_stream, uint32_t>, std::shared_ptr<stream_profile_interface>> m_streams;
67  const device_interface& m_parent_device;
68  stream_profiles m_available_profiles;
69  stream_profiles m_active_streams;
70  };
71 }
Definition: options.h:48
void update_option(rs2_option id, std::shared_ptr< option > option)
bool is_streaming() const override
rs2_option
Defines general configuration controls. These can generally be mapped to camera UVC controls...
Definition: rs_option.h:22
std::function< void(frame_holder)> frame_interface_callback_t
Definition: playback_sensor.h:23
Definition: info.h:22
signal< playback_sensor, const std::vector< device_serializer::stream_identifier > &> opened
Definition: playback_sensor.h:26
std::shared_ptr< rs2_frame_callback > frame_callback_ptr
Definition: types.h:872
void open(const stream_profiles &requests) override
Definition: options.h:20
notifications_callback_ptr get_notifications_callback() const override
bool extend_to(rs2_extension extension_type, void **ext) override
void register_notifications_callback(notifications_callback_ptr callback) override
void handle_frame(frame_holder frame, bool is_real_time)
void start(frame_callback_ptr callback) override
void raise_notification(const notification &n)
Definition: streaming.h:131
Definition: types.h:1390
signal< playback_sensor, uint32_t, frame_callback_ptr > started
Definition: playback_sensor.h:24
Definition: archive.h:63
Definition: algo.h:16
playback_sensor(const device_interface &parent_device, const device_serializer::sensor_snapshot &sensor_description)
stream_profiles get_stream_profiles() const override
std::shared_ptr< rs2_notifications_callback > notifications_callback_ptr
Definition: types.h:874
Definition: extension.h:22
signal< playback_sensor, const std::vector< device_serializer::stream_identifier > &> closed
Definition: playback_sensor.h:27
void update(const device_serializer::sensor_snapshot &sensor_snapshot)
std::vector< std::shared_ptr< stream_profile_interface >> stream_profiles
Definition: streaming.h:104
signal< playback_sensor, uint32_t, bool > stopped
Definition: playback_sensor.h:25
stream_profiles get_active_streams() const override
int register_before_streaming_changes_callback(std::function< void(bool)> callback) override
Definition: playback_sensor.h:16
void unregister_before_start_callback(int token) override
rs2_extension
Specifies advanced interfaces (capabilities) objects may implement.
Definition: rs_types.h:93
Definition: types.h:637
Definition: streaming.h:106
Definition: types.h:896
void set_frames_callback(frame_callback_ptr callback) override
frame_callback_ptr get_frames_callback() const override
const device_interface & get_device() override