Intel® RealSense™ Cross Platform API
Intel Realsense Cross-platform API
timestamps.h
Go to the documentation of this file.
1 #pragma once
2 #ifndef LIBREALSENSE_TIMESTAMPS_H
3 #define LIBREALSENSE_TIMESTAMPS_H
4 
5 #include "../include/librealsense/rs.h" // Inherit all type definitions in the public API
6 #include <deque>
7 #include <condition_variable>
8 #include <mutex>
9 #include <atomic>
10 
11 
12 namespace rsimpl
13 {
15  {
16  virtual ~frame_interface() {}
17  virtual double get_frame_metadata(rs_frame_metadata frame_metadata) const = 0;
18  virtual bool supports_frame_metadata(rs_frame_metadata frame_metadata) const = 0;
19  virtual unsigned long long get_frame_number() const = 0;
20  virtual void set_timestamp(double new_ts) = 0;
22  virtual rs_stream get_stream_type()const = 0;
23  };
24 
25 
27  public:
28  void push_back_data(rs_timestamp_data data);
29  bool pop_front_data();
30  bool erase(rs_timestamp_data data);
31  bool correct(frame_interface& frame);
32  size_t size();
33 
34  private:
35  std::deque<rs_timestamp_data> data_queue;
36  std::mutex mtx;
37 
38  };
39 
41  public:
43  virtual void on_timestamp(rs_timestamp_data data) = 0;
44  virtual void correct_timestamp(frame_interface& frame, rs_stream stream) = 0;
45  virtual void release() = 0;
46  };
47 
48 
50  public:
51  timestamp_corrector(std::atomic<uint32_t>* event_queue_size, std::atomic<uint32_t>* events_timeout);
52  ~timestamp_corrector() override;
53  void on_timestamp(rs_timestamp_data data) override;
54  void correct_timestamp(frame_interface& frame, rs_stream stream) override;
55  void release() override {delete this;}
56 
57  private:
58  void update_source_id(rs_event_source& source_id, const rs_stream stream);
59 
60  std::mutex mtx;
62  std::condition_variable cv;
63  std::atomic<uint32_t>* event_queue_size;
64  std::atomic<uint32_t>* events_timeout;
65 
66  };
67 
68 
69 
70 } // namespace rsimpl
71 #endif // LIBREALSENSE_TIMESTAMPS_H
Definition: rs.h:275
frame_metadata
Definition: rs.hpp:155
Definition: archive.h:12
virtual ~frame_interface()
Definition: timestamps.h:16
rs_timestamp_domain
Definition: rs.h:280
virtual void set_timestamp(double new_ts)=0
stream
Definition: rs.hpp:20
Definition: timestamps.h:26
timestamp_domain
Definition: rs.hpp:233
Definition: timestamps.h:14
Definition: timestamps.h:49
virtual void set_timestamp_domain(rs_timestamp_domain timestamp_domain)=0
virtual ~timestamp_corrector_interface()
Definition: timestamps.h:42
Definition: rs.h:327
virtual rs_stream get_stream_type() const =0
virtual bool supports_frame_metadata(rs_frame_metadata frame_metadata) const =0
rs_stream
Definition: rs.h:27
Definition: timestamps.h:40
virtual unsigned long long get_frame_number() const =0
rs_frame_metadata
Definition: rs.h:195
void release() override
Definition: timestamps.h:55
rs_event_source
Definition: rs.h:266
virtual double get_frame_metadata(rs_frame_metadata frame_metadata) const =0