Intel® RealSense™ Cross Platform API
Intel Realsense Cross-platform API
rscore.hpp
Go to the documentation of this file.
1 // License: Apache 2.0. See LICENSE file in root directory.
2 // Copyright(c) 2015 Intel Corporation. All Rights Reserved.
3 
4 #ifndef LIBREALSENSE_RSCORE_HPP
5 #define LIBREALSENSE_RSCORE_HPP
6 
7 #include "rs.h"
8 #include <cstdint>
9 #include <cstddef>
10 #include <mutex>
11 
12 // this interface is an entry point for extending librealsense with custom devices while keeping librealsense public API
13 // the interfaces in this file are expected to be inherited from, never used directly, rs.hpp provides safer and simpler wrapper
14 // an example usage would be playback and record. this API allows to integrate custom playback&record implementation while keeping librealsense API
15 
17 {
18  virtual ~rs_stream_interface() {}
19 
20  virtual rs_extrinsics get_extrinsics_to(const rs_stream_interface & r) const = 0;
21  virtual float get_depth_scale() const = 0;
22 
23  virtual rs_intrinsics get_intrinsics() const = 0;
24  virtual rs_intrinsics get_rectified_intrinsics() const = 0;
25  virtual rs_format get_format() const = 0;
26  virtual int get_framerate() const = 0;
27 
28  virtual double get_frame_metadata(rs_frame_metadata frame_metadata) const = 0;
30  virtual int get_frame_stride() const = 0;
31  virtual int get_frame_bpp() const = 0;
32  virtual unsigned long long get_frame_number() const = 0;
33  virtual double get_frame_timestamp() const = 0;
34  virtual long long get_frame_system_time() const = 0;
35  virtual const uint8_t * get_frame_data() const = 0;
36 
37  virtual int get_mode_count() const = 0;
38  virtual void get_mode(int mode, int * w, int * h, rs_format * f, int * fps) const = 0;
39 
40  virtual bool is_enabled() const = 0;
41  virtual rs_stream get_stream_type() const = 0;
42 };
43 
45 {
46  virtual ~rs_frame_ref() {}
47  virtual const uint8_t* get_frame_data() const = 0;
48  virtual double get_frame_timestamp() const = 0;
50  virtual unsigned long long get_frame_number() const = 0;
51  virtual long long get_frame_system_time() const = 0;
52  virtual int get_frame_width() const = 0;
53  virtual int get_frame_height() const = 0;
54  virtual int get_frame_framerate() const = 0;
55  virtual int get_frame_stride() const = 0;
56  virtual int get_frame_bpp() const = 0;
57  virtual rs_format get_frame_format() const = 0;
58  virtual rs_stream get_stream_type() const = 0;
59  virtual double get_frame_metadata(rs_frame_metadata frame_metadata) const = 0;
61 };
62 
63 // realsense device public interface
64 struct rs_device
65 {
66  virtual ~rs_device() {}
67  virtual const rs_stream_interface & get_stream_interface(rs_stream stream) const = 0;
68 
69  virtual const char * get_name() const = 0;
70  virtual const char * get_serial() const = 0;
71  virtual const char * get_firmware_version() const = 0;
72  virtual const char * get_camera_info(rs_camera_info) const = 0;
73  virtual float get_depth_scale() const = 0;
74 
75  virtual void enable_stream(rs_stream stream, int width, int height, rs_format format, int fps, rs_output_buffer_format output) = 0;
77  virtual void disable_stream(rs_stream stream) = 0;
78 
79  virtual void enable_motion_tracking() = 0;
80  virtual void set_stream_callback(rs_stream stream, void(*on_frame)(rs_device * device, rs_frame_ref * frame, void * user), void * user) = 0;
81  virtual void set_stream_callback(rs_stream stream, rs_frame_callback * callback) = 0;
82  virtual void disable_motion_tracking() = 0;
83 
84  virtual rs_motion_intrinsics get_motion_intrinsics() const = 0;
85  virtual rs_extrinsics get_motion_extrinsics_from(rs_stream from) const = 0;
86  virtual void set_motion_callback(void(*on_event)(rs_device * device, rs_motion_data data, void * user), void * user) = 0;
87  virtual void set_motion_callback(rs_motion_callback * callback) = 0;
88  virtual void set_timestamp_callback(void(*on_event)(rs_device * device, rs_timestamp_data data, void * user), void * user) = 0;
89  virtual void set_timestamp_callback(rs_timestamp_callback * callback) = 0;
90 
91  virtual void start(rs_source source) = 0;
92  virtual void stop(rs_source source) = 0;
93 
94  virtual void start_fw_logger(char fw_log_op_code, int grab_rate_in_ms, std::timed_mutex& mutex) = 0;
95  virtual void stop_fw_logger() = 0;
96 
97  virtual bool is_capturing() const = 0;
98  virtual int is_motion_tracking_active() const = 0;
99 
100  virtual void wait_all_streams() = 0;
101  virtual bool poll_all_streams() = 0;
102 
103  virtual bool supports(rs_capabilities capability) const = 0;
104  virtual bool supports(rs_camera_info info_param) const = 0;
105 
106  virtual bool supports_option(rs_option option) const = 0;
107  virtual void get_option_range(rs_option option, double & min, double & max, double & step, double & def) = 0;
108  virtual void set_options(const rs_option options[], size_t count, const double values[]) = 0;
109  virtual void get_options(const rs_option options[], size_t count, double values[]) = 0;
110  virtual const char * get_option_description(rs_option option) const = 0;
111 
112  virtual void release_frame(rs_frame_ref * ref) = 0;
113  virtual rs_frame_ref * clone_frame(rs_frame_ref * frame) = 0;
114 
115  virtual const char * get_usb_port_id() const = 0;
116 };
117 
119 {
120  virtual size_t get_device_count() const = 0;
121  virtual rs_device * get_device(int index) const = 0;
122  virtual ~rs_context() {}
123 };
124 
126 {
127  virtual void on_event(rs_motion_data e) = 0;
128  virtual void release() = 0;
129  virtual ~rs_motion_callback() {}
130 };
131 
133 {
134  virtual void on_frame(rs_device * device, rs_frame_ref * f) = 0;
135  virtual void release() = 0;
136  virtual ~rs_frame_callback() {}
137 };
138 
140 {
141  virtual void on_event(rs_timestamp_data data) = 0;
142  virtual void release() = 0;
144 };
145 
147 {
148  virtual void on_event(rs_log_severity severity, const char * message) = 0;
149  virtual void release() = 0;
150  virtual ~rs_log_callback() {}
151 };
152 
153 #endif
rs_motion_callback::on_event
virtual void on_event(rs_motion_data e)=0
rs_context
Definition: rscore.hpp:118
rs_stream_interface::~rs_stream_interface
virtual ~rs_stream_interface()
Definition: rscore.hpp:18
rs_camera_info
rs_camera_info
Read-only strings that can be queried from the device.
Definition: rs.h:237
rs_stream
rs_stream
Streams are different types of data provided by RealSense devices.
Definition: rs.h:33
rs_frame_metadata
rs_frame_metadata
Types of value provided from the device with each frame.
Definition: rs.h:203
rs::stream
stream
Streams are different types of data provided by RealSense devices.
Definition: rs.hpp:24
rs::preset
preset
Presets: general preferences that are translated by librealsense into concrete resolution and FPS.
Definition: rs.hpp:68
rs_device::wait_all_streams
virtual void wait_all_streams()=0
rs_stream_interface::get_format
virtual rs_format get_format() const =0
rs_stream_interface::get_mode
virtual void get_mode(int mode, int *w, int *h, rs_format *f, int *fps) const =0
rs_stream_interface::get_frame_data
virtual const uint8_t * get_frame_data() const =0
rs_device::get_stream_interface
virtual const rs_stream_interface & get_stream_interface(rs_stream stream) const =0
rs_log_severity
rs_log_severity
Severity of the librealsense logger.
Definition: rs.h:265
rs_device::start_fw_logger
virtual void start_fw_logger(char fw_log_op_code, int grab_rate_in_ms, std::timed_mutex &mutex)=0
rs_device::is_capturing
virtual bool is_capturing() const =0
rs_device::disable_motion_tracking
virtual void disable_motion_tracking()=0
rs_frame_ref::get_frame_system_time
virtual long long get_frame_system_time() const =0
rs_frame_ref::get_frame_timestamp_domain
virtual rs_timestamp_domain get_frame_timestamp_domain() const =0
rs_device::start
virtual void start(rs_source source)=0
rs_stream_interface::get_rectified_intrinsics
virtual rs_intrinsics get_rectified_intrinsics() const =0
rs_device::supports
virtual bool supports(rs_capabilities capability) const =0
rs_device::get_motion_intrinsics
virtual rs_motion_intrinsics get_motion_intrinsics() const =0
rs_context::get_device
virtual rs_device * get_device(int index) const =0
rs_stream_interface::get_extrinsics_to
virtual rs_extrinsics get_extrinsics_to(const rs_stream_interface &r) const =0
rs_frame_ref::get_frame_width
virtual int get_frame_width() const =0
rs_timestamp_callback::on_event
virtual void on_event(rs_timestamp_data data)=0
rs_device::get_name
virtual const char * get_name() const =0
rs_device::release_frame
virtual void release_frame(rs_frame_ref *ref)=0
rs_stream_interface::get_mode_count
virtual int get_mode_count() const =0
rs_stream_interface::get_intrinsics
virtual rs_intrinsics get_intrinsics() const =0
rs_log_callback::release
virtual void release()=0
rs_log_callback::~rs_log_callback
virtual ~rs_log_callback()
Definition: rscore.hpp:150
rs_frame_ref::supports_frame_metadata
virtual bool supports_frame_metadata(rs_frame_metadata frame_metadata) const =0
rs_device::get_motion_extrinsics_from
virtual rs_extrinsics get_motion_extrinsics_from(rs_stream from) const =0
rs_device::get_firmware_version
virtual const char * get_firmware_version() const =0
rs_frame_ref::get_frame_number
virtual unsigned long long get_frame_number() const =0
rs_preset
rs_preset
Presets: general preferences that are translated by librealsense into concrete resolution and FPS.
Definition: rs.h:81
rs_device::enable_motion_tracking
virtual void enable_motion_tracking()=0
rs_motion_data
Motion data from gyroscope and accelerometer from the microcontroller.
Definition: rs.h:347
rs_stream_interface::get_frame_number
virtual unsigned long long get_frame_number() const =0
rs_motion_callback::~rs_motion_callback
virtual ~rs_motion_callback()
Definition: rscore.hpp:129
rs_device::disable_stream
virtual void disable_stream(rs_stream stream)=0
rs_motion_intrinsics
Motion module intrinsics: includes accelerometer and gyroscope intrinsics structs of type rs_motion_d...
Definition: rs.h:325
rs_frame_callback::release
virtual void release()=0
rs_device::get_serial
virtual const char * get_serial() const =0
rs_log_callback::on_event
virtual void on_event(rs_log_severity severity, const char *message)=0
rs_frame_ref::get_frame_metadata
virtual double get_frame_metadata(rs_frame_metadata frame_metadata) const =0
rs_device::get_option_range
virtual void get_option_range(rs_option option, double &min, double &max, double &step, double &def)=0
rs_device::set_options
virtual void set_options(const rs_option options[], size_t count, const double values[])=0
rs_stream_interface::get_frame_system_time
virtual long long get_frame_system_time() const =0
rs_stream_interface::get_frame_timestamp
virtual double get_frame_timestamp() const =0
rs_timestamp_domain
rs_timestamp_domain
Specifies the clock in relation to which the frame timestamp was measured.
Definition: rs.h:292
rs::source
source
Allows the user to choose between available hardware subdevices.
Definition: rs.hpp:219
rs_timestamp_callback::release
virtual void release()=0
rs_device::get_usb_port_id
virtual const char * get_usb_port_id() const =0
rs_frame_callback::on_frame
virtual void on_frame(rs_device *device, rs_frame_ref *f)=0
rs_device::poll_all_streams
virtual bool poll_all_streams()=0
rs_stream_interface::is_enabled
virtual bool is_enabled() const =0
rs_device::enable_stream_preset
virtual void enable_stream_preset(rs_stream stream, rs_preset preset)=0
rs_device::get_option_description
virtual const char * get_option_description(rs_option option) const =0
rs_device
Definition: rscore.hpp:64
rs_stream_interface::get_framerate
virtual int get_framerate() const =0
rs_device::supports_option
virtual bool supports_option(rs_option option) const =0
rs_device::stop_fw_logger
virtual void stop_fw_logger()=0
rs_extrinsics
Cross-stream extrinsics: encode the topology describing how the different devices are connected.
Definition: rs.h:332
rs_format
rs_format
Formats: defines how each stream can be encoded.
Definition: rs.h:53
rs_frame_ref::get_frame_data
virtual const uint8_t * get_frame_data() const =0
rs_frame_callback::~rs_frame_callback
virtual ~rs_frame_callback()
Definition: rscore.hpp:136
rs_device::enable_stream
virtual void enable_stream(rs_stream stream, int width, int height, rs_format format, int fps, rs_output_buffer_format output)=0
rs_frame_ref::~rs_frame_ref
virtual ~rs_frame_ref()
Definition: rscore.hpp:46
rs_device::get_camera_info
virtual const char * get_camera_info(rs_camera_info) const =0
rs::format
format
Formats: defines how each stream can be encoded. rs_format specifies how a frame is represented in me...
Definition: rs.hpp:42
rs_source
rs_source
Source: allows you to choose between available hardware subdevices.
Definition: rs.h:90
rs::frame_metadata
frame_metadata
Types of value provided from the device with each frame.
Definition: rs.hpp:160
rs_stream_interface::get_stream_type
virtual rs_stream get_stream_type() const =0
rs::option
option
Defines general configuration controls.
Definition: rs.hpp:87
rs_capabilities
rs_capabilities
Specifies various capabilities of a RealSense device.
Definition: rs.h:213
rs_intrinsics
Video stream intrinsics.
Definition: rs.h:300
rs_device::clone_frame
virtual rs_frame_ref * clone_frame(rs_frame_ref *frame)=0
rs_option
rs_option
Defines general configuration controls.
Definition: rs.h:128
rs_motion_callback::release
virtual void release()=0
rs_device::is_motion_tracking_active
virtual int is_motion_tracking_active() const =0
rs_timestamp_callback
Definition: rscore.hpp:139
rs_stream_interface::get_depth_scale
virtual float get_depth_scale() const =0
rs_frame_ref::get_frame_format
virtual rs_format get_frame_format() const =0
rs_timestamp_data
Timestamp data from the motion microcontroller.
Definition: rs.h:339
rs_device::set_timestamp_callback
virtual void set_timestamp_callback(void(*on_event)(rs_device *device, rs_timestamp_data data, void *user), void *user)=0
rs.h
Exposes librealsense functionality for C compilers.
rs_device::set_motion_callback
virtual void set_motion_callback(void(*on_event)(rs_device *device, rs_motion_data data, void *user), void *user)=0
rs_frame_ref::get_frame_height
virtual int get_frame_height() const =0
rs_device::set_stream_callback
virtual void set_stream_callback(rs_stream stream, void(*on_frame)(rs_device *device, rs_frame_ref *frame, void *user), void *user)=0
rs_frame_ref::get_stream_type
virtual rs_stream get_stream_type() const =0
rs_motion_callback
Definition: rscore.hpp:125
rs_device::get_depth_scale
virtual float get_depth_scale() const =0
rs_frame_ref::get_frame_timestamp
virtual double get_frame_timestamp() const =0
rs_frame_ref::get_frame_bpp
virtual int get_frame_bpp() const =0
rs_context::get_device_count
virtual size_t get_device_count() const =0
rs_frame_ref::get_frame_framerate
virtual int get_frame_framerate() const =0
rs_stream_interface::get_frame_bpp
virtual int get_frame_bpp() const =0
rs_frame_ref
Definition: rscore.hpp:44
rs_frame_callback
Definition: rscore.hpp:132
rs_stream_interface::supports_frame_metadata
virtual bool supports_frame_metadata(rs_frame_metadata frame_metadata) const =0
rs_device::get_options
virtual void get_options(const rs_option options[], size_t count, double values[])=0
rs_device::~rs_device
virtual ~rs_device()
Definition: rscore.hpp:66
rs_log_callback
Definition: rscore.hpp:146
rs_stream_interface::get_frame_metadata
virtual double get_frame_metadata(rs_frame_metadata frame_metadata) const =0
rs_stream_interface
Definition: rscore.hpp:16
rs_frame_ref::get_frame_stride
virtual int get_frame_stride() const =0
rs_device::stop
virtual void stop(rs_source source)=0
rs_stream_interface::get_frame_stride
virtual int get_frame_stride() const =0
rs_context::~rs_context
virtual ~rs_context()
Definition: rscore.hpp:122
rs_output_buffer_format
rs_output_buffer_format
Output buffer format: sets how librealsense works with frame memory.
Definition: rs.h:73
rs_timestamp_callback::~rs_timestamp_callback
virtual ~rs_timestamp_callback()
Definition: rscore.hpp:143