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)
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);
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);
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());
256 void log_callback_start(frame_ref* frame_ref, std::chrono::high_resolution_clock::time_point capture_start_time);
258 virtual void flush();
frame_ref(frame *frame)
Definition: archive.h:130
frame_ref & operator=(frame_ref other)
Definition: archive.h:145
~frame()
Definition: archive.h:94
void release_frameset(frameset *frameset)
Definition: archive.h:235
rs_stream get_stream_type() const override
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
int get_frame_height() 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
int get_framerate() const
native_pixel_format pf
Definition: types.h:158
double get_frame_timestamp() const
frame_ref()
Definition: archive.h:128
rs_stream stream_type
Definition: archive.h:32
rs_stream get_stream_type() const override
rs_timestamp_domain get_frame_timestamp_domain() const override
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)
void place_frame(rs_stream stream, frame &&new_frame)
unsigned long long get_frame_number() const override
std::chrono::high_resolution_clock::time_point get_frame_callback_start_time_point() const
void attach_continuation(rs_stream stream, frame_continuation &&continuation)
long long get_frame_system_time() const override
rs_timestamp_domain
Definition: rs.h:280
rs_timestamp_domain get_frame_timestamp_domain() const
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
timestamp_domain
Definition: rs.hpp:233
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
std::chrono::high_resolution_clock::time_point get_frame_callback_start_time_point() const
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 get_frame_framerate() const override
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
double get_frame_metadata(rs_frame_metadata frame_metadata) const override
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())
long long get_frame_system_time() const
std::chrono::high_resolution_clock::time_point capture_started
Definition: archive.h:226
int get_frame_width() const override
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
rs_format get_frame_format() const override
const byte * get_frame_data() const
int pad
Definition: archive.h:34
uint8_t byte
Definition: types.h:42
bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override
void log_callback_start(std::chrono::high_resolution_clock::time_point capture_start_time)
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
void update_frame_callback_start_ts(std::chrono::high_resolution_clock::time_point ts)
int get_frame_stride() const override
Definition: rscore.hpp:44
frame_ref detach_ref(rs_stream stream)
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
void update_frame_callback_start_ts(std::chrono::high_resolution_clock::time_point ts)
unsigned long long get_frame_number() const override
frame & operator=(const frame &r)=delete
rs_format get_format() const
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