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);
195 return &buffer[stream];
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());
int get_frame_framerate() const override
frame_ref(frame_ref &&other)
Definition archive.h:140
void swap(frame_ref &other)
Definition archive.h:156
double get_frame_timestamp() const override
void disable_continuation()
Definition archive.h:161
int get_frame_height() const override
frame_ref()
Definition archive.h:128
rs_stream get_stream_type() const override
const byte * get_frame_data() const override
frame_ref & operator=(frame_ref other)
Definition archive.h:145
double get_frame_metadata(rs_frame_metadata frame_metadata) const override
~frame_ref()
Definition archive.h:151
int get_frame_stride() const override
bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override
int get_frame_width() const override
int get_frame_bpp() const override
rs_format get_frame_format() const override
frame_ref(const frame_ref &other)
Definition archive.h:135
frame_ref(frame *frame)
Definition archive.h:130
rs_timestamp_domain get_frame_timestamp_domain() const override
std::chrono::high_resolution_clock::time_point get_frame_callback_start_time_point() const
void log_callback_start(std::chrono::high_resolution_clock::time_point capture_start_time)
unsigned long long get_frame_number() const override
long long get_frame_system_time() const override
void update_frame_callback_start_ts(std::chrono::high_resolution_clock::time_point ts)
int get_frame_stride(rs_stream stream) const
Definition archive.h:204
void place_frame(rs_stream stream, frame &&new_frame)
double get_frame_timestamp(rs_stream stream) const
Definition archive.h:201
long long get_frame_system_time(rs_stream stream) const
Definition archive.h:203
int get_frame_bpp(rs_stream stream) const
Definition archive.h:205
unsigned long long get_frame_number(rs_stream stream) const
Definition archive.h:202
bool supports_frame_metadata(rs_stream stream, rs_frame_metadata frame_metadata) const
Definition archive.h:199
double get_frame_metadata(rs_stream stream, rs_frame_metadata frame_metadata) const
Definition archive.h:198
const byte * get_frame_data(rs_stream stream) const
Definition archive.h:200
const rs_frame_ref * get_frame(rs_stream stream) const
Definition archive.h:193
frame_ref detach_ref(rs_stream stream)
std::recursive_mutex mutex
Definition archive.h:225
void log_frame_callback_end(frame *frame)
frame * publish_frame(frame &&frame)
byte * alloc_frame(rs_stream stream, const frame_additional_data &additional_data, bool requires_memory)
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())
void attach_continuation(rs_stream stream, frame_continuation &&continuation)
void log_callback_start(frame_ref *frame_ref, std::chrono::high_resolution_clock::time_point capture_start_time)
frame_ref * clone_frame(frame_ref *frameset)
frame backbuffer[RS_STREAM_NATIVE_COUNT]
Definition archive.h:223
void release_frame_ref(frame_ref *ref)
Definition archive.h:246
void unpublish_frame(frame *frame)
frame_ref * track_frame(rs_stream stream)
virtual ~frame_archive()
Definition archive.h:260
frameset * clone_frameset(frameset *frameset)
void release_frameset(frameset *frameset)
Definition archive.h:235
std::chrono::high_resolution_clock::time_point capture_started
Definition archive.h:226
std::vector< frame > freelist
Definition archive.h:224
frame_ref * detach_frame_ref(frameset *frameset, rs_stream stream)
const subdevice_mode_selection & get_mode(rs_stream stream) const
Definition archive.h:233
bool is_stream_enabled(rs_stream stream) const
Definition archive.h:232
void reset()
Definition types.h:602
void deallocate(T *item)
Definition types.h:532
rs_stream
Streams are different types of data provided by RealSense devices.
Definition rs.h:34
@ RS_STREAM_COUNT
Definition rs.h:47
rs_frame_metadata
Types of value provided from the device with each frame.
Definition rs.h:204
rs_format
Formats: defines how each stream can be encoded.
Definition rs.h:54
@ RS_FORMAT_ANY
Definition rs.h:55
rs_timestamp_domain
Specifies the clock in relation to which the frame timestamp was measured.
Definition rs.h:293
@ RS_TIMESTAMP_DOMAIN_CAMERA
Definition rs.h:294
long long system_time
Definition archive.h:24
std::shared_ptr< std::vector< rs_frame_metadata > > supported_metadata_vector
Definition archive.h:35
int width
Definition archive.h:25
unsigned long long frame_number
Definition archive.h:23
rs_format format
Definition archive.h:31
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
int stride_x
Definition archive.h:28
frame_additional_data()
Definition archive.h:38
int fps
Definition archive.h:27
int bpp
Definition archive.h:30
int stride_y
Definition archive.h:29
double timestamp
Definition archive.h:21
std::chrono::high_resolution_clock::time_point frame_callback_started
Definition archive.h:36
double exposure_value
Definition archive.h:22
rs_timestamp_domain timestamp_domain
Definition archive.h:33
double actual_fps
Definition archive.h:20
int pad
Definition archive.h:34
rs_stream stream_type
Definition archive.h:32
int height
Definition archive.h:26
const byte * get_frame_data() const
long long get_frame_system_time() const
frame & operator=(const frame &r)=delete
void acquire()
Definition archive.h:116
frame_additional_data additional_data
Definition archive.h:72
rs_stream get_stream_type() const override
double get_frame_metadata(rs_frame_metadata frame_metadata) const override
double get_frame_timestamp() const
std::chrono::high_resolution_clock::time_point get_frame_callback_start_time_point() const
void update_owner(frame_archive *new_owner)
Definition archive.h:119
void set_timestamp_domain(rs_timestamp_domain timestamp_domain) override
Definition archive.h:103
unsigned long long get_frame_number() const override
std::vector< byte > data
Definition archive.h:71
int get_framerate() const
frame(const frame &r)=delete
void update_frame_callback_start_ts(std::chrono::high_resolution_clock::time_point ts)
rs_format get_format() const
frame(frame &&r)
Definition archive.h:76
frame & operator=(frame &&r)
Definition archive.h:84
~frame()
Definition archive.h:94
frame()
Definition archive.h:74
void disable_continuation()
Definition archive.h:121
void attach_continuation(frame_continuation &&continuation)
Definition archive.h:120
rs_timestamp_domain get_frame_timestamp_domain() const
bool supports_frame_metadata(rs_frame_metadata frame_metadata) const override
void set_timestamp(double new_ts) override
Definition archive.h:101
Definition timestamps.h:15
subdevice_mode mode
Definition types.h:295
native_pixel_format pf
Definition types.h:158
const uint8_t RS_STREAM_NATIVE_COUNT
Definition types.h:27