5 #ifndef LIBREALSENSE_ARCHIVE_H 6 #define LIBREALSENSE_ARCHIVE_H 41 int in_width,
int in_height,
int in_fps,
42 int in_stride_x,
int in_stride_y,
int in_bpp,
43 const rs_format in_format,
rs_stream in_stream_type,
int in_pad, std::shared_ptr<std::vector<rs_frame_metadata>> in_supported_metadata_vector,
double in_exposure_value,
double in_actual_fps)
44 : timestamp(in_timestamp),
45 frame_number(in_frame_number),
46 system_time(in_system_time),
50 stride_x(in_stride_x),
51 stride_y(in_stride_y),
54 stream_type(in_stream_type),
56 supported_metadata_vector(in_supported_metadata_vector),
57 exposure_value(in_exposure_value),
58 actual_fps(in_actual_fps){}
66 std::atomic<int> ref_count;
74 explicit frame() : ref_count(0), owner(nullptr), on_release(){}
77 : ref_count(r.ref_count.exchange(0)),
78 owner(r.owner), on_release()
88 ref_count = r.ref_count.exchange(0);
89 on_release = std::move(r.on_release);
98 const byte* get_frame_data()
const;
99 double get_frame_timestamp()
const;
102 unsigned long long get_frame_number()
const override;
104 long long get_frame_system_time()
const;
105 int get_width()
const;
106 int get_height()
const;
107 int get_framerate()
const;
108 int get_stride()
const;
111 rs_stream get_stream_type()
const override;
113 std::chrono::high_resolution_clock::time_point get_frame_callback_start_time_point()
const;
114 void update_frame_callback_start_ts(std::chrono::high_resolution_clock::time_point ts);
137 if (frame_ptr) frame_ptr->
acquire();
142 other.frame_ptr =
nullptr;
153 if (frame_ptr) frame_ptr->
release();
158 std::swap(frame_ptr, other.frame_ptr);
168 const byte* get_frame_data()
const override;
169 double get_frame_timestamp()
const override;
170 unsigned long long get_frame_number()
const override;
171 long long get_frame_system_time()
const override;
173 int get_frame_width()
const override;
174 int get_frame_height()
const override;
175 int get_frame_framerate()
const override;
176 int get_frame_stride()
const override;
177 int get_frame_bpp()
const override;
178 rs_format get_frame_format()
const override;
179 rs_stream get_stream_type()
const override;
180 std::chrono::high_resolution_clock::time_point get_frame_callback_start_time_point()
const;
181 void update_frame_callback_start_ts(std::chrono::high_resolution_clock::time_point ts);
182 void log_callback_start(std::chrono::high_resolution_clock::time_point capture_start_time);
215 std::atomic<uint32_t>* max_frame_queue_size;
229 frame_archive(
const std::vector<subdevice_mode_selection> & selection, std::atomic<uint32_t>* max_frame_queue_size, std::chrono::high_resolution_clock::time_point capture_started = std::chrono::high_resolution_clock::now());
258 virtual void flush();
frame_ref(frame *frame)
Definition: archive.h:130
~frame()
Definition: archive.h:94
void release_frameset(frameset *frameset)
Definition: archive.h:235
frame_ref(frame_ref &&other)
Definition: archive.h:140
void acquire()
Definition: archive.h:116
frame backbuffer[RS_STREAM_NATIVE_COUNT]
Definition: archive.h:223
double get_frame_metadata(rs_frame_metadata frame_metadata) const override
void attach_continuation(frame_continuation &&continuation)
Definition: archive.h:120
int get_frame_stride(rs_stream stream) const
Definition: archive.h:204
int bpp
Definition: archive.h:30
frame_metadata
Definition: rs.hpp:155
bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override
rs_timestamp_domain timestamp_domain
Definition: archive.h:33
double get_frame_metadata(rs_stream stream, rs_frame_metadata frame_metadata) const
Definition: archive.h:198
native_pixel_format pf
Definition: types.h:158
frame_ref()
Definition: archive.h:128
rs_stream stream_type
Definition: archive.h:32
void swap(frame_ref &other)
Definition: archive.h:156
int stride_y
Definition: archive.h:29
frame_additional_data()
Definition: archive.h:38
void set_timestamp(double new_ts) override
Definition: archive.h:101
int stride_x
Definition: archive.h:28
void release_frame_ref(frame_ref *ref)
Definition: archive.h:246
int fps
Definition: archive.h:27
frame_ref * clone_frame(frame_ref *frameset)
unsigned long long get_frame_number() const override
void attach_continuation(rs_stream stream, frame_continuation &&continuation)
long long get_frame_system_time() const override
rs_timestamp_domain
Definition: rs.h:280
void unpublish_frame(frame *frame)
void reset()
Definition: types.h:602
byte * alloc_frame(rs_stream stream, const frame_additional_data &additional_data, bool requires_memory)
frameset * clone_frameset(frameset *frameset)
rs_format format
Definition: archive.h:31
std::chrono::high_resolution_clock::time_point frame_callback_started
Definition: archive.h:36
std::shared_ptr< std::vector< rs_frame_metadata > > supported_metadata_vector
Definition: archive.h:35
const uint8_t RS_STREAM_NATIVE_COUNT
Definition: types.h:27
void log_frame_callback_end(frame *frame)
virtual ~frame_archive()
Definition: archive.h:260
double exposure_value
Definition: archive.h:22
~frame_ref()
Definition: archive.h:151
subdevice_mode mode
Definition: types.h:295
Definition: archive.h:124
stream
Definition: rs.hpp:20
void update_owner(frame_archive *new_owner)
Definition: archive.h:119
double actual_fps
Definition: archive.h:20
frame_additional_data additional_data
Definition: archive.h:72
Definition: timestamps.h:14
frame()
Definition: archive.h:74
void log_callback_start(frame_ref *frame_ref, std::chrono::high_resolution_clock::time_point capture_start_time)
unsigned long long frame_number
Definition: archive.h:23
void deallocate(T *item)
Definition: types.h:532
frame * publish_frame(frame &&frame)
int height
Definition: archive.h:26
const rs_frame_ref * get_frame(rs_stream stream) const
Definition: archive.h:193
std::vector< byte > data
Definition: archive.h:71
rs_format
Definition: rs.h:46
int width
Definition: archive.h:25
std::recursive_mutex mutex
Definition: archive.h:225
int get_frame_bpp(rs_stream stream) const
Definition: archive.h:205
const byte * get_frame_data() const override
frame & operator=(frame &&r)
Definition: archive.h:84
double get_frame_timestamp(rs_stream stream) const
Definition: archive.h:201
void set_timestamp_domain(rs_timestamp_domain timestamp_domain) override
Definition: archive.h:103
frame_archive(const std::vector< subdevice_mode_selection > &selection, std::atomic< uint32_t > *max_frame_queue_size, std::chrono::high_resolution_clock::time_point capture_started=std::chrono::high_resolution_clock::now())
std::chrono::high_resolution_clock::time_point capture_started
Definition: archive.h:226
frame_ref * detach_frame_ref(frameset *frameset, rs_stream stream)
void disable_continuation()
Definition: archive.h:161
bool is_stream_enabled(rs_stream stream) const
Definition: archive.h:232
int pad
Definition: archive.h:34
uint8_t byte
Definition: types.h:42
rs_stream
Definition: rs.h:27
frame_ref * track_frame(rs_stream stream)
double get_frame_timestamp() const override
frame_ref(const frame_ref &other)
Definition: archive.h:135
bool supports_frame_metadata(rs_stream stream, rs_frame_metadata frame_metadata) const
Definition: archive.h:199
frame(frame &&r)
Definition: archive.h:76
int get_frame_stride() const override
Definition: rscore.hpp:44
rs_frame_metadata
Definition: rs.h:195
std::vector< frame > freelist
Definition: archive.h:224
int get_frame_bpp() const override
long long get_frame_system_time(rs_stream stream) const
Definition: archive.h:203
long long system_time
Definition: archive.h:24
void disable_continuation()
Definition: archive.h:121
frame_additional_data(double in_timestamp, unsigned long long in_frame_number, long long in_system_time, int in_width, int in_height, int in_fps, int in_stride_x, int in_stride_y, int in_bpp, const rs_format in_format, rs_stream in_stream_type, int in_pad, std::shared_ptr< std::vector< rs_frame_metadata >> in_supported_metadata_vector, double in_exposure_value, double in_actual_fps)
Definition: archive.h:40
const subdevice_mode_selection & get_mode(rs_stream stream) const
Definition: archive.h:233
const byte * get_frame_data(rs_stream stream) const
Definition: archive.h:200
Definition: archive.h:185
unsigned long long get_frame_number(rs_stream stream) const
Definition: archive.h:202
double timestamp
Definition: archive.h:21